是否运行seper对话框
如何在同一个lisp中“调用/转到”另一个defun。当我尝试它时,它告诉我;错误:没有函数定义:
(vl-load-com)
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
(SETQ reply1 (ACET-UI-MESSAGE (strcat"Some Text")
"Some Header" 36))
(IF (= reply1 6) (c:mos2nsc))
(IF (= reply1 7) (c:runlater))
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
(defun c:mos2nsc ( / )
(SETQ reply2 (ACET-UI-MESSAGE (strcat"Some Text")
"Some Header" 20))
(IF (= reply2 6) (c:replyyes))
(IF (= reply2 7) (c:runlater))
)
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
(defun c:replyyes ( / of_epk of_pt)
(setvar "cmdecho" 0)
(if (null of_dist) (setq of_distx 1.0))
(initget 6)
(if (null (setq of_dist (getdist (strcat "\nPlease Enter the Offset Distance <>: "))))
(setq of_dist of_distx)
)
(setq of_distx of_dist)
(if (null of_elev) (setq of_elevx 0.0))
(if (null (setq of_elev (getreal (strcat "\nPlease Enter the Elevation Difference - For a Negative Use a '-' <>: "))))
(setq of_elev of_elevx)
)
(setq of_elevx of_elev)
(while (or (setq of_epk (entsel)) (eq 7 (getvar "errno")))
(if (and of_epk
(member (cdr (assoc 100 (reverse (entget (car of_epk)))))
'("AcDbPolyline" "AcDb2dPolyline"))
(setq of_pt (getpoint "\nPlease Select the Side to offset: "))
)
(command "_.offset" of_dist of_epk of_pt "" "_.move" (entlast) ""
(list 0.0 0.0 of_elev) "")
)
)
(princ)
)
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
(defun c:runlater ( / )
(acet-ui-message "To run later, type 'MOS2NSC' anytime to begin to conversion process." "Some Header" 64)
) 你好
我正在处理一个当前的Lisp程序问题。我在这个网站上找到了一些“是/否”对话框/警报框的代码。我正在尝试修改它,使每个按钮都能跳转到同一lisp中的不同部分/不同定义。当我运行它时,它表示函数不存在。我已将其设置为在加载时启动“是/否”框。单击“是”立即运行,单击“否”稍后运行。当我点击否时,我得到:;错误:没有函数定义:C:RUNLATER。我希望有人能帮我。
非常感谢。
(vl-load-com)
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
(SETQ reply1 (ACET-UI-MESSAGE (strcat"Some Text")
"Some Header" 36))
(IF (= reply1 6) (c:mos2nsc))
(IF (= reply1 7) (c:runlater))
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
(defun c:mos2nsc ( / )
(SETQ reply2 (ACET-UI-MESSAGE (strcat"Some Text")
"Some Header" 20))
(IF (= reply2 6) (c:replyyes))
(IF (= reply2 7) (c:runlater))
)
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
(defun c:replyyes ( / of_epk of_pt)
(setvar "cmdecho" 0)
(if (null of_dist) (setq of_distx 1.0))
(initget 6)
(if (null (setq of_dist (getdist (strcat "\nPlease Enter the Offset Distance <>: "))))
(setq of_dist of_distx)
)
(setq of_distx of_dist)
(if (null of_elev) (setq of_elevx 0.0))
(if (null (setq of_elev (getreal (strcat "\nPlease Enter the Elevation Difference - For a Negative Use a '-' <>: "))))
(setq of_elev of_elevx)
)
(setq of_elevx of_elev)
(while (or (setq of_epk (entsel)) (eq 7 (getvar "errno")))
(if (and of_epk
(member (cdr (assoc 100 (reverse (entget (car of_epk)))))
'("AcDbPolyline" "AcDb2dPolyline"))
(setq of_pt (getpoint "\nPlease Select the Side to offset: "))
)
(command "_.offset" of_dist of_epk of_pt "" "_.move" (entlast) ""
(list 0.0 0.0 of_elev) "")
)
)
(princ)
)
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
(defun c:runlater ( / )
(acet-ui-message "To run later, type 'MOS2NSC' anytime to begin to conversion process." "Some Header" 64)
) 修改您的回复以包含代码的代码标记。
您收到该错误消息是因为当代码的第一部分加载时,所需的函数或例程尚未加载,因此如果您再次尝试,它应该会正常运行。
将代码的第一部分替换到底部,然后重试。
谢谢你的回复!我试着用“#”按钮,但什么也没用。我想知道如何像你们一样做代码框。我为此道歉。
至于代码,你是对的。当我把“开始”的消息放在代码末尾时,它就像一个梦。非常感谢。
我的下一个问题是;由于我的强迫症,我真的很想在我的代码开始的“开放”信息。有没有办法在开始时预加载其他函数? 如Tharwat所示,加载程序时计算以下表达式:
然而,由于defun表达式出现在加载时正在评估的表达式之后,因此您试图根据用户的响应来评估的函数[(c:mos2nsc)&(c:runlater)]尚未评估。 谢谢大家,这很有帮助!!我真的很感激。
我的下一个问题是;由于我的强迫症,我真的很想在我的代码开始的“开放”信息。有没有办法在开始时预加载/预计算defun表达式? (vl-load-com)
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
(defun onloadexpressions ( / reply1 )
(SETQ reply1 (ACET-UI-MESSAGE (strcat "Some Text") "Some Header" 36))
(cond
( (= 6 reply1) (c:mos2nsc))
( (= 7 reply1) (c:runlater))
)
(princ)
)
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
(defun c:mos2nsc ( / reply2 )
(SETQ reply2 (ACET-UI-MESSAGE (strcat "Some Text") "Some Header" 20))
(cond
( (= 6 reply1) (c:replyyes))
( (= 7 reply1) (c:runlater))
)
(princ)
)
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
(defun c:replyyes ( / of_dist of_elev of_epk of_pt )
(setvar "cmdecho" 0)
(if (null of_distx) (setq of_distx 1.0))
(initget 6)
(if (setq of_dist (getdist (strcat "\nPlease Enter the Offset Distance <" (rtos of_distx) ">: ")))
(setq of_distx of_dist)
)
(if (null of_elevx) (setq of_elevx 0.0))
(if (setq of_elev (getreal (strcat "\nPlease Enter the Elevation Difference - For a Negative Use a '-' <" (rtos of_elevx) ">: ")))
(setq of_elevx of_elev)
)
(while (or (setq of_epk (entsel)) (= 7 (getvar "errno")))
(if (and of_epk
(member (cdr (assoc 100 (reverse (entget (car of_epk))))) '("AcDbPolyline" "AcDb2dPolyline"))
(setq of_pt (getpoint "\nPlease Select the Side to offset: "))
)
(command "_.offset" of_distx of_epk "_non" of_pt "" "_.move" (entlast) "" "_non" (list 0.0 0.0 of_elevx) "")
)
)
(princ)
)
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
(defun c:runlater ( / )
(acet-ui-message "To run later, type 'MOS2NSC' anytime to begin to conversion process." "Some Header" 64)
(princ)
)
(onloadexpressions) 李,你就是那个男人!!非常感谢,效果很好。我在你的网站上给你发了一封电子邮件,你现在可以无视了。
塔瓦,也谢谢你。我真的很感谢你的帮助。
你这么说真是太好了,我只是给了你方向,李做了所有的事情。
我建议你修改你的第一篇帖子,以避免版主提出警告。这很简单,请阅读本文 好吧,冒着听起来像个白痴的风险;太晚了;我什么都做不了。我读了你发给我的文章Tharwat和什么都没有发生,当我试图编辑后。
页:
[1]
2