摘要:以国内一建筑CAD 给排水设计系统为例,提出了一种进行建筑给排水CAD 的空间相容性分析方案,主要用于检查建筑给排水系统在设计阶段管道、管件以及结构构件的空间相容性。针对空间相容性分析运算量较大的特点,介绍了几种空间相容性分析算法优化的具体方法。该模块可以提高建筑给排水CAD 的设计质量,具有较为广阔的应用前景。
关键词:空间相容性分析 建筑给排水 CAD
中图分类号: TU991. 02
文献标识码: C
文章编号: 1000 - 4602(2004) 02 - 0076 - 03
随着建筑智能化、专业化水平的提高,建筑内给排水管道、管件、设备、结构构件日趋复杂,对于其空间位置虽然有一定的设计标准,而且建筑内通常要设置专门的设备层和管道井,但不可避免会出现给排水管道、设备以及结构构件之间的空间上的不相容(即发生碰撞) ,如果不在设计中解决这一问题,则施工时协调问题就会纷至沓来。
建筑给排水系统设计的空间相容性分析主要是检查给排水管道、管件、设备之间及其与结构构件发生的空间冲突,尤其是管道井、设备间和地下室这类给排水管道、设备较为集中的空间。目前建筑给排水CAD 平台中一般提供给排水管道、设备的平面设计功能,但设计过程中的给排水管道、构件之间的空间相容性分析一般都没有涉及,因此有必要加入空间相容性分析模块。
1 空间相容性分析
建筑给排水CAD 系统一般都具有各种相关空间数据,如给排水管道、管件(如弯头、变径、三通和四通等) 、设备(如水箱、水池、水泵和洁具等) 以及结构构件(如梁、柱、墙和楼梯等) 的相应数据结构描述,为了便于对形状、大小各异的构件进行空间相容性分析,需要将各种类型构件的空间结构分解为标准体。研究中把圆柱体和平行多面体作为标准体,利用这两种基本结构描述所有的管道、管件和结构构件。
经过构件的空间分解,构件之间空间相容性的问题便转化为标准体之间的碰撞检查问题,只要构件分解的所有标准体不碰撞,构件即不碰撞。标准体碰撞检查的核心算法是在编写基本空间处理函数的基础上直接编写两个标准体的空间关系判断函数,这种方法具有算法简单易实现、精度易控制、分析效率高的优点。
2 基本流程
以笔者开发的国内某建筑CAD 给排水设计系统的空间相容性分析系统为例,介绍建筑给排水空间相容性分析的方法和主要流程。空间相容性分析的主要模块包括数据读取模块、体化模块、碰撞检查模块和碰撞分析模块,主要工作流程如图1 所示。
[img]20065205412163139.gif[/img]
图1 空间相容性分析的工作流程
① 数据读取模块负责读取建筑给排水CAD的工程数据文件,以获得建筑给排水工程中与空间相容性分析相关的基础数据,其中排水管道与给水管道相比,尺寸更大,需要考虑其弯头、三通、四通等管件的体化,而对于给水管道则无需考虑管件,认为管道直接相连。
② 体化模块将数据读取模块获得的基本构件拆分为标准体,为建筑给排水空间相容性分析提出数据基础。笔者采用了同一个结构描述平行多面体和圆柱体这两种标准体,不仅包含了空间信息,而且包含了标准体所对应的管件或构件的信息(如系统类别、序号等) 以用于构件碰撞的后期处理。由于原有建筑给排水CAD 系统核心模块采用Fortran 进行设计, 所以标准体的数据结构STRUCTUREBLOCK3D 设计也是基于Fortran 进行编写。而建筑给排水空间相容性的后期数据处理部分则采用Vi2sual C + + 进行编写,设计了struct BLK3D ,其结构与BLOCK3D 完全一致,以方便基于Binary 方式的文件读写。
Fortran 中BLOCK3D 结构的定义为:
STRUCTURE/ BLOCK3D/
INTEGER NO ! 序号,继承自构件的数据结构
INTEGER SNUM ! 标准体所在的构件所在的系统号
INTEGER ID ! 标准体在构件中的标号
INTEGER SECTIONKIND ! 断面类型0 :多边形 1 :圆形
INTEGER LASTTUBE ! 上一构件
INTEGER NEXTTUBE(3) ! 下一构件
! 如果标准体截面为多边形,则上下表面的顶点数目定为66 :
REAL 3 4 U- SECTOR(66. 3) ! 标准体上表面顶点坐标
REAL 3 4 B- SECTOR(66. 3) ! 标准体下表面顶点坐标
! 如果标准体截面为圆形,则仅用上下表面的中心点坐标和圆柱体半径描述:
REAL 3 4 RADIUS ! 圆柱体直径
REAL 3 4 XU ,YU ,ZU ! 圆柱体上表面中心点坐标
REAL 3 4 XB ,YB ,ZB ! 圆柱体下表面中心点坐标
REAL 3 4 CP ! 中心点坐标
END STRUCTURE
③ 碰撞检查模块读取Binary 数据文件的标准体数据,建立多个BLK3D 结构体的对象,两两循环进行碰撞检查。其核心为平行多面体与平行多面体的碰撞检查问题,以空间解析几何为理论支撑编写平行多面体与平行多面体的空间位置关系判断函数。研究中把圆柱体近似成平行多面体进行处理。
④ 碰撞分析模块中,如果两个标准体发生碰撞则每次的结果都保存于结构体BLK- IINSERT 的一个对象中,属性包括发生碰撞的两个标准体的ID以及两体的交线。根据ID 属性可以搜索到发生碰撞的一组构件的相应属性信息以进行系统设计上的调整。根据两体的交线可以绘制两体的交截面、突出显示相交空间并计算其空间大小。对于墙和管道发生的碰撞检查,如果墙没有预设洞口则认为发生碰撞,在碰撞处给出墙打洞的建议,如果碰撞处已经开洞则认为没有发生碰撞。
3 技术要点
① 空间相容性分析基本流程
进行两个平行多面体空间相容性分析的基本流程如图2 左所示,碰撞检查核心函数的基本流程如图2 右所示。其中两个标准体是否包含的基本思路是以点体位置关系判断函数为基础。过点作平行于体的面,如果相交则求取截面;判断点和截面的位置关系,如果点在截面内则点在体内;如果一个体的所有顶点都在另一个体内则该体为另一个体所包含。要进行有限平面与有限平面空间位置关系判断,首先要判断这两个有限平面所在的相应无限平面有无交线,如果有则判断交线和有限平面的位置关系,如果交线与两个有限平面都相交,则说明两个有限平面发生碰撞(有限平面包括顶面、底面和侧面) 。
② 动态空间相容性分析
动态空间相容性分析是指判断管道、设备是否影响门窗的开启、吊车等动态专业设备的运行。动态空间相容性分析的实现较为困难,因为它要研究门窗开启、吊车运行以及设备使用过程中管道、设备、墙、梁、柱、门窗等构件之间的空间相容性。动态空间相容性分析主要是根据物体的运动轨迹构造一个虚拟实体,再判断这个虚拟实体与管道、设备、墙、梁、柱、门、窗等构件是否发生碰撞。
③ 空间相容性分析的基本类结构
为了进行标准体与标准体的空间关系判断,模块设计了点类Point 、线段类Line 、多边形类Polygon、平行多面体类Cubic 、圆柱体类Cylinder 以及BLOCK类,并对其成员函数进行了编码。Point 、Line 和Polygon 类用于描述Cubic 及Cylinder 类的成员变量,是进行标准体与标准体空间相容性分析的基础。
[img]20065205412945736.gif[/img]
图2 空间相容性分析及平行多面体碰撞检查核心函数基本流程
④ 算法优化策略
采用两两标准体遍历的方法进行空间相容性分析,随着标准体数目的增大,则空间相容性分析的次数呈平方级别增长,为了提高空间相容性分析的效率,采用以下几种方式进行算法的优化。
a. 利用中心距离判断初步进行空间相容性分析。每个标准体在生成时被赋予一个中心点的坐标,当参与空间相容性分析的两个标准体的中心点坐标超过某一域值时则认为两个体没有碰撞的可能。
b. 利用标准体的最大包容长方体进行空间相容性分析。求出参与空间相容性分析的两个标准体的最大包容长方体,对两个长方体进行空间相容性分析,如果其不发生碰撞则认为两个标准体也没有发生碰撞的可能。由于长方体之间的碰撞检查相对标准体之间的碰撞检查在算法上要简单很多,所以利用这种方法排除不碰撞的标准体组合可以提高空间相容性分析的效率。
c. 仅在三个连续物理层内进行空间相容性分析。对于整个建筑,认为三个物理层之内的构件才有可能发生空间设计冲突,所以每次读取三个建筑物理层的数据进行空间相容性分析,这样避免了这三个物理层内的构件与本楼其他物理层的构件进行空间相容性分析,降低了空间相容性分析的次数。
4 结语
随着建筑内给排水管道、管件、设备以及结构构件日趋复杂化,在进行建筑给排水设计的过程中,不可避免地遇到给排水系统设计上的空间冲突问题,空间相容性分析系统可以提高建筑给排水CAD 的设计质量,将逐渐在设计中受到重视。