개방형BIM 기반의 건축설계 적법성 평가 자동화 기술 및 응용기술 개발
Development of OpenBIM based Architectural Design Code Checking and Evaluation Technology
  Welcome to BIM - 2nd Project Website - Yonsei University
PAGE MENU  
전체법규 - 법규데이터베이스
- 대한민국 전체 법규 목록
- 설계품질검토 대상 관련법규
- 관련법규 변동 현황
대상법규 - 문장 논리규칙체계화
- 조항단위 논리규칙체계
- 문장단위 논리규칙체계
주어부 - 객체.속성 데이터베이스
- 법규로부터의 객체.속성 분류
- 명칭DB: 객체 | 객체및속성
서술부 - 함수 데이터베이스
- 논리규칙화 함수 분류
- 논리규칙화 함수 DB
관계부 - 문장 내.외 관계논리
- 문장 내.외 관계유형분류
- 문장 내.외관계 논리체계화
문장단위 | 체크리스트 단위
KBimCode 데이터베이스
- KBimCode Lang. Definition
- KBimCode Editor:
전체 개발항목 단위
우선순위 개발항목 단위
- KBimCode DB 2단계:
문장단위 | 조항단위 |
분야/용도/단계 체크리스트 단위
- KBimLogic Applications
KBimAssess Code 데이터베이스
- Executable KBimAssess Code
- KBimCode-Assess 연동모듈
 
(2025-06-28 기준) 설계품질검토용 건축법 및 관련법규 - KBIMCode (문장단위)
    1      
1 / 1 page Total 2500 / 4000 records    신규입력
Select
ALL
None
#
ID
Law
Jo
JO Name
HANG
HO
MOK
Text
Search!
1
25139 건축물의 설비기준 등에 관한 규칙 제 14조 2 항

②특별피난계단 및 영 제90조제3항의 규정에 의한 비상용승강기의 승강장에 설치하는 배연설비의 구조는 다음 각호의 기준에 적합하여야 한다. <개정 1996.2.9, 1999.5.11>





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

Check(RFB_14_2){

IF CS THEN KS

}

CS {	

   

           isObjectProperty(Stair.isSpecialEscape)=TRUE



           OR isObjectProperty(Elevator.isEmergency)=TRUE   

}



KS {

	getResult(RFB_14_2_1) = TRUE

	getResult(RFB_14_2_4) = TRUE

} 




Python Code 변환 예정



Modify
2
72665 건축물의 에너지절약설계기준 제 5조 10호 아 목

아. "심야전기를 이용한 축열·축냉시스템”이라 함은 심야시간에 전기를 이용하여 열을 저장하였다가 이를 난방, 온수, 냉방 등의 용도로 이용하는 설비로서 한국전력공사에서 심야전력기기로 인정한 것을 말한다.





//	비상경보설비의 화재안전기준(NFSC 201) 5조 (단독경보형감지기) 2호

Check(NFSC201_5_0_2){

	KS

}



KS{

	Ceiling myCeiling{

		hasSpace(Building.TopFloor.Stair.Space, Ceiling) = TRUE

	}
Sensor mySensor{
isObjectProperty(Sensor.isSelfcontainedTypeFireAlarmDevice) = TRUE
}


	isInstalled(myCeiling, mySensor) = TRUE

} 




Python Code 변환 예정



Modify
3
72672 건축물의 에너지절약설계기준 제 5조 11호 나 목

나. "역률개선용콘덴서”라 함은 역률을 개선하기 위하여 변압기 또는 전동기 등에 병렬로 설치하는 콘덴서를 말한다.





//	비상콘센트설비의 화재안전기준(nfsc 504) 4조 (전원 및 콘센트 등) 5항 3호
Check(NFSC504_4_5_3){
	IF (CS1 THEN KS1) OR (CS2 THEN KS2)
}

CS1{
	Building myBuilding{
		getBuildingUsage() = "ApartmentHouse"
	}

	Floor myFloor{
		getFloorArea(Floor) < 1000m2
	}

	Floor myFloor2{
		hasSpace(myBuilding, Floor) = TRUE
	}

	isExist(myFloor) = TRUE
	OR isExist(myFloor2) = TRUE
}

KS1{
	Door myDoor{
		isObjectProperty(Door.isEntrance) = TRUE
	}

	getObjectDistance(myDoor.Stair.Space, EmergencyPowerOutlet) < 5m
	OR getObjectDistance(myDoor.Stair.AncillaryRoom, EmergencyPowerOutlet) < 5m
}

CS2{
	Building myBuilding{
		getBuildingUsage() = "ApartmentHouse"
	}

	Floor myFloor{
		getFloorArea(Floor) >= 1000m2
		hasSpace(myBuilding, Floor) = FALSE
	}

	isExist(myFloor) = TRUE
}

KS2{
	Door myDoor{
		isObjectProperty(Door.isEntrance) = TRUE
	}

	getObjectDistance(myDoor.Stair.Space, EmergencyPowerOutlet) < 5m
	OR getObjectDistance(myDoor.Stair.AncillaryRoom, EmergencyPowerOutlet) < 5m
} 




Python Code 변환 예정



Modify
4
72673 건축물의 에너지절약설계기준 제 5조 11호 다 목

다. "전압강하”라 함은 인입전압(또는 변압기 2차전압)과 부하측전압과의 차를 말하며 저항이나 인덕턴스에 흐르는 전류에 의하여 강하하는 전압을 말한다.





//	비상콘센트설비의 화재안전기준(nfsc 504) 4조 (전원 및 콘센트 등) 5항 3호 가목
Check(NFSC504_4_5_3_1){
	IF CS THEN KS
}

