(2025-05-10 기준) 설계품질검토용 건축법 및 관련법규 - KBIMCode (분야/용도/단계별 체크리스트 단위)
      KBIMCode - KBimAssess Python Code     KBIMCode - 조항단위     KBIMCode - 문장단위    
  ◁prev 1   2   3   4   5   6   7   8   9   10   next▷ NEXT10▶
5 / 12 page Total 2500 / 4000 records   
Select
ALL
None
#
ID
Law
Usage


Field
under development
Process
under development
Search!
1
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
2
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
3
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
4
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
5
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
6
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
7
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
8
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
9
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
10
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
11
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
12
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
13
25214 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 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 변환 예정



Modify
14
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
15
25216 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 9조 4 항

④영 제35조제2항에서 "갓복도식 공동주택"이라 함은 각 층의 계단실 및 승강기에서 각 세대로 통하는 복도의 한쪽 면이 외기(外氣)에 개방된 구조의 공동주택을 말한다. <신설 2006.6.29>





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 9조 (피난계단 및 특별피난계단의 구조) 4항
Check(REFB_9_4) {
	KS
}
	Building myBuilding{
		Building.usage = “SideCorridorTypeMultiUnitHouse”
}

	Space mySpace = getSpace(“Corridor”)
	isConnectedToExternal(mySpace)=TRUE

 




Python Code 변환 예정



Modify
16
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
17
25219 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 11조 2 항

②영 제39조제1항에 따라 건축물의 바깥쪽으로 나가는 출구를 설치하는 건축물중 문화 및 집회시설(전시장 및 동·식물원을 제외한다), 종교시설, 장례식장 또는 위락시설의 용도에 쓰이는 건축물의 바깥쪽으로의 출구로 쓰이는 문은 안여닫이로 하여서는 아니된다. <개정 2010.4.7>





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 11조 (건축물의 바깥쪽으로의 출구의 설치기준) 2항



Check(REFB_11_2){
     

IF CS1 AND CS2 THEN KS


}





CS1 {

Building myBuilding{

getBuildingUsage() = “CulturalAndAssemblyFacility”

OR getBuildingUsage() = “ReligiousFacility”

OR getBuildingUsage() = “AmusementFacility”

OR getBuildingUsage() = “FuneralParlor”

getBuildingUsage() != “ExhibitionHall”

getBuildingUsage() != “ZoologicalAndBotanicalGarden”

}



Door myDoor{

isObjectProperty(myBuilding.Door.isEntrance)=TRUE

}

isExist(myDoor) = TRUE

}



KS {

getObjectProperty(myDoor.panelOperationType) != “OpeningInDoor”



} 




Python Code 변환 예정



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

③영 제39조제1항의 규정에 의하여 건축물의 바깥쪽으로 나가는 출구를 설치하는 경우 관람석의 바닥면적의 합계가 300제곱미터 이상인 집회장 또는 공연장에 있어서는 주된 출구외에 보조출구 또는 비상구를 2개소 이상 설치하여야 한다.





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 11조 (건축물의 바깥쪽으로의 출구의 설치기준) 3항

Check(REFB_11_3){
     

IF CS1 AND CS2 THEN KS


}





CS1 {

Building myBuilding{

getBuildingUsage() = “AssemblyHall”

OR getBuildingUsage() = “PerformanceHall”

}



Space mySpace{

myBuilding.Space.name = “Auditorium”

Space.FloorSlab.area >= 300 m2

}



isExist(mySpace) = TRUE

}



CS2 {

Door myDoor{

isObjectProperty(Door.isEntrance)=TRUE

}

hasObject(myBuilding,myDoor) = TRUE

}



KS {

Door myDoor{

getObjectProperty(Door.functionType) = "Auxiliary"

OR getObjectProperty(Door.functionType) = "Emergency" 

}



getObjectCount(myDoor) >=2

} 




Python Code 변환 예정



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



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



Modify
21
25223 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 11조 5 항 1호

1. 제1종 근린생활시설 중 지역자치센터·파출소·지구대·소방서·우체국·방송국·보건소·공공도서관·지역건강보험조합 기타 이와 유사한 것으로서 동일한 건축물안에서 당해 용도에 쓰이는 바닥면적의 합계가 1천제곱미터 미만인 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 11조 (건축물의 바깥쪽으로의 출구의 설치기준) 5항 1호

Check(REFB_11_5_1){
      

KS




}

KS {

Building myBuilding{

getBuildingUsage() = “ClassINeighborhoodLivingFacility.CommunityCenter”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.PoliceBox”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.PoliceSubstation”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.FireStation”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.PostOffice”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.BroadcastingStation”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.HealthCenter”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.PublicLibrary”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.RegionalHealthInsuranceAssociation”



}



Space mySpace{

Space.usage=“CommunityCenter”

Space.usage=“PoliceBox”

Space.usage=“PoliceSubstation”

Space.usage=“FireStation”

Space.usage=“PostOffice”

Space.usage=“BroadcastingStation”

Space.usage=“HealthCenter”

Space.usage=“PublicLibrary”

Space.usage=“RegionalHealthInsuranceAssociation”

Space.FloorSlab.area < 1000 m2

}

isExist(myBuilding) = TRUE

isExist(mySpace) = TRUE

} 




Python Code 변환 예정



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

2. 제1종 근린생활시설 중 마을회관·마을공동작업소·마을공동구판장·변전소·양수장·정수장·대피소·공중화장실 기타 이와 유사한 것





건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 11조 (건축물의 바깥쪽으로의 출구의 설치기준) 5항 2호

Check(REFB_11_5_2){
      

KS


}





KS {

Building myBuilding{

getBuildingUsage() = “ClassINeighborhoodLivingFacility.VillageHall”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.CommunityWorkspace”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.CommunitySalesShop”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.Substation”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.PumpingStation”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.PurificationPlant”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.Shelter”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.PublicLibrary”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.PublicToilet”



}



isExist(myBuilding) = TRUE

} 




Python Code 변환 예정



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

3. 연면적이 5천제곱미터 이상인 판매시설, 운수시설





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

KS {
getBuildingUsage() = “CommercialFacility”
OR getBuildingUsage() = “TransportationFacility”
getObjectProperty(Building.grossFloorArea) >= 5000 m2

}
 




Python Code 변환 예정



Modify
24
25226 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 11조 5 항 4호

4. 교육연구시설 중 학교





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 11조 (건축물의 바깥쪽으로의 출구의 설치기준) 5항 4호

Check(REFB_11_5_4){
     

KS


}





KS {

Building myBuilding{

getBuildingUsage() = “EducationAndResearchFacility.School”

}



isExist(myBuliding) = TRUE

} 




Python Code 변환 예정



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

5. 업무시설중 국가 또는 지방자치단체의 청사와 외국공관의 건축물로서 제1종 근린생활시설에 해당하지 아니하는 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 11조 (건축물의 바깥쪽으로의 출구의 설치기준) 5항 5호

Check(REFB_11_5_5){
      

KS


}





KS {

Building myBuilding{

getBuildingUsage() = “BusinessFacility.GovernmentOfficeBuilding”

OR getBuildingUsage() = “BusinessFacility.ForeignOfficialResidence”

getBuildingUsage() != “ClassINeighborhoodLivingFacility”

}



isExist(myBuilding) = TRUE

} 




Python Code 변환 예정



Modify
26
25228 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 11조 5 항 6호

