AutoLISP绘图程序设计
- 格式:ppt
- 大小:380.50 KB
- 文档页数:11
第2讲利⽤AutoLisp语⾔绘图第2讲利⽤AutoLisp语⾔绘图在AuotCAD绘制简单图形时,有三种主要⽅式:(1)图标菜单(2)下拉式菜单(3)命令⾏。
事实上还有另外⼀种绘图⽅式,即通过lisp语⾔实现绘制图形。
利⽤Lisp语⾔绘图的最⼤优点是可以实现批处理,降低劳动强度。
⼩知识:Lisp语⾔最⼤优势是和AutoCAD绘图结合的很好,这也是该语⾔⾄今仍未被淘汰的最主要原因。
1、简单的绘图语句⼏乎AuotCAD中所有的绘图及环境设置命令都可以通过程序调⽤!,利⽤Lisp语⾔编写绘图命令的窍门是⾸先在命令⾏下把绘图命令和对应的参数记住,然后⽤Lisp语⾔的格式书写出即可。
1.1 绘制直线(command "line" "0,0" "1,1" "")1.2 绘制圆(command "circle" "0,0" 5)1.3 绘制正多边形(command "polygon" 5 "0,0" "i" 5)(command "polygon" "5" "0,0" "i" "5")都正确1.4 新建图层(command "la yer" "m" "道路" "c" 2 "" "")请同学⾃⼰编写⾼度为2,起点位置在“0,0”,⽂字内容是“理⼯⼤”的程序2、⽤多条绘图语句表⽰复杂图形正常情况下图形都⽐较复杂,需要⽤多条语句编写,例如测绘中的下⽔井、路灯等符号。
例1、下⽔井的绘制(defun c:xsj()(command "circle" "0,0" 0.5)(command "line" "-0.5,0" "0.5,0" "")(command "line" "0,-0.5" "0,0.5" ""))3、循环控制语句例2、绘制同⼼圆例3、绘制可多次插⼊的下⽔井符号例4、绘制y=sinx 曲线4、课后练习题4.1 编写lisp 程序,绘制路灯图案,参照下⽔井程序,改写成可以多次插⼊的程序。
AutoLISP实用编程四例-------------------------------------------------- 江苏崔华明AutoCAD是一个功能强大的通用图形设计软件,其内嵌的AutoLISP语言为用户进行二次开发提供了方便。
下面就介绍几则用AutoLISP编写的实用程序,这些程序相当于新增的AutoCAD命令,可以弥补AutoCAD本身的一些不足,为日常使用带来方便。
1(快速更改文本的大小在标准的AutoCAD中,要更改已有文本的大小,需要使用Change命令。
该命令的缺陷是:即使只更改文本的大小,也要重新确认文本的插入点、字型、倾斜角等一系列参数。
也就是说,除输入文本的新高度值外,还需要按5次回车键才能完成一个文本的更改~而且每次只能修改一个文本。
这对于同时更改多个文本的大小非常不便。
本文的AutoLISP程序使这一工作变得十分方便和快捷。
使用方法如下:在AutoCAD的Command提示下,打入命令:cthAutoCAD将提示“Selectobjects:”,这时可以使用AutoCAD允许的任意方式选择目标。
对于有多个文本需要更改的情况,使用窗口选择比较方便,而且你不用担心选择窗口中包含了非文本目标,程序能够自动在选择的目标中查找出文本实体,并只对文本进行更改。
选择目标后,AutoCAD提示“Newtextheight:”,这时输入一个新的文本高度值然后回车,则所有选中的文本被更改成新设定的高度。
2(延伸直线的长度在实际使用中,常常要将一条直线延伸指定的长度。
通常的做法是:在需要延伸的直线的端点画一个辅助圆,圆的半径等于直线要延伸的长度,然后使用Extend命令将直线延伸到与圆相交,最后删除辅助圆。
本文的AutoLISP程序将使你非常容易地实现这一点。
你只需选择要延伸的直线并输入要延伸的长度即可,其余的工作由程序自动完成。
使用方法如下:在AutoCAD的Command提示下,打入命令:stl然后根据提示选择要延伸的直线(选择点要靠近直线需要延伸的端点),并输入延伸的长度。
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图层。
§5.2 AutoLISP程序设计一、概述LISP语言(List Processing Language的缩写)是一种表处理语言。
因为LISP在描述表方面有独到之处,且本身灵活而精巧,自创立以来,在人工智能的程序设计中得到广泛应用。
在英、美等国应用尤为普遍。
AutoLISP是LISP语言的一个版本,其独特性在于专门为AutoCAD开发的。
所以AutoLISP仅能运行于AutoCAD软件包环境里。
同样,也正是在AutoCAD内置AutoLISP这样一种灵活、精巧的开发语言,使得AutoCAD得到进一步广泛使用。
1. AutoLISP特点:(1)AutoLISP语言是一种仅能以解释方式运行于AutoCAD内的程序设计语言。
即:脱离AutoCAD环境,它就不能运行。
(2)AutoLISP语言是函数型语言,其函数和数据形式是一致的,即(function argument)·function(函数名):内建函数或用户自定义函数名;·argument(参数):参数种类:①变量(Varibles)②常量(Constants)③其他函数(function)所以表达式可以嵌套.④标志数(flag)⑤可选性参数(optional parameters)因此,表达式的形式是:“先说做什麽,再说对谁做”。
(3)可以在AutoLISP程序中引用AutoCAD的几乎所有功能进行图形处理的自动化,尤其是较深层的应用——对象数据库的操作。
在Visual LISP的协助下,对于AutoCAD进行操作功能上的讨论,LISP仅比ARX少一个功能。
在AutoCAD R14已经不再使用ADS程序设计,取而代之的是ARX 程序设计模式。
ARX一般是在AutoCAD和开发商中使用。
使用Visual C++作为基本程序设计语言,其效率、数据处理和软硬件的控制能力都是相当好的。
但是,要想真正发挥这种开发模式的作用,对于程序设计者的要求也较高。
AUTOLISP程序设计技巧AUTOLISP(即AutoCAD Lisp)是一种用于AutoCAD软件的编程语言。
它基于Lisp语言,可以用于创建自定义命令和功能,以自动执行一系列任务。
在编写AUTOLISP程序时,可以采用一些技巧来提高代码的可读性和性能。
下面将介绍一些常用的AUTOLISP程序设计技巧。
1.变量命名:为了增加代码的可读性,应该选择具有描述性的变量名。
避免使用单个字母或简写的名称,而应使用有意义的名称来描述变量的用途或含义。
2.注释:在代码中使用适当的注释是非常有帮助的,可以解释代码的目的、逻辑和特定部分的功能。
注释应该清晰明了,不冗余,并使用大写字母或其他方法来突出显示。
3.函数:使用函数来分割代码段,以便在需要时可以多次调用相同的代码块。
函数的使用可以提高代码的可读性,并使其更容易维护。
4.错误处理:在代码中加入适当的错误处理机制非常重要,可以避免程序崩溃或产生不期望的结果。
使用条件语句和错误处理函数来检测和处理可能发生的错误。
5.循环:使用循环语句来处理重复性任务,并减少代码的冗余。
根据任务的特点选择合适的循环类型(例如FOR循环、REPEAT循环等)。
6.嵌套:在必要时使用嵌套结构,将代码组织成逻辑结构清晰的块。
使用适当的缩进和代码布局来增加代码的可读性。
7.字符串处理:AUTOLISP中的字符串处理功能非常强大,可以使用字符串函数来处理、操作和格式化字符串。
了解并熟练使用字符串函数可以提高代码的灵活性和功能。
8.数组和列表:使用数组和列表可以存储和处理多个值。
熟练使用与数组和列表相关的函数(如CAR、CDR、CONS、LIST等)可以简化代码并提高性能。
9. 命令行交互:通过与用户进行命令行交互,可以提高程序的交互性。
使用getstring、princ等函数来获取用户输入,并使用条件语句来根据输入执行相应的操作。
10.优化:编写高效的代码可以提高程序的性能。
使用较少的迭代步骤、减少不必要的计算、选择合适的数据结构等都可以提高程序的效率。
使用CAD进行程序化绘图的方法与示例CAD(计算机辅助设计)软件是现代工程设计中不可或缺的工具之一。
它可以大幅提高工作效率,提供精确的设计模型和绘图输出。
在CAD中,程序化绘图技术可以进一步提高设计工作的效率和准确性。
本文将介绍使用CAD进行程序化绘图的方法与示例。
在CAD中,我们可以通过编写脚本或使用宏来实现程序化绘图。
常见的CAD软件如AutoCAD、SolidWorks和CATIA等都提供了编程接口和相关的编程语言,如AutoLISP、VBA和C#等。
下面我们将以AutoCAD为例,介绍使用AutoLISP进行程序化绘图的方法与示例。
AutoLISP是AutoCAD的内置编程语言,它与AutoCAD的各种功能紧密结合,可以实现从基本绘图操作到自定义功能的自动化。
以下是使用AutoLISP进行程序化绘图的几个示例:1. 绘制矩形:我们可以使用AutoLISP编写一个简单的程序来绘制矩形。
下面是一个示例程序:```(defun c:draw-rectangle (/ p1 p2)(setq p1 (getpoint "\nEnter the first corner point: "))(setq p2 (getcorner p1 "\nEnter the opposite corner point: "))(command "RECTANG" p1 p2)```在AutoCAD中,我们可以运行该程序的命令`draw-rectangle`,然后按照提示,输入第一个和第二个角点,即可绘制一个矩形。
2. 绘制圆形:类似地,我们可以使用AutoLISP编写一个程序来绘制圆形。
下面是一个示例程序:```(defun c:draw-circle (/ center radius)(setq center (getpoint "\nEnter the center point: "))(setq radius (getdist "\nEnter the radius: "))(command "CIRCLE" center radius))```在AutoCAD中,我们可以运行该程序的命令`draw-circle`,然后按照提示,输入圆心和半径,即可绘制一个圆形。
文章编号: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 在各个领域都得到了广泛的应用,可见其通用性是很强的;但它在一些领域的某些方面还有不尽人意的地方。
应用AutoLISP 实现AutoCAD 参数化绘图作者:王伯黎,等来源:《中小企业管理与科技·上中下旬刊》 2015年第7期王伯黎张兴蓉宜宾职业技术学院四川宜宾644003摘要:通过对AutoLISP 语言特点的研究,探讨了基于AutoLisp 的AutoCAD 参数化绘图程序设计的基本步骤。
以底板参数化绘图为例,详细阐述了应用DCL 创建人机交流对话框,应用AutoLISP 编写参数化绘图程序的具体过程。
实践证明,AutoLISP 语言功能强大,易学易用,是重要的AutoCAD 二次开发工具。
关键词:AutoLISP;DCL;AutoCAD;参数化绘图1 概述AutoCAD 是美国AutoDesk 公司开发的一个交互式绘图软件,它不仅具有强大的绘图、编辑功能,还具有开放的体系结构,允许用户通过内置的AutoLISP 语言实现二次开发。
在CAD的二次开发中,参数化绘图是其中的一项,它可以让设计者自己通过修改设计参数来制作产品零件的模型图形。
参数化绘图已经从传统的模式中摆脱出来,全面的简化了使用者对零件模型的修改过程,从而提高了效率。
2 AutoLISP 语言特点AutoLISP 是一种内嵌式表处理语言,是CAD 开放式体系结构的一种体现,同时也是LISP (List Processor)语言和CAD 相结合的产物。
AutoLISP 语言不仅拥有普通的高级语言所具备的功能,而且还有普通的高级语言所不具备的强大的处理图形的功能。
它最大的好处在于语法简单易懂,易于掌握,可直接调用几乎全部AutoCAD 命令,因此被广泛应用于AutoCAD 二次开发上。
AutoLISP 语言最典型的应用之一就是实现参数化绘图程序设计。
3 参数化绘图设计方案3.1 绘图对象的选择任何机器或部件都是由若干零件按一定的技术要求装配而成。
零件分为标准件和非标准件两大类。
标准件的结构和尺寸都由标准系列确定,通常由专业厂家生产;而非标准件的结构、形状、大小等需要根据它们在机器或部件中的作用进行设计确定,据此画出每个零件的零件图,以便加工制造。
收稿日期:2018年1月在绘制系列化产品设计图样时,因为包含着许多形状结构相似但参数不同的零件,使设计人员不可避免地要进行大量重复性绘图工作,导致工作效率低下。
要解决这个问题,可以在AutoCAD 软件平台上应用其内嵌的AutoLISP 语言进行编程二次开发,依据国家标准和行业标准,结合企业自身特点,自定义绘图命令,实现参数化绘图设计。
1AutoLISP 语言AutoCAD 作为Autodesk 公司推出的一种通用的计算机辅助设计和图形处理软件,具有易于掌握、使用方便、绘图精确和体系结构开放等优点。
AutoCAD 以强大的绘图功能和便利的交互式操作风格深受广大科技人员的青睐,是现在普遍使用的计算机辅助设计软件,已广泛应用于机械、建筑、电子、化工、航空、航天等领域。
AutoCAD 的缺点是专业性、针对性不强,因此Autodesk 公司在AutoCAD 2.18版及之后的版本中内嵌了AutoLISP 语言编程开发工具[1-3]。
AutoLISP 是LISP 语言的一个分支,具有很强的数据表格处理功能,它与AutoCAD 绘图命令相结合,可以存取和修改AutoCAD 图形实体数据,存取AutoCAD 的块表、层表、视图表、字体表及线型表,控制AutoCAD 图形屏幕和设备输入等,并可直接调用全部的AutoCAD 命令[4]。
相比其它编程语言,AutoLISP 语言简便易学,既具有一般高级语言的基本结构和功能,又具有一般高级语言所没有的强大图形处理功能,是应用AutoCAD 的一种重要手段[5]。
2参数化绘图设计步骤所谓参数化绘图设计,是指绘图平台能够根据用户输入的相关参数信息,自动生成所需的图样,要求设计或开发人员事先根据所要绘制的零件结构及图样进行相应的程序设计。
参数化绘图设计可以遵循以下步骤。
(1)分析结构特征,确定绘图参数,将既能体现零件结构特征,又能推导出其它尺寸的基本尺寸确定为绘图参数,参数应简洁明了[6]。
§5.2 AutoLISP程序设计一、概述LISP语言(List Processing Language的缩写)是一种表处理语言。
因为LISP在描述表方面有独到之处,且本身灵活而精巧,自创立以来,在人工智能的程序设计中得到广泛应用。
在英、美等国应用尤为普遍。
AutoLISP是LISP语言的一个版本,其独特性在于专门为AutoCAD开发的。
所以AutoLISP仅能运行于AutoCAD软件包环境里。
同样,也正是在AutoCAD内置AutoLISP这样一种灵活、精巧的开发语言,使得AutoCAD 得到进一步广泛使用。
1.A utoLISP特点:(1)AutoLISP语言是一种仅能以解释方式运行于AutoCAD内的程序设计语言。
即:脱离AutoCAD环境,它就不能运行。
(2)AutoLISP语言是函数型语言,其函数和数据形式是一致的,即(function argument)·function(函数名):内建函数或用户自定义函数名;·argument(参数):参数种类:①变量(V aribles)②常量(Constants)③其他函数(function)所以表达式可以嵌套.④标志数(flag)⑤可选性参数(optional parameters)因此,表达式的形式是:“先说做什麽,再说对谁做”。
(3)可以在AutoLISP程序中引用AutoCAD的几乎所有功能进行图形处理的自动化,尤其是较深层的应用——对象数据库的操作。
在Visual LISP的协助下,对于AutoCAD进行操作功能上的讨论,LISP仅比ARX少一个功能。
在AutoCAD R14已经不再使用ADS程序设计,取而代之的是ARX程序设计模式。
ARX一般是在AutoCAD和开发商中使用。
使用Visual C++作为基本程序设计语言,其效率、数据处理和软硬件的控制能力都是相当好的。
但是,要想真正发挥这种开发模式的作用,对于程序设计者的要求也较高。
AutoCAD绘图中实用的AutoLisp程序一、引言计算机辅助设计(CAD)[1]是指利用计算机及图形设备辅助设计人员完成设计工作。
作为设计人员,不仅需要对非标件自动化设备整体布局与规化,还要在规定的时间内完成总装图和零件图的输出。
因此,整个项目对时间进度的管控显得尤为重要。
基于这样的背景下,依托公司现有的一些资源,结合实际工作的需求,开发AutoCAD的二次开发命令尤其重要。
这样不仅可以有效减轻设计人员工作负荷,而且可以大大提高工作效率。
由简单快捷的AutoCAD二次开发命令就可以取代原来人工大量重复性的工作,使AutoCAD的二次开发必要性凸显出来。
图1 拆分组立图流程图二、AutoLisp语言AutoLISP[2]是专门为二次开发AutoCAD而设计的编程语言,它继承了LISP语言的特点,并内置在AutoCAD软体中,是LISP语言和AutoCAD 有机结合的产物。
使用AutoLISP语言可以完成各种工程分析与计算、绘制复杂的图形,还可以新增的AutoCAD快捷命令、驱动对话框和命令菜单。
同时能够使AutoCAD具有一定智能化、参数化的功能,还可以有助于设计人员将精力和时间用于产品的创新设计上,实现计算机辅助设计的目的。
三、AutoCAD二次命令开发在非标件自动化设备设计中,当完成设计总图后需要将每个零件图拆分出来,这就是重复性高,步骤繁琐,价值低的工作对于非标件自动化设备,我们通常是先完成组立图。
一般来说,组立图包含众多图层,每个图层上有一个零件的三视图。
下面我们的工作是将每一个零件提取、拆分出来。
这样可以逐一将零件图提取出来,但是这工作耗时耗力。
我们希望改进、完善程序,最终达到一键完成自动拆分目标。
下面我们通过流程图分析作业步骤,如图1所示。
Fig 1 Split Assembly Flowchart Of FIG.经流程图的规划后,我们有了明确的思路,并过程并复杂。
所需要注意的是同一图层中的实体集合,在复制移动后,还需要将它们从集合中逐一删除。
盛年不重来,一日难再晨。
及时宜自勉,岁月不待人AUTOLISFPS序设计技巧一、引言在AutoCAD中的角度捕捉只有当正交状态打开时的直和水平方向,对于其他特殊角度无能为力;另外,其网点捕捉也是相对于X轴和丫轴,无法实现其他方向的特殊长度捕捉,给绘图带来极大的不方便。
在应用AutoCAD进行设计制图的操作中,LINE和POLYLINE是使用频率最高的两个命令,经常要遇到在某些特定角度上绘制特定长度的简单线或复合线的情况,因而实现这两个捕捉对提高AutoCAD作图效率很有实用价值。
二、方法原理所谓角度捕捉,是指当十字光标在某一角度a的一定范围内选取一点时,该点自动落在该a角度线上;当我们设定捕捉角度为a时,将会以基准点作为原点、自X轴正方向出发,将整个屏幕划分为[360/ a]个区间,则NZ角度就是角度捕捉线,其中,0 V NS [360/ a], [360/ a]表示不大于360/ a 的整数。
所谓长度捕捉,是在角度捕捉的基础上,在某一角度线上有一系列捕捉点,该系列点离基准点的距离为捕捉长度的正整数倍,当选取直线上的一点时,落点自动落到离其最近的捕捉点上。
实现特定角度和长度捕捉的关键点是:当十字光标(即十字交叉线)移动时,程序要随时跟踪其交叉点的位置,并将该位置与用户所设定的捕捉角度与长度对应起来,从而计算出在该角度上的落点。
以下举例说明该两个捕捉的实现过程:假定捕捉角度为a =30°,捕捉长度为L。
当十字光标在任意的某一区间内移动时,比如在第5区间(120°〜150 ° )内移动时,此时,落点只能在120°或150°线上(该线在图中并不直接显示),该两根角度线的中心线为135°。
当十字光标的中心点处在120°〜135°之间时,则落点应在120°线上,该落点的具体位置为由十字光标的中心点向120。
线作垂线来获得,其交点D(称为垂点)即为落点,为直观起见,此时由基准点(此处为。