sctw 发表于 2020-6-29 23:21:57

lisp如何判定文件使用了真彩色(对象或图层)

哪位大侠能写个判定文件使用了真彩色(包括图层颜色和对象颜色),或者判定文件中有255,255,255这个颜色。好多图都是因为文件对象或图层设置成了这个色而打印不出来,又不容易发现

tryhi 发表于 2020-6-30 00:01:03

本帖最后由 tryhi 于 2020-6-30 00:05 编辑

(setq bl420 nil)
(vlax-for obj (vla-get-Layers (setq *DOCS*(vla-get-ActiveDocument (vlax-get-acad-object))))
        (if (assoc 420(entget(vlax-vla-object->ename obj)))(setq lay420 T))
)

(if lay420
        (princ "\n存在图层使用真色彩")
        (princ "\n所有图层均使用索引色彩")
)

(setq bl420 nil)
(vlax-for block (vla-get-blocks *DOCS*)
        (vlax-for obj block
                (if (assoc 420(entget(vlax-vla-object->ename obj)))(setq bl420 T))
        )
)

(if bl420
        (princ"\n存在块或者图元使用真色彩")
        (princ"\n所有元素均未使用真色彩")
)
(princ)

sctw 发表于 2020-6-30 15:28:51

谢谢tryhi,留个联系Qq,还想咨询点问题呢

sctw 发表于 2020-6-30 15:37:55

如果有图层或对象或块使用255,255,255这个真彩色能自动改成7号索引色的程序吗,谢谢,能实现的话告诉我怎么赠币感谢哈

llsheng_73 发表于 2020-6-30 17:10:28

本帖最后由 llsheng_73 于 2020-6-30 17:14 编辑

sctw 发表于 2020-6-30 15:37
如果有图层或对象或块使用255,255,255这个真彩色能自动改成7号索引色的程序吗,谢谢,能实现的话告诉我怎么 ...
(defun c:tt(/ *DOCS* e)
(vl-load-com)
(vlax-for e(vla-get-Layers(setq *DOCS*(vla-get-ActiveDocument (vlax-get-acad-object))))
    (if(member'(420 . 16777215)(setq e(entget(vlax-vla-object->ename e))))
      (entmod(append(vl-remove'(420 . 16777215)e)'((62 . 7))))))
(vlax-for e(vla-get-blocks *DOCS*)
    (if(member'(420 . 16777215)(setq e(entget(vlax-vla-object->ename e))))
      (entmod(append(vl-remove'(420 . 16777215)e)'((62 . 7))))))
(vlax-for e(vla-get-ModelSpace *DOCS*)
    (if(member'(420 . 16777215)(setq e(entget(vlax-vla-object->ename e))))
      (entmod(append(vl-remove'(420 . 16777215)e)'((62 . 7))))))
)

sctw 发表于 2020-7-6 23:37:32

只要是用天正文字属性的,用tt命令改色CAD就会退出,能解决吗?
页: [1]
查看完整版本: lisp如何判定文件使用了真彩色(对象或图层)