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

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:将梁高度标注降低30mm

vv.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已绘制的板内任意一点,自动对围成板的线条进行分析,排除不需要图层,自动测量出板两条线的净宽度值,然后标记在图上。

以下是程序内容:

(defun i1 (a b / a c eea d b1 b2 p1 p2 sset1 len2 hnd2 ent222 pa pb e eea);定义函数和自变量值(setq c 5000);设定距离为5000

(setq eea nil)

(setq d (polar a b c));设定d点,以a点为起点,角度为b,距a点距离为c

(setq b1 (- b (/ pi 2)));设置角度b1为b角度减90度

(setq b2 (+ b (/ pi 2)));设置角度b2

(setq p1 (polar a b1 80));设置点p1

(setq p2 (polar d b2 80));设置点p2

(setq sset1 (ssget "c" p1 p2));选择以p1和p2围成的矩形中所有的图元(setq sset1 (ssget "p" '((-4 . "

(8 . "梁虚线")

(8 . "梁实线")

(-4 . "or>")

)));排除非梁虚线或者是梁实线图层的所有图元

(if (= sset1 nil) (progn

(setvar "osmode" os)

)

);如果没有选中图元,则恢复对象捕捉设置

(setq len2 (sslength sset1))

(setq i 0)

(while (< i len2);进入选中的图元循环

(setq hnd2 (ssname sset1 i))

(setq ent222 (entget hnd2))

(setq pa (cdr (assoc 10 ent222))

pb (cdr (assoc 11 ent222))

);取出一个图元,设置其起点和端点

(setq e (inters

pa

pb

a

d

) );获取直线ad和图元的交点

(if (/= e nil)

(setq ea (distance a e))

);取得a点和e点的距离

(if (= eea nil)

(setq eea ea

pointe e

) )

(if (< ea eea)

(setq eea ea

pointe e

) );进行比较循环,找出离a点最近的一条直线

(setq i (1+ i)) ));结束循环

(defun c:vv ();开始主程序

(setq os (getvar "osmode"));取得对象捕捉设置值

(setvar "osmode" 512);另外设定对象捕捉

(setvar "cecolor" "6");另外设定当前颜色

(setq a (getpoint));取a点为图中点取

(setvar "osmode" 0);设置无对象捕捉

(setq b 0);设置函数需要的角度值

(i1 a b);以a和b为自变量代入函数计算

(setq b (* pi 0.5)

p1 pointe

);赋予计算出来的pointe值给p1

(i1 a b)

(setq b (* pi 1)

p2 pointe )

(i1 a b)

(setq b (* pi 1.5)

p3 pointe )

(i1 a b)

(setq p4 pointe)

;相应四个角度计算出来的四个点的值赋予p1,p2,p3,p4点(setq disab (distance p1 p3))

(setq disac (distance p2 p4))

;得到交点的距离,也就是板内净宽度

(setq disab (rtos disab 2 0))

(setq disac (rtos disac 2 0))

;对取得的宽度值设置格式

(setq l nil)

(setq l1 nil)

(command "text" "j" "bl" a "220" "0" disab)

(setq l (entlast))

(command "text" "j" "br" a "220" "90" disac)

(setq l1 (entlast))

;采用文字命令在图形上绘制出距离值

(setq en_data (entget l1))

(setq oldr (assoc 8 en_data))

(setq newr (cons 8 "板净宽"))

(setq en_data (subst newr oldr en_data))

(entmod en_data)

(setq en_data (entget l))

(setq oldr (assoc 8 en_data))

(setq newr (cons 8 "板净宽"))

(setq en_data (subst newr oldr en_data))

(entmod en_data)

;将刚才绘出的文字指定图层“板净宽”

(setvar "cecolor" "bylayer");返回颜色值

(setvar "osmode" os);返回对象捕捉值

);程序完成

实践证明,应用此程序可以简化设计步骤、节省设计时间。

The application example of AutoLISP program in architectrual drawing

Abstract: under the drawing condition of AutoCAD, the author compiled a series of AutoLISP program according to anguage caracteristics of AutoLISP. improve the efficiency and accuracy of architectrual design.

Key words:Computer, computer drawing, program, AutoLISP, architectural drawing, structural design.

参考文献:

【1】康博创作室,AutoCAD2000使用大全【M】,清华大学出版社,2000.

用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

AutoCAD二次开发所用的autolisp函数

AutoCAD二次开发所用的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的补码)

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程序在AutoCAD中的应用实例

文章编号:100926825(2002)0320157202 Auto 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 1 2 。 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 building WANG 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 URE V ol.28N o.3M ar. 2002

AutoCAD之AutoLisp入门教程

