AutoLISP 演练(一)
一、输入左下角点、矩形宽、矩形高后,自动的将图形依所给的条件画出
二、变量约定
本程序所需的AutoLisp功能函数
(setq 变量名 变量值) ⬅ 设定变量值
(getpoint [基点] [提示]) ⬅ 请求参考基点输入一个点坐标
(getreal [提示]) ⬅ 请求输入一个实数
(polar 基点 弧度 距离)⬅按照极坐标方法取得另一坐标点
(command “AutoCAD命令”......)⬅调用执行AutoCAD命令
(getdist[基点] [提示]) ⬅请求输入一段距离
(getint[提示]) ⬅请求输入一个整数值
(getcorner 基点 [提示]) ⬅请求输入另一个矩形框对角点坐标
(car 列表) 返回列表中第一个元素,通常用来求x坐标
(cadr 列表) 返回列表中第二个元素,通常用来求y坐标
(caddr 列表) 返回列表中第三个元素,通常用来求z坐标
三、代码实现
(defun c:pbox (/ pa pb pc pd ww hh mp1 mp2 mp3 mp4) ;定义所需要得局部变量,减少内存占用
(setvar "cmdecho" 0) ;设定变量cmdecho=0 关闭命令响应
(setvar "blipmode" 0)
;;;以下pa、ww、hh值须由用户输入
(setq pa (getpoint "左下角点: "))
(setq ww (getdist pa "\n宽度:")) ;给定宽度时在屏幕上拉取一段距离代替
(setq hh (getdist pa "\n高度:")) ;给定高度时在屏幕上拉取一段距离代替
;;;以下pb、pc、pd值须由程序依据pa、ww、hh计算
(setq pb (polar pa 0 ww))
(setq pc (polar pb (/ pi 2) hh))
(setq pd (polar pc pi ww))
;;;以下依据pa、pb、pc、pd点画矩形
(command "pline" pa pb pc pd "c")
;;;以下mp1、mp2、mp3、mp4值须由程序依据pa、ww、hh计算得到
;;;&pb、pc、pd值计算得出
(setq mp1 (polar pa 0 (/ ww 2)))
(setq mp2 (polar pb (/ pi 2)(/ hh 2)))
(setq mp3 (polar pd 0 (/ ww 2)))
(setq mp4 (polar pa (/ pi 2)(/ hh 2)))
;;;以下依据mp1、mp2、mp3、mp4点画出两条线
(command "line" mp1 mp3 "")
(command "line" mp2 mp4 "")
(prin1);避免出现空响应nil
)
(prompt " \n<<C:PBOX>> 程序设计,作者:Talor") ;丰富程序界面内容
(prompt " \n这是我的第一个正式的AutoLISP程序")
(prin1) ;避免出现空响应nil
四、结束
通过梳理程序流程,优化程序结构,确能减少繁杂手工作业时间