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

5. 측면 낙뢰를 방지하기 위하여 높이가 60미터를 초과하는 건축물 등에는 지면에서 건축물 높이의 5분의 4가 되는 지점부터 최상단부분까지의 측면에 수뢰부를 설치하여야 하며, 지표레벨에서 최상단부의 높이가 150미터를 초과하는 건축물은 120미터 지점부터 최상단부분까지의 측면에 수뢰부를 설치할 것. 다만, 건축물의 외벽이 금속부재(部材)로 마감되고, 금속부재 상호간에 제4호 후단에 적합한 전기적 연속성이 보장되며 피뢰시스템레벨 등급에 적합하게 설치하여





//건축물의 설비기준 등에 관한 규칙 20 (피뢰설비) 5호

Check(RFB_20_0_5){

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

}

CS1{

	getBuildingHeight() > 60m

}

KS1{

	BH1 = getBuildingHeight()

	isInstalled(Terminal, Building, a, side) = TRUE

	getObjectVerticalDistance(Ground, Terminal, a) >= BH1 * 4/5

	getObjectVerticalDistance(Ground, Terminal, a) < BH1

}

CS2{

	getBuildingHeight() > 150m

}

KS2{

	BH2 = getBuildingHeight()

	isInstalled(Terminal, Building, a, side) = TRUE

	getObjectVerticalDistance(Ground, Terminal, a) >= 120m

	getObjectVerticalDistance(Ground, Terminal, a) < BH2

} 




Python Code 변환 예정



2
건축물의 에너지절약설계기준 제 5조 9호 다 목

다. "거실의 외벽”이라 함은 거실의 벽 중 외기에 직접 또는 간접 면하는 부위를 말한다. 다만, 복합용도의 건축물인 경우에는 해당 용도로 사용하는 공간이 다른 용도로 사용하는 공간과 접하는 부위를 외벽으로 볼 수 있다.





//  옥내소화전설비의 화재안전기준(nfsc 102) 6조 (배관 등) 13항 3호

Check(NFSC503A_6_13_3){

  KS

}

KS{

	Port myPort{ 

	getObjectProperty(IndoorFireHydrantSystem.Port.typeForWater) = "FireDepartmentConnection" 

 	}

 	getObjectVerticalDistance(Ground, myPort) >= 0.5m

 	getObjectVerticalDistance(Ground, myPort) <= 1m

} 




Python Code 변환 예정



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

가. 건축물 외벽, 천장 및 바닥으로의 열손실을 방지하기 위하여 기준에서 정하는 단열두께보다 두껍게 설치하여 단열부위의 열저항을 높이도록 한다.





//스프링클러설비의 화재안전기준(nfsc 103) 11조 (송수구) 6호

Check(NFSC103_11_0_6){
	KS
}
KS{
	Port myPort{
	isObjectProperty(Port.typeForWater) = "FireDepartmentConnection"
	}
	getObjectVerticalDistance(Ground, myPort, a) >= 0.5m
	getObjectVerticalDistance(Ground, myPort, a) <= 1m
} 




Python Code 변환 예정



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

제8조(기계부문의 의무사항) 에너지절약계획서 제출대상 건축물의 건축주와 설계자 등은 다음 각 호에서 정하는 기계부문의 설계기준을 따라야 한다.





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

KS{
	getSpaceUsage() = "EntranceHall"
	OR getSpaceUsage() = "Lobby"

	getObjectVerticalLocation(Ground, Space) >= 20m
} 




Python Code 변환 예정



5
건축물의 에너지절약설계기준 제 9조 2호 나 목

나. 난방기기, 냉방기기, 냉동기, 송풍기, 펌프 등은 부하조건에 따라 최고의 성능을 유지할 수 있도록 대수분할 또는 비례제어운전이 되도록 한다.





// 간이스프링클러설비의 화재안전기준(nfsc 103a) 4조 (수원) 2항 2호







Check(NFSC503A_4_2_2){



	KS



}



