本帖最后由 vitalgg 于 2023-5-25 20:08 编辑
- (defun c:hc ()
- ;; 选择需要改色的块
- (setq blks (pickset:to-list (ssget '((0 . "insert")))))
- ;; 取得无重复的块名列表
- (setq blk-names (list:remove-duplicates
- (mapcar '(lambda (x) (entity:getdxf x 2)) blks)
- ))
- (foreach blkname blk-names
- (foreach ent (block:ent-list blkname)
- (cond
- ((or
- (= (entity:getdxf ent 62) 253)
- (= (entity:getdxf ent 420) 11316396))
- ;;对ent 颜色为 172.172.172的进行处理
- ;; 删除真彩色,色号
- (entity:deldxf ent 420)
- (entity:putdxf ent 62 256)
- ;; 删除线型线宽
- (vla-put-Linetype (e2o ent) "bylayer")
- (vla-put-Lineweight (e2o ent) acLnWtByLayer)
- ;; 设图层为 A2
- (entity:putdxf ent 8 "A2")
- )
- ((or
- (= (entity:getdxf ent 62) 7))
- ;;对ent 颜色为 7 的进行处理
- ;; 删除真彩色,色号
- (entity:deldxf ent 420)
- (entity:putdxf ent 62 256)
- ;; 删除线型线宽
- (vla-put-Linetype (e2o ent) "bylayer")
- (vla-put-Lineweight (e2o ent) acLnWtByLayer)
- ;; 设图层为 0
- (entity:putdxf ent 8 "0")
- )
- )
- )
- )
- (@:cmd "regen")
- )
上面的代码需要在有 @lisp 环境下运行。
在 CAD 中 安装 @lisp ,请至 http://atlisp.cn
|