Door myDoor{
		isObjectProperty(Door.isEntrance) = TRUE
	}

Floor myFloor{
	getFloorNumber(Floor) < 0
}

CS{
	getFloorArea(myFloor) >= 3000m2
}

KS{
	getObjectDistance(myDoor.Stair.Space, EmergencyPowerOutlet) > 25m
	OR getObjectDistance(myDoor.Stair.AncillaryRoom, EmergencyPowerOutlet) > 25m
}
 




Python Code 변환 예정



Modify
5
72674 건축물의 에너지절약설계기준 제 5조 11호 라 목

라. "고효율조명기기”라 함은 광원, 안정기, 기타 조명기기로서 고효율인증제품 또는 산업통상자원부 고시 「효율관리기자재 운용규정」에서 고효율조명기기로 정의하는 제품을 말한다.





//	비상콘센트설비의 화재안전기준(nfsc 504) 4조 (전원 및 콘센트 등) 5항 3호 나목
Check(NFSC504_4_5_3_2){
	IF CS THEN KS
}

CS{
	getResult(NFSC504_4_5_3_1) = FALSE
}

KS{
	getObjectDistance(myDoor.Stair.Space, EmergencyPowerOutlet) > 25m
	OR getObjectDistance(myDoor.Stair.AncillaryRoom, EmergencyPowerOutlet) > 25m
}
 




Python Code 변환 예정



Modify
6
72771 건축물의 에너지절약설계기준 제 7조 4호 가 목

가. 틈새바람에 의한 열손실을 방지하기 위하여 외기에 직접 또는 간접으로 면하는 거실 부위에는 기밀성 창 및 문을 사용한다.





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

KS{
	getBuildingUsage() = "Stair.Space"
	OR getSpaceUsage() = "Ramp"
	OR getSpaceUsage() = "Elevator.ElevatorShaft"
	OR getSpaceUsage() = "EmergencyElevatorPlatform"
	OR getObjectProperty(Duct.isPipeDuct) = TRUE
	OR getObjectProperty(Pit.isPipePit) = TRUE
	OR getBuildingUsage() = "BathRoom"
	OR getBuildingUsage() = "SwimmingPool"
	OR getBuildingUsage() = "Toilet"
} 




Python Code 변환 예정



Modify
7
72890 건축물의 에너지절약설계기준 제 28조 1 항

제28조(제로에너지빌딩 지원센터) ① 국토교통부장관은 제로에너지빌딩 조기 활성화 업무 수행을 위하여 에너지관리공단과 한국건설기술연구원을 제로에너지빌딩 지원센터로 지정하고, 다음 각 호의 업무를 수행하도록 할 수 있다.





//	자동화재탐지설비의 화재안전기준(nfsc 203) 7조 (감지기) 2항 1호
Check(NFSC203_7_2_1){
	KS
}

KS{
	Ramp myRamp{
		getObjectProperty(Ramp.length) >= 15m
	}

	isInstalled(SmokeSensor, Stair) = TRUE
	isInstalled(SmokeSensor, myRamp) = TRUE
} 




Python Code 변환 예정



Modify
8
19422 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 3조 7호

7. 계단의 경우에는 다음 각목의 1에 해당하는 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 3조 (내화구조) 7호

Check (REFB_3_0_7){
	IF CS THEN KS
}
CS{
	isInstalled(Stair) = TRUE
}
KS{
	getResult(REFB_3_0_7_가)=TRUE
    getResult(REFB_3_0_7_나)=TRUE
    getResult(REFB_3_0_7_다)=TRUE
    getResult(REFB_3_0_7_라)=TRUE
}
 




Python Code 변환 예정



Modify
9
19424 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 3조 7호 나 목

나. 무근콘크리트조ㆍ콘크리트블록조ㆍ벽돌조 또는 석조





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 3조 (내화구조) 7호 나목

Check (REFB_3_0_7_나){
	KS
}
KS{
	getObjectProperty(Stair.Structure.materialType) = "PlainConcrete" OR "ConcreteBlock" OR "Brick" OR "Stone"
} 




Python Code 변환 예정



Modify
10
19425 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 3조 7호 다 목

다. 철재로 보강된 콘크리트블록조ㆍ벽돌조 또는 석조





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 3조 (내화구조) 7호 다목

Check (REFB_3_0_7_다){
	IF CS THEN KS
}
CS{
getObjectProperty(Stair.Structure.materialType) = "ConcreteBlock" OR "Brick" OR "Stone"
isObjectProperty(Structure.isReinforcedSteelStructure) = TRUE
} 




Python Code 변환 예정



Modify
11
19426 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 3조 7호 라 목

라. 철골조





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 3조 (내화구조) 7호 라목

Check (REFB_3_0_7_라){
	KS
}
KS{
getObjectProperty(Stair.Structure.materialType) = "SteelFrame"
} 




Python Code 변환 예정



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

1. 계단이나 에스컬레이터로부터 2미터 이상의 거리를 둘 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 12조 (회전문의 설치기준) 1항
Check(REFB_12_1){
KS
}

KS {
getElementDistance(myDoor, Stair, a)>= 2 m
OR getElementDistance(myDoor, Escalator, a)>= 2 m
}
 




Python Code 변환 예정



Modify
13
19510 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 14조의2조 5호

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





} 




Python Code 변환 예정



Modify
14
25175 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 8조 1 항

