您好,欢迎来到好土汽车网。
搜索
您的当前位置:首页利用AUTOLISP 和DCL实现动态插入

利用AUTOLISP 和DCL实现动态插入

来源:好土汽车网
利用AutoLISP和DCL实现动态插入作者:轶名来源:网络类别:AutoLISP、VLISP、VBA/ActiveX开发技术日期:2002.04.29今日/总浏览:8/485〖利用AutoLISP和DCL实现动态插入〗笔者所在单位采用AutoCAD作为绘图平台进行工程设计和开发,在工程绘图过程中,经常会用到明细表的生成,如果明细表很多则需要一条一条地画出,这样将大大降低绘图效率,为了能实现一次可将明细表画出并准确插入到标题栏上,笔者在工作中尝试用AutoLISP语言和DCL对话框实现上了上述功能,从而大大提高了绘图效率。命令运行时,系统将出现提示对话框。用户只要输入明细表的起、止序号和比例,确认后即可将所需的标准明细表自动画出,并插入到标题栏的准确位置。画明细表的LISP程序如下:;画明细表外边框及各横线:(defundrawl()(setvar″cmdecho″0)(setvar″osmode″0)(command″layer″″m″″lll″″c″red″″)(setqinp(getpoint″\\n请输入明细表插入点(右下角):″))(setqnum1(atoiaa))(setqnum2(atoibb))(while(>num1num2)(alert″输入错误(结束序号必须大于起始序号),\\n要重新输入起始序号和结束序号,\\n请按回车键重新调用对话框。″)(exit))(setqnum(+1(-num2num1)))(setqx(atofab))(if(not*x)(setq*x1))(setqptx2(carinp))(setqptx1(-(carinp)180.0))(setqn0)(setqp1(polarinppi180))(setqp2(polarp1(/pi2)(+10.0(setqp3(polarp20180))(setqpty0(+10.0(cadrinp)))(setqp4(listptx1pty0))8num))))(*(setqp5(listptx2pty0))(setqscal(/(getvar″dimtxt″)5))(command″pline″inp″w″(*0.7scal)p1p2p3″c″″″line″p4p5″)(while(>numn)(setqn(+1n))(setqpy(*8n))(setqpty(+pypty0))(setqpt1(listptx1pty))(setqpt2(listptx2pty))(command″line″pt1pt2″)))0.7(*scal);画明细表内竖线:(defuncon()(setqptx1(+8.0(-(carinp)180)))(setqptx2(+50.0(-(carinp)180)))(setqptx3(+90.0(-(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))(setqptl3(listptx2pty1))(setqptl4(listptx2pty2))(setqptl5(listptx3pty1))(setqptl6(listptx3pty2))(setqptl7(listptx4pty1))(setqptl8(listptx4pty2))(setqptl9(listptx5pty1))(setqptl10(listptx5pty2))(setqptl11(listptx6pty1))(setqptl12(listptx6pty2))(setqptl13(listptx7pty0))(setqptl14(listptx7pty2))(command″line″ptl1ptl2″\"″line″ptl3ptl4″\"″line″ptl5ptl6″\"″line″ptl7ptl8″\"″line″ptl9ptl10″\"″line″ptl11ptl12″\"″line″ptl13ptl14″\"));添加明细表表头及书写序号:(defunte()v(getvar″textsize″)(setqwordnum2)(setqnunum1)(setqpty01(+2.0pty0))(command″insert″″/autocadr14/kaifa/mxb/btlt″inp11″0″);明细表表头利用插块方式插入。(repeatnum(setqptt(list(-ptx14)(+pty01(*8(-num2nu)))))(command″text″″j″″c″ptt3.5″word″)(setqword(1-word))(setqnu(1+nu)))(setqt(ssget″x″′((8.″lll″))))(if(notx)(setqx*x)(setq*xx))(command″scale″t″inpx″));用于取得由对话框输入的关键值(defunma()(setqaa(get_tile″n1″))(setqbb(get_tile″n2″))(setqab(get_tile″qa″))(done_dialog));主程序(defunc:mxb()(setqdcl_id(load_dialog″mxb.dcl″))(if(not(new_dialog″xb″dcl_id))(exit))(action_tile″accept″″(ma)″)(action_tile″cancel″″(done_dialog)″)(start_dialog)(drawl)(con)(te)(redraw)(setvar″osmode″32)(command″layer″″s″″thick-solid″″)(unload_dialogdcl_id))DCL对话框程序(mxb.dcl):xb:dialog{label=/*MSG*/″插入明细表″;key=″sd″;:boxed_column{:row{:edit_box{key=″n1″;label=″输入明细表开始序号:″;}}:row{:edit_box{key=″n2″;label=″输入明细表结束序号:″;}:row{:edit_box{key=″qa″;label=″请输入比例:″;}}ok_cancel;}}}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- howto234.com 版权所有 湘ICP备2022005869号-3

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务