tranney 发表于 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(随层)")
)


琴剑江山_10184 发表于 2014-10-7 14:56:43

(defun c:y0 ()
(CC_chyanse "bylayer")
(princ "\n---选择物体颜色变成bylayer(随层)")
(princ);这样就不会出现两次了,只能帮你这么多了
)

琴剑江山_10184 发表于 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)
)

帮你改全了,看是不是你想要的效果了,要先选择对象了

tranney 发表于 2014-10-7 15:26:32

琴剑江山_10184 发表于 2014-10-7 15:00 static/image/common/back.gif
;---------- 颜色切换 123 开始
(defun CC_chyanse (CC_yanse / CC_S)
(setvar "cmdecho" 0)


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

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

指定第一个角点:
窗口说明无效。

琴剑江山_10184 发表于 2014-10-7 15:31:45

(while (or CC_S (setq CC_S (ssget "i")))改成
(while (or CC_S (setq CC_S (ssget ":s")))

tranney 发表于 2014-10-7 15:45:33

琴剑江山_10184 发表于 2014-10-7 15:31 static/image/common/back.gif
(while (or CC_S (setq CC_S (ssget "i")))改成
(while (or CC_S (setq CC_S (ssget ":s")))

还是不行,不能先选择物体,选择物体后执行命令出错

琴剑江山_10184 发表于 2014-10-7 16:02:15

我感觉我没明白你的意思
能再说明白点不

tranney 发表于 2014-10-7 16:10:27

我这里如果是先选择物体,直接报错

tranney 发表于 2014-10-7 16:17:15

谢谢,已经解决了,换了chang 命令后达到了要求了

tranney 发表于 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"))
;通用修改颜色代码 结束
页: [1] 2
查看完整版本: 请问我这个颜色选择为什么不能默认先选择的物体啊