①영 제34조에 따른 직통계단의 출입구는 피난에 지장이 없도록 일정한 간격을 두어 설치하고, 각 직통계단 상호간에는 각각 거실과 연결된 복도등 통로를 설치하여야 한다. <개정 2010.4.7>





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 8조 (직통계단의 설치기준) 1항

Check(REFB_8_1){

        Stair myStair{

             isObjectProperty(Stair.isDirect)=TRUE  

        }



        Passage myPassage{

             isConnectedTo(Room, Passage)=TRUE

        }



	isExist(myPassage)=TRUE

        isConnectedTo(myStair,myPassage)=TRUE

} 




Python Code 변환 예정



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

② 피난안전구역에 연결되는 특별피난계단은 피난안전구역을 거쳐서 상·하층으로 갈 수 있는 구조로 설치하여야 한다.





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 8조의2 (피난안전구역의 설치기준) 2항

Check(REFB_8-2_2){



   Zone myZone{

      isObjectProperty(Zone.isEgressSafetyZone)=TRUE

   }

   Stair myStair{

      isObjectProperty(Stair.isSpecialEscape)=TRUE

      isAccessible(myZone, Stair)=TRUE

   }

  Floor myFloor{

         Floor.number>getFloorNumber(myZone)

         OR Floor.numberStair, myZone, myFloor)=TRUE

} 




Python Code 변환 예정



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

3. 건축물의 내부에서 피난안전구역으로 통하는 계단은 특별피난계단의 구조로 설치할 것





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 8조의2 (직통계단의 설치기준) 3항3호
check(REFB_8-2_3_3){
   
  Stair myStair{
     isExternal(Stair)=FALSE
     isAccessible(myZone, Stair)=TRUE
  }
  isObjectProperty(Stair.isSpecialEscape)=TRUE
  
} 




Python Code 변환 예정



Modify
17
25188 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 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 변환 예정



Modify
18
25191 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 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 변환 예정



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

나. 계단실의 실내에 접하는 부분(바닥 및 반자 등 실내에 면한 모든 부분을 말한다)의 마감(마감을 위한 바탕을 포함한다)은 불연재료로 할 것





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

check(REFB_9_2_1_2){

     KS

}

KS{

    isObjectProperty(Stair.Space.InteriorFinish.Material.nonCombustibility) = TRUE



} 




Python Code 변환 예정



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

라. 계단실의 바깥쪽과 접하는 창문등(망이 들어 있는 유리의 붙박이창으로서 그 면적이 각각 1제곱미터 이하인 것을 제외한다)은 당해 건축물의 다른 부분에 설치하는 창문등으로부터 2미터 이상의 거리를 두고 설치할 것





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

check(REFB_9_2_1_4){

IF (CS1 AND CS2) THEN KS

}

