【Visual Lisp】圖元選擇集專題


圖元選擇集專題
;;★★★01.選擇集操作★★★
(setq ss (ssadd));;創建一個空選擇集
(ssadd (car(entsel)) ss);;將點取的圖元添加到ss選擇集中,可以不用setq語句圖元便加入ss所指向的選擇集
(ssdel en1 ss);;將en1圖元從ss中刪除
(ssmemb (car (entsel)) ss);;測試圖元名所表示的對象是否在選擇集中,在則返回圖元名,否則返回nil
(ssname ss 0);;根據索引獲取選擇集中的圖元名.使用repeat或者while來遍歷選擇集
(sslength ss);;返回選擇集元素個數
注意:用ssadd或者其他方式創建了選擇集使用完后要記得清空,否則下次創建變量名相同的選擇集可能包含之前的選擇集的圖元。特別注意循環的情況。所以用完后記得(setq ss nil)

;;★★★02.ssget專題★★★
(ssget);;鼠標去框選窗選圖元創建選擇集
(ssget '((0 . "TEXT") (62 . 3)));;(ssget 過濾表)的形式,圖元必須滿足過濾表中所有條件才可被選中。過濾表使用 '修飾表示時不能使用變量,可以使用(list (cons 0 etype) (cons 62 color))的形式來表示,etype和color為變量
(ssget "-P");;此方法同(ssget)只是此處可以在執行前先選好圖元然后執行此命令后創建的就是之前選中圖元的選擇集[此方法用的多]
(ssget "P");;此方法是創建最近一次選中的圖元組成的選擇集,也就是說當下沒有選中圖元執行命令后將創建之前有選中過圖元組成的選擇集,此方法不用鼠標去選。
(ssget "C" pt1 pt2 [過濾器表]);;創建在以pt1 pt2為對角線的矩形或者接觸這個矩形范圍的圖元組成的選擇集(pt1和pt2為矩形的對角點)。過濾表同上
(ssget "CP" pt_list [過濾器表]);;pt_list為點組成的表(list pt1 pt2 pt3)也就是由這些點所圍多邊形內進行窗交然后根據過濾表來創建選擇集
(ssget "W" pt1 pt2 [過濾器表]);;創建在以pt1 pt2為對角線的矩形范圍內圖元組成的選擇集
(ssget "WP" pt_list [過濾器表]);;pt_list為點組成的表(list pt1 pt2 pt3)也就是由這些點所圍多邊形內進行窗選然后根據過濾表來創建選擇集
(ssget ":E" [過濾器表]);;相當於用entsel去一個一個點選對象,如果沒有點選到也繼續提示點選直到右鍵。而entsel沒點選到則返回nil
(ssget ":S" [過濾器表]);;只允許在圖中選擇一次。生成滿足過濾表的這一次選擇的圖元組成的選擇集
(ssget "X" [過濾器表]);;在CAD中所有滿足過濾表的圖元組成的表(不對塊中的處理)


;;要點
;;01.在使用ssget和ssadd創建選擇集時我們所設定的變量僅僅是指向這個選擇集,選擇集修改后所有指向該選擇集的變量代表的選擇集都跟着修改比如(setq ss1 (ssadd)) (setq ss2 ss1) (ssadd en1 ss1)在這里ss1和ss2是完全等價的,通過用ss1修改選擇集,ss2也一樣修改,注意等價關系。
;;02.[過濾器表]的兩種形式可以是用 '修飾(內部不能用變量) 也可以用(list (cons a b) (cons c d))的形式
;;03.[過濾器表]內的-4組合
;;或:'((-4 . "<OR")(0 . "LINE") (0 . "TEXT")(-4 . "OR>"))
;;且:'((-4 . "<AND")(0 . "TEXT") (62 . 3)(-4 . "AND>"))
;;非:not格式同上
;;異或:xor 兩者取其一
;;關系運算:'((0 . "CIRCLE") (-4 .">=") (40 . 2.0))過濾出半徑大於等於2的圓。其它運算符同格式(注意關系運算符用雙引號)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM