文档库 最新最全的文档下载
当前位置:文档库 › AUTOLISP 程序命令

AUTOLISP 程序命令

AUTOLISP 程序命令
AUTOLISP 程序命令

1.+(加)返回所有数的和

2.–(减)将第一个数减去其他数的和并返回差值

3.*(乘)返回所有数的乘积

4./(除)将第一个数除以其他数的乘积并返回商

5.=(等于)比较参数是否相等

6./=(不等于)比较参数是否值不相等

7.<(小于)如果每个参数值都小于它右边的参数则返回T,否则返回nil

8.<=(小于或等于)如果每个参数值都小于或等于它右边的参数则返回T,

否则返回nil

9.>(大于)如果每个参数值都大于它右边的参数则返回T,否则返回nil

10.>=(大于或等于)如果每个参数值都大于或等于它右边的参数则返回T,

否则返回nil

11.~(按位非)返回参数的按位非(即1的补码)

12.1+(增1)将参数加1

13.1–(减1)将参数减1

14.abs返回参数的绝对值

15.acad_colordlg显示标准的AutoCAD颜色选择对话框

16.acad_helpdlg启动帮助工具(已废弃)

17.acad-pop-dbmod恢复DBMOD系统变量的值到最近用acad-push-dbmod

保存的值

18.acad-push-dbmod储存DBMOD系统变量的当前值

19.acad_strlsort以ASCII码字母顺序对字符串表进行排序

20.acad_truecolorcli从命令行中选择AutoCAD真彩色

21.acad_truecolordlg显示AutoCAD真彩色选择对话框

22.acdimenableupdate控制关联标注的自动更新

23.acet-layerp-mode查询和设置LAYERPMODE配置

24.acet-layerp-mark放置图层先前记录的开始和结束标记

25.acet-laytrans转换图形中的图层为其它图形或标准文件中所定义的标

26.acet-ms-to-ps从模型空间单位转换实数值到图纸空间单位

27.acet-ps-to-ms从图纸空间单位转换实数值到模型空间单位

28.action_tile为某一对话框控件指定一个动作表达式,用户在对话框中选

中这个控件时,就会执行该动作表达式

29.add_list在当前激活的对话框的列表框中增加一个字符串或修改其中的

一个字符串

30.alert显示一个警告框,其中显示一条出错或警告信息

31.alloc设置段长度以供expand函数使用

32.and返回表达式的逻辑与(AND)运算结果

33.angle以弧度为单位返回两点之间连线与当前UCS下X轴之间的夹角

34.angtof将表示角度的字符串转换为实数(浮点数)形式的弧度值

35.angtos将一个以弧度为单位的角度值转换成字符串

36.append将任意多个表组合成一个表

37.apply将参数表传给指定的函数

38.arx返回当前已加载的ObjectARX应用程序名表

39.arxload加载ObjectARX应用程序

40.arxunload卸载ObjectARX应用程序

41.ascii将字符串中的第一个字符转换成其ASCII码(整数)后返回

42.assoc从关联表中搜索一个元素,如果找到则返回该关联表条目

43.atan返回一个数的反正切值(以弧度为单位)

44.atof将一个字符串转换成实数

45.atoi将一个字符串转换成整数

46.atom验证一个项是否是原子

47.atoms-family返回由当前已定义的符号组成的一个表

48.autoarxload预定义可自动加载某相关ObjectARX应用程序的命令名

49.autoload预定义可自动加载某相关AutoLISP应用程序的命令名

50.Boole用作一个通用的按位逻辑运算函数

51.boundp检验符号是否被设置为某个值

52.caddr返回表的第三个元素

53.cadr返回表的第二个元素

54.car返回表的第一个元素

55.cdr返回去掉了第一个元素的表

56.chr将代表字符ASCII码的整数转换成包含相应的单一字符的字符串

57.client_data_tile将特定应用数据与一个对话框控件相关联

58.close关闭一个已打开的文件

https://www.wendangku.net/doc/c016071444.html,mand执行一条AutoCAD命令

60.cond多条件、多处理结果函数

61.cons向表的头部添加一个元素,或构造一个点对

62.cos返回弧度角度的余弦值

63.cvunit在不同测量单位之间进行换算

64.defun定义函数

65.defun-q将函数定义为表

66.defun-q-list-ref返回用defun-q定义的函数的表结构

67.defun-q-list-set将符号设置为以表形式定义的函数

68.dictadd在指定词典内添加非图形对象

69.dictnext查找词典中的下一个条目

70.dictremove从指定词典中删除一个条目

71.dictrename重命名词典条目

72.dictsearch在词典中搜索某个项

73.dimx_tile返回控件的宽度

74.dimy_tile返回控件的高度

75.distance返回两个点之间的距离

76.distof将一个表示实(浮点)数的字符串转换成一个实数

77.done_dialog中断对话框

78.end_image结束当前激活的对话框图像控件的操作

79.end_list结束对当前激活的对话框列表的操作

80.entdel删除对象(图元)或恢复先前删除的对象

81.entget获得对象(图元)的定义数据

82.entlast返回图形中最后那个未删除的主对象(图元)名称

83.entmake在图形中创建一个新图元

84.entmakex创建一个新对象或图元,赋给它一个句柄和图元名(但不指定

所有者),并返回新图元的名称

85.entmod修改对象(图元)的定义数据

86.entnext返回图形中的下一个对象(图元)名

87.entsel提示用户通过指定一个点来选择单个对象(图元)

88.entupd更新对象(图元)的屏幕显示

89.eq确定两个表达式是否具有相同的约束条件

90.equal确定两个表达式的值是否相等

91.*error*可由用户定义的错误处理函数

92.eval返回AutoLISP表达式的求值结果

93.exit强行使当前应用程序退出

94.exp返回常数e(2.718282...)的指定次幂(自然反对数)

95.expand为AutoLISP分配附加空间

96.expt返回以某指定数为底数的若干次幂的值

97.fill_image在当前激活的对话框图像控件中画一个填充矩形

98.findfile在AutoCAD库路径中搜索指定文件或目录

99.fix截去实数的小数部分,将它转换成整数后返回该整数

100.float将一个数转换为实数后返回

101.foreach将表中的所有成员以指定变量的身份带入表达式求值

102.function通知Visual LISP编译器将参数作为内置函数进行链接和优化103.gc强制收集无用数据,释放不再使用的节点

104.gcd返回两个整数的最大公约数

105.get_attr获取对话框指定控件的某个属性值

106.get_tile获取对话框指定控件的当前运行时的值

107.getangle暂停以等待用户输入角度,然后以弧度形式返回该角度

108.getcfg从acad.cfg文件的AppData段中检索应用数据

109.getcname获取AutoCAD命令的本地化名或英文名

110.getcorner暂停等待用户输入矩形第二个角点的坐标

111.getdist暂停以等待用户输入距离

112.getenv以字符串方式返回指定的环境变量的值

113.getfiled用标准的AutoCAD文件对话框提示用户输入一个文件名,并返回该文件名

114.getint暂停以等待用户输入一个整数并返回该整数

115.getkword暂停以等待用户输入一个关键字并返回该关键字