6. 승강기를 설치하여야 하는 건축물





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 11조 (건축물의 바깥쪽으로의 출구의 설치기준) 5항 6호

Check(REFB_11_5_6){
KS
}


KS {

hasObject(Building,Elevator)=TRUE

} 




Python Code 변환 예정



Modify
27
25229 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 11조 6 항

⑥법 제39조제1항에 따라 영 제39조제1항 각 호의 어느 하나에 해당하는 건축물의 바깥쪽으로 나가는 출입문에 유리를 사용하는 경우에는 안전유리를 사용하여야 한다. <신설 2006.6.29>





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

KS{
    Door myDoor{
       isObjectProperty(Door.isEntrance)=TRUE
    }
    IF getObjectMaterial(myDoor)="Glass"
         THEN getObjectType(Glass)="Safety"  

} 




Python Code 변환 예정



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

1. 헬리포트의 길이와 너비는 각각 22미터이상으로 할 것. 다만, 건축물의 옥상바닥의 길이와 너비가 각각 22미터이하인 경우에는 헬리포트의 길이와 너비를 각각 15미터까지 감축할 수 있다.





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙

Check(REFB){
    IF CS THEN KS1 ELSE KS2
}

CS{
   getObjectLength(Building.RoofTop.FloorSlab)<=22 m
   getObjectWidth(Building.RoofTop.FloorSlab)<=22 m
}

KS1{
   getObjectLength(Heliport)>=15 m
   getObjectWidth(Heliport)>=15 m
}

KS2{
  getObjectLength(Heliport)>=22 m
   getObjectWidth(Heliport)>=22 m
} 




Python Code 변환 예정



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

①영 제46조에 따라 건축물에 설치하는 방화구획은 다음 각호의 기준에 적합하여야 한다. <개정 2010.4.7>





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


check(REFB_14_1){
KS
}

KS{
	getResult(REFB_14_1_1) = TRUE
	AND getResult(REFB_14_1_2) = TRUE
	AND getResult(REFB_14_1_3) = TRUE
} 




Python Code 변환 예정



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

1. 10층 이하의 층은 바닥면적 1천제곱미터(스프링클러 기타 이와 유사한 자동식 소화설비를 설치한 경우에는 바닥면적 3천제곱미터)이내마다 구획할 것





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



check(REFB_14_1_1){KS

}



KS{

	Floor myFloor{

		Floor.number>=10

	}



	IF (


        isExist(SprinklerSystem)=TRUE 
isObjectProperty(ExtinguishingSystem.isAutomatic) = TRUE


        ) 

	(

        isFirePartition(myFloor, 3000)=TRUE

        OR isFirePartition(myFloor, a, 1000)=TRUE

        )

	

} 




Python Code 변환 예정



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

2. 3층 이상의 층과 지하층은 층마다 구획할 것. 다만, 지하 1층에서 지상으로 직접 연결하는 경사로 부위는 제외한다.





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

check(REFB_14_1_2){
IF CS THEN KS
}

KS{
  Floor myFloor { 
         Floor.number>=3
         AND Floor.number<0
         }
  isObjectProperty(myFloor.isFirePartition)=TRUE
}



CS{
  Ramp myRamp{
         isGoThrough(getFloor(Floor.number=-1),Ramp,Ground)=TRUE
         }
         isObjectProperty(myRamp.isFirePartition)=FALSE  
}


 




Python Code 변환 예정



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

3. 11층 이상의 층은 바닥면적 200제곱미터(스프링클러 기타 이와 유사한 자동식 소화설비를 설치한 경우에는 600제곱미터)이내마다 구획할 것. 다만, 벽 및 반자의 실내에 접하는 부분의 마감을 불연재료로 한 경우에는 바닥면적 500제곱미터(스프링클러 기타 이와 유사한 자동식 소화설비를 설치한 경우에는 1천500제곱미터)이내마다 구획하여야 한다.





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





check(REFB_14_1_3){

KS2 AND IF CS THEN KS

}



  

Floor myFloor {

		getFloorNumebr()>= 11

              } 





KS2{

     isFirepartition(myFloor,200)=TRUE 

     OR 

     ((isExist(SprinklerSystem) = TRUE 

      OR isObjectProperty(ExtinguishingSystem.isAutomatic) = TRUE)

      AND isFirepartition(myFloor,600)=TRUE)

}



CS1 {

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

}



KS1 {

     isFirepartition(myFloor,500)=TRUE

     OR

      ((isExist(SprinklerSystem) = TRUE 

      OR isObjectProperty(ExtinguishingSystem.isAutomatic) = TRUE)

      AND isFirepartition(myFloor,1500)=TRUE)

} 




Python Code 변환 예정



Modify
33
25252 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 14조 3 항

③ 영 제46조제5항제3호에 따른 하향식 피난구(덮개, 사다리, 경보시스템을 포함한다)의 구조는 다음 각 호의 기준에 적합하게 설치하여야 한다. <신설 2010.4.7>





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

Check(REFB_14_3){
     KS
}

 KS{
     getResult(REFB_14_3_1)=True
     getResult(REFB_14_3_2)=True
     getResult(REFB_14_3_3)=True
      getResult(REFB_14_3_4)=True
 } 




Python Code 변환 예정



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



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

2. 상층·하층간 피난구의 설치위치는 수직방향 간격을 15센티미터 이상 띄어서 설치할 것





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

Check(REFB_14_3_2){
       KS
}

KS{
   getObjectVerticalDistance(myOpening, myOpening)> 15 cm  
} 




Python Code 변환 예정



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

4. 사다리는 바로 아래층의 바닥면으로부터 50센터미터 이하까지 내려오는 길이로 할 것





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



Check(REFB_14_3_4){

    KS

}



KS{

   getObjectVerticalDistance(Ladder, Floor.LowerFloor.FloorSlab.Surface, a)<= 50 cm 

} 




Python Code 변환 예정



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

①영 제48조의 규정에 의하여 건축물에 설치하는 계단은 다음 각호의 기준에 적합하여야 한다. <개정 2010.4.7>





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

check(REFB_15_1){

     KS

}



KS{

     getResult(REFB_15_1_1)= TRUE

     getResult(REFB_15_1_2)=TRUE

     getResult(REFB_15_1_3)=TRUE

     getResult(REFB_15_1_4)=TRUE

} 








std_floor_area = 200
std_floor_area_label = '기준 연면적'
min_w = 1.2
min_w_label = '최소 계단참 너비'
min_h = 2.1
min_h_label = '최소 계단 유효높이'

def Check():
    for building in SELECT('building'):
        if building.SELECT('prop', '연면적').NUMBER() <= std_floor_area:
            continue

        for stair in building.SELECT('stair'):
            height = stair.SELECT('height').UNIT('m')
            h = height.NUMBER()

            if h < min_h:
                stair.ERROR('계단 유효높이: ' + str(h) + ' < ' + str(min_h))
                continue

            if h >= 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 이내마다 계단참이 존재하지 않습니다.')
                        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))

            if h >= 1:
                if stair.SELECT('rail').COUNT() == 0:
                    stair.ERROR('난간이 설치되지 않았습니다.')
                else:
                    stair.SUCCESS('난간이 설치되어 있습니다.') 





Modify
38
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
39
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
40
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
41
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
42
25265 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 15조 2 항

