明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1347|回复: 5

[提问] 请教大家怎么改成20-255号色啊,谢谢了

[复制链接]
发表于 2016-1-16 11:58:20 | 显示全部楼层 |阅读模式
请教大家怎么改成20-255号色,因为1-19数字键我都用了,现在只想用20-255数字键改颜色,请教大家这个怎么改啊,谢谢了
下面是找的代码,麻烦高手帮忙修改一下,谢谢
;;;----------------------------【按色号给色---0~255】---------------------------
(apply
'(lambda ( / n nn)
    (setq n -1)
    (repeat 256
       (setq n (1+ n)
             nn (itoa n)
       )
       (eval (read (strcat
                      "(defun c:"
                      (if (= 0 n) "0" nn)
                      "( / old_cmd x)(mai_start nil)(setq x (mai_select_first nil (strcat \"选择变颜色实体,颜色为 "
                      (if (= 0 n) "随层" nn)
                      ":<退出>\") \"没有选择物体.\"))(mai_chgcolor x "
                      nn
                      " nil)(mai_end))"
                   )
             )
       )
    )
)
nil
)


"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2016-1-16 13:15:48 | 显示全部楼层
幸好没想改成BRG色,否则FFFFFF颜色要用什么命令啊?^_^
改颜色不是这样用命令,应该是一个命令,使用getint输入颜色号,然后把实体改成这个颜色号就行了。
虽然用eval能定义系列函数,但不建议这样用。
建议看看我签名下的《认识自定义函数》,或许会有帮助。
发表于 2016-1-16 13:27:26 | 显示全部楼层
本帖最后由 hoopert 于 2016-1-16 13:38 编辑

;;;这是改RBG颜色,直接改颜色更简单吧,vla-put-color就行了。
    (setq obj (vlax-ename->vla-object (entlast)))
      
    (setq colorobj (vla-getinterfaceobject (vlax-get-acad-object)
                         (strcat "AutoCAD.AcCmColor." (substr (getvar "ACADVER") 1 2))))
    (vla-setrgb colorobj 225 225 225)
    (vla-put-truecolor obj colorobj)



(setq obj (vlax-ename->vla-object ( car (entsel))))
(vla-put-color obj n)
 楼主| 发表于 2016-1-16 13:41:59 | 显示全部楼层
hoopert 发表于 2016-1-16 13:27
;;;这是改RBG颜色,直接改颜色更简单吧,vla-put-color就行了。
    (setq obj (vlax-ename->vla-ob ...

我只是想输入20-255数字,修改对应色号即可,可否麻烦大哥帮忙修改一下呢,小弟确实搞不懂lsp,谢谢了
发表于 2016-1-16 14:52:52 | 显示全部楼层
本帖最后由 aihuyujian 于 2016-1-16 14:56 编辑

给你个简单粗暴的
用command命令 缺点就是速度慢
(defun c:cs (/ ss ys)              
                (if (= ysq nil)(setq ysq 6))
                (setq ys (getint (strcat "\n输入颜色号<" (rtos ysq 2 0) ">:")))
                (if (= ys nil)(setq ys ysq)(setq ysq ys))
                (while (setq ss (ssget ":s"))
        (command "change" ss "" "p" "co" (rtos ysq 2 0) ""))
                (princ))
如果非得按数字的话参考下面
(defun c:c1 (/ ss)               
                (while (setq ss (ssget ":s"))
        (command "change" ss "" "p" "co" "1" ""))
                (princ))
(defun c:c2 (/ ss)       
                (while (setq ss (ssget ":s"))
        (command "change" ss "" "p" "co" "2" ""))
                (princ))
(defun c:c3 (/ ss)       
                (while (setq ss (ssget ":s"))
        (command "change" ss "" "p" "co" "3" ""))
                (princ))
 楼主| 发表于 2016-1-17 12:00:15 | 显示全部楼层
aihuyujian 发表于 2016-1-16 14:52
给你个简单粗暴的
用command命令 缺点就是速度慢
(defun c:cs (/ ss ys)              

谢谢大侠!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-20 20:05 , Processed in 0.190507 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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