王冲
摘要:由于工程设计中火灾探测器的布置使用CAD手动绘制比较费时,为此开发了一个基于CAD内的VBA编制的程序,通过对火灾自动报警系统设计规范中各种参数的设置,可实现不同类型火灾探测器在平面图中的自动布点,提高了工程设计的效率及准确率。
关键词:VBA;CAD二次开发;火灾探测器;自动布置;
引言
为了更好的保障生命和财产的安全,火灾自动报警系统的的需求越来越广泛。火警平面布置图目前主要使用AutoCAD在建筑平面图中手动绘制。在大型建筑物内需要火灾探测器的区域和数量都比较多,单纯的手动绘制效率低下,耗费大量的时间,也易产生错误。AutoCAD内置的VBA這一种通用的自动化语言为更好的进行火警工程设计提供了可能,通过VBA编程进行二次开发,可实现火灾探测器在平面布置图中的自动布点[1]。
1参数提取
在VBA程序设计前,首先要从火警相关设计规范及实际经验中提取与火灾探测器布置相关的信息,并将其参数化,最后纳入到程序中,实现参数化自动绘图[2]。
火灾探测器的布置和使用环境有很大关系,仅从建筑特征考虑,影响建筑物内点型火灾探测器布置的因素主要包括了屋顶坡度、空间高度、地面面积等,其主要参数及判断流程如图1所示[3]。其中,θ表示屋顶坡度(度);h和R分别表示探测空间高度及探测器保护半径(米);S和A分别表示探测区域面积及探测器的保护面积(平方米);N表示探测器数量(只)。
图1中,屋顶坡度大于15度时的参数及判断流程与小于等于15度时的类似,区别仅在于保护面积和保护半径的数值不同,故在此图中省略。
根据图1的流程确定各输入参数后,可计算出单个探测区域内火灾探测器的数量,公式为
其中,K表示修正系数,根据公共场所容纳人数的数量选取,人员小于500时可选1。
点型火灾探测器的布置还需要考虑横向间距a、竖向间距b以及探测器距墙距离,以期在满足设计规范的前提下,更大限度使用探测器保护范围,节约投资成本。
以保护面积为80m2,保护半径为6.7m的点型感烟火灾探测器为例,其探测器安装间距如图2所示。
其中横轴a表示探测器横向间距,纵轴b表示探测器竖向间距。探测器间距在Y和Z点之间的曲线范围内,保护面积可得到充分利用。经计算,Y和Z点之间曲线方程为:
,相应的限制条件为: ;
根据规范,点型探测器距墙不应小于0.5米,一般不大于探测器安装间距的1/2。
2界面及程序
在CAD中运行“VBAMAN”可打开VBA编辑器,新建FadTools.dvb的工程文件,该文件由AutoCAD对象、窗体、模块三大部分组成[4]。插入用户窗体并编辑,如图3所示。
以图1中屋顶坡度θ小于等于15度时选用点型感烟火灾探测器为例,主要源代码如下:
‘在平面布置图中选取探测区域
varPnt1=ThisDrawing.Utility.GetPoint(,vbNewLine&"拾取探测区域的一个角点:")
varPnt2=ThisDrawing.Utility.GetCorner(varPnt1,vbNewLine&"拾取探测区域的另一个角点:")
p1=varPnt1(0):p3=varPnt2(0):p2=varPnt1(1):p4=varPnt2(1)
IfvarPnt1(0)>varPnt2(0)Thenp1=varPnt2(0):p3=varPnt1(0)EndIf
IfvarPnt1(1)>varPnt2(1)Thenp2=varPnt2(1):p4=varPnt1(1)EndIf
frmPoint.TBLength.Value=(p3-p1)/1000:frmPoint.TBWidth.Value=(p4-p2)/1000
frmPoint.TBArea.Value=((p3-p1)/1000)*((p4-p2)/1000)‘面积
IffrmPoint.OpBtSmoke.Value=TrueThen‘计算探测器数量
IffrmPoint.TBHigh.Value>12ThenMsgBox“空间高度过高,感烟探测器不适用”
ElsestrBlockName="点型感烟火灾探测器"
IffrmPoint.TBArea.Value<=80ThenR=6700:frmPoint.TBParea.Value=80
ElseIffrmPoint.TBHigh.Value>6ThenR=6700:frmPoint.TBParea.Value=80
ElseR=5800:frmPoint.TBParea.Value=60:EndIf:EndIf:EndIf:EndIf
K=frmPoint.TBK.Value‘修正系数K:N=frmPoint.TBArea.Value/frmPoint.Parea.Value/K
IfN>Int(N)ThenN=Int(N)+1‘有小数时加一取整:EndIf:frmPoint.TBNumber.Value=N
‘Textbox输入值改变时的动态显示,以A=80,R=6700的点型感烟探测器为例
L=frmPoint.TBLength.Value‘长度:W=frmPoint.TBWidth.Value‘宽度
Na=frmPoint.TBNuma.Value‘横方向探测器数量:amin=L/Na:amax=11.5
frmPoint.LabelNa.Caption="范围:"&amin&"to"&amax‘显示a有效范围选择合适值
Nb=Int(N/Na)+1:frmPoint.TBNumb.Value=Nb‘竖方向探测器数量
a=frmPoint.TBGapa.Value‘横向间距b=0.1*a*a-2.85*a+26.55‘竖向间距
Walla=(L-a*(Na-1))/2‘横方向墙距:frmPoint.TBWalla.Value=Walla:frmPoint.TBGapb.Value=b
Wallb=(W-b*(Nb-1))/2‘竖方向墙距:frmPoint.TBWallb.Value=Wallb
Forj=0TofrmPoint.TBNumb.Value–1:scale=frmPoint.TBMax.Value/frmPoint.TBMin.Value‘自動布点
strPath=frmPoint.TBPath.Value:strBlockFullFile=strPath&strBlockName&".dwg"
Fori=0TofrmPoint.TBNuma.Value-1
InsPnt1(0)=p1+frmPoint.TBWalla.Value*1000+frmPoint.TBGapa.Value*1000*i
InsPnt1(1)=p4-frmPoint.TBWallb.Value*1000-frmPoint.TBGapb.Value*1000*j:frmPoint.Hide
Setblockrefobj1=ThisDrawing.ModelSpace.InsertBlock(InsPnt1,strBlockFullFile,scale,scale,scale,0)
Blockrefobj1.Layer=frmPoint.TBLayer.Value
InsPnt2(0)=p1+frmPoint.TBWalla.Value*1000+frmPoint.TBGapa.Value*1000*i
InsPnt2(1)=p4-frmPoint.TBWallb.Value*1000-frmPoint.TBGapb.Value*1000*j
IffrmPoint.ChBoxPcircle.Value=TrueThenSetblockrefobj2=ThisDrawing.ModelSpace.AddCircle(InsPnt2,R)
Blockrefobj2.Linetype="DASH":Blockrefobj2.Layer=“HiddenFire”‘可单独隐藏
EndIf:Nexti:Nextj
3程序执行效果
以某仓库内的一个探测区域为例,比例1:200,屋顶坡度5度,高度7.5m,修正系数1,面积约833m2,采用12个点型火灾烟感探测器,运行程序后探头布置如图4。其中探测器“保护范围圈”在单独图层中,主要用于检验探测区域是否已被探测器所覆盖,出图时可隐藏该图层。在图4中可以看出,该探测区域已被点型感烟火灾探测器的保护范围完全覆盖。
该程序输入简单参数后就能在AutoCAD平面布置图中选择不同的探测区域自动布置火灾探测器,相比使用手动绘制时需要测量、查规范、计算、布点、检查等要迅速很多。以实际的一个小型造纸项目中各单体的火灾自动报警系统设计为例,表一是分别采用该程序和单纯的AutoCAD手动布置探测器的时间对比。
从表1中可以看出,该项目在使用VBA程序进行火灾探测器平面布置时大概可节约90%的时间,且在实际运行中,无错误情况产生。
4结束语
基于VBA的火灾探测器自动布点程序的快速高效在工程项目的设计中有着很大的作用,尤其在大厂区多单体的项目中,更能体现其特点。另外,该程序可与基于VBA开发的设备数量自动统计及自动输出到Excel文件的功能相结合,对提高设计的质量及标准化水平有很大帮助。
参考文献
[1]曾洪飞,张帆,卢择临.AutoCADVBA&VB.NET开发基础与实例教程[M].北京:中国电力出版社,2008:162-171.
[2]王若慧.AutoCADVBA参数化绘图程序开发与实战编码[M].北京:水利水电出版社,2013:1-50.
[3]中华人民共和国住房和城乡建设部.GB50116火灾自动报警系统设计规范[S].北京:中国计划出版社,2013.
[4]谢安俊,乔韡韡.计算机辅助设计二次开发案例教程[M].北京:北京大学出版社,2009.
(作者单位:中国海诚工程科技股份有限公司)