116.getorient暂停以等待用户输入角度,并返回该角度

117.getpoint暂停以等待用户输入点,并返回该点

118.getreal暂停以让用户输入一个实数并返回该实数

119.getstring暂停以等待用户输入字符串,并返回该字符串

120.getvar获取一个AutoCAD系统变量的值

121.graphscr显示AutoCAD图形屏幕

122.grclear清除当前视口(已废弃)

123.grdraw在当前视口中的两个点之间显示一条矢量线

124.grread从AutoCAD的任何一种输入设备中读取数值

125.grtext将文本写到状态行或屏幕菜单区

126.grvecs在图形屏幕上绘制多个矢量

127.handent根据对象(图元)的句柄返回它的对象(图元)名

128.help调用帮助工具

129.if根据对条件的判断结果,对两个表达式求值

130.initdia强制显示下一个命令的对话框

131.initget为随后的用户输入函数调用创建关键字

132.inters求两条直线的交点

133.itoa将整数转换成字符串,并返回转换结果

https://www.wendangku.net/doc/c016071444.html,mbda定义无名函数

https://www.wendangku.net/doc/c016071444.html,st返回表的最后一个元素

https://www.wendangku.net/doc/c016071444.html,youtlist返回当前图形中所有图纸空间布局组成的表

137.length以整数形式返回表中元素的数目

138.list将任意数目的表达式组合成一个表

139.listp检查某个项是否是表

140.load对一个文件中的AutoLISP表达式求值

141.load_dialog加载DCL文件

142.log返回一个实数的自然对数

143.logand返回一个整数表中的各数按位逻辑与(AND)的结果

144.logior返回一个整数表中的各数按位逻辑或(OR)的结果

145.lsh返回某整数作指定次逻辑移位后的结果

146.mapcar将作为本函数参数的一个或多个表的各个元素提供给指定函数进行求值,并将由求值结果构成的表返回

147.max返回给定各数中的最大者

148.mem显示AutoLISP内存的当前状态

149.member搜索表中是否包含某表达式,并从该表达式的第一次出现处返回表的其余部分

150.menucmd发出菜单命令,或设置并检索菜单项状态

151.menugroup检查是否加载了指定的菜单组

152.min返回给定各数中的最小者

153.minusp检查某个数是否是负数

154.mode_tile设置对话框控件的状态

https://www.wendangku.net/doc/c016071444.html,dobjdict返回当前图形的命名对象词典的图元名,它是所有非图形对象的根

156.nentsel提示用户指定点来选择对象(图元),得到这个对象所指片段的对象名

157.nentselp在没有用户输入的情况下,本函数的功能与nentsel函数类似158.new_dialog开始一个新的对话框并显示该对话框,而且能指定一个缺省操作

159.not检查一个项的求值结果是否为nil

160.nth返回表中的第n个元素

161.null检查某项的值是否设置为nil

162.numberp检查某个项是否是实数或整数

163.open打开一个文件,供其他AutoLISP I/O函数访问

164.or返回对表达式进行逻辑或(OR)运算的结果

165.osnap将某种对象捕捉模式作用于指定点而获得一个点,并返回该点166.polar在UCS坐标系下,求某点的指定角度和指定距离处的点,并返回该点

167.prin1在命令行打印一个表达式或将表达式写入已打开的文件中

168.princ在命令行打印表达式,或将表达式写入已打开的文件中

169.print在命令行打印表达式,或将表达式写入已打开的文件中

170.progn顺序地对每一个表达式进行求值,并返回最后那个表达式的值171.prompt在屏幕提示区显示一个字符串

172.quit强制退出当前应用程序

173.quote返回表达式而不对其求值

174.read返回字符串中的第一个表或第一个原子

175.read-char从键盘输入缓冲区或打开文件中读入一个字符,并将该字符转换成十进制的ASCII码值后返回

176.read-line从键盘或已打开文件中读取行结束符前的字符串

177.redraw重画当前视口或当前视口中的一个指定对象(图元)

178.regapp为当前AutoCAD图形注册一个应用名,为使用扩展对象数据作准备

179.rem将第一个数除以第二个数,并返回余数

180.repeat对循环体中的每一个表达式进行指定次数的求值计算,并返回最后一个表达式的值

181.reverse将表的元素顺序倒置后返回

182.rtos将数字转换成字符串

183.set将引号中的符号名的值设置成一个表达式的值

184.set_tile设置对话框控件的值

185.setcfg将应用数据写到acad.cfg文件的AppData段中

186.setenv将系统环境变量设为指定值

187.setfunhelp给帮助工具注册一个用户定义函数,这样,用户在请求该命令的帮助时,就会调用正确的帮助文件和主题

188.setq将一个或多个符号的值设置为相应表达式的值

189.setvar设置AutoCAD系统变量为指定值

190.setview为指定视口建立一个视图

191.sin以实数形式返回角度的正弦值(以弧度为单位)

192.slide_image在当前激活的对话框图像控件中显示AutoCAD幻灯片193.snvalid检查组成符号表名的各字符的有效性

194.sqrt以实数形式返回一个数的平方根

195.ssadd将对象(图元)加入到选择集中,或创建新的选择集

196.ssdel从选择集中撤消对象(图元)

197.ssget根据选定对象创建选择集

198.ssgetfirst判断哪些对象是被选取的和被夹取的

199.sslength求出一个选择集中的对象(图元)数目,并将其作为一个整数返回

200.ssmemb测试某对象(图元)是否是选择集的成员

201.ssname返回选择集中由序号指定的那个对象(图元)的图元名

202.ssnamex获取关于选择集创建方式的信息

203.sssetfirst设置哪些对象既是被选取的又是被夹取的

204.startapp启动Windows应用程序

205.start_dialog显示对话框并将控制交给对话框

206.start_image开始对对话框控件中的一个图像控件进行操作

207.start_list开始处理对话框中的列表框或弹出式列表框中的列表

208.strcase将字符串中的所有字母转换成大写或小写后返回

209.strcat将多个字符串拼接成一个长字符串后返回

210.strlen以整数形式返回一个字符串中字符的个数

211.subst在表中搜索某旧项,并将表中出现的每一个旧项用新项代替,然后返回修改后所得的表

212.substr返回字符串中的一个子字符串

213.tablet获取和设置数字化仪校准

214.tblnext在符号表中查找下一项

215.tblobjname返回指定符号表条目的图元名

216.tblsearch在指定的符号表中搜索符号名

217.term_dialog终止当前所有的对话框,就象用户取消了它们一样

218.terpri在命令行上输出一个换行符

219.textbox测量一个指定文本对象的尺寸,并返回围住该文本的一个矩形框的对角坐标

220.textpage从图形屏幕切换至文本屏幕

221.textscr切换至文本屏幕(相当于AutoCAD Flip Screen功能键)222.trace调试AutoLISP程序时的辅助函数

223.trans将一个点(或位移量)从一个坐标系转换成另一个坐标系

224.type返回指定项的数据类型

225.unload_dialog卸载DCL文件

226.untrace清除指定函数的跟踪标志

227.vector_image在当前激活的对话框图像控件上显示一个矢量线