KS{



Pipe myPipe{

getObjectProperty(Pipe.usage)= "WaterSupplyPipe"

getObjectProperty(Pipe.systemType)="SimpleSprinklerSystem"
isObjectProperty(Pipe.isRiser)= TRUE

}



	Tank myTank{ 



	getObjectProperty(Tank.operationType) = "ElevatedWaterTank"



	}



	Port myPort1{



	getObjectProperty(Port.typeForWater) = "Supply"



	isConnectedTo(Port,myTank) = TRUE



	isConnectedTo(Port,myWaterSupplyPipe) = TRUE



	}







	Port myPort2 {



	getObject(Port) - getObject(myPort1)



	}







	Distance1 = getObjectVerticalDistance(myPort1, Ground.Surface, b)  



	Distance2 = getObjectVerticalDistance(myPort2, Ground.Surface, b)







	Distance1 - Distance2 < 0



} 




Python Code 변환 예정



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



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

1. 굴뚝의 옥상 돌출부는 지붕면으로부터의 수직거리를 1미터 이상으로 할 것. 다만, 용마루ㆍ계단탑ㆍ옥탑등이 있는 건축물에 있어서 굴뚝의 주위에 연기의 배출을 방해하는 장애물이 있는 경우에는 그 굴뚝의 상단을 용마루ㆍ계단탑ㆍ옥탑등보다 높게 하여야 한다.





check(REFB_20_0_1){
     KS
}

KS{
     getObjectDistance(Chimney, Ground)
     -getObjectDistance(Roof, Ground)>= 1M
} 
 




Python Code 변환 예정



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



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



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

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





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

check(REFB_9_2_2_4){

	KS     

}

KS {

	isObjectProperty(Stair.isFireResistantStructure) = TRUE

	isAccessible(Stair, Ground)= TRUE

} 




Python Code 변환 예정



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



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



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





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



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



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



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



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





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





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



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



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

2. 물품의 제조·가공·보관 및 운반 등에 필요한 대형기기 설비의 설치 및 이동식 물류설비의 작업활동을 위하여 불가피한 부분





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

check(EDBA_46_2_2){

IF CS THEN KS

}



KS{

isExist(StationaryLargeComponent)=TRUE

}



CS{

Floor myFloor{
getFloorNumber()<0
}

AND isAccessible(myFloor, Ground) = TRUE

} 




Python Code 변환 예정



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





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



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



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



27
다중이용업소의 안전관리에 관한 특별법 시행령 제 2조 5호

5. 「게임산업진흥에 관한 법률」 제2조제6호ㆍ제6호의2ㆍ제7호 및 제8호의 게임제공업ㆍ인터넷컴퓨터게임시설제공업 및 복합유통게임제공업. 다만, 게임제공업 및 인터넷컴퓨터게임시설제공업의 경우에는 영업장(내부계단으로 연결된 복층구조의 영업장은 제외한다)이 지상 1층 또는 지상과 직접 접하는 층에 설치되고 그 영업장의 주된 출입구가 건축물 외부의 지면과 직접 연결된 구조에 해당하는 경우는 제외한다.





//다중이용업소의 안전관리에 관한 특별법 시행령 2조 (다중이용업) 5호


Check(ERSASP_2_0_5){
KS1 AND IF CS THEN !KS2
}


KS1{
getObjectProperty(Building.business)= "GIPA_2_0_6"
OR getObjectProperty(Building.business)= "GIPA_2_0_6-2"
OR getObjectProperty(Building.business)= "GIPA_2_0_7"
OR getObjectProperty(Building.business)= "GIPA_2_0_8"
}


CS{
getObjectProperty(Building.business)= "GIPA_2_0_6"
OR getObjectProperty(Building.business)= "GIPA_2_0_7"
}

KS2{
Space mySpace{
Space.usage = "GIPA_2_0_6"
OR Space.usage = "GIPA_2_0_7"
}
Floor myFloor{
hasObject(Floor,mySpace)=TRUE
}
Door myDoor{
isObjectProperty(mySpace.Door.isEntrance)=TRUE
}

(getObjectProperty(myFloor.number)=1
OR isDirectlyAccessible(myFloor, Ground)=TRUE)
isConnectedToExternal(myDoor)=TRUE
} 




Python Code 변환 예정



28
연결살수설비의 화재안전기준(NFSC 503) 제 4조 1 항 4호

4. 지면으로부터 높이가 0.5m 이상 1m 이하의 위치에 설치할 것





Check(NFSC503_4_1_4){

 KS

}

