2011-05-10 130 views
0

我想围绕Z轴旋转ACAD(AutoCAD 2008)元素。我已经有以下代码片段:围绕Z轴旋转ACAD元素

Dim mm As Matrix3d = Matrix3d.Rotation(rotateDEG, HOW TO GET THE Z-AXIS HERE?, center) 
For Each id As ObjectId In elements 
    Dim ent As Entity = CType(tr.GetObject(id, OpenMode.ForWrite), Entity) 
    ent.TransformBy(mm) 
Next 

我使用转换矩阵旋转元素,但矩阵只能用旋转轴构建。 我知道我可以从当前文档的编辑器中获取它。但我需要从一个任意数据库中的元素,它并不总是活跃的!

问题:如何获得上述旋转的Z轴?

编辑:

如下文所述,我可以从当前编辑器获得Z轴:

Dim doc As Document = Application.DocumentManager.MdiActiveDocument 
Dim ucs As Matrix3d = doc.Editor.CurrentUserCoordinateSystem 
Dim cs As CoordinateSystem3d = ucs.CoordinateSystem3d 

但我不工作的活动文档和当前的数据库!我有一个来自任意数据库的ObjectID,它不一定是当前数据库。 我想在不使用Editor对象的情况下从这个数据库中获取Z轴。

这可能吗?

回答

1

可以使用两个属性Database.Ucsxdir和Database.Ucsydir:

Dim zAxis As Vector3d = db.Ucsxdir.CrossProduct(db.Ucsydir) 
+0

谢谢!这正是我一直在寻找的。 – WizzardsApprentice 2011-05-11 13:34:33

2

它应该是Z轴相对于当前空间:

Dim doc As Document = Application.DocumentManager.MdiActiveDocument 
Dim ucs As Matrix3d = doc.Editor.CurrentUserCoordinateSystem 
Dim cs As CoordinateSystem3d = ucs.CoordinateSystem3d 
Dim mm As Matrix3d = Matrix3d.Rotation(rotateDEG, cs.Zaxis, center) 
+0

谢了你,但这是不完全是我想要的。我试图澄清我的问题。 – WizzardsApprentice 2011-05-11 06:43:15