免费毕业论文网  电话:010-51281033 010-51281044
QQ号:981339 传真:010-51281044
 邮箱:hotlw@vip.163.com 地址:北京市海淀区学院路


论文搜索:
基于ACAD平台的给排水制图程序
摘要:目前,专业给排水设计软件包很多,但在具体使用过程中,会遇到设计习惯不同、使用烦琐等问题。笔者在AUTOCAD平台上,用LISP语言编写了一系列程序,大大简化了设计、制图,并且提高了出图效率和设计的准确性。 关键词:计算机绘图 程序 给排水设计   目前,几乎所有的设计院都配备了给排水设计软件包,但是设计人员在使用软件过程中,常常会遇到诸多不便之处。如建筑外框不认,初始化数据输入不直观,数据输入不当时出错,修改不便等等。设计人员或是用鼠标代笔,或是用AutoCAD“硬画”。这种方式出图效率很低,而且图面质量难以保证。 1 程序设计目的   针对上述软件包使用不便或适应性不强等问题,笔者几年来在这一方面做了一些探索,用AutoLisp成功地开发一套比较完善且易学实用的系列化小程序。此程序的特点在于遵循传统绘图习惯,进行平面化设计的思路,按照传统绘图方式,灵活运用各个程序段,加强人机对话,力求机器的自动生成。 2 主要程序介绍   本程序组中包含程序段40余条,分为工具类与专业类,其中主要程序段有:   TK·LSP&TK·DCL:图库管理程序。   XX·LSP:由平面图生成系统图程序(原图)。   GG·LSP:标注给水管道管径并进行分层处理程序。   PG.LSP:标注排水管道管径并进行分层处理程序。   GB·LSP:对给水管管径及管段长度计算统计程序。   PB·LSP:对排水管管径及管段长度计算统计程序。   ZT·LSP:对总体排水管道管径及管段长度进行计算并标注程序。   GDPM·LSP:自动生成排水管道剖面并同时标注程序。   GCL·LSP:对给排水工程量对照定额进行工程概算程序。   DE·LSP:调出事先输入的定额程序。   LB·LSP:对给排水管管径及管段长度并进行列表处理程序。 3 使用方法   本程序是依托建筑或其他专业提供的平面图,按传统手工制图的方法与步骤进行平面设计。笔者把给排水的图元分为直线,多义线,图块(带属性),文字等等。   设计人员在绘制给水平面图时。用PLINE线绘制水平管,绘制给水立管时插入一个带有立管高度属性的图块 。排水平面图的绘制方法与给水相同。绘制其它给排水附件如卫生设备、阀门、消火栓、水嘴等附件均采用不同图块表达,这种作图方式直观、简捷、明快。在各层图面线条完成后,应用GG·LSP、PG·LSP程序标注其管径。在标注管径的时候,程序对此进行分层分类管理。配合CAD将各层平面设计完成并确认无误后,把各层另存为相应各层系统图图名,此时设计人员可将用图块表达的系统图图元如:水嘴、存水弯、消火栓、甚至标准化的系统图元等插入图中,并将各管段安装高度给出。确认无误后,用XX·LSP程序将此图进行图形处理。使之成为具有透视效果的系统透视图,再用JL·LSP程序将作平面图时输入的立管高度属性取出,并绘制成给水立管,将此图适当处理后,最后把各层系统图组合起来便成为给水透视图。   绘制排水系统图时,先用LG·LSP程序生成排水立管,在各排水点插入各种存水弯、排水栓等,再用XX·LSP程序将平面图进行图形处理,使之成为具有透视效果的系统透视图,最后把各层支管与立管联接好,排水系统图就形成了。   最后,再用CSD命令对图面进行美化,由于采用程序绘制的图元是由PLINE,BLOCK等组成,且是分层,分类放置的。据此,可用LB·LSP程序中有关命令,取出图中的类、层、块、点、线等特性,进行归类、计算、列表并生成一个主要材料表,自动列于图中。如果调出事先输入的定额,给出工程特征参数,就可用KS·LSP程序中有关命令,计算出一个概算表。材料表、概算表都能自动生成。至于给水总图的绘制,给水图可类似绘出。排水总图绘制水比较复杂。ZT·LSP程序中包含了各管段的计算、绘制及标注等工具,并可自动生成管道剖面。其程序可节省绘图时间50%。本系列程序如果加载于其他成功软件包之上,功效更加明显。 4 程序举例    限于篇幅,这里仅列其中之一以供同行们参考。   ;本程序对PLKINE,BLOCK,TEXT等图元分别进   ;行旋转与平移处理,达到平面图形的透视效   ;果。程序对LINE,DIM,SOLID等图元进行删   ;除。   (defun c:xx(/xxy k1 k2 k3 stn)   (setq ss(ssget)ang(/pi4);选择需要进行旋转与平移处理的对象(实体)   (setqy (cadr(nth1 (entsel″\\\\n 选择水平线″))))   ;Y用户选择的旋转基准线   (setq e(ssnamess 0)n0)   (setq k1(list″a″)k2(list″b″)k3(list″c″))   ;初始化k1k2k3放置实   ;体名的列表,并设“a”“b”“c”为结束标记   (while e   ;while 语句开始,对所选项实体进行旋分类处理   (setq st(cdr(assoc 0(entget e))))   (if (=st″LWPOL YLINE″)(setq k2 (cons e k2))  ;if 语句开始       (if (or(=st″CILCLE″)(=ST″insert\")(=st\"TEXT);if 语句开始(setq k1(cons e k1))  (entdele)     ); if 语句结束   )   ;if 语句结束(setq n( =1n))(setqe (ssname ss n ))   ) ;while 语句结果   (setq n0)     (if(/=(ntnk2)″b″)(setq 1(entget(nth n k2))(setq 1 nil))  (while 1; while 语句开始   ;对所选项的PLINE线实体进行旋转处理,角度45度     (if(/=(cdr(assoc 0 (entget(nth nk2))))\"ABC\")   ;if语句开始对复合弧线不处理   (progn(setq z(cdr(assoc381)))     p1(assoc 10 1)la (cdr(assoc 8 1))     m(-(length 1)(length(member p11)))     p2(cdr(nth( m4)1))p1(cdrp1)    ;p1 起点坐标,p2终点坐标     (setqx1(carp1)x2(car p2)y1(cadrp1)     y2(cadr p2)dy1(-y1y)dy2(-y2y))     (setq p3 (list( x1(*(cos ang )dy1))( y1z(*(-(sin ang)1)dy1)))     p4(list( x2(*(cos ang)dy2))(=y2z(*(-(sin ang)1)dy2))))   (setq 1(subst(cons 380.0)(assoc 381)1)   ;修改高度信息       1(subst(cons 10p3)(nth m 1)1)   ;修改起点坐标信息       1(subst(cons 10p4)(mth m4)1)1))   ;修改终点坐标信息     (entmod 1)   ));if语句结束  (setqn( =1n))   (if(/=(nthnk2)″b″)(setq1 (entget(nth n k2)))  (setq 1 nil))  );while语句结束     (setq n0)     (if(/=(nt n k1)″a″)(setq 1(entget(nthn k1)))  (setq 1 nil))     while 1 ;while语句开始,对所选的             ;TEXT、BLOCK、ATTRIBUTE等实             ;体进行旋转及平移处理,角度             ;45度   if(=nil(assoc 111))(setq p1(cdr(assoc 101 )))   ;if 语句开始   (if(=0.0(nth 1(assoc 1 1 1)))(setq p1(cdr   (assoc 101)));if 语句开始   (setq p1(cdr(assoc111)))   );if 语句结束,本语句对文字对齐方式的判断,并提取高度和插入点信息   );if 语句结束,本语句对是否为文字的判断,并提取高度和插入点信息     (setq x1(carp1)y1(cadrp1)z(nth 2p1))     (setq dy 1(-y1y)     (setq p3(list(=x1(*( cos ang)dy1))(=y1z(*(-(sin ang)1))))     (if (=nil(assoc 111));if 语句开始     (progn(setq 1(subst(cons 10 p3)(assoc 101)1))     (entmod 1))(if(=0.0(nth1(assoc 111)));if 语句开始(progn(setq 1(subst(cons 10p3)(assoc 101)1))(entmod 1)       );end of PROGN(progn(setq1(subst(cons11p3)(assoc111)1))(entmod 1)       );end of PROGN   );if语名结束,本语句对文字对齐方式的判断,并修改高度和插入点信息   );if 语名结束,本语句对是否为文字的判断,并修改高度和插入点信息     (setq name(cdr(assoc 01)))     (if(=(cdr(assoc661))1) ;if 语句开始,是否为带属性的块     (progn(setq11(entget(entnext(cdr(assoc-11))))     (setq p1(cdr(assoc1111)))     (setqx1(car p1)y1(cadr p1)     (setq p3(list( x1(*(cos ang)dy1))( y1z(*(-(sin ang)1)dy1))))     (setq 11(subst(cons11p3)(assoc11 11)11))   (entmod11)   )) ;if语句结束,修改中属性的插入点信息   (setq ang(/(cdr(assoc 501))2))   (setq1(subst(cons 50 ang)(assoc 501)1))   (entmod1); 通过修改块的插入角度信息进行旋转     (setq n( 1n)   (if(/=(nth nk1)″a″)(setq1(entget(nth n k 1)))(setq 1 nil))   ) ;while语句结束   (setq n 0)   (while(<n (sslengthss)); while 语句开始,对名为“ZXR-2035”的块   ;进行高度平移处理   (setq stl(entget(ssname ss n )))   (setq pt1(cdr(assoc 10 stl)))   (if(/=″ZXR-2035″(cdr(assoc 2(entget(ssname ss n))))); if 语句开始   (progn   (setq pt1(list(carpt1)(cadrpot1)0))   (setq stl(subst(cons 10pt1)(assoc 10 st1(st1))   (entmod st1)));if 语句结束   (setqn( 1n))   ) ;while语句结束  (redraw)  )   ;defun 结束 5 实际运用  本程序通过笔者所在单位这几年来工程设计人员的运用,得到了逐步完善与推广,实践证明,该程序易学好用。故提炼出来与同仁商榷。

发布时间:07-06-11 15:14:34

点击数:
上一篇: 下一篇:
毕业论文 英语专业毕业论文 英语毕业论文 数学毕业论文 护理毕业论文 工商管理毕业论文 经济管理毕业论文 市场营销毕业论文 会计专业毕业论文 会计毕业论文 法律毕业论文 电子商务毕业论文 计算机专业毕业论文 计算机毕业论文 毕业论文下载 毕业论文致谢 毕业实习论文 毕业论文提纲 毕业设计论文 论文开题报告 毕业论文格式 毕业论文范文 毕业论文开题报告 实习论文 大学毕业论文 本科毕业论文 大学生毕业论文 毕业论文网 免费毕业论文论文格式论文发表科学论文小学科学论文美术论文音乐论文物理论文体育论文小学德育论文师德论文德育论文历史论文化学论文语文论文 初中语文论文 语文教学论文 初中语文教学论文 小学语文论文数学论文 数学教学论文 初中数学论文 小学数学论文英语论文 英文论文 小学英语论文 初中英语教学论文 英语教学论文教育论文 电教论文 班主任论文 小学教育论文 幼儿教育论文 小学教学论文 教育教学论文 教学论文心理学论文医学论文护理论文旅游论文经济学论文人力资源论文国际贸易论文物流论文行政管理论文市场营销论文经济管理论文工商管理论文企业管理论文人力资源管理论文法学论文法律论文建筑论文科技小论文科技论文电子商务论文