画層の追加、削除ができるようになったので、

改めて、画層の追加、削除をやってみます。


前回、

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

━─━─━─━─━─━─━─━─━─━─
CAD・CAD・Autocad-ブロック郡の中身
あー、なるほど、なるほど。ひらめき電球


単独の図形は、

「*Model_Space」ってブロック定義?に

属しているんだな。

だから、全て「ブロック層」になってしまったのか。


って、ことは、全図形にアクセスするには、

━─━─━─━─━─━─━─━─━─━─

For Each blockObj In gAcadDocs.Blocks
  For Each acObj In blockObj
    ’いろんな処理
  Next
Next

━─━─━─━─━─━─━─━─━─━─

でも、いいのかな。


ホントにいいのか?

「*Paper_Space」がなぞだぞ。


それにしても、VBAは簡単で便利音譜

AutoCADの内部構造がだんだん理解できます。

(って、ホントか!?(^_^;))


押さなくてもいいよ。おすなら・・・M 

にほんブログ村 科学ブログ 技術・工学へ