搜档网
当前位置:搜档网 › 应用AutoLISP语言编程实现参数化修改AutoCAD图形

应用AutoLISP语言编程实现参数化修改AutoCAD图形

应用AutoLISP语言编程实现参数化修改AutoCAD图形
应用AutoLISP语言编程实现参数化修改AutoCAD图形

AutoCAD—油浸式变压器的参数化绘图设计

优秀设计 摘要 随着社会的进步和市场经济的激烈竞争,对工程设计提出了更高、更新的要求,CAD 正是适应这一要求的产物。目前,我国CAD技术的应用取得了较好的成绩,但由于CAD 技术涉及面广,影响因数多,在实际应用方面还不可能完全满足要求。二次开发是CAD 技术应用取得实效的关键环节,因此,结合具体的专业CAD二次开发更具有实际意义。 由于变压器绘图在变压器设计绘图中占的比例大,变压器设计中频繁的重复计算和绘图。本次毕业设计开发了实用的变压器参数化绘图程序,从而提高了产品的设计效率和质量,降低了产品成本,能为企业获得较好的社会效益和经济效益。变压器参数化绘图系统使用AutoLISP和DCL编写,程序采用模块化的设计理念设计,提高了程序的生命力,本系统大大的缩短了产品设计周期,使企业提高了产品开发效率和设计质量。 关键词:Autolisp ,参数化绘图,变压器,计算机辅助设计

ABSTRACT As the development of society, the competitiveness of economy and market get increasingly fierce, and then high and new requirement has been put forward. CAD (Computer-Aided Design) technique is the very outcome of this requirement. Recently, in CAD technique application, we have gotten a great success. However, involving in a large scale and with too many fac tors, it’s impossible to meet all the requirements in the actual application of the CAD technique. The re-develop is the key ring for CAD technique to make a real effect; therefore, the Re-develop Technology CAD in a certain field will be more effective. Because the Transformer Mapping accounts for a large proportion in Transformer Design Mapping, calculation and mapping repeat again and again in the Transformer Design. In this Graduation Design, a practical parameterized mapping program design of transformer has been developed, and therefore improved the designing efficiency and the quality of products, reduced the cost and is helpful for enterprises to gain a better social and economical benefit. The transformer parameterized mapping system is composed in Auto LISP and DCL; in designing the program, Modular Idea is applied to improve the vitality of the program. This system greatly shortens the design circle of products and improves the R&D efficiency and quality of products. Key words: AutoLISP,the parameterized mapping,transformer,computer-aided desig

AutoLISP-程序创建过程

AutoCAD开发VisualLISP程序 本节通过一个简单的实例来讲述LISP程序的创建过程,介绍编制LISP程序的一些基本步骤,以及LISP程序在AutoCAD中的加载和运行的方法。 首先来创建一个最简单的LISP程序—-“Hello.lsp”,在AutoCAD2002中加载并运行该程序,将会在命令行出现-“Hello,VisualLISP!”。 VisualLISP与AutoCAD的通信 用户可以直接在AutoCAD命令行中键入AutoLISP表达式。AutoCAD通过括号来确认AutoLISP表达式。AutoCAD每当发现一个左括号,就确认为AutoLISP表达式,并由AutoLISP求表达式的值后返回AutoCAD,AutoCAD使用返回结果并继续进行其他工作。 注意在AutoLISP表达式中,左、右括号必须配对,否则AutoCAD将给出提示符n>,n表示右括号丢失数目。 此外,在AutoCAD中调用并执行AutoLISP程序。在AutoLISP程序中采用COMMAND函数来与AutoCAD命令程序处理器通信,COMMAND从AutoLISP获得命令并将其传给AutoCAD。 实例:最简单的LISP程序——“Hello.lsp” Step1创建新文件 (1)运行AutoCAD2002系统,以“acadiso.dwt”为样板创建图形文件,并调用“vlisp”命令进入VisualLISP环境。

(2)单击“Standard(标准)”工具栏中的按钮,新建一个LISP文件。Step2输入代码并保存文件 (1)在编辑窗口中输入源文件“Hello.lsp”的代码。程序清单如下:;;;* Hello.lsp – Visual LISP文件实例 (prompt "Pick point:") ;指定运行时的提示信息 (setq ipt (getpoint)) ;在屏幕上指定一点并将其坐标值赋予变量“ipt” (setq hgt 15) ;给变量“hgt”赋值 (Command "_.TEXT" "_S" "STANDARD" ipt hgt 0 "Hello, Visual LISP!"); 调用“Commnad”函数与AutoCAD进行通信 (2)单击“Standard(标准)”工具栏中的按钮,以“Hello.lsp”为名保存该文件。 Step3运行LISP程序 (1)确认编辑窗口处于前台状态,选择菜单【Tools(工具)】→【LoadTextinEditor(加载编辑器中的文字)】,则该程序被加载并运行。系统将返回AutoCAD窗口,并提示用户选择一点,并以指定点为基点来绘制文字。结果如图36-4所示。 (2)如果用户退出VisualLISP环境并返回AutoCAD系统窗口,则需要对该程序进行加载后,才能运行。选择菜单【Tools(工具)】→【LoadAppcation…(加载应用程序)】,弹出“Load/UnloadApplications(加载/卸载应用程序)”对话框,如图

