설계품질검토 대상법규   |   조항단위 법규   |   문장단위 법규   |   KBimCode-Assess 연동모듈   |   KBimCode DB   |   주어부 - 객체,속성 DB   |   서술부 - 함수 DB   |   관계부 - 문장관계   |   룰셋생성모듈   |  
(2025-06-28 기준) 설계품질검토용 건축법 및 관련법규 - KBIMCode (문장단위)
      KBIMCode - KBimAssess Python Code     KBIMCode - 체크리스트 단위     KBIMCode - 조항단위
    1      
1 / 1 page Total 2500 / 4000 records
Select
ALL
None
#
Law
Jo
JO Name
HANG
HO
MOK
Text
Search!
1
건축물의 설비기준 등에 관한 규칙 제 10조 3호 나 목

나. 각층으로부터 피난층까지 이르는 승강로를 단일구조로 연결하여 설치할 것





//건축물의 설비기준 등에 관한 규칙 10조 (비상용승강기의 승강장 및 승강로의 구조) 3호 나목

Check(RFB_10_0_3_나){

	KS

}



KS{

	Floor myFloor{

		isObjectProperty(Floor.isEscape)=TRUE

	}
ElevatorShaft myElevatorShaft1{
	hasObject(Floor,ElevatorShaft)=TRUE
}
ElevatorShaft myElevatorShaft2{
	hasObject(myFloor,ElevatorShaft)=TRUE	
}
	isConnectedTo(myElevatorShaf1t, myElevatorShaft2, SingleStructure)=TRUE

} 




Python Code 변환 예정



2
건축물의 설비기준 등에 관한 규칙 제 14조 1 항

①영 제51조제2항에 따라 6층 이상의 건축물로서 문화 및 집회시설, 종교시설, 판매시설, 운수시설, 의료시설, 교육연구시설 중 연구소, 노유자시설 중 아동관련시설·노인복지시설, 수련시설 중 유스호스텔, 운동시설, 업무시설, 숙박시설, 위락시설, 관광휴게시설 및 장례식장의 거실에는 다음 각호의 기준에 적합하게 배연설비를 설치하여야 한다. 다만, 피난층인 경우에는 그러하지 아니하다. <개정 1996.2.9,1999.5.11, 2002.8.31, 2009.12.31>





//건축물의 설비기준 등에 관한 규칙 14조 (배연설비) 1항 

Check(RFB_14_1){

IF (CS) THEN KS

}



CS {

	isObjectProperty(Floor.isEscape) = FALSE

}



KS {

        isExist(SmokeExhaustionSystem)=TRUE

	getResult(RFB_14_1_1) = TRUE

	AND getResult(RFB_14_1_2) = TRUE

} 




Python Code 변환 예정



3
건축물의 에너지절약설계기준 제 8조 3호

3. 「공공기관 에너지이용합리화 추진에 관한 규정」제10조의 규정을 적용받는 건축물의 경우에는 별지 제1호 서식 에너지성능지표의 기계부문 11번 항목 배점을 0.6점 이상 획득하여야 한다.





//	스프링클러설비의 화재안전기준(nfsc 103) 15조 (헤드의 설치제외) 1항 15호
Check(NFSC103_15_1_15){
	KS
}

KS{
	getResult(EDBA_46_4) = TRUE
	getBuildingUsage() = "MultiUnitHouse"
	isObjectProperty(Space.isEscape) = TRUE
} 




Python Code 변환 예정



4
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 30조 2호 나 목

나. 각 층으로부터 피난층까지 이르는 승강로를 단일구조로 연결하여 설치할 것





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 30조 (피난용승강기의 설치기준) 2호 나목



Check(REFB_30_0_2_나){

      KS

}