②제1항의 규정에 의하여 계단을 설치하는 경우 계단 및 계단참의 너비(옥내계단에 한한다), 계단의 단높이 및 단너비의 칫수는 다음 각호의 기준에 적합하여야 한다. 이 경우 돌음계단의 단너비는 그 좁은 너비의 끝부분으로부터 30센티미터의 위치에서 측정한다. <개정 2003.1.6, 2005.7.22, 2010.4.7>





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

KS{
      IF getResult(REFB_15_1)=TRUE

      THEN  getResult(REFB_15_2_1)=TRUE
            getResult(REFB_15_2_2)=TRUE
            getResult(REFB_15_2_3)=TRUE
            getResult(REFB_15_2_4)=TRUE
            getResult(REFB_15_2_5)=TRUE
            getResult(REFB_15_2_6)=TRUE
      END IF 
}
 









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
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
25272 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 15조 3 항

③공동주택(기숙사를 제외한다)·제1종 근린생활시설·제2종 근린생활시설·문화 및 집회시설·종교시설·판매시설·운수시설·의료시설·노유자시설·업무시설·숙박시설·위락시설 또는 관광휴게시설의 용도에 쓰이는 건축물의 주계단·피난계단 또는 특별피난계단에 설치하는 난간 및 바닥은 아동의 이용에 안전하고 노약자 및 신체장애인의 이용에 편리한 구조로 하여야 하며, 양쪽에 벽등이 있어 난간이 없는 경우에는 손잡이를 설치하여야 한다. <개정 2010.4.7>





check(REFB_15_3){

     IF CS THEN KS

}



CS{

       getBuildingUsage()= "ClassINeighborhoodLivingFacility"

OR getBuildingUsage() = "ClassIINeighborhoodLivingFacility"

OR getBuildingUsage() = "CulturalAndAssemblyFacility"

OR getBuildingUsage() = "ReligiousFacility"

OR getBuildingUsage() = "CommercialFacility"

OR getBuildingUsage() = "TransportationFacility"

OR getBuildingUsage() = "MedicalFacility"

OR getBuildingUsage() = "FacilitiesForTheAgedAndChildren"

OR getBuildingUsage() = "BusinessFacility"

OR getBuildingUsage() = "LodgingFacility"

OR getBuildingUsage() = "AmusementFacility"

OR getBuildingUsage() = "FacilityForTourismAndRelaxation"

OR (getBuildingUsage() = "MultiUnitHouse" AND getBuildingUsage() != "Dormitory")

}



KS{

       isExist(Railing)=TRUE 

       OR (isExist(Railing)=FALSE AND isExist(Handle)=TRUE) 

} 




Python Code 변환 예정



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

④제3항의 규정에 의한 난간·벽 등의 손잡이와 바닥마감은 다음 각호의 기준에 적합하게 설치하여야 한다.





check(REFB_15_4){

     KS

}



KS{

       getResult(REFB_15_4_1)=TRUE

       AND getResult(REFB_15_4_2)=TRUE

       AND getResult(REFB_15_4_3)=TRUE

} 




Python Code 변환 예정



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

1. 손잡이는 최대지름이 3.2센티미터 이상 3.8센티미터 이하인 원형 또는 타원형의 단면으로 할 것





check(REFB_15_4_1){

     KS

}

KS{

       getElementWidth(Railing,Handle) >= 3.2CM

       AND getElementWidth(Handle) <= 3.8CM

       getObjectProperty(Handle.sectionShapeType)="Circle" OR "Oval"

} 




Python Code 변환 예정



Modify
52
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
53
25276 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 15조 4 항 3호

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





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

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




Python Code 변환 예정



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

⑤계단을 대체하여 설치하는 경사로는 다음 각호의 기준에 적합하게 설치하여야 한다. <개정 2010.4.7>





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

CS{
isEixst(Ramp)=TRUE 
}
KS {
getResult(REFB_15_5_1)=TRUE
getResult(REFB_15_5_3)=TRUE
}

 








std_floor_area = 200
std_floor_area_label = '기준 연면적'
max_v = 1/8
max_v_label = '최대 경사도'

def Check():
    for building in SELECT('building'):

        for ramp in building.SELECT('ramp'):
            if ramp.SELECT('prop', '계단대체경사로').BOOL() == False:
                continue

            for change in ramp.SELECT('level change'):
                gradient = change.SELECT('gradient')
                g = gradient.NUMBER()

                if g > max_v:
                    gradient.ERROR('경사도: ' + str(g) + ' > ' + str(max_v))
                else:
                    gradient.SUCCESS('경사도: ' + str(g) + ' <= ' + str(max_v)) 





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

1. 경사도는 1 : 8을 넘지 아니할 것





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

KS{
getObjectGradient(Ramp) <= 12.5%
} 








std_floor_area = 200
std_floor_area_label = '기준 연면적'
max_v = 1/8
max_v_label = '최대 경사도'

def Check():
    for building in SELECT('building'):

        for ramp in building.SELECT('ramp'):
            if ramp.SELECT('prop', '계단대체경사로').BOOL() == False:
                continue

            for change in ramp.SELECT('level change'):
                gradient = change.SELECT('gradient')
                g = gradient.NUMBER()

                if g > max_v:
                    gradient.ERROR('경사도: ' + str(g) + ' > ' + str(max_v))
                else:
                    gradient.SUCCESS('경사도: ' + str(g) + ' <= ' + str(max_v)) 





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

2. 표면을 거친 면으로 하거나 미끄러지지 아니하는 재료로 마감할 것





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

KS{
myRamp = getObject(Ramp)
getObjectproperty(myRamp, finish.material) == 'nonslip' or 'rough'
} 




Python Code 변환 예정



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

3. 경사로의 직선 및 굴절부분의 유효너비는 「장애인·노인·임산부등의 편의증진보장에 관한 법률」이 정하는 기준에 적합할 것





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

check(REFB_15_5_3){
     IF CS THEN KS
}
CS{
	isInstalled(Ramp, Building) = TRUE
}
KS{
	getResult(unimplemented_CDAPA) = TRUE
} 




Python Code 변환 예정



Modify
58
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
59
25287 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 15조의2조 2 항 1호

1. 당해 층의 바닥면적의 합계가 500제곱미터 미만인 경우 1.5미터 이상





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조의2 (복도의 너비 및 설치기준) 2항1호
check(REFB_15-2_2_1){
     KS
}
KS{ 
     IF getTotalFloorArea(Corridor.Floor.Space)<500 m2
       THEN getObjectProperty(Corridor.effectiveWidth)>=1.5 m
     END IF 
     
}
 








corridor_code = '33105'
std_floor_area = 200

corridor_code_label = '복도 공간분류코드'
std_floor_area_label = '기준 연면적'

