MikeP 发表于 2022-7-6 12:47:57

我做错了什么????

这是一个基本的lisp,它以我输入的原始数字的缩放半径创建一个圆。如果要对等轴测二维对象进行尺寸标注,则会使用该常数im。因为iso图像不能按1:1的比例缩放。我使用此lisp正确绘制等轴测对象。
 
 
(defun c:isoc (/ ic sd)

(initget 6)
(cond
    (setq ic (strcat "\nEnter Length ""))
   (setq ic)
)
(setq sd (ic * .816496581))
   
(command "circle" getvar(sd))
(princ)
)




dbroada 发表于 2022-7-6 12:56:31

尝试
 
(*Ic 0.8….)

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

 
 
我刚刚收到“未知命令”

architecture68- 发表于 2022-7-6 13:04:43

 
以上红色是您的一些其他问题。也许从下面的代码开始,向其中添加所需的initget函数。您需要自行决定如何以正确的方式执行circle命令。
 

(defun c:isoc (/ ic sd)
(setq ic (getint "\nEnter Length "))
(setq sd (* ic 0.816496581))
   
(command "circle" (getpoint "\nCenter: ") sd)
(princ)
)

Lee Mac 发表于 2022-7-6 13:07:36

“我在这里做错了什么?”
 
我认为反过来更容易回答。。。
[列表]
[*]字符串中的引号数量不正确。
[*]您的COND语句缺少很多括号
[*]COND语句中的第二个条件有一个“setq”,没有值参数。
[*]您的Getvar语句不正确。
[*]你的乘法错了。
[/列表]

dbroada 发表于 2022-7-6 13:13:37

更好更快的建议

Lee Mac 发表于 2022-7-6 13:14:17

以下是强调的错误:
 

(defun c:isoc (/ ic sd)

(initget 6)
(cond
    (setq ic (strcat "\nEnter Length ""))
   (setq ic)
)
(setq sd (ic * .816496581))
   
(command "circle" getvar(sd))
(princ)
)

Lee Mac 发表于 2022-7-6 13:20:57

这更好:
 

(defun c:isoc (/ ic)

(initget 6)
(if (setq ic (getdist "\nEnter Length: "))
   (command "_.circle" pause (* ic 0.816496581)))

(princ))

MikeP 发表于 2022-7-6 13:24:40


(defun c:isoc (/ ic sd)
(setq ic (getint "\nEnter Length "))
(setq sd (* ic 0.816496581))
   
(command "circle" (getpoint "\nCenter: ") sd)
(princ)
)

 
 
这很有效。我真的知道如何把事情复杂化,我想:?
 
唯一的问题是我不能在长度中输入小数点。它要求一个整数。我忘了怎么修了。

architecture68- 发表于 2022-7-6 13:27:11

 
使用李的代码。它更加优雅,并允许非整数。或者在我给你的内容中把“getint”改为“getdist”。
页: [1] 2
查看完整版本: 我做错了什么????