我正在尝试以编程方式将此处显示的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;
}
}
我得到了这个结果
并且不知道为什么......
答案 0 :(得分:1)
我认为您应该更改 BlockReference.Rotation 属性。
从帮助文件中:
访问块引用的旋转值(以弧度表示)。该 旋转值是相对于坐标系的X轴 与块参考的OCS平行,但其起源于 块引用的位置点。旋转轴是Z. 该坐标系的轴具有正向旋转 向下看Z轴朝向原点时逆时针方向。