def Check():
    for building in SELECT('building'):
        if building.SELECT('prop', '연면적').NUMBER() <= std_floor_area:
            continue

        bldg_use = building.SELECT('building type').STRING()
        sub_use = building.SELECT('prop', '세부용도').STRING()
        if not ((bldg_use == '문화 및 집회시설' and sub_use in ['공연장' ,'집회장', '관람장', '전시장'])
            or (bldg_use == '종교시설' and sub_use == '종교집회장')
            or (bldg_use == '노유자시설' and sub_use in ['아동관련시설' ,'노인복지시설'])
            or (bldg_use == '수련시설' and sub_use == '생활권수련시설')
            or (bldg_use == '위락시설' and sub_use == '유흥주점')
            or (bldg_use == '장례시설' and sub_use == '장례식장')):
            continue

        for storey in building.SELECT('storey'):
            area = 0.0
            corridors = []
            for space in storey.SELECT('space'):
                if space.SELECT('class code').STRING() == corridor_code:
                    corridors.append(space)
                
                area += space.SELECT('area').UNIT('m2').NUMBER()
            
            min_cor_w = 1.8
            if area < 500:
                min_cor_w = 1.5
            elif area >= 1000:
                min_cor_w = 2.4

            for space in corridors:    
                width = space.SELECT('min clear width').UNIT('m')
                w = width.NUMBER()

                if w < min_cor_w:
                    width.ERROR('유효너비: ' + str(w) + ' < ' + str(min_cor_w))
                else:
                    width.SUCCESS('유효너비: ' + str(w) + ' >= ' + str(min_cor_w)) 





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

2. 당해 층의 바닥면적의 합계가 500제곱미터 이상 1천제곱미터 미만인 경우 1.8미터 이상





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조의2 (복도의 너비 및 설치기준) 2항2호
check(REFB_15-2_2_2){
     KS
}
KS{ 
    IF getTotalFloorArea(Corridor.Floor.Space)>=500 m2
       getTotalFloorArea(Corridor.Floor.Space)<1000 m2
         THEN getObjectProperty(Corridor.effectiveWidth)>=1.8 m
     END IF 
}


 








corridor_code = '33105'
std_floor_area = 200

corridor_code_label = '복도 공간분류코드'
std_floor_area_label = '기준 연면적'

def Check():
    for building in SELECT('building'):
        if building.SELECT('prop', '연면적').NUMBER() <= std_floor_area:
            continue

        bldg_use = building.SELECT('building type').STRING()
        sub_use = building.SELECT('prop', '세부용도').STRING()
        if not ((bldg_use == '문화 및 집회시설' and sub_use in ['공연장' ,'집회장', '관람장', '전시장'])
            or (bldg_use == '종교시설' and sub_use == '종교집회장')
            or (bldg_use == '노유자시설' and sub_use in ['아동관련시설' ,'노인복지시설'])
            or (bldg_use == '수련시설' and sub_use == '생활권수련시설')
            or (bldg_use == '위락시설' and sub_use == '유흥주점')
            or (bldg_use == '장례시설' and sub_use == '장례식장')):
            continue

        for storey in building.SELECT('storey'):
            area = 0.0
            corridors = []
            for space in storey.SELECT('space'):
                if space.SELECT('class code').STRING() == corridor_code:
                    corridors.append(space)
                
                area += space.SELECT('area').UNIT('m2').NUMBER()
            
            min_cor_w = 1.8
            if area < 500:
                min_cor_w = 1.5
            elif area >= 1000:
                min_cor_w = 2.4

            for space in corridors:    
                width = space.SELECT('min clear width').UNIT('m')
                w = width.NUMBER()

                if w < min_cor_w:
                    width.ERROR('유효너비: ' + str(w) + ' < ' + str(min_cor_w))
                else:
                    width.SUCCESS('유효너비: ' + str(w) + ' >= ' + str(min_cor_w)) 





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

3. 당해 층의 바닥면적의 합계가 1천제곱미터 이상인 경우 2.4미터 이상





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조의2 (복도의 너비 및 설치기준) 2항3호
Check(REFB_15-2_2_3){
     KS
}
KS{ 
     IF getTotalFloorArea(Corridor.Floor.Space)>=1000 m2
        THEN getObjectProperty(Corridor.effectiveWidth)>=2.4 m
     END IF
}


 








corridor_code = '33105'
std_floor_area = 200

corridor_code_label = '복도 공간분류코드'
std_floor_area_label = '기준 연면적'

def Check():
    for building in SELECT('building'):
        if building.SELECT('prop', '연면적').NUMBER() <= std_floor_area:
            continue

        bldg_use = building.SELECT('building type').STRING()
        sub_use = building.SELECT('prop', '세부용도').STRING()
        if not ((bldg_use == '문화 및 집회시설' and sub_use in ['공연장' ,'집회장', '관람장', '전시장'])
            or (bldg_use == '종교시설' and sub_use == '종교집회장')
            or (bldg_use == '노유자시설' and sub_use in ['아동관련시설' ,'노인복지시설'])
            or (bldg_use == '수련시설' and sub_use == '생활권수련시설')
            or (bldg_use == '위락시설' and sub_use == '유흥주점')
            or (bldg_use == '장례시설' and sub_use == '장례식장')):
            continue

        for storey in building.SELECT('storey'):
            area = 0.0
            corridors = []
            for space in storey.SELECT('space'):
                if space.SELECT('class code').STRING() == corridor_code:
                    corridors.append(space)
                
                area += space.SELECT('area').UNIT('m2').NUMBER()
            
            min_cor_w = 1.8
            if area < 500:
                min_cor_w = 1.5
            elif area >= 1000:
                min_cor_w = 2.4

            for space in corridors:    
                width = space.SELECT('min clear width').UNIT('m')
                w = width.NUMBER()

                if w < min_cor_w:
                    width.ERROR('유효너비: ' + str(w) + ' < ' + str(min_cor_w))
                else:
                    width.SUCCESS('유효너비: ' + str(w) + ' >= ' + str(min_cor_w)) 





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

③문화 및 집회시설중 공연장에 설치하는 복도는 다음 각 호의 기준에 적합하여야 한다.





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조의2 (복도의 너비 및 설치기준) 3항
Check(REFB_15-2_3){
   IF CS THEN KS
}

CS{
   getSpaceUsage(Space)="CulturalAndAssemblyFacility.PerformanceHall"
   isExist(Corridor)=TRUE
}
KS{
    
     getResult(REFB_15-2_3_1) = TRUE
     getResult(REFB_15-2_3_2) = TRUE
} 








corridor_code = '33105'
theater_code = '00000'
std_floor_area = 200

corridor_code_label = '복도 공간분류코드'
theater_code_label = '관람석 공간분류코드'
std_floor_area_label = '기준 연면적'

def Check():
    for building in SELECT('building'):
        if building.SELECT('prop', '연면적').NUMBER() <= std_floor_area:
            continue

        bldg_use = building.SELECT('building type').STRING()
        sub_use = building.SELECT('prop', '세부용도').STRING()

        if not (bldg_use == '문화 및 집회시설' and sub_use == '공연장'):
            continue

        for storey in building.SELECT('storey'):
            for space in storey.SELECT('space'):
                if space.SELECT('class code').STRING() != theater_code:
                    continue
                
                area = space.SELECT('area').UNIT('m2').NUMBER()
                side_corridors = []
                fb_corridors = []

                for s in space.SELECT('side space'):
                    if s.SELECT('class code').STRING() == corridor_code:
                        side_corridors.append(s)

                for s in space.SELECT('front back space'):
                    if s.SELECT('class code').STRING() == corridor_code:
                        fb_corridors.append(s)

                if area >= 300:
                    if len(side_corridors) + len(fb_corridors) < 3:
                        space.ERROR('관람석의 양쪽과 뒤쪽 중 복도가 존재하지 않는 곳이 있습니다.')
                    else:
                        space.SUCCESS('관람석의 양쪽과 뒤쪽에 복도가 존재합니다.')
                else:
                    if len(side_corridors) == 2 or len(fb_corridors) == 2:
                        space.SUCCESS('관람석의 앞뒤쪽에 복도가 존재합니다.')
                    else:
                        space.ERROR('관람석의 앞뒤쪽 중 복도가 존재하지 않는 곳이 있습니다.') 





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

