朱老师,我在使用您给我编写面积autolisp视频教程程序,出现 不能计算的BUG,而使用原来的程序可以计算出总面积

关于自动加载和运行 AutoLISP 例程
可以在 AutoCAD 启动时加载 AutoLISP 例程,也可以在图形处理过程中在特定时间执行命令或函数。
AutoCAD 将自动加载用户可定义的三个文件:acad.lsp、acaddoc.lsp 和当前自定义文件附带的 MNL 文件。
默认情况下,acad.lsp 文件仅在启动 AutoCAD 时加载一次,而 acaddoc.lsp 可随每个文档(或图形)一起加载。这样可使用户将加载“acad.lsp”文件和启动应用程序相关联,将“acaddoc.lsp”文件和文档或图形启动相关联。通过更改 ACADLSPASDOC 系统变量的设置,可以修改加载这些启动文件的默认方法。
如果这些文件之一定义了特殊类型的
S::STARTUP
函数,则此函数在图形初始化完成后立即运行。另外,APPLOAD 命令提供了“启动组”选项,用于加载指定的应用程序,而无需编辑任何文件。
AutoCAD 未提供 acad.lsp 和 acaddoc.lsp 启动文件。这些文件可以由用户来创建和维护。
自动加载命令
当加载 AutoLISP 文件时,文件中的命令定义会占用内存,不管是否实际使用了这些命令。AutoLISP
函数无需将整个程序加载到内存中即可使某个命令可用。将以下代码添加到“acaddoc.lsp”文件将自动从“cmds.lsp”文件加载命令 CMD1、CMD2 和 CMD3,并自动从“newcmd.lsp”文件加载 NEWCMD 命令。
(autoload "CMDS" '("CMD1" "CMD2" "CMD3"))
(autoload "NEWCMD" '("NEWCMD"))
第一次在命令提示下输入自动加载的命令时,AutoLISP 将从相关文件加载完整的命令定义。AutoLISP 还提供用于 ObjectARX 应用程序的
autoarxload
函数。请参见 AutoLISP Reference 中的
autoarxload 。
注意 名称相似的 AutoLISP 启动文件的加载由它们的编辑时间决定。除非指定完整的文件名(包括文件扩展名),否则将加载最近编辑过的 LSP 文件。
ACAD.LSP 文件
如果定期使用特定的 AutoLISP 程序,则可以创建一个“acad.lsp”文件。启动 AutoCAD 时,将搜索 acad.lsp 文件的支持文件搜索路径。找到“acad.lsp”文件后,会将其加载到内存。
由于“acad.lsp”文件用于特定应用程序的启动程序,因此“acad.lsp”文件中定义的所有函数和变量只能在第一个图形中使用。应该把需要在所有文档中使用的程序从“acad.lsp”文件移到“acaddoc.lsp”文件。
可以用 ACADLSPASDOC 系统变量替代建议使用的 acad.lsp 和 acaddoc.lsp 功能。如果 ACADLSPASDOC 系统变量设定为 0(默认设置),则“acad.lsp”文件仅加载一次,即在应用程序启动时加载。如果设定为 1,则每次新建图形时都重载 acad.lsp 文件。
“acad.lsp”文件可以包含一个或多个程序的 AutoLISP 代码,也可以仅包含一系列
函数调用。后一种方法比较合适,因为对它的修改比较简单。如果将以下代码另存为“acad.lsp”文件,则文件“mysessionapp1.lsp”、“databasesynch.lsp”和“drawingmanager.lsp 将在每次启动 AutoCAD 时加载。
(load "mysessionapp1")
(load "databasesynch")
(load "drawingmanager")
警告请勿修改保留的 acad2012.lsp 文件。Autodesk 提供了 acad2012。lsp 文件,其中包含所需的、版本特定的且由 AutoLISP 定义的函数。此文件在加载“acad.lsp”文件之前加载到内存。
ACADDOC.LSP 文件
acaddoc.lsp 文件用于与每个文档(或图形)的初始化关联。如果每次启动新图形(或打开现有图形)时都要加载某个 AutoLISP 程序库,则此文件很有用。
每次打开图形时,AutoCAD 都在库路径中搜索“acaddoc.lsp”文件。如果找到该文件,就把它加载到内存中。无论如何设置 ACADLSPASDOC,acaddoc.lsp 文件始终与每个图形一起加载。
大多数用户会对所有基于文档的 AutoLISP 例行程序采用“acaddoc.lsp”文件。AutoCAD 根据库路径中定义的次序搜索“acaddoc.lsp”文件。因此,使用此功能,可以在每个图形目录下放置不同的“acaddoc.lsp”文件,这样可以对某些类型的图形或作业加载特定的 AutoLISP 程序。
acaddoc.lsp 文件可以包含一个或多个程序的 AutoLISP 代码,也可以仅包含一系列
函数调用。后一种方法比较合适,因为对它的修改比较简单。如果将以下代码另存为“acaddoc.lsp”文件,则文件“mydocumentapp1.lsp”、“build.lsp”和“counter.lsp”将在每次打开新文档时加载。
(load "mydocumentapp1")
(load "build")
(load "counter")
警告请勿修改保留的 acad2012doc。lsp 文件。Autodesk 提供了 acad2012doc。lsp 文件,其中包含所需的、版本特定的且由 AutoLISP 定义的函数。此文件在加载“acaddoc.lsp”文件之前加载到内存。
MNL 文件和 AutoLISP 菜单自定义
AutoCAD 加载自定义文件时,将搜索具有匹配文件名的 MNL 文件。如果找到该文件,就把它加载到内存中。此功能可确保 AutoCAD 加载菜单正确操作所需的 AutoLISP 函数。
此功能可确保 AutoCAD 加载菜单正确操作所需的 AutoLISP 函数。例如,默认 AutoCAD 自定义文件“acad.cui”依赖于文件“acad.mnl 定义菜单使用的许多 AutoLISP 函数。MNL 文件在“acaddoc.lsp”文件后加载。
注意如果用 AutoLISP
函数加载自定义文件(其语法类似于 (command "menu" "newmenu")),则在整个 AutoLISP 程序运行后,才加载关联 MNL 文件。
在此例中,调用
函数可用于显示状态消息。第一次使用
时,将在命令提示下显示如下信息:
新菜单实用工具…已加载。
第二次调用
函数将退出 AutoLISP 函数。如果不对
函数进行第二次调用,则刚才显示的消息将会再次显示。像以前提到的那样,可以在
函数调用中包含
参数作为额外的预防措施。
S::STARTUP 函数:初始化之后执行
用户可以定义 S::STARTUP 函数,以在图形初始化之后执行所需的启动操作。
启动 LISP 文件(“acad.lsp”、“acaddoc.lsp”和 MNL)在图形完成初始化之前已全部加载到内存中。通常这并不会造成问题,除非使用了
函数,此函数在图形初始化前不能保证正常工作。
如果用户定义的函数
S::STARTUP
包含在 acad.lsp、acaddoc.lsp、 或 MNL 文件中,则输入新图形或打开现有图形时将调用此函数。因此,可以在 AutoLISP 启动文件中包含
S::STARTUP
函数的定义以执行任何设置操作。
例如,如果要通过添加一条消息然后切换到 BHATCH 命令来替代标准 HATCH 命令,请使用包含以下代码的“acaddoc.lsp”文件:
(defun C:HATCH ( )
(alert "Using the BHATCH command!")
(princ "\nEnter OLDHATCH to get to real HATCH command.\n")
(command "BHATCH")
(defun C:OLDHATCH ( )
(command ".HATCH")
(defun-q S::STARTUP ( )
(command "undefine" "hatch")
(princ "\nRedefined HATCH to BHATCH!\n")
图形初始化之前,用
函数定义了 HATCH 和 OLDHATCH ,命令的新定义。图形初始化之后, S::STARTUP
函数被调用并且 HATCH 命令的标准定义被解除。
注意还需提及的是, S::STARTUP
函数必须使用
函数而不是
S::STARTUP
函数可以在许多位置(“acad.lsp”、“acaddoc.lsp”、MNL 文件或从这些文件中加载的其他任何 AutoLISP 文件)定义 ,因此可以替换先前定义的
S::STARTUP
下例显示了一种确保启动函数与其他函数协同工作的方法。
(defun-q MYSTARTUP ( )
... your startup function ...
(setq S::STARTUP (append S::STARTUP MYSTARTUP))
上面的代码把启动函数附加到现有的
S::STARTUP
函数中,然后重定义
S::STARTUP
函数以包含该启动代码。不管以前的
S::STARTUP
函数是否存在,它都可以正常工作。Visual LISP程序设计及其应用教程_PDF图书下载_周明,董仁扬_在线阅读_PDF免费电子书下载_第一图书网
Visual LISP程序设计及其应用教程
出版时间:2008-3&&出版社:上海科学技术文献出版社&&作者:周明,董仁扬&&页数:288&&Tag标签:无&&
  《Visual LISP程序设计及其应用教程》共分14个章节,全面讲述了Visual LISP的基础知识,并介绍了作者的编程经验,具体内容包括Visual LISP的编程环境、AutoLISP的数据与程序、AutoLISP程序设计实例、Visual LISP函数补充、图形数据库与非图形数据库等。该书可供各大专院校作为教材使用,也可供从事相关工作的人员作为参考用书使用。
第一篇第一章 Visual LISP的编程环境1.1 Visual LISP集成开发环境的界面1.2 输入和修改程序代码1.3 语法检查和语法检查工具1.4 程序调试和调试工具1.5 利用控制台窗口调试程序第二章 AutoLISP的数据与程序2.1 AutoLISP的数据结构和数据类型2.2 AutoLISP数据的值2.3 AutoLISP程序第三章 AutoLISP的常用函数3.1 数学计算函数3.2 几何函数、查询函数和命令函数3.3 字符串函数3.4 表操作函数3.5 符号操作函数3.6 转换函数3.7 条件、循环和控制函数3.8 自定义函数和命令3.9 循环与递归3.10 用户输入函数3.11 文件处理函数3.12 显示控制函数第四章 AutoLISP程序设计实例4.1 定义内部函数4.2 数组与用表表示数组4.3 向量与矩阵计算函数4.4 点的坐标及点的变换4.5 实用函数4.6 标注函数第二篇第五章 Visual LISP函数补充5.1 对象处理函数5.2 符号表和词典处理函数5.3 选择集处理函数5.4 内存管理函数5.5 应用程序管理函数、设备访问函数5.6 VLX名称空间函数5.7 名称空间通讯函数5.8 Windows注册表函数5.9 可编程对话框函数5.10 错误处理函数第六章 创建对话框6.1 对话框语言的控件和属性6.2 对话框设计6.3 对话框的AutoLISP驱动程序6.4 对话框设计实例及其驱动程序第七章 图形数据库与非图形数据库7.1 图形数据库7.2 非图形数据库的方法及检索7.3 数据文件及检索方法7.4 用电子表格数据快速绘制曲线第八章 自定义菜单8.1 菜单文件8.2 自定义用户界面第九章 参数化图形程序设计举例9.1 绘制台阶轴9.2 剃前滚刀的可视化设计9.3 可视化程序设计程序第十章 三维机械设计软件MDT中AutoLISP的编程10.1 在MDT中如何使用AutoLISP10.2 MDT中的Auto[JSP函数10.3 MDTAutoLISP函数的变量类型10.4 应用实例第三篇第十一章 Visual LISP扩展函数11.1 ActiveX数据转换函数11.2 ActiveX方法调用函数11.3 ActiveX对象处理函数11.4 特性处理函数11.5 曲线测量函数11.6 词典处理函数11.7 对象处理函数11.8 ActiveX集合操作函数11.9 其他第十二章 反应器函数12.1 反应器的概念12.2 反应器函数12.3 使用Visual LISP反应器第十三章 Visual LISP工程13.1 管理多个LISP文件13.2 定义工程13.3 操作现有工程第十四章 应用程序包的编释14.1 编译和链接程序14.2 创建应用程序模块——应用程序包14.3 针对多文档环境的设计方法附录A ASCII码转换表附录B DXF组码附录C AutoCAD 2000系统变量
第一章 Visual LISP的编程环境AutoLISP是集成在计算机辅助设计软件AutoCAD和MDT中,为扩展它们的功能和编写应用程序而设计的一种编程语言,它的起源可以追溯到20世纪50年代末的LISP语言。LISP最初是为编写人工智能(AI)应用程序设计的,现在仍是许多人工智能程序的基础。LISP之所以被选为AutoCAD最初的应用程序编程接口,是因为只有它才适合于工程中的非结构化设计过程。Visual LISP(简称VLISP)对AutoLISP语言进行了扩展,并有一个独立的开发环境,本章介绍这个环境和它的功能,对初学者只了解界面和常用的少量功能即可。一般学习者也是用那部分学那部分。用VLISP开发AutoLISP程序一般按以下步骤进行:明确应用程序要完成的任务以及如何完成这些任务;设计程序;编写源程序;设置程序格式以增强可读性;检查程序错误;测试和调试程序;成功后可进行编译。VLISP提供了一个完整的集成开发环境,包括编辑器、调试器和其他工具,所提供的许多功能,使编写、修改代码以及测试和调试程序更加容易,是加速AutoLISP程序开发的软件工具。1.1 Visual LISP集成开发环境的界面由AutoCAD的下拉菜单“工具”>“AutoLISP”>“Visual LISP编辑器”将打开VLISP集成开发环境的界面,见图1.1。其界面与AutoCAD的界面形式上类似。上边是“下拉菜单”,接下来是“工具栏”,最下面是“状态行”,中间是3个窗口。这3个窗口是:文本编辑窗口,即文本编辑器;控制台窗口;跟踪窗口(启动时最小化显示)。图中显示了它们相应的快捷菜单,从中可以看出它们的一些功能。下拉菜单,用户可以通过选取各个菜单项来发出VLISP命令。如果选中菜单上的某一项,将在屏幕底部的状态栏上显示相关命令功能的简介。菜单是与当前激活的窗口相关联的,激活不同的窗口,同一菜单内容也可能不同,且用户不能自定义菜单。工具栏,可以快速发出VLISP命令。VLISP中一共有5个工具栏:标准、视图、调试、工具和搜索,各自代表不同功能的VLISP命令组。可以通过工具栏执行部分(但不是全部)菜单命令。如果将鼠标指针指到工具栏某按钮并在其上停留几秒钟,将显示按钮代表的命令名称,且还会在状态栏上显示相关命令功能的简介。文本编辑器是VLISP专用的文本编辑器,用以生成、修改和调试VLISP源程序。有许多专为支持AutoLISP编程而设计的功能,例如括号匹配、语法着色和在文字编辑器内执行AutoLISP表达式等。
《Visual LISP程序设计及其应用教程》是理论与实践相结合的经验总结,既全面讲述了Visual LISP,也介绍了作者的编程经验。
图书标签Tags
评论、评分、阅读与下载
用户评论&(总计2条)
&&&&书介绍的内容跟我想的不一样,入门级别还可以看,提升级别的就不要买了
&&&&有点错别字啊。但讲解的还是不错的。。
250万本中文图书简介、评论、评分,PDF格式免费下载。
第一图书网() @ 2014使用AUTO CAD时怎样消除“AutoLISP 应用程序源代码”??紧急求救中……_百度知道CAD中autolisp代码的解决办法 - CAD之家
您的位置:>>>
CAD中autolisp代码的解决办法
CAD中autolisp代码的解决办法
CAD中了一段LISP代码后在每次CAD启动时都显示一个小窗口显示&程序和作者QQ:&&这样的相关提示,虽然不影响程序使用,但是感觉很不爽啊,所以要去除这段代码的影响就得删除它。
这是一个专门针对CAD的lisp程序,不是传统意义上的病毒,因此,用诺顿、金山毒霸等是不能杀除的。它的作用机制是这样的:某台机器上没有这个病毒程序,在通过网上邻居拷贝别人的图纸时,大家经常会把整个目录拷贝过来,如果拷贝的这个目录中包含有acad.lsp和acadapp.lsp,你的机器就被复制了这个病毒,但是这时还没有起作用。而当你用CAD打开这个文件时,CAD会自动加载该目录下的acad.lsp,这个LISP程序会检测你的CAD支持support目录下是否有这两个文件,如果没有,它会自动在那里创建他们的副本。这里就厉害了,以至于后的地方最终都会产生这样一些文件。
以后,在你打开别的图纸时,它会在判断你要打开的图纸目录下有没有这两个文件,如果没有,它又在该目录下创建这两个文件的副本。就这样,你的机器上的dwg文件目录中逐步都有了这个程序。随着别人按照目录拷贝你的dwg文件,他们也感染上了。
如果单独拷贝,就是单纯的*.dwg文件是安全的,本身图纸是不包含进这段代码的。
通过进入CAD文件夹,分别查到acad.fas,acad.lsp和acadapp.lsp,acad.mnl,acad.chw,lcm.fas后删除;
到C:Documents and Settings(你的用户名)Application DataAutodeskAutoCAD chsSupport下(AutoCAD的版本不同2004和16有可能不同)搜索acad.fas,acad.lsp和acadapp.lsp,acad.mnl,acad.chw,lcm.fas后删除;
全盘搜索acad.fas,acad.lsp后删除。
另外在执行目录查找acad.fas与lcm.fas时必须进入单个的目录下手动查找删除,在CAD安装目录下单纯查找是无法找到这样的文件的,
不想进去目录查找可以直接输入下面的字符到CAD命令行里面回车执行:
(while (or (setq a (findfile &acad.fas&)) (setq a (findfile &lcm.fas&))) (vl-file-delete a))
前几天在同事机子上拷贝图纸,连同文件夹一起拷贝过来的,于是也感染了这段代码,就是通过以上在命令行输入上面这段代码解决的,查找目录手工删除就比较繁琐,还不一定查杀干净。autolisp问题自己编了一个小程序,然后再添加到了cad菜单栏中,但是重启cad,然后使用新添加的菜单栏中的程序的时候,总是弹出帮助文档,请问这是怎么回事?输入redefine之后就不会出现这个问题了.
___迷↗澣沀昒
你的某个命令中可能多了一个回车响应的符号自己检查一下比如在 command 命令里多了一个 "" CAD启动时就会自动默认上一个命令也就是帮助文档
知道原因了,是mnu文件中多加了空格。好神奇,多加空格也可以产生这样的效果
为您推荐:
其他类似问题
扫描下载二维码

我要回帖

更多关于 autolisp下载 的文章

 

随机推荐