Auto LISP编程实例Word文档下载推荐.docx
《Auto LISP编程实例Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Auto LISP编程实例Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
该次设计中采用的AutoCAD二次开发的语言为LISP语言。
它是AutoCAD中自带的一种高级语言。
并对用户来是掌握起来比较容易,所以在当今比较流行。
LISP(LispProcessingLanguage)是人工智能领域中广泛采用的一种程序设计语言。
主要用于人工智能、机器人、专家系统、博弈、定理证明等领域。
LISP也称为符号语言,因为它处理的对象是符号表达式。
LISP语言的程序和数据都以符号表达式的形式来表示,因此,一个LISP程序可以把另一个LISP程序作为它的数据来处理。
参数化设计是CAD中最为重要的研究领域之一。
参数化技术使得设计者可以通过修改设计参数来驱动零件产品的几何模型。
与传统的建模方式比较,参数化设计将设计者从琐碎的拼凑几何元素的操作中解放出来,大大简化了用户生成和修改零件模型的操作,提高了设计效率。
AutoCAD是一个通用CAD平台,它不仅具有强大的绘图、编辑功能,而且具有开放的体系结构,允许用户对其进行二次开发,参数化设计在其中占有很重要的比重。
这其中对基础知识和基本技能都有一定的要求才能灵活运用好编程语言。
其中包括要求在AutoCAD环境下,可以通过命令行方式、菜单方式(下拉菜单或图标菜单)、工具栏方式实现常规零件的参数化设计过程;
所设计的二维工程图,要求实现图层设置、线型线宽设置、颜色设置、尺寸标注、形位公差、粗糙度等常规二维工程图的要求;
基本命令如镜像,偏移的灵活使用,等等
1、实现的方法和主要技术路线
首先用AutoCAD绘制出阀体的二维工程视图,再参照二维工程视图,用AutoCAD的高级语言AutoLISP语言编写程序,实现对阀体的参数化设计。
编完程序,并修改正确后,用户可在VisualLISP集成开发环境中,也可以在AutoCAD环境中加载、运行AutoLISP程序。
其实现介绍如下:
1)一旦在VisualLIS的文本编辑器中编写了程序或打开已有的程序就可以加载并运行了。
运行时需在控制台窗口中,在$提示符后输入用括号括起来的函数名后按Enter键即可。
2)在VisualLISP集成开发环境中编写AutoLISP程序并加载、运行证明程序正确后,就可以脱离VisualLISP环境,在AutoCAD环境中运行了。
2、绘制二维工程图
图1二维工程图
3、程序流程图
图2程序框图
AutoCAD二次开发的应用之一——典型零件的参数化设计在产品设计中发挥了越来越大的优势,而参数化设计的重要环节是程序的编写,其在设计开发中占要想当大的比重,是参数化设计的核心,是整个设计任务的最精华的部分。
现将本次开发阀体的参数化设计的程序的详细设计作如下介绍:
1、定义函数名
例如:
(defunc:
24hg())
2、设置图层
根据所选的阀体工程图,需建立中心线、粗实线、细实线、标注线四个图层,分别定义其层名、线型、线宽、颜色,实现方法是在AutoLISP中调用AutoCAD的图层命令,命令格式举例如下:
(command"
layer"
"
n"
中心线"
c"
4"
l"
center"
lw"
0.3"
"
)
(command"
粗实线"
7"
continuous"
0.6"
细实线"
1"
)
标注线"
3"
当画不同的线型时需调用其对应的图层,其调用有多种命令,现提供两种可供参考,命令如下:
s"
3、设定参数
为得到不同的阀体结构,可设定阀体的总长L、总高H、总宽W、进油口内径d1、出油口内径d2等参数。
其命令格式可参考下例:
(setqd1(getreal"
\n输入进油口内径<
15>
:
))
而对不合理的参数可用if语句来判定并给与提示,其实现命令格式如下:
(setqd1(getreal"
))
(setqd2(getreal"
\n输入出油口内径<
(if(<
d1(distancez3z4))
(princ"
ok"
(setqd1(*(distancez3z4)(/1540)))
d2(distancez11z12))
(setqd2(*(distancez11z12)(/1530)))
4、由参数选择合适作图图框并填写标题栏
可由参数选择最合适图框,用户输入参数后由计算机再根据参数按比例处理。
图框的绘制可用绘制四边形的命令来实现,且全屏显示如:
(setqwidth(getreal"
\n输入图幅宽度(297):
(setqhighty(getreal"
\n输入图幅高度(210):
limits"
'
(00)p0"
zoom"
a"
);
全屏显示
rectang"
(00)p0)
offset"
5"
p0"
@-20,-20"
而标题栏的绘制可用直线及偏移命令来实现例如:
line"
p5p6p7"
20p9p4"
45p9p4"
15p8p3"
30p8p3"
55p8p3"
p4p3"
p9"
@-60,0"
(command"
p8"
@55,0"
标题栏填写之前须对文字样式进行定义及转化可由如下命令实现:
style"
hz"
仿宋"
70.70"
标题栏文字的填写可用如下命令:
mtext"
p1"
j"
mc"
p6"
p5"
h"
@15,-8"
比例"
1:
1"
from"
@15,0"
数量"
5、绘制俯视图
为得到合理的视图布局,可俯视图画起,取其中间圆心的点(f0)来确定,再确定工程各视图上的基点(z0),可由下述程序实现:
(setqp10'
(00))
(setqx1(/(*90width)297)
y1(/(*48highty)210)
(setqf0(polar(list00)(angle(list00)(listx1y1))(distance(list00)(listx1y1))))
再由该基点定义主、左视图上各个点,为了方便,对对称的图形可定义一半的点,再由镜像来完成另一半,例如程序:
f7f6"
f6f5"
f8f9"
f9f10"
f10f12"
f12f1"
f1f2"
f11f10"
circle"
f0(/(*5l)118))。
对于作图过程中多余的辅助边要及时剪切,例如:
剪切771边,有如下程序
arc"
f4"
e"
f1"
r"
(/w2))
f3"
f2"
(/(*23w)56))
(setqf61(polarf705))
(setqf31(polarf0(/pi4)(/w2)))
trim"
f31"
f61"
6、添加倒圆
添加过渡圆角要选择合适的线上点,不取交点和二异点。
过程可参下:
(setqc101(polarc10(*-0.5pi)5))
(setqc81(polarc8(*0.5pi)5))
(setqc91(polarc905))
fillet"
c81c91)
c91c101)
7、绘制主视图
主视图及左视图的绘制与俯视图相同,主要是选取的主视图基点要和俯视图联系,达到等比例联系变化,例如:
(setqz1(polarf0(*0.5pi)(+(*0.5w)15)))。
并再次设置参数,程序为:
(setqd2(*(distancez11z12)(/1530))))
8、绘制左视图
左视图的绘制与俯视图近似相同,主要是选取的左视图基点要和主视图联系,达到等比例联系变化,例如:
取点命令:
(setqc1(polarz10(+(/(*88l)118)(/w2))))
(setqc2(polarc1pi(/w2)))
(setqc3(polarc2(/pi2)h))
(setqc4(polarc30(/w2)))
(setqc5(polarc40(/w2)))
(setqc6(polarc5(*-0.5pi)h))
(setqc7(polarc1(/pi2)(/(*70h)105)))
(setqc8(polarc7pi(/(*20w)56)))
(setqc9(polarc8(/pi2)(/(*20h)105)))
(setqc10(polarc90(/(*40w)56)))
画线命令:
c1c2c3c5c6c1"
c8c9c10c11"
c14c15"
c16c13"
c14c13"
c8"
c11"
(/(*20w)56))
c7(/d12))
并再次使用剪切命令:
(setqc151(polarc15(*-0.5pi)2))
(setqc161(polarc16(*-0.5pi)2))
(setqc111(polarc7(*-0.25pi)(/(*20w)56)))
c111"
c151"
c161"
9、剖面填充
程序的编写参考了AutoCAD的命令,先设定若干参考点,再由参考点偏移得到填充面域的内部点进而选中所要填充的剖面,主要是选择图形一定要闭合设置,其实现由下列所示:
(setqpp1(polarz2(/pi4)5))
(setqpp2(polarz24(/pi4)2))
(setqpp3(polarz16(/pi4)5))
(setqpp4(polarz22(/pi4)2))
bhatch"
p"
u"
453"
pp1pp2pp3pp4"
10、添加螺纹
设置螺纹可以用连点法,也可以用画矩形命令。
但前者较好,因为螺纹一般要在剖面线后加(为了避免剖面线不能填充),用后者也不能用镜像命令。
例如程序:
z24z33)
(setqz34(polarz33(*-0.5pi)(+d12)))
z34z25"
z34z33"
11、尺寸标注
在标注之前需进行文字样式的转换,将仿宋改为默认的txt样式,然后再进行标注,命令参考如下:
clayer"
standard"
txt"
2.50.90"
dimlinear"
p3a6"
@0,-7"
)
p35p38"
p13a1"
m"
%%c<
>
H9"
@0,10"
p12"
a1"
@-2,0"
@0,4"
引线型的标注采用的是画直线的方法,所以其标注文字也需进行一次文字样式的转变,可由下述命令实现:
p19"
@2,0"
@-6,15"
@-5,0"
(command"
a9"
@13,20"
) ;
写引线标注文字
2.50.70"
@-4,15"
@-5,3"
G1/2"
@15,3"
2-M10深25"
@15,-3"
孔深28"
在本程序中中心线的标注采用了单独找点连线的方法,程序如下:
;
俯视图的中心线
(setqf15(polarf0(*-0.5pi)(/(*28w)56)))
(setqf8000(polarf8pi10))
(setqf5000(polarf505))
(setqf1001(polarf1(/pi2)5))
(setqf1500(polarf15(*-0.5pi)5))
f8000f5000"
f1001f1500"
主视图的中心线
(setqz2911(polarz2905))
(setqz2912(polarz29(*0.5pi)10))
(setqz2811(polarz28pi10))
(setqz1111(polarz1(*-0.5pi)5))
(setqz3111(polarz31pi8))
(setqz3011(polarz3008))
z2911z2811"
z2912z1111"
z3111z3011"
左视图的中心线
(setqc8111(polarc8pi10))
(setqc1111(polarc11015))
(setqc1000(polarc1(*-0.5pi)10))
(setqc7000(polarc7(*0.5pi)45))
c8111c1111"
c1000c7000"
12、粗糙度的标注
对此程序以块的形式生成,若粗糙度标注较多时可用插入块的命令形式方便的得到各个标注,提高程序可利用性,但对于少量的粗糙度图纸,也可以用连点法画。
前者程序参考如下:
block"
k3"
a10a11a12a13a012"
) ;
创建块
(setqa14(polarp011(*0.5pi)10))
insert"
a140.66660.666690) ;
插入块
a10110) ;
a11"
@-5,5"
12.5"
a12"
其余"
a14"
@-3.464,-2"
90 "
@-7.464,2"
0.8"
后者程序参考:
(setqz700(polarz7010))
(setqbp1(polarz70008))
(setqangpi)
bp1(polarbp1(+ang(/pi3))10)"
(setqpt1(polarbp1(+ang(/pi1.5))5))
bp1pt1"
pt1(polarpt1ang5)"
text"
pt1"
@-5,-3"
0"
13、标注形位公差
对形位公差的标注可以利用相关命令也可以使用定点连线的方法。
本程序设计使用的是后者。
其中包含着引线的使用。
可以