1. 공연장의 개별 관람석(바닥면적이 300제곱미터 이상인 경우에 한한다)의 바깥쪽에는 그 양쪽 및 뒤쪽에 각각 복도를 설치할 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조의2 (복도의 너비 및 설치기준) 3항1호
Check(REFB_15-2_3_1){
  IF CS THEN KS
}

CS{
    Space mySpace{
       getSpaceUsage(Space)="IndividualAuditorium"
    }

    getFloorArea(mySpace)>300 m2
}

KS{

} 








corridor_code = '33105'
theater_code = '00000'
std_floor_area = 200

corridor_code_label = '복도 공간분류코드'
theater_code_label = '관람석 공간분류코드'
std_floor_area_label = '기준 연면적'

def Check():
    for building in SELECT('building'):
        if building.SELECT('prop', '연면적').NUMBER() <= std_floor_area:
            continue

        bldg_use = building.SELECT('building type').STRING()
        sub_use = building.SELECT('prop', '세부용도').STRING()

        if not (bldg_use == '문화 및 집회시설' and sub_use == '공연장'):
            continue

        for storey in building.SELECT('storey'):
            for space in storey.SELECT('space'):
                if space.SELECT('class code').STRING() != theater_code:
                    continue
                
                area = space.SELECT('area').UNIT('m2').NUMBER()
                side_corridors = []
                fb_corridors = []

                for s in space.SELECT('side space'):
                    if s.SELECT('class code').STRING() == corridor_code:
                        side_corridors.append(s)

                for s in space.SELECT('front back space'):
                    if s.SELECT('class code').STRING() == corridor_code:
                        fb_corridors.append(s)

                if area >= 300:
                    if len(side_corridors) + len(fb_corridors) < 3:
                        space.ERROR('관람석의 양쪽과 뒤쪽 중 복도가 존재하지 않는 곳이 있습니다.')
                    else:
                        space.SUCCESS('관람석의 양쪽과 뒤쪽에 복도가 존재합니다.')
                else:
                    if len(side_corridors) == 2 or len(fb_corridors) == 2:
                        space.SUCCESS('관람석의 앞뒤쪽에 복도가 존재합니다.')
                    else:
                        space.ERROR('관람석의 앞뒤쪽 중 복도가 존재하지 않는 곳이 있습니다.') 





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

2. 하나의 층에 개별 관람석(바닥면적이 300제곱미터 미만인 경우에 한한다)을 2개소 이상 연속하여 설치하는 경우에는 그 관람석의 바깥쪽의 앞쪽과 뒤쪽에 각각 복도를 설치할 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조의2 (복도의 너비 및 설치기준) 3항2호



Check(REFB_15-2_3_2){

  IF CS THEN KS

}







CS{

    Space mySpace{

       getSpaceUsage(Space)="IndividualAuditorium"

    }



    getFloorArea(mySpace)>300 m2

    getObjectCount(Floor.One.mySpace)>=2 



}



KS{



} 








corridor_code = '33105'
theater_code = '00000'
std_floor_area = 200

corridor_code_label = '복도 공간분류코드'
theater_code_label = '관람석 공간분류코드'
std_floor_area_label = '기준 연면적'

def Check():
    for building in SELECT('building'):
        if building.SELECT('prop', '연면적').NUMBER() <= std_floor_area:
            continue

        bldg_use = building.SELECT('building type').STRING()
        sub_use = building.SELECT('prop', '세부용도').STRING()

        if not (bldg_use == '문화 및 집회시설' and sub_use == '공연장'):
            continue

        for storey in building.SELECT('storey'):
            for space in storey.SELECT('space'):
                if space.SELECT('class code').STRING() != theater_code:
                    continue
                
                area = space.SELECT('area').UNIT('m2').NUMBER()
                side_corridors = []
                fb_corridors = []

                for s in space.SELECT('side space'):
                    if s.SELECT('class code').STRING() == corridor_code:
                        side_corridors.append(s)

                for s in space.SELECT('front back space'):
                    if s.SELECT('class code').STRING() == corridor_code:
                        fb_corridors.append(s)

                if area >= 300:
                    if len(side_corridors) + len(fb_corridors) < 3:
                        space.ERROR('관람석의 양쪽과 뒤쪽 중 복도가 존재하지 않는 곳이 있습니다.')
                    else:
                        space.SUCCESS('관람석의 양쪽과 뒤쪽에 복도가 존재합니다.')
                else:
                    if len(side_corridors) == 2 or len(fb_corridors) == 2:
                        space.SUCCESS('관람석의 앞뒤쪽에 복도가 존재합니다.')
                    else:
                        space.ERROR('관람석의 앞뒤쪽 중 복도가 존재하지 않는 곳이 있습니다.') 





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

①영 제50조의 규정에 의하여 설치하는 거실의 반자(반자가 없는 경우에는 보 또는 바로 윗층의 바닥판의 밑면 기타 이와 유사한 것을 말한다. 이하같다)는 그 높이를 2.1미터 이상으로 하여야 한다.





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 16조 (거실의 반자높이) 1항

check(REFB_16_1){

     IF (CS) THEN KS

}



CS{

     getResult(REFB_16_2) = FALSE

}



KS{

     getSpaceHeight(Room, b) >= 2.1m

} 








min_h = 2.1
min_h_label = '최소 반자 높이'

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

        if not ((bldg_use in ['단독주택', '공동주택', '제1종 근린생활시설', '제2종 근린생활시설', '판매시설', '운수시설', '의료시설', '교육연구시설', '노유자시설', '수련시설', '운동시설', '업무시설', '숙박시설', '자동차 관련 시설', '교정 및 군사시설', '방송통신시설', '발전시설', '관광 휴게시설', '야영장 시설'])
                or (bldg_use == '위락시설' and sub_use != '유흥주점')):
            continue

        for space in building.SELECT('space'):
            dist = space.SELECT('ceiling height')
            height = dist.UNIT('m').NUMBER()
            if height < min_h:
                dist.ERROR('반자 높이 : ' + str(height) + ' < ' + str(min_h))
            else:
                dist.SUCCESS('반자 높이 : ' + str(height) + ' >= ' + str(min_h)) 





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

②문화 및 집회시설(전시장 및 동·식물원은 제외한다), 종교시설, 장례식장 또는 위락시설 중 유흥주점의 용도에 쓰이는 건축물의 관람석 또는 집회실로서 그 바닥면적이 200제곱미터 이상인 것의 반자의 높이는 제1항의 규정에 불구하고 4미터(노대의 아랫부분의 높이는 2.7미터)이상이어야 한다. 다만, 기계환기장치를 설치하는 경우에는 그러하지 아니하다. <개정 2010.4.7>





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 16조 (거실의 반자높이) 2항

check(REFB_16_2){

IF (CS1 AND CS2) THEN KS

}



CS1{



VentilatorEquipment myVentilatorEquipemnt{

isObjectProperty(VentilatorEquipment.isMechanical)=TRUE

}

	isExist(myVentilatorEquipemn) = FALSE 

}