KS{

   Floor myFloor{

     isObjectProperty(Floor.isEscape)=True

   }

   

ElevatorShaft myElevatorShaft1{
	hasObject(Floor,ElevatorShaft)=TRUE
}
ElevatorShaft myElevatorShaft2{
	hasObject(myFloor,ElevatorShaft)=TRUE	


isConnectedTo(myElevatorShaf1t, myElevatorShaft2, SingleStructure)=TRUE


} 




Python Code 변환 예정



5
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 9조 1 항

①영 제35조제1항의 규정에 의하여 건축물의 5층 이상 또는 지하 2층 이하의 층으로부터 피난층 또는 지상으로 통하는 직통계단(지하 1층인 건축물의 경우에는 5층 이상의 층으로부터 피난층 또는 지상으로 통하는 직통계단과 직접 연결된 지하 1층의 계단을 포함한다)은 피난계단 또는 특별피난계단으로 설치하여야 한다.





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 9조 (피난계단 및 특별피난계단의 구조) 1항

Check(REFB_9_1){

	IF (CS1) THEN KS1 ELSE IF (CS2) THEN KS2

CS1{

	Floor myFloor1 {

			Floor.number > 5

			OR Floor.number <= -2

			}

	Stair myStair1 {

		isObjectProperty(Stair.isDirect) = TRUE

	}

            Floor myFloor2 {

                           isObjectProperty(Floor.isEscape)= TRUE

            }



	isGoThrough(myFloor1, myStair1, myFloor2)= TRUE

	OR isGoThrough(myFloor1, myStair1, Ground) = TRUE

}



CS2{	

	Floor myFloor3 {

		Floor.number >= 5

	}

	

	Stair myStair3 {

		isObjectProperty(Stair.isDirect) = TRUE

 		(isGoThrough(myFloor3, myFloor2, Stair) = TRUE

		OR isGoThrough(myFloor3, Ground, Stair) = TRUE)

		}

	Stair myStair2 {

		Stair.Floor.number = -1

		}



	isDirectlyAccessible(myStair2, myStair3)=TRUE

		

KS1 {	

	(isObjectProperty(myStair1.isEscape) = TRUE

	OR isObjectProperty(myStair1.isSpecialEscape) = TRUE)

     }

KS2{

       (isObjectProperty(myStair2.isEscape) = TRUE

	OR isObjectProperty(myStair2.isSpecialEscape) = TRUE)

        (isObjectProperty(myStair3.isEscape) = TRUE

	OR isObjectProperty(myStair3.isSpecialEscape) = TRUE)

} 




Python Code 변환 예정



6
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 9조 2 항 1호 가 목

가. 계단실은 창문·출입구 기타 개구부(이하 "창문등"이라 한다)를 제외한 당해 건축물의 다른 부분과 내화구조의 벽으로 구획할 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 9조 (피난계단 및 특별피난계단의 구조) 2항 1호 가목
check(REFB_9_2_1_1){
     KS
}
KS{
Wall myWall{
	hasElement(Stair.Space, Wall) = TRUE
	hasElement(Wall, Window) = FALSE
	hasElement(Wall, Door) = FALSE
	hasElement(Wall, Opening) = FALSE
}
Stair myStair{
            isObjectProperty(Stair.isEscape)= TRUE
}

isFireResistantStructure(myWall)= TRUE
isPartitioned (myStair, 0, myWall) = TRUE
 	
}
 




Python Code 변환 예정



7
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 9조 2 항 1호 사 목

사. 계단은 내화구조로 하고 피난층 또는 지상까지 직접 연결되도록 할 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 9조 (피난계단 및 특별피난계단의 구조) 2항 1호 사목
Check(REFB_9_2_1_7){
KS
}
KS {
Floor myFloor {
	isObjectProperty(Floor.isEscape) = TRUE
}

isFireResistantStructure(Stair) = TRUE
(isDirectlyAccessible(Stair,myFloor)= TRUE 
OR isDirectlyAccessible(Stair,Ground) = TRUE) 
 }



 




Python Code 변환 예정



8
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 9조 2 항 2호

2. 건축물의 바깥쪽에 설치하는 피난계단의 구조





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 9조 (피난계단 및 특별피난계단의 구조) 2항 2호

Check(REFB_9_2_2){

    IF (CS) THEN KS 

}



CS{

isExternal(Stair) = TRUE

isObjectProperty(Stair.isEscape) = TRUE

}

KS{

	getResult(REFB_9_2_2_1)=TRUE

	getResult(REFB_9_2_2_2)=TRUE

	getResult(REFB_9_2_2_3)=TRUE

	getResult(REFB_9_2_2_4)=TRUE

} 




Python Code 변환 예정



9
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 9조 2 항 3호 차 목

차. 계단은 내화구조로 하되, 피난층 또는 지상까지 직접 연결되도록 할 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 9조 (피난계단 및 특별피난계단의 구조) 2항 3호 차목

check (REFB_9_2_3_10){

	KS

}

KS{

	Floor myFloor {

		isObjectProperty(Floor.isEscape) =TRUE

	isObjectProperty(Stair.isFireResistantStructure) = TRUE

	isAccessible(Stair,myFloor)=TRUE

	OR isAccessible(Stair,Ground)=TRUE

} 




Python Code 변환 예정



10
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 9조 2 항 3호 카 목

카. 출입구의 유효너비는 0.9미터 이상으로 하고 피난의 방향으로 열 수 있을 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 9조 (피난계단 및 특별피난계단의 구조) 2항 3호 카목

check (REFB_9_2_3_카){
	KS
}

KS{
getObjectProperty(Door.effectiveWidth) >= 0.9m
isObjectProperty(Door.isEscapeDirection)=TRUE
} 




Python Code 변환 예정



11
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 9조 3 항

③영 제35조제1항에 따른 피난계단 또는 특별피난계단은 돌음계단으로 하여서는 아니되며, 영 제40조에 따라 옥상광장을 설치하여야 하는 건축물의 피난계단 또는 특별피난계단은 해당 건축물의 옥상으로 통하도록 설치하여야 한다. 이 경우 옥상으로 통하는 출입문은 피난방향으로 열리는 구조로서 피난시 이용에 장애가 없어야 한다. <개정 2010.4.7>





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 9조 (피난계단 및 특별피난계단의 구조) 3항

Check(REFB_9_3) {

	KS

}

KS {

	Stair myStair1{

		isObjectProperty(Stair.isEscape)=TRUE

		OR isObjectProperty(Stair.isSpecialEscape)=TRUE

}

	Space mySpace{

		getObjectProperty(Space.usage) = “RooftopPlaza”
}
		hasObject(Rooftop, mySpace)=TRUE



}

	Stair myStair2{

		hasObject(mySpace.Building,myStair1)=TRUE 

}	

	getObjectProperty(myStair.type)!= “WindingStair”

	isAccessible(myStair2,mySpace)=TRUE

	isEgressDirection(mySpace.Door) = TRUE

} 




Python Code 변환 예정



12
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 11조 1 항

①영 제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

}

 




Python Code 변환 예정



13
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 11조 4 항

④판매시설의 용도에 쓰이는 피난층에 설치하는 건축물의 바깥쪽으로의 출구의 유효너비의 합계는 해당 용도에 쓰이는 바닥면적이 최대인 층에 있어서의 해당 용도의 바닥면적 100제곱미터마다 0.6미터의 비율로 산정한 너비 이상으로 하여야 한다. <개정 2010.4.7>





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 11조 (건축물의 바깥쪽으로의 출구의 설치기준) 4항
Check(REFB_11_4){     
IF CS THEN KS
}

CS {
Floor myFloor{
getObjectUsage(Floor) = “CommercialFacility”
isObjectProperty(Floor.isEscape)=TRUE
}
Door myDoor{
isObjectProperty(Door.isEntrance)=TRUE
}

hasObject(myFloor,myDoor) = TRUE
}

KS{

myFloor.myDoor.effectiveWidth >= 

}
 




Python Code 변환 예정



14
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 11조 5 항

⑤다음 각 호의 어느 하나에 해당하는 건축물의 피난층 또는 피난층의 승강장으로부터 건축물의 바깥쪽에 이르는 통로에는 제15조제5항에 따른 경사로를 설치하여야 한다. <개정 2010.4.7>





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 11조 (건축물의 바깥쪽으로의 출구의 설치기준) 5항
Check(REFB_11_5){   
IF CS1 AND CS2 THEN KS
}

CS1 {
getResult(REFB_11_5_1)=TRUE
OR getResult(REFB_11_5_2)=TRUE
OR getResult(REFB_11_5_3)=TRUE
OR getResult(REFB_11_5_4)=TRUE
OR getResult(REFB_11_5_5)=TRUE
OR getResult(REFB_11_5_6)=TRUE
}

CS2{
Floor myFloor{
	isObjectProperty(Floor.isEscape)=TRUE
}

Passage myPassage{
isDirectlyAccessible(myFloor,Passage) = TRUE
OR isDirectlyAccessible(myFloor.Platform,Passage) = TRUE
isConnectedToExternal(Passage) = TRUE
}

isExist(myPassage)=TRUE
}

KS{
hasObject(myPassage,Ramp)=TRUE
getResult(REFB_15_5)=TRUE
}


 




Python Code 변환 예정



15
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 14조 3 항 1호

1. 피난구의 덮개는 제26조에 따른 비차열 1시간 이상의 내화성능을 가져야 하며, 피난구의 유효 개구부 규격은 직경 60센티미터 이상일 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 14조 (방화구획의 설치기준) 3항 1호

Check(REFB_14_3_1){
   KS
}

KS{
  Opening myOpening {
       isObjectProperty(Opening.isEscape)=True
  }

  getObjectDiameter(myOpening)>60 cm  
} 




Python Code 변환 예정



16
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 25조 1 항 1호

1. 거실의 바닥면적이 50제곱미터 이상인 층에는 직통계단외에 피난층 또는 지상으로 통하는 비상탈출구 및 환기통을 설치할 것. 다만, 직통계단이 2개소 이상 설치되어 있는 경우에는 그러하지 아니하다.





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 25조 (지하층의 구조) 1항 1호

check(REFB_25_1_1){

	IF !(CS) THEN KS

}



KS{

	Floor myFloor1{

		hasSpace(Floor,Room) = TRUE

		getTotalArea(Room) >= 50 m2

	}



	Floor myFloor2{

		isObjectProperty(Floor.isEscape) = TRUE

	}



	Door myDoor{

		isObjectProperty(Door.functionType) = "Emergency"

		(isDirectlyAccessible(Door, myFloor2) = TRUE

		OR isDirectlyAccessible(Door, Ground) = TRUE)

	}

	

	hasSpace(myFloor1, myDoor)

	OR (hasSpace(myFloor1, VentilatorPipe) = TRUE

	(isDirectlyAccessible(VentilatorPipe, myFloor2) = TRUE

	OR isDirectlyAccessible(VentilatorPipe, Ground) = TRUE))

}



CS{

	Floor myFloor1{

		hasSpace(Floor,Room) = TRUE

		getTotalArea(Room) >= 50 m2

	}



	Stair myStair{

		isObjectProperty(Stair.isDirect) = TRUE

		hasSpace(myFloor1, Stair) = TRUE

	}



	getObjectCount(myStair) >= 2

} 




Python Code 변환 예정



17
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 25조 1 항 2호

2. 바닥면적이 1천제곱미터이상인 층에는 피난층 또는 지상으로 통하는 직통계단을 영 제46조의 규정에 의한 방화구획으로 구획되는 각 부분마다 1개소 이상 설치하되, 이를 피난계단 또는 특별피난계단의 구조로 할 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 25조 (지하층의 구조) 1항 2호

check(REFB_25_1_2){

	IF CS THEN KS

}



CS{

	getTotalFloorArea(Floor) >= 1000 m2

}



KS{

	Floor myFloor{

		isObjectProperty(Floor.isEscape) = TRUE

	}



	Stair myStair{

		isObjectProperty(Stair.isDirect) = TRUE



		(isDirectlyAccessible(Stair, Ground) = TRUE

		OR isDirectlyAccessible(Stair, myFloor) = TRUE)



		(isObjectProperty(Stair.isEscape) = TRUE

		OR isObjectProperty(Stair.isSpecialEscape) = TRUE)

	}



	Zone myZone{

		isObjectProperty(Zone.isFirePartition) = TRUE

	}



	hasSpace(myZone, myStair) = TRUE

} 




Python Code 변환 예정



18
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 25조 2 항 5호

5. 비상탈출구는 피난층 또는 지상으로 통하는 복도나 직통계단에 직접 접하거나 통로 등으로 연결될 수 있도록 설치하여야 하며, 피난층 또는 지상으로 통하는 복도나 직통계단까지 이르는 피난통로의 유효너비는 0.75미터 이상으로 하고, 피난통로의 실내에 접하는 부분의 마감과 그 바탕은 불연재료로 할 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 25조 (지하층의 구조) 2항 5호

check(REFB_25_2_5){

	

	Floor myFloor(

		isObjectProperty(Floor.isEscape) = TRUE

	)



	Stair myStair{

		isObjectProperty(Stair.isDirect) = TRUE

		(isDirectlyAccessible(Stair, Ground) = TRUE

		OR isDirectlyAccessible(Stair, myFloor) = TRUE)

	}



	Corridor myCorridor{

		isDirectlyAccessible(Corridor, myFloor) = TRUE

		OR isDirectlyAccessible(Corridor, Ground) = TRUE

	}

Door myDoor{
Door.functionType = "Emergency"
Door.Floor.number < 0
}

	(isDirectlyAccessible(myDoor, myStair) = TRUE

	OR isDirectlyAccessible(myDoor, myCorridor) = TRUE

	OR isGoThrough(myDoor, Corridor, myStair) = TRUE

	OR isGoThrough(myDoor, Corridor, myCorridor) = TRUE)

Passage myPassage{
isObjectProperty(Passage.isEscape) = TRUE
}

	getSpaceWidth(myPassage) >= 0.75 m



	isObjectProperty(myPassage.InteriorFinish.Material.nonCombustibility) = TRUE

} 




Python Code 변환 예정



19
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 25조 2 항 7호

7. 비상탈출구의 유도등과 피난통로의 비상조명등의 설치는 소방법령이 정하는 바에 의할 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 25조 (지하층의 구조) 2항 7호

check(REFB_25_2_7){	
Door myDoor{
Door.functionType = "Emergency"
Door.Floor.number < 0
}

Light myLight{
isObjectProperty(Light.isEmergency) = TRUE
}

Passage myPassage{
isObjectProperty(Passage.isEscape) = TRUE
}

	hasElement(myDoor, LeadingLight) = TRUE

	hasElement(myPassage, myLight) = TRUE

} 




Python Code 변환 예정



20
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 13조 3 항 1호

1. 대피공간의 면적은 지붕 수평투영면적의 10분의 1 이상 일 것





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 13조 (헬리포트 및 구조공간 설치 기준) 3항 1호



Check (REFB_13_3_1){

      KS

}



KS{

Space mySpace{
isObjectProperty(Space.isEscape) = TRUE
}
  mySpace.area > Roof.horizontalProjectionArea*0.1

} 




Python Code 변환 예정



21
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 13조 3 항 2호

2. 특별피난계단 또는 피난계단과 연결되도록 할 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 13조 (헬리포트 및 구조공간 설치 기준) 3항 2호



Check(REFB_13_3_2){

     KS

}



KS{



   Stair myStair {

    isObjectProperty(Stair.isEscape)=True   

   }



   Stair myStair2 {

    isObjectProperty(Stair.isSpecialEscape)=True   

   }

Space mySpace{
isObjectProperty(Space.isEscape) = TRUE
}

   isConnected(mySpace, myStair )=True 

   OR isConnected(mySpace, myStair2 )=True 

} 




Python Code 변환 예정



22
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 13조 3 항 3호

3. 출입구·창문을 제외한 부분은 해당 건축물의 다른 부분과 내화구조의 바닥 및 벽으로 구획할 것





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 13조 (헬리포트 및 구조공간 설치 기준) 3항 3호



Check(REFB_13_3_3){

     KS

}







KS{ 

Space mySpace{
isObjectProperty(Space.isEscape) = TRUE
}

   isFirePartition(mySpace)=True

} 




Python Code 변환 예정



23
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 13조 3 항 5호

5. 내부마감재료는 불연재료로 할 것





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 13조 (헬리포트 및 구조공간 설치 기준) 3항 5호



Check(REFB_13_3_5){

       KS

}





KS{

Space mySpace{
isObjectProperty(Space.isEscape) = TRUE
}

   isObjectProperty(mySpace.InteriorFinish.Material.nonCombustibility)=True

} 




Python Code 변환 예정



24
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 13조 3 항 7호

7. 관리사무소 등과 긴급 연락이 가능한 통신시설을 설치할 것





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 13조 (헬리포트 및 구조공간 설치 기준) 3항 7호

check(REFB_13_3_7){

     KS

}

KS{

	Space mySpace{

	isObjectProperty(Space.isEscape) = TRUE

	}

	hasObject(mySpace, WarningAndCommunicationFacility) = TRUE

} 




Python Code 변환 예정



25
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 15조 7 항

⑦ 제1항 및 제2항에도 불구하고 영 제34조제4항 후단에 따라 피난층 또는 지상으로 통하는 직통계단을 설치하는 경우 계단 및 계단참의 너비는 다음 각 호의 구분에 따른 기준에 적합하여야 한다. <신설 2012.1.6>





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조 (계단의 설치기준) 7항
check(REFP_15_7){
     IF CS THEN KS
}

CS{

Floor myFloor{
isObjectProperty(Floor.isEscape)=TRUE
}
      isAccessible(Stair,myFloor) 
      OR isAccessible(Stair,Ground)
}

KS{
      getResult(REFP_15_7_1)
      OR getResult(REFP_15_7_2)
} 








min_stair_width = 1.5

def Check():
    for building in SELECT('building'):
        bldg_type = building.SELECT('building type').STRING()
        sub_type = building.SELECT('prop', '세부용도').STRING()

        if bldg_type is "공통주택":
            min_stair_width = 1.2
        else :
            min_stair_width = 1.5

        d_stairs = building.SELECT('direct stair')

        for d_stair in d_stairs:
            s_stair_w = d_stair.SELECT('width').Unit(m)

            breker = True
            for stair_stories in  d_stair.SELECT('storey'):
                if stair_stories.SELECT('is evacuation storey').BOOL() is True :
                    break
                elif stair_stories.SELECT('level') is "Ground" :
                    break
                else:
                    breaker = False
            if breaker is True:
                d_stair.SUCCESS('해당계단은 피난층이나 지상으로 통하는 직통계단이 아닙니다.')
                break
            if d_stair_w >= min_stair_width:
                d_stair.SUCCESS('계단의너비()' + d_stair_w + ')가 '  + '>=' + min_stair_width)
            else:
                d_stair.ERROR('계단의너비()' + d_stair_w + ')가 '  + '<' + min_stair_width)                
                
                 





26
건축법 시행령 제 46조 5 항 2호

2. 경계벽에 피난구를 설치한 경우





//건축법 시행령 46조 (방화구획의 설치) 5항 2호

Check(EDBA_46_5_2){CS

}





CS{
Opening myOpening{
Opening.isEscape = TRUE
}
Wall myWall{
  isObjectProperty(Wall.isPartitionWall)=TRUE
}
  AND hasObject(myWall,myOpening)=TRUE

} 




Python Code 변환 예정



27
건축법 시행령 제 40조 3 항 2호

2. 건축물의 지붕을 경사지붕으로 하는 경우: 경사지붕 아래에 설치하는 대피공간





//건축법 시행령 40조 (옥상광장 등의 설치) 3항 2호

Check(EDBA_40_3_2){

  IF (CS) THEN KS

}



CS{

	getObjectProperty(Roof.shapeType) = “PitchedRoof ”

}



KS{
Space mySpace{
Space.isEscape = TRUE
}
	isExist(mySpace) = True

	getObjectProperty(mySpace.Roof.shapeType) = “PitchedRoof”



        getResult(REFB_13_3)=True

        

} 




Python Code 변환 예정



28
건축법 시행령 제 41조 1 항

①건축물의 대지 안에는 그 건축물 바깥쪽으로 통하는 주된 출구와 지상으로 통하는 피난계단 및 특별피난계단으로부터 도로 또는 공지(공원, 광장, 그 밖에 이와 비슷한 것으로서 피난 및 소화를 위하여 해당 대지의 출입에 지장이 없는 것을 말한다. 이하 이 조에서 같다)로 통하는 통로를 다음 각 호의 기준에 따라 설치하여야 한다. <개정 2010.12.13, 2015.9.22, 2016.5.17, 2017.2.3>





Check(EDBA_41_1){

    KS

}







KS{



   Door  myDoor {
getObjectProperty(Door.functionType) = "Main"
   }

   Stair myStair{
isAccessible(Stair, Ground) = TRUE
isObjectProperty(Stair.isEscape) = TRUE

       OR isObjectProperty(Stair.isSpecialEscape) = TRUE



   }

   Passage  myPassage{

       isGoThrough(myStair, Road, Passage)=True

       OR isGoThrough(myStair, OpenSpace, Passage )=True

   }



   isExist(myDoor)=True

   isExist(myPassage)=True

   getResult(EDBA_41_1_1)=True

   getResult(EDBA_41_1_2)=True

   getResult(EDBA_41_1_3)=True

} 








target_bldg_uses_01 = ['단독주택']
target_bldg_uses_02 = ['문화 및 집회시설', '장례시설', '의료시설', '위락시설']

target_bldg_uses_01_label = '건축물 용도1'
target_bldg_uses_02_label = '건축물 용도2'

def Check():
    for building in SELECT('building'):
        bldg_use = building.SELECT('building type').STRING()
        min_corridor_w = 1.5
        min_area = 0.0

        if bldg_use in target_bldg_uses_01:
            min_corridor_w = 0.9
        elif bldg_use in target_bldg_uses_02:
            min_corridor_w = 3.0
            min_area = 500

        if min_area > 0:
            area = 0
            for space in building.SELECT('space'):
                area += space.SELECT('area').UNIT('m2').NUMBER()
            if area < min_area:
                building.SUCCESS('바닥면적의 합: ' + str(area) + ' < ' + str(min_area))
                continue

        base_storey = None
        stories = building.SELECT('storey')

        for storey in stories:
            if storey.SELECT('prop', '기준 지상층').BOOL() == True:
                base_storey = storey
                break

        if base_storey is None:
            building.ERROR('기준 지상층이 존재하지 않습니다.')
            break

        stairs = base_storey.SELECT('direct stair')

        if stairs.COUNT() == 0:
            base_storey.ERROR(base_storey.SELECT('name').STRING() + '에 직통계단이 존재하지 않습니다.')
            continue

        exDoors = []
        for door in base_storey.SELECT('door'):
            if door.SELECT('is external').BOOL() == True:
                exDoors.append(door)

        for stair in stairs:
            for route in stair.SELECT('escape route', exDoors):
                for space in route.SELECT('passing space'):
                    width = space.SELECT('min clear width').UNIT('m')
                    w = width.NUMBER()
                    if w < min_corridor_w:
                        width.ERROR('통로 너비: ' + str(w) + ' < ' + str(min_corridor_w))
                    else:
                        width.SUCCESS('통로 너비: ' + str(w) + ' >= ' + str(min_corridor_w)) 





29
건축법 시행령 제 46조 4 항 1호

1. 대피공간은 바깥의 공기와 접할 것





//건축법 시행령 46조 (방화구획의 설치) 4항 1호

check(EDBA_46_4_1){

KS

}



KS{
Space mySpace{
isObjectProperty(Space.isEscape) = TRUE
}
isConnectedToExternal(mySpace)=TRUE

} 




Python Code 변환 예정



30
건축법 시행령 제 46조 4 항 2호

2. 대피공간은 실내의 다른 부분과 방화구획으로 구획될 것





//건축법 시행령 46조 (방화구획의 설치) 4항 2호

check(EDBA_46_4_2){

KS

}



KS{
Space mySpace{
isObjectProperty(Space.isEscape) = TRUE
}
isObjectProperty(mySpace.isFirePartition)=TRUE

} 




Python Code 변환 예정



31
건축법 시행령 제 35조 1 항

① 법 제49조제1항에 따라 5층 이상 또는 지하 2층 이하인 층에 설치하는 직통계단은 국토해양부령으로 정하는 기준에 따라 피난계단 또는 특별피난계단으로 설치하여야 한다. 다만, 건축물의 주요구조부가 내화구조 또는 불연재료로 되어 있는 경우로서 다음 각 호의 어느 하나에 해당하는 경우에는 그러하지 아니하다. <개정 2008.10.29>





//건축법 시행령 35조(피난계단의 설치) 1항
Check(EDBA_35_1){
	IF (!CS1 AND !CS2 AND CS3) THEN KS
}

CS1 {
     isFireProofStructure(MainStructuralPart) = TRUE
     OR isObjectProperty(MainStructuralPart.Material.nonCombustibility) = TRUE
}

CS2 {
     getResult(EDBA_35_1_1) = TRUE
     OR getResult(EDBA_35_1_2) = TRUE
}

CS3{
     Floor myFloor {
          Floor.number > 5
		OR Floor.number <= -2
	}

	Stair myStair {	
		isObjectProperty(Stair.isDirect) = TRUE
	}

	hasElement(myFloor, myStair) = TRUE
}

KS {
	isObjectProperty(myStair.isEscape) = TRUE
	OR isObjectProperty(myStair.isSpecialEscape) = TRUE
} 




Python Code 변환 예정



32
건축법 시행령 제 35조 2 항

② 건축물(갓복도식 공동주택은 제외한다)의 11층(공동주택의 경우에는 16층) 이상인 층(바닥면적이 400제곱미터 미만인 층은 제외한다) 또는 지하 3층 이하인 층(바닥면적이 400제곱미터미만인 층은 제외한다)으로부터 피난층 또는 지상으로 통하는 직통계단은 제1항에도 불구하고 특별피난계단으로 설치하여야 한다. <개정 2008.10.29>





//건축법 시행령 35조 (피난계단의 설치) 2항
check(EDBA_35_2){
	IF (CS1 AND CS2) THEN KS
}

CS1{
	Building.usage != "MultiUnitHouse.SideCorridorTypeMultiUnitHouse"
}

CS2{
	Floor myFloor{
 		IF (Building.usage = "MultiUnitHouse“) 
			THEN getFloorNumber(Floor) >= 16
     		ELSE 		
			getFloorNumber(Floor) >= 11
     		ENDIF

 		OR getFloorNumber(Floor) < -3
		getFloorArea(Floor) >= 400m2
	}

	Stair myStair {
		(isAccessible(Stair, Floor.isEscape) = TRUE
		 OR isAccessible(Stair, Ground) = TRUE)
                        isObjectProperty(Stair.isDirect) = TRUE
	}

	hasObject(myFloor, myStair) = TRUE
}

KS{
	isObjectProperty(myStair.isSpecialEscape) = TRUE
}
 




Python Code 변환 예정



33
건축법 시행령 제 36조

제36조 (옥외 피난계단의 설치) 건축물의 3층 이상인 층(피난층은 제외한다)으로서 다음 각 호의 어느 하나에 해당하는 용도로 쓰는 층에는 제34조에 따른 직통계단 외에 그 층으로부터 지상으로 통하는 옥외피난계단을 따로 설치하여야 한다.





//건축법 시행령 36조 (옥외 피난계단의 설치)

Check(EDBA_36){
    IF CS THEN KS
}

CS{
   getBuildingStoriesCount()>=3
   getResult(EDBA_36_0_1)=True
   OR getResult(EDBA_36_0_2)=True
}

KS{
   Stair myStair1{
       isObjectProperty(Stair.isDirect)=True
   }
   
   Stair myStair2{
       isObjectProperty(Stair.isEscape)=True
       isAccessible(Stair, Ground)=True
   }
  
   isExist(myStair1)=True
   isExist(myStair2)=True
} 




Python Code 변환 예정



34
건축법 시행령 제 37조

제37조 (지하층과 피난층 사이의 개방공간 설치) 바닥면적의 합계가 3천 제곱미터 이상인 공연장·집회장·관람장 또는 전시장을 지하층에 설치하는 경우에는 각 실에 있는 자가 지하층 각 층에서 건축물 밖으로 피난하여 옥외 계단 또는 경사로 등을 이용하여 피난층으로 대피할 수 있도록 천장이 개방된 외부 공간을 설치하여야 한다.





Check(EDBA_37){

  IF (CS) THEN KS END IF

  Space mySpace{

        Space.Floor.area > 3000 M2;

        Space.usage="PerformanceHall"

        OR Space.usage="AssemblyHall"

        OR Space.usage="Auditorium"

        OR Space.usage="ExhibitionHall"

  }

}



CS{

    

    mySpace.Floor.number< 0 

    

}



KS{

Stair myStair{
Stair.isOutdoor = TRUE
}
Floor myFloor{
Floor.isEscape = TRUE
}
Space mySpace{
hasObject(Space, Ceiling) != TRUE
}
     (isGoThrough(mySpace, myStair, myFloor)=True

     OR isGoThrough(mySpace, Ramp, myFloor)=True)

     AND isExternal(mySpace)=True

    

} 








std_area = 3000
std_area_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 == '문화 및 집회시설' and sub_use in ['공연장', '집회장', '관람장', '전시장']):
            continue

        base_storey_exist = False
        under_stories = []

        for storey in building.SELECT('storey'):
            if storey.SELECT('prop', '기준 지상층').BOOL():
                base_storey_exist = True
                break
            under_stories.append(storey)

        if base_storey_exist == False:
            building.ERROR('지상층이 존재하지 않습니다.')
            continue

        if len(under_stories) == 0:
            continue

        area_sum = 0.0
        ex_spaces = []

        for storey in under_stories:
            for space in storey.SELECT('space'):
                area_sum += space.SELECT('area').UNIT('m2').NUMBER()
                if space.SELECT('is external').BOOL():
                    ex_spaces.append(space)

        if area_sum < std_area:
            building.SUCCESS('지하공간 바닥면적 합: ' + str(area_sum) + ' < ' + str(std_area))
            continue

        if len(ex_spaces) == 0:
            building.ERROR('지하에 천장이 개방된 외부 공간이 없습니다.')
            continue

        for space in ex_spaces:
            for stair in space.SELECT('stair'):
                if stair.SELECT('is direct').BOOL():
                    space.SUCCESS('피난층으로 대피할 수 있는 외부 공간이 존재합니다.')
                    return

        ex_spaces[0].ERROR('피난층으로 대피할 수 없습니다.') 





35
건축법 시행령 제 46조 2 항 4호

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

} 




Python Code 변환 예정



36
건축법 시행령 제 46조 4 항

④ 공동주택 중 아파트로서 4층 이상인 층의 각 세대가 2개 이상의 직통계단을 사용할 수 없는 경우에는 발코니에 인접 세대와 공동으로 또는 각 세대별로 다음 각 호의 요건을 모두 갖춘 대피공간을 하나 이상 설치하여야 한다. 이 경우 인접 세대와 공동으로 설치하는 대피공간은 인접 세대를 통하여 2개 이상의 직통계단을 쓸 수 있는 위치에 우선 설치되어야 한다.





//건축법 시행령 46조 (방화구획의 설치) 4항

check(EDBA_46_4){

IF CS THEN KS1 AND KS2

}



Zone myZone{

     isObjectProperty(Zone.isOccupiedByOneHousehold) = TRUE

}



KS1{
Space mySpace{
Space.isEscape = TRUE
}

isExist(Balcony)=TRUE

AND hasElement(Balcony,mySpace)=TRUE

AND (getResult(EDBA_46_4_1)=TRUE

AND getResult(EDBA_46_4_2)=TRUE

AND getResult(EDBA_46_4_3)=TRUE

AND getResult(EDBA_46_4_4)=TRUE)

}



KS2{
Stair myStair{
Stair.isDirect = TRUE
}

isGoThrough(myZone,mySpace,myZone)=TRUE

AND isGoThrough(mySpace,myZone,myStair)=TRUE

}



CS{

getBuildingUsage()="MultiUnitHouses.ApartmentHouses"

AND Floor.number >=4

AND isDirectlyAccessible(myZone, myStair)=TRUE

AND myStair.Number>=2

} 




Python Code 변환 예정



37
건축법 시행령 제 46조 5 항

⑤ 제4항에도 불구하고 아파트의 4층 이상인 층에서 발코니에 설치하는 인접 세대와의 경계벽이 파괴하기 쉬운 경량구조 등이거나 경계벽에 피난구를 설치한 경우에는 대피공간을 설치하지 아니할 수 있다.





//건축법 시행령 46조 (방화구획의 설치) 5항

Check(EDBA_5){

CS 

}

Space mySpace{
Space.isEscape = TRUE
}

CS{getObjectProperty(Building.usage)="ApartmentHouses"
  AND isExist(Balcony)=TRUE

  AND (hasObject(Balcony,Structure)=TRUE

  AND (getResult(EDBA_5_1)=TRUE

  or getResult(EDBA_5_2)=TRUE

  or getResult(EDBA_5_3)=TRUE)

  AND isExist(mySpace)=FALSE

} 




Python Code 변환 예정



38
건축법 시행령 제 51조 2 항

② 법 제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
}
 




Python Code 변환 예정



39
건축법 시행령 제 34조 1 항

① 건축물의 피난층(직접 지상으로 통하는 출입구가 있는 층을 말한다. 이하 같다) 외의 층에서는 피난층 또는 지상으로 통하는 직통계단(경사로를 포함한다. 이하 같다)을 거실의 각 부분으로부터 계단(거실로부터 가장 가까운 거리에 있는 계단을 말한다)에 이르는 보행거리가 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)) 