CS1 {

Opening myOpening1{

	isConnectedTo(Stair.Space, Opening) = TRUE

	getObjectProperty(Opening.material)= “WireContainedGlass”

	getObjectProperty(Window.panelOperationType)= “FixedSashWindow”

	getObjectProperty(Opening.area)=< 1㎡	

}

CS2 {

Opening myOpening2{

	getObject(Opening) != myOpening1 	

}

KS{

getElementDistance(myOpening1, myOpening2, a)>=2m;	

}



} 




Python Code 변환 예정



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

마. 건축물의 내부와 접하는 계단실의 창문등(출입구를 제외한다)은 망이 들어 있는 유리의 붙박이창으로서 그 면적을 각각 1제곱미터 이하로 할 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 9조 (피난계단 및 특별피난계단의 구조) 2항 1호 마목
check(REFB_9_2_1_5){
     KS
}
KS{

Opening myOpening3{
	getObject(Opening)!= Door
	isConnectedToExternal(Opening) = FALSE
	hasElement(Stair.Space, Opening) = TRUE
}

	getObjectProperty(myOpening3.material)= “WireContainedGlass”
	getObjectProperty(myOpening3.type)= “FixedSashWindow”
	getObjectProperty(myOpening3.area)=< 1㎡
	
}    
 




Python Code 변환 예정



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

바. 건축물의 내부에서 계단실로 통하는 출입구의 유효너비는 0.9미터 이상으로 하고, 그 출입구에는 피난의 방향으로 열 수 있는 것으로서 언제나 닫힌 상태를 유지하거나 화재로 인한 연기, 온도, 불꽃 등을 가장 신속하게 감지하여 자동적으로 닫히는 구조로 된 제26조에 따른 갑종방화문을 설치할 것





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

Check(REFB_9_2_1_6){

     KS

}

KS {

	Door myDoor{

	isConnectedToExternal(Opening) = FALSE

}

	Space mySpace{

		isExternal(Space)=FALSE

}

	isGoThrough(mySpace,myDoor,Stair.Space.) = TRUE

	isObjectProperty(Door.effectiveWidth) >= 0.9m

	isEgressDirection(Door) = TRUE;



} 




Python Code 변환 예정



Modify
23
25197 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 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 변환 예정



Modify
24
25198 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 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 변환 예정



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

가. 계단은 그 계단으로 통하는 출입구외의 창문등(망이 들어 있는 유리의 붙박이창으로서 그 면적이 각각 1제곱미터 이하인 것을 제외한다)으로부터 2미터 이상의 거리를 두고 설치할 것





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

check(REFB_9_2_2_1){

    IF (CS) THEN KS

}





CS {

Opening myOpening1{			getObjectProperty(Opening.material)= “WireContainedGlass”

	getObjectProperty(Window.panelOperationType)= “FixedSashWindow”

	getObjectProperty(Opening.area)=< 1㎡	

}

Door myDoor {

	isAccessible(Stair, Door)=TRUE

}

Opening myOpening2{

	getObject(Opening) != myOpening1 

	getObject(Opening) != myDoor	

}

isExist(myOpening2) = TRUE

}



KS{

getElementDistance(Stair, myOpening2, a)>=2m;	

} 




Python Code 변환 예정



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

나. 건축물의 내부에서 계단으로 통하는 출입구에는 제26조에 따른 갑종방화문을 설치할 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 9조 (피난계단 및 특별피난계단의 구조) 2항 2호 나목
check(REFB_9_2_2_2){
	IF (CS) THEN KS     
}
CS {
	Space mySpace{
		isExternal(Space)=FALSE
}
	Door myDoor{
		isGoThrough(mySpace,Door,Stair) = TRUE
}
isExist(myDoor) = TRUE
}

KS {
	isObjectProperty(myDoor.strictFireproofDoor) = TRUE
	
}
 




Python Code 변환 예정



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

다. 계단의 유효너비는 0.9미터 이상으로 할 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 9조 (피난계단 및 특별피난계단의 구조) 2항 2호 다목
check(REFB_9_2_3){
	KS     
}
KS {
	getObjectProperty(Stair.effectiveWidth)>= 0.9m
}
 








min_width = 0.9
min_width_label = 'Minimum Stair Width'

def Check():
    for stair in SELECT('stair'):
        dist = stair.SELECT('clear width')
        width = dist.UNIT('m').NUMBER()
        if width < min_width:
            dist.ERROR('Stair Clear Width : ' + str(width) + 'm')
        else:
            dist.SUCCESS('Stair Clear Width : ' + str(width) + 'm') 





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

라. 계단은 내화구조로 하고 지상까지 직접 연결되도록 할 것





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

check(REFB_9_2_2_4){

	KS     

}

KS {

	isObjectProperty(Stair.isFireResistantStructure) = TRUE

	isAccessible(Stair, Ground)= TRUE

} 




Python Code 변환 예정



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

3. 특별피난계단의 구조





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 9조 (피난계단 및 특별피난계단의 구조) 2항 3호
check (REFB_9_2_3){
IF (CS) THEN KS 
}
CS{
isObjectProperty(Stair.isSpecialEscape) = TRUE
}
KS{
	getResult(REFB_9_2_3_1)=TRUE
	getResult(REFB_9_2_3_2)=TRUE
	getResult(REFB_9_2_3_3)=TRUE
	getResult(REFB_9_2_3_5)=TRUE
	getResult(REFB_9_2_3_6)=TRUE
	getResult(REFB_9_2_3_7)=TRUE
	getResult(REFB_9_2_3_8)=TRUE
	getResult(REFB_9_2_3_9)=TRUE
	getResult(REFB_9_2_3_10)=TRUE
	getResult(REFB_9_2_3_11)=TRUE
}
 




Python Code 변환 예정



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

나. 계단실·노대 및 부속실(「건축물의 설비기준 등에 관한 규칙」 제10조제2호 가목의 규정에 의하여 비상용승강기의 승강장을 겸용하는 부속실을 포함한다)은 창문등을 제외하고는 내화구조의 벽으로 각각 구획할 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 9조 (피난계단 및 특별피난계단의 구조) 2항 3호 나목
check (REFB_9_2_3_2){
IF (CS) TEHN KS
}

CS{
	Space mySpace {
		getSpace(Stair.Space)
		getSpace(“Balcony”)
		getSpace(“AncillaryRoom”)
}
isExist(mySpace)=TRUE
}

KS{
   Wall myWall {
getObjectProperty(Wall.isFireResistantStructure = TRUE
}
   isPartitioned(mySpace, 0, myWall)= TRUE
}
 




Python Code 변환 예정



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

다. 계단실 및 부속실의 실내에 접하는 부분(바닥 및 반자 등 실내에 면한 모든 부분을 말한다)의 마감(마감을 위한 바탕을 포함한다)은 불연재료로 할 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 9조 (피난계단 및 특별피난계단의 구조) 2항 3호 다목
check (REFB_9_2_3_3){
CS TEHN KS
}

CS{
	Space mySpace {
		getSpace(Stair.Space)
		getSpace(“AncillaryRoom”)
}
isExist(mySpace)=TRUE
}

KS{
   
}
 




Python Code 변환 예정



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

마. 계단실·노대 또는 부속실에 설치하는 건축물의 바깥쪽에 접하는 창문등(망이 들어 있는 유리의 붙박이창으로서 그 면적이 각각 1제곱미터이하인 것을 제외한다)은 계단실·노대 또는 부속실외의 당해 건축물의 다른 부분에 설치하는 창문등으로부터 2미터 이상의 거리를 두고 설치할 것





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

check (REFB_9_2_3_5){

CS TEHN KS

}

CS{

	Space mySpace {

		getSpace(Stair.Space)

		getSpace(“Balcony”)

		getSpace(“AncillaryRoom”)

}

	Opening myOpening1 {

		hasElement(mySpace,Opening)=TRUE

		isConnectedToExternal(Opening) = TRUE



	Opening myOpening2 {

		getObjectProperty(Opening.material)= “WireContainedGlass”

		getObjectProperty(Window.panelOperationType)= “FixedSashWindow”

		getObjectProperty(Opening.area)=< 1㎡

}

	Opening myOpening3{

		getObject(myOpening1)-getObject(myOpening2)

}

isExist(myOpening3)=TRUE



KS{

	Opening myOpening4{

		getObject(Opening)-getObject(myOpening3)

}

getElementDistance(myOpening3, myOpening4, a)>=2m

} 




Python Code 변환 예정



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

바. 계단실에는 노대 또는 부속실에 접하는 부분외에는 건축물의 내부와 접하는 창문등을 설치하지 아니할 것





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

check (REFB_9_2_3_6){

CS TEHN KS

}

CS{

isExist(Stair.Space)=TRUE

KS{

	 Space mySpace1{

		getSpace(“Balcony”)

		getSpace(“AncillaryRoom”)

		hasObject(Stair.Space, Space)=TRUE

}

	Space mySpace2{

		isExternal(Space)=FALSE

}

	Opening myOpening {

		getObject(Stair.Space.Opening) + getObject(mySpace2.Opening) + getObject(mySpace1.Opening)

}

hasSpace(Stair.Space, myOpening) = TRUE 




Python Code 변환 예정



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

사. 계단실의 노대 또는 부속실에 접하는 창문등(출입구를 제외한다)은 망이 들어 있는 유리의 붙박이창으로서 그 면적을 각각 1제곱미터 이하로 할 것





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

check (REFB_9_2_3_7){

CS TEHN KS

}

CS{

	Space mySpace {

		getSpace(“Balcony”)

		getSpace(“AncillaryRoom”)

		hasObject(Stair.Space,Space)=TRUE

}

	Opening myOpening {

		getObject(mySpace.Opening)

}

isExist(myOpening)=TRUE

}



KS{

getObjectProperty(myOpening.material)= “WireContainedGlass”

getObjectProperty(Window.panelOperationType)= “FixedSashWindow”

getObjectProperty(myOpening.area)=< 1㎡

} 




Python Code 변환 예정



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

아. 노대 및 부속실에는 계단실외의 건축물의 내부와 접하는 창문등(출입구를 제외한다)을 설치하지 아니할 것





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

check (REFB_9_2_3_8){

IF (CS) TEHN KS

}

CS{

	Space mySpace1 {

		getSpace(“Balcony”)

		getSpace(“AncillaryRoom”)

}

isExist(mySpace1)=TRUE

}

KS{

	Space mySpace2{

		isExternal(Space)=FALSE

}

	Opening myOpening {

		 getObject(mySpace2.Opening)
getObject(Stair.Space.Opening)

}

hasSpace(mySpace1,myOpening)= FALSE

} 




Python Code 변환 예정



Modify
36
25213 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 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 변환 예정



Modify
37
25215 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 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 변환 예정



Modify
38
25218 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 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 변환 예정



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

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)) 





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

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('난간이 설치되어 있습니다.')
                     





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

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미터 이내마다 난간 설치 확인을 위하여 난간간 간격 파악 필요

                 





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

4. 계단의 유효 높이(계단의 바닥 마감면부터 상부 구조체의 하부 마감면까지의 연직방향의 높이를 말한다)는 2.1미터 이상으로 할 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조 (계단의 설치기준) 1항4호

check(REFB_15_1_4){

     KS

}



KS{

getObjectProperty(Stair.effectiveHeight)>=2.1 m

} 








min_h = 2.1
min_h_label = '최소 계단 유효높이'
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 < min_h:
                stair.ERROR('계단 유효높이: ' + str(st_h_num) + ' < ' + str(min_h))
            else:
                stair.SUCCESS('계단 유효높이: ' + str(st_h_num) + ' >= ' + str(min_h)) 





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

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 





Modify
44
25267 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 15조 2 항 2호

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 





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

3. 문화 및 집회시설(공연장·집회장 및 관람장에 한한다)·판매시설 기타 이와 유사한 용도에 쓰이는 건축물의 계단인 경우에는 계단 및 계단참의 너비를 120센티미터 이상으로 할 것





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

CS{
      getBuildingUsage()= "CulturalAndAssemblyFacility.PerformanceHall"
      OR getBuildingUsage()= "CulturalAndAssemblyFacility.AssemblyHall"
      OR getBuildingUsage()= "CulturalAndAssemblyFacility.Auditorium"
      OR getBuildingUsage()= "CommercialFacility "
}

KS{
     getObjectWidth(Stair)>=120 cm
     getObjectWidth(StairLanding)>=120 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 





Modify
46
25269 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 15조 2 항 4호

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)) 





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

5. 기타의 계단인 경우에는 계단 및 계단참의 너비를 60센티미터 이상으로 할 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조 (계단의 설치기준) 2항5호
check(REFB_15_2_5){
     KS
}


KS{
      getObjectWidth(Stair)>=120 cm
      getObjectWidth(StairLanding)>120 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 





Modify
48
25271 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 15조 2 항 6호

6. 「산업안전보건법」에 의한 작업장에 설치하는 계단인 경우에는 「산업안전 기준에 관한 규칙」에서 정한 구조로 할 것





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 	15조 (계단의 설치기준) 2항 6호



check(REFB_15_2_6){

     IF CS THEN KS

}

CS{

Space mySpace{
getObjectProperty(Space.usage) = "Workplace"
}
	isInstalled(Stair,mySpace) = TRUE

}

KS{

	getResult(ROSHA_26) = TRUE

	getResult(ROSHA_27) = TRUE

	getResult(ROSHA_28) = TRUE

	getResult(ROSHA_29) = TRUE

	getResult(ROSHA_30) = TRUE

} 




Python Code 변환 예정



Modify
49
25275 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 15조 4 항 2호

2. 손잡이는 벽등으로부터 5센티미터 이상 떨어지도록 하고, 계단으로부터의 높이는 85센티미터가 되도록 할 것





check(REFB_15_4_2){
     KS
}
KS{
       getObjectDistance(Handle,WallLantern) >= 5CM
       AND getObjectVerticalDistance(Handle,Stair) = 85CM
} 




Python Code 변환 예정



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

3. 계단이 끝나는 수평부분에서의 손잡이는 바깥쪽으로 30센티미터 이상 나오도록 설치할 것





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 	15조 (계단의 설치기준) 4항 3호

check(REFB_15_4_3){
     KS
}
KS{
    getElementDistance(Handle,Stair.EndPart) <= 30cm
}
 




Python Code 변환 예정



Modify
51
25281 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 15조 6 항

⑥제1항 각호의 규정은 제5항의 규정에 의한 경사로의 설치기준에 관하여 이를 준용한다.





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


Stair myStair{
	getResult(REFB_15_1) = TRUE
}

CS{
	isReplaced(myStair, Ramp) = TRUE
}

KS{
	getResult(REFB_15_5) = TRUE
} 




Python Code 변환 예정



Modify
52
25337 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 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 변환 예정



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

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
} 




Python Code 변환 예정



Modify
54
25339 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 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 변환 예정



Modify
55
25347 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 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 변환 예정



Modify
56
25366 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 24조 1 항

①법 제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)

} 




Python Code 변환 예정



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

가. 건축물의 내부와 계단실은 노대를 통하여 연결하거나 외부를 향하여 열 수 있는 면적 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) 




