【AutoCAD LISP】画層を追加したり変更する方法

2022年1月29日

ミルクレープ

LISP で画層ってどうやって作るの?

あと、画層のプロパティを変更したいときは、どうすればいいの?

こんにちは、メモだよ!!管理人です。

今回は、そんなあなたに、AutoCAD で LISP を使用して画層を追加する方法を紹介します。

また、画層のプロパティを変更する方法も紹介します。

 

vla-Add 関数で画層を追加

vla-Add 関数を使用して、画層を追加することができます。

手順としては、以下になります。

  1. アクティブなドキュメント(図面)を取得します。
  2. 画層テーブルを取得します。
  3. 画層を追加します。

コードでは、以下になります。

; アクティブ ドキュメントを取得
(setq activeDocument (vla-get-activedocument (vlax-get-acad-object)))

; 画層テーブルを取得
(setq layerTable (vla-get-Layers activeDocument))
; 画層を追加
(setq layer (vla-Add layerTable "テスト01"))

やったー、画層を追加できた!!

画層を追加できた

 

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 関数を使いました。

うん、これで画層のプロパティも変更できた!!

プロパティを変更できた

 

画層を現在層に設定する方法

現在の画層に設定するには、vla-put-activelayer 関数を使用します。

ただし、フリーズの画層は現在の画層にできないので、事前にフリーズ解除しておきます。

※ 変数 activeDocument は、最初のコードの (setq activeDocument (vla-get-activedocument (vlax-get-acad-object))) の部分で設定したものです。

(vla-put-freeze layer 0)
(vla-put-activelayer activeDocument layer)

現在の画層に設定できた!!

現在の画層に設定できた

-API
-