228.ver返回当前AutoLISP版本号的字符串

229.vports返回表示当前视口配置的视口描述符表

230.wcmatch将模式字符串与某指定的字符串进行匹配比较

231.while对测试表达式进行求值,如果它不是nil,则执行循环体中的表达式,重复这个过程,直到测试表达式的求值结果为nil

232.write-char将一个字符写到屏幕上或一个已打开的文件中

233.write-line将字符串写到屏幕上或一个已打开的文件中

234.xdroom返回对象可供使用的扩展数据(Xdata)空间的大小

235.xdsize返回一个表作为扩展数据连接到对象(图元)上时所占用的空间大小(以字节表示)

236.zerop检查一个数的值是否为0

AutoLISP-程序创建过程

AutoCAD开发VisualLISP程序 本节通过一个简单的实例来讲述LISP程序的创建过程,介绍编制LISP程序的一些基本步骤,以及LISP程序在AutoCAD中的加载和运行的方法。 首先来创建一个最简单的LISP程序—-“Hello.lsp”,在AutoCAD2002中加载并运行该程序,将会在命令行出现-“Hello,VisualLISP!”。 VisualLISP与AutoCAD的通信 用户可以直接在AutoCAD命令行中键入AutoLISP表达式。AutoCAD通过括号来确认AutoLISP表达式。AutoCAD每当发现一个左括号,就确认为AutoLISP表达式,并由AutoLISP求表达式的值后返回AutoCAD,AutoCAD使用返回结果并继续进行其他工作。 注意在AutoLISP表达式中,左、右括号必须配对,否则AutoCAD将给出提示符n>,n表示右括号丢失数目。 此外,在AutoCAD中调用并执行AutoLISP程序。在AutoLISP程序中采用COMMAND函数来与AutoCAD命令程序处理器通信,COMMAND从AutoLISP获得命令并将其传给AutoCAD。 实例:最简单的LISP程序——“Hello.lsp” Step1创建新文件 (1)运行AutoCAD2002系统,以“acadiso.dwt”为样板创建图形文件,并调用“vlisp”命令进入VisualLISP环境。

(2)单击“Standard(标准)”工具栏中的按钮,新建一个LISP文件。Step2输入代码并保存文件 (1)在编辑窗口中输入源文件“Hello.lsp”的代码。程序清单如下:;;;* Hello.lsp – Visual LISP文件实例 (prompt "Pick point:") ;指定运行时的提示信息 (setq ipt (getpoint)) ;在屏幕上指定一点并将其坐标值赋予变量“ipt” (setq hgt 15) ;给变量“hgt”赋值 (Command "_.TEXT" "_S" "STANDARD" ipt hgt 0 "Hello, Visual LISP!"); 调用“Commnad”函数与AutoCAD进行通信 (2)单击“Standard(标准)”工具栏中的按钮,以“Hello.lsp”为名保存该文件。 Step3运行LISP程序 (1)确认编辑窗口处于前台状态,选择菜单【Tools(工具)】→【LoadTextinEditor(加载编辑器中的文字)】,则该程序被加载并运行。系统将返回AutoCAD窗口,并提示用户选择一点,并以指定点为基点来绘制文字。结果如图36-4所示。 (2)如果用户退出VisualLISP环境并返回AutoCAD系统窗口,则需要对该程序进行加载后,才能运行。选择菜单【Tools(工具)】→【LoadAppcation…(加载应用程序)】,弹出“Load/UnloadApplications(加载/卸载应用程序)”对话框,如图

Autolisp基础教程

Autolisp基础教程 单元一:AutoLISP主角潇洒登场 一. AutoLISP 是何方神圣? 1、AutoLISP是AutoCAD的最佳拍檔! 2、AutoLISP内含于AutoCAD软件内,不用另外花钱买! 3、AutoLISP是强化AutoCAD最好、最直接的『程序语言』! 4、AutoLISP易学、易用,即使不会程序设计的AutoCAD使用者,都能在最短的时间内,写出令人惊讶、赞叹的功能! 若说AutoLISP的出现,是替AutoCAD 创造一片天的『最大功臣』,实不为过一点也不夸张! 5、AutoLISP希望您去学习它、改善它、发挥它、享受它.真的!它的威力、魅力无穷! 二. AutoLISP 程序语言的特质分析: 学习AutoLISP是非常容易的,对初学者而言,即使没有学习过任何的程序语言,都能很快的上手,写出精彩漂亮的AutoLISP程序! 语法简单:不用特殊的变量宣告,非常富有弹性,比起其它的程序语言,它的语法可说是非常简单而有其独特的风格! 功能函数强大:除一般性的功能函数外,又拥有为数不少控制配合AutoCAD的特殊函数,再加上AutoLISP可直接呼叫执行所有AutoCAD的指令,以及掌握运用所有的AutoCAD系统变量,功能之强大令人欣喜不已! 撰写的环境不挑剔:只要是一般的文书编辑软件都适用! 如:Windows的记事本、PE2、PE3、DW3、书中仙、汉书、EDIT....等 直译式程序:不用再作编译,『即写即测、即测即用』,马上可以在AutoCAD中响应效果,马上就有成就感! 横跨各作业平台:悠然自得,虽然AutoCAD有DOS、Windows版本之分但是AutoLISP却可在不改写的原貌下,加载与执行! 三.撰写AutoLISP 的动机? 1、欲强化AutoCAD 原有指令时. 2、欲创造更有用的AutoCAD 新指令. 3、欲简化繁琐的环境设定或绘图步骤时. 4、欲处理参数式绘图时. 5、欲做图面资料读文件、写文件. 6、欲做AutoCAD 演示文稿展示时. 7、欲达到真正灵活掌控AutoCAD 时. 8、欲提升自己跨上AutoCAD 高手列车时. 四.AutoLISP 的效益评估? 1. 对公司负责人或设计主管而言: A. 也许某员工或干部花了20个小时撰写一个AutoLISP程序,表面上,这将近三天的时间,他连一张图都没有画,甚至可能偶有发呆、沉思,若此程序一天可以替公司绘图部门节省1小时绘图时间,那算一算,只要20天就抵销开发成本,而20天以后都是赚的,『用的愈久,省的愈多』! B. 若员工皆有此动力,在不影响正常工作,『鼓励』都来不及,那有『压抑』的道理,甚至还要派遣优秀人员出去受训,学习更好的设计技巧与创意呢?! C. 千万不要因为您的不懂或压抑,SHOW您的权威与POWER,如此,不但对员工造成打击,甚至您可能成为阻碍了公司计算机化进步的罪魁祸首 D. 当然,若要撰写的程序很多,内部设计人员的程序功力距离太远,达成需求的时间反而变得遥遥无期,那倒不如求助于市面上已有的相关AutoCAD 支持软件。

autocad lisp教程

Lisp教程 一.Lisp基础知识 二.对话框基础 一.基本知识 第1节 -------------------------------------------------------------------------------- 基本知识 AutoLISP是一种针对扩充及自订AutoCAD函数机能而产生,以LISP为基础的程序设计语言.LISP本身于50