KS{

	Port myPort{ 
getObjectProperty(Port.systemType) = "HookingUpSprinklerSystem"

	getObjectProperty(Port.typeForWater) = "FireDepartmentConnection" 

 	}

 	getObjectVerticalDistance(Ground, myPort) >= 0.5m

 	getObjectVerticalDistance(Ground, myPort) <= 1m

} 




Python Code 변환 예정



29
연결송수관설비의 화재안전기준(NFSC 502) 제 4조 2호

2. 지면으로부터 높이가 0.5m 이상 1m 이하의 위치에 설치할 것





//연결송수관설비의 화재안전기준(NFSC 502) 4조 (송수구) 2호

Check(NFSC502_4_0_2){
        KS
}

KS{
       getObjectVerticalDistance(Ground, FireDepartmentConnection)>=0.5 m
       getObjectVerticalDistance(Ground, FireDepartmentConnection)<=1 m
} 




Python Code 변환 예정



30
연결송수관설비의 화재안전기준(NFSC 502) 제 6조 1호 다 목

다. 송수구가 부설된 옥내소화전을 설치한 특정소방대상물(집회장·관람장·백화점·도매시장·소매시장·판매시설·공장·창고시설 또는 지하가를 제외한다)로서 다음의 어느 하나에 해당하는 층 (1) 지하층을 제외한 층수가 4층 이하이고 연면적이 6,000㎡ 미만인 특정소방대상물의 지상층 (2) 지하층의 층수가 2 이하인 특정소방대상물의 지하층





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



Check(NFSC502_6_0_1_다목){

         KS

}



KS{

       getBuildingUsage()!="AssemblyHall"

       getBuildingUsage()!="Auditorium"

       getBuildingUsage()!="DepartmentStore"

       getBuildingUsage()!="WholesaleMarket"

       getBuildingUsage()!="CommercialFacility"

       getBuildingUsage()!="Factory"

       getBuildingUsage()!="Warehouse"

       getBuildingUsage()!="UndergroundMarket"



      

FireHydrant myFireHydrant{
isExternal(FireHydrant)  = FALSE
         isInstalled(FireDepartmentConnection, FireHydrant)=True

    }       



    isInstalled(myIndoorFireHydrant,SpecificFireFightingBuilding)=True



    Floor myFloor{

            Floor.number>0

    }

    Floor myFloor2{

            Floor.number<0

    }

    (

    gerObjectCount(myFloor)<=4 

    getGrossFloorArea()<6000 m2

    Floor.number>0

    )



    OR 

    (

     getObjectCount(myFloor)<=2

     Floor.number<0        

    )

    



    

} 




Python Code 변환 예정



31
연결송수관설비의 화재안전기준(NFSC 502) 제 6조 2호 가 목

가. 지하가(터널은 제외한다) 또는 지하층의 바닥면적의 합계가 3,000㎡ 이상인 것은 수평거리 25m





//연결송수관설비의 화재안전기준(NFSC 502) 6조 (방수구) 2호 가목



Check(NFSC502_6_0_2_가){



    IF CS THEN KS1 ELSE KS2

}



CS{

       Space mySpace{

            getSpaceUsage()="UndergroundMarket"

            OR getFloorNumber()<0

        }



       getFloorArea(mySpace)>3000 m2

}



KS1{



    getElementDistance(FireDepartmentConnectionSystem.OutLet, Wall )<=25 m

    getElementDistance(FireDepartmentConnectionSystem.OutLet, Column )<=25 m



}





KS2{

       getResult(NFSC502_6_0_2_나)=True

 } 




Python Code 변환 예정



32
연소방지설비의 화재안전기준(NFSC 506) 제 6조 4호

4. 지면으로부터 높이가 0.5m 이상 1m 이하의 위치에 설치할 것





//	연소방지설비의 화재안전기준(nfsc 506) 6조 (송수구) 4호
Check(NFSC506_6_0_4){
	KS
}

KS{
	Port myPort{
		getObjectProperty(Port.typeForWater) = "FireDepartmentConnection"
		isInstalled(Port, CombustionProtectionSystem) = TRUE
	}
		
	getObjectVerticalLocation(myPort, Ground) >= 0.5m
	getObjectVerticalLocation(myPort, Ground) <= 1m
}
 




