明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2103|回复: 11

[已解答] 请问我这个颜色选择为什么不能默认先选择的物体啊

[复制链接]
发表于 2014-10-7 10:33:08 | 显示全部楼层 |阅读模式
请问我这个颜色选择为什么不能默认先选择的物体啊,还有为什么执行命令后,princ的内容会重复2次啊,有高手帮我改改么

;---------- 颜色切换 123 开始
(defun CC_chyanse (CC_yanse / CC_S)
(setvar "cmdecho" 0)
(setq CC_S (cadr (ssgetfirst)))
    (while (or CC_S (setq CC_S (ssget ":s")))
    (command "CHPROP" CC_S  "" "C" CC_yanse "")
    (setq CC_S nil)
)
(princ)
)

(defun c:y1 ()
(CC_chyanse "1")
(princ "\n---选择物体颜色变成 1#(红色)")
)
(defun c:y2 ()
(CC_chyanse "2")
(princ "\n---选择物体颜色变成 2#(黄色)")
)

(defun c:y0 ()
(CC_chyanse "bylayer")
(princ "\n---选择物体颜色变成bylayer(随层)")
)


"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-10-7 14:56:43 | 显示全部楼层
(defun c:y0 ()
(CC_chyanse "bylayer")
(princ "\n---选择物体颜色变成bylayer(随层)")
(princ);这样就不会出现两次了,只能帮你这么多了
)
发表于 2014-10-7 15:00:19 | 显示全部楼层
;---------- 颜色切换 123 开始
(defun CC_chyanse (CC_yanse / CC_S)
(setvar "cmdecho" 0)
(setq CC_S (cadr (ssgetfirst)))
    (while (or CC_S (setq CC_S (ssget "i")))
    (command "CHPROP" CC_S  "" "C" CC_yanse "")
    (setq CC_S nil)
)
(princ)
)

(defun c:y1 ()
(CC_chyanse "1")
(princ "\n---选择物体颜色变成 1#(红色)")
(princ)  
)
(defun c:y2 ()
(CC_chyanse "2")
(princ "\n---选择物体颜色变成 2#(黄色)")
(princ)  
)

(defun c:y0 ()
(CC_chyanse "bylayer")
(princ "\n---选择物体颜色变成bylayer(随层)")
(princ)  
)

帮你改全了,看是不是你想要的效果了,要先选择对象了
 楼主| 发表于 2014-10-7 15:26:32 | 显示全部楼层
