//건축물의 설비기준 등에 관한 규칙 9조 (비상용승강기를 설치하지 아니할 수 있는 건축물) 1호
Check(RFB_9_0_1){
KS
}
KS{
Floor myFloor{
getObjectHeight(Floor)>31 m
}
hasObject(myFloor, Room)=FALSE
}
2. 배연창의 유효면적은 별표 2의 산정기준에 의하여 산정된 면적이 1제곱미터 이상으로서 그 면적의 합계가 당해 건축물의 바닥면적(영 제46조제1항 또는 제3항의 규정에 의하여 방화구획이 설치된 경우에는 그 구획된 부분의 바닥면적을 말한다)의 100분의 1이상일 것. 이 경우 바닥면적의 산정에 있어서 거실바닥면적의 20분의 1 이상으로 환기창을 설치한 거실의 면적은 이에 산입하지 아니한다.
//건축물의 설비기준 등에 관한 규칙 14조 (배연설비) 1항 2호
Check(RFB_14_1_2){
IF (CS) THEN (KS1 OR KS2)
}
Zone myZone{
isObjectProperty(Zone.isFirePartition) = TRUE
}
Space mySpace{
getSpaceUsage(Space) = "Room"
getTotalElementArea(Ventilator) >= getFloorArea(Space)*0.05
}
Space mySpace2{
hasSpace(Space, myZone) = TRUE
getResult(EDBA_46_1) = TRUE
getREsult(EDBA_46_3) = TRUE
}
CS{
getElementArea(SmokeVentilator) >= 1 m2
getResult(RFB_*_2) = TRUE
}
KS1{
getTotalElementArea(Ventilator) >= (getBuildingArea()-getFloorArea(mySpace))*0.01
}
KS2{
getTotalElementArea(Ventilator) >= (getFloorArea(myZone)-getFloorArea(mySpace))*0.01
}
라. 외기에 직접 면하고 1층 또는 지상으로 연결된 출입문은 제5조제9호아목에 따른 방풍구조로 하여야 한다. 다만, 다음 각 호에 해당하는 경우에는 그러하지 않을 수 있다.
Check(NFCS103){
KS
}
KS{
getSpaceUsage()="Officetels.BedRoom"
OR getSpaceUsage()="LodgingFacility.BedRoom"
OR getSpaceUsage()="Hospital.HospitalRoom"
}
5. 거실의 벽 및 반자가 실내에 면하는 부분(반자돌림대ㆍ창대 그 밖에 이와 유사한 것을 제외한다. 이하 이 조에서 같다)의 마감은 불연재료ㆍ준불연재료 또는 난연재료로 하고, 그 거실로부터 지상으로 통하는 주된 복도ㆍ계단 그밖에 통로의 벽 및 반자가 실내에 면하는 부분의 마감은 불연재료 또는 준불연재료로 할 것
// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 14조의2 (복합건축물의 피난시설 등) 5호
Check(REFB_14-2_0_5){
KS
}
KS{
Object myObject{
getObject(Room.wall)
getObject(Room.CeilingCovering)
}
Corridor myCorridor{
isGoThrough(Room, Corridor, Ground )=True
}
Stair myStair{
isGoThrough(Room,Stair, Ground )=True
}
Passage myPassage{
isGoThrough(Room,Passage, Ground )=True
}
Space mySpace{
Space.usage==myCorridor.usage
OR Space.usage==myStair.usage
OR Space.usage=myPassage.usage
}
Object myObject2{
getObject(mySpace.wall)
getObject(mySpace.CeilingCovering)
}
( isObjectProperty(myObject.InteriorFinish.Material.nonCombustibility)=True
OR isObjectProperty(myObject.InteriorFinish.Material.quasiNonCombustibility)=True
OR isObjectProperty(myObject.InteriorFinish.Material.flameResistance)= True
)
isObjectProperty(myObject2.InteriorFinish.Material.nonCombustibility)=True
OR isObjectProperty(myObject2.InteriorFinish.Material.quasiNonCombustibility)=True
}
마. 계단실·노대 또는 부속실에 설치하는 건축물의 바깥쪽에 접하는 창문등(망이 들어 있는 유리의 붙박이창으로서 그 면적이 각각 1제곱미터이하인 것을 제외한다)은 계단실·노대 또는 부속실외의 당해 건축물의 다른 부분에 설치하는 창문등으로부터 2미터 이상의 거리를 두고 설치할 것
①영 제39조제1항의 규정에 의하여 건축물의 바깥쪽으로 나가는 출구를 설치하는 경우 피난층의 계단으로부터 건축물의 바깥쪽으로의 출구에 이르는 보행거리(가장 가까운 출구와의 보행거리를 말한다. 이하 같다)는 영 제34조제1항의 규정에 의한 거리이하로 하여야 하며, 거실(피난에 지장이 없는 출입구가 있는 것을 제외한다)의 각 부분으로부터 건축물의 바깥쪽으로의 출구에 이르는 보행거리는 영 제34조제1항의 규정에 의한 거리의 2배 이하로 하여야 한다.
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 11조 (건축물의 바깥쪽으로의 출구의 설치기준) 1항
Check(REFB_11_1){
IF CS THEN KS1 AND KS2
}
CS {
Door myDoor{
isObjectProperty(Door.isEntrance)=TRUE
}
isExist(myDoor)
}
KS1 {
Floor myFloor{
isObjectProperty(Floor.isEscape)=TRUE
}
getObjectDistance(myFloor.Stair, myDoor,a) <= EDBA_34_1.distance
}
KS2 {
getObjectDistance(Room, myDoor) <= (EDBA_34_1.distance)*2
}
4. 윗층의 거실의 바닥면적의 합계가 200제곱미터 이상이거나 거실의 바닥면적의 합계가 100제곱미터 이상인 지하층의 계단인 경우에는 계단 및 계단참의 너비를 120센티미터 이상으로 할 것
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조 (계단의 설치기준) 2항4호
check(REFB_15_2_4){
IF CS THEN KS
}
CS{
Floor myFloor{
N=getFloorNumber(Stair)
Floor.number=N+1
}
(getTotalFloorArea(myFloor.Room)>=200 m2
OR getTotalFloorArea(Room)>=100 m2)
getFloorNumber(Stair)<0
}
KS{
getObjectWidth(Stair)>=120 cm
getObjectWidth(StairLanding)>120 cm
}
area_sum_lable = '바닥면적 합계'
up_area_sum_lable = '윗층 바닥면적 합계'
clear_w_lable = '계단, 계단참의 유효면적'
def Check():
area_sum =0
up_area_sum = 0
min_clear_w = 1.2
under_stories = []
for building in SELECT('building'):
for storey in building.SELECT('storey'):
if storey.SELECT('prop', '기준 지상층').BOOL():
base_storey_exist = True
break
under_stories.append(storey)
for storey in under_stories:
if up_area_sum >= 200:
continue
else:
for space in storey.SELECT('space'):
area_sum += space.SELECT('area').UNIT('m2').NUMBER()
if area_sum >= 100:
continue
else:
break
up_area_sum = area_sum
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))
①영 제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))
1의2. 제2종근린생활시설 중 공연장·단란주점·당구장·노래연습장, 문화 및 집회시설중 예식장·공연장, 수련시설 중 생활권수련시설·자연권수련시설, 숙박시설중 여관·여인숙, 위락시설중 단란주점·유흥주점 또는 「다중이용업소의 안전관리에 관한 특별법 시행령」 제2조에 따른 다중이용업의 용도에 쓰이는 층으로서 그 층의 거실의 바닥면적의 합계가 50제곱미터 이상인 건축물에는 직통계단을 2개소 이상 설치할 것
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 25조 (지하층의 구조) 1항 1의2호
check(REFB_25_1_1-2){
IF CS THEN KS
}
CS{
(getBuildingUsage() = "ClassIINeighborhoodLivingFacility.PerformanceHall"
OR getBuildingUsage() = "ClassIINeighborhoodLivingFacility.Pubs"
OR getBuildingUsage() = "ClassIINeighborhoodLivingFacility.BilliardRoom"
OR getBuildingUsage() = "ClassIINeighborhoodLivingFacility.Karaoke"
OR getBuildingUsage() = "CulturalAndAssemblyFacility.WeddingHall"
OR getBuildingUsage() = "CulturalAndAssemblyFacility.PerformanceHall"
OR getBuildingUsage() = "TrainingFacility.TrainingFacilityInLivingZone"
OR getBuildingUsage() = "TrainingFacility.??LivingZone"
OR getBuildingUsage() = "LodgingFacility.Inn"
OR getBuildingUsage() = "AmusementFacility.Pubs"
OR getBuildingUsage() = "AmusementFacility.Tavern"
OR getResult(ERSASP_2) = TRUE)
getTotalFloorArea(Room) >= 50 m2
}
KS{
Stair myStair{
isObjectProperty(Stair.isDirect) = TRUE
}
getObjectCount(myStair) >= 2
}
①법 제52조제1항에 따라 영 제61조제1항 각 호의 건축물에 대하여는 그 거실의 벽 및 반자의 실내에 접하는 부분(반자돌림대·창대 기타 이와 유사한 것을 제외한다. 이하 이 조에서 같다)의 마감은 불연재료·준불연재료 또는 난연재료로 하여야 하며, 그 거실에서 지상으로 통하는 주된 복도·계단 기타 통로의 벽 및 반자의 실내에 접하는 부분의 마감은 불연재료 또는 준불연재료로 하여야 한다. <개정 2005.7.22, 2010.4.7, 2010.12.30>
check(REFB_24_1){
KS}
KS{
(check(EDBA_61_1_1)=TRUE
OR check(EDBA_61_1_2)=TRUE
OR check(EDBA_61_1_3)=TRUE
OR check(EDBA_61_1_4)=TRUE)
OR check(EDBA_61_1_5)=TRUE)
OR check(EDBA_61_1_6)=TRUE)
OR check(EDBA_61_1_7)=TRUE)
AND (getObjectProperty(Room.Wall.Material.noncombustible)= TRUE
AND (getObjectProperty(CeilingCornice | WindowSill.Material.noncombustible)= TRUE
OR !(getObjectProperty(CeilingCornice | WindowSill.Material.noncombustiblel)= TRUE)
AND (isGoThrough(Room, Corridor | Stair | Passage,Ground)= TRUE
AND (isFireResistant(getWall(Corridor))=TRUE
AND isFireResistant(getWall(Stair))=TRUE
AND isFireResistant(getWall(Passage))=TRUE
AND isFireResistant(getObject(CeilingCovering))=TRUE)
}
②영 제61조제1항 각 호의 건축물 중 다음 각 호의 어느 하나에 해당하는 거실의 벽 및 반자의 실내에 접하는 부분의 마감은 제1항에도 불구하고 불연재료 또는 준불연재료로 하여야 한다. <개정 2003.1.6, 2005.7.22, 2006.6.29, 2010.4.7, 2010.12.30>
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 24조 (건축물의 마감재료) 2항
check(REFB_24_2){
IF CS THEN KS
}
CS{
getResult(REFB_24_2_1)=TRUE
OR getResult(REFB_24_2_2)=TRUE
}
KS{
(isObjectProperty(CeilingCovering.InteriorFinish.Material.nonCombustibility)=TRUE
OR isObjectProperty(CeilingCovering.InteriorFinish.Material.quasiNonCombustibility)=TRUE )
(isObjectProperty(Room.Wall.InteriorFinish.Material.nonCombustibility)=TRUE
OR isObjectProperty(Room.Wall.InteriorFinish.Material.quasiNonCombustibility)=TRUE
)
}
1. 영 제61조제1항 각 호에 따른 용도에 쓰이는 거실 등을 지하층 또는 지하의 공작물에 설치한 경우의 그 거실(출입문 및 문틀을 포함한다)
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 24조 (건축물의 마감재료) 2항1호
check(REFB_24_2_1){
KS
}
KS{
Building myBuilding{
getResult(EDBA_61_1_1)=TRUE
OR getResult(EDBA_61_1_2)=TRUE
OR getResult(EDBA_61_1_3)=TRUE
OR getResult(EDBA_61_1_4)=TRUE
OR getResult(EDBA_61_1_5)=TRUE
OR getResult(EDBA_61_1_6)=TRUE
OR getResult(EDBA_61_1_7)=TRUE
}
Room myRoom{
getSpace(myBuilding.Room)
}
getFloorNumber(myRoom)<0
}
가. 건축물의 내부와 계단실은 노대를 통하여 연결하거나 외부를 향하여 열 수 있는 면적 1제곱미터 이상인 창문(바닥으로부터 1미터 이상의 높이에 설치한 것에 한한다) 또는 「건축물의 설비기준 등에 관한 규칙」 제14조의 규정에 적합한 구조의 배연설비가 있는 면적 3제곱미터 이상인 부속실을 통하여 연결할 것
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 9조 (피난계단 및 특별피난계단의 구조) 2항 3호 가목
check (REFB_9_2_3_1){
CS THEN KS
}
CS {
isExist(Stair.Space) = TRUE
}
KS {
Window myWindow {
getObjectProperty(Window.area)>= 1 m2
isObjectProperty(Window.isExternalDirection) = TRUE
getElementDistance(Window, FloorSlab, a)>=1m
}
SmokeExhaustionSystem mySmokeExhaustionSystem {
getElement(SmokeExhaustionSystem)
getResult(RFB_14)=TRUE
}
Space mySpace1{
getSpace(“Balcony”)
}
Space mySpace2{
isExternal(Space)=FALSE
}
Space mySpace3{
getSpace(“AncillaryRoom”)
getFloorArea(Space.Floor, ) >= 3㎡
hasElement(Space,mySmokeExhaustionSystem) = TRUE
hasElement(Space,myWindow) = TRUE
}
isGoThrough(mySpace2,Stair.Space, ,mySpace1)
OR isGoThrough(mySpace2,Stair.Space, ,mySpace3)
자. 건축물의 내부에서 노대 또는 부속실로 통하는 출입구에는 제26조에 따른 갑종방화문을 설치하고, 노대 또는 부속실로부터 계단실로 통하는 출입구에는 제26조에 따른 갑종방화문 또는 을종방화문을 설치할 것. 이 경우 갑종방화문 또는 을종방화문은 언제나 닫힌 상태를 유지하거나 화재로 인한 연기, 온도, 불꽃 등을 가장 신속하게 감지하여 자동적으로 닫히는 구조로 하여야 한다.
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 9조 (피난계단 및 특별피난계단의 구조) 2항 3호 자목
check (REFB_9_2_3_9){
IF(CS1) THEN KS1 OR (CS2) TEHN KS2
}
Space mySpace1 {
isExternal(Space)=FALSE
}
Space mySpace2 = getSpace(“Balcony”) + getSpace(“AncillaryRoom”)
CS1{
isGoThrough(mySpace1,Door,mySpace2) = TRUE
}
KS1 {
isObjectProperty(Door.isStrictFireproofDoor)= TRUE
}
CS2{
isGoThrough(mySpace2,Door,Stair.Space) = TRUE
}
KS2{
isObjectProperty(Door.isFireproofDoor)= TRUE
}
⑧ 승강기기계실용 계단, 망루용 계단 등 특수한 용도에만 쓰이는 계단에 대해서는 제1항부터 제7항까지의 규정을 적용하지 아니한다. <개정 2012.1.6>
check(REFP_15_8){
KS
}
KS{
getObjectUsage(Stair)= "ElevatorMachineRoom" OR "WatchTower"
AND getResult(REFP_15_1)=FALSE
AND getResult(REFP_15_2)=FALSE
AND getResult(REFP_15_3)=FALSE
AND getResult(REFP_15_4)=FALSE
AND getResult(REFP_15_5)=FALSE
AND getResult(REFP_15_6)=FALSE
AND getResult(REFP_15_7)=FALSE
}
①영 제51조에 따라 채광을 위하여 거실에 설치하는 창문등의 면적은 그 거실의 바닥면적의 10분의 1 이상이어야 한다. 다만, 거실의 용도에 따라 별표 1의3에 따라 조도 이상의 조명장치를 설치하는 경우에는 그러하지 아니하다. <개정 2000.6.3, 2010.4.7, 2012.1.6>
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 17조 (채광 및 환기를 위한 창문등) 1항
check(REFB_17_1){
IF (getResult(REFB_*_1-3) = FALSE) THEN KS
}
KS{
Window myWindow{
hasElement(Room, myWindow) = TRUE
}
getElementArea(myWindow) >= getFloorArea(Room)*0.1
}
①영 제48조의 규정에 의하여 건축물에 설치하는 복도의 유효너비는 다음 표와 같이 하여야 한다
┌───────────────┬────────────┬──────┐
│구분 │양옆에 거실이 있는 복도 │기타의 복도 │
├───────────────┼────────────┼──────┤
│유치원ㆍ초등학교 │2.4미터 이상 │1.8미터 이상│
│중학교ㆍ고등학교 │ │ │
├───────────────┼────────────┼──────┤
│공동주택ㆍ오피스텔 │1.8미터 이상 │1.2미터 이상│
├───────────────┼────────────┼──────┤
│당해 층 거실의 바닥면적 │1.5미터 이상(의료시설의 │1.2미터 이상│
│합계가 200제곱미터 이상인 경우│복도 1.8미터 이상) │ │
└───────────────┴────────────┴──────┘
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조의2 (복도의 너비 및 설치기준) 1항
Check(EDBA_15-2_1){
IF getBuildingUsage()="Kindergarten"
OR getBuildingUsage()="ElementarySchool"
OR getBuildingUsage()="MiddleSchool"
OR getBuildingUsage()="HightSchool"
THEN IF isExternal(Corridor)=FALSE
THEN getObjectProperty(Corridor.effectiveWidth)>2.4 m
ELSE THEN getObjectProperty(Corridor.effectiveWidth)>1.8 m
END IF
END IF
IF getBuildingUsage()="MultiUnitHouse"
OR getBuildingUsage()="Officetel"
THEN IF isExternal(Corridor)=FALSE
THEN getObjectProperty(Corridor.effectiveWidth)>1.8 m
ELSE THEN getObjectProperty(Corridor.effectiveWidth)>1.2 m
END IF
END IF
IF getTotalFloorArea(Corridor.Floor.Room)>200 m2
THEN IF isExternal(Corridor)=FALSE
THEN IF getBuildingUsage()="MedicalFacilities"
THEN getObjectProperty(Corridor.effectiveWidth)>1.8 m
ELSE THEN getObjectProperty(Corridor.effectiveWidth)>1.5 m
END IF
ELSE THEN getObjectProperty(Corridor.effectiveWidth)>1.2 m
END IF
END IF
}
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조의2 (복도의 너비 및 설치기준) 1항
Check(REFB_15-2_1){
KS
}
KS{
IF (Building.usage="Kindergarten"
OR Building.usage="ElementarySchool"
OR Building.usage="MiddleAndHighSchool" )
IF(isAdjacent(Corridor, Room)=True)
THEN Corridor.width>=2.4 m
ELSE THEN Corridor.width>=1.8 m
END IF
ELSE IF( Building.usage="MultiUnitHouse"
OR Building.usage="Officetels" )
IF( isAdjacent(Corridor, Room)=True)
TEHN Corridor.width>=1.8 m
ELSE THEN Corridor.width>=1.2 m
END IF
ELSE IF( Floor.One.Room.area > 200 m2)
IF(isAdjacent(Corridor, Room)=True)
TEHN IF (Building.usage="MedicalFacility")
THEN Corridor.width>=1.8 m
ELSE THEN Corridor.width>=1.5 m
ELSE THEN Corridor.width>=1.2 m
END IF
END IF
}
Check(EDBA_61_1_1){
IF CS THEN KS
}
Floor myfloor1 {
isObjectProperty(ClassIINeighborhoodLivingFacility.PerformanceHall)=TRUE
OR isObjectProperty(ClassIINeighborhoodLivingFacility.ReligiousAssemblyFacility)=TRUE
OR isObjectProperty(ClassIINeighborhoodLivingFacility.ReligiousAssemblyFacility)=TRUE
AND getFloorArea()>=300
}
CS{
isExist(myfloor1)=TRUE
OR(getBuildingUsage()= "CulturalAndAssemblyFacility"
AND getBuildingUsage()!= "CulturalAndAssemblyFacility.WeddingHall")
OR getBuildingUsage()= "ReligiousFacility"
OR getBuildingUsage()= "CommercialFacility"
OR getBuildingUsage()= "TransportationFacility"
OR (getBuildingUsage()= "AmusementFacility"
OR (getBuildingUsage()!= "AmusementFacility.Pubs"
AND getBuildingUsage()!= "AmusementFacility.BarBusiness")
}
KS{
getFloorArea(Room)>=200m2
OR (isObjectProperty(MainStructuralPart.isFireResistantStructure)=TRUE
OR isObjectProperty(MainStructuralPart.Material.nonCombustibility)=TRUE
getFloorArea(Room)>=400m2
}
2. 제2종 근린생활시설 중 공연장·종교집회장·인터넷컴퓨터게임시설제공업소·학원·독서실·당구장·다중생활시설의 용도로 쓰는 건축물
Check(EDBA_61_1_2){
IF CS THEN KS1 OR KS2}
Building myBuilding{
getBuildingUsage()="DetachedHouse.Multi-userHouses"
OR getBuildingUsage()="DetachedHouse.Multi-familyHouses"
OR getBuildingUsage()="ClassIINeighborhoodLivingFacility.EducationalInstitute"
OR getBuildingUsage()="ClassIINeighborhoodLivingFacility.ReadingRooms
OR getBuildingUsage()="ClassIINeighborhoodLivingFacility.CommunalLivingFacility
OR getBuildingUsage()="ClassIINeighborhoodLivingFacility.LodgingFacility"
OR getBuildingUsage()="ClassIINeighborhoodLivingFacility.MedicalFacility"
OR getBuildingUsage()="EducationAndResearchFacility.EducationalInstitute"
OR getBuildingUsage()="BusinessFacility.Oofficetels"
OR getBuildingUsage()="FuneralParlors"
}
MBU = getObjectUsage(myBuilding)
CS{
getBuildingUsage() = MBU
Floor myfloor{
Floor.number>=3
}
KS1{
(Floor.number>=3
AND getTotalfloorarea(Room)>=200m2)
KS2{isObjectProperty(MainStructuralPart.isFireResistantStructure)=TRUE
OR isObjectProperty(MainStructuralPart.Material.nonCombustibility)=TRUE
AND Floor.number>=3
getTotalfloorarea(Room)>=200m2
}
①법 제52조제1항에서 "대통령령으로 정하는 용도 및 규모의 건축물"이란 다음 각 호의 어느 하나에 해당하는 건축물을 말한다. 다만, 그 주요구조부가 내화구조 또는 불연재료로 되어 있고 그 거실의 바닥면적(스프링클러나 그 밖에 이와 비슷한 자동식 소화설비를 설치한 바닥면적을 뺀 면적으로 한다. 이하 이 조에서 같다) 200제곱미터 이내마다 방화구획이 되어 있는 건축물은 제외한다. <개정 2009.7.16, 2010.2.18, 2010.12.13, 2013.3.23, 2014.3.24, 2014.8.27, 2014.10.14, 2015.9.22, 2017.2.3>
//건축법 시행령 61조 (건축물의 마감재료) 1항
Check(EDBA_61_1){
IF !CS THEN KS
}
CS{
(isObjectProperty(MainStructuralPart.isFireResistantStructure)=TRUE
OR isObjectProperty(MainStructuralPart.Material.nonCombustibility)=TRUE)
isFirePartition(Room.Floor, a, 200)=TRUE
}
KS{
getResult(EDBA_61_1_1)=TRUE
OR getResult(EDBA_61_1_2)=TRUE
OR getResult(EDBA_61_1_3)=TRUE
OR getResult(EDBA_61_1_4)=TRUE
OR getResult(EDBA_61_1_5)=TRUE
OR getResult(EDBA_61_1_6)=TRUE
OR getResult(EDBA_61_1_7)=TRUE
}
6. 문화 및 집회시설, 종교시설, 판매시설, 운수시설, 의료시설, 교육연구시설 중 학교(초등학교만 해당한다)·학원, 노유자시설, 수련시설, 업무시설 중 오피스텔, 숙박시설, 위락시설(단란주점 및 유흥주점은 제외한다), 장례시설, 「다중이용업소의 안전관리에 관한 특별법 시행령」 제2조에 따른 다중이용업(단란주점영업 및 유흥주점영업은 제외한다)의 용도로 쓰는 건축물
Check(EDBA_61_1_6){
KS}
KS{
(getBuildingUsage()="ClassIINeighborhoodLivingFacility.PerformanceHall"
OR getBuildingUsage()="ClassIINeighborhoodLivingFacility.BilliardRoom")
OR getBuildingUsage()="CulturalAndAssemblyFacility.WeddingHall"
OR getBuildingUsage()="EducationAndResearchFacility.ElementarySchool"
OR getBuildingUsage()="Trainingfacility"
OR (getBuildingUsage()="AmusementFacility.BarBusiness"
OR getResult(ERSASP_2)= TRUE)
}
4. 제1호부터 제3호까지의 용도로 쓰지 아니하는 3층 이상의 층으로서 그 층 거실의 바닥면적의 합계가 400제곱미터 이상인 것
//건축법 시행령 34조 (직통계단의 설치) 2항4호
check(EDBA_34_2_4){
IF getResult(EDBA_34_2_1)=FALSE
OR getResult(EDBA_34_2_2)=FALSE
OR getResult(EDBA_34_2_3)=FALSE
THEN getTotalFloorNumber(myFloor.Room)>=400 m2
END IF
}
4. 건축물의 최상층 또는 피난층으로서 대규모 회의장·강당·스카이라운지·로비 등의 용도로 쓰는 부분으로서 그 용도로 사용하기 위하여 불가피한 부분
//건축법 시행령 46조 (방화구획의 설치) 2항 4호
check(EDBA_46_2_4){
KS
}
KS{
Floor myFloor{
getObject(TopFloor)
OR isObjectProperty(Floor.isEscape)=TRUE
}
AND
(getSpaceUsage(myFloor.Space)="ConferenceRoom"
OR getSpaceUsage(myFloor.Space)="Hall"
OR getSpaceUsage(myFloor.Space)="SkyLounge"
OR getSpaceUsage(myFloor.Space)="Lobby"
OR isObjectProperty(Zone.isEgressSafetyZone)= TRUE
}
② 법 제49조제2항에 따라 6층 이상인 건축물로서 문화 및 집회시설, 종교시설, 판매시설, 운수시설, 의료시설, 교육연구시설 중 연구소, 노유자시설 중 아동 관련 시설·노인복지시설, 수련시설 중 유스호스텔, 운동시설, 업무시설, 숙박시설, 위락시설, 관광휴게시설 및 장례식장의 거실에는 국토해양부령으로 정하는 기준에 따라 배연설비(排煙設備)를 하여야 한다. 다만, 피난층인 경우에는 그러하지 아니하다.
//건축법 시행령 51조 (거실의 채광 등) 2항
Check(EDBA_51_2){
IF (!CS1 AND CS2) THEN KS
}
CS1{
Floor myFloor{
isObjectProperty(Floor.isEscape) = TRUE
}
getFloorNumber(Room) = getFloorNumber(myFloor)
}
CS2{
getBuildingStoriesCount() >= 6
getResult(EDBA_51_2_1) = True
OR getResult(EDBA_51_2_2) = True
OR getResult(EDBA_51_2_3) = True
OR getResult(EDBA_51_2_4) = True
OR getResult(EDBA_51_2_5) = True
OR getResult(EDBA_51_2_6) = True
OR getResult(EDBA_51_2_7) = True
OR getResult(EDBA_51_2_8) = True
OR getResult(EDBA_51_2_9) = True
OR getResult(EDBA_51_2_10) = True
OR getResult(EDBA_51_2_11) = True
OR getResult(EDBA_51_2_12) = True
OR getResult(EDBA_51_2_13) = True
OR getResult(EDBA_51_2_14) = True
OR getResult(EDBA_51_2_15) = True
}
KS{
hasSpace(Room, SmokeExhaustionSystem) = True
getResult(RFB_14_1) = True
getResult(REFB_17_1) = True
getResult(REFB_17_2) = True
}
① 건축물의 피난층(직접 지상으로 통하는 출입구가 있는 층을 말한다. 이하 같다) 외의 층에서는 피난층 또는 지상으로 통하는 직통계단(경사로를 포함한다. 이하 같다)을 거실의 각 부분으로부터 계단(거실로부터 가장 가까운 거리에 있는 계단을 말한다)에 이르는 보행거리가 30미터 이하가 되도록 설치하여야 한다. 다만, 건축물(지하층에 설치하는 것으로서 바닥면적의 합계가 300제곱미터 이상인 공연장·집회장·관람장 및 전시장은 제외한다)의 주요구조부가 내화구조 또는 불연재료로 된 건축물은 그 보행거리가 50미터(층수가 16층 이상인 공동주택은 40미터) 이하가 되도록 설치할 수 있으며, 자동화 생산시설에 스프링클러 등 자동식 소화설비를 설치한 공장으로서 국토해양부령으로 정하는 공장인 경우에는 그 보행거리가 75미터(무인화 공장인 경우에는 100미터) 이하가 되도록 설치할 수 있다. <개정 2009.7.16>
// 건축법 시행령 34조 (직통계단의 설치) 1항
Check(EDBA_34_1){
KS
}
KS{
Floor myFloor{
isObjectProperty(Floor.isEscape) = TRUE
}
Space mySpace{
getObjectProperty(Space.usage)="PerformanceHall"
OR getObjectProperty(Space.usage)="AssemblyHall"
OR getObjectProperty(Space.usage)="Auditorium"
OR getObjectProperty(Space.usage)="ExhibitionHall"
}
Door myDoor{
isDirectlyAccessible(Door, Ground)=TRUE
}
Stair myStair{
isObjectProperty(Stair.isDirect)=TRUE
isAccessible(Stair,myFloor)=TRUE
OR isAccessible(Stair,Ground)=TRUE
}
Ramp myRamp{
isAccessible(Ramp,myFloor)=TRUE
OR isAccessible(Ramp,Ground)=TRUE
}
Floor myFloor2{
isObjectProperty(Floor.isEscape)=FALSE
OR hasObject(Floor, myDoor)=FALSE
}
Zone myZone{
isDirectlyAccessible(myStair, Zone)=FALSE
}
IF
getFloorNumber(mySpace)>0
getFloorArea(mySpace)<=300 m2
isFireResistantStructure(MainStructuralPart)=TRUE
OR isObjectProperty(MainStructuralPart.Material.nonCombustibility)=TRUE
THEN IF getBuildingStoriesCount()>=16
getBuildingUsage()="MultiUnitHouse"
THEN ED= 40
ELSE THEN ED=50
END IF
ELSE IF
getBuildingUsage() = "Factory"
isExist(ExtinguishingSystem)=TRUE
isObjectProperty(ExtinguishingSystem.isAutomatic)=TRUE
getResult(REFB_8_2)=TRUE
THEN IF getBuildingUsage() = "UnmannedFactory"
THEN ED=100
ELSE THEN ED=75
END IF
ELSE THEN ED=30
END IF
(hasObject(myFloor,myStair)=TRUE
hasObject(myZone, myStair)=TRUE
getObjectDistance(Room,myStair, 1)<=ED)
OR
(hasObject(myFloor,myRamp)=TRUE
hasObject(myZone, myRamp)=TRUE
getObjectDistance(Room,myRamp, 1)<=ED)
}
max_route_length = 30
def Check():
evac_storey_exist = False
stories = SELECT('storey')
for storey in stories:
if storey.SELECT('is evacuation storey').BOOL() == True:
evac_storey_exist = True
break
if evac_storey_exist == False:
ERROR('피난층이 존재하지 않습니다.')
return
for storey in stories:
if storey.SELECT('is evacuation storey').BOOL() == True:
continue
stairs = storey.SELECT('direct stair')
if stairs.COUNT() == 0:
storey.ERROR(storey.SELECT('name').STRING() + '에 직통계단이 존재하지 않습니다.')
continue
for space in storey.SELECT('space'):
route_length = -1
for route in space.SELECT('escape route', stairs):
length = route.SELECT('length').UNIT('m').NUMBER()
if length > 0:
if route_length < 0:
route_length = length
else:
route_length = min([route_length, length])
if route_length < 0:
space.ERROR(space.SELECT('name').STRING() + '부터 직통계단까지 갈 수 없다.')
elif route_length > max_route_length:
space.ERROR(space.SELECT('name').STRING() + '부터 직통계단까지의 거리가 멀다 : ' + str(route_length))
else:
space.SUCCESS(space.SELECT('name').STRING() + ' : ' + str(route_length))
2. 단독주택 중 다중주택·다가구주택, 제2종 근린생활시설 중 학원·독서실, 판매시설, 운수시설(여객용 시설만 해당한다), 의료시설(입원실이 없는 치과병원은 제외한다), 교육연구시설 중 학원, 노유자시설 중 아동 관련 시설·노인복지시설, 수련시설 중 유스호스텔, 숙박시설 또는 장례식장의 용도로 쓰는 3층 이상의 층으로서 그 층의 해당 용도로 쓰는 거실의 바닥면적의 합계가 200제곱미터 이상인 것
//건축법 시행령 34조 (직통계단의 설치) 2항2호
Check(EDBA_34_2_2){
Building myBuilding{
getBuildingUsage()="DentalClinic"
}
Space mySpace{
getSpaceUsage() = "Ward"
}
Floor myFloor1 {
getObjectProperty(Floor.number)>=3
getObjectUsage(Floor) = “DetachedHouse.MultiUserHouse”
OR getObjectUsage(Floor) = “DetachedHouse.MultiFamilyHouse”
OR getObjectUsage(Floor) = “ClassIINeighborhoodLivingFacility.EducationalInstitute”
OR getObjectUsage(Floor) = “ClassIINeighborhoodLivingFacility.ReadingRooms”
OR getObjectUsage(Floor) = “CommercialFacility”
OR getObjectUsage(Floor) = “TransportationFacility.PassengerTrafficFacilities”
OR ( getObjectUsage(Floor) = “MedicalFacility” ADN hasObject(myBuilding, mySpace)=TRUE )
OR getObjectUsage(Floor) = “EducationAndResearchFacility.EducationalInstitutes”
OR getObjectUsage(Floor) = “FacilitiesForTheAgedAndChildren.ChildrenRelatedFacilities”
OR getObjectUsage(Floor) = “EducationAndResearchFacility.WelfareFacilityForTheAged”
OR getObjectUsage(Floor) = “Trainingfacility.YouthHostel”
OR getObjectUsage(Floor) = “LodgingFacility”
}
Floor myFloor2{
getObjectUsage(Floor) = “ClassIINeighborhoodLivingFacility.FacilityForProvidingInternetComputerGameService”
}
getTotalFloorArea(myFloor1.Room)>= 200 m2
OR getTotalFloorArea(myFloor2.Room)>= 300 m2
}
② 이산화탄소 또는 할로겐화합물(할론 1301과 청정소화약제를 제외한다)을 방사하는 소화기구(자동확산소화장치를 제외한다)는 지하층이나 무창층 또는 밀폐된 거실로서 그 바닥면적이 20㎡ 미만의 장소에는 설치할 수 없다. 다만, 배기를 위한 유효한 개구부가 있는 장소인 경우에는 그러하지 아니하다.<개정 2008.12.15, 2012.6.11>
//소화기구 및 자동 소화장치의 화재안전기준(nfsc 101) 4조 (설치기준) 2항
Check(NFSC101_4_2){
KS
}
KS{
FireExtinguisher myFireExtinguisher{
getObjectProperty(FireExtinguishingEquipment.extinguishingAgentType) = "GasType"
}
Space mySpace{
(getFloorNumber(Space) = -1
OR hasSpace(Space, Window) = FALSE
OR isObjectProperty(Room.isEnclosed)=TRUE)
getObjectProperty(Space.FloorSlab) < 20 m2
}
getSpace(mySpace, myFireExtinguisher) = FALSE
}
4. 송수구로부터 연결송수관설비의 주배관에 이르는 연결배관에 개폐밸브를 설치한 때에는 그 개폐상태를 쉽게 확인 및 조작할 수 있는 옥외 또는 기계실 등의 장소에 설치할 것. 이 경우 개폐밸브에는 그 밸브의 개폐상태를 감시제어반에서 확인할 수 있도록 급수개폐밸브 작동표시 스위치를 다음 각 목의 기준에 따라 설치하여야 한다. <개정 2014.8.18>
2. 방수구는 아파트 또는 바닥면적이 1,000㎡ 미만인 층에 있어서는 계단(계단의 부속실을 포함하며 계단이 2 이상 있는 경우에는 그 중 1개의 계단을 말한다)으로부터 5m 이내에, 바닥면적 1,000㎡ 이상인 층(아파트를 제외한다)에 있어서는 각 계단(계단의 부속실을 포함하며 계단이 3 이상 있는 층의 경우에는 그 중 2개의 계단을 말한다)으로부터 5m 이내에 설치하되, 그 방수구로부터 그 층의 각 부분까지의 거리가 다음 각목의 기준을 초과하는 경우
//연결송수관설비의 화재안전기준(NFSC 502) 6조 (방수구) 2호
Check(NFSC502_6_0_2){
KS
}
KS{
Space mySpce{
getSpaceUsage(Space)="Stair.AncillaryRoom"
OR
(
IF getObjectCoutn(Stair)>=2
THEN getSpace(Stair.One)
ELSE
getSpaceUsage(Space)="Stair"
END IF
)
}
Space mySpce2{
getSpaceUsage(Space)="Stair.AncillaryRoom"
OR
(
IF getObjectCoutn(Stair)>=3
THEN getSpace(Stair.Two)
ELSE
getSpaceUsage(Space)="Stair"
END IF
)
}
IF getBuildingUsage()="ApartmentHouse"
OR getFloorArea()<1000 m2
THEN getObjectDistance(FireDepartmentConnection, mySpace)<5 m
ELSE IF getFloorArea()>1000 m2
THEN getObjectDistance(FireDepartmentConnection, mySpace)<5 m
getResult(NFSC502_6_0_2_가)=True
getResult(NFSC502_6_0_2_나)=True
END IF
}