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))))