Python Code 변환 예정



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

자. 건축물의 내부에서 노대 또는 부속실로 통하는 출입구에는 제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

} 




Python Code 변환 예정



Modify
59
25451 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 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 변환 예정



Modify
60
25503 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 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)                
                
                 





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

1. 공동주택: 120센티미터 이상





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

KS{
      getBuildingUsage() = "MultiUnitHouse"
      AND getStairStepWidth >= 1.2M
      AND getPaceWidth >= 1.2M
} 









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)                
                
                 





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

2. 공동주택이 아닌 건축물: 150센티미터 이상





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

KS{
      getBuildingUsage() != "MultiUnitHouse"
      AND getStairStepWidth >= 1.5M
      AND getPaceWidth >= 1.5M
} 









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)                
                
                 





Modify
63
25506 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 15조 8 항

⑧ 승강기기계실용 계단, 망루용 계단 등 특수한 용도에만 쓰이는 계단에 대해서는 제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

} 




Python Code 변환 예정



Modify
64
71921 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 3조 7호 가 목

가. 철근콘크리트조 또는 철골철근콘크리트조





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 3조 (내화구조) 7호 가목

Check (REFB_3_0_7_가){
	KS
}
KS{
	getObjectProperty(Stair.Structure.materialType) = "ReinforcedConcrete" OR "SteelFramedReinforcedConcrete"
} 




