グループコマンドのLISP化

  • URLをコピーしました!

AutoCADの通常のグループコマンドは、特に名前を指定しなくてもオブジェクトをグループ化することができます。しかし、LISPでグループを作成する場合はこの方法が使えず、**グループ名を指定するコマンド(-GROUP)**を使う必要があります。

ただし、実際の作業ではグループ名を活用することはあまりなく、単純にオブジェクトをまとめたいだけという場面がほとんどです。そのため私は、通常のグループコマンドと同じように使えるLISPを作成しています。

このLISPでは、AutoCADのシステム変数CDATEを使って現在の時刻からグループ名を自動生成します。

例えば G20260208172233 のような名前が自動で作られます。

これにより、実際にはグループ名を指定していますが、ユーザー側は名前を入力する必要がなく、通常のグループコマンドのように使うことができます。

また、このコマンドは

・事前にオブジェクトを選択している場合はそのままグループ化

・選択していない場合はコマンド実行後に選択

という動作になっており、作図の流れを止めずにグループを作成できます。

以下が使用しているLISPコードです。

;; グループ化

;|時刻グループ作成(対話選択)|;

(defun _NowGroupName ( / s)

;; CDATE → 20260208.172233

(setq s (rtos (getvar “CDATE”) 2 6))

;; 小数点削除 → 20260208172233

(setq s (vl-string-subst “” “.” s))

(strcat “G” s)

)

(defun c:TGRP ( / gname desc iss )

(vl-load-com)

(setq gname (_NowGroupName))

(setq desc “グループの説明”)

(prompt (strcat “\nグループ名: ” gname))

;; 事前選択があるかチェック

(setq iss (ssget “_I”))

(if iss

;; 事前選択あり

(command-s “._-GROUP” “_C” gname desc iss “”)

;; 事前選択なし

(command “._-GROUP” “_C” gname desc pause)

)

;; 選択解除

(sssetfirst nil nil)

(princ)

)

このように、通常の操作で使いづらい部分をLISPで補うことで、AutoCADをより効率的に使うことができます。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

Contents