2011-05-10 127 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