欢迎来到天天文库
浏览记录
ID:30712486
大小:43.50 KB
页数:6页
时间:2019-01-02
《化工工艺流程图阀门程序设计》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、化工工艺流程图阀门程序设计提要:本文针对化工工艺流程图CAD阀门绘制程序设计,探讨CAD在化工工艺设计中的运用。文后提供的程序清单可在AutoCADR12中文环境下运行,对化工工艺设计CAD二次开发提供经验与技巧。 CAD技术已广泛应用于各专业设计,但在化工工艺设计领域内商品化软件不足,这就需要各设计单位自行开发应用软件以适应CAD技术的发展.本文提供的阀门绘制程序是在AutoCAD二次开发的化工工艺计算机辅助设计CPCAD系统中的一个独立程序,它以AutoLisp语言编写,功能全,使用方便,具有可读性及一定的技巧。●阀门绘制要求 在Aut
2、oCAD上绘制阀门,要求于已存在的工艺管道上据阀门类型自动按一定的比例显示,图纸输出时的尺寸符合专业制图要求,(原因是不可能根据阀门的实际尺寸与其它化工设备按同一比例绘图)并自动切断管道线,同时判断管线与水平方向的夹角,可取代AutoCAD的copy。阀门型式全,层自动设置并不受原当前层的影响。●程序简介 该程序针对以上要求,提供11种常用阀型,可方便地进行选择.如需其它类型,可对源程序简单地修改补充。1.主控程序 在主控程序中,(if(and(/=*blnil)(/=*dwgscalenil))判断变量*bl及*dwgscal是否存在.如
3、不存在程序不再执行,因此需在ACAD.LSP中加载或在command下赋值(注:*bl=*dwgscale)。如(setq*bl100)(setq*dwgscale100),100为绘图比例。Progn语句段完成图层设置,下面的缺省值设计读者可自行分析,具有通用性和一定的技巧。2.阀门程序的公用子程序 该部分是程序的核心.阀门长度的赋值是绘图比例的5倍,当以相同比例输出时其长度为5mm。法兰的绘制是可选择的。当提示阀心位置时,选择line实体,程序可就选择的line实体的起点和终点坐标计算该线与水平方向的夹角,同时求出各绘制点的极坐标。需要强
4、调的是对Pline折线不适用,其原因是起点与终点的连线和要绘阀门不一致。(一般地,如需粗线可在出图时对绘图仪的参数进行设置)该子程序中又调用法兰设计子程序,这是AutoLisp允许的,而且是一很好的功能。3.其它子程序相对简单,不再介绍。●.附源程序清单VA(defun*ERROR*(st)(menucmd"s=s")(command"osnap""none")(command"layer""s"cl"")(setvar"regenmode"1)(princst)(terpri))(defunqs()(setqfc(*5.0*bl))(menu
5、cmd"s=s")(initget"YN")(if(not*yffl)(setq*yffl"N"))(princ"有否法兰:[Y/N]<")(princ*yffl)(setqfl(getkword">"))(if(notfl)(setqfl*yffl)(setq*yfflfl)))(defundfw()(command"OSNAP""NEAR")(setqe1(entsel"阀心位置:"))(command"osnap""none")(defungy()(setqzx(cadre1)e2(entget(care1))p01(cdr(as
6、soc10e2))p02(cdr(assoc11e2))zj(+(*(/1.02.0)pi)(anglep01p02))l1(/fc1.732)l2(/l11.0)p1(polarzx(+zj(*(/2.03.0)pi))l2)p2(polarzx(+zj(*(/1.03.0)pi))l2)p3(polarzx(+zj(*(/4.03.0)pi))l2)p4(polarzx(+zj(*(/5.03.0)pi))l2)p11(polarzx(+zj(*(/1.02.0)pi))(*0.867l2))p21(polarzx(+zj(*(/2.03.
7、0)pi))(*0.48l1))p22(polarzx(+zj(*(/1.03.0)pi))(*0.48l1))p23(polarzx(+zj(*(/4.03.0)pi))(*0.48l1))p24(polarzx(+zj(*(/5.03.0)pi))(*0.48l1)));setq(flsz)(command"break"p32p33))(defunqf()(whilee1(gy)(command"line"p21p1p2p22"""line"p23p3p4p24"""circle"zx(*0.48l1));command(dfw));whi
8、le(PRINC))(defunjz()(whilee1(gy)(command"line"p1p2p3p4p1"")(dfw)(PRINC)))(d
此文档下载收益归作者所有