欢迎来到天天文库
浏览记录
ID:12906838
大小:30.50 KB
页数:11页
时间:2018-07-19
《利用autolisp 和dcl实现动态插入》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、利用AutoLISP和DCL实现动态插入作者:轶名 来源:网络 类别:AutoLISP、VLISP、VBA/ActiveX开发技术 日期:2002.04.29 今日/总浏览:8/485 〖利用AutoLISP和DCL实现动态插入〗 笔者所在单位采用AutoCAD作为绘图平台进行工程设计和开发,在工程绘图过程中,经常会用到明细表的生成,如果明细表很多则需要一条一条地画出,这样将大大降低绘图效率,为了能实现一次可将明细表画出并准确插入到标题栏上,笔者在工作中尝试用AutoLISP语言和DCL对话框
2、实现上了上述功能,从而大大提高了绘图效率。命令运行时,系统将出现提示对话框。 用户只要输入明细表的起、止序号和比例,确认后即可将所需的标准明细表自动画出,并插入到标题栏的准确位置。 画明细表的LISP程序如下: ;画明细表外边框及各横线: (defundrawl() (setvar″cmdecho″0) (setvar″osmode″0) (command″layer″″m″″lll″″c″red″″) (setqinp(getpoint″请输入明细表插入点(右下角):″))
3、(setqnum1(atoiaa)) (setqnum2(atoibb)) (while(>num1num2) (alert″输入错误(结束序号必须大于起始序号),要重新输入起始序号和结束序号,请按回车键重新调用对话框。″) (exit)) (setqnum(+1(-num2num1))) (setqx(atofab)) (if(not*x)(setq*x1)) (setqptx2(carinp)) (setqptx1(-(carinp)180.0)) (setqn0)
4、 (setqp1(polarinppi180)) (setqp2(polarp1(/pi2)(+10.0(*8num)))) (setqp3(polarp20180)) (setqpty0(+10.0(cadrinp))) (setqp4(listptx1pty0)) (setqp5(listptx2pty0)) (setqscal(/(getvar″dimtxt″)5)) (command″pline″inp″w″(*0.7scal)(*0.7scal)p1p2p3″c″″″line
5、″p4p5″) (while(>numn) (setqn(+1n)) (setqpy(*8n)) (setqpty(+pypty0)) (setqpt1(listptx1pty)) (setqpt2(listptx2pty)) (command″line″pt1pt2″))) ;画明细表内竖线: (defuncon() (setqptx1(+8.0(-(carinp)180))) (setqptx2(+50.0(-(carinp)180))) (setqptx3(+90.0(
6、-(carinp)180))) (setqptx4(+98.0(-(carinp)180))) (setqptx5(+140.0(-(carinp)180))) (setqptx6(+160.0(-(carinp)180))) (setqptx7(+150.0(-(carinp)180))) (setqpty1(cadrinp)) (setqpty2(+pty0(*8num))) (setqptl1(listptx1pty1)) (setqptl2(listptx1pty2)) (
7、setqptl3(listptx2pty1)) (setqptl4(listptx2pty2)) (setqptl5(listptx3pty1)) (setqptl6(listptx3pty2)) (setqptl7(listptx4pty1)) (setqptl8(listptx4pty2)) (setqptl9(listptx5pty1)) (setqptl10(listptx5pty2)) (setqptl11(listptx6pty1)) (setqptl12(listpt
8、x6pty2)) (setqptl13(listptx7pty0)) (setqptl14(listptx7pty2)) (command″line″ptl1ptl2″" ″line″ptl3ptl4″" ″line″ptl5ptl6″" ″line″ptl7ptl8″" ″line″ptl9ptl10″" ″line″ptl11ptl12″" ″line″ptl13ptl14″")) ;添加明细表表头及书写序号: (defunte()v(get
此文档下载收益归作者所有