Python Code 변환 예정



33
유도등 및 유도표지의 화재안전기준(NFSC 303) 제 4조

제4조(유도등 및 유도표지의 종류) 특정소방대상물의 용도별로 설치하여야 할 유도등 및 유도표지는 다음 표에 따라 그에 적응하는 종류의 것으로 설치하여야 한다.<개정 2008.12.15, 2012.8.20>





// 유도등 및 유도표지의 화재안전기준(nfsc 303) 4조 (유도등 및 유도표지의 종류) 

Check(NFSC303_4){
   KS
}

KS{
  LeadingLight myLeadingLight1{
      // isObejctProperty(LeadingLight.isForExit)=True, 대형
  }

  LeadingLight myLeadingLight2{
     //  isObejctProperty(LeadingLight.isForExit)=True , 중형
  }

  LeadingLight myLeadingLight3{
     //  isObejctProperty(LeadingLight.isForExit)=True, 소형
  }


  LeadingLight myLeadingLight4{
       isObejctProperty(LeadingLight.isForPassage)=True
  }

  LeadingLight myLeadingLight5{
       isObjectProperty(LeadingLight.isForSeat)=True
  }

  LeadingSign myLeadingSign1{

       isObjectProperty(LeadingSign.isForExit)=True
  }

  LeadingSign myLeadingSign2{

       isObjectProperty(LeadingSign.isForPassage)=True
  }

  IF  getBuildingUsage()="PerformanceHall"
      OR getBuildingUsage()="AssemblyHall"
      OR getBuildingUsage()="Auditorium"   
      OR getBuildingUsage()="SportsFacility" 
      OR getBuildingUsage()="Tavern"  
     THEN 
          isExist(myLeadingLight1)=True
          isExist(myLeadingLight4)=True
          isExist(myLeadingLight5)=True
  
  ELSE IF getBuildingUsage()="AmusementFacility"
      OR getBuildingUsage()="CommercialFacility"
      OR getBuildingUsage()="TransportationFacility"   
      OR getBuildingUsage()="TouristAccommodationBusiness" 
      OR getBuildingUsage()="MedicalFacility"  
      OR getBuildingUsage()="FuneralParlor"  
      OR getBuildingUsage()="FacilityForBroadcastingAndTelecommunication"  
      OR getBuildingUsage()="ExhibitionHall"  
      OR getBuildingUsage()="UndergroundShoppingCenter" 
      OR getBuildingUsage()="SubwayStation"   
     THEN isExist(myLeadingLight1)=True
          isExist(myLeadingLight4)True

  ELSE IF getBuildingUsage()="LodgingFacility"
      OR getBuildingUsage()="Officetel"
   //   OR   지하층, 무창층 또는 층수가 11층 이상인 특정소방대상물 
     THEN isExist(myLeadingLight2)=True
          isExist(myLeadingLight4)True

 
  ELSE IF getBuildingUsage()="ClassINeighborhoodLivingFacility"
      OR getBuildingUsage()="ClassIINeighborhoodLivingFacility"
      OR getBuildingUsage()="FacilitiesForTheAgedAndChildren"
      OR getBuildingUsage()="BusinessFacility"   
      OR getBuildingUsage()="FacilityForPowerGeneration"   
      OR getBuildingUsage()="ReligiousFacility"
      OR getBuildingUsage()="EducationAndResearchFacility"   
      OR getBuildingUsage()="Trainingfacility" 
      OR getBuildingUsage()="Factory"
      OR getBuildingUsage()="Warehouse"   
      OR getBuildingUsage()="CorrectionalFacilityAndMilitaryInstallation"  
      OR getBuildingUsage()="Dormitory"
      OR getBuildingUsage()="AutomobileRepairShop"   
      OR getBuildingUsage()="DrivingSchool" 
      OR getBuildingUsage()="RepairingSchool"
      OR getBuildingUsage()="PubliclyUsedEstablishment"   
      OR getBuildingUsage()="ComplexBuilding"  
      OR getBuildingUsage()="ApartmentHouse"
         
     THEN isExist(myLeadingLight3)=True
          isExist(myLeadingLight4)True


  ELSE THEN  isExist(myLeadingSign1)=True
             isExist(myLeadingSign2)True
  END IF
    






} 




