乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 9|回复: 7

[编程交流] 这个代码有什么问题?

[复制链接]

9

主题

27

帖子

18

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 06:52:07 | 显示全部楼层 |阅读模式
(defun C:最热()
(Princ“定义区域:”)
(命令“区域”)
 
(while(=1(getvar“cmdactive”))
(命令暂停)
)
(setq A(getvar“区域”))
(原理A)
 
)
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:05:44 | 显示全部楼层
首先,请阅读代码发布指南,了解如何在帖子中设置代码格式的说明,并根据需要编辑帖子。
 
我在你的代码中没有看到任何会导致错误的东西,但是,有可能是你无意中将暂停符号重新定义为“\\”以外的其他符号,并且你也没有将符号a声明为局部变量(有关变量本地化的更多信息,请参阅我的教程)。
 
下面是编写代码的另一种方法:
  1. (defun c:heatest ( )
  2.    (command "_.area")
  3.    (while (< 0 (getvar 'cmdactive))
  4.        (command "\")
  5.    )
  6.    (princ (getvar 'area))
  7.    (princ)
  8. )
回复

使用道具 举报

9

主题

27

帖子

18

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 07:17:01 | 显示全部楼层
  1. (defun c:heatest (/ a)
  2.    (command "_.area")
  3.    (while (< 0 (getvar 'cmdactive))
  4.        (command "\")
  5.    )
  6.    (princ "Area:" (getvar 'area))
  7. )

 
 
我刚刚复制/粘贴了上面的代码,在princ后面添加了一个字符串。
 
我得到这个错误:;错误:错误的参数类型:文件
 
我真的不知道怎么了。
回复

使用道具 举报

9

主题

27

帖子

18

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 07:25:47 | 显示全部楼层
  1. (defun c:heatest (/a)
  2.   (setq a 10)
  3. (princ a)
  4. )

 
如果前一个很难,读这一个。。。我也有同样的错误。。。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 07:26:54 | 显示全部楼层
系统变量区域存储为实数。
 
你可以:
 
(prin1。。。

(普林斯(rtos。。。
 
-大卫
回复

使用道具 举报

9

主题

27

帖子

18

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 07:39:30 | 显示全部楼层
那么这有什么错呢
 
  1. (defun c:heatest ()
  2.   (setq a 10 b 20)
  3. (princ (a b))
  4. (princ)
  5. )
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 07:44:28 | 显示全部楼层
伙计,你读过列表函数吗?
我很想知道
我推荐你从这里开始
www.afralisp。网
尝试
  1. (setq a 10 b 20)
  2. (princ (list a b))
  3. (terpri)
  4. (print (list a b))
  5. (terpri)
  6. (princ (vl-princ-to-string (list a b)))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:59:51 | 显示全部楼层
 
这是错误的来源:
 
 
出于某种原因,您还取消了对普林斯的最后通话。
 
princ函数接受两个可选参数:要打印到命令行或文件的字符串和文件描述符(如果打印到文件)。
 
您提供了字符串“Area:”作为第一个参数,(getvar'Area)作为第二个参数。然而,(getvar’area)并不像princ对第二个参数所期望的那样是一个文件描述符,因此出现了错误。
 
要打印字符串“Area:”,后跟(getvar’Area)的值,您需要使用rtos函数将面积值转换为字符串,然后使用strcat连接两个字符串;或使用单独的princ表达式打印面积值:
 
  1. (defun c:heatest ( / a )
  2.    (command "_.area")
  3.    (while (< 0 (getvar 'cmdactive))
  4.        (command "\")
  5.    )
  6.    (princ (strcat "Area:" (rtos (getvar 'area))))
  7.    (princ)
  8. )

至于您的其他帖子,我建议您先阅读AutoLISP文档,并访问几个AutoLISP教程站点,以确定错误的原因。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-10 15:10 , Processed in 0.493206 second(s), 68 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表