C#旋转函数的奇性

C#旋转函数的奇性,c#,rotation,autocad,autocad-plugin,C#,Rotation,Autocad,Autocad Plugin,我试图以编程方式将此处显示的AutoCAD中的紫色块旋转90度,使其与橙色块对齐 紫色块的基点是左下角。使用AutoCAD的内置旋转功能,可以得到我想要的结果,如下所示: 但是当我尝试用这个函数以编程方式旋转它时 public static BlockReference RotateBlockWithAttributes(ObjectId passedIdOfBlockToRotate) { Transaction tr = _database.TransactionManager.

我试图以编程方式将此处显示的AutoCAD中的紫色块旋转90度,使其与橙色块对齐


紫色块的基点是左下角。使用AutoCAD的内置旋转功能,可以得到我想要的结果,如下所示:

但是当我尝试用这个函数以编程方式旋转它时

public static BlockReference RotateBlockWithAttributes(ObjectId passedIdOfBlockToRotate)
{
    Transaction tr = _database.TransactionManager.StartTransaction();
    DocumentLock docLock = _activeDocument.LockDocument();

    using (tr)
    using (docLock)
    {
        BlockReference blockToRotate = tr.GetObject(passedIdOfBlockToRotate, OpenMode.ForWrite) as BlockReference;
        blockToRotate.TransformBy(Matrix3d.Rotation(Math.PI / 2, blockToRotate.Normal, blockToRotate.Position));
        tr.Commit();
        return blockToRotate;
    }
}
我得到这个结果


我不知道为什么…

我认为应该改为更改BlockReference.Rotation属性

从帮助文件:

访问块参照的旋转值(以弧度为单位)。这个 旋转值相对于坐标系的X轴,该坐标系 平行于块参照的OCS,但其原点位于 块参照的位置点。旋转轴是Z轴 正旋转的坐标系的轴 朝原点向下看Z轴时为逆时针方向


问题是:矩形应该围绕什么旋转?围绕它的一个角,围绕它的中心,坐标原点,还有其他的东西?紫色块的基点是左下角。这是它应该围绕矩形旋转的点。矩形的高度和宽度不相等。因此,您必须将对象移动到矩形高度和宽度差的一半距离。您正在围绕矩形的中心旋转。改变拐角处的旋转并不能解决问题,它会使物体上下移动,这不是你想要的。对我来说很有效。你确定法线是0,0,1(Z轴)?切换到这个位置,对我的问题中没有的代码做一些其他的更改,修复了我的问题。谢谢