40
건축법 시행령 제 34조 2 항

② 법 제49조제1항에 따라 피난층 외의 층이 다음 각 호의 어느 하나에 해당하는 용도 및 규모의 건축물에는 국토해양부령으로 정하는 기준에 따라 피난층 또는 지상으로 통하는 직통계단을 2개소 이상 설치하여야 한다. <개정 2009.7.16>





//건축법 시행령 34조 (직통계단의 설치) 2항

Check(EDBA_34_2){

   IF (CS1 AND CS2) THEN KS

}



CS1{

	isObjectProperty(Floor.isEscape) = FALSE

}



CS2{

	getResult(EDBA_34_2_1)=TRUE

   	OR getResult(EDBA_34_2_2)=TRUE

   	OR getResult(EDBA_34_2_3)=TRUE  

   	OR getResult(EDBA_34_2_4)=TRUE

   	OR getResult(EDBA_34_2_5)=TRUE

}



KS{

        Floor myFloor{

        isObjectProperty(Floor.isEscape)=TRUE

        }



   	Stair myStair{

      		isObjectProperty(Stair.isDirect) = TRUE

      		isAccessible(myFloor, Stair)= TRUE

      		OR isAccessible(Ground,Stair) = TRUE

   	}



   	getObjectCount(myStair)>2 

   	getResult(REFB_8_1) = True

} 




