AutoLISP程序在AutoCAD中的应用实例

合集下载

用AUTOLISP对AUTOCAD进行二次开发

用AUTOLISP对AUTOCAD进行二次开发

";
:row{ :edit_box{ label="密度ρ key="rho"; fixed_width=true; width=5; }
";
:text{ label="kg/m3"; } }
} } :row{ :column{ :row{ :edit_box{ label="热容 c key="c"; fixed_width=true; width=5; alignment=centered; } :text{ label="J/(kg·K)"; } } :row{ :edit_box{ label="合金液相线温度 T_L"; key="T_L"; fixed_width=true; width=5; alignment=centered; } :text{ label="K"; } }
图3
加载用户自定义的菜单文件
(5)绘制对话框――DCL 语言 第一步:打开 Visual LISP 编辑器 操作同图 2。 第二步:创建用户自定义对话框文件 打开 Visual LISP 编辑器后,在文本框中输入生成用户自定义对话框的代码,写好后将文件保存,扩展 名为.dcl。例如: solidification_coefficient:dialog { label="计算凝固系数 K"; :text{ label="说明:根据合金的热物理特性计算凝固系数 K"; } :boxed_row{
:edit_box{ label="即 mm/s(1/2)"; key="K"; fixed_width=true; width=5; alignment=left; } } :row{

LISP 语言在CAD 道路设计中的各种应用

LISP 语言在CAD 道路设计中的各种应用

第三章LISP语言在CAD道路设计中的各种应用3.1绘制平面任意函数曲线的AutoLISP程序设计在各个工程设计领域中,经常要绘制一些曲线,特别是平面曲线,如水工结构的溢流曲线、机械设计的齿轮渐开曲线等。

在AutoCAD绘图软件中,可以将曲线上的点先计算好,再用线、多义线、样条曲线等方法绘制,这种方法需要进行大量计算,工作量较大,如果用EXCEL软件来辅助计算,可以减轻工作量;另外,可以针对具体的曲线类型,用AutoCAD 内嵌的AutoLISP语言,实现边计算边绘制的功能。

用这种方法绘制虽然快捷,但对于不同的曲线,则需编写同的AutoLISP程序,检查无误后才能运行,仍显繁琐。

能否用统一的程序,来实现各种平面函数曲线的绘制,我们尝试利用AutoCAD中强大的表达式计算功能来实现这一目的。

3.1.1平面函数曲线的类型和绘制方法平面函数曲线即是有简单函数表达式的曲线类型,可考虑经常遇到的4类:(1)直角坐标下形如y=f(x)的曲线;(2)直角坐标下的参数方程曲线;(3)极坐标下形如r=f(θ)的曲线;(4)极坐标下的参数方程曲线。

其中,只需增加一个平凡方程x=x,参数方程(2)就可以包括相应的直接表达形式(1),同样(4)可以包括(3)。

同时,极坐标形式可以通过:x=rcosθy=rsinθ转换为直角坐标表达。

因此从本质上说,4种类型都可以互相转换,把它们分类的目的是尽量采用函数的通常表达形式,以便于使用。

绘制时,参照曲线的手工绘制方法,需要给出曲线上的多个点,然后将它们连接起来。

若给出的点间隔很小,直接用折线段相连就可很好模拟该曲线,如果间隔较大,可以用样条曲线连接,使之比较光滑。

假设我们计算出足够多的点,简单用折线连接即可,为使该曲线成为一个整体,可用多义线的方式连接。

关键的问题是,如何计算出曲线上点的坐标。

由于曲线的函数表达式各种各样,不可能用统一的式子来表示。

可以考虑从外部输入表达式,然后针对该表达式进行计算,给出相应结果,就能够解决点坐标的计算问题。

AutoLISP实用编程四例

AutoLISP实用编程四例

AutoLISP实用编程四例-------------------------------------------------- 江苏崔华明AutoCAD是一个功能强大的通用图形设计软件,其内嵌的AutoLISP语言为用户进行二次开发提供了方便。

下面就介绍几则用AutoLISP编写的实用程序,这些程序相当于新增的AutoCAD命令,可以弥补AutoCAD本身的一些不足,为日常使用带来方便。

1(快速更改文本的大小在标准的AutoCAD中,要更改已有文本的大小,需要使用Change命令。

该命令的缺陷是:即使只更改文本的大小,也要重新确认文本的插入点、字型、倾斜角等一系列参数。

也就是说,除输入文本的新高度值外,还需要按5次回车键才能完成一个文本的更改~而且每次只能修改一个文本。

这对于同时更改多个文本的大小非常不便。

本文的AutoLISP程序使这一工作变得十分方便和快捷。

使用方法如下:在AutoCAD的Command提示下,打入命令:cthAutoCAD将提示“Selectobjects:”,这时可以使用AutoCAD允许的任意方式选择目标。

对于有多个文本需要更改的情况,使用窗口选择比较方便,而且你不用担心选择窗口中包含了非文本目标,程序能够自动在选择的目标中查找出文本实体,并只对文本进行更改。

选择目标后,AutoCAD提示“Newtextheight:”,这时输入一个新的文本高度值然后回车,则所有选中的文本被更改成新设定的高度。

2(延伸直线的长度在实际使用中,常常要将一条直线延伸指定的长度。

通常的做法是:在需要延伸的直线的端点画一个辅助圆,圆的半径等于直线要延伸的长度,然后使用Extend命令将直线延伸到与圆相交,最后删除辅助圆。

本文的AutoLISP程序将使你非常容易地实现这一点。

你只需选择要延伸的直线并输入要延伸的长度即可,其余的工作由程序自动完成。

使用方法如下:在AutoCAD的Command提示下,打入命令:stl然后根据提示选择要延伸的直线(选择点要靠近直线需要延伸的端点),并输入延伸的长度。

autocad机械制图中的autolisp软件的应用

autocad机械制图中的autolisp软件的应用

粘胶废水处理陆彬彬(唐II J三友兴达化纤有限公司,河北唐山063305)应用科狡脯要】根据现有污水处理场运行情况,对8万吨/年差别化粘胶短纤维项目配套污水处理场沉淀池和污泥脱水工序进行改进,以达到污水达标排放的目标。

屏羞蘑蕴司污水处理;沉淀池;污泥脱水;达标辫放8万吨,年差别化粘胶短纤维项目配套污水处理场对我公司生产废水进行一级处理,日处理能力为22000吨,根据环保部门的要求,处理后废水的排放标准为污水综合排放标准G B8978—1996三级标准,经过处理后的污水排入下游污水处理厂。

污水处理场工艺原理为,首先经过鼓风曝气去除污水中的硫化氢和二硫化碳,然后用电石渣浆中和污水中的酸性物质,去除污水中的锌离子,最后经过沉淀达到国家三级排放标准。

1工艺流程图:罐气蔓髓上.‘。

;薪一■,《疆i亨i、;擘i;钽5通蚴直-’丽’-《硝,一,童,丝一卜一一:雩掣…吲㈣~……一‘’…1…一一…T….、{曜气嘎礴,;《._—一哲五.一嘎州2沉淀池设计本次设计设置4个沉淀池,每个沉淀池平均处理水量:225m讣:最大水量:350m m表面水力负荷q,1.5m3/m2-h沉淀时间25h,有效水深3m:h2=qt=1.5x2.5=3.75m进水SS取平均值1500m gA出水按照300m g/l设计沉淀区有效容积V,V1=Q。

o=350x2.5=875m3式中V广—幸剩£容积,m3;Q。

f—嘬大设计流量,m孙。

沉淀区水面积,m2,A=Q。

/q=350/1.5=233m2沉淀区长度L=3.6vt=3.6×5X Z5=45m式中I-—祝淀区长度,m。

v_—嘬大设计流量时的水平流速,m m/s,一般不大于5m m,s,取5。

沉淀区总宽度,m。

B=芦√L=233/45=52m沉淀池长宽比不小于4:1,长深比不小于8:1,沉淀池长度等于沉淀区长度加上前后挡板至池壁的距离。

因此沉淀池长度取45m,宽度取5m,有效水深3.75m。

基于AutoLisp的AutoCAD二次开发在测绘图形处理中的应用

基于AutoLisp的AutoCAD二次开发在测绘图形处理中的应用

基于AutoLisp的AutoCAD二次开发在测绘图形处理中的应用摘要:本文介绍了如何利用Autolisp语言对AutoCAD进行二次开发,并实现了根据断面图来半自动化生成高程点,其结果大大提高了根据断面图绘制平面图的质量和速度。

关键词:AutoCAD Autolisp 自动化程序断面1引言在实际的测绘生产工作中,我们经常会遇到利用已有的断面图来绘制平面图进而复原地形的情况,想要绘制平面图高程点元素是必不可少的,那么我们就必须根据已有的断面图来生成相应的高程点。

本文介绍了如何利用Autolisp语言在AutoCAD中实现根据设计断面图半自动化生成高程点,简化了原来利用AutoCAD测距量取距离,计算桩号、偏距、高程,再用Cass交互展点画出高程点的生成办法,在提高了准确率的同时也提高了工作效率。

2 Autolisp简介Autolisp是由Autodesk公司开发的一种LISP程序语言,LISP是List Processor(表处理程序)的缩写。

LISP语言具有语法简单,通俗易懂等特点,通过autolisp编程,可以节省工程师很多时间。

AutoLISP语言作为嵌入在AutoCAD内部的具有智能特点的编程语言,是开发应用AutoCAD不可缺少的工具[[1]]。

在工程测量领域中,AutoCAD得到了普遍应用,在日常工作中有许多人在研究使用AutoCAD,并画出了很多工程图纸。

然而,人们经常会感觉到作图效率还是不够高,这是因为AutoCAD是一个通用的绘图软件,并不具备专业特色。

AutoCAD开放的结构为不同的使用者留出了广阔的空间,提供了许多二次开发工具,AutoLISP是其中最强大的一个,Autolisp是AutoCAD自带的一门编程语言,无需安装,是为扩展和自定义AutoCAD功能而设计的编程语言,Autolisp易于使用,并且非常灵活,多年来一直是自定义AutoCAD的标准。

Autolisp嵌入AutoCAD内部,它不仅具有一般高级语言的基本结构和功能,而且还具有强大的图形处理和数据交换功能。

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

用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度时,即可形成圆柱螺旋线。

在autocad中应用autolisp实现轴承参数化绘图

在autocad中应用autolisp实现轴承参数化绘图

在AutoCAD 中应用Autolis p 实现轴承参数化绘图王弘慧1,李建辉2(1.哈尔滨轴承集团公司质量管理部,黑龙江哈尔滨150036;2.中航工业哈尔滨轴承有限公司研发中心,黑龙江哈尔滨150036)摘 要:以深沟球轴承的参数化绘图为示例,介绍了用A ut oli sp 对A ut oCA D 图形进行的参数化绘图程序设计。

实践表明,A ut olisp 语言功能强大,易学易用,是A ut oCA D 二次开发的重要工具。

关键词:A ut olisp A ut oCA D ;参数化;深沟球轴承中图分类号:TH133.33,TP319文献标识码:B 文章编码:1672-4582(2012)01-0055-03Achieving bear ing parameteric drawing with Autolisp based on AutoCADWang Honghui 1,Li Jianhui 2(1.Department of quality management,Harbin Bearing Group Corporation,Harbin 150036,China;2.Bearing R&D Center,A VIC Harbin Bearing Co.,Ltd.,Harbin 150036,China)Abstract:The deep groove ball bearing,for example,the AutoCAD graphic is achieved parametric drawing program design with Autolisp.The practice shows that Autolisp is powerfull,it is easy to study and use,and an important tool for AutoCAD secondary development.Key words:Autolisp AutoCAD;parameterization;deep groove ball bearings第33卷 第1期2012年3月Vo l.33No .1Mar.2012哈 尔 滨 轴 承JOU RNA L O F HA RBIN BEARIN G收稿日期:作者简介:2011-08-26.王弘慧(1965-),女,工程师.1 前言 AutoCAD 是由美国Autodesk 公司推出的通用绘图设计软件,功能强大,但其功能还仅限于帮助用户完成CAD 中的图形显示和绘制。

用LISP语言自定义AutoCAD命令

用LISP语言自定义AutoCAD命令

用LISP语言自定义AutoCAD命令AutoLISP语言作为AutoCAD的二次开发工具,虽然在功能、运行速度和保密性等方面比起ARX等工具要逊色一些,但由于它易学易用,交互性好,灵活性强,对于那些经常使用AutoCAD进行绘图的普通用户来说,不失为一种理想的开发工具。

下面就介绍用AutoLISP 语言自定义的几个AutoCAD绘图命令,可以起到简化操作、提高作图效率的作用。

一、键槽尺寸视图的绘制命令“jct”在绘制轴、齿轮或带轮等零件图时,经常需要画轴上键槽处的剖视图或轮毂键槽的端面视图,比较麻烦;由于键槽的尺寸随轴径的变化而变化,所以我们可以用LISP程序来实现自动绘图。

加载下面的程序,在命令行中键入”jct”并回车,通过人机交互的形式输入有关参数,可自动完成轴上键槽的剖视图和轮毂键槽的端面视图的绘制。

代码示例如下所示。

(defun C:jct ()(setq pt0 (getpoint "\n 请输入视图的中心位置点:"))(initget 7)(setq loop T)(while loop(setq d (getreal "\n请输入键槽处的轴径(12<d<130)(mm):"))(if(or (< d 12) (> d 130))(alert "轴径数据输入错误!\n\n请重新输入!")(setq loop nil));if);while(cond;根据轴径检索键槽尺寸((and (> d 12) (<= d 17)) (setq b 5 t1 3.0 t2 2.3));b表示键槽的宽度((and (> d 17) (<= d 22)) (setq b 6 t1 3.5 t2 2.8));t1表示轴上键槽的深度((and (> d 22) (<= d 30)) (setq b 8 t1 4.0 t2 3.3));t2表示轮毂上键槽的高度((and (> d 30) (<= d 38)) (setq b 10 t1 5.0 t2 3.3))((and (> d 38) (<= d 44)) (setq b 12 t1 5.0 t2 3.3))((and (> d 44) (<= d 50)) (setq b 14 t1 5.5 t2 3.8))((and (> d 50) (<= d 58)) (setq b 16 t1 6.0 t2 4.3))((and (> d 58) (<= d 65)) (setq b 18 t1 7.0 t2 4.4))((and (> d 65) (<= d 75)) (setq b 20 t1 7.5 t2 4.9))((and (> d 75) (<= d 85)) (setq b 22 t1 9.0 t2 5.4))((and (> d 85) (<= d 95)) (setq b 25 t1 9.0 t2 5.4))((and (> d 95) (<= d 110)) (setq b 28 t1 10.0 t2 6.4))((and (> d 110) (<= d 130)) (setq b 32 t1 11.0 t2 7.4)))(command "circle" pt0 "d" d)(command "zoom" "a")(setq s1 (ssget "l" ))(setq di (-(* (/ d 2.0) (/ d 2.0)) (* (/ b 2.0) (/ b 2.0)))dx (sqrt di)dy (/ b 2.0)pt1 (list (+ (car pt0) dx) (+ (cadr pt0) dy)))(initget "Zc Lc");Zc表示画轴键槽的剖视图,Lc表示画轮毂键槽的端面视图(setq zrl (getkword "\n 画轴键槽的剖视图还是轮毂键槽的端面视图(Z/L)?"))(if (= zrl "Zc")(progn;计算轴键槽上点的坐标(setq pt2 (list (+ (car pt0) (-(/ d 2.0) t1)) (+ (cadr pt0) dy))pt3 (polar pt2 (- (/ pi 2.0)) b)pt4 (polar pt3 0 (- dx (- (/ d 2.0) t1)))));progn);if(if (= zrl "Lc")(progn;计算轮毂键槽上点的坐标(setq pt2 (list (+ (car pt0) (+(/ d 2.0) t2)) (+ (cadr pt0) dy))pt3 (polar pt2 (- (/ pi 2.0)) b)pt4 (polar pt3 (- pi) (- (+ (/ d 2.0) t2) dx))));progn);if(command "pline" pt1 pt2 pt3 pt4 "");画键槽(setq s2 (ssget "l"))(command "layer" "m" 5 "l" "center" 5 "c" 1 5 "")(command "ltscale" 8)(command "line" (polar pt0 (- pi) (+ (/ d 2.0) 10));画中心线(polar pt0 0 (+ (/ d 2.0) 10)) "")(command "line" (polar pt0(-(/ pi 2.0)) (+ (/ d 2.0) 10))(polar pt0 (/ pi 2.0) (+ (/ d 2.0) 10)) "")(command "layer" "s" 0 "")(if (= zrl "Zc")(progn(setq s3 (entsel "\n 请选择修剪的目标:"))(command "trim" s2 "" s3 "");修剪形成键槽(command "hatch" "U" "45" "2" "n" s1 s2 ""));画轴上键槽处剖视图的剖面线);if(if (= zrl "Lc")(progn(setq s4 (entsel "\n 请选择修剪的目标:"))(command "trim" s2 "" s4 "");修剪形成键槽(command "rotate" s1 s2 "" pt0 90));将轮毂键槽的端面视图旋转90度);if);end defun二、螺纹孔剖视图的绘制命令“lwk”在绘制机械零件图时,经常要画螺纹孔的剖视图,同样由于螺纹孔的有关尺寸都随螺纹的公称直径而变化,我们可以用下面的程序自动完成其剖视图的绘制。

浅谈基于AutoLISP的AutoCAD二次开发技术

浅谈基于AutoLISP的AutoCAD二次开发技术

浅谈基于AutoLISP的AutoCAD二次开发技术在以AutoCAD制图的工程应用中,经常需要开发一些符合工程需求的AutoCAD工具。

AutoLISP语言是一种对AutoCAD进行二次开发的灵活手段。

本文通过一个从上到下逐行写文本的简单程序,探讨了基于AutoLISP的AutoCAD二次开发程序设计的基本步骤和具体实现过程。

标签:AutoCAD AutoLISP 二次开发AutoCAD是由美国Autodesk公司开发的通用计算机辅助绘图和设计软件包,它具有易于掌握、使用方便、体系开放等特点。

已广泛应用于机械、建筑、电子、土木工程、轻工等各个领域。

目前AutoCAD最新的版本是AutoCAD2006。

一、AutoLISP及二次开发的概念AutoLISP 语言是嵌入在AutoCAD内部的LISP编程语言,它是LISP语言与AutoCAD有机结合的产物。

AutoLISP的嵌入使AutoCAD真正成为能进行计算机辅助设计、绘图的CAD软件。

在使用AutoCAD制图中,大量操作都是通过鼠标点击控件和键盘输入相应参数组合实现的。

有时在制图过程中会需要做大量重复的操作,这些操作又具有一定的规律。

那么,便可以通过AutoLISP开发出AutoCAD中可以使用的自定义控件,在点击该控件后,大量繁琐的执行过程交由后台执行,用户仅需输入一些必要的参数,即可实现制图效果。

这种方法就是所谓的“二次开发”。

显然,二次开发能够提高工作的效率和减轻工作量。

二、使用AutoLISP进行二次开发的实例及过程剖析(一)题目。

下面通过编写一个从上到下逐行写文本的小程序段来简要分析AutoLISP的开发过程。

题目要求如下:1. 用户只需点击一个自定义工具按钮,系统即会提示用户输入首行文本所在位置、相邻两行文本偏移量、文本高度这三个参数。

其中,首行文本所在位置由鼠标在屏幕上点击获得,文本高度默认值为4。

2. 用户依次输入文本,回车表示结束当行输入。

AUTOLISP在CAD二次开发中的应用

AUTOLISP在CAD二次开发中的应用

Autolisp在CAD二次开发中的应用摘要:Auto LISP语言是Auto CAD中最大的一种编程工具,基于Auto LISP的编程工具,数量大的让人惊讶。

将一些小程序嵌套于AUTO LISP内部,使LISP语言和AUTO CAD有机结合,能有效地提高AutoCAD的绘图功能。

通过对Auto LISP语言的分析与研究,探讨了基于Auto LISP的AutoCAD 参数化处理数据的程序设计的基本步骤。

本文设计了如何用Auto LISP语言如何绘制典型机械零件图形,并且详细阐述了其实现过程。

实践表明,Auto LISP语言功能强大,易学易用,AutoCAD二次开发的重要工具。

关键词:Auto lisp语言;程序设计;二次开发随着科学技术的不断发展和社会的不断进步,计算机也越来越普遍的在各个行业中得到推广和应用。

实践证明在利用CAD绘制零件图技术在质量和速度上都产生了一个质的飞跃,使机械设计工作上了一个大台阶。

但是目前许多设计人员大多只能利用AUTO CAD软件,一笔一画地绘出所需的设计图纸,是设计人员大大部分时间都花费在繁琐的计算和绘图中,设计工作的重复性较大,工作效率较低。

如果设计人员能够对AUTO CAD进行二次开发,通过对AUTO LISP 进行编程,在CASS中加入一些用户需要的功能,从而使CASS在绘图中更具有实用化。

Auto LISP语言是嵌入在Auto CAD内部的LISP编程语言,它是LISP语言与Auto CAD有机结合的产物。

Auto LISP的嵌入使Auto CAD真正成为能进行计算机辅助设计、绘图的软件。

VLISP是Auto LISP的换代产品。

VLISP对语言进行了扩展,可以通过Microsoft ActiveX Automation接口与对象交互。

同时,通过实现反应器函数,还扩展Auto LISP响应事件的能力。

Visual Lisp具有一个交互式和智能控制台,包括有一个项目窗口、代码分色的文本编辑器、调试器、源程序窗口及许多其他特性。

五个实用的AutoCAD的lisp程序

五个实用的AutoCAD的lisp程序

五个实用的AutoCAD的lisp程序1、计算CAD图形中所有线段总长度(加载后只需框选所有线段便可得出这些线段的总长度)(defun c:LL ()(setvar "cmdecho" 1)(setq en (ssget (list '(0 . "spline,arc,line,ellipse,LWPOLYLINE"))))(setq i 0)(setq ll 0)(repeat (sslength en)(setq ss (ssname en i))(setq endata (entget ss))(command "lengthen" ss "")(setq dd (getvar "perimeter"))(setq ll (+ dd ll))(setq i (1+ i)))(princ "所选线条总长为:")(princ ll)(princ))2、标注CAD图形中所有线段(加载后只需框选所有线段便可得标注这些线段)(defun c:LLL ()(COMMAND "UCS" "")(setvar "cmdecho" 1)(SETVAR "OSMODE" 0)(setq AcadObject (vlax-get-acad-object)AcadDocument (vla-get-ActiveDocument Acadobject)mSpace (vla-get-ModelSpace Acaddocument));;选取需要测量的样条曲线、圆弧、直线、椭圆(setq en (ssget (list '(0 . "spline,arc,line,ellipse,LWPOLYLINE"))))(setq i 0);;获取系统参数textsize(setq shh (getvar "textsize"))(setq str_hh (strcat "\n文字高度 <" (rtos shh 2) ">: "))(setq hh (getdist str_hh))(while hh(setvar "textsize" hh)(setq hh nil));;输入标注文字高度;;循环开始(repeat (sslength en)(setq ss (ssname en i))(setq endata (entget ss))(command "lengthen" ss "")(setq dd (getvar "perimeter"))(princ (strcat "\n长度=" (rtos dd 2)));;寻找代表图层的字符串(setq aa (assoc 0 endata));;获取图层名称(setq aa1 (cdr aa));;判断线条种类(cond((= aa1 "SPLINE");;如果是spline(progn(setq arcObj (VLAX-ENAME->VLA-OBJECT ss))(setq startPnt1 (vla-get-ControlPoints arcObj))(setq p1(vlax-safearray->list (vlax-variant-value startPnt1)) )(setq x1 (car p1))(setq y1 (cadr p1))(setq z1 (caddr p1))(setq pp1 (list x1 y1 z1))(repeat (- (/ (length p1) 3) 1);;循环,寻找最后一个控制点(setq p1 (cdddr p1))(setq x2 (car p1))(setq y2 (cadr p1))(setq z2 (caddr p1)))(setq pp2 (list x2 y2 z2))))((= aa1 "LWPOLYLINE");;如果是LWPOLYLINE(progn(setq arcObj (VLAX-ENAME->VLA-OBJECT ss)) (setq startPnt1 (vla-get-Coordinates arcObj)) (setq p1(vlax-safearray->list (vlax-variant-value startPnt1)) )(setq x1 (car p1))(setq y1 (cadr p1))(setq z1 (caddr p1))(setq pp1 (list x1 y1 z1))(repeat (- (/ (length p1) 3) 1);;循环,寻找最后一个控制点(setq p1 (cdddr p1))(setq x2 (car p1))(setq y2 (cadr p1))(setq z2 (caddr p1)))(setq pp2 (list x2 y2 z2))))(t;;如果是其他种类线条(progn(setq arcObj (VLAX-ENAME->VLA-OBJECT ss)) (setq startPnt1 (vla-get-StartPoint arcObj));;获取起点(setq endPnt1 (vla-get-EndPoint arcObj));;获取终点(setq pp1(vlax-safearray->list (vlax-variant-value startPnt1)))(setqpp2 (vlax-safearray->list (vlax-variant-value endPnt1)) ))))(setq x1 (car pp1))(setq y1 (cadr pp1))(setq z1 (caddr pp1))(setq x2 (car pp2))(setq y2 (cadr pp2))(setq z2 (caddr pp2))(setq x (/ (+ x1 x2) 2))(setq y (/ (+ y1 y2) 2))(setq z (/ (+ z1 z2) 2))(setq pt (list x y z));;取得线段两端的中点(setq ang (angle pp1 pp2));;获取角度(if (> (* (/ ang pi) 180) 180)(setq ang (+ ang pi)))(command "text""j""bc"pt""(* (/ ang pi) 180)(strcat "" (rtos dd 2))"")(setq i (1+ i)))(prin1))(prompt "\n <>在图中直接写出长度") (prin1)3、连续打断程序(defun c:br1 ()(command "break" pause "f" pause "@"))4、将CAD文字导入Excel表格(defun c:Q2()(setq ffn (getfiled "写出文件" "" "xls" 1))(princ "\n选取文字...")(setq ss (ssget))(setq ff (open ffn "w"))(setq i 0)(repeat (sslength ss)(setq ssn (ssname ss i))(setq ssdata (entget ssn))(setq sstyp (cdr (assoc 0 ssdata)))(if (or (= sstyp "TEXT") (= sstyp "MTEXT"))(progn(setq txt (cdr (assoc 1 ssdata)))(princ txt ff)(princ "\n" ff)))(setq i (1+ i)))(close ff)(princ (strcat "\n写出文件: " ffn))(prin1))5、删除带颜色图元以下程序在别人的贴子里贴过.为了说明问题,今天再贴一次。

用AutoLISP实现AutoCAD实体编辑

用AutoLISP实现AutoCAD实体编辑

用AutoLISP实现AutoCAD实体编辑曹金文摘要AutoCAD环境下的实体编辑可以用AutoCAD命令,但有时对大量实体的编辑用AutoCAD命令是很繁琐的。

通过AutoLISP获得实体的DXF组码,笔者通过对DXF组码的分析,给出了在AutoCAD环境下用AutoLISP实现AutoCAD 环境下的实体编辑方法。

关键词:AutoLISP DXF组码 实体编辑一、引言在用AutoCAD绘图过程中,我们又经常遇到例如改变某一种颜色的实体的线型、层,使某一宽度的多义线变为另一宽度,改变文字的字型等,这些操作如用AutoCAD命令做,那要一个实体一个实体的选择,这是很麻烦的,有时用鼠标选了半天,还是有的实体漏选或错选。

此时,如用AutoLISP来做,将是很方便的。

二、实现方法假如,在AutoCAD环境下,我们碰到这样一个问题,要求我们把所有宽度为0.5的多义线改为宽度为1。

当然我们可用AutoCAD命令“PEDIT”,但是美中不足的是我们必须一个实体一个实体地选,有时用鼠标选了半天,还是有的实体漏选或错选。

有没有更简便的办法呢?办法肯定是有的。

那就是用AutoLISP,编一段很短的AutoLISP代码,问题就解决了。

请看下面这段AutoLISP代码:TYPE EDWIDTH.LSP;作者 东台游子 E-mail:caojinwen@(defun C:EDWIDTH()(setvar "cmdecho" 0)(setq w (getreal "\n原宽度:"))(setq w2 (getreal "\n新宽度:"))(setq sslist (ssget "X" (list (cons 0 "POLYLINE"))))(while (ssname sslist 0)(setq sname (ssname sslist 0))(setq a (entget sname))(setq a1 (cdr (assoc 40 a)))(if (= a1 w)(command "pedit" sname "w" w2 ""))(setq sslist (ssdel sname sslist)));while);defun在上面这段程序中,我们首先要用户输入多义线的原始宽度和更新后的宽度,并把它分别赋给变量w、w2,也就是告诉系统把宽度为w的多义线改为宽度为w2接下来,我们构造了一个选择集sslist,这个选择集为所有宽度为w 的多义线的集合。

基于AutoLISP语言CAD二次开发功能实现

基于AutoLISP语言CAD二次开发功能实现

基于AutoLISP语言的CAD二次开发浅析及功能实现摘要:autocad 是工程建设普遍使用的一种功能强大的绘图软件,而且可以进行用户的二次开发。

本文介绍了基于autolisp语言的cad二次开发过程,并例举了部分功能实现的代码和调用过程,以期节约时间,提高cad绘图效率。

关键词:autolisp语言,autocad二次开发,坐标点提取1.autolisp语言autolisp 语言嵌套于autocad内部,它是lisp语言与autocad 有机结合的产物,是为二次开发autocad而专门设计的编程语言。

autolisp采用了和commonlisp 最相近的语法和习惯约定,它具有commonlisp 的特性,又针对autolisp 增加了许多功能。

它可以把autolisp程序和autocad的绘图命令结合起来,使设计和绘图完全融为一体,方便了对屏幕图形的实时修改,参数化设计和交互设计,为在绘图领域应用人工智能提供了方便。

autolisp语言嵌入autocad之后,autocad就不再只是交互式的图形绘制软件,而成为了真正能够进行计算机辅助设计绘图的cad软件。

2. autolisp语言结构autolisp 数据类型丰富,包括:整型、实型、字符串、表、文件描述符、autocad 的图元名、autocad 的选择集等。

autolisp 处理的对象是符号表达式,简称表达式。

表达式相当于其他编程语言中程序的语句,是由原子或表构成的。

原子可以细分为数原子,串原子和符号原子。

多数情况下,autolisp 表达式以表的形式存在,其格式如下所示:(函数名 [参数]……)每个表达式以左括号开始,并由函数名及参数组成,左括号后的第一个元素必须是函数名。

参数的数量可以是任意多个,也可以是0个,这取决于具体函数,每个参数也可能是表达式。

表达式以右括号结束,每一个表达式的返回值都能被外层表达式使用,最后计算的值被返回到调用的表达式。

应用AutoLISP 实现AutoCAD 参数化绘图

应用AutoLISP 实现AutoCAD 参数化绘图

1概述AutoCAD是美国AutoDesk公司开发的一个交互式绘图软件,它不仅具有强大的绘图、编辑功能,还具有开放的体系结构,允许用户通过内置的AutoLISP语言实现二次开发。

在CAD的二次开发中,参数化绘图是其中的一项,它可以让设计者自己通过修改设计参数来制作产品零件的模型图形。

参数化绘图已经从传统的模式中摆脱出来,全面的简化了使用者对零件模型的修改过程,从而提高了效率。

2AutoLISP语言特点AutoLISP是一种内嵌式表处理语言,是CAD开放式体系结构的一种体现,同时也是LISP(List Processor)语言和CAD相结合的产物。

AutoLISP语言不仅拥有普通的高级语言所具备的功能,而且还有普通的高级语言所不具备的强大的处理图形的功能。

它最大的好处在于语法简单易懂,易于掌握,可直接调用几乎全部AutoCAD命令,因此被广泛应用于AutoCAD二次开发上。

AutoLISP语言最典型的应用之一就是实现参数化绘图程序设计。

3参数化绘图设计方案3.1绘图对象的选择任何机器或部件都是由若干零件按一定的技术要求装配而成。

零件分为标准件和非标准件两大类。

标准件的结构和尺寸都由标准系列确定,通常由专业厂家生产;而非标准件的结构、形状、大小等需要根据它们在机器或部件中的作用进行设计确定,据此画出每个零件的零件图,以便加工制造。

底板是箱体类零件的一个组成部分,主要起连接、固定零件的作用,一般由中心孔、定位销孔、槽孔等组成,不同的零件,其底板的大小、形状、定位销孔的数量也不同,这些都可以通过改变程序中的设计参数来实现。

在此,以非标准零件中常见的箱体类零件的矩形应用AutoLISP实现AutoCAD参数化绘图王伯黎张兴蓉宜宾职业技术学院四川宜宾644003摘要:通过对AutoLISP语言特点的研究,探讨了基于AutoLisp的AutoCAD参数化绘图程序设计的基本步骤。

以底板参数化绘图为例,详细阐述了应用DCL创建人机交流对话框,应用AutoLISP编写参数化绘图程序的具体过程。

AutoLISP程序在AutoCAD中的应用实例1

AutoLISP程序在AutoCAD中的应用实例1

AutoLISP程序在建筑设计中的应用实例孙煜广东机电职业技术学院广州510515摘要:笔者在AutoCAD平台上,用LISP语言编写了一系列程序,提高了出图效率和设计的准确性。

关键词:计算机,计算机绘图,程序,lisp,建筑制图,结构设计1.程序设计目的目前,各建筑设计院一般都配备了建筑设计方面的专业软件,如“天正”,“探索者”等,在一定程度上提高了设计人员的效率,但各软件在使用上都有不便之处。

如各设计院的标准不同、设计人员的习惯不同,同时还存在地区差异等,因此设计人员在设计图时只能采用CAD“硬”画,效率低,质量也很难保证。

针对上述问题,笔者用AutoLISP编制了一系列辅助的小程序,这些程序的编制思路是按照传统的绘制方式,灵活运用于各个设计程序段,作为专业软件的有益补充。

2.主要程序介绍本程序组中主要包括的程序有:dc.lsp;200,250,300宽梁平面绘制a.lsp:从pkpm转化为初步设计文字s.lsp:将梁高度标注降低30mmvv.lsp:测量板净宽度w.lsp:排列梁编号工具fd.lsp:改变梁编号中数字aa.lsp:通过输入截面面积自动配钢筋3.使用方法本程序组是根据建筑结构设计中的各步骤来进行编制的,笔者将结构设计分为初步设计图,梁模板图,板钢筋图,梁钢筋图四个阶段。

设计人员在进行初步设计时,利用dc.lsp可以直接绘制双线作为梁截面线,利用a.lsp 将pkpm文字转化为初步设计标注,完成初步设计。

在梁模板图阶段,利用s.lsp将走廊地面或平台地面的梁高度统一降低30mm。

利用w.lsp进行梁编号绘制,用fd.lsp进行梁编号修改,完成梁模板图设计。

在板钢筋阶段,利用vv.lsp测量板宽,绘制板钢筋。

在梁钢筋阶段,用aa.lsp根据pkpm计算出的截面面积,输入截面面积直接配筋。

完成梁钢筋图设计。

4.程序举例下面以vv.lsp为例,介绍其程序内容。

vv.lsp程序通过输入AutoCAD已绘制的板内任意一点,自动对围成板的线条进行分析,排除不需要图层,自动测量出板两条线的净宽度值,然后标记在图上。

Autolisp:利用AuoCAD之Lisp编程案例之智能加工齿轮的演示程序

Autolisp:利用AuoCAD之Lisp编程案例之智能加工齿轮的演示程序

Autolisp:利用AuoCAD之Lisp编程案例之智能加工齿轮的演示程序Autolisp:利用AuoCAD之Lisp编程案例之智能加工齿轮的演示程序实现结果实现代码(defun dlg1();初始化对话一(set_tile "_m" "5");模数列表第6项(set_tile "_z" "20");齿数20(set_tile "_alf" "2");压力角第3项(set_tile "s_z" "20");齿数滑动条(set_tile "cut" "2");齿廓列表第3项(action_tile "_m" "(setq msh_ $value)")(action_tile "s_z" "(fsz)")(action_tile "_z" "(fz)")(action_tile "s_x" "(fs_x)")(action_tile "_x" "(f_x)")(action_tile "_alf" "(setq ylj_ $value)")(action_tile "prec0" "(setq qxcsh 5)")(action_tile "prec1" "(setq qxcsh 10)")(action_tile "prec2" "(setq qxcsh 15)")(action_tile "accept" "(getd)(done_dialog 1)")(action_tile "cancel" "(done_dialog 0)")(action_tile "help" "(dlg3)"));定义获取控件当前数据的函数(defun getd()(setq msh_ (get_tile "_m"))(setq msh (atof(nth (atoi msh_) m_lst)));模数(setq ylj_ (get_tile "_alf"))(setq ylj (atof(nth (atoi ylj_) alf_lst)));压力角(setq bwxsh(atof(get_tile "_x")));变位系数(setq chsh(atoi(get_tile "_z")));齿数);定义齿数编辑框的活动的函数(defun fz(/ gz)(setq gz(atoi $value))(if (or (< gz 9)(> gz 100))(progn(set_tile $key (get_tile "s_z"))(setq chsh(atoi $value)))(progn(set_tile "s_z" (itoa gz))(setq chsh gz))));定义齿数滑动条的活动的函数(defun fsz()(set_tile "_z" $value)(setq chsh (atoi $value)));定义变位系数滑动条的活动的函数(defun fs_x(/ xx)(setq xx (atof $value))(setq bwxsh(* 0.01 xx))(setq xx(rtos bwxsh 2 2))(set_tile "_x" xx));定义变位系数编辑框的活动的函数(defun f_x(/ xx )(setq xx(atof $value))(if (or (< xx -1)(> xx 1))(progn(setq xx (get_tile "s_x"))(setq xx(atof xx))(setq bwxsh(* 0.01 xx))(set_tile $key (rtos bwxsh 2 2)))(progn(setq bwxsh xx)(setq xx(* 100 xx))(set_tile "s_x" (itoa xx)))));定义齿轮加工的函数(defun makegear()(setq chlzhx '(0 0));齿轮中心(setq ylj (* pi (/ ylj 180.0)));度转换为弧度(setq chgao (* msh (+ chdgaoxsh bwxsh)));齿高=1(setq fdybj (* 0.5 (* msh chsh)));分度圆半径(setq dybj (+ fdybj (* msh (+ chdgaoxsh bwxsh))));齿顶圆半径(setq kbj (* 0.25 dybj));轮孔半径(setq lm1 (list (- (car chlzhx) (* 2 dybj)) (+ (last chlzhx) dybj)));图纸界限的左下角(setq lm2 (list (+ (* 5 msh) (car chlzhx) dybj) (- (last chlzhx) (+ 10.0 (* chdjx msh)) dybj)));图纸界限的右上角(command "zoom" lm1 lm2)(setq jybj (+ fdybj (* bwxsh msh)));节圆半径=分度圆半径+变位量(setq temy1 (* msh (+ chdjx chdgaoxsh)));齿顶高1+齿顶间隙0.25(setq chtgen (+ jybj temy1));齿轮中心到齿条根部的距离(setq chtdi (+ chtgen 3.0));齿轮中心到齿条底根部的距离(setq chtdi (- (cadr chlzhx) chtdi));齿条下底的y(setq chtzuo (- (car chlzhx) (* 2 jybj)));齿条左边x(setq p01 (list chtzuo chtdi))(setq chw (* pi msh));周节(setq chtgeny(+ chtdi 3.0));齿条根y(setq p0 (list chtzuo chtgeny))(setq chh (* 2.0 temy1));齿条全齿高(setq chb (/ (* chh (sin ylj)) (cos ylj)))(setq cha (* 0.25 (- chw (* 2 chb))))(setq chnu(* 0.5 chsh));齿条的齿数(setq chnum 0.0)(command "color" "green")(setq chtemp p0)(command "pline" p01 p0 )(while(< chnum chnu);绘制齿条轮廓线(setq chnum (1+ chnum))(command (setq p1 (list (+ cha (car p0)) (cadr p0))))(command (setq p2 (list (+ chb (car p1)) (+ chh (cadr p1)))))(command (setq p3 (list (+ (* 2.0 cha) (car p2)) (cadr p2))))(command (setq p4 (list (+ chb (car p3)) (- (cadr p3) chh))))(command (setq p5 (list (+ cha (car p4)) (cadr p4))))(setq p0 p5))(setq p02 (list (+ chtzuo (* chnum chw)) chtdi))(command p02 p01 "c");齿条轮廓线绘制完毕(setq e1(entlast));获取齿条的图元名(command "region" e1 "");将齿条转换为面域(setq tiao(entlast));获取转换为面域的齿条的图元名(command "color" "white")(command "circle" chlzhx dybj);绘制齿顶圆(setq c1(entlast));获取齿顶圆的图元名(command "region" c1 "");将齿顶圆转换为面域(setq c1(entlast));获取转换为面域的齿顶圆的图元名(command "circle" chlzhx kbj);绘制轮孔圆(setq c2(entlast));获取轮孔圆的图元名(command "region" c2 "");将轮孔圆转换为面域(setq c2(entlast));获取转换为面域的轮孔圆的图元名(command "subtract" c1 "" c2 "");齿顶圆的面域减去轮孔圆的面域(setq lun(entlast));获取齿轮毛坯的图元名(setq dphi(/ 360.0 (* chsh qxcsh)));齿轮毛坯每次旋转角度(setq dphi(/ 360.0 (* chsh qxcsh)));齿轮毛坯每次旋转角度(setq chtydjl (/ chw qxcsh));齿条每次移动距离(setq shjqxcsh 0);实际切削次数(setq ydjl 0.0);累计移动距离(while (<= shjqxcsh (* qxcsh chsh))(setq ydjl (+ ydjl chtydjl))(setq dx chtydjl);齿条移动距离(if (>= ydjl chw)(progn;ydjl大于等于周节chw(setq ydjl 0.0)(setq dx (* (- 1 qxcsh) chtydjl));齿条退回一个周节))(command "copy" tiao "" '(0 0) '(0 0));原地复制齿条(setq tiao1(entlast))(command "subtract" lun "" tiao1 "");齿轮毛坯减去齿条(command "rotate" lun "" chlzhx dphi);齿轮毛坯旋转dphi(command "move" tiao "" '(0.0 0.0) (list dx 0.0));齿条移动dx(setq shjqxcsh (1+ shjqxcsh))));定义齿轮参数显示的函数(defun showdata()(if (not (new_dialog "gear_list" id))(exit))(setq x1(dimx_tile "image2")) ;设置x1为图象宽(setq y1(dimy_tile "image2")) ;设置y1为图象高(start_image "image2") ;开始建立图象(slide_image -10 -10 (+ x1 20) y1 "d:/example/sld/13-2-21") ;-10 -10 (+ x1 20) y1(end_image) ;图象建立毕(set_tile "t1" (strcat "模数m: " (rtos msh 2 2)))(set_tile "t2" (strcat "齿数z: " (itoa chsh)))(setq ylj(* 180 (/ ylj pi)))(set_tile "t3" (strcat "压力角a: " (rtos ylj 2 2) "?" ));jlj0(set_tile "t4" (strcat "变位系数x: " (rtos bwxsh 2 2)))(set_tile "t5" (strcat "分度圆直径d: " (rtos (* 2 fdybj) 2 2)))(set_tile "t6" (strcat "齿顶圆直径da: " (rtos (* 2 dybj) 2 2)))(set_tile "t7" (strcat "齿根圆直径df: " (rtos (* 2 (- dybj (* 2.25 msh))) 2 2)))(action_tile "accept" "(done_dialog 1)")(action_tile "xwj" "(done_dialog 2)")(if (> (start_dialog) 1)(fwfile)));定义将齿轮参数写到指定文件的函数(defun fwfile()(setq fname(getfiled "输入存放齿轮参数的文件" "" "txt" 1))(setq fp(open fname "w"))(write-line (strcat "模数m: " (rtos msh 2 2)) fp)(write-line (strcat "齿数z: " (itoa chsh))fp)(write-line (strcat "压力角a: " (rtos ylj 2 2) "?" )fp)(write-line (strcat "变位系数x: " (rtos bwxsh 2 2))fp)(write-line (strcat "分度圆直径d: " (rtos (* 2 fdybj) 2 2))fp)(write-line (strcat "齿顶圆直径da: " (rtos (* 2 dybj) 2 2))fp);(write-line (strcat "齿根圆直径df: " (rtos (* 2 (- dybj (* 2.25 msh))) 2 2))fp)(close fp)); 主函数(defun c:niu( / bwxsh c1 c2 cha chb chdgaoxsh chdjx chgao chh chnu chnum chsh chlzhx chtdi chtemp chtgen chtgeny chtydjl chtzuo chw dphi dx dybj e1 fdybj fname fp jybj kbj lm1 lm2 lun msh (setvar "cmdecho" 0)(setvar "blipmode" 0)(setvar "osmode" 0)(setq chdgaoxsh 1.0);齿高系数(setq chdjx 0.25);齿间隙(setq qxcsh 15)(setq id(load_dialog "d:/example/dcl/13-2")) ;装入对话框文件(if (< id 0)(exit))(setq what 3)(while (> what 1)(if (not (new_dialog "mgear" id))(exit))(setq x1(dimx_tile "image1")) ;设置x1为图象宽(setq y1(dimy_tile "image1")) ;设置y1为图象高(start_image "image1") ;开始处理图象(slide_image -10 -25 (+ x1 100) y1 "d:/example/sld/13-2-1") ;-10 -25 (+ x1 20) y1(end_image) ;图象处理完毕(setq m_lst(list "1" "1.25" "1.5" "2" "2.5" "3" "4" "5" "6" "8" "10"))(start_list "_m") ;开始处理模数列表(mapcar 'add_list m_lst)(end_list);模数列表处理完毕(setq alf_lst(list "14.5" "15" "20" "22.5" "25"))(start_list "_alf");开始处理压力角列表(mapcar 'add_list alf_lst)(end_list);压力角列表处理完毕(dlg1) ;初始化对话框一(if (/= what 2) (setq what (start_dialog)))) ;while结束(if (= what 1)(progn(makegear);调用加工齿轮的函数(showdata);调用显示齿轮参数的函数))(unload_dialog id);卸载对话框文件)。

应用AutoLISP处理AutoCAD图形数据

应用AutoLISP处理AutoCAD图形数据

关汝辑等 : 应用 A utoL ISP 处理 AutoCA D 图形数据
源程序如下:
( defun c: latex t( ) ( setq n 0) ( setq to tal 0) ( print 请选择要 合计的数字 : ) ( setq ss ( ssget ∀( ( 0 . ( r epeat( sslength ss) ( setq ent ( ssname ss n) ) ( setq ent1 ( entget ent) ) ( setq ent2 ( cdr ( nth 11 ent1) ) ) ( setq data ( atof ( cdr ( nth 11 ent1) ) ) ) ( setq total ( + total data) ) ; 累加结果放于变量 total ( setq n ( + 1 n) ) T EXT ) ) ) ) ; 从屏幕选取要合计的数 ; 累加以选取数值 ; 数值总和 , 调用函数 latext( ) ; 变量初始化
2004 年度 #理化检验 物理分册∃杂志征订启事
#理化检验 物理分册∃ 创刊 于 1963 年, 由上海 材料研 究所与中 国 机械工程学会理化检验分会联合主办, 为国内理化 测试专 业领域的 权 威刊物。本刊为中国科技核心期刊, 中国科技论文统计用期刊, 中国科 学引文数据库来源期刊, 中国期刊网收录期刊。 #理化检验 物理分册∃ 主要报道材料的金相检验、 材料物理性能 与 力学性能测试等三个专业领域的新技术、 新方法、 新经 验, 以及报道 应 用上述专业技术在新材料研制, 先进工艺的制订, 产品的失效分析和安 全评估及产品的质量控制等领域所取得的应用性成果。及时反映上述 三个专业的国内外最新研究动态和发展趋势。 本刊辟有试验与研究( 有关的机理探讨、 应用理化测试技术在新材 料的研制、 工艺规范制定、 材料改性技术的开发等领域所取得的应用性 成果等) ; 测试技术与方法; 质量控制与失 效分析; 安全评 估; 试 验设备 与应用; 综述; 实践经验; 标准化; 专题讲座; 技术咨询; 信息与动态和资 料索引的栏目。为不同层次的读者提 供了学术交 流、 经验交流 和优势 互补的平台。 本刊为国内外公开发行, 月刊( 每月 8 日 出版) , 大 16 开本, 56 页, 彩色 胶印。邮发 代号: 4 183, 6. 00 元/ 册, 全年 72 元。欢 迎广大 读者 到当地邮政局( 所) 订阅 2004 年#理化检验 物理分册∃ 杂志, 切勿贻 误。 漏订者 请 与 本 刊 编 辑 部 联系。 地 址: 上 海 市 邯 郸 路 99 号, 邮 编: 200437, 电 话: 021 65556775* 361, 传 真: 021 65544911。 E mail: ptca pt@ m at test. com , 网址: w w w . mat test. com。

AutoLISP基础入门案例-很受用

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 支持软件。

AutoCAD绘图中实用的AutoLisp程序共4页文档

AutoCAD绘图中实用的AutoLisp程序共4页文档

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.经流程图的规划后,我们有了明确的思路,并过程并复杂。

所需要注意的是同一图层中的实体集合,在复制移动后,还需要将它们从集合中逐一删除。

Auto LISP程序在Auto CAD中的应用实例

Auto LISP程序在Auto CAD中的应用实例

Auto LISP程序在Auto CAD中的应用实例
康保成
【期刊名称】《山西建筑》
【年(卷),期】2002(028)003
【摘要】在Auto CAD绘图环境下,对工程图中圆柱螺旋压缩弹簧的作图方法进行了分析,指出绘制弹簧的关键是绘制拉伸路径,为了方便、快捷、准确地绘制出弹簧的图形,根据Auto LISP语言特点编制了一个Auto LISP程序,解决了拉伸路径的绘制,为Auto CAD更好地应用于工程实践中提供了方便.
【总页数】2页(P157-158)
【作者】康保成
【作者单位】太原理工大学轻纺工程与美术学院,山西,晋中,030600
【正文语种】中文
【中图分类】TP361
【相关文献】
1.冷冲模CAD中计算压力中心的Auto LISP程序设计 [J], 王德庆;汪碧军
2.Auto Lisp函数在Auto CAD中的应用 [J], 袁晶;董守民
3.利用Auto LISP程序转换Auto CAD实体 [J], 马彦东
4.用Auto CAD Auto LISP程序自动绘制纵断面图 [J], 吴小屏
5.Auto LISP程序二则——二次开发AutoCAD初试 [J], 柯国荣
因版权原因,仅展示原文概要,查看原文内容请购买。

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

文章编号:100926825(2002)0320157202Auto LISP 程序在Auto CAD 中的应用实例收稿日期:2002201209作者简介:康保成(19552),男,1987年毕业于广东教育学院工程图学专业,高级讲师,太原理工大学轻纺工程与美术学院,山西晋中 030600康保成摘 要:在Auto C AD 绘图环境下,对工程图中圆柱螺旋压缩弹簧的作图方法进行了分析,指出绘制弹簧的关键是绘制拉伸路径,为了方便、快捷、准确地绘制出弹簧的图形,根据Auto LISP 语言特点编制了一个Auto LISP 程序,解决了拉伸路径的绘制,为Auto C AD 更好地应用于工程实践中提供了方便。

关键词:AutoLISP ,AutoC AD ,弹簧中图分类号:TP361文献标识码:A引言Auto C AD 是美国Auto desk 公司推出的既能在微机、又能在工作站上运行的C AD 软件。

近20年来,版本不断更新,功能日益增强,Auto C AD 从最初的Auto C AD V1.0版本发展到现今流行的Au 2to C AD2000,成为集平面作图、三维实体、数据库管理、渲染着色、国际互联网等功能于一体的强大辅助设计软件。

它的应用与普及覆盖了机械、汽车、造船、家电、工程、建筑、轻工、电气、电力、纺织等许多行业。

从最初的甩图板工程到应用C AD 进行三维设计,人们的设计思维也在发生着变化。

现就LISP 程序在Auto C AD 中绘制一圆柱螺旋压缩弹簧的三维图形作一探讨。

1 弹簧的绘制弹簧属于常用件,它主要用于减振、夹紧、储存能量和测力等方面。

弹簧的特点是:去除外力后,弹簧能立即恢复原状。

下面介绍圆柱螺旋压缩弹簧的画法。

111 圆柱螺旋压缩弹簧各部分名称及尺寸关系1)簧丝直径d :弹簧钢丝直径。

2)弹簧外径D :弹簧的最大直径。

3)弹簧内径D 1:弹簧的最小直径,D 1=D -2d 。

4)弹簧中径D 2:弹簧的内径和外径的平均值,D 2=D +D 12。

5)节距t :除支承圈外,相邻两圈的轴向距离。

6)有效圈数n :保持相等节距的圈数,称为有效圈数。

7)支承圈数n 2:并紧、磨平的各圈仅起支承作用,称为支承圈,一般n 2=2.5。

8)总圈数n 1:有效圈数与支承圈数之和,称为总圈数,n 1=n+n 2。

9)自由高度H 0:弹簧在不受外力作用时的高度,H 0=n ×t +(n 2-0.5)×d 。

1.2 LISP 程序的编制绘制弹簧的关键是绘制拉伸路径———螺旋线。

在Auto C AD 中,绘制三维线的命令有Line 、3Dpoly 、S pline 等命令,而作为三维拉伸路径的线只有3Dpoly 命令可以胜任,而且不能使用其中的拟合项。

所以,为了保证绘图精度,必须输入大量精确数据,才能一点一点地画出所需的螺旋线,显然这样做非常麻烦。

为了解决这个问题,编制一个Lisp 程序,用于绘制弹簧。

(defun c :luowen (/))(setq b1(getpoint ″基点″))(setq r (getreal ″半径R =:″))(setq t1(getreal ″节距″))(setq n (getint ″段数″)(setq delta (/6.28318n ))(setq j (/t1n ))(setq bb (caddr b1))(setq ang 0)(setq jj 0)(command ″UCS ″″O ″b1)(command ″3dpoly ″(list r 00))(repeat n (setq jj (+jj 1) (setq ang (+delta ang )) (setq pt2(list (3r (cos ang ))(3r (sin ang ))(+0(3j jj ))))(command pt2))(command ″″))The laser vertical positioning technique of high 2rise buildingWANG Zhi 2sheng ,H AO Zhi 2feng (Luliang College ,Lishi 033000,China )Abstract :The verticality control of high 2rise building directly in fluence the quality and progress of engineering.In this paper the thing that how to use laser theodolite to control the verticality of high 2rise building is illustrated.The setting up of the drawn point on first floor preenbedded steel board and the placement of the receive target on the measures floor are introduced.s o the vertical controlling method is com pleted.At last the advantages and mat 2ters needing attention of using laser theodolite to conduct axial measurement are summarized.K ey w ords :high 2rise building ,verticality ,laser theodolite ,axes・751・ 第28卷第3期2002年3月 山西建筑SHANXI ARCHITECT UREV ol.28N o.3M ar. 2002将以上程序存盘为“luowen ”1.3 螺旋线的绘制1)设置绘图环境。

2)加载绘制螺旋线的lisp 程序。

3)绘制有效范围内的螺旋线。

