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

合集下载

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然后根据提示选择要延伸的直线(选择点要靠近直线需要延伸的端点),并输入延伸的长度。

应用Autolisp语言实现圆锥齿轮参数化自动绘图

应用Autolisp语言实现圆锥齿轮参数化自动绘图
} :boxed-column{label = ”确定图纸幅面”; / / 对话 框标签 initial-focus = ”a3”;/ / 初始的焦点 :toggle{label = ”垂直放置”;key = ”ver”;}/ / 切换开 关 :boxed- radio- row{label = ”幅面规格”; / / 加框互锁 行标签 :radio- button{label = ”A0”;key = ”a0”;mnemonic = ” 0”;}/ / 按钮 A0 :radio- button{label = ”A1”;key = ”a1”;mnemonic = ” 1”;}/ / 按钮 A1 :radio- button{label = ”A2”;key = ”a2”;mnemonic = ” 2”;}/ / 按钮 A2 :radio- button{label = ”A3”;key = ”a3”;mnemonic = ” 3”;}/ / 按钮 A3 :radio- button{label = ”A4”;key = ”a4”;mnemonic = ” 4”;}/ / 按钮 A4 :radio- button{label = ”A5”;key = ”a5”;mnemonic = ” 5”;}/ / 按钮 A5
引言
Autolisp 是一种面向对象的人工智能语言 ,是 Au2 toCAD 内嵌的编程工具 ,应用 Autolisp 语言并结合 Au2 toCAD 的绘图命令及相关内部函数就可以用来编写用 户自己的应用程序[1] 。在工程设计中齿轮的设计与制 图是一项繁琐且重复性大的工作 ,传统的人工设计费 时费力 ,而且容易出错 ,花在创 造性设计的时间大大减少 ,导 致产品开发周期长 ,产品质量 差 ,市场竞争力弱 。如何在机 械设计中快捷地使用齿轮 ,最 有效的途径就是利用 Autolisp 语言 进 行 AutoCAD 的 二 次 开 发 ,实现参数化绘图程序设计 , 可使工程设计人员减少不必要 的重复劳动 ,把更多的时间投 图 1 参数化绘图程序设

基于Auto LISP的参数化绘图技术与实例分析

基于Auto LISP的参数化绘图技术与实例分析

基于Auto LISP的参数化绘图技术与实例分析摘要:AutoCAD 是一款通用的绘图软件,Auto LISP是嵌入AutoCAD的二次开发工具,参数化绘图是其典型的应用。

文章探讨了参数化绘图设计原理及步骤,并以轴承参数化绘图为例,介绍了Auto LISP的参数化绘图技术。

关键词:参数化;AutoCAD;Auto LISPAutoCAD是由Autodesk公司发行的一款应用于多领域的设计辅助和图形处理软件。

在机械行业得到了广泛应用。

AutoCAD虽然功能强大,但在专业应用上还是有不足之处,如何让通用的CAD系统更适合行业需要,必须对其要进行二次开发。

AutoCAD在30多年时间里相继推出了Auto LISP、ADS、Visual LISP、VBA、Object ARX、几种不同层次的二次开发工具。

“其中Auto LISP是唯一的一种以解释方式运行于AutoCAD内部的解释性程序设计语言,Auto LISP把数据和程序统一表达为表结构,所以它既可以把程序当作数据来处理,还可以把数据当作程序来执行”。

其语言规则简单,直接针对AutoCAD,易学易用,AutoCAD的绝大多数命令可直接调用,参数化绘图是其典型的应用之一。

1 参数化绘图设计原理及步骤所谓参数化就是将图形的有关几何关系、约束关系有机地结合起来,从而构成一个完整的参数化模型。

当设计人员改变图形的某一参数时,模型能根据尺寸及几何约束等自动计算出满足约束关系的工程图形。

参数化编程方法的实质,就是将图形信息记录在程序中。

它用一组变量记录图形的几何参数,用一些约束条件或者赋值语句来表达几何参数与结构参数之间的关系,再用一些绘图语句来表述图形的拓扑关系。

参数化方法快捷、高效,参数化绘图程序编写步骤是:①先进行图形结构特征分析,一般绘制一个零件的图样,需要很多尺寸,这就需要我们分析这个零件,确定图形中的关健几何尺寸及图形对象之间的依赖关系。

②从设计角度具体分析,确立不仅能体现零件的结构特征,又可以推导出其它尺寸的基本尺寸作为图形参数,并明确尺寸与图形参数之间的关系。

使用CAD进行程序化绘图的方法与示例

使用CAD进行程序化绘图的方法与示例

使用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`,然后按照提示,输入圆心和半径,即可绘制一个圆形。

最新AutoLISP绘图程序设计

最新AutoLISP绘图程序设计

7
二、几个基本概念
1.常数 PI——数学中的π(3.1415929…) T——逻辑真,即成立。
NIL——逻辑假,即不成立。还代表空,即无值。 注意:(1)大小写等效;(2)它们不能作为变量。 2.原子 是程序处理中最小的数据单元。 3.表达式 原子和表的统称。 如:(setq P '(12.36 -26.58))
❖以表形式描述数据处理过程,程序执行过 程就是函数求值过程;
❖每段程序都是一个函数; ❖具有交互处理功能,边解释边执行; ❖采用模块化设计方法。
2020/12/14
3
2.AutoLISP的数据类型
(1)整型数(INT):是由0、1、2…9、+、-组成的。
(2)实型数(REAL):如0.4(0不能少)、-1.23、 0.526E9(0.526×109)。
(5)表(LIST):带有一对括号、有若干元素 组成。(元素1 元素2 … 元素n)
如:(2 4 f)
◇元素的个数叫表的长度。
◇元素也可以是表,如(45 (3 6) 7),这 叫嵌套。
◇元素之间必须用“空格” 隔开。
◇表的定义方式:(LIST 5 6);’(5 6); 还可以用defun定义(后面讲)。
(3)符号(SYM):除(、)、*、‘、”、;之外的字 符序列,并且不能全部是数字。
符号常用着变量,如:
Command:(setq X 12)
;整型数
Command:(setq X 12.0) ;实型数
Command:(setq X “12”) ;字符串
2020/12/14
4
(4)字符串(STR):如:“ABC”、“abc”、 “457”等。
(setq as (+ as 1) n (+ n 20))

五个实用的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在测绘图形处理中的应用

AutoLISP在测绘图形处理中的应用

文章编号:100926825(2007)1220362203AutoL ISP 在测绘图形处理中的应用收稿日期:2006211214作者简介:李朝阳(19742),男,工程师,郑州市水利建筑勘测设计院,河南郑州 450006苏振辉(19822),男,助理工程师,郑州市水利建筑勘测设计院,河南郑州 450006李朝阳 苏振辉摘 要:介绍了AutoL ISP 语言的特点和优点,阐述了AutoL ISP 语言在测绘图形处理中的应用,说明了该语言对于批量处理图形和数据方面的几种典型应用,并分析了相应的思路和方法,从而为测绘事业做出更多的贡献。

关键词:AutoL ISP 语言,应用,测绘图形,图纸资料中图分类号:TP391.3文献标识码:A 近年来,测绘领域内机助制图的研究取得了飞速发展,通过绘图机输出的图形从过去简单的工程制图到现在的各种比例尺的地形图、地藉图、宗地图,以及非常复杂的小比例尺土地利用现状图等。

在众多的绘图系统中,人们普遍采用的基础绘图软件是美国Autodesk 公司的AutoCAD ,因为该软件不仅具有丰富的绘图命令,还具有强大的图形编辑功能,而且软件运行相当稳定。

但是熟悉AutoCAD 的人都知道,要用好AutoCAD ,不但要熟练掌握其各项命令,而且要熟练掌握AutoCAD 提供的数据交换文件SCR ,DXF 和嵌入AutoCAD 内部的高级语言———AutoL ISP 语言,这样使您对各种图形,尤其对复杂的图形更加得心应手。

AutoL ISP 是一种人工智能语言,是嵌入AutoCAD 内部的COMMON L ISP 的一个子集。

在AutoCAD 的二次开发工具中,它是唯一的一种解释型语言,使用AutoL ISP 可直接调用几乎所有的AutoCAD 命令。

AutoL ISP 具有以下优点:1)语言规则十分简单,易学易用;2)直接针对AutoCAD ,易于交互;3)解释执行,立竿见影。

用LISP语言自定义AutoCAD命令

用LISP语言自定义AutoCAD命令
(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表示轴上键槽的深度
)
(setq l (getreal "\n请输入中心线延伸长度(mm):"))
(command "layer" "m" 5 "l" "center" 5 "c" 1 5 "")
(command "ltscale" 8);设置线型比例
(command "line" (polar pt0 (- pi) (+ r l));画中心线
(setq loop T)
(while loop
(setq pc (getpoint "\n请用鼠标选择圆:"))
(setq s(ssget pc))
(if s
(progn
(setq s1(entget(ssname s 0))
pt0(cdr(assoc 10 s1));获得圆心坐标
r (cdr(assoc 40 s1));获得圆的半径
(command "layer" "m" 5 "l" "center" 5 "c" 1 5 "")

利用AutoLISP提高机械设计CAD绘图效率

利用AutoLISP提高机械设计CAD绘图效率

利用Auto LISP提高机械设计CAD绘图效率闵旭光1,熊中侃2(1.南昌高等专科学校机电系,江西南昌 330008;2.南昌高等专科学校计算机系,江西南昌 330008)摘 要:介绍了一种利用Auto LISP语言编程,提高机械设计C AD绘图效率的方法。

关键词:Auto LISP;C AD绘图;机械设计;制图中图分类号:TP391.72 文献标识码:A 文章编号:1008-7354(2005)01-0079-02 在零部件较多(有时达到上百个零件)的机械装置(例如发电机组、级进模、自动装配机等)设计中,一般都要给零部件分层。

比如:部件1、2、3……;零件101、102、103……或201、202、203……;等等。

在装配图设计中相邻零件(图层)颜色也要设置成不同,以便于零件间的区别。

并且在设计中需要经常打开或关闭某些图层,改变线型等等。

虽然利用AutoC AD的CH(Change)等某些命令可以达到这些目的,但在执行过程中,都需要操作两步以上,较繁琐。

为此,我们利用Auto LISP,编制了一个程序,经使用验证,能较好地提高机械设计,特别是零部件较多时的C AD绘图效率,该程序如下:;TF33333turn on previous turn off(defun c:TF()(command″layer″″f″″3″″″));AN33333thaw a layer(defun c:AN(/x)(setvar″cmdecho″0)(setq x(getstring″\n input thaw layer name:″))(command″layer″″thaw″x″″)(setvar″cmdecho″1));AF33333freeze a layer(defun c:AF(/x)(setq x(entsel″\n select freeze layer:″))(com mand″layer″″freeze″(cdr(ass oc8(entget(car x))))″″));T N33333all of layer turn on(defun c:T N()(command″layer″″t″″3″″on″″3″″u″″3″″″)(command″layer″″off″″opaper f″″″)(princ));C N33333change selected layer to a new layer(defun c:C N()(graphscr)(setvar″cmdecho″0)(prom pt″\nEntities to be changed:″)(setq e1(ssget))(setq mylayer(getstring″input new layer name:″))(setq oldla(getvar″clayer″))(command″layer″″make″mylayer″″)(setq e2(cons8mylayer))(setq i0)(repeat(sslength e1)(setq e4(entget(ssname e1i)))(setq e5(ass oc8e4))(setq e4(subst e2e5e4))(entm od e4)(setq i(l+i)))(princ″\nAll selected entities change to layer″)(princ(cdr e2))(princ));C A33333change current layer to match an enti2 ty’s layer3333(defun c:C A(/x)(setq x(entsel″\n select object which layer is to be matched:″))(command″layer″″s″(cdr(ass oc8(entget(car x))))″″)(command″layer″″u″(cdr(ass oc8(entget(car x))))″″));CC33333change layer’s color3333(defun c:CC(/x)(setvar″cmdecho″0)(setq x(entsel″\n select a layer to be changing col2 or:″))(command″layer″″c″(acad-colordlg7)(cdr(ass oc8 (entget(car x))))″″)(setvar″cmdecho″1));LC33333change properties to be center line33 33南昌高专学报 2005年第1期(总第56期) 2005年2月出版Journal o f Nanchang Junior College No.1(Sum56)Feb.200579 收稿日期:2004-08-28(defun c:LC()(ssget)(command″chprop″″p″″″″c″6″lt″″center″″″)(princ));LP33333change properties to be divide line33 33(defun c:LP()(ssget)(command″chprop″″p″″″″c″2″lt″″phantom″″″));LD33333change properties to be dashed line33 33(defun c:LD()(ssget)(command″chprop″″p″″″″c″4″lt″″dashed″″″));LG33333change properties to be color=3(defun c:LG()(ssget)(command″chprop″″p″″″″c″3″″));LR33333change properties to be color=1(defun c:LR()(ssget)(command″chprop″″p″″″″c″1″″));LY33333change properties to be color=2(defun c:LY()(ssget)(command″chprop″″p″″″″c″2″″));LB33333change properties to be color=5(defun c:LB()(ssget)(command″chprop″″p″″″″c″5″″));LC O33333change properties to be bylayer&line2 type=continue3333(defun c:LC O()(ssget)(command″chprop″″p″″″″c″″bylayer″″lt″″bylayer″″″))以上程序先写在记事本文档中,取个名如:min.lsp,再存到AutoC AD2002或AutoC AD2004的目录S UPPORT 下,并打开acadr2002.lsp或acad2004.lsp,在该程序最后增加:(load″min.lsp″)(princ)存盘后,退出,重新启动计算机即可使用该Auto LISP 程序了。

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

实现CAD绘图与LISP编程的自动化技巧

实现CAD绘图与LISP编程的自动化技巧

实现CAD绘图与LISP编程的自动化技巧CAD(计算机辅助设计)是一种广泛应用于工程和建筑行业的软件工具,而LISP(LISt Processing)则是一种编程语言,经常用于CAD 软件中进行自动化任务和定制。

在CAD绘图中,使用LISP编程可以极大提高工作效率,加快绘图速度并减少出错概率。

下面,我们将介绍一些实现CAD绘图与LISP编程的自动化技巧。

1. 使用LISP编写简单命令LISP语言在CAD软件中被广泛应用,因其简洁、灵活和强大的功能而备受赞誉。

可以利用LISP编写一些简单的命令,以自动完成一些常见的绘图任务。

例如,我们可以编写一段LISP代码,用于创建一个特定大小和形状的矩形或圆形,并将其放置在指定位置。

2. 利用LISP实现参数化绘图参数化绘图是CAD绘图中常见的需求,它可以根据一组参数值自动生成特定形状和尺寸的图形。

利用LISP编程可以方便地实现参数化绘图。

通过定义参数,并使用LISP代码控制参数值,可以在绘图过程中灵活地调整形状和尺寸,提高工作效率。

3. 利用LISP编写循环和逻辑语句LISP编程强大之处在于其循环和逻辑语句的灵活性。

通过编写循环和逻辑语句,可以实现复杂的绘图任务,如图形的重复、数组的生成等。

例如,我们可以使用循环语句自动生成一系列具有相同属性但位置不同的图形。

4. 利用LISP批处理CAD命令CAD软件中的批处理命令可以用于自动执行一系列CAD操作,如创建图层、更改对象属性等。

利用LISP编程可以轻松地实现批处理CAD命令。

通过编写LISP代码,将多个CAD命令组合在一起,可以以一次性的方式自动执行这些命令,从而减少人为干预。

5. 利用LISP创建自定义CAD函数和命令除了使用CAD软件中已有的命令,我们还可以通过LISP编程自定义CAD函数和命令,以满足特定的需求。

通过编写LISP代码,可以根据自己的需要定义函数和命令,从而实现更高级和复杂的CAD绘图操作。

基于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提高房产测量工作效率

巧用AutoLisp提高房产测量工作效率

巧用AutoLisp提高房产测量工作效率姚益飞1前言房产测量主要是采集和表述房屋和房屋用地的有关信息,为房产产权、产籍管理、房地产开发利用、交易、征收税费,以及城镇规划建设提供数据的资料。

它是关系到民生的重要工作,这就要求在日常工作中做到细致认真,保证数据质量可靠。

而面对繁琐复杂的工作,充分利用电脑提高我们的工作效率就是首选。

本文主要讨论lisp语言编程提高房产测量工作效率。

2AutoLisp语言简介AutoLisp语言完全嵌套在AutoCAD内部,同AutoCAD有机地结合成一体,它既具备一般高级语言的基本结构和功能,又具备一般高级语言所没有的图形处理能力。

可直接调用几乎全部AutoCAD的命令,从而进行AutoCAD的二次开发。

利用AutoLisp开发AutoCAD 的一个典型例子就是实现参数化绘图的程序设计。

3AutoLisp常用函数介绍3.l getangle ,请求输入十进制角度数值。

3.2 getdist ,请求输入一段距离。

3.3 getkword ,请求输入“关键词”。

3.4 getPoint ,请求输入一个点的坐标。

3.5 getstring ,请求输入一个字符串。

3.6 rtos ,实数转成字符串。

3.7 strcat ,将各字符串合并为一个字符串。

3.8 entlast,取出图形信息中的最后一个对象。

3.9 command ,调用执行 AutoCAD命令。

3.10 If ,检算比较式结果。

3.11 While ,当条件成立则执行表达式内容。

3.12 setq,设定表达式结果给各符号。

3.13 Prinl,将表达式打印于命令区或已打开的文件句柄字符则以“\”为前缀展开。

4房产测量相关工作简介房产测量中我们需要绘制图形,查询和标注面积,标注房号等。

5程序示例点击工具/AutoLISP/Visual Lisp编辑器,进入lisp语言编辑界面,新建一个lsp文件,以下介绍几个常用的小程序。

浅谈AUTOLISP程序在桥梁设计及绘图中的应用

浅谈AUTOLISP程序在桥梁设计及绘图中的应用
(eq (era \ st l te l” n请输入跨径 ( : ) g m) ”) (f(q q ” )(eq q ” K”) i e z ” s t z Z ) (eq lg te l” n请输 入节段数 : ) st t(e ra \ ”) ( t ( ei t ” n s q n gt e n \ 请输 入标注起 随 着 计算 机 辅 助绘 图 的 不 断 发 展 ,美 始号<1 :) > ”) 国 Au o s t De k公司的 Au o t CAD 已经成为制 (eq t ( 1 1) st 2/ t ) (eq ( g ( m (q t( ( m m) st k 1 o I sr 十 ( nl(eq n 1) i n i st ) f 图人 员手 中 的 一 件 利 器 , 而 大 量 的 重 复 然 ))) ( l whi e 性 的 工 作 又 使 得制 图 人 员 为 之 头 痛 ,这 就 1)) (eq x1 ) s t 0 ( t b g ton ” n 请选取坐 s q z ( ep it \ e 需要 一种 智能 化 的软 件 , 够 通 过 编 程 的 能 (eq yl ) st 0 标点:) ”) 方式来大量成批的去解决这一问题 。 (eq x ( t ( 1 )) st 2 十 2 / 2 ) (eq x c r z ) s t (a b ) 目前可 以实现 与 AUTOCAD的应 用程 (eq 1 st n ) (eq y c d b ) st (a r z ) 序 编程接 口( I 的 方式有 AuT0LI P、 AP ) s D CL、 DI ESE L 、 V I U A L B A SIC 、 S ( i ( wh l <一 x2 ( 1 ) e / 2) (eq (t s x 3) st x ro 2 ) (eq l/ ( k 2 / 12 ) st q ( 十 x )( )) (eq y ro 2 3 ) s t (t s Y ) OB EC J TAR X等 , 中 AuTO I P语 言以 其 LS (eq h( ( (xp‘ )( 1 (x s t c / + e q1 / ep ( t 1 ) s q n n e 其 独 特 的 优 点 深 受 设 计 人 员 的喜 爱 。

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程序提高绘图效率的几个实例

用AutoLISP程序提高绘图效率的几个实例
张 雪 ห้องสมุดไป่ตู้
Zh ng ue a X e
( 西财经大学 电子学院 ,江西 南昌 3 0 1 ) 江 3 0 3
(c o lo lc r n c ,J a g i U i es t f F n n e a d E o o i s S h o f E e t o i s in x n v r i y o ia c n c n m c ,
维普资讯
E a p e f h r wi 9 E f c e c I c e s y h s f A t L S x m l s o t e D a n f i i n y n r a e b t e U e o u o I P
图 一
(e q b gt e l n输入 尺边 的厚度:”) s t (e r a ” ) 1 1简单平面 图形的绘制 . (e q a g t it p l” n s t (e d s t 输入 尺边 的长度 :”) )
(e q p 2 p lr p l0 0 a ) s t t (o a t . )
对于如图一所示的直 角图形 ( B=A ,B A F C=F ,C E D=
E) D,如果用 1n 命令绘图,至少要重复 5 e i 次,还要每 次输
入所画线段的长度,用 A tL S 编程可以一 次成型。程序编 u o IP
(e q p 3 p l r p 2 / p .)) s t t (oa t ( i 2 0 b )
(e q p 5 p l r p 4 / p .) 一 a b ) s t t (oa t ( i 2 0 ( ) )
(e q p 6 p lr p 5 p ) s t t (o a t i b ) (o m n ”l n ”p lp 2 p 3 p 4 p 5 p 6 ”” c m a dp ie t t t t t t C ) )

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

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

基于AutoLisp的CAD应用插件开发简介

基于AutoLisp的CAD应用插件开发简介

基于 AutoLisp的 CAD应用插件开发简介【摘要】:本文主要基于AutoLISP的CAD应用插件的开发实例,对通过autolisp编程,生成相应插件,提高绘图效率,做简单介绍。

【关键词】:AutoLisp;AutoCAD;插件1.AutoLisp介绍1.1在工程设计领域中, Auto CAD得到了普遍应用, 然而, 人们总会感到作图效率还不够高, 这是因为 Auto CAD是一个通用绘图软件, 不具备专业特色。

Auto CAD开放的结构为不同的使用者留出了广阔的空间,提供了许多二次开发工具,AutoLISP是其中最强的一个, 可以利用 AutoLISP开发出具有专业特点的高效率的应用软件。

[1] AntoLISP是向普通用户提供的大众化工具,并不苛求用户一定要具有程序员水平。

普通AutoCAD用户只要经过简单培训,即可使用AutoLISP。

[2]1.2 AutoLISP是由Autodesk公司开发的一种LISP程序语言,LISP是List Processor的缩写。

通过autolisp编程,可以提高绘图效率。

使用AutoLISP语言编制各种满足特定要求的应用程序软件包已经非常普遍。

1.3在AutoLISP中,提供了编程以及数学计算所需的大部分数学函数,可以对数字进行加、减、乘、除以及三角函数的运算等。

2.常用AutoLisp函数介绍3.基于AutoLisp的插件开发步骤3.1 VisualLisp编辑器打开,以AutoCad2016为示例,打开菜单栏-“管理”-单击“VisualLisp编辑器”,见图3.1图3.13.2调出VisualLisp控制台,见图3.2图3.23.3程序编写,根据需要实现的功能,遵守编程规则,编写相应程序。

编程完毕后,在CAD的命令栏中输入该程序名称,例如‘vvv’,即可根据提示完成该命令需要执行的操作。

4.开发沿曲线自动阵列插件程序实例简介4.1插件开发目的AutoCad自身只有矩形阵列、环形阵列、路径阵列,使用以上阵列功能,可以实现简单的阵列功能。

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

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

用AutoLISP程序提高绘图效率的几个实例
张雪娥
【期刊名称】《科技广场》
【年(卷),期】2007(000)012
【摘要】AutoLISP是AutoCAD内置的编程语言.具有其强大的开发功能,运用AutoLISP编写程序可以方便快捷的绘制一些简单的平面图形.还可以绘制例如三维螺旋线这样的复杂三维图形.通过几个实例程序应用,提高图形绘制中的工作效率.【总页数】3页(P254-256)
【作者】张雪娥
【作者单位】江西财经大学电子学院,江西,南昌,330013
【正文语种】中文
【中图分类】TP311.56
【相关文献】
1.利用AutoLISP提高绘图效率的方法 [J], 米双山;张锡恩
2.应用 AutoLISP进行二次开发提高绘图效率的讨论 [J], 高广洲
3.利用AutoLISP程序提高水泥厂建筑设计效率 [J], 施增新
4.AutoLisp语言程序设计中几个常见问题的探析 [J], 王立军
5.AutoLISP程序在建筑设计中的应用实例 [J], 孙煜;王浩
因版权原因,仅展示原文概要,查看原文内容请购买。

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

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
2007.12
科技广场
256。

相关文档
最新文档