明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2360|回复: 14

[提问] 真彩色转索引色时遇到所有含天正文字属性就出错,直接退CAD

[复制链接]
发表于 2020-7-10 10:27:17 | 显示全部楼层 |阅读模式
5明经币
以下lsp是改真彩色为索引色,但只要遇到是天正的文字或标注是真彩色,就直接退出CAD,哪位大老能帮助解决呢?
(defun c:toACI ( / i l s )
    (if (setq s (ssget "_"))
        (repeat (setq i (sslength s))
            (toACI (entget (ssname s (setq i (1- i)))))
        )
    )
    (command "_.regen")
    (princ)
)
(defun toACI ( x / e n )
    (entmod (vl-remove-if '(lambda ( x ) (member (car x) '(420 430))) x))
    (if (and (= "INSERT" (cdr (assoc 0 x)))
             (not (member (setq n (cdr (assoc 2 x))) l))
             (setq e (tblobjname "block" n))
             (setq l (cons n l))
        )
        (while (setq e (entnext e)) (toACI (entget e)))
    )
)
(princ)


最佳答案

查看完整内容

(defun feng:color:change ( s / co );==========改颜色为索引色 (setq co (vla-get-truecolor s)) (vla-put-ColorIndex co (vla-get-color s)) (vla-put-truecolor s co) ) (defun feng:ms:color ( / ms n );==========模型中的对象 (setq ms (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object)))) (vlax-for n ms (feng:color:change n)) ) (defun feng:bl:color ( / bl n1 n2 );===== ...
发表于 2020-7-10 10:27:18 | 显示全部楼层
(defun feng:color:change ( s / co );==========改颜色为索引色
  (setq co (vla-get-truecolor s))
  (vla-put-ColorIndex co (vla-get-color s))
  (vla-put-truecolor s co)
  )
(defun feng:ms:color ( / ms n );==========模型中的对象
  (setq ms (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))))
  (vlax-for n ms (feng:color:change n))
  )
(defun feng:bl:color ( / bl n1 n2 );========块里面的对象
  (setq bl (vla-get-blocks (vla-get-ActiveDocument (vlax-get-acad-object))))
  (vlax-for n1 bl
    (vlax-for n2 (vla-Item bl (vla-get-name n1)) (feng:color:change n2))
    )
  )
(defun feng:layer:color ( / la n );========图层对象
  (setq la (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object))))
  (vlax-for n la (feng:color:change n))
  )
(defun feng:color ()
  (princ "\n模型对象颜色换转...") (feng:ms:color)
  (princ "\n块内对象颜色换转...") (feng:bl:color)
  (princ "\n图层对象颜色换转...") (feng:layer:color)
  (princ "\n颜色换转完成!")
  )
(feng:color)
回复

使用道具 举报

发表于 2020-7-10 13:17:28 | 显示全部楼层
有大神的源码http://bbs.mjtd.com/thread-111059-1-1.html,原因是天正的图元不支持组码,只能用Visual LISP调用,而且只能调用部分功能
回复

使用道具 举报

 楼主| 发表于 2020-7-13 22:06:34 | 显示全部楼层
有大神用Visual LISP编写一个吗?
功能:能把含有天正文字或标注的对象由真彩色转为索引色的功能?可联系我Q:371835653
回复

使用道具 举报

发表于 2020-7-14 00:27:58 | 显示全部楼层
没那么复杂。用cad自带的命令可以规避掉对天正对象的兼容问题。用组码去改天正对象很容易造成崩溃。
(defun c:00( / s1)
        (setq s1(ssget))
        (command "change" s1 "" "p" "c" "BYLAYER" "")
)
回复

使用道具 举报

发表于 2020-7-14 04:22:28 | 显示全部楼层
万不得已,不要用command命令。

点评

是 vla-put-color 对真彩色好像没什么用啊。  发表于 2020-7-14 23:29
回复

使用道具 举报

 楼主| 发表于 2020-7-14 10:51:50 | 显示全部楼层
@feng582304, 不是要把对象颜色改为随层,而是把对象有真彩色的颜色变为索引色

点评

我只是举了个例子而已  发表于 2020-7-14 23:30
回复

使用道具 举报

 楼主| 发表于 2020-7-14 10:54:52 | 显示全部楼层
对象包括CAD对象、实体、块、天正对象等。
回复

使用道具 举报

 楼主| 发表于 2020-7-15 10:15:29 | 显示全部楼层
感谢feng582304,完美解决问题
回复

使用道具 举报

 楼主| 发表于 2020-7-15 10:15:46 | 显示全部楼层
感谢feng582304,完美解决问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 09:51 , Processed in 0.194192 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表