C ommand :luowen基点 0,0,0半径 R =:20节距 10段数 36上述操作后,自动生成螺旋线。

4)改变观察方向,使所画螺旋线变为西南等轴测图,见图1。

5)储存当前UCS 为U1。

6)绘制下支承处螺旋线。

C ommand :luowen 基点 0,0,-5半径 R =:20节距 5段数 36上述操作后,自动生成螺旋线,见图2。

1.4 弹簧截面的绘制1)改变UCS 。

2)绘制支承段截面。

3)以(20,0)为圆心坐标,2.5为半径画圆。

1.5 拉伸,排列生成弹簧当截面和拉伸路径绘制好后,就可以用拉伸法生成弹簧。

1)拉伸支承段。

2)排列支承段。

3)拉伸有效范围内的弹簧。

4)排列有效段。

1.6 绘制上支承圈1)绘制上支承圈,恢复UCS 到U1。

2)绘制上支承段螺旋线。

C ommand :luowen基点 0,0,80半径 R =:20节距 5段数 363)绘制截面。

4)拉伸。

5)排列。

6)裁剪上支承段多余部分。

7)裁剪下支承段多余部分。

1.7 产生上、下支承面为保证受力均匀,上下支承面靠紧并磨平。

1)产生上支承面。

2)产生下支承面。

