我做错了什么????
这是一个基本的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)
)
尝试
(*Ic 0.8….)
我刚刚收到“未知命令”
以上红色是您的一些其他问题。也许从下面的代码开始,向其中添加所需的initget函数。您需要自行决定如何以正确的方式执行circle命令。
(defun c:isoc (/ ic sd)
(setq ic (getint "\nEnter Length "))
(setq sd (* ic 0.816496581))
(command "circle" (getpoint "\nCenter: ") sd)
(princ)
)
“我在这里做错了什么?”
我认为反过来更容易回答。。。
[列表]
[*]字符串中的引号数量不正确。
[*]您的COND语句缺少很多括号
[*]COND语句中的第二个条件有一个“setq”,没有值参数。
[*]您的Getvar语句不正确。
[*]你的乘法错了。
[/列表] 更好更快的建议 以下是强调的错误:
(defun c:isoc (/ ic sd)
(initget 6)
(cond
(setq ic (strcat "\nEnter Length ""))
(setq ic)
)
(setq sd (ic * .816496581))
(command "circle" getvar(sd))
(princ)
)
这更好:
(defun c:isoc (/ ic)
(initget 6)
(if (setq ic (getdist "\nEnter Length: "))
(command "_.circle" pause (* ic 0.816496581)))
(princ))
(defun c:isoc (/ ic sd)
(setq ic (getint "\nEnter Length "))
(setq sd (* ic 0.816496581))
(command "circle" (getpoint "\nCenter: ") sd)
(princ)
)
这很有效。我真的知道如何把事情复杂化,我想:?
唯一的问题是我不能在长度中输入小数点。它要求一个整数。我忘了怎么修了。
使用李的代码。它更加优雅,并允许非整数。或者在我给你的内容中把“getint”改为“getdist”。
页:
[1]
2