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をより効率的に使うことができます。

コメント