AUTOCAD关于Lisp语言的二次开发的实验报告Word文件下载.docx
《AUTOCAD关于Lisp语言的二次开发的实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《AUTOCAD关于Lisp语言的二次开发的实验报告Word文件下载.docx(17页珍藏版)》请在冰点文库上搜索。
3.CAD/CAM综合实验报告
(defundraw_ld()
(cond((and(=d3)(>
=l18)(<
=l30))(setqp0.5b18dk5.5k3t11.3s2.5e2.87r0.1))
((and(=d4)(>
=l20)(<
=l40))(setqp0.7b20dk7k4t12s3e3.44r0.2))
((and(=d5)(>
=l22)(<
=l50))(setqp0.8b22dk8.5k5t12.5s4e4.58r0.2))
((and(=d6)(>
=l24)(<
=l60))(setqp1b24dk10k6t13s5e5.72r0.25))
((and(=d8)(>
=l28)(<
=l80))(setqp1.25b28dk13k8t14s6e6.86r0.4))
((and(=d10)(>
=l32)(<
=l100))(setqp1.5b32dk16k10t15s8e9.15r0.4))
((and(=d12)(>
=l36)(<
=l120))(setqp1.75b36dk18k12t16s10e11.43r0.6))
((and(=d14)(>
=l40)(<
=l140))(setqp2b40dk21k14t17s12e13.72r0.6))
((and(=d16)(>
=l44)(<
=l160))(setqp2b44dk24k16t18s14e16.00r0.6))
((and(=d20)(>
=l52)(<
=l200))(setqp2.5b52dk30k20t110s17e19.44r0.8))
(t(alert"
不存在此类螺栓!
"
)(exit)))
(setqp0(getpoint"
\n请输入基点:
))
(setqang(getangle"
\n请输入旋转角:
(setqp1(polarp0(+ang(*0.5pi))(/dk2.0))
p2(polarp1(+angpi)k)
p3(polarp0(+angpi)k))
(setqp4(polarp3(+ang(*0.5pi))(/e2.0))
p5(polarp4angt1)
p8(polarp3angt1)
p6(polarp8(+ang(*0.5pi))(*e0.25))
p7(polarp3(+ang(*0.5pi))(*e0.25))
p9(polarp0(+ang(*0.5pi))(/d2.0)))
(setqp10(polarp9ang(-lb))
p12(polarp10(+ang(*1.5pi))(/d2.0))
p11(polarp12(+ang(*0.5pi))(*(/d2.0)0.85))
p14(polarp11angb)
p15(polarp12angb)
p16(polarp15(+angpi)(*0.15d))
p13(polarp16(+ang(*0.5pi))(*0.5d)))
(setqp17(polarp15ang(*1.5dk)))
(setqp18(polarp17(+ang(*0.5pi))(/e2.0)))
(setqp19(polarp17(+ang(*0.83pi))(/e2.0)))
(setqp20(polarp17(+ang(*1.17pi))(/e2.0)))
(setqp21(polarp17(+ang(*1.5pi))(/e2.0)))
(setqp22(polarp17(+ang(*1.83pi))(/e2.0)))
(setqp23(polarp17(+ang(*0.17pi))(/e2.0)))
(setqr(*0.5dk))
(setqpc1(polarp15angk)
pc2(polarp3(+angpi)k))
(setqpc3(polarp17(+angpi)(*0.8dk))
pc4(polarp17ang(*0.8dk))
pc5(polarp17(+ang(*0.5pi))(*0.8dk))
2
pc6(polarp17(+ang(*1.5pi))(*0.8dk)))
(setvar"
osmode"
0)
(command"
layer"
"
s"
中心线"
)
line"
pc1pc2"
pc3pc4"
pc5pc6"
粗实线"
pline"
p0p1p2p3"
(setqss(entlast))
mirror"
ss"
p9p13p14p15"
p10p12"
p13p16"
circle"
p17r"
p18p19p20p21p22p23p18"
细实线"
p11p14"
虚线"
p4p5p6p7"
p6p8"
4.对话框程序如下:
ld:
dialog{label="
内六角圆柱头螺钉"
;
:
column{:
boxed_column{label="
图例"
image{key="
lld"
width=60;
aspect_ratio=0.5;
color=0;
}}
boxed_row{label="
螺钉参数"
popup_list{label="
d:
list="
M3\nM4\nM5\nM6\nM8\nM10\nM12\nM14\nM16\nM20"
key="
zhijin"
width=16;
fixed_
width=true;
}
螺栓长度l:
5\n6\n8\n10\n12\n16\n20\n25\n30\n35\n40\n45\n50\n55\n60\n65\n70\n80\n90\n100\n110\n13
20\n130\n140\n150\n160\n180\n200"
changdu"
fixed_width=true;
}}}
row{width=60;
height=4;
ok_button;
spacer;
text{label="
第一组(GB/T70.1--2000)"
}cancel_button;
}}
对话框预览如下:
5.
整个驱动程序如下:
(defunc:
ld()
(setqload_id(load_dialog"
ld1.dcl"
(if(<
=load_id0)(alert"
\n加载失败!
(progn(setqdisp_id(new_dialog"
ld"
load_id))
(if(notdisp_id)(alert"
\n无法正常显示对话框!
(progn(action_tile"
accept"
(get_date)(done_dialog1)"
(action_tile"
cancel"
(done_dialog0)"
(showslide)
(setqstart_id(start_dialog))
))))
(if(=start_id1)(draw_ld)(unload_dialogload_id))
);
(defunget_date()
(setqid1(atoi(get_tile"
)))
(setqzj_list(list"
3"
4"
5"
6"
8"
10"
12"
14"
16"
20"
(setqd(atof(nthid1zj_list)))
(setqid2(atoi(get_tile"
(setqcd_list(list"
25"
30"
35"
40"
45"
50"
55"
60"
65"
70"
80"
90"
100"
4
110"
120"
130"
140"
150"
160"
180"
200"
))
(setql(atof(nthid2cd_list))));
(defunshowslide()
(start_image"
(setqmaxx(dimx_tile"
)maxy(dimy_tile"
(fill_image200maxxmaxy-2)
(slide_image200maxxmaxy"
ld.sld"
(end_image));
(defundraw_ld()
5
四、十字槽沉头螺钉的设计
1.
通过分析得知可以以螺钉的直径d和长度l作为设计的主要参数,参数图样如下:
6
用对话框来实现,并采用下拉列表选择两个主要参数螺钉直径d和螺钉长度l,其它的参数在
驱动程序中设定。
3.
绘制螺钉的程序
(defundraw_hld()
p2(polarp1ang(*0.07dk))
p3(polarp0ang(*0.07dk)))
(setqp4(polarp3(+ang(*0.5pi))(/m2.0))
p5(polarp0angk)
p6(polarp0angcs)
p7(polarp5(+ang(*0.5pi))(*d0.5))
p8(polarp5anga)
p9(polarp8(+ang(*0.5pi))(*(/d2.0)0.85))
p10(polarp8(+ang(*0.5pi))(/d2.0)))
(setqp11(polarp0angl)
p12(polarp11(+ang(*0.5pi))(*(/d2.0)0.85))
p13(polarp11(+ang(*0.5pi))(/d2.0)))
(setqp14(polarp11ang(*1.5dk))
p15(polarp14(+ang(*0.75pi))(*m0.5))
p16(polarp14(+ang(*1.25pi))(*m0.5))
p17