3)消隐,并完成弹簧。

2 结语上述弹簧绘制只是利用Auto LISP 程序的一个实例。

Auto LISP 是一种内嵌于Auto C AD 中的表处理程序设计语言,具有很强的表处理功能,可以直接被Auto C AD 所接受。

因此,人们经常利用Auto LISP 语言对Auto C AD 进行二次开发或进行参数绘图。

扩充了Auto C AD 命令的使用范围,使Auto C AD 更好地为用户服务。

参考文献:[1]何铭新,钱可强1机械制图[M]1高等教育出版社,20011[2]郝玲,张红梅,林建平1计算机辅助制图与设计[M]1北京:清华大学出版社,20001[3]蔡汉明,陈建国1Auto C AD 三维造型实例详解[M]1人民邮电出版社,19991[4]康博创作室1Auto C AD2000使用大全[M]1清华大学出版社,20001The application example of AutoLISP program in AutoCADK ANG B ao 2cheng(Light Textile Engineering and Art Academy o f Taiyuan Univer sity o f Technology ,Jinzhong 030600,China )Abstract :Under the drawing condition of AutoC AD ,the drawing methods of the cylindrical helical com pression spring are studied in this paper.And the paper points out that drawing spring ’s key point is drawing extension path.In order to draw the spring conveniently ,fast and accurately one AutoLISP program is com piled according to language characteristics of AutoLISP to s olve the drawing of extension path and bring convenience for application of Au 2toLISP in engineering practice.K ey w ords :AutoLISP ,AutoC AD ,spring・851・第28卷第3期2002年3月山西建筑 。

相关文档
最新文档