当前位置:文档之家› 几个lisp程序范例

几个lisp程序范例

2018/10/4 1
AutoCAD在测绘中的应用
2.AutoLISP语言程序示例 例1:下面定义的是一个用多义线画正方形的函数: (defun C:hzfx(/ pt1 pt2 pt3 pt4 len) (setq pt1(getpoint "Lower left corner:")) (setq len(getdist "Length of one side:")) (setq pt2(polar pt1 0.0 len)) (setq pt3(polar pt2(/ pi 2.0)len)) (setq pt4(polar pt3 pi len)) (command "pline" pt1 pt2 pt3 pt4 "C") ) 像这样的定义函数,在用load函数装载(load "hzfx") 后,就可以在Command:提示行只输入函数名的“hzfx”部分。
2018/10/4 8
AutoCAD在测绘中的应用
练习5:自定义一个求和函数(qh), S=12+22+32+…n2
(defun c:qh( ) (setvar "cmdecho" 0);关闭中间结果显示 (setq n(getint "请输入一个正整数:")) (setq s 1) (setq j 1) (while(< j n) (setq s(+ s(*(+ j 1)(+ j 1)))) (setq j(1+ j)) ) (print s) )
2018/10/4 4
AutoCAD在测绘中的应用
练习2:定义输入矩形的对角点绘制矩形的命令函数。
p4
p1
p3
p2
(defun c:hzjx (/ p1 p2 p3 p4) (setq p1(getpoint "\n输入矩形的一个角点:")) (setq p3(getpoint "\n输入矩形的另一个角点:")) (setq p2(list (car p3)(cadr p1))) (setq p4(list (car p1)(cadr p3))) (command "pline" p1 p2 p3 p4 "c") )
2018/10/4
p3
p7
pc
p2
p4
7
p6
AutoCAD在测绘中的应用
练习4:自定义一个函数(ht),完成新建图层为“zy”,图层颜色为红色,在该 图层绘制符合下图尺寸和相关要 求的图形(见红色部分)要求执行此函数时使 用键盘输入第1个圆的圆心坐标。 (defun c:ht( ) (setvar "cmdecho" 0);在命令行不显示ht提示 (setq pt1(getpoint "frist dian")) 第2个圆 (setq r 10 len 20) (setq pt2(polar pt1 (/ pi 4) (+ r len r))) (setq pt3(polar pt1 (/ pi 4) r) ) (setq pt4(polar pt3 (/ pi 4) len) ) 第1个圆 (command "layer" "n" "zy" "") ;新建作业层 (command "layer" "c" "1" "zy" "");定义作业层颜色 (command "layer" "s" "zy" "") ;将作业层设为当前层 (setvar "osmode" 0);关闭对象捕捉 (command "circle" pt1 r "") (command "circle" pt2 r "") (command "line" pt3 pt4 "") )
AutoCAD在测绘中的应用
10.6 AutoLISP程序调试与编程实例
1.AutoLISP语言程序的调试方法 程序的调试过程就是程序运行中反复发现错误和修改错误, 直到满足设计要求的过程。其中最主要的是如何发现错误发生 的位置及其性质。AutoLISP程序是以解释方式执行的,运行出 错时,一般先终止程序运行,并显示出错信息。 (1)AutoLISP语言调试的一般方法 (2)设置断点打印变量值的方法 (3)分段调试法 (4)单步执行调试法
2018/10/4 9
AutoCAD在测绘中的应用
实验编码:G1201009 实验名称:AutoLISP语言上机练习 1、熟悉和了解AutoLISP的结构特点; 2、熟悉和了解AutoLISP语言各种函数; 3、简单lisp程序编制 ① 定义一个绘制矩形的函数,要求通过交互方式输入矩 形左下角点和右上角点坐标绘制矩形。 ② 见图,圆心位于正方形中心, 正方形边长20、圆半径5,正方形的左下角 点坐标通过交互方式输入,定义一LISP函数 绘制该图。
2018/10/4 5
AutoCAD在测绘中的应用
练习3:用AutoLISP语言编写一个名为“tuxing”的自定义命 令函数。要求执行此函数时使用键盘输入一个圆的圆心坐标 和半径值,然后自动绘出该圆、两条中心线和与该圆同心的 正方形(边长等于圆的直径)。
p8 p3 p7
p1
pc
p2
p5
2018/10/4
2018/10/4 2
AutoCAD在测绘中的应用
例2:下面是一个绘制路灯符号的lisp程序。
(defun C:hld(/ dwd r ) ;画路灯符号 (setq dwd(getpoint "inter dingweidian: ")) (setq r 0.5 ) (setq pt1(polar dwd (/ pi 2.0) 0.5)) (setq pt2(polar pt1(/ pi 2.0)3.0)) (setq pt3(polar pt2 0.0 1)) (setq pt4(polar pt2 pi 1)) (setq pt5(polar pt4 (-(/ pi 2)) 0.5)) (setq pt6(polar pt5 (-(/ pi 2)) 0.5)) 2.0 (setq pt7(polar pt3 (-(/ pi 2)) 0.5)) (setq pt8(polar pt7 (-(/ pi 2)) 0.5)) (command "circle" dwd r "") (command "circle" pt6 r "") (command "circle" pt8 r "") (command "line" pt1 pt2 pt3 pt7 "") (command "line" pt2 pt4 pt5 "") ) 2018/10/4
p4
p6
6
AutoCAD在测绘中的应用
(defun c:tuxing ( / pc r p1 p2 p3 p4 xc yc) (setq pc (getpoint "\n 输入圆心坐标点:")) (setq r (getreal "\n 输入圆的半径:")) (setq p1 (polar pc pi (+ r 3))) (setq p2 (polar pc 0 (+ r 3))) (setq p3 (polar pc (/ pi 2)(+ r 3))) (setq p4 (polar pc (/ (* pi 3) 2) (+ r 3))) (command "circle" pc r) p8 (command "line" p1 p2 "") (command "line" p3 p4 "") (setq xc (car pc) yc (cadr pc)) p1 (setq p5 (list (- xc r) (- yc r))) (setq p6 (list (+ xc r) (- yc r))) (setq p7 (list (+ xc r) (+ yc r))) (setq p8 (list (- xc r) (+ yc r))) p5 (command "line" p5 p6 p7 p8 "C") )
2018/10/4 10
根据《图式》
2.0 1.5 4.0
84.46
1.0
3
AutoCAD在测绘中的应用
练习1:写出在AotuCAD编辑状态中运行函数tu时,在 屏幕图形区和文本区的显示结果。
(defun C:tu ( / pc1 pc2 pc3 r ) (setq pc1 (list 50.0 50.0)) (setq r 20 ) pc2 (setq pc2 (polar pc1 (/ pi 2) (* r 2))) pc3 (setq pc3 (polar pc2 pi (* r 2))) (command "circle" pc1 r ) (command "circle" pc2 r ) (command "circle" pc3 r ) (command "line" pc1 pc2 pc3 "c" ) pc1 (princ pc1) (princ pc2) (princ pc3) (princ r) 文本区:(50.0 50.0) (50.0 90.0) (10.0 90.0) 20 )
相关主题