AutoCAD二次开发技术

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学习AutoCAD二次开发技术的体会

1 引言

AutoCAD是一套向量式计算机辅助制图软件,具有强大的图形处理功能,目前它已经广泛应用于机械、电子、电气、建筑、土木服装等行业和领域。

最初版本的AutoCAD是在1982年发布的。AutoCAD开放的结构体系,为用户提供了多种二次开发的工具,使得它的缺陷之处可以得到弥补,因此三十多年来它持续拥有旺盛的生命力。AutoCAD的二次开发,能够实现参数化绘图,允许用户开发自己的命令、标准库文件和各种应用程序,能充分发挥AutoCAD的功能。本文将介绍我学习Visual LISP这一种工具进行开发的过程和体会,说明我在学习过程中体会到的二次开发的特点和一些优点,并举一些具体例子。

2实施过程

2.1LISP语言的主要学习内容总结

2.1.1变量及其赋值:

(1)LISP语言中变量的使用比较灵活,变量不用先定义和指定类型,需要的时候直接引入,而且其内容较为随意,可以是整数、实型数、字符串、点、表等等。(2)变量的赋值主要用setq语句,格式为(setq 变量名要赋的内容)。

2.1.2基本的运算函数和数学函数:

(1)加、减、乘、除、取余运算函数名分别为“+”、“-”、“*”、“/”、“rem”函数使用格式为(符号数1 数2 [数3…])。

(2)基本初等函数:

指数函数(expt 底数自变量值)。

自然指数函数、自然对数函数、正弦、余弦、反正切、根式、绝对值函数分别是exp、log、sin、cos、atan、sqrt、abs,调用格式为:(函数名自变量值)。

2.1.3表处理函数:

(1)表构造函数:(list n1 n2 n3 n4 […]),返回一个表。配合赋值语句可把表赋值给变量,如(setq biao (list 1 2 3 4)),就把(1 2 3 4)赋给变量biao。

(2)表长度运算:(length 表),返回表元素的个数。

(3)表中元素的提取:

(car 表)返回表中第一个元素。例如(car (1 2 3 4 ))返回1。

(cdr 表)去掉表中第一个元素,其余元素组成表返回。上例返回(2 3 4)。嵌套使用可提取个元素,嵌套时可以缩写,如caddr表示提取第三个元素。另一种常用表提取函数nth格式为:(nth n 表),它表示提取表中序号为n的元素。注意序号是从零开始的,表中第一个元素序号为0。

2.1.4输入输出函数:

(1)输入函数格式为: (函数“提示内容”)。常用函数有:getpoint、getint 、getreal 、getstring分别表示等待用户输入点、整型数、实型数、字符串。(2)输出函数格式为:(princ 表达式)(print 表达式)。其中print先换行再输出。2.1.5常用符号:

(1) “!”符用于查看某一变量。如!a,如果a变量为1,则显示1。

(2)英文单引号,是quote的缩写,表示不求值而是引用,如(setq a ‘(1 2 3))就把表(1 2 3)赋值给a,若没有该符号则会对(1 2 3)求值,会出错。(3)关系运算符,用写条件表达式,有“<”、“>”、“<=”、“>=”、“/=”、“=”。分别表示小于、大于、小于等于、大于等于、不等于、等于。例如(= a b)

表示条件a等于b。(> a b)表示条件a大于b。

2.1.6分支和循环结构

(1)if语句: (if 表达式 (语句1) (语句2) )。表示表达式成立时执行语句1,否则执行语句二。注意语句1、语句2只能是一个语句。如果要使表达式成立时执行多个语句,则使用progn函数。如(progn (语句) (语句) (语句) …)。

(2)repeat语句(repeat n 循环体),n表示循环的次数。

(3)while语句(while 表达式循环体),先判断表达式是否成立,表达式成立时执行循环体。 Repeat语句只能执行次数已知的循环,而while语句既可以执行次数已知的,也可以执行次数未知的。

2.1.7常用的用于绘图的函数

(1)command函数,它是通过直接调用AutoCAD命令来实现的。例如: (command “pline” p0 p “”)表示画一条起点为p0,终点为p的多段线。(command “circle” p0 100)表示画一个以p0为圆心的半径为100的圆。(command “move”“L”“” p0 p)表示把一个对象以p0为基点移动到p。

(2)polar函数,它是通过点与点之间的相对位置来确定点的坐标的函数。

格式(polar p0 相对角度t 两点间距离d) 注意相对角度是极角,单位为弧度。该函数返回一个相对p0角度为t,距离为d的点。与赋值语句配合可将得到的点赋值给一个变量。例如 (setq p (polar p0 pi 10))把p0左侧距离10的点赋值给了p。

2.2利用LISP语言绘图实例

2.2.1绘制函数图像

用“以直代曲”的思想用许多很短的线段代替函数图像,从而得到近似图像。用LISP语言中的数学函数、循环结构,并用command函数实现编程。程序如下:

(1)绘制幂函数图像

(defun 幂函数()

(setq n (getint "请输入指数\n")) (setq a (getreal "请输入自变量开始范围\n"))

(setq b (getreal "请输入自变量结束范围\n"))

(setq p0 (polar (getpoint "请选择坐标原点\n") 0 a))

(setq x a) (command "pline")

(while(<= x b)

(setq y (expt x n))

(setq p (polar p0 (/ pi 2) y )) (command p)

(setq x (+ x 0.1))

(setq p0 (polar p0 0 0.1))

)

(command) )

编辑好程序后保存,在CAD中加载程序,使用命令(load “文件路径”),或者直接拖动文件到绘图区。然后,在命令行输入(幂函数)从而调用该函数,系统就开始执行该函数的代码。按照提示输入幂函数指数,自变量范围,基点,就会绘制出如图所示函数图像。

注意: 一、调用函数时应当适当缩放界面,从而保证用

command函数调用绘图命令时,系统能够

准确的选择指定的点,否则会因为点非常

密集而选错。二、编辑程序的代码时和在

命令行输入命令时必须保证是英文符。

相关文档
最新文档