CAD 如何用lisp实现如图层一到二十,把全部图层变成8号色?然后其中的某个图层为红色

如题所述

第1个回答  2020-04-20
编程思路如下:
1、界面上放两个按钮,
2、其中一个按钮用来定义哪些层需要变成红色的,里边让用户输入字符串,比如:AAA,BBB,,也就是定义为 AAA层与BBB层 将变成红色,其它所有层变为8号色
3、另一个按钮用来执行任务
遍历所有图层,将图层名称 逐一 与定义的字符串比较,如果相同 则设为红色,否则设为8号色---------------------------图中 层的总个数 layers.count
------------------------------某一层 LAYERX= layers.item i
------------------------某一层的层名 :LAYERX.name
------------------改某一层 颜色用 LAYERX.TrueColor tcolor
-------truecolor设定起来有点难度哦,你多想想本回答被网友采纳
第2个回答  2020-04-21
(defun c:tes ( / n tr)
(setq n 0)
(while (< (setq n (1+ n)) 21)
(setq tr (rtos n 2 0))
(if (null (tblsearch "layer" tr))
(entmake (list '(0 . "LAYER") '(100 . "AcDbSymbolTableRecord") '(100 . "AcDbLayerTableRecord") (cons 62 8) '(70 . 0) (cons 2 tr)))
);图层代码;62颜色,负值为关闭图层;;290不打印0;打印1;;;370线宽0;默认线宽-3;;;70图层可见0;冻结1+锁定4
)
(princ)
);复制到记事本,以【.lsp】为后缀命名,加载到CAD,命令为【TES】(可以自己修改)本回答被提问者采纳
相似回答