基于AutoLISP语言CAD二次开发浅析及功能实现.doc

基于AutoLISP语言CAD二次开发浅析及功能实现.doc

ID:51552884

大小:76.00 KB

页数:7页

时间:2020-03-13

基于AutoLISP语言CAD二次开发浅析及功能实现.doc_第1页
基于AutoLISP语言CAD二次开发浅析及功能实现.doc_第2页
基于AutoLISP语言CAD二次开发浅析及功能实现.doc_第3页
基于AutoLISP语言CAD二次开发浅析及功能实现.doc_第4页
基于AutoLISP语言CAD二次开发浅析及功能实现.doc_第5页
资源描述:

《基于AutoLISP语言CAD二次开发浅析及功能实现.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、基于AutoLISP语言CAD二次开发浅析及功能实现摘要:Autocad是工程建设普遍使用的一种功能强大的绘图软件,而且可以进行用户的二次开发。本文介绍了基于AutoLISP语言的CAD二次开发过程,并例举了部分功能实现的代码和调用过程,以期节约时间,提高CAD绘图效率。关键词:AutoLISP语言,Autocad—次开发,坐标点提取1.AutoLISP语言AutoLISP语言嵌套于Autocad内部,它是LISP语言与Autocad有机结合的产物,是为二次开发Autocad而专门设计的编程语言。AutoLISP采

2、用了和CommonLISP最相近的语法和习惯约定,它具有CommonLISP的特性,又针对autoLISP增加了许多功能。它可以把autoLISP程序和autocad的绘图命令结合起来,使设计和绘图完全融为一体,方便了对屏幕图形的实时修改,参数化设计和交互设计,为在绘图领域应用人工智能提供了方便。AutoLISP语言嵌入autocad之后,Autocad就不再只是交互式的图形绘制软件,而成为了真正能够进行计算机辅助设计绘图的cad软件。1.AutoLISP语言结构AutoLISP数据类型丰富,包括:整型、实型、字符

3、串、表、文件描述符、Autocad的图元名、Autocad的选择集等。AutoLISP处理的对象是符号表达式,简称表达式。表达式相当于其他编程语言中程序的语句,是由原子或表构成的。原子可以细分为数原子,串原子和符号原子。多数情况下,AutoLISP表达式以表的形式存在,其格式如下所示:(函数名[参数]……)每个表达式以左括号开始,并由函数名及参数组成,左括号后的第一个元素必须是函数名。参数的数量可以是任意多个,也可以是0个,这取决于具体函数,每个参数也可能是表达式。表达式以右括号结束,每一个表达式的返回值都能被外层

4、表达式使用,最后计算的值被返回到调用的表达式。AutoLISP变量名称可以由任何可写字符以任意顺序组成,如字母、数字、符号等;但是不可以全部由数字组成,而且不能包含下列字符:小数点括号“()”分号“;”单引号”双引号“””。变量的数据类型是变量的重要特征,因为它关系到存放变量的存储空间的大小。大多数计算机语言在为变量赋值前都会对变量进行说明,而AutoLISP无需对变量做事先的类型说明,变量的数据类型就是变量被赋予的值的数据类型。AutoLISP函数包含基本函数和用户输入函数,基本函数主要有:数值函数、字符串处理函

5、数、表处理函数、符号操作函数、函数处理函数、错误处理函数、条件和循环函数和应用程序管理函数等。1.图形坐标点的自动提取程序实例在实际工程的工作中,经常根据需要在CAD中提取点坐标,这项工作不但工作量变大,而且还容易出现错。本例通过AutoLISP程序来实现坐标点的自动提取,以减轻工作量,减少提点错误。程序名称:xzbd(写坐标点)功能:将选取的直线各顶点坐标写到外部文件,并在提取点坐标的地方画一个圆,以便查找遗漏。程序内容:(defunc:xzbd()'定义一个命令xzbd(写坐标点)(setvar"cmdecho

6、"0)'setvar函数设定系统变量cmdecho的值为0以关闭回显(setqffn(getfiled"选取文件""““doc"1))'调用存储提取出坐标点的文档,并将返回值赋给变量ffn。(setqff(openffn“w"))'以写的方式打开文件ffn,将坐标点写入文档中,并将返回值赋'给变量ffo(closeff)"关闭文件ff(princ"选取直线...")'用princ函数提示用户选取直线。(setqss(ssget))'构造一个空的选择集,并将选择集函数赋值给变量SS。(setqi0)'把0赋值给变

7、量i。(setvar"pdmode”33)'以所选定的方式显示点对象。(repeat(sslengthss)'确定选择集ss中实体的个数,并重复实体个数次数的计算。(setqssn(ssnamessi))'返回选择集ss中第i个元素所表示的实体,并赋值给变量ssn。(setqendata(entgetssn))'返回包含实体所定义的一个表,并赋值给变量endatao(setqn0)'利用setq函数将0赋值给变量no(repeat(lengthendata)'并重复endata长度次数的计算。(setqpp(nth

8、nendata))'利用nth函数返回表endata中第n个元素,并赋值给变量pp。(setqkey(carpp))"利用car函数返回列表pp中第一个元素,并将此值赋值给变量key。(if(二key10)判断key的值是否等于10,如果是,则继续执行。(progn(setqx(cadrpp))'利用cadr函数,返回表中第二个元素,并赋值给变量X。(set

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。