CS2{

	Space mySpace{

		getSpaceUsage(Space) = “Auditorium”

		OR getSpaceUsage(Space) = “AssemblyHall”

	}



	((getBuildingUsage() = “CulturalAndAssemblyFacilities.Tavern”

	getBuildingUsage() != “ExhibitionHalls.Tavern”

	getBuildingUsage() != “ZoologicalAndBotanicalGardens.Tavern”)

	OR getBuildingUsage() = "ReligiousFacilities.Tavern” 








target_space_codes = ['33703', '33708']
min_h = 4.0
min_h_bal = 2.7
target_space_codes_label = '대상 공간분류코드'
min_h_label = '최소 반자 높이'
min_h_bal_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 not sub_use in ['전시장', '동물원', '식물원'])
                or (bldg_use in ['종교시설', '장례시설'])
                or (bldg_use == '위락시설' and sub_use == '유흥주점')):
            continue
        spaces = building.SELECT('space');

        for space in spaces:
            code = space.SELECT('class code').STRING()
            if not code in target_space_codes:
                continue
            area = space.SELECT('area').UNIT('m2').NUMBER()
            if area < 200:
                continue

            dist = space.SELECT('ceiling height')
            height = dist.UNIT('m').NUMBER()
            if height < min_h:
                dist.ERROR('반자 높이 : ' + str(height) + ' < ' + str(min_h))
            else:
                dist.SUCCESS('반자 높이 : ' + str(height) + ' >= ' + str(min_h))

        for space in spaces:
            if not '노대' in space.SELECT('name').STRING():
                continue
            for lower in space.SELECT('lower space'):
                code = lower.SELECT('class code').STRING()
                if not code in target_space_codes:
                    continue
                area = lower.SELECT('area').UNIT('m2').NUMBER()
                if area < 200:
                    continue
                pos = space.SELECT('center')
                dist = lower.SELECT('ceiling height', pos)
                height = dist.UNIT('m').NUMBER()
                if height < min_h_bal:
                    dist.ERROR('반자 높이 : ' + str(height) + ' < ' + str(min_h_bal))
                else:
                    dist.SUCCESS('반자 높이 : ' + str(height) + ' >= ' + str(min_h_bal)) 





Modify
67
25298 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 17조 2 항

②영 제51조의 규정에 의하여 환기를 위하여 거실에 설치하는 창문등의 면적은 그 거실의 바닥면적의 20분의 1 이상이어야 한다. 다만, 기계환기장치 및 중앙관리방식의 공기조화설비를 설치하는 경우에는 그러하지 아니하다.





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 17조 (채광 및 환기를 위한 창문등) 2항

check(REFB_17_2){

	IF !CS THEN KS

}



CS{

	AirConditioningSystem myAirConditioningSystem{

		isObjectProperty(AirConditioningSystem.isCentralControl)

	}



VentilatorEquipment myVentilatorEquipemnt{

isObjectProperty(VentilatorEquipment.isMechanical)=TRUE

}



	hasElement(Room, myVentilatorEquipemnt)= TRUE 

	OR hasElement(Room, myAirConditioningSystem) = TRUE

}



KS{

	Window myWindow{

		hasElement(Room, Window) = TRUE

	}

		getElementArea(myWindow) >= getFloorArea(Room)*0.05

} 




Python Code 변환 예정



Modify
68
25299 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 17조 3 항

③제1항 및 제2항의 규정을 적용함에 있어서 수시로 개방할 수 있는 미닫이로 구획된 2개의 거실은 이를 1개의 거실로 본다.





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 17조 (채광 및 환기를 위한 창문등) 3항

check(REFB_17_3){

	IF CS THEN KS

}



CS{

Door myDoor{
getObjectProperty(Door.panelOperationType) = "SlidingDoor"
}

	Room myRoom{

		isPartitioned(Room, myDoor, Room) = TRUE

	}

}



KS{

	myRoom = Room

} 




Python Code 변환 예정



Modify
69
25302 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 18조 1 항

①영 제52조의 규정에 의하여 건축물의 최하층에 있는 거실바닥의 높이는 지표면으로부터 45센티미터 이상으로 하여야 한다. 다만, 지표면을 콘크리트바닥으로 설치하는 등 방습을 위한 조치를 하는 경우에는 그러하지 아니하다.





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 18조 (거실등의 방습) 1항





Check(REFB_18_1){

IF !CS THEN KS}







KS{

 getObjectHeight(getFloor(BottomFloor))>=45CM

}





CS {

 isObjectProperty(Ground.Surface.isDampProof)=TRUE 

} 








// 변환중

Check():

KS{

    myFloors = getFloor(BottomFloor)
    for myFloor in myFloors:
        if getObjectHeight(myFloor)>= 4500:
            myFloor.SUCCESS("BottomFloor elevation:"+ str(getObjectHeight(myFloor))  + 'mm')
        else:
            myFloor.Fail("BottomFloor elevation:"+ str(getObjectHeight(myFloor))  + 'mm')


}


CS{

    isObjectProperty(Ground.Surface.isDampProof)=TRUE

}


getobjectheight(str objname):
    objheight = root.select(obj).height().unit('m').number()
    return objheight

def getfloor(floor):
    if type(floor) == int:
        floornum = floor
        myfloor = root.select('slab')
        myfloor = myfloor.select(floornum)
        return myfloor

    elif type(floor) == str:
        floorname = floor
        myfloor = root.select('slab')
        myfloor = myfloor.select(floorname)
        return myfloor 





Modify
70
25303 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 18조 2 항

②영 제52조에 따라 다음 각 호의 어느 하나에 해당하는 욕실 또는 조리장의 바닥과 그 바닥으로부터 높이 1미터까지의 안벽의 마감은 이를 내수재료로 하여야 한다. <개정 2010.4.7>





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 18조 (거실등의 방습) 2항





Check(REFB_18_2){

  IF CS THEN KS

}



CS{

 getResult(REFB_18_2_1)=TRUE

 OR getResult(REFB_18_2_2)=TRUE

}



