autolisp编程作业

合集下载

AUTOLISP程序命令(精校版本)

AUTOLISP程序命令(精校版本)

AUTOLISP程序命令(精校版本)1.+ (加)返回所有数的和2.– (减)将第一个数减去其他数的和并返回差值3.* (乘)返回所有数的乘积4./ (除)将第一个数除以其他数的乘积并返回商5.= (等于)比较参数是否相等6./= (不等于)比较参数是否值不相等7.< (小于)如果每个参数值都小于它右边的参数则返回T,否则返回 nil8.<= (小于或等于)如果每个参数值都小于或等于它右边的参数则返回 T,否则返回 nil9.> (大于)如果每个参数值都大于它右边的参数则返回T,否则返回 nil10.>= (大于或等于)如果每个参数值都大于或等于它右边的参数则返回 T,否则返回 nil11.~ (按位非)返回参数的按位非(即 1 的补码)12.1+ (增1)将参数加 113.1– (减1)将参数减 114.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关闭一个已打开的文件/doc/2b78ad21b107e87101f69e3143 323968011cf4ec.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删除对象(图元)或恢复先前删除的对象。

AUTOLISP 编程(含绘图与编程)

AUTOLISP 编程(含绘图与编程)

CAD二次开发练习(打开程序的时候要把捕捉关掉)南通大学-机械工程学院(defun c:lx1()(setq p0(getpoint"确定基点:"))(setq l1(getreal"\n输入长方形的宽:"))(setq l2(getreal"\n输入长方形的长:"))(setq d1(getreal"\n输入圆孔的直径:"))(setq t1(getreal"\n输入键槽的高度:"))(setq b1(getreal"\n输入键槽的宽度:"))(setq r1(*0.5d1))(setq h1(+r1t1))(setq p1(polar p00(*0.6l1)))(setq p2(polar p0(*0.5pi)(*0.6l2))) (setq p3(polar p0pi(*0.6l1)))(setq p4(polar p0(*-0.5pi)(*0.6l2)))(setq p5(polar p00(*0.5l1)))(setq p6(polar p5(*0.5pi)(*0.5l2))) (setq p7(polar p6pi l1))(setq p8(polar p7(*-0.5pi)l2)) (setq p9(polar p80l1))(setq p10(polar p0(*0.5pi)h1))(setq p11(polar p100(*0.5b1)))(setq p12(polar p11pi b1))(setq p13(polar p0pi(*0.5b1)))(setq p14(polar p130b1))(setq p15(polar p0(*0.5pi)r1))(setq p16(polar p0(*0pi)r1));为标注设定的点(setq p17(polar p7(*0.5pi)8))(setq p18(polar p10(*0.5pi)t1))(setq p19(polar p0(*0.25pi)(*1.2r1))) (setq p20(polar p0pi(*1.2r1)))(setq p21(polar p00(*0.7l1)))(setq p22(polar p0(*-0.5pi)r1)) (setq p23(polar p0(*0.25pi)r1)) (setq p24(polar p0(*-0.25pi)(*1.2r1))) (setq p25(polar p0(*-0.75pi)(*1.2r1))) (setq p26(polar p0(*0.75pi)(*1.2r1))) ;基本指令操作(command"pline"p6p7p8p9p6"") (command"circle"p0r1"") (command"line"p14p11"") (command"line"p11p12"") (command"line"p12p13"") (command"_trim"p13p14""p15"") (command"_trim"p16""p13p14"");保存当前图层,并建立center这个图层(setq ss(getvar"clayer"))(command"-layer""m""center""c""红色""center""l""center""center""");如图可以看到具体相应的操作,“m”为生成图层,这个图层的名称为“center”,“c”为线条定义颜色,为红色,选定当前的center图层,“l”为选择线型,选用中心线的线型,选定当前的center图层。

AutoLISP编程实例

AutoLISP编程实例

目录一、引言 (2)二、总体设计1、实现的方法和主要技术路线 (3)2、绘制阀体二维工程图 (3)3、程序流程图 (4)三、详细设计1 定义函数名 (5)2 设置图层 (5)3 设定参数 (6)4 由参数选择图框并填写标题栏 (6)5 绘制俯视图 (7)6 添加倒圆 (8)7 绘制主视图 (8)8 左视图 (9)9 剖面填充 (10)10 添加螺纹 (10)11 尺寸标注 (10)12 粗糙度的标注 (12)13 标注形位公差 (13)14 技术要求 (14)四、结论 (14)五、心得体会 (15)六、使用说明 (16)七、参考文献 (16)计算机辅助设计课程设计说明书一、引言AutoCAD二次开发的应用之一——典型零件的参数化设计在产品设计中发挥了越来越重要的作用,而参数化设计的重要环节是程序的编写,其在设计开发中占要想当大的比重,是参数化设计的核心,是整个设计任务的最精华的部分。

本文的程序设计以阀体的零件图做了程序的设计。

参数化设计中有两个必须理解的问题:一、计算机辅助设计中需要对语句命令做参照,并做出优化选择。

这对计算机的运行速度等都很重要。

另外,对数学方法也必须有较好的理解,以求的一个好的计算方法。

二、对图纸参数的选择要做出合理的选择。

这对于以后的变参操作的正确性和应用性很重要。

该次设计中采用的AutoCAD二次开发的语言为LISP语言。

它是AutoCAD中自带的一种高级语言。

并对用户来是掌握起来比较容易,所以在当今比较流行。

LISP(Lisp Processing Language)是人工智能领域中广泛采用的一种程序设计语言。

主要用于人工智能、机器人、专家系统、博弈、定理证明等领域。

LISP也称为符号语言,因为它处理的对象是符号表达式。

LISP语言的程序和数据都以符号表达式的形式来表示,因此,一个LISP程序可以把另一个LISP程序作为它的数据来处理。

参数化设计是CAD中最为重要的研究领域之一。

AutoLISP编程

AutoLISP编程

第4 3章 A u t o L I S P编程为了使用A u t o L I S P,你必须学会如何使用A u t o L I S P中的函数,还必须学习A u t o L I S P编程。

结束这一章之后,你应该会:• 实现基本的A u t o L I S P编程。

• 分析A u t o L I S P程序。

• 在A u t o C A D中使用A u t o L I S P程序。

43.1 AutoLISP基础A u t o L I S P编程可以非常简单,也可以非常复杂。

A u t o L I S P程序由一系列指令构成。

A u t o L I S P编程语言包含许多对你的工作非常有用的函数,并内置于A u t o C A D之中。

让我们先看一看这部分。

43.1.1 算术函数你可以用A u t o L I S P进行算术运算。

启动 A u t o C A D,我们可以在命令行中直接使用A u t o L I S P子程。

在命令行,直接键入以下命令,并确保包括括号和空格。

Command: (+ 5 4)9注意这时A u t o C A D返回了值9。

这是一个简单的5加4的算术运算,并在屏幕上显示出结果。

继续键入以下加、减、乘、除算式并注意结果。

Command: (- 100 40)Command: (* 5 6)Command: (/ 100 20)注意A u t o L I S P子程在命令行中被键入时的括号。

括号告诉A u t o C A D这是一个A u t o L I S P子程。

当A u t o C A D检测到一个左括号时,它就把之后的文本交给A u t o L I S P处理。

右括号表明了语句的结束。

在A u t o C A D提示“1 >”时,你需要键入一个右括号,然后回车。

这一提示说明缺少右括号与左括号相配。

如果想测试这一情况,可以键入前面的语句,并省略右括号。

43.1.2 AutoLISP与A u t o C A D命令A u t o C A D命令可以在A u t o L I S P子程中使用。

Autolisp 程序设计例题

Autolisp 程序设计例题

• • • • • • • • • • • • • • • • • • •
定义AutoCAD命令绘制带键槽的轴的剖面图 (defun c:shafkey ( / d l t1 p0 ang p1 p2 ) (setq d ( / ( getdist “\n d=” ) 2.0 ) I ( getdist “\n l=” ) t1 ( / (getdist “\n t1=” ) 2.0 ) p0 ( getpoint “\n center point:” ) ang (atan ( / t1 ( sqrt ( - ( * d d )) ( * t1 t1 ))))) ( command “pline” ( setq p1 ( polar p0 ( - ang ) d )) ( setq p2 ( list ( + ( car p0 ) ( - l d )) ( xadr p1 ))) ( polar p2 ( /pi 2.0 ) ( * 2 t1 )) ( polar p0 ang d ) ( “a” “ce” p0 p1 “ ” ) ( setq s1 ( entlast ) ) ( command “hatch” “u” 45 2 “s1” “ “ )) ) 调用方法是: command :shafkey
ห้องสมุดไป่ตู้
例题5.绘制参数化的楼梯图。 ( defun stair ( pb l h n/ d b po p1 p2 ) (setq pc (polar pb 0 l )) ( setq pt (polar pc ( / pi 2.0) h )) ( command “line” pb pc pt “ “ ) ( setq a ( / l n ) b ( / h n )) ( setq I 1 p0 pb ) ( while ( <= I n ) ( setq p1 ( polar p0 ( / pi 2.0 )b )) ( setq p2 (polar p1 0 a )) (command “line” p0 p1 p2 “ “ ) ( setq p0 p2 i (1+ i )) ) ; while ) ; defun

AutoLISP上机参考1

AutoLISP上机参考1

AUTOLISP上机练习参考内容一、数学运算任何编程语言都提供数学函数。

在AutoLISP中,同样提供了编程以及数学计算所需的大部分数学函数,你可以使用AutoLISP对数字进行加、减、乘、除运算,还可以得到以弧度表示的角度的正弦值、余弦值及反正切值等。

使用AutoLISP还可以进行许多其他计算。

这一节主要讨论AutoLISP程序语言支持的常用数学函数。

1.加法格式(+ num1 num2 num3...)此函数(+)计算加号(+)右边所有数字的和(+ num1 num2 num3...)。

这些数字可以是整数或实数。

如果均为整数,则和为整数;如果均为实数,则和为实数。

但是如果既有整数又有实数,则和为实数。

如下所示,在前两个例子中,所有数字均为整数,所以结果是整数。

在第三个例子中,一个是实数(50.0),故结果为实数。

示例:Command:(+2 5)返回7Command:(+2 30 4 50)返回86Command:(+2 30 4 50.0)返回86.02. 减法格式(- num1 num2 num3...)此函数(-)从第一个数中减去第二个数(num1-num2)。

如果多于两个数,就用第一个数字减去其后所有数字的和[num1-(num2+num3...)]。

在下面的第一个例子中,28减去14后返回14。

因为两个数均为整数,结果亦为整数。

在第三个例子中20与10.0相加,并用50减去两数的和(30.0),返回一个实数20.0。

示例:Command:(- 28 14) 返回14Command:(- 25 7 11)返回7Command:(-50 20 10.0)返回20.0Command:(-20 30)返回河0Command:(-20.0 30.0)返回-10.03.乘法格式(* num1 num2 num3…)此函数(*)计算乘号右边所有数字的乘积( num1×num2×num3...)。

(完整版)实验3-AutoLISP语言

(完整版)实验3-AutoLISP语言
二、实验内容及原理
编写简单的AutoLISP程序,并调试运行。
三、实验步骤
1、编写一个绘制六角螺母的AutoLISP程序
2、测试程序,如果出现错误进行修改后再上机运行,直至程序正确为止,绘制的六角螺母如图所示
四、实验过程原始记录
详细程序为:
(defun drw()
(setq d 10.0)(setq l 50)
p4(polar p6 (/ pi 2.0)c3)
p8(polar p6 (- (/ pi 2.0))c3)
p5(polar p3 (- (/ pi 2.0))(* c2 2.0))
p20(polar p2 (- (/ pi 2.0))(* c2 2.0))
p9(polar p1 (- pi)(- k c4))
p17(polar p19 0 11)
p13(polar p18 0 1)
p14(polar p19 0 1)
p12(polar p13 (/ pi 2.0)d1)
p15(polar p14 (-(/ pi 2.0))d1)
p11(list(+ (car p10)k1)(+ (cadr p10)k1))
(cond((= d 3)(setq gs 1))
((= d 4.0)(setq gs 2))
((= d 0)(setq gs 3))
((= d 6)(setq gs 4))
((= d 8)(setq gs 5))
((= d 10)(setq gs 6))
((= d 12)(setq gs 7))
((= d 14)(setq gs 8))
p16(list(+ (car p17)k1)(- (cadr p17)k1))

用AutoLISP语言编程实现参数化绘图

用AutoLISP语言编程实现参数化绘图

文章编号:100926825(2002)0420159202用Auto LISP 语言编程实现参数化绘图收稿日期:2002201222作者简介:康保成(19552),男,1987年毕业于广东教育学院工程图学专业,高级讲师,太原理工大学轻纺工程与美术学院,山西晋中 030600康保成摘 要:简要介绍Auto LISP 语言在Auto C AD 环境下实现参数绘图的应用状况。

对建筑制图中绘制楼梯台阶进行分析,并结合Auto LISP 语言编程特点,编制了Auto LISP 程序,顺利完成楼梯台阶的绘制过程,达到利用参数输入形式,严格、准确、快捷地完成绘图工作目的,还为在Auto C AD 环境下绘制形状相同、尺寸不同的系列图形提供了方便。

关键词:Auto LISP ,Auto C AD ,楼梯台阶中图分类号:T U20114文献标识码:A引言随着时代的进步,计算机辅助设计发展迅猛,全面取代传统的丁字尺加图板的手工绘图方式已成必然。

这种势头给各行各业都带来了冲击,从早年间颁布的红头文件可见一斑。

可以毫不夸张地说,对于作为衡量素质标准的计算机辅助设计,不能等闲视之。

Auto C AD 作为C AD 的工具,是一个功能极强的计算机辅助设计、绘图的通用软件包。

如今Auto C AD 在各部门得到广泛应用。

Auto C AD 实际上已经成为一种微机C AD 系统的标准,工程设计人员之间交流设计思想的公共语言。

Auto C AD 之所以得到如此广泛的应用,除了它功能强大,易学易用外,还在于它是一个开放的、交互式的软件。

用户可以编写Auto LISP 、ADS 或ARX 应用程序,作为新的命令,实现特定用户的特殊需要,或对AutoC AD 做一些二次开发和应用,以使用户更方便、快捷地满足工作要求。

1 问题的提出正如前面所述,Auto C AD 在各个领域都得到了广泛的应用,可见其通用性是很强的;但它在一些领域的某些方面还有不尽人意的地方。

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

1.绘制多边形
(defun c:dbx()
(setq p1(getint"\n输入多边形的边数:")) (setq p2(getpoint"\n输入多边形中心点:")) (setq r(getint "\n输入圆的半径:")) (command "polygon" p1 p2 "I" r "") (command)
)
运行结果:
命令: dbx
输入多边形的边数:6
输入多边形中心点:
输入圆的半径:30
2.求两点间的距离和方位角
(defun c:jlfwj()
(setq p1(getpoint"\n输入第一点:")) (setq p2(getpoint"\n输入第二点:")) (setq jl(distance p1 p2))
(setq fwj(angle p1 p2))
)
运行结果:
$ (setq p1(getpoint"\n输入第一点:")) (setq p2(getpoint"\n输入第二点:")) (627.945 320.814 0.0)
(838.208 352.165 0.0)
_$ (setq jl(distance p1 p2))
(setq fwj(angle p1 p2))
212.588
0.148015
_$ jl
212.588
_$ fwj
0.148015
_$
3.创建图层
(defun c:tc()
(setq mc(getstring"\n输入新建图层名称:")) (command "layer" "m" mc "c" 1 "") (command)
)
运行结果:
命令: 'VLIDE
命令:
命令: tc
输入新建图层名称:dd
4.求线段外一点到线段的距离
(defun c:dxjl()
(setq p1(getpoint"\n输入线段第一点:")) (setq p2(getpoint"\n输入线段第二点:")) (setq p3(getpoint"\n输入线段外一点:")) (setq s1(distance p1 p2))
(setq s2(distance p3 p2))
(setq s3(distance p1 p3))
(setq s(/ (+ s1 s2 s3) 2))
(setq m(sqrt(* s (- s s1) (- s s2) (- s s3)))) (setq d(/ (* 2 m) s1))
)
运行结果:
命令:
命令: dxjl
输入线段第一点:
输入线段第二点:
输入线段外一点:284.761
命令:
命令: 'VLIDE
命令:
5.求三角形面积
(defun c:sjxmj()
(setq a(getreal"\n输入三角形第一个边长:")) (setq b(getreal"\n输入三角形第二个边长:")) (setq c(getreal"\n输入三角形第三个边长:")) (setq s(/ (+ a b c ) 2))
(setq mj(sqrt (* s (- s a) (- s b) (- s c))))
)
运行结果:
命令:
命令: sjxmj
输入三角形第一个边长:28
输入三角形第二个边长:35
输入三角形第三个边长:24
334.301
命令:
6.求线段中点
(defun c:zd()
(setq p1(getpoint"\n输入第一点:"))
(setq p2(getpoint"\n输入第二点:"))
(setq x1(car p1) x2(car p2) y1(cadr p1) y2(cadr p2)) (setq x3(/ (+ x1 x2) 2) y3(/ (+ y1 y2) 2))
(setq p3(list x3 y3))
)
运行结果:
_$ (setq p1(getpoint"\n输入第一点:"))
(setq p2(getpoint"\n输入第二点:"))
(648.033 327.461 0.0)
(811.32 357.338 0.0)
_$ (setq x1(car p1) x2(car p2) y1(cadr p1) y2(cadr p2)) (setq x3(/ (+ x1 x2) 2) y3(/ (+ y1 y2) 2))
(setq p3(list x3 y3))
357.338
342.399
(729.677 342.399)
_$ p3
(729.677 342.399)
_$。

相关文档
最新文档