本文展示一個AutoLISP副程式,計算圖塊在畫面的數量。
用法:
步驟1. 將其加入一個Lisp程式檔內,假設程式名為 aa.lsp。
步驟2. 下載程式,Command: (load “aa")
步驟 3. 執行副程式指令,如要計算畫面上有幾個名為’A4’的圖塊的數量,執行 Command: (blk_count “A4″) ,即得出數量。若在程式內執行,即 (setq n (blk_count “A4″)),變數 n 即為’A4’圖塊的數量。
程式碼:
(defun blk_count (blkn / ss1 n m tol a blkname)
(setq ss1 (entss (ssget "x") "insert") '蒐集所有insert類圖元,就是圖塊(block)
tol 0
)
(if ss1
(progn
(setq n (sslength ss1)
m 0
)
(repeat n '逐一取出圖塊
(setq a (ssname ss1 m)
blkname (ent_code 2 (entget a))
)
(if (= (strcase blkname) (strcase blkn)) '比對圖塊名字
(setq tol (+ 1 tol)) '累加數量
)
(setq m (+ 1 m))
)))
(princ tol)
)