这个代码有什么问题?
(defun C:最热()(Princ“定义区域:”)
(命令“区域”)
(while(=1(getvar“cmdactive”))
(命令暂停)
)
(setq A(getvar“区域”))
(原理A)
) 首先,请阅读代码发布指南,了解如何在帖子中设置代码格式的说明,并根据需要编辑帖子。
我在你的代码中没有看到任何会导致错误的东西,但是,有可能是你无意中将暂停符号重新定义为“\\”以外的其他符号,并且你也没有将符号a声明为局部变量(有关变量本地化的更多信息,请参阅我的教程)。
下面是编写代码的另一种方法:
(defun c:heatest ( )
(command "_.area")
(while (< 0 (getvar 'cmdactive))
(command "\\")
)
(princ (getvar 'area))
(princ)
) (defun c:heatest (/ a)
(command "_.area")
(while (< 0 (getvar 'cmdactive))
(command "\\")
)
(princ "Area:" (getvar 'area))
)
我刚刚复制/粘贴了上面的代码,在princ后面添加了一个字符串。
我得到这个错误:;错误:错误的参数类型:文件
我真的不知道怎么了。 (defun c:heatest (/a)
(setq a 10)
(princ a)
)
如果前一个很难,读这一个。。。我也有同样的错误。。。 系统变量区域存储为实数。
你可以:
(prin1。。。
或
(普林斯(rtos。。。
-大卫 那么这有什么错呢
(defun c:heatest ()
(setq a 10 b 20)
(princ (a b))
(princ)
) 伙计,你读过列表函数吗?
我很想知道
我推荐你从这里开始
www.afralisp。网
尝试
(setq a 10 b 20)
(princ (list a b))
(terpri)
(print (list a b))
(terpri)
(princ (vl-princ-to-string (list a b)))
这是错误的来源:
出于某种原因,您还取消了对普林斯的最后通话。
princ函数接受两个可选参数:要打印到命令行或文件的字符串和文件描述符(如果打印到文件)。
您提供了字符串“Area:”作为第一个参数,(getvar'Area)作为第二个参数。然而,(getvar’area)并不像princ对第二个参数所期望的那样是一个文件描述符,因此出现了错误。
要打印字符串“Area:”,后跟(getvar’Area)的值,您需要使用rtos函数将面积值转换为字符串,然后使用strcat连接两个字符串;或使用单独的princ表达式打印面积值:
(defun c:heatest ( / a )
(command "_.area")
(while (< 0 (getvar 'cmdactive))
(command "\\")
)
(princ (strcat "Area:" (rtos (getvar 'area))))
(princ)
)
至于您的其他帖子,我建议您先阅读AutoLISP文档,并访问几个AutoLISP教程站点,以确定错误的原因。
页:
[1]