乐筑天下

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

[编程交流] 恩德尔问题

[复制链接]

0

主题

269

帖子

279

银币

限制会员

铜币
-4
发表于 2022-7-6 15:55:08 | 显示全部楼层
语法错误是在“if”之后有3个选项,我想你的意思是只有一个,所以用“progn”将3个“commands”括起来
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:59:28 | 显示全部楼层
卡尔是对的——当你取出清除命令时,IF语句中的项数是正确的,但最后一项不会被计算,因为它是“else do this”项——如果你明白我的意思的话。
 
有关Progn的更多信息,请参阅此处:
 
http://www.cadtutor.net/forum/showpost.php?p=173196&postcount=10
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 16:04:42 | 显示全部楼层
我明白了,您必须将所有“if”操作与(progn)分组。
 
这是最终的工作版本。
 
  1. (defun c:bfix ( / bd)
  2. (if (setq BD (ssget "X" '((2 . "AIA_D1-L000"))))
  3.    (progn
  4.         (command "._erase" bd "")
  5.         (command "._purge" "b" "" "n")  
  6.         (command "._xref" "a" "X:\\path\\AIA_D1-L000.dwg" "0,0,0" "" "" "")
  7.    )  
  8. )
  9. (princ)
  10. )

 
谢谢大家的帮助。试图从书本和互联网上学习这一点几乎是不可能的。
 
我将努力永远使用我新发现的力量。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:07:36 | 显示全部楼层
不错,丹,
 
请记住,progn将代码包装为一条语句,以便对其进行计算,因此如果您只有三条语句,即测试表达式、结果表达式和“else”表达式,则不需要progn。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:12:35 | 显示全部楼层
啊,还有一件事我忘了提:
 
您也可以包装“else”表达式:
 
  1. (if   (this is true)
  2.   (progn
  3.      (do this)
  4.      (and this)
  5.      (and this)
  6.   )
  7.   (progn
  8.      (else do this)
  9.      (and this)
  10.      (and this)
  11.    )
  12. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 20:33 , Processed in 0.461461 second(s), 71 queries .

© 2020-2025 乐筑天下

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