Python Code 변환 예정



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

1. 옥내로부터 직접 지상으로 통하는 출입구 및 그 부속실의 출입구





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

Check(NFSC303_5_1_1){
     KS
}

KS{
    Door myDoor {

        isObjectProperty(Door.isEntrance)=True
        isDirectlyAccessible(Door, Ground)=True          
    }

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

   isEnstalled(myLeadingLight,myDoor)=True

   IF hasObject(AncillaryRoom, myDoor)=True
   THEN isEnstalled(myLeadingLight, AncillaryRoom )=True
} 




Python Code 변환 예정



35
유도등 및 유도표지의 화재안전기준(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 변환 예정



36
유도등 및 유도표지의 화재안전기준(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 변환 예정



37
유도등 및 유도표지의 화재안전기준(NFSC 303) 제 6조 1 항 1호 다 목

다. 바닥으로부터 높이 1m 이하의 위치에 설치할 것. 다만, 지하층 또는 무창층의 용도가 도매시장·소매시장·여객자동차터미널·지하역사 또는 지하상가인 경우에는 복도·통로 중앙부분의 바닥에 설치하여야 한다.





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

Check(NFSC303_6_1_1_다){
           KS
}

KS{ 
   Floor myFloor{
       getFloorNumber()<0
       OR hasObject(Floor, Window)=False
   }
   
   IF getFloorUsage(myFloor)="WholesaleMarket"
      OR getFloorUsage(myFloor)="RetailMarket"
      OR getFloorUsage(myFloor)="PassengerVehicleTransportTerminal"
      OR getFloorUsage(myFloor)="UndergroundStation"
      OR getFloorUsage(myFloor)="UndergroundShoppingCenter" 
      THEN   //  복도·통로 중앙부분의 바닥에 설치하여야 한다.
   ELSE THEN
       getObjectVerticalDistance(FloorSlab, LeadingLightForCorridors )<= 1 m
} 




Python Code 변환 예정



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

2. 피난유도 표시부는 바닥으로부터 높이 1m이하의 위치 또는 바닥 면에 설치할 것





//	유도등 및 유도표지의 화재안전기준(nfsc 303)  8조의2 (피난유도선 설치기준) 2항 2호 
Check(NFSC303_8-2_2_2){
	KS
}

KS{
	getObjectVerticalLocation(피난유도 표시부, Ground) <= 1m
	OR isInstalled(피난유도 표시부, FloorSurface) = TRUE
}

 




Python Code 변환 예정



39
유도등 및 유도표지의 화재안전기준(NFSC 303) 제 8조의2조 2 항 7호

7. 피난유도 제어부는 조작 및 관리가 용이하도록 바닥으로부터 0.8m이상1.5m이하의 높이에 설치할 것





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

Check(NFSC303_8-2_2_7){

	KS

}



KS{

	getObjectVerticalLocation(LeadingControlPart, Ground) >= 0.8m

	getObjectVerticalLocation(LeadingControlPart, Ground) <= 1.5m

} 




Python Code 변환 예정



40
자동화재탐지설비 및 시각경보장치의 화재안전기준(NFSC 203) 제 7조 6 항

⑥ 지하구에 설치하는 감지기는 제1항 각 호의 감지기로서 먼지·습기등의 영향을 받지 아니하고 발화지점을 확인할 수 있는 감지기를 설치하여야 한다.<개정 2008.12.15>





자동화재탐지설비의 화재안전기준(nfsc 203) 7조 (감지기) 6항 

Check(NFSC203_7_6){
	IF CS THEN KS
}
CS{
	isInstalled(Sensor, Underground) = TRUE
}
KS{
	getResult(NFSC203_7_1_1) = TRUE
	OR getResult(NFSC203_7_1_2) = TRUE
	OR getResult(NFSC203_7_1_3) = TRUE
	OR getResult(NFSC203_7_1_4) = TRUE
	OR getResult(NFSC203_7_1_5) = TRUE
	OR getResult(NFSC203_7_1_6) = TRUE
	OR getResult(NFSC203_7_1_7) = TRUE
	OR getResult(NFSC203_7_1_8) = TRUE
}
 




Python Code 변환 예정



    1