更改颜色、命令、更改
我正在尝试编写一个lisp,它将更改当前颜色(而不是图层颜色),执行用户输入命令,然后将其更改回bylayer。(defun C:revc ()
(command "color" "240")
(command "revcloud")
(command "color" "bylayer")
) ;end_defun
如果我删除将颜色更改回bylayer的命令,它将正常执行。我认为当我不暂停它并等待用户完成“revcloud”命令时,它就会出现问题。 您可以改用CECOLOR系统变量:
(setvar "CECOLOR" "240")
;your code here
(setvar "CECOLOR" "ByLayer")
当做
米尔恰
(defun c:revc nil
(setvar 'Cecolor "240")
(command "_.Revcloud")
(while (> (getvar 'Cmdactive) 0)
(command pause))
(setvar 'Cecolor "256")(princ)
)
编辑:oops。。没有在那里看到你的帖子Mircea 无论图层状态颜色是什么。
(defun c:TesT nil
(command "_.revcloud")
(while
(= (getvar 'cmdactive) 1)
(command pause)
)
(command "_.chprop" (entlast) "" "_color" 240 "")
(princ)
)
小心。。。
Command: revc
_.Revcloud
Minimum arc length: 0.5000 Maximum arc length: 0.5000 Style: Normal
Specify start point or <Object>: *Cancel*
Command: ; error: Function cancelled
被毁!!
我相信其目的是以所需的颜色绘制revcloud,而不是在之后更改。
错误处理示例:
(defun c:revc( / *error*)
(defun *error*(msg)
(and oldCecolor (setvar 'cecolor oldCecolor))
(cond ((not msg)) ; Normal exit
((member msg '("Function cancelled" "quit / exit abort"))) ; <esc> or (quit)
((princ (strcat "\n** Error: " msg " ** ")))) ; Fatal error, display it
(princ))
((lambda (oldCecolor)
(setvar 'cecolor "240")
(command "._revcloud")
(while (= (logand 1 (getvar 'cmdactive)) 1) (command pause))
(*error* nil))
(getvar 'cecolor)))
**编辑-通过这种方式,无论是在命令完成时,还是在用户退出时,都会恢复原始的Cecolor。 另一个:
(vl-load-com)
(if (null *revcloudreactor*)
(setq *revcloudreactor*
(vlr-command-reactor nil
'(
(:vlr-commandwillstart . revcloudstore)
(:vlr-commandended . revcloudrestore)
(:vlr-commandfailed . revcloudrestore)
(:vlr-commandcancelled . revcloudrestore)
)
)
)
)
(defun revcloudstore ( reactor params )
(if (wcmatch (strcase (car params)) "*REVCLOUD")
(progn
(setq *cecolor* (getvar 'CECOLOR))
(setvar 'CECOLOR "240")
)
)
(princ)
)
(defun revcloudrestore ( reactor params )
(if (and *cecolor* (wcmatch (strcase (car params)) "*REVCLOUD"))
(progn
(setvar 'CECOLOR *cecolor*)
(setq *cecolor* nil)
)
)
(princ)
)
(princ)
是的
我知道我不能像你的Renderman那样快速地输入和编码,所以我甚至没有试过 使用命令反应器是我为多个命令标准化活动层、颜色等的首选方法。
非常简洁,李。
页:
[1]
2