利用AutoLISP 和DCL实现动态插入Word文档格式.docx

上传人:b****5 文档编号:16168668 上传时间:2022-11-21 格式:DOCX 页数:5 大小:17.08KB
下载 相关 举报
利用AutoLISP 和DCL实现动态插入Word文档格式.docx_第1页
第1页 / 共5页
利用AutoLISP 和DCL实现动态插入Word文档格式.docx_第2页
第2页 / 共5页
利用AutoLISP 和DCL实现动态插入Word文档格式.docx_第3页
第3页 / 共5页
利用AutoLISP 和DCL实现动态插入Word文档格式.docx_第4页
第4页 / 共5页
利用AutoLISP 和DCL实现动态插入Word文档格式.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

利用AutoLISP 和DCL实现动态插入Word文档格式.docx

《利用AutoLISP 和DCL实现动态插入Word文档格式.docx》由会员分享,可在线阅读,更多相关《利用AutoLISP 和DCL实现动态插入Word文档格式.docx(5页珍藏版)》请在冰豆网上搜索。

利用AutoLISP 和DCL实现动态插入Word文档格式.docx

  笔者所在单位采用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(*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″p4p5″)

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(-(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;

}}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 互联网

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1