python二次開發cad教程「cad 二次開發教程」

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-16 13:12
下一篇 2024-12-16 13:12

相關推薦

發表回復

登錄後才能評論