第四节AUTOLSP语言

第四节Auto LISP语言 本章介绍Auto LISP程序语言的基本概念。它描述Auto LISP的核心部件与数据类型,并提供数字、字符串、输出、表处理函数的简单示例。 由于Auto LISP程序代码不需编译,因此你可以在指令行输入程序代码,并立即看到结果。本章中的某些示例必须在VLISP“控制台”窗口提示(-$)下输入,其他的示例则是在AutoCAD命令提示(Command:)下输入。 Auto LISP表达式 Auto LISP程序是由一连串表达式所组成。Auto LISP表达式的型式如下: (function arguments) 每一个表达式都是从一个左括号开始,由函数名称和该函数的选择参数所组成。参数本身也可以是一个表达式。表达式最后以右括号括住。每一个表达式返回一个值给括号外层的表达式使用。最后一个

解译的表达式的值会返回给调用的表达式。 例如,下列程序示例包含三个函数: (fun1(fun2arguments)(fun3arguments)) 如果你在VISUALLISP“控制台”提示或AutoCAD“命令”提示下输入此程序代码,Auto LISP解释程序会处理该程序代码。第一个函数是Fun1,它有两个参数;另外两个函数fun2与fun3则各有一个参数。函数fun2与fun3被函数fun1围住,因此它们返回的值会被传送给fun1作为参数。函数fun1计算这两个参数,并将值返回你输入程序代码的窗口。 4.1Auto LISP的数据类型 1.整型 整型只能由十、一、0~9共12个字符织成,其取值范围为[-2147483648,2147483647]。 整数在计算机内是精确表示的,运算速度效快,故在整数取值范围之内的数据应尽量定义为整型。 2.实数 实数是含有小数点的数值。数值在-l与1之间必须以零开始。实数是以双精度浮点将式存储的,提供至少14个有效的精确度位数。请注意,VLISP不会显示所有的有效位数。 实数可以使用科学计数法表示,在e或E后面加上指数(例如,0.0000041与4.1e-6是相同的)。数值3.1、0.23、-56.123和21,000,000.0都是有效的Auto LISP实数。

CAD参数化图库的步骤

参数化图库的步骤 1.绘图以及尺寸标注 由于图形入库必须先进行参数化,所以应该按照一定的标准进行图形的绘制和尺寸标注。为了使图形能够正确的被参数化,在图形绘制标注的过程中,应该注意以下几个问题: ●绘图 在绘图的过程中应该注意图形绘制的精准,对于相交、连接以及相切的对象应该尽量保持打开对象捕捉模式或者其它模式辅助绘图,更加准确的绘制图形,如在绘制水平线和垂直线的时候应该打开正交模式。 ●尺寸标注 足够的尺寸标注是图形能够参数化的前提,可以看作是一种约束,使参数化后的图形可以通过标注和基点确定被参数化图形的位置和形状。 注:水平线、垂直线、平行和垂直及相切关系是系统默认的,无需标注。 ●生成参数化图形 生成参数化图形最重要的条件就是要有足够多的约束,也就是说要有足够多的标注能够确定图形的形状,基点的位置对于参数化图形的尺寸计算基准,也就是说其它点的坐标都要通过基点和标注来确定,因此约束条件是否充分是图形是否能够进行参数化的一个重要条件,欠约束的部分不能进行尺寸驱动,但是可以随着其它尺寸变化。

2.参数化 使用CRE这个命令或者点击屏幕菜单下面的参数化设计》参数化处理 ,这时命令行提示指定基点,为了保险起见,应该对已经参数化的图形进行检测,看看是否能正常驱动。 参数化过程中需要注意的问题: 在执行参数化命令后,可能有些实体没有正确被参数化,这时需要用setpara命令修改那些没有被正确参数化实体的表达式,这样才 能生成正确的参数化图形。同样也可以用setpara命令查看已经被 正确参数化的实体的表达式。 处理相同尺寸圆弧只需要标注其中之一即可,系统自动识别图形中尺寸相等的圆弧。 系统会自动识别图形中的对称尺寸,对称尺寸必须是相对图形中心线的对称尺寸。 完全约束图形欠约束图形 已经参数化了并且录入了3组数据的零件,需要用这3组数据出库看看图形是否变形,是否与标准和Mechanical一样。 3.定义变量表达式 把参数化图形中的标注的实际尺寸值转换成字母以及表达式,这些字母需要和机械标准保持一致。 4.入库 添加零件类

第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、绘制同心圆

Autolisp基础教程