目的是令使用者充份利用AutoCAD进行开发,直接增加及修改AutoCAD指令. AutoLisp语言建基于普通的LISP语言上,并扩充了许多适用于CAD的特殊功能而形成. 是一种能以直译方式(不须先行编译)亦可于AutoCAD内部执行的直译性程序语言. 程序容易学习及撰写,程序即使出错亦不会对操作系统(如DOS,WINDOWS)有不良影响. 数据及程序均统一以串行(List)结构表示. 可直接调用几乎全部的AutoCAD命令. 既具备一般高级语言的基本结构和功能,亦有一般高级语言没有的强大图形处理能力. 内建于AutoCAD应用程序,不须另行购买;亦不须使用特定的编辑器或开发环境. 可配合AutoCAD提供的PDB,建立DCL(Dialog Control Language)文件创建对话框. 缺点: 执行速度较ObjectArx(旧称ARX,以C或C++程序开发,取代以前的ADS)程序慢;原程序不易保护;对低阶的硬件数据不易存取. 第2节 -------------------------------------------------------------------------------- 函数(Function) 在AutoLISP程序语言中所有的成份都是以函数的形式出现,AutoLISP程序就是顺序执行连串的函数.函数的运行过程就是对函数的求值(结果)过程;函数的基本语法如下: (函数名称参数1 参数2....) e.g. (PRINC "AutoLISP Programming") 每一个完整的函数必须包在一对小括号( )内,左边为开括号,右边为关括号;如有若干数量的开括号,则一定有同等数量的关括号对应. 左边开括号后紧随函数名称. 函数名称与参数之间,或参数与参数之间须最少留一个空格. 函数可有一个或多个参数(也可能没有参数),视该函数而定. 函数名称不分大小写,即大小写字母视为相同. 第3节 -------------------------------------------------------------------------------- 数据型态(Data Type) 整数(INT) 没有小数字的数值,32位有号数,范围从+2,147,483,647到-2,147,483,648 实数(REAL) 带小数字的数值,以倍精度浮点格式储存(最少14位小数) e.g. 12.5 当数值在1与-1之间时,必须加上前导零 e.g. 0.05 可以科学记号表示: 在E或e后加上次方值 e.g. 4.1e-6 字符串(STR) 一般文字,其前后必须加上双引号" e.g. "AutoCAD" 控制字符或脱逸码必须为小写,且须在字符前加上反斜线\ e.g. "\AutoCAD" 像素名称(ENAME) 是指定给图文件内对象的指针(Pointer,为16进位的数字卷标) e.g. 像素名称在图文件内是唯一的,不会重复 对象的像素名称只在目前作业中有效,再开启图档时,会指定新的像素名称予该对象 档案(FILE) 以OPEN函数所开启档案的指针,作为其它函数(读写该档案)的自变量 选集(PICKSET)

AUTOLISP详细讲解

AutoLISP详细讲解 关于AutoLISP AutoLISP是由Autodesk公司开发的一种LISP程序语言(LISP是List Processor的缩写)。第一篇关于LISP的参考文献是由John McCarthy在1960年4月的《ACM通讯》中发表的。 除了FORTRAN和COBOL,大多数在六十年代早期开发出来的语言都过时了,可是LISP 却生下来,并且已经成为人工智能(AI)的首选程序序言。AutoLISP解释程序位于AutoCAD 软件包中,然而AutoCAD R2.17及更低版本中并不包含AutoLISP解释程序,这样,只有通过AutoCADR2.18及更高版本才可以使用AutoLISP语言。 AutoCAD软件包中包含大多数用于产生图形的命令,但仍有某些命令末被提供。例如,AutoCAD中没有在图形文本对象内绘制矩形及作全局改变的命令。通过AutoLISP,你可以使用AutoLISP程序语言编制能够在图形文本对象内绘制矩形或作全局选择性改变的程序。事实上,可以用AutoLISP编制任何程序,或把它嵌入到菜单中,这样定制你的系统会取得更高的效率。 现在,已经有数以百计的第三方软件开发人员使用AutoLISP语言编制各种应用程序软件包,例如,本文作者开发了一个名为SMLayout的软件包,用它可以产生各种复杂几何图形的平面布局图,这些几何图形包括管道的交叉部、过渡都、圆柱、弯管接头、圆锥以及罐顶。目前社会上非常需要AutoLISP程序员为应用软件及客户菜单的开发提供顾问。 在本章中,我们假定读者已经熟悉了AutoCAD命令及AutoCAD的系统变量。但是,在开始学习AutoLISP时,却并不需要你是一位AutoCAD或编程专家。同时,本章还假定读者并无编程方面的知识。如果你熟悉任何一种编程语言,那么学习AutoLISP就会很容易。对各种函数的评细探讨以及对例题的逐步讲解会使你学起来很有兴趣。本章讨论常用的AutoLISP函数以及它们S程序编制中的应用。对于本章中未涉及的函数,请参阅Autodesk 公司的《AutoLISP程序员参考手册》。AutoLISP对硬件没有任何特殊要求。如果系统能够运行AutoCAD,那么同样也可以运行AutoLISP。AutoLISP程序可以使用任何文本编辑器进行编制。 数学运算 任何编程语言都提供数学函数。在AutoLISP中,同样提供了编程以及数学计算所需的大部分数学函数,你可以使用AutoLISP对数字进行加、减、乘、除运算,还可以得到以弧度表示的角度的正弦值、余弦值及反正切值等。使用AutoLISP还可以进行许多其他计算。这一节主要讨论AutoLISP程序语言支持的常用数学函数。 1.加法 格式(+num1num2num3…) 此函数(+)计算加号(+)右边所有数字的和(+num1num2num3…)。这些数字可以是整数或实数。如果均为整数,则和为整数;如果均为实数,则和为实数。但是如果既有整数又有实数,则和为实数。如下所示,在前两个例子中,所有数字均为整数,所以结果是

用AutoLISP程序提高绘图效率的几个实例

2007.12 科技广场 254