AutoLisp入门教程 本节通过一个简单的实例来讲述LISP程序的创建过程,介绍编制LISP程序的一些基本步骤,以及LISP程序在AutoCAD中的加载和运行的方法。首先来创建一个最简单的LISP程序—-“Hello.lsp”,在AutoCAD 2002中加载并运行该程序,将会在命令行出现-“Hello, Visual LISP!”。 36.2.1 Visual LISP与AutoCAD的通信 用户可以直接在AutoCAD命令行中键入AutoLISP表达式。AutoCAD通过括号来确认AutoLISP表达式。AutoCAD每当发现一个左括号,就确认为AutoLISP表达式,并由AutoLISP求表达式的值后返回AutoCAD,AutoCAD使用返回结果并继续进行其他工作。 注意在AutoLISP表达式中,左、右括号必须配对,否则AutoCAD将给出提示符n>,n表示右括号丢失数目。 此外,在AutoCAD中调用并执行AutoLISP程序。在AutoLISP程序中采用COMMAND函数来与AutoCAD 命令程序处理器通信,COMMAND从AutoLISP获得命令并将其传给AutoCAD。 36.2.2 实例1 最简单的LISP程序——“Hello.lsp” Step 1 创建新文件 (1) 运行AutoCAD 2002系统,以“acadiso.dwt”为样板创建图形文件,并调用“vlisp”命令进入Visual LISP环境。 (2) 单击“Standard(标准)”工具栏中的按钮,新建一个LISP文件。 Step 2 输入代码并保存文件 (1) 在编辑窗口中输入源文件“Hello.lsp”的代码,如图36-3所示。程序清单如下: ;;;* 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进行通信 [img]https://www.360docs.net/doc/da12210057.html,/Files/AutoCad/146-1.JPG[/img]

AutoLISP从入门到精通初级教程(新手必备)

AutoLISP入门 单元一:AutoLISP主角登场 (2) 单元二:AutoLISP的关键、基本结构及语法 (4) 单元三:快速分类浏览AutoLISP功能函数(一) (10) 单元四:快速分类浏览AutoLISP功能函数(二) (13) 单元五:轻松快速的掌握AutoLISP设计技巧 (16) 单元六:图元数据的取得与活用技巧(一) (21) 单元七:图元数据的取得与活用技巧(二) (25) 单元八:新手上路-参数设计的关键技巧 (31)

单元一: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 支持软件。

autolisp入门教程

一、学好AutoLISP的关键、基本结构与语法: 1. AutoLISP程式语言的特质 A.语法简单 B.功能函数强大 C.撰写的环境不挑剃 D.直译式程式,『即写即测、即测即用』 E.横跨AutoCAD各作业平台,悠然自得(注:以上五点,读者可以参考上一章的剖析!!!) 2.学好AutoLISP的关键:充份掌握『语法结构』&『功能函数』的搭配!!! 3.重要的AutoLISP的基本语法结构 规则1:以括弧组成运算式,、相对称左右括弧数一定要成双成对 规则2:运算式型态:(运算元运算子运算子运算子) 1.1运算元包括『功能函数』&『自定函式』 1.2运算子(引数)包括: A.整数(Integer)如8,-17,500,9999 ..... B.实数(Real)如8.5,-17.456 ..... C.字串(String)如"AutoCAD","123" D.串列(List)如("a" "b" "c"),(xy)

E.图元名称代码如 F.档案代码如..... G.选择群集代码如 规则3:运算式中的『运算子』,可以是另一『运算式』或『副程式』规则4:多重的括弧运算式,运算的先后顺序是『由内而外、由左而右』规则5:以档案型态存在的AutoLISP程式(ASCII档案),其副档名必须是.lsp 规则6:撰写的环境,只要是一般的文书编辑软体、记事本,可编辑ASCII 档案者都适用 规则7:以defun功能函数定义新的指令或新的功能函式 规则8:新定义的功能函式名称,若为『C:函式名』,则此函式可为AutoCAD新指令 规则9:载入AutoLISP程式的作法:=>指令:后直接键入(load "LISP 主档名") 规则10:AutoLISP程式中,在『分号;』后的内容均为注解,程式不处理,适时的增加注解,将使程式更具可看性、学习性及完整性 规则11:AutoLISP最常用的变数型态是『整数』、『实数』、『字串』、『点串列』四种,变数的型态依据设定值而自动定义,变数会一直储存该值,直到被重新设定值或绘图结束自动消失

autolisp函数大全59012

函数大全 一、数学运算功能函数 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 函数整数整数…)返回:位式布尔运算

