0

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軸を取得できます。

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

しかし、私はアクティブなドキュメントと現在のデータベースに取り組んでいません!現在のデータベースである必要はない任意のデータベースからのObjectIDがあります。そして、Editorオブジェクトを使用せずにこのデータベースからZ軸を取得したいと思います。

これは可能ですか?

4

2 に答える 2

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)
于 2011-05-10T21:19:20.190 に答える
1

Database.UcsxdirとDatabase.Ucsydirの2つのプロパティを使用できます。

Dim zAxis As Vector3d = db.Ucsxdir.CrossProduct(db.Ucsydir)
于 2011-05-11T07:30:47.583 に答える