From 8db0925c4adf631d3895b55716e521b16f5680ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=92=AC=E8=BD=AE=E7=8C=AB?= <10928033@qq.com> Date: Fri, 13 Jan 2023 20:25:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=97=8B=E8=BD=AC=E7=BC=A9=E6=94=BE?= =?UTF-8?q?=E5=90=8E=E8=BF=9E=E7=BA=BF=E7=AB=AF=E7=82=B9=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/center-panel/index.vue | 6 ++ .../webtopo-svgedit/composables/index.ts | 16 ---- src/utils/index.ts | 87 +++++++++++++++---- 3 files changed, 75 insertions(+), 34 deletions(-) delete mode 100644 src/components/webtopo-svgedit/composables/index.ts diff --git a/src/components/webtopo-svgedit/components/center-panel/index.vue b/src/components/webtopo-svgedit/components/center-panel/index.vue index 353b372..3337da2 100644 --- a/src/components/webtopo-svgedit/components/center-panel/index.vue +++ b/src/components/webtopo-svgedit/components/center-panel/index.vue @@ -500,6 +500,12 @@ console.log(newCenterPoint); globalStore.handle_svg_info.info.client = newCenterPoint; globalStore.intention = EGlobalStoreIntention.None; + setSvgActualInfo(globalStore.done_json[globalStore.handle_svg_info.index]); + } else if ( + globalStore.intention === EGlobalStoreIntention.Rotate && + globalStore.handle_svg_info?.info + ) { + setSvgActualInfo(globalStore.done_json[globalStore.handle_svg_info.index]); } else if (globalStore.intention === EGlobalStoreIntention.Connection) { return; } else if (globalStore.intention != EGlobalStoreIntention.Select) { diff --git a/src/components/webtopo-svgedit/composables/index.ts b/src/components/webtopo-svgedit/composables/index.ts deleted file mode 100644 index e1989d8..0000000 --- a/src/components/webtopo-svgedit/composables/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { IDoneJson } from '@/store/global/types'; -import { calculateRotatedPointCoordinate } from '@/utils'; - -export const useSetPointCoordinate = (item: IDoneJson) => { - item.point_coordinate = { - tl: calculateRotatedPointCoordinate(item.point_coordinate.tl, item.client, -item.rotate), - tc: calculateRotatedPointCoordinate(item.point_coordinate.tc, item.client, -item.rotate), - tr: calculateRotatedPointCoordinate(item.point_coordinate.tr, item.client, -item.rotate), - l: calculateRotatedPointCoordinate(item.point_coordinate.l, item.client, -item.rotate), - r: calculateRotatedPointCoordinate(item.point_coordinate.r, item.client, -item.rotate), - bl: calculateRotatedPointCoordinate(item.point_coordinate.bl, item.client, -item.rotate), - bc: calculateRotatedPointCoordinate(item.point_coordinate.bc, item.client, -item.rotate), - br: calculateRotatedPointCoordinate(item.point_coordinate.br, item.client, -item.rotate) - }; - console.log(item, 1515); -}; diff --git a/src/utils/index.ts b/src/utils/index.ts index 9c05358..5a8f7f1 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -119,47 +119,50 @@ export const objectDeepClone = (object: object, default_val: any = {}) => { */ export const setSvgActualInfo = (done_json: IDoneJson) => { const queryBbox = document.querySelector(`#${done_json.id}`); - const rectBBox = document.querySelector(`#rect${done_json.id}`); - if (queryBbox && rectBBox) { + // const rectBBox = document.querySelector(`#rect${done_json.id}`); + if (queryBbox) { const BBox = (queryBbox as SVGGraphicsElement).getBBox(); const { x, y, width, height } = BBox; - rectBBox.setAttribute('x', x.toString()); - rectBBox.setAttribute('y', y.toString()); - rectBBox.setAttribute('width', width.toString()); - rectBBox.setAttribute('height', height.toString()); + // rectBBox.setAttribute('x', x.toString()); + // rectBBox.setAttribute('y', y.toString()); + // rectBBox.setAttribute('width', width.toString()); + // rectBBox.setAttribute('height', height.toString()); done_json.actual_bound = { x, y, width, height }; done_json.point_coordinate.tl = { - x: done_json.x - width / 2, - y: done_json.y - height / 2 + x: done_json.x - (width * done_json.scale_x) / 2, + y: done_json.y - (height * done_json.scale_y) / 2 }; done_json.point_coordinate.tc = { x: done_json.x, - y: done_json.y - height / 2 + y: done_json.y - (height * done_json.scale_y) / 2 }; done_json.point_coordinate.tr = { - x: done_json.x + width / 2, - y: done_json.y - height / 2 + x: done_json.x + (width * done_json.scale_x) / 2, + y: done_json.y - (height * done_json.scale_y) / 2 }; done_json.point_coordinate.l = { - x: done_json.x - width / 2, + x: done_json.x - (width * done_json.scale_x) / 2, y: done_json.y }; done_json.point_coordinate.r = { - x: done_json.x + width / 2, + x: done_json.x + (width * done_json.scale_x) / 2, y: done_json.y }; done_json.point_coordinate.bl = { - x: done_json.x - width / 2, - y: done_json.y + height / 2 + x: done_json.x - (width * done_json.scale_x) / 2, + y: done_json.y + (height * done_json.scale_y) / 2 }; done_json.point_coordinate.bc = { x: done_json.x, - y: done_json.y + height / 2 + y: done_json.y + (height * done_json.scale_y) / 2 }; done_json.point_coordinate.br = { - x: done_json.x + width / 2, - y: done_json.y + height / 2 + x: done_json.x + (width * done_json.scale_x) / 2, + y: done_json.y + (height * done_json.scale_y) / 2 }; + if (done_json.rotate !== 0) { + setAfterRotationPointCoordinate(done_json); + } } }; /** @@ -179,3 +182,51 @@ export const getAnchorPosByAnchorType = (anchor_type: ELineBindAnchors, done_jso return done_json.point_coordinate.tc; } }; +/** + * 旋转之后重新设置组件八点坐标 + * @param item + */ +export const setAfterRotationPointCoordinate = (item: IDoneJson) => { + item.point_coordinate = { + tl: calculateRotatedPointCoordinate( + item.point_coordinate.tl, + { x: item.x, y: item.y }, + item.rotate + ), + tc: calculateRotatedPointCoordinate( + item.point_coordinate.tc, + { x: item.x, y: item.y }, + item.rotate + ), + tr: calculateRotatedPointCoordinate( + item.point_coordinate.tr, + { x: item.x, y: item.y }, + item.rotate + ), + l: calculateRotatedPointCoordinate( + item.point_coordinate.l, + { x: item.x, y: item.y }, + item.rotate + ), + r: calculateRotatedPointCoordinate( + item.point_coordinate.r, + { x: item.x, y: item.y }, + item.rotate + ), + bl: calculateRotatedPointCoordinate( + item.point_coordinate.bl, + { x: item.x, y: item.y }, + item.rotate + ), + bc: calculateRotatedPointCoordinate( + item.point_coordinate.bc, + { x: item.x, y: item.y }, + item.rotate + ), + br: calculateRotatedPointCoordinate( + item.point_coordinate.br, + { x: item.x, y: item.y }, + item.rotate + ) + }; +};