Autolisp基础教程 单元一:AutoLISP主角潇洒登场 一. AutoLISP 是何方神圣? 1、AutoLISP是AutoCAD的最佳拍檔! 2、AutoLISP内含于AutoCAD软件内,不用另外花钱买! 3、AutoLISP是强化AutoCAD最好、最直接的『程序语言』! 4、AutoLISP易学、易用,即使不会程序设计的AutoCAD使用者,都能在最短的时间内,写出令人惊讶、赞叹的功能! 若说AutoLISP的出现,是替AutoCAD 创造一片天的『最大功臣』,实不为过一点也不夸张! 5、AutoLISP希望您去学习它、改善它、发挥它、享受它.真的!它的威力、魅力无穷! 二. AutoLISP 程序语言的特质分析: 学习AutoLISP是非常容易的,对初学者而言,即使没有学习过任何的程序语言,都能很快的上手,写出精彩漂亮的AutoLISP程序! 语法简单:不用特殊的变量宣告,非常富有弹性,比起其它的程序语言,它的语法可说是非常简单而有其独特的风格! 功能函数强大:除一般性的功能函数外,又拥有为数不少控制配合AutoCAD的特殊函数,再加上AutoLISP可直接呼叫执行所有AutoCAD的指令,以及掌握运用所有的AutoCAD系统变量,功能之强大令人欣喜不已! 撰写的环境不挑剔:只要是一般的文书编辑软件都适用! 如:Windows的记事本、PE2、PE3、DW3、书中仙、汉书、EDIT....等 直译式程序:不用再作编译,『即写即测、即测即用』,马上可以在AutoCAD中响应效果,马上就有成就感! 横跨各作业平台:悠然自得,虽然AutoCAD有DOS、Windows版本之分但是AutoLISP却可在不改写的原貌下,加载与执行! 三.撰写AutoLISP 的动机? 1、欲强化AutoCAD 原有指令时. 2、欲创造更有用的AutoCAD 新指令. 3、欲简化繁琐的环境设定或绘图步骤时. 4、欲处理参数式绘图时. 5、欲做图面资料读文件、写文件. 6、欲做AutoCAD 演示文稿展示时. 7、欲达到真正灵活掌控AutoCAD 时. 8、欲提升自己跨上AutoCAD 高手列车时. 四.AutoLISP 的效益评估? 1. 对公司负责人或设计主管而言: A. 也许某员工或干部花了20个小时撰写一个AutoLISP程序,表面上,这将近三天的时间,他连一张图都没有画,甚至可能偶有发呆、沉思,若此程序一天可以替公司绘图部门节省1小时绘图时间,那算一算,只要20天就抵销开发成本,而20天以后都是赚的,『用的愈久,省的愈多』! B. 若员工皆有此动力,在不影响正常工作,『鼓励』都来不及,那有『压抑』的道理,甚至还要派遣优秀人员出去受训,学习更好的设计技巧与创意呢?! C. 千万不要因为您的不懂或压抑,SHOW您的权威与POWER,如此,不但对员工造成打击,甚至您可能成为阻碍了公司计算机化进步的罪魁祸首 D. 当然,若要撰写的程序很多,内部设计人员的程序功力距离太远,达成需求的时间反而变得遥遥无期,那倒不如求助于市面上已有的相关AutoCAD 支持软件。

LISP函数大全

AutoLisp函数 一、数学运算功能函数 1.l(十数值数值…)返回:累计实数或整数数值 1.2(一数值数值…)返回:差值 1.3(* 数值数值…)返回:所有数值乘积 1.4(/ 数值数值…)返回:第一个数值除以第二个以后数值的商 1.5(l十数值)返回:数值十l l、 6(1—数值)返回:数值一l l.7(abs 数值)返回:数值的绝对值 1.8(atan 数值)返回:反正切值 1.9(cos 角度)返回:角度的余弦值,角度值为弧度 1.10(exp 数值)返回:数值的指数 1.11(expt 底数指数)返回:底数的指数值 1.12(fix 数值)返回:将数值转换为整数值 1.14(gcd 数值1 数值2)返回:两数值的最大公因数 1.15(log 数值)返回:数值的自然对数值 1.16(max 数值数值…)返回:数值中的最大值 1.17(min 数值数值…)返回:数值中的最小值 1.18 pi 常数∏,其值约为3.1415926 1.19(rem 数值 1数值 2)返回:M数值的相除的余数 l.20(sin 角度)返回:角度的正旋值,角度值为弧度 1.21(sqrt 数值)返回:数值的平方根 二、检验与逻辑运算功能函数 2.l(= 表达式1 表达式2)比较表达式1就是否等于式2,适用数值及字符串 2.2 (/= 表达式1 表达式2)比较表达式1就是否大于等于表达式2 2.3(<表达式1 表达式2) 比较表达式1就是否<小于表达式2 2.4(<= 表达式1 表达式2)比较表达式1就是否<一小于等于表达式2 2.5(>表达式1 表达式2) 比较表达式1就是否>大于表达式2 2.6(>= 表达式1 表达式2) 比较表达式1就是否大于等于表达式2 2.7 (~数值)返回:数值的位 not值,(1的补码) 2.8 (and 表达式1 表达式2…)返回:逻辑and的结果 2.9(boole 函数整数整数…)返回:位式布尔运算AutoLisp函数2/8 2.10(eq 表达式1 表达式2)比较表达式1与表达式2就是否相同,适用列表比较(实际 相同) 2.11(equal 表达式 1表达式 2[差量])比较表达式 1与表达式 2就是否相同,差量可省 略(内容相同) 三、转换运算功能函数 3.l(angtof 字符串[模式])返回:角度值的字符串转成实数 3.2(angtos 角度[模式[精度]])返回:角度转成的字符串值 3.3(atof 字符串)返回:字符串转成实数值 3.4 (atoi 字符串)返回:字符串转成整数值