KS{

  Finish myFinish{

    getObjectDistance(Finish,floor)<=1



  isObjectPropert(InteriorFinish.Material.waterResistance)=TRUE

} 




Python Code 변환 예정



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

1. 제1종 근린생활시설중 목욕장의 욕실과 휴게음식점의 조리장





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 18조 (거실등의방습) 2항1호





Check(REFB_18_2_1){

KS

}







KS{

Space mySpace1{
getSpaceUsage() = "Bathroom"
}
Space mySpace2{
getSpaceUsage() = "Kitchen"
}

getBuildingUsage(mySpace1.Building) = "ClassINeighborhoodLivingFacility.BathHouse"
OR 
 getBuildingUsage(mySpace2.Building) = "ClassINeighborhoodLivingFacility.RestingRestaurant"


} 




Python Code 변환 예정



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

2. 제2종 근린생활시설중 일반음식점 및 휴게음식점의 조리장과 숙박시설의 욕실





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 18조 (거실등의 방습) 2항 2호



Check(REFB_18_2_2){

KS

}



KS{

Space mySpace1{
getSpaceUsage() = "Kitchen"
}
Space mySpace2{
getSpaceUsage() = "Bathroom"
}

getBuildingUsage(mySpace1.Building) = "ClassINeighborhoodLivingFacility.Restarant"
OR 
 getBuildingUsage(mySpace2.Building) = "ClassINeighborhoodLivingFacility.LodgingFacilities"

} 




Python Code 변환 예정



Modify
73
25307 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 19조 1 항

①영 제53조의 규정에 의하여 건축물에 설치하는 경계벽 및 간막이벽은 내화구조로 하고, 지붕밑 또는 바로 윗층의 바닥판까지 닿게 하여야 한다.





check(REFB_19_1){

     KS

}



KS{

Wall myWall{
   isObjectProperty(Wall.isPartitionWall) = TRUE
}
Floor myFloor{
hasObject(Floor, myWall)
}
   isFireResistantStructure(myWall)=TRUE
(isConnectedTo(myWall, Roof.BottomSurface) = TRUE
 OR isCOnnectedTo(myWall, myFloor.UpperFloor.FloorSlab) = TRUE)

} 








def Check():
    for building in SELECT('building'):
        bldg_use = building.SELECT('building type').STRING()
        sub_use = building.SELECT('prop', '세부용도').STRING()
        space_codes = []
        
        if bldg_use == '단독주택' and sub_use == '다가구주택':
            space_codes = ['가구'] #가구
        elif (bldg_use == '공동주택' and sub_use != '기숙사') or (bldg_use == '노유자시설' and sub_use == '노인복지주택'):
            space_codes = ['33237'] #세대
        elif bldg_use == '공동주택' and sub_use == '기숙사':
            space_codes = ['33230'] #침실
        elif bldg_use == '의료시설':
            space_codes = ['34310'] #병실
        elif bldg_use == '교육연구시설' and sub_use == '학교':
            space_codes = ['34404', '34409']    #교실
        elif bldg_use == '숙박시설':
            space_codes = ['33201'] #객실
        elif (bldg_use == '제2종 근린생활시설' and sub_use == '다중생활시설') or (bldg_use == '노유자시설' and sub_use == '노인요양시설'):
            space_codes = ['호실'] #호실
        else:
            return

        for storey in building.SELECT('storey'):
            walls_list = []
            for space in storey.SELECT('space'):
                code = space.SELECT('class code').STRING()
                if code in space_codes:
                    walls_list.append(space.SELECT('wall'))
            
            n = len(walls_list)
            for i, walls in enumerate(walls_list):
                if i == n-1:
                    break
                for j, walls2 in enumerate(walls_list):
                    if i >= j:
                        continue
                    for wall in walls:
                        if wall.SELECT('isexterior').BOOL():
                            continue
                        id = wall.SELECT('element id').STRING()
                        for wall2 in walls2:
                            if wall2.SELECT('isexterior').BOOL():
                                continue
                            id2 = wall2.SELECT('element id').STRING()
                            if id == id2:
                                if wall.SELECT('prop', '경계벽').BOOL() == False:
                                    wall.ERROR('해당 벽은 경계벽이어야 합니다.')
                                else:
                                    if wall.SELECT('prop', '내화구조').BOOL() == False:
                                        wall.ERROR('경계벽은 내화구조이어야 합니다.')
                                    else:
                                        if wall.SELECT('top touched').BOOL():
                                            wall.SUCCESS('경계벽 조건에 부합합니다.')
                                        else:
                                            wall.ERROR('경계벽 상단이 슬라브와 닿지 않습니다.')
                                break 





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

1. 철근콘크리트조·철골철근콘크리트조로서 두께가 10센티미터이상인 것





check(REFB_19_2_1){

     KS

}



KS{
Wall myWall{
   isObjectProperty(Wall.isPartitionWall) = TRUE
}
   getObjectProperty(myWall.Structure.materialType) = "ReinforcedConcrete" OR "SteelFramedReinforcedConcrete" 

   AND getObjectThickness(myWall) >= 10CM

} 




Python Code 변환 예정



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

2. 무근콘크리트조 또는 석조로서 두께가 10센티미터(시멘트모르타르·회반죽 또는 석고플라스터의 바름두께를 포함한다)이상인 것





check(REFB_19_2_2){

     KS

}



KS{
Wall myWall{
   isObjectProperty(Wall.isPartitionWall) = TRUE
}

   getObjectProperty(myWall.Structure.materialType) = "PlainConcrete" OR "Stone" 
 getObjectThickness(myWall) >= 10CM

} 




Python Code 변환 예정



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

3. 콘크리트블록조 또는 벽돌조로서 두께가 19센티미터 이상인 것





check(REFB_19_2_3){

     KS

}



KS{
Wall myWall{
   isObjectProperty(Wall.isPartitionWall) = TRUE
}

   getObjectProperty(myWall.Structure.materialType) = "ConcreteBlock" OR "Brick" 
 getObjectThickness(myWall) >= 19CM

} 




Python Code 변환 예정



Modify
77
25314 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 20조

제20조(건축물에 설치하는 굴뚝) 영 제54조에 따라 건축물에 설치하는 굴뚝은 다음 각호의 기준에 적합하여야 한다. <개정 2010.4.7>





check(REFB_20){

     KS

}



KS{

     isExist(Chimney)=TRUE

     AND (getResult(REFB_20_0_1)=TRUE

       

          AND getResult(REFB_20_0_3)=TRUE

          AND getResult(REFB_20_0_4)=TRUE)

} 




Python Code 변환 예정



Modify
78
25316 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 21조 1 항

①영 제57조제2항에 따라 건축물에 설치하는 방화벽은 다음 각호의 기준에 적합하여야 한다. <개정 2010.4.7>





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 21조 (방화벽의 구조) 1항

Check(REFB_21_1){
     KS 
}

KS{
   getResult(REFB_21_1_1)=True
   getResult(REFB_21_1_2)=True
   getResult(REFB_21_1_3)=True
} 




Python Code 변환 예정



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

1. 내화구조로서 홀로 설 수 있는 구조일 것





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

Check(REFB_21_1_1){
     KS
}

KS{
   Wall myWall{
       isObjectProperty(Wall.isFireProofWall)=True
   }
   
   isObjectProperty(myWall.isfireResistantStructure)=True
}

 




Python Code 변환 예정



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

2. 방화벽의 양쪽 끝과 윗쪽 끝을 건축물의 외벽면 및 지붕면으로부터 0.5미터 이상 튀어 나오게 할 것





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

Check(REFB_21_1_2){
     KS
}

KS{
   Object myObject{
      //방화벽의 양쪽 끝과 윗쪽 끝
   }  

   Wall myWall{
      isObjectProperty(Wall.isExternal)=True
   }

    getObjectDistance(myObject, myWall)>=0.5 m
    getObjectDistance(myObject, Roof)>=0.5 m
} 




Python Code 변환 예정



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

3. 방화벽에 설치하는 출입문의 너비 및 높이는 각각 2.5미터 이하로 하고, 해당 출입문에는 제26조에 따른 갑종방화문을 설치할 것





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

Check(REFB_21_1_3){
      KS
}

KS{
     Door myDoor{
      isObjectProperty(Door.isEntrance)=True
      isInstalled(Door, myWall)=True
    }

    getObjectWidth(myDoor)<=2.5 m
    getObjectHeight(myDoor)<=2.5 m
    isObjectProperty(myDoor.isStrictFireproofDoor)=True
  
} 




Python Code 변환 예정



Modify
82
25320 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 21조 2 항

②제14조제2항의 규정은 제1항의 규정에 의한 방화벽의 구조에 관하여 이를 준용한다.





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 21조 (방화벽의 구조) 2항
Check(REFB_21_2){
	KS
}

KS{
	getResult(REFB_14_1) = TRUE
	getResult(REFB_14_2) = TRUE
} 




Python Code 변환 예정



Modify
83
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
84
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
85
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
86
25340 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 25조 1 항 3호

3. 거실의 바닥면적의 합계가 1천제곱미터 이상인 층에는 환기설비를 설치할 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 25조 (지하층의 구조) 1항 3호
check(REFB_25_1_3){
	getTotalFloorArea(Room) >= 1000 m2
	isExist(VentilationSystem) = TRUE
} 




Python Code 변환 예정



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

4. 지하층의 바닥면적이 300제곱미터 이상인 층에는 식수공급을 위한 급수전을 1개소이상 설치할 것





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

check(REFB_25_1_4){

Floor myFloor{
Floor.number < 0
}
	getTotalFloorArea(myFloor) >= 300 m2

	getObjectCount(Hydrant) >= 1

} 




Python Code 변환 예정



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

②제1항제1호에 따른 지하층의 비상탈출구는 다음 각호의 기준에 적합하여야 한다. 다만, 주택의 경우에는 그러하지 아니하다. <개정 2000.6.3, 2010.4.7>





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 25조 (지하층의 구조) 2항
check(REFB_25_2){
	IF !(CS) THEN KS
}

CS{
	getBuildingUsage() = "House"
}

KS{
	getResult(REFB_25_2_1) = TRUE
	getResult(REFB_25_2_2) = TRUE
	getResult(REFB_25_2_3) = TRUE
	getResult(REFB_25_2_4) = TRUE
	getResult(REFB_25_2_5) = TRUE
	getResult(REFB_25_2_7) = TRUE
} 




Python Code 변환 예정



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

1. 비상탈출구의 유효너비는 0.75미터 이상으로 하고, 유효높이는 1.5미터 이상으로 할 것





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

check(REFB_25_2_1){

Door myDoor{
Door.functionType = "Emergency"
Door.Floor.number < 0
}
	getObjectWidth(myDoor, a) >= 0.75 m 

	getObjectHeight(myDoor) >= 1.5 m

} 




Python Code 변환 예정



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

2. 비상탈출구의 문은 피난방향으로 열리도록 하고, 실내에서 항상 열 수 있는 구조로 하여야 하며, 내부 및 외부에는 비상탈출구의 표시를 할 것





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

Check(REFB_25_2_2){

Door myDoor{
Door.functionType = "Emergency"
 < 0
}
	isEgressDirection(myDoor) = TRUE

} 




Python Code 변환 예정



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

3. 비상탈출구는 출입구로부터 3미터 이상 떨어진 곳에 설치할 것





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

check(REFB_25_2_3){

Door myDoor{
Door.functionType = "Emergency"
Door.Floor.number < 0
}
	getSpaceDistance(myDoor, Door) >= 3 m 

} 




Python Code 변환 예정



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

4. 지하층의 바닥으로부터 비상탈출구의 아랫부분까지의 높이가 1.2미터 이상이 되는 경우에는 벽체에 발판의 너비가 20센티미터 이상인 사다리를 설치할 것





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

check(REFB_25_2_4){

	IF CS THEN KS

}



CS{
Door myDoor{
Door.functionType = "Emergency"
Door.Floor.number < 0
}
Floor myFloor{
Floor.number < 0 
}
	getObjectVerticalDistance(myFloor, myDoor) >= 1.2 m

}



KS{

	isConnectedTo(Wall, Ladder) = TRUE

	getObjectProperty(Ladder.footholdWidth) >= 20 cm

} 




Python Code 변환 예정



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



Modify
95
25359 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 23조 1 항

①「건축법」 (이하 "법"이라 한다) 제51조제3항에 따라 방화지구 내 건축물의 지붕으로서 내화구조가 아닌 것은 불연재료로 하여야 한다. <개정 2005.7.22, 2010.12.30>





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 23조 (방화지구안의 지붕ㆍ방화문 및 외벽등) 1항

Check(REFB_23_1){

	IF CS THEN KS

}



CS{


	Building myBuilding{
getObjectProperty(Building.SpecialPurposeDistrict.type) = "FirePreventionDistrict"
	}



	Roof myRoof{

		hasObject(myBuilding, Roof) = TRUE

	}



	isObjectProperty(myRoof.isFireResistantStructure) != TRUE

}



KS{

	isObjectProperty(myRoof.Material.nonCombustibility) = TRUE

} 




Python Code 변환 예정



Modify
96
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
97
25367 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 24조 2 항

②영 제61조제1항 각 호의 건축물 중 다음 각 호의 어느 하나에 해당하는 거실의 벽 및 반자의 실내에 접하는 부분의 마감은 제1항에도 불구하고 불연재료 또는 준불연재료로 하여야 한다. <개정 2003.1.6, 2005.7.22, 2006.6.29, 2010.4.7, 2010.12.30>





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 24조 (건축물의 마감재료) 2항



check(REFB_24_2){

     IF CS THEN KS

}





CS{

    getResult(REFB_24_2_1)=TRUE

    OR getResult(REFB_24_2_2)=TRUE

}



KS{

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

OR isObjectProperty(CeilingCovering.InteriorFinish.Material.quasiNonCombustibility)=TRUE )


(isObjectProperty(Room.Wall.InteriorFinish.Material.nonCombustibility)=TRUE

 OR isObjectProperty(Room.Wall.InteriorFinish.Material.quasiNonCombustibility)=TRUE

)

} 




