2.11.2 操作選擇集
1.向選擇集中加入圖元
( ssadd name ss) 函數用於向選擇集中加入圖元,函數返回加入新圖元後的選擇集。如果不帶任何變元參數時(ssadd)表示建立一個空的選擇集,只帶name參數時,表示建立只包含名為name圖元的選擇集。如果帶2個參數,表明將name圖元加入到指定的選擇集中,若選擇集中已有此圖元,則忽略添加請求,並且不報告錯誤。
ssadd創建的選擇集可以包含圖紙空間的圖元,也可包模型空間的圖元,我們也可在應用程序中用DXF組碼的67位碼過濾,去掉不需要的圖元,67組碼值為1,指定圖元處理圖紙空間。
2.從選擇集中刪除圖元
(ssdel name ss)從選擇集ss中刪除名稱為name的圖元。
3.獲取選擇集中的圖元數目
(sslength ss)
4.訪問選擇集圖元
(ssname ss n),返回選擇集中第n個圖元名,序號為從0開始計數的整數。
(ssanme ss 0) 第一個圖元;
(ssanme ss l-1) l為圖元數目,返回最後一個圖元名。
5.測試某個圖元是否在選擇集中
(ssmemb name ss),存在返回圖元名,不存在返回nil。
6.刪除選擇集,釋放內存。 (setq ss nil)
2.11.3 應用實例
因為比較重要,現具體說2個實例。
例1:選擇屏幕上要保留的圖形,刪除其它未被選中的圖形。
(defun c:delnot( / ss1 ss2 ss3 n ent)
(setq ss1 (ssget) ss2 (ssget “X”) )
(if (not ss1)
(command “erase” ss2 “”)
(progn
(setq ss3 (ssadd) n 0 )
(repeat (sslength ss2 )
(setq ent (ssname ss2 n))
(if (not (ssmemb ent ss1))
(ssadd ent ss3)
)
(setq n (1+ n))
)
(command “erase” ss3 “” “redraw”)
)
)
)
例2:改變現行圖形中所有文本尺寸大小。
(defun c:change( / a ts n index b1 b c d b2)
(setq a (ssget “X” ‘((0 . “TEXT”))))
(setq ts (getdist “\n輸入新的文本大小:”))
(setq n (sslength a))
(setq index 0)
(repeat n
(setq b1 (entget (ssname a index)))
(setq index (1+ index))
(setq c (assoc 40 b1))
(setq d (cons (car c) ts))
(setq b2 (subst d c b1))
(entmod b2)
)
(princ)
)
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/268905.html
微信掃一掃
支付寶掃一掃