2018年lisp技巧与范例-实用word文档 (26页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除! == 本文为word格式,下载后可方便编辑和修改! == lisp技巧与范例 篇一: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. 对设计人员而言: 3.对程序本身而言: A. 少少的几行,却可能有『大大满意』的时候!!! B. 充份掌握了控制、创造 AutoCAD 的『尚方宝剑』,让您在 AutoCAD 的设计运作中『得心应手』,享受无比

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

AutoLISP程序在建筑设计中的应用实例 孙煜 广东机电职业技术学院广州510515 摘要:笔者在AutoCAD平台上,用LISP语言编写了一系列程序,提高了出图效率和设计的准确性。 关键词:计算机,计算机绘图,程序,lisp,建筑制图,结构设计 1.程序设计目的 目前,各建筑设计院一般都配备了建筑设计方面的专业软件,如“天正”,“探索者”等,在一定程度上提高了设计人员的效率,但各软件在使用上都有不便之处。如各设计院的标准不同、设计人员的习惯不同,同时还存在地区差异等,因此设计人员在设计图时只能采用CAD“硬”画,效率低,质量也很难保证。 针对上述问题,笔者用AutoLISP编制了一系列辅助的小程序,这些程序的编制思路是按照传统的绘制方式,灵活运用于各个设计程序段,作为专业软件的有益补充。 2.主要程序介绍 本程序组中主要包括的程序有: dc.lsp;200,250,300宽梁平面绘制 a.lsp:从pkpm转化为初步设计文字 s.lsp:将梁高度标注降低30mm vv.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已绘制的板内任意一点,自动对围成板的线条进行分析,排除不需要图层,自动测量出板两条线的净宽度值,然后标记在图上。 以下是程序内容: (defun i1 (a b / a c eea d b1 b2 p1 p2 sset1 len2 hnd2 ent222 pa pb e eea);定义函数和自变量值(setq c 5000);设定距离为5000 (setq eea nil) (setq d (polar a b c));设定d点,以a点为起点,角度为b,距a点距离为c

用Autolisp对AutoCAD进行二次开发

用AutoLISP对AutoCAD进行二次开发 一、什么是CAD的二次开发?(为什么需要对CAD进行二次开发) 我们在设计、绘图时采用AutoCAD、ProE、Solidwork、UG等设计软件,在复杂问题或特殊用途的设计中,各种软件的原有功能往往难以解决问题,例如CAD里没有直接绘制正弦曲线和抛物线等曲线的命令。因此,只是会使用各软件的基本功能是不够的,根据我们的特殊用途进行软件的用户化定制和二次开发,往往能够大大提高工作效率和技术水平。 二、什么是AutoLisp?如何用其进行二次开发? AutoLISP是由Autodesk公司开发的一种LISP程序语言,LISP是List Processor的缩写。通过autolisp 编程,可以节省工程师很多时间。AutoLISP语言作为嵌入在AutoCAD内部的具有智能特点的编程语言,是开发应用AutoCAD不可缺少的工具。 当前AutoCAD的二次开发工具主要有:VisualLisp(它是AutoLisp的集成开发环境)、VBA、ObjectARX和.NET API等,这里只介绍AutoLisp。 下面由浅入深地介绍一下如何应用AutolLisp进行二次开发。 最简单的应用是在命令行中编写和执行lisp语句,进行简单的计算、绘图、查询等操作。 稍复杂些的就要把语句(代码)放到扩展名为lsp的文件中,用的时候先加载到CAD中,然后输入自定义的函数名执行。 当开发的程序越来越多,就需要进行有效的管理,使我们能方便的找到和应用这些程序。到那个程度的时候就需要用到用户自定义的工具按钮、菜单和对话框了。 图1 根据程序数量选择二次开发形式 (1)在命令行中编写和执行程序 例1:(+ 2 3) 例2:(setq a 2) (setq b 3) (+ a b) 例3:(setq a 2)(setq b 3)(+ a b) 例4:(setq p1 (list 0 0))(setq p2 (list 200 200))(command “line” p1 p2 “”) ;;语句之间不空格 例5:(setq p1 (list 0 0)) (setq p2 (list 200 200)) (command “line” p1 p2 “”) ;;语句之间空格 ;; 表示语句(程序代码)的注释

autolisp函数大全实例

目录 函数大全 (1) 一、数学运算功能函数 (1) 二、检验与逻辑运算功能函数 (2) 三、转换运算功能函数 (2) 四、列表处理功能函数 (3) 五、字符串、字符、文件处理函数 (4) 六、等待输入功能函数 (4) 七、几何运算功能函数 (5) 八、对象处理功能函数 (5) 九、选择集、符号表处理函数 (6) 十、AutoCAD相关查询、控制功能函数 (6) 十一、判断式、循环相关功能函数 (6) 十二、函数处理、定义、追踪与错误处理功能函数 (7) 十三、显示、打印控制功能函数 (7) 十四、符号、元素、表达式处理功能函数 (8) 十五、ADS、ARX、AutoLISP加载与卸载函数 (9) 十六、内存空间管理函数 (9) 十七、其它重要的功能函数 (9) 十八、ADS、ARX外部定义的3D函数 (9) 十九、ADS、ARX外部定义的数据库相关函数 (10) 函数大全 一、数学运算功能函数 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 函数整数整数…)返回:位式布尔运算 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 字符串)返回:字符串转成整数值

相关主题
相关文档
最新文档