|
首页 | 名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
俗话说"熟能生巧",在长期从事AUTOLISP程序设计的实践中,我总结出(当然也参考了其他朋友的经验)了部分编程技巧,仅供大家参考! 1)加载程序之前应先判定文件是否已经被加载 在调用用户自己定义的函数之前,应先将包含该函数的文件调入内存(LOAD "文件")。但假如每次调用前都加载该程序,则会浪费很多时间。因此判别文件是否已经调入内存,则是异常重要的,这种用法在菜单文件十分普遍 …… [RECTAN]( if (not rectan) (load "les2"));(rectan); …… 在文件内同样可以实现同样的检测 2)抑制函数运行后返回nil 在一个Autolisp函数运行结束后,它常会在命令行上返回一个nil,令人遗憾。其实只要我们问在该函数的最后一行加上(PRINC)语句后,即可抑制nil的产生。 当然假如对需要一个结果的函数,则不可采用此法。 3)几个自动执行函数 a)加载自动执行函数 定义 (defun s::startup() …… ) 一旦该函数在acad.lsp函数中定义,在autocad启动时,就会自动加载该函数。 b)存盘自动执行函数 定义 (defun S::save() …… ) 该函数与(s::startup)相似,在文件时将会被自动执行。例如:在保存文件时,对被保存文件生成备份文件等,就可能需要此功能文件 c)退出时自动执行文件 定义 (defun s::exit() …… ) 4)怎样判定两个实数相等 对于计算出来的实数,即使真的相等,但对计算机来说,其往往不是绝对相等(如2.00 与2.000就不等)。因此判定其相等就需要采用差值方式 (equal expr1 expr2 [FUZZ]) 其中任选项FUZZ指定表达式EXPR1 EXPR2 的最大答应差值。即假如实际差值小于FUZZ,则判定结果为真,反之为假。 (if (equal a b 0.001) (prompt "These numbers are equal") (prompt "These numbers are not equal") ) 5)取系统的环境变量 对编制自己的系统来说,最好将自己的所有编制程序集中在自己独立的目录下,如acadlisp等。然后在将该目录添加到ACAD环境中。 在自己编制的程序中,为了确保所要调用函数或文件在AUTOCAD的搜索路径下,就需要判定自己编制的程序目录是否在ACAD环境内。此时就要用(getnev)函数 如(setq nev (getenv "acad")) 其将返回ACAD系统环境,如"C:;C:;C:" 返回类别: AuotoCAD教程 上一教程: AutoCAD中特定角度及长度捕获的实现方式 下一教程: 为DWG文件“减肥” 您可以阅读与"AUTOLISP程序设计技巧"相关的教程: · 使用VBA创建应用程序 · 使用Visual LISP创建简朴的LISP应用程序 · CAD中自动画管线图的LISP程序 · AUTOCAD系列批量处理程序 · 使用Visual C++创建ARX程序 |
快精灵印艺坊 版权所有 | 首页会员中心在线印刷在线编辑付款方式索取样品设计指南连锁门店 |