sachindkini 发表于 2022-7-6 12:56:45

我的第一个lisp程序(Plz chk

尊敬的先生:,
 
请检查。我的程序正常与否
面积mm。lsp

Freerefill 发表于 2022-7-6 13:09:53

看起来不错。有很多清理工作要做,但随着你的进步,你会学到更多。
 
我要说的一件事是,我在你这个级别工作时遇到了一个问题。您更改了osmode,然后提示选择一个点。我做了很多,当时,这很有道理。我逐渐意识到,这是一种难以置信的限制,实际上相当危险。限制是因为您想要的点可能不是允许捕捉到的点,并且是危险的,因为如果您的程序在getpoint出错,它将无法在程序的其余部分进行。。。简而言之,它不会重置osmode。这是我遇到的最大问题。每隔一段时间,我就会注意到我的osmode并不是它应该的样子。。因为我的功能失败了,没有重置。从那以后,我完全避免了在我的功能中更改osmode。
 
好的开始,否则。^。^

Lee Mac 发表于 2022-7-6 13:18:24

注意我的评论,萨欣基尼,
 
(defunc:CA2(/((#ff00ff]“CMDECHO”oldos(getvar“OSMODE”);;存储;;更改系统变量之前,;;然后你可以在最后重置它们。;;我看到你这样做是为了OSMODE,但它是;;这是一个很好的做法。(defun()(“CMDECHO”)。(如果oldos(setvar“OSMODE”oldos()([原理;;包括一个短的错误处理程序来重置;;系统变量,如果用户点击Esc;;在节目期间。记住本地化这个;;函数,正如在主函数中定义的那样。(setvar“CMDECHO”0(“osmode”524(if(和(setq]p1(“\n为CAREPET区域选择PLINE:)([蓝色]setqp5( getpoint“\n放置文本的位置:“];;允许空输入,因此使用IF函数。;;我在这里对两个输入进行了分组,这样两个输入都可以是;;在继续之前测试。(progn;;包装以下代码,使其评估为;;一个表达式。因为IF函数只接受“test”;;表达式,“then”表达式和“else”表达式(可选),;;我们希望将以下所有代码包装到“then”表达式中。;;(setvar“osmode”0);;

sachindkini 发表于 2022-7-6 13:22:22

尊敬的先生,(Freerefill&lee mac)
 
 
thnx sir u r评论
 
很好。。。。。。。。。。。。。。
 
 
THNxxxxxxxxxxx

Shibuboss 发表于 2022-7-6 13:34:10

你好
当我通过电子邮件发送图纸时,我还必须附上ctb。是否可以在图纸中绑定连接时序数据库。如果我们这样做了,它是如何工作的?
请告知。

sachindkini 发表于 2022-7-6 13:34:35

;尊敬的先生:,
 
;添加一些评论plz chk先生
;如何在文本周围创建多线框架
 
(定义c:CA3(/*错误*p1 p5 p6 a b c d e fn)
(setq oldCM(getvar“CMDECHO”)
oldos(getvar“OSMODE”))
 
;; 存储
;; 在更改系统变量之前,
;; 然后你可以在最后重置它们。
;; 我看到你为OSMODE做了这个,但它
;; 这是一个很好的做法。
(defun*错误*(msg)
(如果oldCM(setvar“CMDECHO”oldCM))
(如果是oldos(setvar“OSMODE”oldos))
(普林斯消息)
(普林斯)
;; 包括一个短错误处理程序来重置
;; 系统变量,如果用户点击Esc
;; 在节目期间。记住将其本地化
;; 函数,正如在主函数中定义的那样。
 
(setvar“CMDECHO”0)
(setvar“osmode”524)
 
(如果(和(setq p1(getpoint“\n为CAREPET区域选择PLINE:”))
(setq p5(getpoint“\n放置文本的位置:”))
 
;; 允许空输入,因此使用IF函数。
;; 我在这里对这两个输入进行了分组,以便两者都可以
;; 在继续之前测试。
(程序
;; 包装以下代码,使其计算为
;; 一个表达式。因为IF函数只接受“测试”
;; 表达式,“then”表达式和“else”表达式(可选),
;; 我们希望将以下所有代码包装到“then”表达式中。
 
;; (setvar“osmode”0);;
 
(setq p5(极性p5 pi 1250))
(setq p6(极性p5 0 2500))
(setq fn(getstring t“\n平面编号:”)
(命令“AREA”“E”P1)
(SETQ A(GETVAR“区域”))
;;
(SETQ F(SF));面积转换为平方英尺。
 
(defun sf(/sm sf st)
(setq sm(getvar“区域”))
(setq sf(*sm 0.000010764))
(setq sf(rtos sf 2)
(SETQ ST(strcat sf“平方英尺”)
(第一节)
)
 
 
(SETQ B(/A 1000000))
(SETQ C(RTOS B 2 2))
 
(SETQ D“公寓地毯面积”);;不需要strcat,这里只有一个字符串
 
(setq e(strcat“NO.”FN“=“C”SQ.MT.”)
 
(setq F(strcat“=“F))
(命令“TEXT”“S”“STANDARD”“f”P5 p6“275”D“TEXT”“e
 
“文本”“”f
 
) ; End命令
) ;; 结束程序
(princ“>”);;否则未选择任何点。
) ;; 如果结束
;; 重置系统变量:
 
(setvar“cmdecho”oldCM)
(setvar“osmode”oldos)
(普林斯);;干净地退出
) ;; 结束defun

Lee Mac 发表于 2022-7-6 13:44:32

这是一个单独的问题吗?

Shibuboss 发表于 2022-7-6 13:56:37

您好,先生,
 
是的,这是一个单独的问题。请告知。非常感谢。
 
石埠

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

 
我不确定,但有一个新问题,请先搜索主题,然后,如果没有找到,在相关论坛中创建一个新的线程。
 
我相信版主会帮你转移你的离题帖子。
页: [1]
查看完整版本: 我的第一个lisp程序(Plz chk