・ グループ名の有無
グループに属する図形名の取得
・ オブジェクトを選択してグループ名を取得
・ 選択セットをグループ化
グループ名の一覧を取得するには
(setq lst_groupe (dictsearch (namedobjdict) "ACAD_GROUP"))
グループ名 gn が存在するかどうかは
(member (cons 3 gn) lst_groupe)
グループに属するオブジェクトの図形名リスト
(setq g_en (cdr (assoc 350 (member (cons 3 gn) lst_groupe))))
(setq g_ed (entget g_en))
(while (setq en (assoc 340 g_ed))
(setq lst_en (cons (cdr en) lst_en))
(setq g_ed (cdr (member en g_ed)))
)
(reverse lst_en)
オブジェクトを選択してのグループ名を取得
;サブルーチン 図形名から、その図形が所属するグループ名リストを返す;
;
引数 en:図形名
;
;
返値 lst_gname:グループ名リスト
;
;
グループに属さない場合は nil を返す ;
;
使用例:(setq ret (Jof_get_gname (car (entsel)))) ;
(defun Jof_get_gname ( en / ed gen lst_groupe lst_gname)
(setq ed (entget en))
(while (and (not gen) (setq ed (member (assoc 330 ed) ed)))
(if (= "GROUP" (cdr (assoc 0 (entget (cdar ed)))))
(setq gen (cdar ed))
)
(setq ed (cdr ed))
)
(if (and
gen
(setq lst_group (reverse (dictsearch (namedobjdict) "ACAD_GROUP")))
)
(while (setq lst_group (member (assoc 350 lst_group)
lst_group))
(if (member (cons 340 en) (entget (cdar lst_group)))
(setq lst_gname (cons (cdadr lst_group) lst_gname))
)
(setq lst_group (cdr lst_group))
)
)
lst_gname
)
選択セットをグループ化
;***********************************************************************************************;
;サブルーチン(en以降のエンティティーをグループ化)
;
(defun Jos_make_group ( en / lst_groupe hn gn ss )
(setq lst_groupe (dictsearch (namedobjdict) "ACAD_GROUP"))
(setq hn (cdr (assoc 5 (entget en))))
(setq gn hn)
(setq n 1)
(while (member (cons 3 gn) lst_groupe);グループ名が重複しないように;
(setq gn (strcat hn "-" (itoa n)))
(setq n (1+ n))
)
(setq ss (ssadd))
(while en
(ssadd en ss)
(setq en (entnext en))
)
(command "-GROUP" "c" gn "" ss
"")
(setq ss nil)
)