②조적식구조인 내력벽의 두께는 그 건축물의 층수·높이 및 벽의 길이에 따라 각각 다음 표의 두께 이상으로 하되, 조적재가 벽돌인 경우에는 당해 벽높이의 20분의 1이상, 블록인 경우에는 당해 벽높이의 16분의 1이상으로 하여야 한다.
┌───────┬─────────────┬─────────────┬─────────────┐
│건축물의 높이 │5미터 미만 │5미터 이상 11미터 미만
//건축물의 구조기준 등에 관한 규칙 32조 (내력벽의 두께) 2항
Check(RSSB_32_2){
getResult(RSSB_32_7) = TRUE AND getResult(RSSB_32_3) = TRUE AND getResult(RSSB_28_1) = TRUE AND getResult(RSSB_3_3) = TRUE AND IF CS THEN KS
}
CS {
getResult(RSSB_33_3)=True
}
KS{
//HW means Height of wall
Wall myWall{
isObjectProperty(Wall.isLoadBearingWall) = TRUE
}
HW=getObjectHeight(myWall)
IF isObjectProperty(Wall.Structure.isMansoryStructure)=TRUE
IF getBuildingHeight()<5 m
IF getFloorNumber(myWall)=1
IF getObjectLength(myWall)<8 m
THEN getObjectThickness(myWall)>= 150 mm
ELSE THEN getObjectThickness(myWall)>= 190 mm
END IF
END IF
ELSE IF getBuildingHeight()>=5 m
getBuildingHeight()<11 m
getFloorNumber(myWall)=1
OR getFloorNumber(myWall)=2
THEN getObjectThickness(myWall)>= 190 mm
ELSE IF getBuildingHeight()>=11 m
IF getObjectLength(myWall)<8 m
getFloorNumber(myWall)=1
OR getFloorNumber(myWall)=2
THEN getObjectThickness(myWall)>=190 mm
ELSE IF getFloorNumber(myWall)=1
THEN getObjectThickness(myWall)>=290 mm
ELSE IF getFloorNumber(myWall)=2
THEN getObjectThickness(myWall)>=190 mm
END IF
END IF
IF getObjectMaterial(myWall)="벽돌"
THEN getObjectThickness(myWall)>= HW/20
ELSE IF getObjectMaterial(myWall)="Block"
THEN getObjectThickness(myWall)>= HW/16
END IF
END IF
}
제34조(테두리보) 건축물의 각층의 조적식구조인 내력벽 위에는 그 춤이 벽두께의 1.5배 이상인 철골구조 또는 철근콘크리트구조의 테두리보를 설치하여야 한다. 다만, 1층인 건축물로서 벽두께가 벽의 높이의 16분의 1이상이거나 벽길이가 5미터 이하인 경우에는 목조의 테두리보를 설치할 수 있다.
//건축물의 구조기준 등에 관한 규칙 34조 (테두리보)
Check(RSSB_34){
getResult(RSSB_28_1) = TRUE AND getResult(RSSB_3_3) = TRUE AND IF CS THEN KS
}
CS{
Wall myWall{
isObjectProperty(Wall.isLoadBearingWall)=True
}
isObjectProperty(myWall.Structure.isMansoryStructure)= True
}
KS{
WD=getObjectProperty(myWall.depth)
WH=getObjectProperty(myWall.height)
WallGirder myWallGirder{
getObjectProperty(WallGirder.height)>=1.5*WD
}
isInstalled(myWallGrider, myWall, Top)=True
IF getBuildingStoriesCount()=1
(WD>=WH/16
OR getObjectProperty(myWall.length)<=5 m
)
THEN getObjectProperty(myWallGrider.Structure.materialType)="Timber"
ELSE THEN getObjectProperty(myWallGrider.Structure.materialType)="SteelFrame"
OR getObjectProperty(myWallGrider.Structure.materialType)="ReinforcedConcrete"
END IF
}
제36조(벽의 홈) 조적식구조인 벽에 그 층의 높이의 4분의 3이상인 연속한 세로홈을 설치하는 경우에는 그 홈의 깊이는 벽의 두께의 3분의 1이하로 하고, 가로홈을 설치하는 경우에는 그 홈의 깊이는 벽의 두께의 3분의 1이하로 하되, 길이는 3미터 이하로 하여야 한다.
//건축물의 구조기준 등에 관한 규칙 36조 (벽의 홈)
Check(RSSB_36){
getResult(RSSB_28_2) = TRUE AND getResult(RSSB_28_1) = TRUE AND getResult(RSSB_3_3) = TRUE AND IF CS THEN KS
}
CS{
Wall myWall{
isObjectProperty(Wall.Structure.isMansoryStructure)=True
}
isInstalled(Channel, myWall)=True
}
KS{
WD=getObjectProperty(myWall.depth)
IF getObjectProperty(Channel.shapeType)="VerticleChannel"
FH=getObjectHeight(Floor.Space)
getObjectProperty(Channel.length)>=FH*3/4
THEN getObjectProperty(Channel.depth)<= WD/3
ELSE IF getObjectProperty(Channel.shapeType)="HorizontalChannel"
THEN getObjectProperty(Channel.depth)<= WD/3
getObjectProperty(Channel.length)<= 3 m
END IF
}
②높이 4미터 이하이고, 연면적 20제곱미터 이하인 건축물에 대하여는 제42조 및 제45조의 규정에 한하여 이를 적용한다.
//건축물의 구조기준 등에 관한 규칙 41조 (적용범위) 2항
Check(RSSB_41_2){
getResult(RSSB_41_1) = TRUE AND getResult(RSSB_3_3) = TRUE AND IF CS THEN KS
}
CS{
getBuildingHeight()<=4 m
getGrossFloorArea() <=20 m2
}
KS{
getResult(RSSB_42)=True
getResult(RSSB_45)=True
}
②높이가 4미터 이하이고 연면적이 30제곱미터 이하인 건축물이나 높이가 3미터 이하인 담에 대하여는 제49조 및 제51조의 규정에 한하여 이를 적용한다.
//건축물의 구조기준 등에 관한 규칙 47조 (적용범위) 2항
Check(RSSB_47_2){
getResult(RSSB_3_3) = TRUE AND IF CS THEN KS
}
CS{
getBuildingHeight()<=4 m
getGrossFloorArea() <=30 m2
OR getObjectHeight(Fence)<= 3m
}
KS{
getResult(RSSB_51)=True
}
1. 내력벽의 최소두께는 벽의 최상단에서 4.5미터까지는 150밀리미터 이상이어야 하며, 각 3미터 내려감에 따라 10밀리미터씩의 비율로 증가시켜야 한다. 다만, 두께가 120밀리미터 이상의 경우로서 구조계산에 의하여 안전하다고 확인된 경우에는 그러하지 아니하다.
//건축물의 구조기준 등에 관한 규칙 54조 (내력벽의 구조) 1호
Check(RSSB_54_0_1){
IF !CS THEN KS
}
Wall myWall{
isObjectProperty(Wall.isLoadBearingWall)=True
}
CS{
getWallThickness(myWall)>=120 mmm
}
KS{
H1=getObjectHeight(myWall)
H2= H1-4.5 m
getWallThickness(myWall,H2,H1)>=150 mm
H3=getFloorElevationHeight(myWall.Floor)
getWallThickness(myWall,H3,H2,3 m, a)>=150+10*a
}
//건축물의 설비기준 등에 관한 규칙 9조 (비상용승강기를 설치하지 아니할 수 있는 건축물) 1호
Check(RFB_9_0_1){
KS
}
KS{
Floor myFloor{
getObjectHeight(Floor)>31 m
}
hasObject(myFloor, Room)=FALSE
}
3. 높이 31미터를 넘는 층수가 4개층이하로서 당해 각층의 바닥면적의 합계 200제곱미터(벽 및 반자가 실내에 접하는 부분의 마감을 불연재료로 한 경우에는 500제곱미터)이내마다 방화구획으로 구획한 건축물
//건축물의 설비기준 등에 관한 규칙 9조 (비상용승강기를 설치하지 아니할 수 있는 건축물) 3호
Check(RFB_9_0_3){
KS
}
KS{
getBuildingHeight()>31 m
getBuildingStoriesCount()<=4
IF isObjectProperty(Wall.InteriorFinish.Material.nonCombustibility)=TRUE
isObjectProperty(CeilingCovering.InteriorFinish.Material.nonCombustibility)=TRUE
THEN isFirePartition(Floor, a,500)=TRUE
ELSE THEN isFirePartition(Floor, a,200)=TRUE
END IF
}
5. 측면 낙뢰를 방지하기 위하여 높이가 60미터를 초과하는 건축물 등에는 지면에서 건축물 높이의 5분의 4가 되는 지점부터 최상단부분까지의 측면에 수뢰부를 설치하여야 하며, 지표레벨에서 최상단부의 높이가 150미터를 초과하는 건축물은 120미터 지점부터 최상단부분까지의 측면에 수뢰부를 설치할 것. 다만, 건축물의 외벽이 금속부재(部材)로 마감되고, 금속부재 상호간에 제4호 후단에 적합한 전기적 연속성이 보장되며 피뢰시스템레벨 등급에 적합하게 설치하여
//건축물의 설비기준 등에 관한 규칙 20 (피뢰설비) 5호
Check(RFB_20_0_5){
IF(CS1 THEN KS1) OR (CS2 THEN KS2)
}
CS1{
getBuildingHeight() > 60m
}
KS1{
BH1 = getBuildingHeight()
isInstalled(Terminal, Building, a, side) = TRUE
getObjectVerticalDistance(Ground, Terminal, a) >= BH1 * 4/5
getObjectVerticalDistance(Ground, Terminal, a) < BH1
}
CS2{
getBuildingHeight() > 150m
}
KS2{
BH2 = getBuildingHeight()
isInstalled(Terminal, Building, a, side) = TRUE
getObjectVerticalDistance(Ground, Terminal, a) >= 120m
getObjectVerticalDistance(Ground, Terminal, a) < BH2
}
1. 영 제46조제1항의 규정에 의하여 건축물에 방화구획이 설치된 경우에는 그 구획마다 1개소 이상의 배연창을 설치하되, 배연창의 상변과 천장 또는 반자로부터 수직거리가 0.9미터 이내일 것. 다만, 반자높이가 바닥으로부터 3미터 이상인 경우에는 배연창의 하변이 바닥으로부터 2.1미터 이상의 위치에 놓이도록 설치하여야 한다.
//건축물의 설비기준 등에 관한 규칙 14조 (배연설비) 1항 1호
Check(RFB_14_1_1){
IF (CS) THEN KS1 AND KS2
}
Zone myZone{
isObjectProperty(Zone.isFirePartition) = TRUE
}
CS{
isObjectProperty(Building.isFirePartition) = TRUE
}
KS1{
hasSpace(myZone, SmokeVentilator) = TRUE
getObjectVerticalDistance(SmokeVentilator, Ceiling) < 0.9 m
OR getObjectVerticalDistance(SmokeVentilator, CeilingCovering) < 0.9 m
}
KS2{
IF{
getSpaceHeight(myZone, b) >= 3 m
}
THEN{
getObjectVerticalDistance(SmokeVentilator, FloorSlab) >= 2.1 m
}
}
//스프링클러설비의 화재안전기준 10조 (헤드) 8항
check(NFSC103_10_8){
(IF !(CS1) THEN KS1) or (IF CS1 THEN KS2)
}
KS1{
Beam myBeam{
hasObject(SpecificFireFightingBuilding, Beam) = TRUE
}
getElementDistance(myBeam, SprinklerHead, 1) = TRUE
//Table
getElementDistance(SprinklerHead.Deflector, Beam, a) + getObjectWidth(SprinklerHead.Deflector)*0.5 = SBD
getObjectVerticalDistance(SprinklerHead.Deflector, Beam.BottomSurface, a) = SHD
IF SBD < 0.75 m
THEN SHD < getObjectHeight(Beam.BottomSurface)
IF 0.75 m <= SBD < 1 m
THEN SHD < 0.1 m
IF 1 m <= SBD < 1.5 m
THEN SHD < 0.15 m
IF SBD >= 1.5 m
THEN SHD < 0.3 m
}
CS1{
getObjectDistance(Ceiling.Surface, Beam.BottomSurface) > 55 cm
getObjectDistance(Beam.BottomSideSurface, SprinklerHead) = OD
OD <= getElementDistance(SprinklerHead, c)*0.5
}
KS2{
getObjectDistance(SprinklerHead, SprinklerHead.AttachingToSurface) <= 55 cm
}
1. 높이가 3미터를 넘는 계단에는 높이 3미터이내마다 너비 1.2미터 이상의 계단참을 설치할 것
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조 (계단의 설치기준) 1항1호
check(REFB_15_1_1){
IF CS THEN KS
}
CS{
getObjectHeight(Stair)>3 m
}
KS{
isExist(StairLanding )= TRUE
getPaceWidth(StairLanding>=1.2 m
getObjectCount(StairLanding)>=getObjectCount(getObjectCount(StairLanding))/3
IF getObjectCount(StairLanding)>1
THEN getObjectVerticalDistance(StairLanding ,StairLanding)>3 m
END IF
}
def Check():
for building in SELECT('building'):
for stair in building.SELECT('stair'):
st_h = stair.SELECT('height').UNIT('m')
st_h_num = height.NUMBER()
if st_h_num >= 3:
elv1 = stair.SELECT('elevation').UNIT('m').NUMBER()
elv2 = elv1
for width in stair.SELECT("clear landing width"):
elv2 = width.SELECT('elevation').UNIT('m').NUMBER()
if elv2 - elv1 > 3:
stair.ERROR('3m 이내마다 계단참이 존재하지 않습니다.')
breaker = True
break
elv1 = elv2
w = width.UNIT('m').NUMBER()
if w < min_w:
width.ERROR('계단참 유효너비: ' + str(w) + ' < ' + str(min_w))
else:
width.SUCCESS('계단참 유효너비: ' + str(w) + ' >= ' + str(min_w))
2. 높이가 1미터를 넘는 계단 및 계단참의 양옆에는 난간(벽 또는 이에 대치되는 것을 포함한다)을 설치할 것
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조 (계단의 설치기준) 1항2호
check(REFB_15_1_2){
KS
}
KS{
IF getObjectHeight(Stair)>1 m
OR getObjectHeight(StairLanding)>1 m)
THEN isExist(Railing)=TRUE
END IF
}
def Check():
for building in SELECT('building'):
for stair in building.SELECT('stair'):
st_h = stair.SELECT('height').UNIT('m')
st_h_num = height.NUMBER()
if st_h_num >= 1:
if stair.SELECT('rail').COUNT() == 0:
stair.ERROR('난간이 설치되지 않았습니다.')
else:
stair.SUCCESS('난간이 설치되어 있습니다.')
3. 너비가 3미터를 넘는 계단에는 계단의 중간에 너비 3미터 이내마다 난간을 설치할 것. 다만, 계단의 단높이가 15센티미터 이하이고, 계단의 단너비가 30센티미터 이상인 경우에는 그러하지 아니하다.
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조 (계단의 설치기준) 1항3호
check(REFB_15_1_3){
IF !CS THEN KS
}
CS{
getStairStepHeight()<=15 cm
getStairStepWidth()>=30 cm
}
KS{
IF getObjectWidth(Stair)>=3 m
THEN hasObject(Stair, Railing) = TRUE
N=getObjectWidth(Stair)/3
getObjectCount(Railing)>=N
IF N>1
THEN getObjectDistance(Railing,Railing)<3 m
END IF
END IF
}
def Check():
for building in SELECT('building'):
for stair in building.SELECT('stair'):
st_w = stair.SELECT('width').UNIT('m')
st_w_num = height.NUMBER()
if st_w_num >= 3:
for riser_height in stair.SELECT('riser height'):
riser_h_num = riser_height.UNIT('mm').NUMBER()
if riser_h_num <= 15:
braker = True
break
for riser_width in stair.SELECT('riser width'):
riser_w_num = riser_width.UNIT('mm').NUMBER()
if riser_w_num >= 30:
braker = True
break
if braker is True:
break
else:
pass
# 3미터 이내마다 난간 설치 확인을 위하여 난간간 간격 파악 필요
1. 초등학교의 계단인 경우에는 계단 및 계단참의 너비는 150센티미터 이상, 단높이는 16센티미터 이하, 단너비는 26센티미터 이상으로 할 것
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조 (계단의 설치기준) 2항1호
check(REFB_15_2_1){
IF CS THEN KS
}
CS{
getBuildingUsage()="ElementarySchool"
}
KS{
getObjectWidth(Stair)>= 150 cm
getObjectWidth(StairLanding)>150 cm
getObjectProperty(Stair.riserHeight)>=16 cm
getObjectProperty(Stair.riserWidth)>=26 cm
}
def Check():
for building in SELECT('building'):
bldg_use = building.SELECT('building type').STRING()
sub_use = building.SELECT('prop', '세부용도').STRING()
min_clear_w = 0.6
max_riser_h = 0.0
min_tread_w = 0.0
if bldg_use == '교육연구시설':
min_clear_w = 1.5
min_tread_w = 0.26
if sub_use == '초등학교':
max_riser_h = 0.16
elif sub_use in ['중학교', '고등학교']:
max_riser_h = 0.18
elif (bldg_use == '문화 및 집회시설' and sub_use in ['공연장', '집회장', '관람장']) or (bldg_use == '판매시설'):
min_clear_w = 1.2
else:
min_clear_w = 0.6
for storey in building.SELECT('storey'):
for stair in storey.SELECT('stair'):
clear_width = stair.SELECT('clear width').UNIT('m')
clear_w = clear_width.NUMBER()
if clear_w < min_clear_w:
clear_width.ERROR('유효너비: ' + str(clear_w) + ' < ' + str(min_clear_w))
else:
clear_width.SUCCESS('유효너비: ' + str(clear_w) + ' >= ' + str(min_clear_w))
if max_riser_h > 0:
for riser_height in stair.SELECT('riser height'):
riser_h = riser_height.UNIT('m').NUMBER()
if riser_h > max_riser_h:
riser_height.ERROR('단높이: ' + str(riser_h) + ' > ' + str(max_riser_h))
break
if min_tread_w > 0:
for tread_width in stair.SELECT('tread width'):
tread_w = tread_width.UNIT('m').NUMBER()
if tread_w < min_tread_w:
tread_width.ERROR('단너비: ' + str(tread_w) + ' < ' + str(min_tread_w))
break
2. 중·고등학교의 계단인 경우에는 계단 및 계단참의 너비는 150센티미터 이상, 단높이는 18센티미터 이하, 단너비는 26센티미터 이상으로 할 것
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조 (계단의 설치기준) 2항2호
check(REFB_15_2_2){
IF CS THEN KS
}
CS{
getBuildingUsage()="MiddleSchool"
OR getBuildingUsage()="HighSchool"
}
KS{
getObjectWidth(Stair)>=150 cm
getObjectWidth(StairLanding)>150 cm
getObjectProperty(Stair.riserHeight)>=18 cm
getObjectProperty(Stair.riserWidth)>=26 cm
}
def Check():
for building in SELECT('building'):
bldg_use = building.SELECT('building type').STRING()
sub_use = building.SELECT('prop', '세부용도').STRING()
min_clear_w = 0.6
max_riser_h = 0.0
min_tread_w = 0.0
if bldg_use == '교육연구시설':
min_clear_w = 1.5
min_tread_w = 0.26
if sub_use == '초등학교':
max_riser_h = 0.16
elif sub_use in ['중학교', '고등학교']:
max_riser_h = 0.18
elif (bldg_use == '문화 및 집회시설' and sub_use in ['공연장', '집회장', '관람장']) or (bldg_use == '판매시설'):
min_clear_w = 1.2
else:
min_clear_w = 0.6
for storey in building.SELECT('storey'):
for stair in storey.SELECT('stair'):
clear_width = stair.SELECT('clear width').UNIT('m')
clear_w = clear_width.NUMBER()
if clear_w < min_clear_w:
clear_width.ERROR('유효너비: ' + str(clear_w) + ' < ' + str(min_clear_w))
else:
clear_width.SUCCESS('유효너비: ' + str(clear_w) + ' >= ' + str(min_clear_w))
if max_riser_h > 0:
for riser_height in stair.SELECT('riser height'):
riser_h = riser_height.UNIT('m').NUMBER()
if riser_h > max_riser_h:
riser_height.ERROR('단높이: ' + str(riser_h) + ' > ' + str(max_riser_h))
break
if min_tread_w > 0:
for tread_width in stair.SELECT('tread width'):
tread_w = tread_width.UNIT('m').NUMBER()
if tread_w < min_tread_w:
tread_width.ERROR('단너비: ' + str(tread_w) + ' < ' + str(min_tread_w))
break
①영 제50조의 규정에 의하여 설치하는 거실의 반자(반자가 없는 경우에는 보 또는 바로 윗층의 바닥판의 밑면 기타 이와 유사한 것을 말한다. 이하같다)는 그 높이를 2.1미터 이상으로 하여야 한다.
// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 16조 (거실의 반자높이) 1항
check(REFB_16_1){
IF (CS) THEN KS
}
CS{
getResult(REFB_16_2) = FALSE
}
KS{
getSpaceHeight(Room, b) >= 2.1m
}
min_h = 2.1
min_h_label = '최소 반자 높이'
def Check():
for building in SELECT('building'):
bldg_use = building.SELECT('building type').STRING()
sub_use = building.SELECT('prop', '세부용도').STRING()
if not ((bldg_use in ['단독주택', '공동주택', '제1종 근린생활시설', '제2종 근린생활시설', '판매시설', '운수시설', '의료시설', '교육연구시설', '노유자시설', '수련시설', '운동시설', '업무시설', '숙박시설', '자동차 관련 시설', '교정 및 군사시설', '방송통신시설', '발전시설', '관광 휴게시설', '야영장 시설'])
or (bldg_use == '위락시설' and sub_use != '유흥주점')):
continue
for space in building.SELECT('space'):
dist = space.SELECT('ceiling height')
height = dist.UNIT('m').NUMBER()
if height < min_h:
dist.ERROR('반자 높이 : ' + str(height) + ' < ' + str(min_h))
else:
dist.SUCCESS('반자 높이 : ' + str(height) + ' >= ' + str(min_h))
①영 제52조의 규정에 의하여 건축물의 최하층에 있는 거실바닥의 높이는 지표면으로부터 45센티미터 이상으로 하여야 한다. 다만, 지표면을 콘크리트바닥으로 설치하는 등 방습을 위한 조치를 하는 경우에는 그러하지 아니하다.
// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 18조 (거실등의 방습) 1항
Check(REFB_18_1){
IF !CS THEN KS}
KS{
getObjectHeight(getFloor(BottomFloor))>=45CM
}
CS {
isObjectProperty(Ground.Surface.isDampProof)=TRUE
}
3. 방화벽에 설치하는 출입문의 너비 및 높이는 각각 2.5미터 이하로 하고, 해당 출입문에는 제26조에 따른 갑종방화문을 설치할 것
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 21조 (방화벽의 구조) 1항 3호
Check(REFB_21_1_3){
KS
}
KS{
Door myDoor{
isObjectProperty(Door.isEntrance)=True
isInstalled(Door, myWall)=True
}
getObjectWidth(myDoor)<=2.5 m
getObjectHeight(myDoor)<=2.5 m
isObjectProperty(myDoor.isStrictFireproofDoor)=True
}
1. 비상탈출구의 유효너비는 0.75미터 이상으로 하고, 유효높이는 1.5미터 이상으로 할 것
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 25조 (지하층의 구조) 2항 1호
check(REFB_25_2_1){
Door myDoor{
Door.functionType = "Emergency"
Door.Floor.number < 0
}
getObjectWidth(myDoor, a) >= 0.75 m
getObjectHeight(myDoor) >= 1.5 m
}
// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 8조의2 (직통계단의 설치기준) 3항8호
check(REFB_8-2_3_8){
Zone myZone {
geObjectProperty(Zone.isEgressSafetyZone) = TRUE
}
getSpaceHeight(myZone)>=2.1 m
}
④ 영 제51조제3항에서 "국토교통부령으로정하는 기준"이란 높이 1.2미터 이상의 난간이나 그 밖에 이와 유사한 추락방지를 위한 안전시설을 말한다. <신설 2010.4.7, 2013.3.23>
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 17조 (채광 및 환기를 위한 창문등) 4항
check(REFB_17_4){
getObjectHeight(Railing) >= 1.2 m
OR getObjectHeight(FallPreventionSafetyFacility) >= 1.2 m
}
② 방화지구 안의 공작물로서 간판, 광고탑, 그 밖에 대통령령으로 정하는 공작물 중 건축물의 지붕 위에 설치하는 공작물이나 높이 3미터 이상의 공작물은 주요부를 불연(不燃)재료로 하여야 한다.
//건축법 51조 (방화지구 안의 건축물) 2항
Check(BA_51_2){
IF CS THEN KS
}
CS{
getResult(LPUA_37_1_4)=True
}
KS{
Construction myConstruction {
isInstalled(Construction , Rooftop)=True
OR Construction.height>=3 m
}
isObjectProperty(myConstruction.MainStructuralPart.Material.nonCombustibility)=True
}
① 법 제64조제2항에 따라 높이 31미터를 넘는 건축물에는 다음 각 호의 기준에 따른 대수 이상의 비상용 승강기(비상용 승강기의 승강장 및 승강로를 포함한다. 이하 이 조에서 같다)를 설치하여야 한다. 다만, 법 제64조제1항에 따라 설치되는 승강기를 비상용 승강기의 구조로 하는 경우에는 그러하지 아니하다.
//건축법 시행령 90조 (비상용 승강기의 설치) 1항
Check(EDBA_90_1){
IF (!CS1 AND CS2) THEN KS
}
CS1{
getResult(BA_64_1)=TRUE
isObjectProperty(Elevator.isEmergency)=TRUE
}
CS2{
getBuildingHeight()>31 m
}
KS{
getResult(EDBA_90_1_1)=TRUE
getReslut(EDBA_90_1_2)=TRUE
}
2. 높이 31미터를 넘는 각 층의 바닥면적 중 최대 바닥면적이 1천500제곱미터를 넘는 건축물: 1대에 1천500제곱미터를 넘는 3천 제곱미터 이내마다 1대씩 더한 대수 이상
//건축법 시행령 90조 (비상용 승강기의 설치) 1항2호
Check(EDBA_1_2){
IF CS THEN KS
}
Floor myFloor{
getObjectHeight(Floor)>31 m
}
CS{
getFloorArea(myFloor)>1500 m2
}
KS{
FA=getFloorArea(myFloor) //FA means floor area
IF FA>=4500 m2
THEN {(FA-1500)/3000}+1 < getObjectCount(EmergencyElevator)
getObjectCount(EmergencyElevator) < {(FA-1500)/3000}+2
END IF
}
def Check():
for building in SELECT('building'):
for space in building.SELECT('space'):
dist = space.SELECT('ceiling height')
height = dist.UNIT('m').NUMBER()
return height
1. 장애인등의 통행이 가능한 접근로
가. 유효폭 및 활동공간
(1) 휠체어사용자가 통행할 수 있도록 접근로의 유효폭은 1.2미터 이상으로 하여야 한다.
(2) 휠체어사용자가 다른 휠체어 또는 유모차 등과 교행할 수 있도록 50미터마다 1.5미터×1.5미터 이상의 교행구역을 설치할 수 있다.
(3) 경사진 접근로가 연속될 경우에는 휠체어사용자가 휴식할 수 있도록 30미터마다 1.5미터×1.5미터 이상의 수평면으로 된 참을 설치할
//장애인ㆍ노인ㆍ임산부 등의 편의증진보장에 관한 법률 시행규칙 별표1 편의시설의 구조·재질등에 관한 세부기준(제2조제1항관련)
Check(ERCDAPA_2_1_*_1_4_나_1){
IF (CS1 THEN KS1) OR (CS2 THEN KS2)
ParkingUnit myParkingUnit{
isObjectProperty(ParkingUnit.isParallelParking) = TRUE
}
CS1{
isObjectProperty(ParkingUnit.isParallelParking) = TRUE
}
KS1{
getObjectWidth(ParkingLotArea.isHandicapParking, a) >= 3.3 m
getElementLength(ParkingLotArea.isHandicapParking) >= 5 m
}
CS2{
isObjectProperty(ParkingLotArea.isParallelParking) = FALSE
}
KS2{
getObjectWidth(ParkingLotArea.isHandicapParking, a) >= 2 m
getElementLength(ParkingLotArea.isHandicapParking) >= 6 m
}
}
check(ERCDAPA_2_1_*_1_4_나_2){
getObjectGradient(ParkingSpace.Floor) <= 1/50
}
check(ERCDAPA_2_1_*_1_6_가_1){
Door myDoor1{
isObjectProperty(Door.isEntrance) = TRUE
}
Door myDoor2{
isObjectProperty(Door.isEntrance) = TRUE
getObject(Door.isEntrance) != getObject(myDoor1)
}
getObjectWidth(Door.isEntrance) >= 0.8 m
isEgressDirection(myDoor1) = isEgressDirection(myDoor2)
getObjectDistance(myDoor1, myDoor2) >= 1.2 m
}
check(ERCDAPA_2_1_*_1_6_가_2){
isObjectProperty(Door.isAutomatic) = FALSE
isObjectProperty(Door.isSillFree) = TRUE
}
check(ERCDAPA_2_1_*_1_8_가_2){
getObjectVerticalDistance(FloorSurface,Door.Bottom)
}
check(ERCDAPA_2_1_*_1_8_나){
Stair myStair{
isObjectProperty(Stair.isEscape) = TRUE
isObjectProperty(Stair.isOutdoor) = TRUE
}
getObjectWidth(myStair) >= 0.9 m
getObjectWidth(myStair.StairLanding) >= 0.9 m
Stair myStair2{
isObjectProperty(Stair.isEscape) = FALSE
isObjectProperty(Stair.isOutdoor) = FALSE
}
getObjectWidth(myStair2) >= 1.2 m
getObjectWidth(myStair2.StairLanding) >= 1.2 m
}
check(ERCDAPA_2_1_*_1_8_다_1){
hasObject(Stair, VerticalSurfaceStair) = TRUE
}
check(ERCDAPA_2_1_*_1_8_다_2){
getObjectWidth(Stair.threadWidth) >= 0.28 m
getObjectHeight(Stair.riserHeight) <= 0.18m
}
check(ERCDAPA_2_1_*_1_8_다_3){
getObjectGradient(Stair.riserGradient) >= 60
getObjectLength(Stair.nosingLength) < 3 cm
}
2. 기계식주차장치 출입구의 크기는 중형 기계식주차장의 경우에는 너비 2.3미터 이상, 높이 1.6미터 이상으로 하여야 하고, 대형 기계식주차장의 경우에는 너비 2.4미터 이상, 높이 1.9미터 이상으로 하여야 한다. 다만, 사람이 통행하는 기계식주차장치 출입구의 높이는 1.8미터 이상으로 한다.
다. 경사로의 차로너비는 직선형인 경우에는 3.3미터 이상(2차선의 경우에는 6미터 이상)으로 하고, 곡선형인 경우에는 3.6미터이상(2차선의 경우에는 6.5미터 이상)으로 하며, 경사로의 양측벽면으로부터 30센티미터 이상의 지점에 높이 10센티미터 이상 15센티미터 미만의 연석을 설치하여야 한다. 이 경우 연석 부분은 차로의 너비에 포함되는 것으로 본다.