MikeP 发表于 2022-7-6 08:47:25

没什么变化,但现在lisp

当我创建这个时,它工作得很好。更改了命令行颜色,没有错误。现在它告诉我
Program ERROR
Resetting environment ; error: An error has occurred inside the *error*
functionbad argument type: consp nil
 
(defun c:PST (/ pickstyle)

(if (= (getvar "pickstyle") 1) (setvar "pickstyle" 0) (setvar "pickstyle" 1))

(if (= (getvar "pickstyle") 1) (CmdCol 255 0 0) (CmdCol 255 255 255))


(defun CmdCol (r g b)
(vl-load-com)
(vla-put-TextWinBackgrndColor
   (vla-get-Display
   (vla-get-Preferences
       (vlax-get-acad-object))) (+ r (* 256 g) (* 65536 b))))

(princ (getvar "pickstyle"))

(princ)
)

Lee Mac 发表于 2022-7-6 09:00:14

由于您的代码没有定义局部*error*函数,因此您似乎正在运行其他LISP例程,这些例程覆盖默认*error*函数,而不是重置它(有关详细信息,请参阅此处)。
 
这不会解决您的问题,但会提供有关错误的更多信息;在命令行中键入:
 
然后重新运行上述代码。
 
将IF语句移到CmdCol函数定义下方,因为否则调用函数时不会定义该函数。
 

MikeP 发表于 2022-7-6 09:08:02

谢谢它现在这样说
Command: pst ; error: no function definition: CMDCOL
 
我在定义中添加了“cmdcol”
但仍然得到相同的错误
 
(defun c:PST (/ pickstyle CmdCol)

(if (= (getvar "pickstyle") 1) (setvar "pickstyle" 0) (setvar "pickstyle" 1))

(if (= (getvar "pickstyle") 1) (CmdCol 255 0 0) (CmdCol 255 255 255))


(defun CmdCol (r g b CmdCol)
(vl-load-com)
(vla-put-TextWinBackgrndColor
   (vla-get-Display
   (vla-get-Preferences
       (vlax-get-acad-object))) (+ r (* 256 g) (* 65536 b))))

(princ (getvar "pickstyle"))

(princ)
)

Tharwat 发表于 2022-7-6 09:10:32

请从子函数中删除变量CmdCol,然后重试

Lee Mac 发表于 2022-7-6 09:23:40

 
^^重新阅读。

MikeP 发表于 2022-7-6 09:28:58

好了,这个现在可以用了
 
5

MikeP 发表于 2022-7-6 09:36:53

 
第一次错过了。执行此操作并删除子功能def。
现在起作用了
谢谢

Lee Mac 发表于 2022-7-6 09:44:01

 
好东西。
 
但是,您可能仍然希望调查在正在运行的另一个LISP程序中没有重置“error”函数的问题。

MikeP 发表于 2022-7-6 09:54:50

 
我阅读了你发送的链接。我仍然不确定是否在另一个程序中找到错误。我知道它可能不会重置,因为我可能在命令完成一半时按了esc。但我不知道如何找到它
页: [1]
查看完整版本: 没什么变化,但现在lisp