2.11.2 操作選擇集
1.向選擇集中加入圖元
( ssadd name ss) 函數用于向選擇集中加入圖元,函數返回加入新圖元后的選擇集。如果不帶任何變元參數時(ssadd)表示建立一個空的選擇集,只帶name參數時,表示建立只包含名為name圖元的選擇集。如果帶2個參數,表明將name圖元加入到指定的選擇集中,若選擇集中已有此圖元,則忽略添加請求,并且不報告錯誤。
ssadd創建的選擇集可以包含圖紙空間的圖元,也可包模型空間的圖元,我們也可在應用程序中用DXF組碼的67位碼過濾,去掉不需要的圖元,67組碼值為1,指定圖元處理圖紙空間。
2.從選擇集中刪除圖元
?。╯sdel name ss)從選擇集ss中刪除名稱為name的圖元。
3.獲取選擇集中的圖元數目
(sslength ss)
4.訪問選擇集圖元
?。╯sname ss n),返回選擇集中第n個圖元名,序號為從0開始計數的整數。
(ssanme ss 0) 第一個圖元;
(ssanme ss l-1) l為圖元數目,返回最后一個圖元名。
5.測試某個圖元是否在選擇集中
(ssmemb name ss),存在返回圖元名,不存在返回nil。
6.刪除選擇集,釋放內存。?。╯etq 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輸入新的文本大?。?#8221;))
(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)
)
版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。