Python Code 변환 예정



41
건축법 시행령 제 34조 3 항

③ 초고층 건축물에는 피난층 또는 지상으로 통하는 직통계단과 직접 연결되는 피난안전구역(초고층 건축물의 피난·안전을 위하여 지상층으로부터 최대 30개 층마다 설치하는 대피공간을 말한다. 이하 같다)을 설치하여야 한다. <신설 2009.7.16>





// 건축법 시행령 제 34조 (직통계단의 설치) 3항

check(EDBA_34_3){

		IF CS THEN KS ENDIF

}



CS{

isObjectProperty(Building.isHighriseBuilding) = TRUE

}

KS{

		Stair myStair{

				isObjectProperty(Stair.isDirect) = TRUE			

		}

		Zone myZone{

				isObjectProperty(Zone.isEgressSafetyZone) = TRUE

		}

		Floor myFloor{

				isObjectProperty(Floor.isEscape) = TRUE

		}

isGoThrough(myFloor, myZone, myStair) = TRUE

		OR isGoThrough(myFloor, Ground, myStair) = TRUE



		getObjectCount(myZone) >= getBuildingStoriesCount()/30

} 




Python Code 변환 예정



42
건축법 시행령 제 34조 4 항

④ 제3항에 따른 피난안전구역의 규모와 설치기준은 국토해양부령으로 정한다. <신설 2009.7.16>





