国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于VBA的CAD火災(zāi)探測器自動(dòng)布點(diǎn)

2018-06-17 10:48:10王沖
科學(xué)與技術(shù) 2018年22期

王沖

摘要:由于工程設(shè)計(jì)中火災(zāi)探測器的布置使用CAD手動(dòng)繪制比較費(fèi)時(shí),為此開發(fā)了一個(gè)基于CAD內(nèi)的VBA編制的程序,通過對(duì)火災(zāi)自動(dòng)報(bào)警系統(tǒng)設(shè)計(jì)規(guī)范中各種參數(shù)的設(shè)置,可實(shí)現(xiàn)不同類型火災(zāi)探測器在平面圖中的自動(dòng)布點(diǎn),提高了工程設(shè)計(jì)的效率及準(zhǔn)確率。

關(guān)鍵詞:VBA;CAD二次開發(fā);火災(zāi)探測器;自動(dòng)布置;

引言

為了更好的保障生命和財(cái)產(chǎn)的安全,火災(zāi)自動(dòng)報(bào)警系統(tǒng)的的需求越來越廣泛?;鹁矫娌贾脠D目前主要使用AutoCAD在建筑平面圖中手動(dòng)繪制。在大型建筑物內(nèi)需要火災(zāi)探測器的區(qū)域和數(shù)量都比較多,單純的手動(dòng)繪制效率低下,耗費(fèi)大量的時(shí)間,也易產(chǎn)生錯(cuò)誤。AutoCAD內(nèi)置的VBA這一種通用的自動(dòng)化語言為更好的進(jìn)行火警工程設(shè)計(jì)提供了可能,通過VBA編程進(jìn)行二次開發(fā),可實(shí)現(xiàn)火災(zāi)探測器在平面布置圖中的自動(dòng)布點(diǎn)[1]。

1參數(shù)提取

在VBA程序設(shè)計(jì)前,首先要從火警相關(guān)設(shè)計(jì)規(guī)范及實(shí)際經(jīng)驗(yàn)中提取與火災(zāi)探測器布置相關(guān)的信息,并將其參數(shù)化,最后納入到程序中,實(shí)現(xiàn)參數(shù)化自動(dòng)繪圖[2]。

火災(zāi)探測器的布置和使用環(huán)境有很大關(guān)系,僅從建筑特征考慮,影響建筑物內(nèi)點(diǎn)型火災(zāi)探測器布置的因素主要包括了屋頂坡度、空間高度、地面面積等,其主要參數(shù)及判斷流程如圖1所示[3]。其中,θ表示屋頂坡度(度);h和R分別表示探測空間高度及探測器保護(hù)半徑(米);S和A分別表示探測區(qū)域面積及探測器的保護(hù)面積(平方米);N表示探測器數(shù)量(只)。

圖1中,屋頂坡度大于15度時(shí)的參數(shù)及判斷流程與小于等于15度時(shí)的類似,區(qū)別僅在于保護(hù)面積和保護(hù)半徑的數(shù)值不同,故在此圖中省略。

根據(jù)圖1的流程確定各輸入?yún)?shù)后,可計(jì)算出單個(gè)探測區(qū)域內(nèi)火災(zāi)探測器的數(shù)量,公式為

其中,K表示修正系數(shù),根據(jù)公共場所容納人數(shù)的數(shù)量選取,人員小于500時(shí)可選1。

點(diǎn)型火災(zāi)探測器的布置還需要考慮橫向間距a、豎向間距b以及探測器距墻距離,以期在滿足設(shè)計(jì)規(guī)范的前提下,更大限度使用探測器保護(hù)范圍,節(jié)約投資成本。

以保護(hù)面積為80m2,保護(hù)半徑為6.7m的點(diǎn)型感煙火災(zāi)探測器為例,其探測器安裝間距如圖2所示。

其中橫軸a表示探測器橫向間距,縱軸b表示探測器豎向間距。探測器間距在Y和Z點(diǎn)之間的曲線范圍內(nèi),保護(hù)面積可得到充分利用。經(jīng)計(jì)算,Y和Z點(diǎn)之間曲線方程為:

,相應(yīng)的限制條件為: ;

根據(jù)規(guī)范,點(diǎn)型探測器距墻不應(yīng)小于0.5米,一般不大于探測器安裝間距的1/2。

2界面及程序

在CAD中運(yùn)行“VBAMAN”可打開VBA編輯器,新建FadTools.dvb的工程文件,該文件由AutoCAD對(duì)象、窗體、模塊三大部分組成[4]。插入用戶窗體并編輯,如圖3所示。

以圖1中屋頂坡度θ小于等于15度時(shí)選用點(diǎn)型感煙火災(zāi)探測器為例,主要源代碼如下:

‘在平面布置圖中選取探測區(qū)域

varPnt1=ThisDrawing.Utility.GetPoint(,vbNewLine&"拾取探測區(qū)域的一個(gè)角點(diǎn):")

varPnt2=ThisDrawing.Utility.GetCorner(varPnt1,vbNewLine&"拾取探測區(qū)域的另一個(gè)角點(diǎn):")

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‘計(jì)算探測器數(shù)量

