パソコン前で疑問に思うエプロン女性_01.png)
LISP で画層ってどうやって作るの?
あと、画層のプロパティを変更したいときは、どうすればいいの?
こんにちは、メモだよ!!管理人です。
今回は、そんなあなたに、AutoCAD で LISP を使用して画層を追加する方法を紹介します。
また、画層のプロパティを変更する方法も紹介します。
vla-Add 関数で画層を追加
vla-Add 関数を使用して、画層を追加することができます。
手順としては、以下になります。
- アクティブなドキュメント(図面)を取得します。
- 画層テーブルを取得します。
- 画層を追加します。
コードでは、以下になります。
; アクティブ ドキュメントを取得
(setq activeDocument (vla-get-activedocument (vlax-get-acad-object)))
; 画層テーブルを取得
(setq layerTable (vla-get-Layers activeDocument))
; 画層を追加
(setq layer (vla-Add layerTable "テスト01"))
パソコン前で両手を広げて喜ぶエプロン女性_02.png)
やったー、画層を追加できた!!

vla-put-** 関数で、画層のプロパティを変更
画層のプロパティを変更するには、vla-put で始まる関数を使用します。
※ 変数 layer は、さっきのコードの (setq layer (vla-Add layerTable "テスト01")) の部分で設定したものです。
; 画層を非表示に設定
(vla-put-layeron layer 0)
; 画層をフリーズに設定
(vla-put-freeze layer 1)
; 画層をロック
(vla-put-lock layer 1)
; 画層を印刷不可に設定
(vla-put-plottable layer 0)
; 画層の色を赤色に設定
(vla-put-color layer 1)
; 線種を HIDDEN に設定(図面に HIDDEN という線種が存在している必要があります。)
(vla-put-linetype layer "HIDDEN")
; 線の太さを 0.05 に設定
(vla-put-lineweight layer 5)
; 透過性を 90 に設定
(command "_layer" "_tr" 90 (vla-get-name layer))
透過性だけは vla-put-** ではできないようです。
(参考:Get and set layer and entity transparency using LISP)
なので、command 関数を使いました。
パソコン前でガッツポーズ-エプロン女性_01.png)
うん、これで画層のプロパティも変更できた!!

画層を現在層に設定する方法
現在の画層に設定するには、vla-put-activelayer 関数を使用します。
ただし、フリーズの画層は現在の画層にできないので、事前にフリーズ解除しておきます。
※ 変数 activeDocument は、最初のコードの (setq activeDocument (vla-get-activedocument (vlax-get-acad-object))) の部分で設定したものです。
(vla-put-freeze layer 0)
(vla-put-activelayer activeDocument layer)
パソコン前でガッツポーズ-エプロン女性_01.png)
現在の画層に設定できた!!