琴剑江山_10184 发表于 2014-10-7 15:00
;---------- 颜色切换 123 开始
(defun CC_chyanse (CC_yanse / CC_S)
(setvar "cmdecho" 0)

谢谢哥,但是还没完全达到我要的效果,我要的效果是,选择开始选择物体,那么就选择物体变色,并且可以继续选择变色的物体,如果开始没选择物体,那么就直接变成选择需要变色的物体

现在居然是命令: y1
窗口说明无效。
; 错误: 函数被取消

指定第一个角点:
窗口说明无效。
发表于 2014-10-7 15:31:45 | 显示全部楼层
  (while (or CC_S (setq CC_S (ssget "i")))改成
  (while (or CC_S (setq CC_S (ssget ":s")))
 楼主| 发表于 2014-10-7 15:45:33 | 显示全部楼层
琴剑江山_10184 发表于 2014-10-7 15:31
(while (or CC_S (setq CC_S (ssget "i")))改成
  (while (or CC_S (setq CC_S (ssget ":s")))

还是不行,不能先选择物体,选择物体后执行命令出错
发表于 2014-10-7 16:02:15 | 显示全部楼层
我感觉我没明白你的意思
能再说明白点不
 楼主| 发表于 2014-10-7 16:10:27 | 显示全部楼层
我这里如果是先选择物体,直接报错
 楼主| 发表于 2014-10-7 16:17:15 | 显示全部楼层
谢谢,已经解决了,换了chang 命令后达到了要求了
 楼主| 发表于 2014-10-7 16:20:42 | 显示全部楼层
对了,贴一下代码希望大伙喜欢,最初的代码是
(defun C:y0 (/ &SS)
  (setvar "CMDECHO" 0)
  (princ "选择的物体颜色将变成 BYLAYER: ")
  (setq &SS (ssget))
  (vl-cmdf "CHPROP" &SS "" "C" "BYLAYER"  "")
  (setvar "CMDECHO" 1)
  (princ)
)

(defun C:yb (/ &SS)
  (setvar "CMDECHO" 0)
  (princ "选择的物体颜色将变成 Byblock: ")
  (setq &SS (ssget))
  (vl-cmdf "CHPROP" &SS "" "C" "Byblock" "")
  (setvar "CMDECHO" 1)
  (princ)
)
(defun c:y1 ()
  (setvar "CMDECHO" 0)
  (princ "选择的物体颜色将变成1#(红色): ")
  (setq ss (ssget))
  (command "CHANGE" ss "" "PROPERTIES" "C" "1" "")
  (setvar "CMDECHO" 1)
  (princ)
)
(defun c:y2 ()
  (setvar "CMDECHO" 0)
  (princ "选择的物体颜色将变成2#(黄色): ")
  (setq ss (ssget))
  (command "CHPROP" ss "" "C" "2" "")
  (setvar "CMDECHO" 1)
  (princ)
)
(defun c:y3 ()
  (setvar "CMDECHO" 0)
  (princ "选择的物体颜色将变成3#(绿色): ")
  (setq ss (ssget))
  (command "CHPROP" ss "" "C" "3" "")
  (setvar "CMDECHO" 1)
  (princ)
)
(defun c:y4 ()
  (setvar "CMDECHO" 0)
  (princ "选择的物体颜色将变成4#(兰色): ")
  (setq ss (ssget))
  (command "CHPROP" ss "" "C" "4" "")
  (setvar "CMDECHO" 1)
  (princ)
)
(defun c:y5 ()
  (setvar "CMDECHO" 0)
  (princ "选择的物体颜色将变成5#(蓝色): ")
  (setq ss (ssget))
  (command "CHPROP" ss "" "C" "5" "")
  (setvar "CMDECHO" 1)
  (princ)
)
(defun c:y6 ()
  (setvar "CMDECHO" 0)
  (princ "选择的物体颜色将变成6#(紫色): ")
  (setq ss (ssget))
  (command "CHPROP" ss "" "C" "6" "")
  (setvar "CMDECHO" 1)
  (princ)
)
(defun c:y7 ()
  (setvar "CMDECHO" 0)
  (princ "选择的物体颜色将变成7#(白色): ")
  (setq ss (ssget))
  (command "CHPROP" ss "" "C" "7" "")
  (setvar "CMDECHO" 1)
  (princ)
)
(defun c:y8 ()
  (setvar "CMDECHO" 0)
  (princ "选择的物体颜色将变成8#(灰色): ")
  (setq ss (ssget))
  (command "CHPROP" ss "" "C" "8" "")
  (setvar "CMDECHO" 1)
  (princ)
)
(defun c:y9 ()
  (setvar "CMDECHO" 0)
  (princ "选择的物体颜色将变成9#(浅色): ")
  (setq ss (ssget))
  (command "CHPROP" ss "" "C" "9" "")
  (setvar "CMDECHO" 1)
  (princ)
)


修改后的代码是
;通用修改颜色代码 开始
(defun CC_chyanse (CC_yanse / CC_S)
(setvar "cmdecho" 0)
   (cond
    ((= CC_yanse "1") (princ "\n---选择物体颜色变成 1#(红色)"))
    ((= CC_yanse "2") (princ "\n---选择物体颜色变成 2#(黄色)"))
    ((= CC_yanse "3") (princ "\n---选择物体颜色变成 3#(绿色)"))
    ((= CC_yanse "4") (princ "\n---选择物体颜色变成 4#(兰色)"))
    ((= CC_yanse "5") (princ "\n---选择物体颜色变成 5#(蓝色)"))
    ((= CC_yanse "6") (princ "\n---选择物体颜色变成 6#(紫色)"))
    ((= CC_yanse "7") (princ "\n---选择物体颜色变成 7#(白色)"))
    ((= CC_yanse "8") (princ "\n---选择物体颜色变成 8#(灰色)"))
    ((= CC_yanse "9") (princ "\n---选择物体颜色变成 9#(灰白)"))
    ((= CC_yanse "bylayer") (princ "\n---选择物体颜色变成 bylayer (随层)"))
    ((= CC_yanse "byblock") (princ "\n---选择物体颜色变成 byblock (随块)"))
   )
     (while (setq CC_S (ssget))
        (command "change" CC_S "" "p" "c" CC_yanse "")
        )

(princ)
)

(defun c:y1 ()(CC_chyanse "1"))
(defun c:y2 ()(CC_chyanse "2"))
(defun c:y3 ()(CC_chyanse "3"))
(defun c:y4 ()(CC_chyanse "4"))
(defun c:y5 ()(CC_chyanse "5"))
(defun c:y6 ()(CC_chyanse "6"))
(defun c:y7 ()(CC_chyanse "7"))
(defun c:y8 ()(CC_chyanse "8"))
(defun c:y9 ()(CC_chyanse "9"))
(defun c:y0 ()(CC_chyanse "bylayer"))
(defun c:yb ()(CC_chyanse "byblock"))
;通用修改颜色代码 结束
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-18 01:07 , Processed in 0.169285 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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