From 938edc02040d5375b74565ddd51322a5445d166d Mon Sep 17 00:00:00 2001 From: LittleGuo Date: Sun, 25 Oct 2026 18:35:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20RotateAndMove=20=E5=B9=B3?= =?UTF-8?q?=E7=A7=BB=E9=A1=B9=E7=BC=BA=E5=A4=B1=E6=97=8B=E8=BD=AC=E5=88=86?= =?UTF-8?q?=E9=87=8F=E5=AF=BC=E8=87=B4=E8=90=BD=E7=82=B9=E9=94=99=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 平移量应为 ptDist - R*ptOrig,原实现写成 ptDist - ptOrig, 仅在 ptOrig 位于旋转轴上(含原点)时才成立。 DrawTydf 台体分支传入的 ptBottom 非原点,vtMove 倾斜时 实体整体偏移 |R*ptOrig - ptOrig|,本次一并修正。 --- SourceCode/Code2026/AecRxBase/GiDrawUtility.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/SourceCode/Code2026/AecRxBase/GiDrawUtility.cpp b/SourceCode/Code2026/AecRxBase/GiDrawUtility.cpp index 094b72c..dc97d48 100644 --- a/SourceCode/Code2026/AecRxBase/GiDrawUtility.cpp +++ b/SourceCode/Code2026/AecRxBase/GiDrawUtility.cpp @@ -183,7 +183,11 @@ AECDLLIMPEXP AcGeMatrix3d GiDrawUtility::RotateAndMove(const AcGeVector3d &vtOri AcGeMatrix3d mat(AcGeMatrix3d::kIdentity); //mat = _vtDist.rotateTo(_vtOrig); mat = _vtOrig.rotateTo(_vtDist); - mat.setTranslation(ptDist - ptOrig); + // 平移量须为 ptDist - R*ptOrig:先求旋转后的 ptOrig 落点,再算差值。 + // 原来写成 ptDist - ptOrig,仅在 ptOrig 位于旋转轴上(含原点)时才正确。 + AcGePoint3d ptTmp(ptOrig); + ptTmp.transformBy(mat); + mat.setTranslation(ptDist - ptTmp); return mat; }