Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 绕Z轴旋转ACAD图元_Vb.net_Geometry_Autocad - Fatal编程技术网

Vb.net 绕Z轴旋转ACAD图元

Vb.net 绕Z轴旋转ACAD图元,vb.net,geometry,autocad,Vb.net,Geometry,Autocad,我要绕Z轴旋转ACAD(AutoCAD 2008)图元。我已经有了以下代码段: 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.Transfor

我要绕Z轴旋转ACAD(AutoCAD 2008)图元。我已经有了以下代码段:

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,它不必是当前数据库。 我想在不使用编辑器对象的情况下从这个数据库中获取Z轴


这可能吗?

它应该是相对于当前空间的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)

它应该是相对于当前空间的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)

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

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

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

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

谢谢,但这不是我想要的。我试图澄清我上面的问题。谢谢,但这不是我想要的。我试图澄清我上面的问题。谢谢!这正是我要找的。谢谢!这正是我要找的。