// 건축법 시행령 34조 (직통계단의 설치) 4항

check(EDBA_34_4){

		IF !CS THEN KS ENDIF

}

CS{

		Stair myStair{

				isObjectProperty(Stair.isDirect) = TRUE

		}

		Floor myFloor{

				isObjectProperty(Floor.isEscape) = TRUE

		}

		isDirectlyAccessible(myStair, myFloor) = TRUE

		OR isDirectlyAccessible(myStair, Ground) = TRUE

}

				

KS{

		isObjectProperty(Building.isQuasiHighriseBuilding) = TRUE

		Stair myStair{

				isObjectProperty(Stair.isDirect) = TRUE			

		}

		Zone myZone{

				isObjectProperty(Zone.isEgressSafetyZone) = TRUE

		}

		Floor myFloor{

				isObjectProperty(Floor.isEscape) = TRUE

		}

                isGoThrough(myFloor, myZone, myStair) = TRUE

		OR isGoThrough(myFloor, Ground, myStair) = TRUE

		(getBuildingStoriesCount()/2)-5 < getFloorNumber(myZone)

                getFloorNumber(myZone) < (getBuildingStoriesCount()/2)+5

} 




Python Code 변환 예정



43
건축법 시행령 제 35조 5 항

⑤ 건축물의 5층 이상인 층으로서 문화 및 집회시설 중 전시장 또는 동·식물원, 판매시설, 운수시설(여객용 시설만 해당한다), 운동시설, 위락시설, 관광휴게시설(다중이 이용하는 시설만 해당한다) 또는 수련시설 중 생활권 수련시설의 용도로 쓰는 층에는 제34조에 따른 직통계단 외에 그 층의 해당 용도로 쓰는 바닥면적의 합계가 2천 제곱미터를 넘는 경우에는 그 넘는 2천 제곱미터 이내마다 1개소의 피난계단 또는 특별피난계단(4층 이하의 층에는 쓰지 아니하는 피난계단 또는 특별피난계단만 해당한다)을 설치하여야 한다. <개정 2008.10.29, 2009.7.16>