Python Code 변환 예정



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

1. 영 제61조제1항 각 호에 따른 용도에 쓰이는 거실 등을 지하층 또는 지하의 공작물에 설치한 경우의 그 거실(출입문 및 문틀을 포함한다)





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 24조 (건축물의 마감재료) 2항1호
check(REFB_24_2_1){
       KS
}

KS{

  Building myBuilding{
     getResult(EDBA_61_1_1)=TRUE
      OR getResult(EDBA_61_1_2)=TRUE
      OR getResult(EDBA_61_1_3)=TRUE
      OR getResult(EDBA_61_1_4)=TRUE
      OR getResult(EDBA_61_1_5)=TRUE
      OR getResult(EDBA_61_1_6)=TRUE
      OR getResult(EDBA_61_1_7)=TRUE
  }
     
  Room myRoom{
      getSpace(myBuilding.Room)
  }
    getFloorNumber(myRoom)<0 

} 




Python Code 변환 예정



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

2. 영 제61조제1항제6호에 따른 용도에 쓰이는 건축물의 거실





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 24조 (건축물의 마감재료) 2항2호
check(REFB_24_2_2){
       KS
}

KS{
     Building myBuilding{
       getResult(EDBA_61_1_1)=TRUE
    }
      
    str= myBuilding.usage

    getSpaceUsage(Room)=str
}

 




Python Code 변환 예정



Modify
100
25370 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 24조 3 항

③법 제52조제1항에서 "내부마감재료"란 건축물 내부의 천장·반자·벽(간막이벽 포함)·기둥 등에 부착되는 마감재료를 말한다. 다만, 「다중이용업소의 안전관리에 관한 특별법 시행령」 제3조에 따른 실내장식물을 제외한다. <신설 2003.1.6, 2005.7.22, 2010.4.7, 2010.12.30>





check(REFB_24_3){
      KS
}

KS{
     
} 




Python Code 변환 예정



Modify
  ◁prev 1   2   3   4   5   6   7   8   9   10   next▷ NEXT10▶