Python Code 변환 예정



Modify
65
27881 건축법 제 49조 1 항

① 대통령령으로 정하는 용도 및 규모의 건축물과 그 대지에는 국토교통부령으로 정하는 바에 따라 복도, 계단, 출입구, 그 밖의 피난시설과 저수조(貯水槽), 대지 안의 피난과 소화에 필요한 통로를 설치하여야 한다. <개정 2013.3.23, 2018.4.17>





//건축법 49조 (건축물의 피난시설 및 용도제한 등) 1항
Check(BA_49_1){
   IF CS THEN KS 
}

CS{
  getResult(EDBA_34_2)= TRUE
  OR getResult(EDBA_35_1) = TRUE
  OR getResuLt(EDBA_35_2) = TRUE
  OR getResuLt(EDBA_35_3) = TRUE
  OR getResuLt(EDBA_35_5) = TRUE
  OR getResult (EDBA_38) = TRUE
  OR getResuLt(EDBA_39_1) = TRUE
  OR getResuLt(EDBA_39_2) = TRUE
}

KS{

Door myDoor{
isObjectProperty(Door.isEntrance)=TRUE
}

   isExist(Corridor) = TRUE
   isExist(Stair) = TRUE
   isExist(myDoor) = TRUE
   isExist(EvacuationFacility) = TRUE
   isExist(FireHydrant) = TRUE
   isExist(Tank) = TRUE
   isExist(ExtinguishingSystem)= TRUE
   isExist(Passage)=True

   getResult(REFB_11_1)= TRUE
   getResult(REFB_11_2)= TRUE
   getResult(REFB_11_3)= TRUE
   getResult(REFB_11_4)= TRUE
   getResult(REFB_11_5)= TRUE
} 




Python Code 변환 예정



Modify
66
34605 건축법 시행령 제 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)) 





Modify
67
36578 건축법 시행령 제 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 변환 예정



Modify
68
36581 건축법 시행령 제 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 변환 예정



Modify
69
36582 건축법 시행령 제 35조 3 항

③ 제1항에서 판매시설의 용도로 쓰는 층으로부터의 직통계단은 그 중 1개소 이상을 특별피난계단으로 설치하여야 한다. <개정 2008.10.29>