工程中经常要绘制各种弹簧和螺纹连接件,在AutoCAD中没有专门绘制弹簧和螺纹的命令,弹簧和螺纹在AutoCAD中都可用平面图形通过相应螺旋线拉伸而成,所以绘制螺旋线就是解决问题的关键。如果用常规的3dpoly命令绘制三维螺旋线,需要输入大量精确数据,才能一点一点地画出螺旋线,做法非常麻烦。现在提供AutoLISP程序,即可解决绘制螺旋线的问题。然后通过相应平面图形的拉伸,就可以完成弹簧、螺纹等零件的绘制。 根据圆台螺旋线的形成原理(一动点M绕圆台的母线AB作等速直线运动,而该母线AB又绕圆台的轴线O1O2作等角速旋转时,点M的运动轨迹即为圆台的螺旋线,如图二所示。圆柱螺旋线是圆台螺旋线的特例,故可通过圆台螺旋线程序做相应的变动,即可得到),动点M(x,y,z)的参数方程如下: 图二园台螺旋线 X=[r0+hg *α/(2π)]*cosα Y=[r0+hg *α/(2π)] *sinα Z=±vg *α/(2π) 其中,r0为圆台下面的半径,α为螺旋线角,vg为导程(单线螺旋线螺距(弹簧的节距)等于导程),hg为点M沿水平半径方向上增加的距离(hg=|(r1-r0)m|求得,m为螺旋线的圈数)。 下面提供圆台螺旋线的AutoLISP程序清单: (defun c:luoxc(/) (setq b1 (getpoint" 指定基点:")) (setq r1 (getreal "指定初始半径:")) (setq disp (getreal "指定节距:")) (setq angtg (getreal "输入锥形角:")) (setq m (getint"输入圈数:")) (setq n (getint"输入每圈细化段数<36>:")) (cond ((null n )(setq n 36))) (setq delta (/ (* 2.0 pi ) n)) (setq j (/ disp n)) (setq bb (caddr b1)) (setq tg (*(/ angtg 180) pi)) (setq ang 0) (setq k 0) (command "ucs" "o" b1) (command "3dpoly" (list r1 0 0)) (repeat (* m n) (setq k(+ k 1)) (setq ang(+ delta ang)) (setq r (- r1 (* (+ 0(* j k))(/ (sin tg )(costg))))) (setq pt2 (list (* r(cos ang))(* r(sin ang))(+ 0(* j k)))) (command pt2) ) (command "") ) 根据圆台螺旋线的形成原理,如果圆锥角为0度时,即可形成圆柱螺旋线。圆柱螺旋线程序清单如下: (defun c:luoxc(/) (setq b1 (getpoint" 指定基点:")) (setq r (getreal "指定初始半径:")) (setq vg (getreal "指定节距:")) (setq m (getint"输入圈数:")) (setq n (getint"输入每圈细化段数<36>:")) (cond ((null n )(setq n 36))) (setq delta (/ (* 2.0 pi ) n)) (setq j (/ disp n)) (setq bb (caddr b1)) (setq ang 0) (setq k 0) (command "ucs" "o" b1) (command "3dpoly" (list r 0 0)) 255

养成良好的AutoLISP书写习惯

养成良好的AutoLISP书写习惯 众所周知,Lisp是一种表结构语言,括号必须成对出现,在调试时往往为遗漏了一个括号大费周折,所以,养成一个好的编程习惯是学好Lisp所必须的。 ⑴选择一个较好的编辑器,这是一个基本条件,建议使用Visual Lisp编辑器或Lisplink 等专用编辑器,此类编辑器可以对函数突出显示。 ⑵按Lisp(DCL)专有格式书写,并经常对程序进行“格式化”,及时发现语法错误,并有利于调试是查找错误。 ⑶使用自定义函数,并辅助以适当得注释,在较大程序中按功能使用自定义函数可以使得程序条理化。 autolisp的入门教程+autolisp函数! Lisp是一门历史悠久的语言,全名叫LISt Processor,也就是“表处理语言”,它是由John McCarthy于1958年就开始设计的一门语言。和Lisp同时期甚至更晚出现的许多语言如Algo 等如今大多已经消亡,又或者仅仅在一些特定的场合有一些微不足道的用途,到现在还广为人知的恐怕只剩下了Fortran和COBOL。但唯独Lisp,不但没有随着时间而衰退,反倒是一次又一次的焕发出了青春,从Lisp分支出来的Scheme、ML等语言在很多场合的火爆程度甚至超过了许多老牌明星。那么这颗常青树永葆青春的奥秘究竟在哪里呢? 如果你只接触过C/C++、Pascal这些“过程式语言”的话,Lisp可能会让你觉得十分不同寻常,首先吸引你眼球(或者说让你觉得混乱的)一定是Lisp程序中异常多的括号,当然从现在的角度来讲,这种设计的确对程序员不大友好,不过考虑到五六十年代的计算机处理能力,简化语言本身的设计在那时算得上是当务之急了。 Lisp的基本语法很简单,它甚至没有保留字(有些语言学家可能对这一点有异议,别怕,我听你们的),它只有两种基本的数据,仅有一种基本的语法结构就是表达式,而这些表达式同时也就是程序结构,但是正如规则最简单的围棋却有着最为复杂的变化一样,Lisp使用最基本的语言结构定义却可以完成其它语言难于实现的、最复杂的功能。 废话少说,现在我们就来看看Lisp语言中的基本元素。 Lisp的表达式是一个原子(atom)或表(list),原子(atom)是一个字母序列,如abc;表是由零个或多个表达式组成的序列,表达式之间用空格分隔开,放入一对括号中,如: abc () (abc xyz) (a b (c) d) 最后一个表是由四个元素构成的,其中第三个元素本身也是一个表。 正如算数表达式1+1有值2一样,Lisp中的表达式也有值,如果表达式e得出值v,我们说e返回v。如果一个表达式是一个表,那么我们把表中的第一个元素叫做操作符,其余的元素叫做自变量。

autolisp教程

第十四章 AutoLISP 14.1 关于AutoLISP AutoLISP是由Autodesk公司开发的一种LISP程序语言(LISP是List Processor的缩写)。第一篇关于LISP的参考文献是由John McCarthy 在1960年4月的《ACM通讯》中发表的。 除了FORTRAN和COBOL,大多数在六十年代早期开发出来的语言都过时了,可是LISP 却生下来,并且已经成为人工智能(AI)的首选程序序言。AutoLISP解释程序位于AutoCAD 软件包中,然而AutoCAD R2.17及更低版本中并不包含AutoLISP解释程序,这样,只有通过AutoCAD R2.18及更高版本才可以使用AutoLISP语言。 AutoCAD软件包中包含大多数用于产生图形的命令,但仍有某些命令末被提供。例如,AutoCAD中没有在图形文本对象内绘制矩形及作全局改变的命令。通过AutoLISP,你可以使用AutoLISP程序语言编制能够在图形文本对象内绘制矩形或作全局选择性改变的程序。事实上,可以用AutoLISP编制任何程序,或把它嵌入到菜单中,这样定制你的系统会取得更高的效率。 现在,已经有数以百计的第三方软件开发人员使用AutoLISP语言编制各种应用程序软件包,例如,本文作者开发了一个名为SMLayout的软件包,用它可以产生各种复杂几何图形的平面布局图,这些几何图形包括管道的交叉部、过渡都、圆柱、弯管接头、圆锥以及罐顶。目前社会上非常需要AutoLISP程序员为应用软件及客户菜单的开发提供顾问。 在本章中,我们假定读者已经熟悉了AutoCAD命令及AutoCAD的系统变量。但是,在开始学习AutoLISP时,却并不需要你是一位AutoCAD或编程专家。同时,本章还假定读者并无编程方面的知识。如果你熟悉任何一种编程语言,那么学习AutoLISP就会很容易。对各种函数的评细探讨以及对例题的逐步讲解会使你学起来很有兴趣。本章讨论常用的AutoLISP函数以及它们S程序编制中的应用。对于本章中未涉及的函数,请参阅Autodesk 公司的《AutoLISP程序员参考手册》。AutoLISP对硬件没有任何特殊要求。如果系统能够运行AutoCAD,那么同样也可以运行AutoLISP。AutoLISP程序可以使用任何文本编辑器进行编制。 14.2 数学运算 任何编程语言都提供数学函数。在AutoLISP中,同样提供了编程以及数学计算所需的大部分数学函数,你可以使用AutoLISP对数字进行加、减、乘、除运算,还可以得到以弧度表示的角度的正弦值、余弦值及反正切值等。使用AutoLISP还可以进行许多其他计算。这一节主要讨论AutoLISP程序语言支持的常用数学函数。 269

AutoLISP基础入门案例,很受用精编版

单元一:AutoLISP主角潇洒登场 一. AutoLISP 是何方神圣? 1.AutoLISP是AutoCAD的最佳拍檔! 2.AutoLISP内含于AutoCAD软件内,不用另外花钱买! 3.AutoLISP是强化AutoCAD最好、最直接的『程序语言』! 4.AutoLISP易学、易用,即使不会程序设计的AutoCAD使用者,都能在最短 的时间内,写出令人惊讶、赞叹的功能! 5.若说AutoLISP的出现,是替AutoCAD 创造一片天的『最大功臣』,实不 为过一点也不夸张! 6.AutoLISP希望您去学习它、改善它、发挥它、享受它.真的!它的威力、魅 力无穷! 二. AutoLISP 程序语言的特质分析: 学习AutoLISP是非常容易的,对初学者而言,即使没有学习过任何的程序语言,都能很快的上手,写出精彩漂亮的AutoLISP程序! 三.撰写AutoLISP 的动机? 1.欲强化AutoCAD 原有指令时. 2.欲创造更有用的AutoCAD 新指令. 3.欲简化繁琐的环境设定或绘图步骤时. 4.欲处理参数式绘图时.

5.欲做图面资料读文件、写文件. 6.欲做AutoCAD 简报展示时. 7.欲达到真正灵活掌控AutoCAD 时. 8.欲提升自己跨上AutoCAD 高手列车时. 四.AutoLISP 的效益评估? 1. 对公司负责人或设计主管而言: A. 也许某员工或干部花了20个小时撰写一个AutoLISP程序,表面上,这将近三天的时间,他连一张图都没有画,甚至可能偶有发呆、沈思,若此程序一天可以替公司绘图部门节省1小时绘图时间,那算一算,只要20天就抵销开发成本,而20天以后都是赚的,『用的愈久,省的愈多』! B.若员工皆有此动力,在不影响正常工作,『鼓励』都来不及,那有『压抑』的道理,甚至还要派遣优秀人员出去受 训,学习更好的设计技巧与创意呢?! C.千万不要因为您的不懂或压抑,SHOW您的权威与POWER,如此,不但对员工造成打击,甚至您可能成为阻碍 了公司计算机化进步的罪魁祸首 D. 当然,若要撰写的程序很多,内部设计人员的程序功力距离太远,达成需求的时间反而变得遥遥无期,那倒不如求助于市面上已有的相关AutoCAD 支持软件。 2. 对设计人员而言:

autolisp教程

第十二章从菜单执行函数 1.制作简单的菜单 (a)首先定义一个函数,并保存为plus32.lsp: (defun plus32() (setq a (+ 3 2)) ) (b)编写菜单生成文件,并保存为mylisp.mnu: ***MENUGROUP=Mylisp ;菜单组的名称 ***POP1 ;第一组下拉菜单 [Mylisp] ;第一组下拉菜单总的名称 [plus] ^c^c^p(load “plus32.lsp”) (plus32) ;菜单名,加载,执行 ;一定是一个空行 (c)加载菜单和执行函数 用menuload函数执行加载. 2.制作较为复杂的菜单 (a)首先定义两个函数,并保存为plus32.lsp和plus45.lsp : (defun plus32() (setq a (+ 3 2)) ) (defun plus45() (setq a (+ 4 5)) ) (b)编写菜单生成文件,并保存为mylisp.mnu: ***MENYGROUP=MYLISP ***pop1 [mylisp1] [first] ^c^c^p(load "plus32.lsp") (plus32) [first2] ^c^c^p(load "plus45.lsp") (plus45) ***pop2 [mylisp2] [first2] ^c^c^p(load "plus32.lsp") (plus32) [first4] ^c^c^p(load “plus45.lsp”) (plus45) (c)加载菜单和执行函数 用menuload函数执行加载. 第十三章保持程序畅通 1.程序示例 (a)首先定义一个函数,并保存为myline.lsp: (defun myline() (graphscr) (setq pt1 (getpoint "\n请输入第一个点:")) (setq pt2 (getpoint pt1 "\n请输入第二个点:")) (command "line" pt1 pt2 "") )

AutoLisp入门教程

單元一:AutoLISP主角瀟灑登場 一. AutoLISP 是何方神聖? 1.AutoLISP是AutoCAD的最佳拍檔! 2.AutoLISP內含於AutoCAD軟體內,不用另外花錢買! 3.AutoLISP是強化AutoCAD最好、最直接的『程式語言』! 4.AutoLISP易學、易用,即使不會程式設計的AutoCAD使用者,都能在最短 的時間內,寫出令人驚訝、讚嘆的功能! 5.若說AutoLISP的出現,是替AutoCAD 創造一片天的『最大功臣』,實不 為過一點也不誇張! 6.AutoLISP希望您去學習它、改善它、發揮它、享受它.真的!它的威力、魅 力無窮! 二. AutoLISP 程式語言的特質分析: 學習AutoLISP是非常容易的,對初學者而言,即使沒有學習過任何的程式語言,都能很快的上手,寫出精彩漂亮的AutoLISP程式!

三.撰寫AutoLISP 的動機? 1.欲強化AutoCAD 原有指令時. 2.欲創造更有用的AutoCAD 新指令. 3.欲簡化繁瑣的環境設定或繪圖步驟時. 4.欲處理參數式繪圖時. 5.欲做圖面資料讀檔、寫檔. 6.欲做AutoCAD 簡報展示時. 7.欲達到真正靈活掌控AutoCAD 時. 8.欲提昇自己跨上AutoCAD 高手列車時. 四.AutoLISP 的效益評估? 1. 對公司負責人或設計主管而言: A. 也許某員工或幹部花了20個小時撰寫一個AutoLISP程式,表面上,這將近三天的時間,他連一張圖都沒有畫,甚至可能偶有發呆、沈思,若此程式一天可以替公司繪圖部門節省1小時繪圖時間,那算一算,只要20天就抵銷開發成本,而20天以後都是賺的,『用的愈久,省的愈多』! B.若員工皆有此動力,在不影響正常工作,『鼓勵』都來不及,那有『壓抑』的道理,甚至還要派遣優秀人員出去受 訓,學習更好的設計技巧與創意呢?! C.千萬不要因為您的不懂或壓抑,SHOW您的權威與POWER,如此,不但對員工造成打擊,甚至您可能成為阻礙 了公司電腦化進步的罪魁禍首 D. 當然,若要撰寫的程式很多,內部設計人員的程式功力距離太遠,達成需求的時間反而變得遙遙無期,那倒不如求助於市面上已有的相關AutoCAD 支援軟體。 2. 對設計人員而言: A. 得到一筆提昇績效獎金呢? 當然,無形中,『AutoCAD 高手的封號』也將黃功力又往前邁出了一大步,對個人的成長幫助匪淺,幸運的話,搞不好還可以袍加身,不亦樂乎!!!

AutoCAD之AutoLisp入门教程

AutoLisp入门教程 本节通过一个简单的实例来讲述LISP程序的创建过程,介绍编制LISP程序的一些基本步骤,以及LISP程序在AutoCAD中的加载和运行的方法。首先来创建一个最简单的LISP程序—-“Hello.lsp”,在AutoCAD 2002中加载并运行该程序,将会在命令行出现-“Hello, Visual LISP!”。 36.2.1 Visual LISP与AutoCAD的通信 用户可以直接在AutoCAD命令行中键入AutoLISP表达式。AutoCAD通过括号来确认AutoLISP表达式。AutoCAD每当发现一个左括号,就确认为AutoLISP表达式,并由AutoLISP求表达式的值后返回AutoCAD,AutoCAD使用返回结果并继续进行其他工作。 注意在AutoLISP表达式中,左、右括号必须配对,否则AutoCAD将给出提示符n>,n表示右括号丢失数目。 此外,在AutoCAD中调用并执行AutoLISP程序。在AutoLISP程序中采用COMMAND函数来与AutoCAD 命令程序处理器通信,COMMAND从AutoLISP获得命令并将其传给AutoCAD。 36.2.2 实例1 最简单的LISP程序——“Hello.lsp” Step 1 创建新文件 (1) 运行AutoCAD 2002系统,以“acadiso.dwt”为样板创建图形文件,并调用“vlisp”命令进入Visual LISP环境。 (2) 单击“Standard(标准)”工具栏中的按钮,新建一个LISP文件。 Step 2 输入代码并保存文件 (1) 在编辑窗口中输入源文件“Hello.lsp”的代码,如图36-3所示。程序清单如下: ;;;* Hello.lsp – Visual LISP文件实例 (prompt "Pick point:") ;指定运行时的提示信息 (setq ipt (getpoint)) ;在屏幕上指定一点并将其坐标值赋予变量“ipt” (setq hgt 15) ;给变量“hgt”赋值 (Command "_.TEXT" "_S" "STANDARD" ipt hgt 0 "Hello, Visual LISP!") ;调用“Commnad”函数与AutoCAD进行通信 [img]https://www.wendangku.net/doc/c016071444.html,/Files/AutoCad/146-1.JPG[/img]

2021年AutoLISP从入门到精通初级教程(新手必备)

AutoLISP入门 欧阳光明(2021.03.07) 单元一:AutoLISP主角登场 一. AutoLISP 是何方神圣? 1、AutoLISP是AutoCAD的最佳拍檔! 2、AutoLISP内含于AutoCAD软件内,不用另外花钱买! 3、AutoLISP是强化AutoCAD最好、最直接的『程序语言』! 4、AutoLISP易学、易用,即使不会程序设计的AutoCAD使用者,都能在最短的时间内,写出令人惊讶、赞叹的功能! 若说AutoLISP的出现,是替AutoCAD 创造一片天的『最大功臣』,实不为过一点也不夸张! 5、AutoLISP希望您去学习它、改善它、发挥它、享受它.真的!它的威力、魅力无穷! 二. AutoLISP 程序语言的特质分析: 学习AutoLISP是非常容易的,对初学者而言,即使没有学习过任何的程序语言,都能很快的上手,写出精彩漂亮的AutoLISP程序! 语法简单:不用特殊的变量宣告,非常富有弹性,比起其它的程序语言,它的语法可说是非常简单而有其独特的风格! 功能函数强大:除一般性的功能函数外,又拥有为数不少控制配合AutoCAD的特殊函数,再加上AutoLISP可直接呼叫执行所有AutoCAD的指令,以及掌握运用所有的AutoCAD系统变量,功能之强大令人欣喜不已! 撰写的环境不挑剔:只要是一般的文书编辑软件都适用! 如:Windows的记事本、PE2、PE3、DW3、书中仙、汉书、EDIT....等 直译式程序:不用再作编译,『即写即测、即测即用』,马上可以在AutoCAD中响应效果,马上就有成就感! 横跨各作业平台:悠然自得,虽然AutoCAD有DOS、Windows版本之分但是AutoLISP却可在不改写的原貌下,加载与执行! 三.撰写 AutoLISP 的动机? 1、欲强化 AutoCAD 原有指令时. 2、欲创造更有用的 AutoCAD 新指令. 3、欲简化繁琐的环境设定或绘图步骤时.

AutoLISP从入门到精通初级教程(新手必备)

AutoLISP入门 单元一:AutoLISP主角登场 (2) 单元二:AutoLISP的关键、基本结构及语法 (4) 单元三:快速分类浏览AutoLISP功能函数(一) (10) 单元四:快速分类浏览AutoLISP功能函数(二) (13) 单元五:轻松快速的掌握AutoLISP设计技巧 (16) 单元六:图元数据的取得与活用技巧(一) (21) 单元七:图元数据的取得与活用技巧(二) (25) 单元八:新手上路-参数设计的关键技巧 (31)

单元一:AutoLISP主角登场 一. AutoLISP 是何方神圣? 1、AutoLISP是AutoCAD的最佳拍檔! 2、AutoLISP内含于AutoCAD软件内,不用另外花钱买! 3、AutoLISP是强化AutoCAD最好、最直接的『程序语言』! 4、AutoLISP易学、易用,即使不会程序设计的AutoCAD使用者,都能在最短的时间内,写出令人惊讶、赞叹的功能! 若说AutoLISP的出现,是替AutoCAD 创造一片天的『最大功臣』,实不为过一点也不夸张! 5、AutoLISP希望您去学习它、改善它、发挥它、享受它.真的!它的威力、魅力无穷! 二. AutoLISP 程序语言的特质分析: 学习AutoLISP是非常容易的,对初学者而言,即使没有学习过任何的程序语言,都能很快的上手,写出精彩漂亮的AutoLISP程序! 语法简单:不用特殊的变量宣告,非常富有弹性,比起其它的程序语言,它的语法可说是非常简单而有其独特的风格! 功能函数强大:除一般性的功能函数外,又拥有为数不少控制配合AutoCAD的特殊函数,再加上AutoLISP可直接呼叫执行所有AutoCAD的指令,以及掌握运用所有的AutoCAD系统变量,功能之强大令人欣喜不已! 撰写的环境不挑剔:只要是一般的文书编辑软件都适用! 如:Windows的记事本、PE2、PE3、DW3、书中仙、汉书、EDIT....等 直译式程序:不用再作编译,『即写即测、即测即用』,马上可以在AutoCAD中响应效果,马上就有成就感! 横跨各作业平台:悠然自得,虽然AutoCAD有DOS、Windows版本之分但是AutoLISP却可在不改写的原貌下,加载与执行! 三.撰写AutoLISP 的动机? 1、欲强化AutoCAD 原有指令时. 2、欲创造更有用的AutoCAD 新指令. 3、欲简化繁琐的环境设定或绘图步骤时. 4、欲处理参数式绘图时. 5、欲做图面资料读文件、写文件. 6、欲做AutoCAD 简报展示时. 7、欲达到真正灵活掌控AutoCAD 时. 8、欲提升自己跨上AutoCAD 高手列车时. 四.AutoLISP 的效益评估? 1. 对公司负责人或设计主管而言: A. 也许某员工或干部花了20个小时撰写一个AutoLISP程序,表面上,这将近三天的时间,他连一张图都没有画,甚至可能偶有发呆、沈思,若此程序一天可以替公司绘图部门节省1小时绘图时间,那算一算,只要20天就抵销开发成本,而20天以后都是赚的,『用的愈久,省的愈多』! B. 若员工皆有此动力,在不影响正常工作,『鼓励』都来不及,那有『压抑』的道理,甚至还要派遣优秀人员出去受训,学习更好的设计技巧与创意呢?! C. 千万不要因为您的不懂或压抑,SHOW您的权威与POWER,如此,不但对员工造成打击,甚至您可能成为阻碍了公司计算机化进步的罪魁祸首 D. 当然,若要撰写的程序很多,内部设计人员的程序功力距离太远,达成需求的时间反而变得遥遥无期,那倒不如求助于市面上已有的相关AutoCAD 支持软件。

AUTOLISP教程

函数 (Function) 在AutoLISP程序语言中所有的成份都是以函数的形式出现,AutoLISP程序就是顺序执行连串的函数.函数的运行过程就是对函数的求值(结果)过程;函数的基本语法如下: (函数名称参数1 参数2....) e.g. (PRINC "AutoLISP Programming") 每一个完整的函数必须包在一对小括号( )内,左边为开括号,右边为关括号; 如有若干数量的开括号,则一定有同等数量的关括号对应. 左边开括号后紧随函数名称. 函数名称与参数之间,或参数与参数之间须最少留一个空格. 函数可有一个或多个参数(也可能没有参数),视该函数而定. 函数名称不分大小写,即大小写字母视为相同. 数据型态 (Data Type) 整数 (INT) 没有小数字的数值,32位有号数,范围从+2,147,483,647到-2,147,483,648 实数 (REAL) 带小数字的数值,以倍精度浮点格式储存(最少14位小 e.g. 12.5 数) 当数值在1与-1之间时,必须加上前导零 e.g. 0.05 可以科学记号表示 : 在E或e后加上次方值 e.g. 4.1e-6 字符串 (STR) 一般文字,其前后必须加上双引号 " e.g. "AutoCAD" 控制字符或脱逸码必须为小写,且须在字符前加上反斜 e.g. "\AutoCAD"杠 \ 像素名称 (ENAME) 是指定给图文件内对象的指针(Pointer,为16进位的数字卷标) e.g. 像素名称在图文件内是唯一的,不会重复 对象的像素名称只在目前作业中有效,再开启图档时,会指定新的像素名称予 该对象 档案 (FILE) 以OPEN函数所开启档案的指针,作为其它函数(读写该档案)的自变量 数据型态 (Data Type) 选集 (PICKSET)

autolisp入门教程

一、学好AutoLISP的关键、基本结构与语法: 1. AutoLISP程式语言的特质 A.语法简单 B.功能函数强大 C.撰写的环境不挑剃 D.直译式程式,『即写即测、即测即用』 E.横跨AutoCAD各作业平台,悠然自得(注:以上五点,读者可以参考上一章的剖析!!!) 2.学好AutoLISP的关键:充份掌握『语法结构』&『功能函数』的搭配!!! 3.重要的AutoLISP的基本语法结构 规则1:以括弧组成运算式,、相对称左右括弧数一定要成双成对 规则2:运算式型态:(运算元运算子运算子运算子) 1.1运算元包括『功能函数』&『自定函式』 1.2运算子(引数)包括: A.整数(Integer)如8,-17,500,9999 ..... B.实数(Real)如8.5,-17.456 ..... C.字串(String)如"AutoCAD","123" D.串列(List)如("a" "b" "c"),(xy)

E.图元名称代码如 F.档案代码如..... G.选择群集代码如 规则3:运算式中的『运算子』,可以是另一『运算式』或『副程式』规则4:多重的括弧运算式,运算的先后顺序是『由内而外、由左而右』规则5:以档案型态存在的AutoLISP程式(ASCII档案),其副档名必须是.lsp 规则6:撰写的环境,只要是一般的文书编辑软体、记事本,可编辑ASCII 档案者都适用 规则7:以defun功能函数定义新的指令或新的功能函式 规则8:新定义的功能函式名称,若为『C:函式名』,则此函式可为AutoCAD新指令 规则9:载入AutoLISP程式的作法:=>指令:后直接键入(load "LISP 主档名") 规则10:AutoLISP程式中,在『分号;』后的内容均为注解,程式不处理,适时的增加注解,将使程式更具可看性、学习性及完整性 规则11:AutoLISP最常用的变数型态是『整数』、『实数』、『字串』、『点串列』四种,变数的型态依据设定值而自动定义,变数会一直储存该值,直到被重新设定值或绘图结束自动消失

用Autolisp对AutoCAD进行二次开发

用AutoLISP对AutoCAD进行二次开发 一、什么是CAD的二次开发?(为什么需要对CAD进行二次开发) 我们在设计、绘图时采用AutoCAD、ProE、Solidwork、UG等设计软件,在复杂问题或特殊用途的设计中,各种软件的原有功能往往难以解决问题,例如CAD里没有直接绘制正弦曲线和抛物线等曲线的命令。因此,只是会使用各软件的基本功能是不够的,根据我们的特殊用途进行软件的用户化定制和二次开发,往往能够大大提高工作效率和技术水平。 二、什么是AutoLisp?如何用其进行二次开发? AutoLISP是由Autodesk公司开发的一种LISP程序语言,LISP是List Processor的缩写。通过autolisp 编程,可以节省工程师很多时间。AutoLISP语言作为嵌入在AutoCAD内部的具有智能特点的编程语言,是开发应用AutoCAD不可缺少的工具。 当前AutoCAD的二次开发工具主要有:VisualLisp(它是AutoLisp的集成开发环境)、VBA、ObjectARX和.NET API等,这里只介绍AutoLisp。 下面由浅入深地介绍一下如何应用AutolLisp进行二次开发。 最简单的应用是在命令行中编写和执行lisp语句,进行简单的计算、绘图、查询等操作。 稍复杂些的就要把语句(代码)放到扩展名为lsp的文件中,用的时候先加载到CAD中,然后输入自定义的函数名执行。 当开发的程序越来越多,就需要进行有效的管理,使我们能方便的找到和应用这些程序。到那个程度的时候就需要用到用户自定义的工具按钮、菜单和对话框了。 图1 根据程序数量选择二次开发形式 (1)在命令行中编写和执行程序 例1:(+ 2 3) 例2:(setq a 2) (setq b 3) (+ a b) 例3:(setq a 2)(setq b 3)(+ a b) 例4:(setq p1 (list 0 0))(setq p2 (list 200 200))(command “line” p1 p2 “”) ;;语句之间不空格 例5:(setq p1 (list 0 0)) (setq p2 (list 200 200)) (command “line” p1 p2 “”) ;;语句之间空格 ;; 表示语句(程序代码)的注释

相关文档