前回、画層を追加できたので、

今回は、オブジェクトが属する画層を

追加した画層に変更してみました。

それから、追加した画層以外を削除してみました。



が、まだ、完全に実行できていません。

なので、試行錯誤となってます。


↓今回、テストに使ったExcel VBAマクロソース

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

・「AcadDocument」を、グローバル変数としました。


・「Call 画層変更」 で、画層変更を処理を呼び出します。
CAD・CAD・Autocad-画層変更ソース

↓画層変更プロシージャ
CAD・CAD・Autocad-画層変更プロシージャ
━─━─━─━─━─━─━─━─━─━─



画層変更プロシージャですが、

まず、画層のロックを解除します。

━─━─━─━─━─━─━─━─━─━─
For Each templayer In gAcadDocs.Layers
 templayer.Lock = False
Next

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

解除せず画層を変更しようとするとエラーが発生します。



画層ロック解除後、図形の画層を、"TEST-A"に変更します。

━─━─━─━─━─━─━─━─━─━─
For Each acObj In gAcadDocs.ModelSpace
acObj.Layer = "TEST-A"
Next

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


画層"TEST-A"を現在の画層にします。

━─━─━─━─━─━─━─━─━─━─
gAcadDocs.ActiveLayer = gAcadDocs.Layers.Item("TEST-A")

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


最後に、画層”TEST-A"と、"0"を残して他の画層は削除。

(”0”は、必ず必要のもよう。)

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

For Each templayer In gAcadDocs.Layers
If templayer.Name <> "TEST-A" And templayer.Name <> "0" Then
templayer.Delete
End If
Next

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

しかし、「templayer.Detele」でエラー発生。


↓このようなエラーが発生します。
CAD・CAD・Autocad-実行時エラー(layer.delete)


AutoCAD上で、画層削除を削除しようとすると、

下記のように表示されます。
CAD・CAD・Autocad-画層-削除できません。

画面上に表示されているオブジェクト全て削除してから

該当の画層を削除しても、「削除できません」と

表示されてしまいます。



どうも、ブロック定義が残ってるようなのですが、

いまいちはっきりせず・・・。



AutoCAD上で操作して

この辺りをはっきりさせたいと思います。


はっきりすればいいけど・・・。汗


押さなくてもいいけど・・・

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

←←MicroAdマイクロアドMicroAd←←