lisp過濾器
❶ 在CAD中怎樣用autolisp完成過濾器功能的編程,請高手發指點
(defun c:wzxg() ;(/ ztys len old new ed i)
(setq ss (ssget "x" '((-4 . "<xor") (0 . "TEXT") (0 . "MTEXT") (-4 . "xor>"))))
(setq len (sslength ss) i 0)
(while (< i len)
(setq ed (entget (ssname ss i)))
(setq old (assoc 41 ed) new '(41 . 0.8))
(setq ed (subst new old ed))
(entmod ed)
(setq i (1+ i))
)
;第一個功能,將寬度比例不等於0.8的文字 改成0.8
(setq ss (ssget "x" '((-4 . "<and") (0 . "TEXT") (40 . 5) (-4 . "and>"))))
(setq len (sslength ss) i 0)
(while (< i len)
(setq ed (entget (ssname ss i)))
(setq old (assoc 40 ed) new '(40 . 4))
(setq ed (subst new old ed))
(entmod ed)
(setq i (1+ i))
)
;;第二個功能,將字高為5的文字改成字高4
(setq ss nil)
(princ)
)
這是我自己編的一個批量改文字寬度比例和高度的一個小程序,你可以參考著編一些其他的小程序
❷ CAD里怎麼用LISP調出圖層管理器中的圖層過濾器,並且批量更改過濾出來的圖層顏色、凍結狀態
AcadDoc.layers.Count----得到圖中所有的圖層 的總層數
遍歷所有的層
某一層 LLL=AcadDoc.layers.item i------也就是得到第回i層
用--LLL.Name----得到某一層的層名
通過比較答 如果該層正是 你想要改顏色的那個 層,那就用 LLL.TureColor ---來設置層的顏色
------------------對了,前提是圖中所有圖元的顏色都是"ByLayer"--也就是「隨層」
❸ lisp選擇集函數ssget過濾器中如何使用變數
(setq ss (ssget (list '(0 . "INSERT") (cons 2 blName))))