VBA开发AUTOCAD实现参数化绘图

VBA开发AUTOCAD实现参数化绘图 王若慧 Realizing The Parameter-Drawing taking the VBA and AUTOCAD (.山西大学工程学院,山西省太原,030013) Wang Ruo Hui Engineering Colledge of SHANXI University, Taiyuan 030013) 摘要: 介绍了采用VBA(Visual Basic for Application)进行AutoCAD2005的二次开发,应用AutoCAD ActiveX Automation 接口技术访问AutoCAD对象,采用ADO实现AUTOCAD与Microsoft Access2000的数据通信,实现程序参数化绘图的基本思路及程序设计流程. 关键词:VBA AutoCAD ActiveX Automation ADO 参数化绘图 Abstract:Taking the ActiveX Automation of VBA and AutoCAD2005 to access the AutoCAD drawings, and the ADO to make the data communication between the AUTOCAD and ACCESS , the parameter-drawing can be well realized in the way what is described in the article . Key words:VBA AutoCAD ActiveX Automation ADO the parameter-drawing

用AutoLISP程序提高绘图效率的几个实例

2007.12 科技广场 254

工程中经常要绘制各种弹簧和螺纹连接件,在AutoCAD中没有专门绘制弹簧和螺纹的命令,弹簧和螺纹在AutoCAD中都可用平面图形通过相应螺旋线拉伸而成,所以绘制螺旋线就是解决问题的关键。如果用常规的3dpoly命令绘制三维螺旋线,需要输入大量精确数据,才能一点一点地画出螺旋线,做法非常麻烦。现在提供AutoLISP程序,即可解决绘制螺旋线的问题。然后通过相应平面图形的拉伸,就可以完成弹簧、螺纹等零件的绘制。 根据圆台螺旋线的形成原理(一动点M绕圆台的母线AB作等速直线运动,而该母线AB又绕圆台的轴线O1O2作等角速旋转时,点M的运动轨迹即为圆台的螺旋线,如图二所示。圆柱螺旋线是圆台螺旋线的特例,故可通过圆台螺旋线程序做相应的变动,即可得到),动点M(x,y,z)的参数方程如下: 图二园台螺旋线 X=[r0+hg *α/(2π)]*cosα Y=[r0+hg *α/(2π)] *sinα Z=±vg *α/(2π) 其中,r0为圆台下面的半径,α为螺旋线角,vg为导程(单线螺旋线螺距(弹簧的节距)等于导程),hg为点M沿水平半径方向上增加的距离(hg=|(r1-r0)m|求得,m为螺旋线的圈数)。 下面提供圆台螺旋线的AutoLISP程序清单: (defun c:luoxc(/) (setq b1 (getpoint" 指定基点:")) (setq r1 (getreal "指定初始半径:")) (setq disp (getreal "指定节距:")) (setq angtg (getreal "输入锥形角:")) (setq m (getint"输入圈数:")) (setq n (getint"输入每圈细化段数<36>:")) (cond ((null n )(setq n 36))) (setq delta (/ (* 2.0 pi ) n)) (setq j (/ disp n)) (setq bb (caddr b1)) (setq tg (*(/ angtg 180) pi)) (setq ang 0) (setq k 0) (command "ucs" "o" b1) (command "3dpoly" (list r1 0 0)) (repeat (* m n) (setq k(+ k 1)) (setq ang(+ delta ang)) (setq r (- r1 (* (+ 0(* j k))(/ (sin tg )(costg))))) (setq pt2 (list (* r(cos ang))(* r(sin ang))(+ 0(* j k)))) (command pt2) ) (command "") ) 根据圆台螺旋线的形成原理,如果圆锥角为0度时,即可形成圆柱螺旋线。圆柱螺旋线程序清单如下: (defun c:luoxc(/) (setq b1 (getpoint" 指定基点:")) (setq r (getreal "指定初始半径:")) (setq vg (getreal "指定节距:")) (setq m (getint"输入圈数:")) (setq n (getint"输入每圈细化段数<36>:")) (cond ((null n )(setq n 36))) (setq delta (/ (* 2.0 pi ) n)) (setq j (/ disp n)) (setq bb (caddr b1)) (setq ang 0) (setq k 0) (command "ucs" "o" b1) (command "3dpoly" (list r 0 0)) 255

CAD参数化

随着经济的发展,参数化设计在工业设计中运用的越来越多。在以前,这种功能为国外软件所独有,后来,一些优秀的国产CAD软件也渐渐具备了参数化设计功能。其中,CAD机械软件根据画法几何原理,采用参数化和变量化技术开发,把一个对象拆分成点和线的关系,使其相互关联,通过运算产生不同的对象。其在算法完全符合国内机械行业标准,具备极高的实用性。 下面我以CAD机械软件为例,浅析参数化设计: 在常规的工程图中,尺寸标注是常值不能进行尺寸驱动,如果想要进行尺寸驱动,首先要将常规图形(也称草图)的尺寸参数化。这种尺寸驱动的过程便是CAD机械软件参数化过程的核心,它可以让图形自由的随着尺寸值的更改而变化,形成最终图形。 操作步骤举例: 插入一个标准螺栓: 然后使用参数化设计中的参数化处理,选中这个螺栓和标注。 在选择完基点之后,再使用参数化驱动工具,选择您想修改的位置的标注,选取标注后会提示:

请输入新的尺寸值或测量新尺寸<>:这时我输入110回车。得到结果如下 CAD尺寸驱动不仅可以这样直观的修改常量,还可以把已知常量通过表达式的形式进行计算。 尺寸驱动有广泛的应用前景,能给使用者带来明显的效益:

1.在方案设计阶段(即“概念”设计阶段),设计师关心的是设计对象的形状,而不是约束图形的具体尺寸值。随着设计的进展,尺寸值才能在逐步修改中确定。虽然现在用CAD软件进行修改比手工方式方便很多,但尺寸驱动对图纸的修改仍然是一个自动化的过程。 2.利用尺寸驱动可以编制专业应用软件:尺寸驱动作为图形绘制模块,加上专用计算模块就可以实现某一产品的自动设计。 3.可以作为三维特征参数化造型的二维草绘器。 4.可以进行系列化产品的设计:不同的行业都有自己的非标准常用图形或结构,任何CAD 软件都不能将这些元素全部包括在内。用户必须通过非编程手段建立大量这样的基于参数化的图形,才能在设计工作中大幅度提高设计效率和质量。机械中的“参数化设计”就能满足这样的需求。 5.建立各种标准的参数化图形库:标准件与“系列产品设计”不同,它不仅要达到参数化的要求,使用尺寸约束图形。还要有标准数据库,让尺寸变量之间的约束关系满足特定标准件的使用要求。

AUTOCAD平面图形的参数化绘制

《AutoCAD机械制图教程》教案

图8-1平面图形 15分钟三、相关知识讲解 1.几何约束 2.标注约束 3.推断约束 4.约束设置 5.参数化绘图的一般步骤 演示法 讲授法 25分钟四、任务实施 第1步:设定绘图区域大小为800mm×800mm,并使该区域充满显 示于整个图形窗口。 第2步:打开极轴追踪、对象捕捉及自动追踪功能,设定对象捕捉 方式为“端点”、“交点”及“圆心”。 第3步:绘制图形,图形尺寸任意,如图8-2(a)所示。修剪并 倒圆角形成外轮廓草图,如图8-2(b)所示。 (a)(b) 图8-2 绘制外轮廓草图 第4步:启动自动添加几何约束功能,给所有图形对象添加几何约 束,如图8-3所示。 演示法 讲练结合法

图8-3自动添加几何约束 第5步:给圆弧A、B、C添加相等约束,使3个圆弧的半径相等;对左下角点添加固定约束,如图8-4(a)所示。给圆心D、F及圆弧中点E添加水平约束,使三点位于同一条水平线上,如图8-4(b)所示。操作时,可利用点命令和对象捕捉确定要约束的目标点。 (a)(b) 图8-4 创建约束 第6步:单击〖参数化〗工具栏上的“”按钮,隐藏几何约束,并添加半径约束、角度约束、水平约束、竖直约束,如图8-5所示。将角度值修改为60°,结果如图8-6所示。 图8-5 添加标注约束图8-6 修改角度约束 第7步:绘制圆及线段,如图8-7所示。修剪多余线条并自动添加几何约束,如图8-8所示。

图8-7 图8-8 第8步:给圆弧G、H添加同心约束;给线段I、J添加平行约束等,如图8-9所示。 图8-9图8-10 第9步:复制线框,如图8-10所示。对新线框添加同心约束,如图8-11所示。 第10步:使圆弧L、M的圆心位于同一条水平线上,并让它们的半径相等,如图8-12所示。 图8-11 图8-12 第11步:添加半径约束,使圆弧的半径尺寸为40,如图8-13所示。将半径值由40改为30,结果如图8-14所示。

AutoLISP详细讲解

AutoLISP详细讲解 关于AutoLISP AutoLISP是由Autodesk公司开发的一种LISP程序语言(LISP是List Processor的缩写)。第一篇关于LISP的参考文献是由John McCarthy 在1960年4月的《ACM通讯》中发表的。 除了FORTRAN和COBOL,大多数在六十年代早期开发出来的语言都过时了,可是LISP 却生下来,并且已经成为人工智能(AI)的首选程序序言。AutoLISP解释程序位于AutoCAD 软件包中,然而AutoCAD R2.17及更低版本中并不包含AutoLISP解释程序,这样,只有通过AutoCAD R2.18及更高版本才可以使用AutoLISP语言。 AutoCAD软件包中包含大多数用于产生图形的命令,但仍有某些命令末被提供。例如,AutoCAD中没有在图形文本对象内绘制矩形及作全局改变的命令。通过AutoLISP,你可以使用AutoLISP程序语言编制能够在图形文本对象内绘制矩形或作全局选择性改变的程序。事实上,可以用AutoLISP编制任何程序,或把它嵌入到菜单中,这样定制你的系统会取得更高的效率。 现在,已经有数以百计的第三方软件开发人员使用AutoLISP语言编制各种应用程序软件包,例如,本文作者开发了一个名为SMLayout的软件包,用它可以产生各种复杂几何图形的平面布局图,这些几何图形包括管道的交叉部、过渡都、圆柱、弯管接头、圆锥以及罐顶。目前社会上非常需要AutoLISP程序员为应用软件及客户菜单的开发提供顾问。 在本章中,我们假定读者已经熟悉了AutoCAD命令及AutoCAD的系统变量。但是,在开始学习AutoLISP时,却并不需要你是一位AutoCAD或编程专家。同时,本章还假定读者并无编程方面的知识。如果你熟悉任何一种编程语言,那么学习AutoLISP就会很容易。对各种函数的评细探讨以及对例题的逐步讲解会使你学起来很有兴趣。本章讨论常用的AutoLISP函数以及它们S程序编制中的应用。对于本章中未涉及的函数,请参阅Autodesk 公司的《AutoLISP程序员参考手册》。AutoLISP对硬件没有任何特殊要求。如果系统能够运行AutoCAD,那么同样也可以运行AutoLISP。AutoLISP程序可以使用任何文本编辑器进行编制。 数学运算 任何编程语言都提供数学函数。在AutoLISP中,同样提供了编程以及数学计算所需的大部分数学函数,你可以使用AutoLISP对数字进行加、减、乘、除运算,还可以得到以弧度表示的角度的正弦值、余弦值及反正切值等。使用AutoLISP还可以进行许多其他计算。这一节主要讨论AutoLISP程序语言支持的常用数学函数。 1.加法 格式(+ num1 num2 num3…) 此函数(+)计算加号(+)右边所有数字的和(+ num1 num2 num3…)。这些数字可以是整数或实数。如果均为整数,则和为整数;如果均为实数,则和为实数。但是如果既有整数又有实数,则和为实数。如下所示,在前两个例子中,所有数字均为整数,所以结果是

Autolisp编程心得

Autolisp编程心得 1.养成良好的书写习惯 众所周知,Lisp是一种表结构语言,括号必须成对出现,在调试时往往为遗漏了一个括号大 费周折,所以,养成一个好的编程习惯是学好Lisp所必须的。 ⑴选择一个较好的编辑器,这是一个基本条件,建议使用Visual Lisp编辑器或Lisplink 等 专用编辑器,此类编辑器可以对函数突出显示。 ⑵按Lisp(DCL)专有格式书写,并经常对程序进行“格式化”,及时发现语法错误,并有利于调试是查找错误。 ⑶使用自定义函数,并辅助以适当得注释,在较大程序中按功能使用自定义函数可以使得程序条理化。 2.函数中循环与转移的使用 在高级语言中一般有类似“goto”的语句实现转移,在AutoLisp中没有转移的函数。我们可 以使用自定义函数实现转移,用if及cond辅助实现条件转移。 当我们需要实现在满足一定条件时进行循环的功能,一般使用while函数,但有时需要判断的条件较复杂时,使用while函数往往不能实现或使得程序不够简洁。这时我们可以使用“转移”, 将需要实现的功能作为(子)函数,使用恰当,可以在程序中任意“转移”。 一般认为,当一段代码在不同处重复使用时,我们才会使用子函数定义,其实,利用函数的更大的优点是使得程序更加结构化。这就使得我们不必拘泥于程序中的循环语句,而使用函数的循环调用,辅助适当的判断,实现“转移”,如A->B->A。当然也可以进行自身调用,构成一个“标准的”循环。 如例一中,“程序执行完毕返回”与“空选返回”两种情况如果使用循环语句,其条件是完全不同的,而将函数本身作为子函数调用,程序简洁明了。 3.initget函数中关键字“ ”(空格)的使用 空格可以被用作关键字,一般多用来定义鼠标右键退出。 ⑴当用户输入函数不支持控制位(如entsel、nentsel、nentselp)时,可直接使用“(initget " ")”。 ⑵当用户输入函数支持控制位(如getpoint等)时,可使用“(initget 1 " ")”禁止空输入,而将回车等空输入作为关键字使用。 ⑶当同时使用其它关键字时,应该将空格作为一系列关键字的最后一个,用 “(initget "C ")”(两个空格)调用,否则无效。 见例一。 ************************************************ ;;例一 (defun ett_ct()

autolisp函数大全.doc

函数大全 一、数学运算功能函数 1.l(十数值数值…)返回:累计实数或整数数值 1.2(一数值数值…)返回:差值 1.3(* 数值数值…)返回:所有数值乘积 1.4(/ 数值数值…)返回:第一个数值除以第二个以后数值的商 1.5(l十数值)返回:数值十l l. 6(1—数值)返回:数值一l l.7(abs 数值)返回:数值的绝对值 1.8(atan 数值)返回:反正切值 1.9(cos 角度)返回:角度的余弦值,角度值为弧度 1.10(exp 数值)返回:数值的指数 1.11(expt 底数指数)返回:底数的指数值 1.12(fix 数值)返回:将数值转换为整数值 1.14(gcd 数值1 数值2)返回:两数值的最大公因数 1.15(log 数值)返回:数值的自然对数值 1.16(max 数值数值…)返回:数值中的最大值 1.17(min 数值数值…)返回:数值中的最小值 1.18 pi 常数∏,其值约为3.1415926 1.19(rem 数值 1数值 2)返回:M数值的相除的余数 l.20(sin 角度)返回:角度的正旋值,角度值为弧度 1.21(sqrt 数值)返回:数值的平方根 二、检验与逻辑运算功能函数 2.l(= 表达式1 表达式2)比较表达式1是否等于式2,适用数值及字符串 2.2 (/= 表达式1 表达式2)比较表达式1是否大于等于表达式2 2.3(<表达式1 表达式2) 比较表达式1是否<小于表达式2 2.4(<= 表达式1 表达式2)比较表达式1是否<一小于等于表达式2 2.5(>表达式1 表达式2)比较表达式1是否>大于表达式2 2.6(>= 表达式1 表达式2)比较表达式1是否大于等于表达式2 2.7 (~数值)返回:数值的位 not值,(1的补码) 2.8 (and 表达式1 表达式2…)返回:逻辑and的结果 2.9(boole 函数整数整数…)返回:位式布尔运算

AutoCAD 2010-参数化绘图

AutoCAD 2010的新特性新功能介绍-文档(1)-参数化绘图 AutoCAD 是同类文件编制的很好理由。在AutoCAD 2010中,使用强大的文件编制工具可驱动你的项目从概念到完成。在自动化、管理和编辑工具均可做得更快,最大限度地减少重复的任务,加快完成时间。无论你的项目规模和范围怎样,你可使用AutoCAD 来应付这类挑战,因为AutoCAD有超过25年的不断领先和创建的文件编制。 参数化绘图 在AutoCAD 2010中,新的强大的参数化绘图功能,可让你通过基于设计意图的图形对象约束来大大提高生产力。几何和尺寸约束帮助确保在对象修改后还保持特定的关联及尺寸。创建和管理几何和尺寸约束的工具在“参数化”功能区选项卡,它在二维草图和注释工作空间中均自动显示出来。 建立几何关系 几何约束建立和维持对象间、对象上的关键点或和坐标系间的几何关联。同一对象上的关键点对或不同对象上的关键点对均可约束为相对于当前坐标系统的垂直或水平方向。例如,你可指定两个圆一直同心、两条直线一直水平,或矩形的一边一直水平等。 应用几何约束 几何关系通过几何约束来定义,它位于功能区的“参数化”选项卡的“几何”面板上,或直接使用GEOMCONSTRAINT 命令。当使用约束后,光标的旁边会出现一个图标以帮助你记住你所选定的约束类型. 在约束到点时,当光标移动到对象上时,会在最接近的点上出现一个临时的标记以做识别。它通常与可作为对象捕捉的点相一致。 无论选择对象或对象上的点进行约束,点取位置的顺序将影响对象怎样更新:选定的第二个对象将按照约束的条件进行更新。在使用约束后,不管哪个对象做过修改,另外的对象将会更新。 自动约束 你可使用“自动约束”功能来进行自动约束,它在“参数化”选项卡的“几何”面板上。自动约束将自动应用约束到指定公差内的几何形状。例如,应用自动约束到由四条线段组成的矩形,生成合适的相等、水平、平等和垂直约束以在各种编辑后维持矩形形状。你可控制哪个约束为可用,按哪种次序应用,而公差是确定哪种约束为自动应用。这些控制在约束设置对话框中的“自动约束”选项卡中可以修改,该对话框可通过“参数化”选项卡或CONSTRAINTSETTINGS 命令进行访问。 约束标记 约束标记显示了应用到对象的约束。你可使用CONSTRAINTBAR 命令来控制约束标记的显示,也可以通过在“参数化”功能区选项卡的“几何”面板上的“显示”、“全部显示有”、“隐藏”选项来控制。 当约束标记显示后,你可将光标对准约束标记来查看约束名称和约束到的对象。 你也可以通过约束设置对话框中的“几何”选项卡来控制约束标记的显示。选项包括可调节哪种类型的约束显示在约束标记中、设置透明度以及应用约束到选定对象后自动显示约束标记而不管当前约束标记的可见性设置。

AutoLISP基础入门案例,很受用精编版

单元一:AutoLISP主角潇洒登场 一. AutoLISP 是何方神圣? 1.AutoLISP是AutoCAD的最佳拍檔! 2.AutoLISP内含于AutoCAD软件内,不用另外花钱买! 3.AutoLISP是强化AutoCAD最好、最直接的『程序语言』! 4.AutoLISP易学、易用,即使不会程序设计的AutoCAD使用者,都能在最短 的时间内,写出令人惊讶、赞叹的功能! 5.若说AutoLISP的出现,是替AutoCAD 创造一片天的『最大功臣』,实不 为过一点也不夸张! 6.AutoLISP希望您去学习它、改善它、发挥它、享受它.真的!它的威力、魅 力无穷! 二. AutoLISP 程序语言的特质分析: 学习AutoLISP是非常容易的,对初学者而言,即使没有学习过任何的程序语言,都能很快的上手,写出精彩漂亮的AutoLISP程序! 三.撰写AutoLISP 的动机? 1.欲强化AutoCAD 原有指令时. 2.欲创造更有用的AutoCAD 新指令. 3.欲简化繁琐的环境设定或绘图步骤时. 4.欲处理参数式绘图时.

5.欲做图面资料读文件、写文件. 6.欲做AutoCAD 简报展示时. 7.欲达到真正灵活掌控AutoCAD 时. 8.欲提升自己跨上AutoCAD 高手列车时. 四.AutoLISP 的效益评估? 1. 对公司负责人或设计主管而言: A. 也许某员工或干部花了20个小时撰写一个AutoLISP程序,表面上,这将近三天的时间,他连一张图都没有画,甚至可能偶有发呆、沈思,若此程序一天可以替公司绘图部门节省1小时绘图时间,那算一算,只要20天就抵销开发成本,而20天以后都是赚的,『用的愈久,省的愈多』! B.若员工皆有此动力,在不影响正常工作,『鼓励』都来不及,那有『压抑』的道理,甚至还要派遣优秀人员出去受 训,学习更好的设计技巧与创意呢?! C.千万不要因为您的不懂或压抑,SHOW您的权威与POWER,如此,不但对员工造成打击,甚至您可能成为阻碍 了公司计算机化进步的罪魁祸首 D. 当然,若要撰写的程序很多,内部设计人员的程序功力距离太远,达成需求的时间反而变得遥遥无期,那倒不如求助于市面上已有的相关AutoCAD 支持软件。 2. 对设计人员而言:

养成良好的AutoLISP书写习惯

养成良好的AutoLISP书写习惯 众所周知,Lisp是一种表结构语言,括号必须成对出现,在调试时往往为遗漏了一个括号大费周折,所以,养成一个好的编程习惯是学好Lisp所必须的。 ⑴选择一个较好的编辑器,这是一个基本条件,建议使用Visual Lisp编辑器或Lisplink 等专用编辑器,此类编辑器可以对函数突出显示。 ⑵按Lisp(DCL)专有格式书写,并经常对程序进行“格式化”,及时发现语法错误,并有利于调试是查找错误。 ⑶使用自定义函数,并辅助以适当得注释,在较大程序中按功能使用自定义函数可以使得程序条理化。 autolisp的入门教程+autolisp函数! Lisp是一门历史悠久的语言,全名叫LISt Processor,也就是“表处理语言”,它是由John McCarthy于1958年就开始设计的一门语言。和Lisp同时期甚至更晚出现的许多语言如Algo 等如今大多已经消亡,又或者仅仅在一些特定的场合有一些微不足道的用途,到现在还广为人知的恐怕只剩下了Fortran和COBOL。但唯独Lisp,不但没有随着时间而衰退,反倒是一次又一次的焕发出了青春,从Lisp分支出来的Scheme、ML等语言在很多场合的火爆程度甚至超过了许多老牌明星。那么这颗常青树永葆青春的奥秘究竟在哪里呢? 如果你只接触过C/C++、Pascal这些“过程式语言”的话,Lisp可能会让你觉得十分不同寻常,首先吸引你眼球(或者说让你觉得混乱的)一定是Lisp程序中异常多的括号,当然从现在的角度来讲,这种设计的确对程序员不大友好,不过考虑到五六十年代的计算机处理能力,简化语言本身的设计在那时算得上是当务之急了。 Lisp的基本语法很简单,它甚至没有保留字(有些语言学家可能对这一点有异议,别怕,我听你们的),它只有两种基本的数据,仅有一种基本的语法结构就是表达式,而这些表达式同时也就是程序结构,但是正如规则最简单的围棋却有着最为复杂的变化一样,Lisp使用最基本的语言结构定义却可以完成其它语言难于实现的、最复杂的功能。 废话少说,现在我们就来看看Lisp语言中的基本元素。 Lisp的表达式是一个原子(atom)或表(list),原子(atom)是一个字母序列,如abc;表是由零个或多个表达式组成的序列,表达式之间用空格分隔开,放入一对括号中,如: abc () (abc xyz) (a b (c) d) 最后一个表是由四个元素构成的,其中第三个元素本身也是一个表。 正如算数表达式1+1有值2一样,Lisp中的表达式也有值,如果表达式e得出值v,我们说e返回v。如果一个表达式是一个表,那么我们把表中的第一个元素叫做操作符,其余的元素叫做自变量。

相关主题