//건축법 시행령 35조 (피난계단의 설치) 5항
check(EDBA_35_5){
	IF (CS) THEN KS
}

CS{
	Floor myFloor{
		Floor.number >= 5
		OR Floor.usage = "CulturalAndAssemblyFacility.ExhibitionHall"
		OR Floor.usage = "CulturalAndAssemblyFacility.ZoologicalAndBotanicalGarden"
		OR Floor.usage = "CommercialFacility"
		OR Floor.usage = "PassengerTrafficFacilities“??
		OR Floor.usage = "SportsFacility"
		OR Floor.usage = "AmusementFacility"
		OR Floor.usage = "FacilityForTourismAndRelaxation“???
		OR Floor.usage = "Trainingfacility.TrainingFacilityInLivingZone“
	}

	isExist(myFloor)=True           
}

KS{	
	Stair myStair2{
		isObjectProperty(Stair.isSpecialEscape) = True
		OR isObjectProperty(Stair.isEscape) = True
	}

	getResult(EDBA_34) = TRUE

	IF (getTotalFloorArea(myFloor.Space) >= 2000m2) 		
		THEN getObjectCount(myStair2) >= 1+ getFloorArea(myFloor.Space)/2000
}
 




Python Code 변환 예정



44
연결송수관설비의 화재안전기준(NFSC 502) 제 7조 1호

