给排水CAD计算绘图一体化
目前国内已有十几家单位相继推出了在AutoCAD基础上开发的给排水设计软件包,但熟悉和掌握作为通用图形平台的AutoCAD,仍是每个应用计算机进行设计的人员的基本技能。而且,由于现有的软件包不一定符合用户的设计习惯,其计算功能也偏于简单,以至于不能满足给排水专业设计的特定要求,致使多数设计人员重新回到 AutoCAD平台。因此,我们需要开发符合设计习惯的计算绘图一体化程序。
1 给排CAD的特点
用AutoCAD从事给排水工程设计,在绘图方面其应用一般是复制条件图、绘制工艺图等,本专业重复绘图相对较少。从计算上看除个别情况外,通常计算简捷而成熟,手册众多、计算无处不有。诸如各种水量、流量计算,给排水管线水力计算,水箱、水池容积计算,管网平差计算等,经验数据大量用于设计,而专门的计算程序所得结果数据亦难以直接用于绘图。由此可知在设计中引入CAD,把计算融入绘图应是给排水专业计算机应用的方向之一。
2 给排CAD计算绘图一体化程序
计算绘图一体化的主导思想在于交叉进行计算与绘图,提高自动化程度,提高计算的精度与速度,避免数据的重复输入,提高设计效率。在CAD平台上自动提取计算数据,用户参与意见将计算结果直接用于绘图、标注或再计算。若将要解决的某个问题作为一个单元模块,分步编程、集成应用,可提高程序的实用性、适应性、灵活性。其结构化程序功能及简要说明见图1。
给排CAD计算绘图一体化的实现有赖于给排水专业人员和计算机人员的进一步协作,选择合适的高级语言、采用适当的程序结构、正确的计算方法,运用数据共享和通讯技术,经过长期实践才能完成。实现图1所示的计算绘图一体化功能,应把设计任务模块从上到下细分,以一个设计任务为单元编程,在特定的语言环境中经编辑、编译、调试等步骤来完成计算绘图一体化程序的设计。
3 实现方法
3.1 开发环境
AutoCAD中常用二次开发的AutoLISP应用语言是一种解释性语言。因图形处理功能强而备受使用者欢迎,不足之处是当图形内容多、计算量大时处理速度慢。为提高计算速度与精度宜选择ADS( AutoCAD Development System)开发系统、ARX(AutoCAD Runtime eXtension)开发环境或与DXF(Drawing eXchange Format)进行交换的其它高级语言。其中ADS是AutoCAD的C语言环境,既能充分利用C语言固有的强大功能,又向开发者提供了丰富的应用程序接口例程,功能完整、接口简单、效率高、速度快、便于多模块组合。用ADS开发的应用程序在R11以上的版本运行即可,与AutoCAD 13.0版本以上提供的ARX具有相同的开发环境(使用C语言环境编程)。故ADS程序具有较好的移植性、延续性、通用性。
3.2 ADS程序的组成及工作流程
ADS程序除输入输出语句外与C语言程序类似,而图形处理功能部分与AutoLISP语言相关。由于它并非最低层代码,必须由AutoLISP解释器加载,因此一个完整的ADS应用程序除包含用户为解决某个问题而设计外部函数外,还必须能支持并且使用ADS环境所定义的与AutoLISP的接口程序。这个接口程序要求按一定的次序,使用确定的值来调用确定的ADS库函数,其工作流程见图2。
由main()函数调用系统提供的ads_init函数初始化ADS和AutoLISP的界面,并通过新建立的通讯链用 ads_link通知 AutoLISP准备接受调用请求。当收到函数定义请求码(RQXLOAD)时,ADS用ads_defun函数定义自己的外部函数;若收到函数调用请求码(RQSUBR),则执行某个已加载的外部函数。其中RSRSLT表示接收、处理AutoLISP请求;RSERR表示ADS程序出错。
外部函数是ADS应用程序自己定义的可在命令行执行或被AutoLISP调用的函数,一旦完成应用程序的装载,执行ADS程序就像执行AutoLISP程序一样。如把图1中设计任务模块细分后定义成一个外部函数,通过外部函数调用设计依据、计算、绘图等模块函数来实现多模块的集成应用。因此外部函数是用户编程的主要内容,而接口程序是定制ADS应用程序的基本平台。
4 程序举例
以建筑给水系统水力计算为例:输入给水当量即得设计秒流量;选定管材、管径,便可计算流速、校验结果。若符合设计要求可按图形提取管长,计算沿程水头损失,并将计算结果赋给对应管段,为系统图的绘制及标注作好准备;然后计算局部水头损失,最后输入高差及流出水头等得系统所需水压总值。为此编写的ADS源程序名为SLJS.C(程序略)。由外部函数SLSJ()有序地调用设计依据确定、计算管径的寻找、计算、绘图、标注以及管网类型选择等不同功能的模块函数,完成实例中计算、绘图一体化设计,具体如下:
1.编译:将程序SLJS.C拷贝至AutoCAD环境ADS目录下,用W90SAMP.BAT编译产生SLJS.EXP文件或用Borland C编译产生可执行文件 SLJS.EXE。
2.装载:与装载AutoLISP程序一样,有2种方法。
(1)修改AutoCAD的标准菜单文件ACAD.MNU,使其置于AutoCAD的下拉式菜单或屏幕菜单中执行;也可放入用户自制的实用菜单内执行,如图1中建筑给排水生活、生产给水设计的子菜单。
(2)在Command:行,用格式为(XLOAD “SJLS.EXP”)的命令载入。
3.执行及结果:点取菜单或执行SJLS命令,绘制某住宅楼给水系统图并计算该系统所需压力值。该住宅楼有8层,共32户用水,每户给水当量为4,共4根给水立管。其中设计秒流量公式中的系数α=1.02、k=0.0 045,管长及高差等见图3。
用该程序完成图3中最不利主干管的绘制与标注(SL-1立管上点①与供水点②之间的管路),同时计算得所需水压349kPa(34.892m H2O)。支管标记在绘制主干管时作为图块插入,其余部分由AutoCAD命令编辑而得,见图3。
也可用此程序对成图后的给水系统进行计算或标注。若将计算结果按表格方式输出即得计算书,对复杂管道系统的水力计算,只需将以前的计算结果作为下次计算的基础数据便可分步完成全部的计算与绘图,但应进一步扩充和完善程序。
5 小结
5.1 计算绘图一体化程序较好地解决了经验数据的采用多,计算对精度要求不高的作法。克服了专门计算程序的结果数据难以直接用于绘图和标注的问题。
5.2 在计算绘图一体化程序中把能用公式表达的手册内容自然地纳入了计算机,节省查阅手册的时间,提高设计效率。
5.3 ADS应用程序容易移植、修改、扩充,采用模块化编程方法,便于将解决问题的多个模块进行组合,具有一定的灵活性,且保密性好。
5.4 此法便于推广,不断探索、交流、积累便可定制成给排CAD计算绘图一体化实用菜单。
使用微信“扫一扫”功能添加“谷腾环保网”