首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绕Z轴旋转ACAD元件

绕Z轴旋转ACAD元件
EN

Stack Overflow用户
提问于 2011-05-10 15:19:09
回答 2查看 1.4K关注 0票数 0

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

代码语言:javascript
复制
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:

代码语言:javascript
复制
Dim doc As Document = Application.DocumentManager.MdiActiveDocument
Dim ucs As Matrix3d = doc.Editor.CurrentUserCoordinateSystem
Dim cs As CoordinateSystem3d = ucs.CoordinateSystem3d

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

这个是可能的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-11 07:30:47

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

代码语言:javascript
复制
Dim zAxis As Vector3d = db.Ucsxdir.CrossProduct(db.Ucsydir)
票数 1
EN

Stack Overflow用户

发布于 2011-05-10 21:19:20

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

代码语言:javascript
复制
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)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5952396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档