1. 방수기구함은 피난층과 가장 가까운 층을 기준으로 3개층마다 설치하되, 그 층의 방수구마다 보행거리 5m 이내에 설치할 것 <개정 2014.8.18>





//연결송수관설비의 화재안전기준(NFSC 502) 7조 (방수기구함) 1호



Check(NFSC502_7_0_1){

       KS

}



KS{

    Floor myFloor{

           isObjectProperty(Floor.isEscape)=True

    }



    Floor myFloor2{

         Floor.number>EFN

    }

   

    Floor myFloor3{

         Floor.nmber



Python Code 변환 예정



45
유도등 및 유도표지의 화재안전기준(NFSC 303) 제 5조 2 항

②피난구유도등은 피난구의 바닥으로부터 높이 1.5m 이상의 곳에 설치하여야 한다.





//유도등 및 유도표지의 화재안전기준(nfsc 303) 5조 (피난구유도등) 2항

Check(NFSC303_5_2){
     KS
}

KS{
Opening myOpening{
   isObjectProperty(Opening.isEscape)=True
}
 LeadingLight myLeadingLight{
        isObjectProperty(LeadingLight.isForExit)=True
    }

    getObjectVerticleDistance(myLeadingLight, myOpening.FloorSlab)>=1.5 m
} 




Python Code 변환 예정



46
장애인ㆍ노인ㆍ임산부 등의 편의증진 보장에 관한 법률 시행규칙 제 별표1조

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
} 




Python Code 변환 예정



    1