我想旋转一个ACAD (AutoCAD 2008)元素围绕Z轴.我已经有了以下代码片段:
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-Axis:
Dim doc As Document = Application.DocumentManager.MdiActiveDocument
Dim ucs As Matrix3d = doc.Editor.CurrentUserCoordinateSystem
Dim cs As CoordinateSystem3d = ucs.CoordinateSystem3d但我不是在处理活动文档和当前数据库!我有一个来自任意数据库的ObjectID,它不一定是当前的数据库。我希望在不使用Editor对象的情况下从这个数据库中获取Z-Axis。
这个是可能的吗?
发布于 2011-05-11 07:30:47
您可以使用两个属性Database.Ucsxdir和Database.Ucsydir:
Dim zAxis As Vector3d = db.Ucsxdir.CrossProduct(db.Ucsydir)发布于 2011-05-10 21:19:20
它应该是相对于当前空间的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)https://stackoverflow.com/questions/5952396
复制相似问题