IffrmPoint.TBHigh.Value>12ThenMsgBox“空間高度過高,感煙探測器不適用”

ElsestrBlockName="點(diǎn)型感煙火災(zāi)探測器"

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‘修正系數(shù)K:N=frmPoint.TBArea.Value/frmPoint.Parea.Value/K

IfN>Int(N)ThenN=Int(N)+1‘有小數(shù)時(shí)加一取整:EndIf:frmPoint.TBNumber.Value=N

‘Textbox輸入值改變時(shí)的動(dòng)態(tài)顯示,以A=80,R=6700的點(diǎn)型感煙探測器為例

L=frmPoint.TBLength.Value‘長度:W=frmPoint.TBWidth.Value‘寬度

Na=frmPoint.TBNuma.Value‘橫方向探測器數(shù)量:amin=L/Na:amax=11.5

frmPoint.LabelNa.Caption="范圍:"&amin&"to"&amax‘顯示a有效范圍選擇合適值

Nb=Int(N/Na)+1:frmPoint.TBNumb.Value=Nb‘豎方向探測器數(shù)量

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‘自動(dòng)布點(diǎn)

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”‘可單獨(dú)隱藏

EndIf:Nexti:Nextj

3程序執(zhí)行效果

以某倉庫內(nèi)的一個(gè)探測區(qū)域?yàn)槔?,比?:200,屋頂坡度5度,高度7.5m,修正系數(shù)1,面積約833m2,采用12個(gè)點(diǎn)型火災(zāi)煙感探測器,運(yùn)行程序后探頭布置如圖4。其中探測器“保護(hù)范圍圈”在單獨(dú)圖層中,主要用于檢驗(yàn)探測區(qū)域是否已被探測器所覆蓋,出圖時(shí)可隱藏該圖層。在圖4中可以看出,該探測區(qū)域已被點(diǎn)型感煙火災(zāi)探測器的保護(hù)范圍完全覆蓋。

該程序輸入簡單參數(shù)后就能在AutoCAD平面布置圖中選擇不同的探測區(qū)域自動(dòng)布置火災(zāi)探測器,相比使用手動(dòng)繪制時(shí)需要測量、查規(guī)范、計(jì)算、布點(diǎn)、檢查等要迅速很多。以實(shí)際的一個(gè)小型造紙項(xiàng)目中各單體的火災(zāi)自動(dòng)報(bào)警系統(tǒng)設(shè)計(jì)為例,表一是分別采用該程序和單純的AutoCAD手動(dòng)布置探測器的時(shí)間對(duì)比。

從表1中可以看出,該項(xiàng)目在使用VBA程序進(jìn)行火災(zāi)探測器平面布置時(shí)大概可節(jié)約90%的時(shí)間,且在實(shí)際運(yùn)行中,無錯(cuò)誤情況產(chǎn)生。

4結(jié)束語

基于VBA的火災(zāi)探測器自動(dòng)布點(diǎn)程序的快速高效在工程項(xiàng)目的設(shè)計(jì)中有著很大的作用,尤其在大廠區(qū)多單體的項(xiàng)目中,更能體現(xiàn)其特點(diǎn)。另外,該程序可與基于VBA開發(fā)的設(shè)備數(shù)量自動(dòng)統(tǒng)計(jì)及自動(dòng)輸出到Excel文件的功能相結(jié)合,對(duì)提高設(shè)計(jì)的質(zhì)量及標(biāo)準(zhǔn)化水平有很大幫助。

參考文獻(xiàn)

[1]曾洪飛,張帆,盧擇臨.AutoCADVBA&VB.NET開發(fā)基礎(chǔ)與實(shí)例教程[M].北京:中國電力出版社,2008:162-171.

[2]王若慧.AutoCADVBA參數(shù)化繪圖程序開發(fā)與實(shí)戰(zhàn)編碼[M].北京:水利水電出版社,2013:1-50.

[3]中華人民共和國住房和城鄉(xiāng)建設(shè)部.GB50116火災(zāi)自動(dòng)報(bào)警系統(tǒng)設(shè)計(jì)規(guī)范[S].北京:中國計(jì)劃出版社,2013.

[4]謝安俊,喬韡韡.計(jì)算機(jī)輔助設(shè)計(jì)二次開發(fā)案例教程[M].北京:北京大學(xué)出版社,2009.

(作者單位:中國海誠工程科技股份有限公司)

荥经县| 瑞安市| 太保市| 信宜市| 城口县| 邵东县| 沈阳市| 汽车| 洛浦县| 兴业县| 深水埗区| 寿宁县| 于田县| 克拉玛依市| 凌云县| 佛教| 公主岭市| 平远县| 吉首市| 乐山市| 花垣县| 德兴市| 罗城| 定结县| 郧西县| 大石桥市| 体育| 建瓯市| 屏东县| 罗山县| 博野县| 荔波县| 新沂市| 贺州市| 敦煌市| 龙岩市| 五华县| 曲阳县| 定州市| 肃南| 平武县|