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; }