乐筑天下

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

[编程交流] 请教育我。

[复制链接]

13

主题

126

帖子

114

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 12:52:06 | 显示全部楼层 |阅读模式
我正在通过修改李不久前为我写的一些代码来学习LISP。有人能给我解释一下下面两段代码之间的区别吗?
 
  1. (setq bname (getfiled "select block to insert" "" "dwg" )
  2. (if (setq file
  3.             (getfiled "Select Text File" (if *load *load "") "txt" )
  4.    (progn .......

 
  1.   
  2. (setq bname (getfiled "select block to insert" "" "dwg" 0))
  3. (if (setq file
  4.             (getfiled "Select Text File" "" "txt" 0))
  5.    (progn .......

 
李的代码是第一个,我已经修改为第二个。在选择输入文件后,我遇到了“文件为零”的问题,我认为我跟踪到了位字段-8只发送文件名,0发送完整路径。(if*load*load“”)语句做什么?为什么要使用它,而不是它下面明显更简单的版本?
 
根据VLISP帮助文件:
 
我不确定为什么要使用表达式来指定默认文件名?
 
谢谢你给我的指导。
 
格伦
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:03:51 | 显示全部楼层
我使用*load作为全局变量,并在选择文件后存储新的文件路径,因此它将此作为下一个默认值。
 
至于位代码,8将只返回文件名(如果文件位于搜索路径中),但您可以使用“findfile”获取整个路径。
 
如果没有,您可以使用128获得整个路径。
 
请记住,位0用于创建新文件。
回复

使用道具 举报

13

主题

126

帖子

114

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 13:13:46 | 显示全部楼层
啊-这很有道理,我没有想过它是一个全局变量。
 
据我所知,位0用于创建一个新文件,但仅当它被设置时。因此,创建一个新文件将是1而不是0,对吗?
 
谢谢,我真的很感谢有一个地方,我可以问问题,而不是仅仅依靠帮助文件和试错。
 
格伦
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:20:18 | 显示全部楼层
嗯,现在你让我思考了。
 
在帮助文件中,它说使用0到15之间的整数作为标志,但是我只使用过位值:1、4、8、16等等。
 
但这就提出了一个问题,如果两者都可以使用,AutoCAD如何知道您想要的是位代码8还是(3+5)?
 
回复

使用道具 举报

13

主题

126

帖子

114

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 13:28:07 | 显示全部楼层
根据帮助文件,不使用位1(二进制值2),但无论如何,任何给定值都会在该位编码字段中设置一组唯一的位。3不是一个单一的标志值,而是两个不同的标志都设置了:位0(小数点1)和位1(小数点2)都设置并相加得到小数点3。(在这种情况下无效,因为未使用位1)
同样,5将是位2(十进制4)添加到位0(十进制1)的集合。
 
8只能设置为位3。
 
我花了一段时间才了解位编码字段,但一旦通过了二进制到十进制到二进制的转换,就可以用一个数字设置多个选项。
 
格伦
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:37:20 | 显示全部楼层
哦,别误会,我知道二进制加法是如何工作的,但我认为可以使用位值而不是二进制值,反之亦然。
回复

使用道具 举报

13

主题

126

帖子

114

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 13:45:44 | 显示全部楼层
我想你知道它是怎么工作的,只是想确保其他人读到它时不会感到困惑。
 
另一个问题,是*使这个变量成为全局变量吗?15年前,我不得不(两次)上一门1学分的C课程,这门课程一直留在我的脑海里,它告诉我这是一个指针,而不是一个变量,但我猜想LISP不使用指针。
 
在“*”上搜索是徒劳的。
 
格伦
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:58:18 | 显示全部楼层
啊,抱歉搞砸了。
 
全局变量可以是函数定义中未本地化的任何符号(语法旁边的两个括号)。
 
我只是使用了更模糊的符号,例如“*load”或“$load”,这样它们就不太可能与其他程序使用的变量冲突。
 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 03:00 , Processed in 1.166951 second(s), 79 queries .

© 2020-2025 乐筑天下

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