欢迎来到天天文库
浏览记录
ID:31843492
大小:248.38 KB
页数:3页
时间:2019-01-21
《autocad作直线对称中心线》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、AutoCAD下绘制直线对称中心线的方法AutoCAD是目前国内应用最广范的CAD系统之一,AutoCAD功能强大,是一个通用的CAD平台,但是如果不根据本专业的需要进行二次开发,使用起来是很不方便的。画对称中心线是机械设计中经常遇到的一个问题。笔者用AutoLISP依据国家标准开发了两个程序,可以很方便地解决直线对称中心线的问题。第一个程序适用于两条边是连续直线的情况。使用方法是:用LOAD命令装入GLS.LSP,运行C:GSL,依据屏幕提示,分别选择两边,自动绘制出中心线。GSL.LSP:(defunmi
2、d(pt1pt2)计算两点之中点的功能函数(setqpt(mapcar'+pt1pt2))(setqpt(mapcar'/pt'(222))))(defunc:gsl/mcl1clcl2eptpt1pt2pt3pt4a)(SETQM1)(WHILEM(SETQCL1(ENTSEL"选择第一条直线"))(cond((notcl1)(prompt"没有发现实体"))((/="LINE"(cdr(assoc0(setqe(entget(carcl1))))))(prompt"所选不是直线"))(t(pr
3、ompt"找到了第一条直线”)(setqmnil);退出循环)))(setqcl(ssget(nth0(cdrcl1))));取得第一条直线的实体数据(SETQM1)(WHILEM(SETQCL2(ENTSEL"选择第二条直线"))(ifcl2(if(ssmemb(carcl2)cl)(progn(princ"选择重复,重新选择")(setqcl2nil))))(cond((notcl2)(prompt"没有发现实体或重复"))((/="LINE"(cdr(assoc0(setqe(entget(ca
4、rcl2))))))(prompt"所选不是直线"))(t(prompt"两条直线已经选择完毕")(setqmnil);;;退出循环)));;;取得第一直线两端点的坐标(setqpt1(cdr(assoc10e))pt2(cdr(assoc11e)))(setqe(entget(carcl1)));;取得第二条直线的实体数据;;;取得第二直线两端点的坐标(setqpt3(cdr(assoc10e))pt4(cdr(assoc11e)));;调整端点(if(interspt1pt3pt2pt4t)(se
5、tqptpt1pt1pt2pt2pt));;;计算两端中点坐标(setqpt1(midpt1pt3))(setqpt2(midpt2pt4))(setqa(anglept1pt2));计算中心线的倾角(setqpt2(polarpt2a2.5));;计算中心线的第一个端点(setqpt1(polarpt1(+pia)2.5))(command"layer""SET"5"");;设置中心线层(command"line"pt1pt2"");;画出中心线)(princ"C:GSLhasloaded")(Prin
6、c"forsymmetryline")(princ)第二个程序适用于阶梯轴,阶梯孔等各种情况。使用方法是:用LOAD命令装入GLS1.LSP,运行C:GSL1,依据屏幕提示,分别选择两边的端点,自动绘制出中心线。GSL1.LSP(defunmid(pt1pt2)(setqpt(mapcar'+pt1pt2))(setqpt(mapcar'/pt'(222))))(defunc:gsl1(/p1p1p3p4a);;保存环境变量(setqos(getvar"osmode"))(setqcm(getvar"cm
7、decho"));;设置环境变量(setvar"osmode"33)(setvar"cmdecho"0);;依次读取两条直线的端点(initget1)(setqp1(getpoint"选择第一条直线的第一个点"))(initget1)(setqp2(getpoint"选择第一条直线的第二个点"))(initget1)(setqp3(getpoint"选择第二条直线的第一个点"))(initget1)(setqp4(getpoint"选择第二条直线的第二个点"));;;;恢复环境变量(setva
8、r"osmode"os)(setqp1(midp1p3))(setqp2(midp2p4))(setqa(anglep1p2))(setqp2(polarp2a2.5))(setqp1(polarp1(+pia)2.5))(command"layer""set"5"")(command"line"p1p2""))(princ"C:GSL1hasloaded")(Princ"forsymmet
此文档下载收益归作者所有