//건축법 시행령 35조 (피난계단의 설치) 3항
check(EDBA_35_3){
	IF (CS) THEN KS
CS{
	getResult(EDBA_35_1) = TRUE

	Floor myFloor {
		Floor.usage = “CommercialFacility”
	}

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

	isAccessible(myFloor, myStair) = TRUE
}

KS{
	isObjectProperty(one.myStair.isSpecialEscape) = TRUE
}
 




Python Code 변환 예정



Modify
70
36586 건축법 시행령 제 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 변환 예정



Modify
71
36587 건축법 시행령 제 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('피난층으로 대피할 수 없습니다.') 





Modify
72
36612 건축법 시행령 제 46조 2 항 3호

3. 계단실부분·복도 또는 승강기의 승강로 부분(해당 승강기의 승강을 위한 승강로비 부분을 포함한다)으로서 그 건축물의 다른 부분과 방화구획으로 구획된 부분





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

check(EDBA_46_2_3){

KS

}



KS{

 isObjectProperty(Stair.Space.isFirePartition)=TRUE

 OR isObjectProperty(Passage.isFirePartition)=TRUE

 OR isObjectProperty(ElevatorShaft.isFirePartition)=TRUE

} 




Python Code 변환 예정



Modify
73
36618 건축법 시행령 제 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 변환 예정



Modify
74
36704 건축법 시행령 제 89조

제89조 (승용 승강기의 설치) 법 제64조제1항 전단에서 "대통령령으로 정하는 건축물"이란 층수가 6층인 건축물로서 각 층 거실의 바닥면적 300제곱미터 이내마다 1개소 이상의 직통계단을 설치한 건축물을 말한다.





//건축법 시행령 89조 (승용 승강기의 설치)
Check(EDBA_89){
     KS
}

KS{
     Stair myStair{
          isObjectProperty(Stair.isDirect) = TRUE
     }
     getBuildingStoriesCount() = 6
     isExist(myStair) = TRUE
} 




Python Code 변환 예정



Modify
75
37352 건축법 시행령 제 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)) 





Modify
76
37353 건축법 시행령 제 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 변환 예정



Modify
77
37359 건축법 시행령 제 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 변환 예정



Modify
78
37360 건축법 시행령 제 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 변환 예정



Modify
79
37368 건축법 시행령 제 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 변환 예정



Modify
80
20486 연결송수관설비의 화재안전기준(NFSC 502) 제 6조 2호

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
} 




Python Code 변환 예정



Modify
81
19967 유도등 및 유도표지의 화재안전기준(NFSC 303) 제 5조 1 항 2호

2. 직통계단·직통계단의 계단실 및 그 부속실의 출입구





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

Check(NFSC303_5_1_2){
     KS
}

KS{
   Stair myStair {

        isObjectProperty(Stair.isDirect)=True       
    }

  Door myDoor{
      isObjectProperty(Door.isEntrance)=True     
     OR hasObject( myStair, Door)=True
     OR hasObject(myStair.Space,Door)=True
     OR hasObject(myStair.AncillaryRoom,Door)=True

  }

    LeadingLight myLight{
        isObjectProperty(LeadingLight.isForExit)=True
    }

   isEnstalled(myLight,myDoor)=True
   
   
} 




Python Code 변환 예정



Modify
82
19968 유도등 및 유도표지의 화재안전기준(NFSC 303) 제 5조 1 항 3호

3. 제1호와 제2호에 따른 출입구에 이르는 복도 또는 통로로 통하는 출입구





//유도등 및 유도표지의 화재안전기준(nfsc 303) 5조(피란구유도등) 1항 3호 

Check(NFSC303){
           KS
}
  Door myDoor{
      isObjectProperty(Door.isEntrance)=True     
     (OR hasObject( myStair, Door)=True
     OR hasObject(myStair.Space,Door)=True
     OR hasObject(myStair.AncillaryRoom,Door)=True)

       OR isDirectlyAccessible(Door, Ground)=True          
    }
 LeadingLight myLeadingLight{
        isObjectProperty(LeadingLight.isForExit)=True
    }

  Passage myPassage{
     isAccessible(myDoor, Passage)=True
   }
  Corridor myCorriodr{
     isAccessible(myDoor, Corridor)=True
  }

  Door myDoor2{
      isObjectProperty(Door.isEntrance)=True    
     isAccessible(myPassage, Door)=True
     or isAccessible(myCorridor, Door)=True
  }

isInstalled(myLeadingLight, myDoor2)=True

} 




Python Code 변환 예정



Modify
83
19970 유도등 및 유도표지의 화재안전기준(NFSC 303) 제 6조 1 항

제6조(통로유도등 설치기준) ①통로유도등은 특정소방대상물의 각 거실과 그로부터 지상에 이르는 복도 또는 계단의 통로에 다음 각 호의 기준에 따라 설치하여야 한다. <개정 2012.8.20>





//유도등 및 유도표지의 화재안전기준(nfsc 303) 6조 (통로유도등 설치기준) 1항

Check(NFSC303_6_1){
         KS
}


KS{
 Corridor myCorridor{
       isGothrough(SpecificFireFightingBuilding.Room, Corridor, Ground)=True 
 }
   
 Stair myStair{
        isGothrough(SpecificFireFightingBuilding.Room, Stair, Ground)=True   
 }


       hasObject(myCorridor, LeadingLight.isForPassage)=True
       hasObject(myStair, LeadingLight.isForPassage)=True
       getResult(NFSC303_6_1_1)=True
       getResult(NFSC303_6_1_2)=True
       getResult(NFSC303_6_1_3)=True
} 




Python Code 변환 예정



Modify
84
19980 유도등 및 유도표지의 화재안전기준(NFSC 303) 제 6조 1 항 3호 가 목

가. 각층의 경사로 참 또는 계단참마다(1개층에 경사로 참 또는 계단참이 2 이상 있는 경우에는 2개의 계단참마다)설치할 것





//유도등 및 유도표지의 화재안전기준(nfsc 303) 6조 (통로유도등 설치기준) 1항 3호 가목 

