dan03432 发表于 2022-7-6 08:06:11

更改颜色、命令、更改

我正在尝试编写一个lisp,它将更改当前颜色(而不是图层颜色),执行用户输入命令,然后将其更改回bylayer。
 

(defun C:revc ()
(command "color" "240")
(command "revcloud")
(command "color" "bylayer")
) ;end_defun

 
如果我删除将颜色更改回bylayer的命令,它将正常执行。我认为当我不暂停它并等待用户完成“revcloud”命令时,它就会出现问题。

MSasu 发表于 2022-7-6 08:13:13

您可以改用CECOLOR系统变量:
(setvar "CECOLOR" "240")
;your code here
(setvar "CECOLOR" "ByLayer")
 
当做
米尔恰

pBe 发表于 2022-7-6 08:15:05


(defun c:revc nil
(setvar 'Cecolor "240")
      (command "_.Revcloud")
       (while (> (getvar 'Cmdactive) 0)
                     (command pause))
       (setvar 'Cecolor "256")(princ)
   )

 
编辑:oops。。没有在那里看到你的帖子Mircea

Tharwat 发表于 2022-7-6 08:18:11

无论图层状态颜色是什么。
 

(defun c:TesT nil
(command "_.revcloud")
(while
   (= (getvar 'cmdactive) 1)
    (command pause)
)
(command "_.chprop" (entlast) "" "_color" 240 "")
(princ)
)

BlackBox 发表于 2022-7-6 08:22:52

小心。。。
 

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

 

pBe 发表于 2022-7-6 08:26:49

被毁!!

BlackBox 发表于 2022-7-6 08:29:24

 
我相信其目的是以所需的颜色绘制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。

Lee Mac 发表于 2022-7-6 08:34:03

另一个:
 
(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)

pBe 发表于 2022-7-6 08:36:12

 
是的
 
我知道我不能像你的Renderman那样快速地输入和编码,所以我甚至没有试过

BlackBox 发表于 2022-7-6 08:40:48

使用命令反应器是我为多个命令标准化活动层、颜色等的首选方法。
 
非常简洁,李。
页: [1] 2
查看完整版本: 更改颜色、命令、更改