Tharwat 发表于 2022-7-6 10:45:40

Lisp代码问题

你好
 
为什么有Lisp函数在特定的Autocad版本中工作,而在其他版本中不工作?????
 
当做
 
塔瓦特

The Buzzard 发表于 2022-7-6 10:50:03

 
这是因为在较新版本的AutoCAD中,添加了旧版本中没有的新命令、子命令和系统变量。这就是为什么使用entmake比使用命令调用更好。另一个例子是Purge命令,其子命令REGAPP不在旧版本中。在为各种版本制作程序时,尝试仔细研究有时并不容易。

alanjt 发表于 2022-7-6 10:53:08

我认为Fillet是选项改变的另一个例子。
在确实使用命令的情况下,最好始终考虑语言和重新定义/未定义的命令,并始终拼写出整个选项。
 
如。
(command "_.fillet" "_radius" 3.)

BIGAL 发表于 2022-7-6 10:57:00

你是只为Autocad写的吗?Intellicad有一些问题,它不像我做的那样,有些事情不得不非常微妙地更改代码。mac上的lisp也一样,真的很旧。

The Buzzard 发表于 2022-7-6 10:59:05

 
 
你可以这样做:
(setvar "filletrad" 3.0)
(command "._fillet" pause)
 
以下是我的意思示例:
 
AutoCAD 2004

Command: -purge
Enter type of unused objects to purge
:

 
 
AutoCAD 2009

Command: -purge
Enter type of unused objects to purge
[blocks/Dimstyles/LAyers/LTypes/MAterials/MUltileaderstyles/Plotstyles/SHapes/
textSTyles/Mlinestyles/Tablestyles/Visualstyles/Regapps/All]:

 
查看可用选项中的差异。AutoCAD 2009具有材质、多重引线样式、表格样式、视觉样式和Regapps,而AutoCAD 2004没有。
 
当我编写代码时,指出代码测试的版本是值得的,并且指出它可能在以前或将来的版本上工作,也可能不工作,以保护自己免受禁运。在某些情况下,一个命令或变量可能在未来的版本中过时,或者一个新的命令或变量在早期版本中不可用。
 
对于它,您可以做的不多,但在实现代码之前尽可能多地尝试和研究是值得的。如果不确定,请在代码头中使用上述语句。我有上面提到的两个版本,这可能还不包括我。

hunszab 发表于 2022-7-6 11:04:03

大家好!
 
这是我的问题:
我想写一个lisp程序,自动加载菜单文件(mns)并运行2个宏。
谁能帮帮我吗!
 
谢谢你的回答!
顺致敬意,

Tharwat 发表于 2022-7-6 11:07:26

 
你最好从论坛中的新帖子开始,这样会给所有成员机会阅读你的请求,并能更好地帮助你。
 
欢迎来到CadTutor
 
塔瓦特

Tharwat 发表于 2022-7-6 11:09:42

你好
 
除了旧Cad版本命令行为外,我如何跟踪Cad版本中系统变量的变化?
 
那么,我如何保证我将要编写的代码将按其应有的方式运行呢?
 
顺致敬意,
 
塔瓦特

manirpg 发表于 2022-7-6 11:13:40

嗨,Hunszab,
欢迎来到我们的论坛。。。。。。。。。
这很容易。。。。只要你找到你的mns文件,把你的lisp。。
对于宏,你可以创建工具栏按钮并保存在那里。。。。。。
现在lisp和宏总是自动工作。。。。。。。。。
 
查找mns文件路径。。。。。。。。。。步骤
选项
文件
搜索文件路径
(见此处)
 
当做
马尼

hunszab 发表于 2022-7-6 11:17:10

你好
谢谢你的回答。
但我仍然有问题,因为:我知道如何加载menufile和lisp文件,但必须使用菜单和加载菜单的用户不知道
这就是为什么我需要知道如何以编程方式修改支持文件路径,以及如何运行宏。因为如果用户选项是这样的:宏脱盐,宏不会自动运行
 
我已经准备好打开一个新主题:菜单和宏
 
谢谢你的回答!
 
页: [1] 2
查看完整版本: Lisp代码问题