Contents
オブジェクトの基本操作
1. オブジェクトの特定
2. オブジェクトのオープン
3. オブジェクトへのアクション(編集/操作)
4. オブジェクトのクローズ(トランザクションで確定=安定を求めるので特に求めない)
オブジェクトの特定はオブジェクトIDという識別子を使用します。
オブジェクトのオープンはオブジェクトの状態を変更する場合は「書き込みモード」でオープンする。プロパティ値の取得のみだけの場合は「読み込みモード」でオープンします。
オープンされているオブジェクトに対して、操作やプロパティの設定、取得を行います。
ブロックテーブルとブロックテーブルレコード
dwg図面ファイルにはデータベースが存在し、いくつかのテーブルで構成されています。その内の一つがBlockTableで、BlockTable配下にはいくつかのBlockTableRecが存在します。BlockTableRecの一つがモデル空間です。
AutoCADで図形を作成する場合はモデル空間のBlockTableRecにデータを追加します。
具体的な流れとしては現在のデータベースを取得して、トランザクションを開始します。
BlockTableを取得して、モデルのBlockTableRecを取得します。
BlockTableRecに図を保存したりするので、WriteモードでOpenしなければなりません。BlockTableの取得は書き込む事が無いのでReadモードでOpenします。
サンプルProg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
Dim oDb As Database = HostApplicationServices.WorkingDatabase Using trans As Transaction = oDb.TransactionManager.StartTransaction Try Dim ptStart As Point3d = New Point3d(0.0, 0.0, 0.0) Dim ptEnd As Point3d = New Point3d(100.0, 100.0, 0.0) Dim oLine As Line = New Line(ptStart, ptEnd) Dim oBt As BlockTable = trans.GetObject(oDb.BlockTableId, OpenMode.ForRead) Dim oBtr As BlockTableRecord = trans.GetObject(oBt.Item("*MODEL_SPACE"), OpenMode.ForWrite) oBtr.AppendEntity(oLine) trans.AddNewlyCreatedDBObject(oLine, True) trans.Commit() Catch oEx As Exception MsgBox(oEx.ToString()) Finally trans.Dispose() End Try End Using |