画層の追加、削除ができるようになったので、
改めて、画層の追加、削除をやってみます。
前回、
DXF→DWG自動化計画(その9:画層変更と削除[完])
なんて、タイトル付けてしまったので、
今回からは、
DXF→DWG自動化計画(その10:画層編集1)
で、進めていくつもりです。
━─━─━─━─━─━─━─━─━─━─
画層操作に慣れるために、
図形の種類ごとに画層を変更してみます。
例えば、
線は、「線層」
円は、「円層」
文字は、「文字層」
寸法は、「寸法層」
ブロック定義は、「ブロック層」
のように画層を変更します。
で、やってみました。
とりあえず「ブロック定義」と「他の図形」に分けるため
ブロック定義に含まれる図形を全てブロック層に変更。
↓こんな具合に。
━─━─━─━─━─━─━─━─━─━─
For Each blockObj In gAcadDocs.Blocks
For Each acObj In blockObj
acObj.Layer = "ブロック層"
Next
Next
━─━─━─━─━─━─━─━─━─━─
の、つもりでしたが、
全ての図形がブロック層になってしまいました。
う~ん
どうも gAcadDocs.Blocks = AcadBlockは
ブロック定義だけを返してくるわけではないようです。
なので、下記のようにしてログを取ってみると
━─━─━─━─━─━─━─━─━─━─
For Each blockObj In gAcadDocs.Blocks
'ブロック名を記録する
ThisWorkbook.Worksheets(1).Cells(y, 1).Value = blockObj.Name
y = y + 1
For Each acObj In blockObj
acObj.Layer = "ブロック層"
Next
Next
━─━─━─━─━─━─━─━─━─━─
あー、なるほど、なるほど。
単独の図形は、
「*Model_Space」ってブロック定義?に
属しているんだな。
だから、全て「ブロック層」になってしまったのか。
って、ことは、全図形にアクセスするには、
━─━─━─━─━─━─━─━─━─━─
For Each blockObj In gAcadDocs.Blocks
For Each acObj In blockObj
’いろんな処理
Next
Next
━─━─━─━─━─━─━─━─━─━─
でも、いいのかな。
ホントにいいのか?
「*Paper_Space」がなぞだぞ。
それにしても、VBAは簡単で便利
AutoCADの内部構造がだんだん理解できます。
(って、ホントか!?(^_^;))
押さなくてもいいよ。おすなら・・・M ・