AUTOLISP编程输出问题

(defunC:M1()(setqa(getreal"A")b(getreal"B")w(+AB)X(*ab))(printx)(printw))源程序如下。按理说输出应... (defun C:M1( )
(setq a (getreal "A")
b (getreal "B")
w (+ A B)
X (* a b)
)
(print x)
(print w)
)
源程序如下。按理说输出应该只是X和W,但是为什么实际输出的结果是
x
w
w
这样子。求高手解答下。。。
顺便问下比如我调用形式是DEFUN MM(X)
我调用的时候该这么输入?比如MM(3)这样就是无效的
展开
 我来答
朱06CAD
推荐于2016-10-20 · 知道合伙人软件行家
朱06CAD
知道合伙人软件行家
采纳数:4172 获赞数:18068
高中,熟悉AutoCAD。会autolisp及VBA程序。

向TA提问 私信TA
展开全部

书写要完整才可以修改一下:

(defun C:M1( / %k1 %k2 %k3 %k4);要使代码不影响其它的程序,这个上面要写代码这个格式
 (setvar "cmdecho" 0)
 (setvar "blipmode" 0);加上这两句话,命令行不会出现你不希望的数值
 (setq %k1 (getreal "\n请输入实数"));输入数值
 (if (/= %k1 nil);如果第一个有输入那么第二个也要求输入
  (setq %k2 (getreal "\n请数入实数"))
 )
 (if (/= %k2 nil);如果输入了两个数字那么就进行下面的计算
  (progn
   (setq %k3 (+ %k1 %k2))
   (princ %k3)
   (setq %k4 (* %k1 %k2))
   (princ %k4)
  )
 )
 (princ);命令结束的时候,要这句话,或(prin1)这样结束
)
;(defun MM (#k / );子函数要这个格式空格不可以少了。如果要消除子函数里面的代码影响,要这样格式:(defun MM (#k / #k %k1);这样里面的%k1就不会影响其它的程序了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式