Check (NFSC303_6_1_3_가){
           KS
}

KS{
   IF // getObjectCount(RampLanding, "1개층" )>=2
      // OR getObjectCount(StairLanding, "1개층" )>=2
      THEN // isInstalled(StairLanding, LeadingLightForStairs , "2개마다")=True

   ELSE THEN   isInstalled(RampLanding, LeadingLightForStairs)=True
               OR isInstalled(StairLanding, LeadingLightForStairs)=True   
   END IF      

}

 




Python Code 변환 예정



Modify
85
19981 유도등 및 유도표지의 화재안전기준(NFSC 303) 제 6조 1 항 3호 나 목

나. 바닥으로부터 높이 1m 이하의 위치에 설치할 것





//유도등 및 유도표지의 화재안전기준(nfsc 303) 6조 (통로유도등 설치기준) 1항 3호 나목

Check(NFSC303_6_1_3_나){
         KS
}

KS{
        getObjectVerticalDistance(FloorSlab, LeadingLightForStairs)=<=1 m
} 




Python Code 변환 예정



Modify
86
19986 유도등 및 유도표지의 화재안전기준(NFSC 303) 제 8조 1 항 1호

1. 계단에 설치하는 것을 제외하고는 각층마다 복도 및 통로의 각 부분으로부터 하나의 유도표지까지의 보행거리가 15m 이하가 되는 곳과 구부러진 모퉁이의 벽에 설치할 것





//유도등 및 유도표지의 화재안전기준(nfsc 303) 8조 (유도표지 설치기준) 1항 1호

Check(NFSC303_8_1_1){
       IF ! CS THEN KS
}

CS{
   isInstalled(LeadingSign,Stair)=True
}

KS{
   getObjectDistance(Floor.One.Corridor.Wall, LeadingSign)<=15 m
   getObjectDistance(Floor.One.Corridor.Column, LeadingSign)<=15 m
    getObjectDistance(Floor.One.Passage.Wall, LeadingSign)<=15 m
   getObjectDistance(Floor.One.Passage.Column, LeadingSign)<=15 m
} 




Python Code 변환 예정



Modify
87
20443 자동화재탐지설비 및 시각경보장치의 화재안전기준(NFSC 203) 제 7조 3 항 10호 나 목

나. 감지기는 복도 및 통로에 있어서는 보행거리 30m(3종에 있어서는 20m)마다, 계단 및 경사로에 있어서는 수직거리 15m(3종에 있어서는 10m)마다 1개 이상으로 할 것





//	자동화재탐지설비의 화재안전기준(nfsc 203) 7조 (감지기) 3항 10호 나목
Check(NFSC203_7_3_10_2){
	IF (CS1 THEN KS1) OR (CS2 THEN KS2)
}

CS1{
	hasSpace(Corridor, SmokeSensor) = TRUE
	OR hasSpace(Passage, SmokeSensor) = TRUE
}

KS1{
	getObjectInterval(SmokeSensor) <= 30m
}

CS2{
	hasSpace(Stair, SmokeSensor) = TRUE
	OR hasSpace(Ramp, SmokeSensor) = TRUE
}

KS2{
	getObjectInterval(SmokeSensor) <= 15m
} 




Python Code 변환 예정



Modify
88
19995 장애인ㆍ노인ㆍ임산부 등의 편의증진 보장에 관한 법률 시행규칙 제 별표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 변환 예정



Modify
89
62347 주택건설기준 등에 관한 규정 제 15조 1 항

①6층 이상인 공동주택에는 국토교통부령이 정하는 기준에 따라 대당 6인승 이상인 승용승강기를 설치하여야 한다. 다만, 「건축법 시행령」 제89조의 규정에 해당하는 공동주택의 경우에는 그러하지 아니하다. <개정 1992.5.30, 1994.12.23, 1994.12.30, 1999.9.29, 2005.6.30, 2008.2.29, 2013.3.23>





//주택건설기준 등에 관한 규정 15조 (승강기등) 1항
Check(RHC_15_1){
	getResult(RHC_15_5) = TRUE AND IF (CS1 AND !CS2) THEN KS
}

CS1{
	getBuildingUsage() = "MultiUnitHouse"
	getBuildingStoriesCount() >= 6
}

CS2{
	getBuildingStoriesCount = 6
	
	Stair myStair{
		isObjectProperty(Stair.isDirect) = TRUE
	}

	getFloorArea() = FA
	FA / 300 = FA2
	getIntegeralNumber(FA2) = FA3
	getObjectCount(myStair) >= FA3
}

KS{
	Elevator myElevator{
		getObjectProperty(Elevator.occupancy) >= 6
	}

	isExist(myElevator) = TRUE
} 




Python Code 변환 예정



Modify
90
62352 주택건설기준 등에 관한 규정 제 15조 3 항 3호

3. 계단실형인 공동주택의 경우에는 계단실마다 설치할 것





//주택건설기준 등에 관한 규정 15조 (승강기등) 3항 3호
Check(RHC_15_3_3){
	IF CS THEN KS
}

CS{
	
}

KS{
	Elevator myElevator{
		getObjectProperty(Elevator.usage) = "FreightElevator"
	}

	isInstalled(myElevator, Stair.Space) = TRUE
} 




Python Code 변환 예정



Modify
    1      
 

Related Sites

국토부 BIM과제-1st  |   Ministry of Land, Infrasrtucture and Transport   |   Korea Agency for Infrastructure Technology Advancement  |   Space and Design IT Lab   |   Yonsei University
This is Design IT Lab server's restricted area. Authorized users could access this website.