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

제13조(개별난방설비) ①영 제87조제2항의 규정에 의하여 공동주택과 오피스텔의 난방설비를 개별난방방식으로 하는 경우에는 다음 각호의 기준에 적합하여야 한다. <개정 1996.2.9., 1999.5.11., 2001.1.17.>





//	건축물의 설비기준 등에 관한 규칙 13조 (개별난방설비) 1항
Check(RFB_13_1){
	IF CS THEN KS
}

CS{
	getBuildingUsage() = "DetachedHouse"
	OR getBuildingUsage() = "MultiUnitHouse"
}

KS{
	getResult(RFB_13_1_1) = TRUE
	getResult(RFB_13_1_2) = TRUE
	getResult(RFB_13_1_5) = TRUE
	getResult(RFB_13_1_6) = TRUE
	getResult(RFB_13_1_7) = TRUE
} 




Python Code 변환 예정



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

2. 보일러실의 윗부분에는 그 면적이 0.5제곱미터 이상인 환기창을 설치하고, 보일러실의 윗부분과 아랫부분에는 각각 지름 10센티미터 이상의 공기흡입구 및 배기구를 항상 열려있는 상태로 바깥공기에 접하도록 설치할 것. 다만, 전기보일러의 경우에는 그러하지 아니하다.





//	건축물의 설비기준 등에 관한 규칙 13조 (개별난방설비) 1항 2호

Check(RFB_13_1_2){

	IF CS THEN KS

}



CS{

	isExist(Boiler) = TRUE
isObjectProperty(Boiler.isElectricBoiler) = FALSE
}



KS{

	Ventilator myVentilator{

		getObjectArea(Ventilator) >= 0.5cm2

	}


Space mySpace{
getSpaceUsage(Space) = "BoilerRoom"  
}
	isInstalled(myVentilator, mySpace, a, top) = TRUE



	AirInlet myAirInlet{

		getObjectDiameter(AirInlet, b) >= 10cm

	}



	AirOutlet myAirOutlet{

		getObjectDiameter(AirOutlet, b) >= 10cm

	}



	(isInstalled(myAirInlet, mySpace, a, top) = TRUE

	OR isInstalled(myAirOutlet, mySpace, a, top) = TRUE)



	(isInstalled(myAirInlet, mySpace, a, bottom) = TRUE

	OR isInstalled(myAirOutlet, mySpace, a, bottom) = TRUE)

} 




Python Code 변환 예정



3
건축물의 설비기준 등에 관한 규칙 제 13조 1 항 5호

5. 기름보일러를 설치하는 경우에는 기름저장소를 보일러실외의 다른 곳에 설치할 것





//	건축물의 설비기준 등에 관한 규칙 13조 (개별난방설비) 1항 5호

Check(RFB_13_1_5){

	IF CS THEN KS

}



CS{
isObjectProperty(Boiler.isOilBoiler) = FALSE

}



KS{
Space mySpace1{
getSpaceUsage(Space) = "BoilerRoom"  
}

Space mySpace2{
getSpaceUsage(Space) = "OilStorageFacilities"
}
	hasSpace(mySpace1, mySpace2) = FALSE

} 




Python Code 변환 예정



4
건축물의 설비기준 등에 관한 규칙 제 13조 1 항 6호

6. 오피스텔의 경우에는 난방구획마다 내화구조로 된 벽·바닥과 갑종방화문으로 된 출입문으로 구획할 것





//	건축물의 설비기준 등에 관한 규칙 13조 (개별난방설비) 1항 6호

Check(RFB_13_1_6){

	IF CS THEN KS

}



CS{

	getBuildingUsage() = "Officetel"

}



KS{

	Wall myWall{

		isObjectProperty(Wall.isfireResistantStructure)

	}



	FloorSlab myFloorSlab{

		isObjectProperty(FloorSlab.isFireResistantStructure) = TRUE

	}



	Door myDoor{

		isObjectProperty(Door.isStrictFireproofDoor) = TRUE

	}


Zone myZone{
isObjectProperty(Zone.isHeatingSection) = TRUE
}
	isPartitioned(myZone, myWall) = TRUE

	OR isPartitioned(myZone, myFloorSlab) = TRUE

	OR isPartitioned(myZone, myDoor) = TRUE

} 




Python Code 변환 예정



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

②가스보일러에 의한 난방설비를 설치하고 가스를 중앙집중공급방식으로 공급하는 경우에는 제1항의 규정에 불구하고 가스관계법령이 정하는 기준에 의하되, 오피스텔의 경우에는 난방구획마다 내화구조로 된 벽·바닥과 갑종방화문으로 된 출입문으로 구획하여야 한다. <신설 1999.5.11.>





//	건축물의 설비기준 등에 관한 규칙 13조 (개별난방설비) 2항

Check(RFB_13_2){

	IF CS THEN KS

}



CS{

	getBuildingUsage() = "Officetel"

}



KS{

	Wall myWall{

		isObjectProperty(Wall.isfireResistantStructure)

	}



	FloorSlab myFloorSlab{

		isObjectProperty(FloorSlab.isFireResistantStructure) = TRUE

	}



	Door myDoor{

		isObjectProperty(Door.isStrictFireproofDoor) = TRUE

	}


Zone myZone{
isObjectProperty(Zone.isHeatingSection) = TRUE
}
	isPartitioned(myZone, myWall) = TRUE

	OR isPartitioned(myZone, myFloorSlab) = TRUE

	OR isPartitioned(myZone, myDoor) = TRUE

} 




Python Code 변환 예정



6
건축물의 설비기준 등에 관한 규칙 제 5조

제5조(승용승강기의 설치기준) 「건축법」(이하 "법"이라 한다) 제64조제1항에 따라 건축물에 설치하는 승용승강기의 설치기준은 별표 1의2와 같다. 다만, 승용승강기가 설치되어 있는 건축물에 1개층을 증축하는 경우에는 승용승강기의 승강로를 연장하여 설치하지 아니할 수 있다. <개정 2001.1.17, 2006.2.13, 2008.7.10, 2015.7.9>





//건축물의 설비기준 등에 관한 규칙 5조 (승용승강기의 설치기준) 

Check(RFB_5){

	IF !(CS) THEN KS1

}

CS{
getObjectProperty(Elevator.usage) = "PassengerElevator"
	isExist(Elevator) = TRUE
}

KS1{
        getResult(RFB_*_1-2) = TRUE
} 








def Check(RFB_5):


CS

myobject = getobject(PassengerElevator)
if isExist(myobject) = True:
    
else:
    
getObjectProperty(Elevator, usage) = "PassengerElevator"
is






def getobjectproperty(str objname, str propname):
    myobj = root.select(objname)
    myprop = myobj.select(propname)
    return myprop
  





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

2. 배연창의 유효면적은 별표 2의 산정기준에 의하여 산정된 면적이 1제곱미터 이상으로서 그 면적의 합계가 당해 건축물의 바닥면적(영 제46조제1항 또는 제3항의 규정에 의하여 방화구획이 설치된 경우에는 그 구획된 부분의 바닥면적을 말한다)의 100분의 1이상일 것. 이 경우 바닥면적의 산정에 있어서 거실바닥면적의 20분의 1 이상으로 환기창을 설치한 거실의 면적은 이에 산입하지 아니한다.





//건축물의 설비기준 등에 관한 규칙 14조 (배연설비) 1항 2호
Check(RFB_14_1_2){
	IF (CS) THEN (KS1 OR KS2)
}

Zone myZone{
	isObjectProperty(Zone.isFirePartition) = TRUE
}

Space mySpace{
	getSpaceUsage(Space) = "Room"
	getTotalElementArea(Ventilator) >= getFloorArea(Space)*0.05
}

Space mySpace2{
	hasSpace(Space, myZone) = TRUE
	getResult(EDBA_46_1) = TRUE 
	getREsult(EDBA_46_3) = TRUE
}

CS{
	getElementArea(SmokeVentilator) >= 1 m2
	getResult(RFB_*_2) = TRUE
}

KS1{
	getTotalElementArea(Ventilator) >= (getBuildingArea()-getFloorArea(mySpace))*0.01
}

KS2{
	getTotalElementArea(Ventilator) >= (getFloorArea(myZone)-getFloorArea(mySpace))*0.01
} 




Python Code 변환 예정



8
건축물의 설비기준 등에 관한 규칙 제 23조 3 항

③상업지역 및 주거지역에서 법 제2조제1항제11호의 규정에 의한 도로(막다른 도로로서 그 길이가 10미터 미만인 경우를 제외한다)에 접한 대지의 건축물에 설치하는 냉방시설 및 환기시설의 배기구는 도로면으로부터 2미터 이상의 높이에 설치하거나 배기장치의 열기가 보행자에게 직접 닿지 아니하도록 설치하여야 한다. <신설 2002.8.31>





//	건축물의 설비기준 등에 관한 규칙 23조 (건축물의 냉방설비) 3항
Check(RFB_23_3){
	IF CS THEN KS
}

CS{
	getBuildingUsage() = "ResidentialArea"
	OR getBuildingUsage() = "CommercialArea"
}

KS{
	getResult(RFB_23_3_1)
} 




Python Code 변환 예정



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

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





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

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

	Floor myFloor{
		getFloorArea(Floor) < 1000m2
	}

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

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

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

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

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

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

	isExist(myFloor) = TRUE
}

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

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




Python Code 변환 예정



10
건축물의 에너지절약설계기준 제 5조 13호

13. "공공기관”이라 함은 산업통상자원부고시 「공공기관 에너지이용합리화 추진에 관한 규정」에서 정한 기관을 말한다.






//  옥내소화전설비의 화재안전기준(nfsc 102) 6조 (배관 등) 2항 3호
Check(NFSC102_6_2_3){
	KS
}
KS{
	Pipe myPipe{
	isObjectProperty(Pipe.usage) = "WaterSupplyPipe"
	}	
	isObjectProperty(Pipe.isShared) = FALSE
}
 




Python Code 변환 예정



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

거. "투광부"라 함은 창, 문면적의 50% 이상이 투과체로 구성된 문, 유리블럭, 플라스틱패널 등과 같이 투과재료로 구성되며, 외기에 접하여 채광이 가능한 부위를 말한다.





//  옥내소화전설비의 화재안전기준(nfsc 102) 6조 (배관 등) 11항
Check(NFSC503A_6_11){
	IF CS THEN KS
}
	Pipe myPipe{
	isObjectProperty(Pipe.usage) = "WaterSupplyPipe"
	}
	Valve myValve1{
	isObjectProperty(Valve.isShutoffValve) = TRUE
	}
S{
	isInstalled(myValve1,myPipe) = TRUE
	isInstalled(myValve1,myPort) = FALSE
}
KS{
	isObjectProperty(myValve1.isIndicatingValve) = TRUE
	Valve myValve2{
	isInstalled(Valve, Pump.Inlet) = TRUE
	}
	isObjectProperty(myValve2.isIndicatingValve) = TRUE
	isObjectProperty(myValve2.isButterflyValve) = FALSE
 } 




Python Code 변환 예정



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

러. "일사조절장치"라 함은 태양열의 실내 유입을 조절하기 위한 목적으로 설치하는 장치를 말한다.





//  옥내소화전설비의 화재안전기준(nfsc 102) 7조 (함 및 방수구 등) 2항 1호

Check(NFSC503A_7_2_1){

	KS2 AND IF CS THEN KS1

}

KS2{

	isInstalled(옥내소화전방수구, SpecificFireFightingBuilding.Floor.One) = TRUE

	getElementDistance(SpecificFireFightingBuilding.Wall|SpecificFireFightingBuilding.Column, 옥내소화전방수구.One) <= 25m

}

CS{

	getBuildingUsage() = "MultiUnitHouse"

}	

KS2{

	Door myDoor{

	isObjectProperty(Door.isEntrance) = TRUE

	}

	Floor myFloor{

	isInstalled(myDoor, Floor) = TRUE

	}

Port myPort{
Port.typeForWater="IndoorFireHydrantDischarge"
}
	isInstalled(myPort, myFloor.One) = TRUE

} 




Python Code 변환 예정



13
건축물의 에너지절약설계기준 제 6조 1호 가 1) 목

1) 지표면 아래 2미터를 초과하여 위치한 지하 부위(공동주택의 거실 부위는 제외)로서 이중벽의 설치 등 하계 표면결로 방지 조치를 한 경우





//스프링클러설비의 화재안전기준(NFSC 103) 6조 (폐쇄형스프링클러설비의 방호구역·유수검지장치) 3호



Check(NFSC103_6_0_3){

    IF CS THEN KS1 ELSE KS2 

}



CS{

Building myBuilding{
Building.usage = "MultiUnitHouse"
}

     getObjectCount(Floor.One, SprinklerHead)<=10

     OR isObjectProperty(myBuilding.isDuplexType)=True

}



KS1{

     getObjectCount(SprinklerSystem.ProtectionZone.One.Floor )<=3

}



KS2{

   

 getObjectCount(SprinklerSystem.ProtectionZone.One.Floor )<2

} 




Python Code 변환 예정



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

4. 기밀 및 결로방지 등을 위한 조치





//	스프링클러설비의 화재안전기준(NFSC 103) 10조 (음향장치 및 기동장치) 2항

Check(NFSC103_10_2){

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

}



CS1{
Space.usage = "RackWarehouse"
isObjectProperty(Space.hasSpecialCombustible) = TRUE

}



KS1{

	getObjectHeight(Rack) / 4 = RH



	(RH-1) <= getObjectCount(SprinklerHead) < RH

	getObjectInterval(SprinklerHead) = 4m

}



CS2{

Space.usage = "RackWarehouse"
isObjectProperty(Space.hasSpecialCombustible) != TRUE


}



KS2{

	getObjectHeight(Rack) / 6 = RH



	(RH-1) <= getObjectCount(SprinklerHead) < RH

	getObjectInterval(SprinklerHead) = 6m

} 




Python Code 변환 예정



15
건축물의 에너지절약설계기준 제 6조 4호 나 목

나. 방습층 및 단열재가 이어지는 부위 및 단부는 이음 및 단부를 통한 투습을 방지할 수 있도록 다음과 같이 조치하여야 한다.





//스프링클러설비의 화재안전기준(NFSC 103) 10조 3항 1호



check(NFSC103_10_3_1){

IF CS THEN KS

}



Space mySpace1{

Space.usage="StagePart"

OR isObjectProperty(Space.hasSpecialCombustible)=TRUE

}

CS{

isExist(PlenumSpace)=TRUE

}

KS{

getHorizontalDistance(Ceiling | CeilingCovering | mySpace2 | Duct | Shelf,SprinklerSystem.Head)<=1.7m

} 




Python Code 변환 예정



16
건축물의 에너지절약설계기준 제 6조 4호 나 1) 목

1) 단열재의 이음부는 최대한 밀착하여 시공하거나, 2장을 엇갈리게 시공하여 이음부를 통한 단열성능 저하가 최소화될 수 있도록 조치할 것





//스프링클러설비의 화재안전기준(NFSC 103) 10조 3항 2호



check(NFSC103_10_3_2){

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

}



Space mySpace1{

Space.usage="RackWarehouse"

Space mySpace2{

Space.usage="RackWarehouse"

isObjectProperty(Space.hasSpecialCombustible)=TRUE

}

CS1{

isExist(mySpace1)=TRUE

}

KS1{

getHorizontalDistance(Ceiling|CeilingCovering|PlenumSpace|Duct|Shelf,SprinklerHead)<=2.5m

}

CS2{

isExist(mySpace2)=TRUE

}

KS2{

getHorizontalDistance(Ceiling|CeilingCovering|PlenumSpace|Duct|Shelf,SprinklerHead)<=1.7m

} 




Python Code 변환 예정



17
건축물의 에너지절약설계기준 제 6조 4호 나 2) 목

2) 방습층으로 알루미늄박 또는 플라스틱계 필름 등을 사용할 경우의 이음부는 100 ㎜ 이상 중첩하고 내습성 테이프, 접착제 등으로 기밀하게 마감할 것





//스프링클러설비의 화재안전기준(NFSC 103) 10조 3항 3호

check(NFSC103_10_3_3){

	IF (CS) THEN KS ENDIF

}



CS{

	getBuildingUsage() = "MultiUnitHouse"

}



KS{

	Space mySpace = getObject(Room)

			

	getObjectVerticalDistance(mySpace.Ceiling, SprinklerHead) <= 3.2m

	getObjectVerticalDistance(mySpace.CeilingCover, SprinklerHead) <= 3.2m

	getObjectVerticalDistance(mySpace.Duct, SprinklerHead) <= 3.2m

	getObjectVerticalDistance(mySpace.Shelf, SprinklerHead) <= 3.2m

} 




Python Code 변환 예정



18
건축물의 에너지절약설계기준 제 6조 4호 다 목

다. 건축물 외피 단열부위의 접합부, 틈 등은 밀폐될 수 있도록 코킹과 가스켓 등을 사용하여 기밀하게 처리하여야 한다.





Check(NFCS103_10_5_1_1){
KS
}


KS{
getSpaceUsage()= "MultiUnitHouse.LivingRoom"
OR getSpaceUsage()="FacilitiesForTheAgedAndChildren.LivingRoom"
}
 




Python Code 변환 예정



19
건축물의 에너지절약설계기준 제 6조 4호 라 목

라. 외기에 직접 면하고 1층 또는 지상으로 연결된 출입문은 제5조제9호아목에 따른 방풍구조로 하여야 한다. 다만, 다음 각 호에 해당하는 경우에는 그러하지 않을 수 있다.





Check(NFCS103){
KS
}



KS{
getSpaceUsage()="Officetels.BedRoom"
OR getSpaceUsage()="LodgingFacility.BedRoom"
OR getSpaceUsage()="Hospital.HospitalRoom"
} 




Python Code 변환 예정



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

나. 건축물의 체적에 대한 외피면적의 비 또는 연면적에 대한 외피면적의 비는 가능한 작게 한다.





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

Check(NFSC103_11_0_2){
	IF CS THEN KS
}

CS{
	Port myPort{
	isObjectProperty(Port.typeForWater) = "FireDepartmentConnection"
	}
	Pipe myPipe{
	isObjectProperty(Pipe.isRiser)=TRUE
	}
	Valve myValve{
	isObjectProperty(Valve.isShutoffValve)=TRUE
	}
	isConnectedTo(myPort,Pipe)=TRUE
	isConnectedTo(Pipe,myPipe)=TRUE
	isInstalled(Pipe, myValve) = TRUE
}
KS{
	Space mySpace{
	isObjectProperty(Space.usage) = "MachineRoom"
	}
	isExternal(myValve)=TRUE 
	OR hasSpace(mySpace,myValve)=TRUE 




Python Code 변환 예정



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

나. 외벽 부위는 제5조제9호차목에 따른 외단열로 시공한다.





//	스프링클러설비의 화재안전기준(nfsc 103) 12조 (전원) 2항

Check(NFSC103_12_2){

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

}



CS1{

	Tank myTank{

		getObjectProperty(Tank) = "PressurizedTank"

	}



	isInstalled(myTank) = TRUE

}



CS2{

	getBuildingUsage() = "Garage"

	OR getBuildingUsage() = "ParkingLot"



	ParkingLot myParkingLot{

		getResult(Unimplemented_NFSC105_13_2_2) = TRUE

		getSpace(ParkingLot)

	}



	Floor myFloor{

		isInstalled(SprinklerSystem, Floor) = TRUE

	}



	getFloorArea(myFloor) + getFloorArea(myFloor2) >= 1000m2

}



KS1{

	EmergencyPower myEmergencyPower{

		getObjectProperty(EmergencyPower.systemType) = "InhousePowerGenerationSystem"

		OR getObjectProperty(EmergencyPower.systemType) = "StorageBatterySystem"

	}

	isInstalled(myEmergencyPower, SprinklerSystem) = TRUE

}



KS2{

	EmergencyPower myEmergencyPower{

		getObjectProperty(EmergencyPower.systemType) = "InhousePowerGenerationSystem"

		OR getObjectProperty(EmergencyPower.systemType) = "StorageBatterySystem"

		OR getObjectProperty(EmergencyPower.systemType) = "EmergencyPowerReceivingSystem"

	}

	isInstalled(myEmergencyPower, SprinklerSystem) = TRUE

} 




Python Code 변환 예정



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

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





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

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




Python Code 변환 예정



23
건축물의 에너지절약설계기준 제 7조 4호 나 목

나. 공동주택의 외기에 접하는 주동의 출입구와 각 세대의 현관은 방풍구조로 한다.





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

KS{
	getBuildingUsage() = "CommunicationsApparatusRoom"
	OR getBuildingUsage() = "ElectronicEquipmentRoom"
} 




Python Code 변환 예정



24
건축물의 에너지절약설계기준 제 7조 5호

5. 자연채광계획





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

Check(NFSC103_15_1_3){

	KS

}



KS{

	getBuildingUsage() = "GeneratorRoom"

	OR getBuildingUsage() = "TransformerRoom"

	OR isInstalled(
Transformer, Room) = TRUE

} 




Python Code 변환 예정



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

가. 자연채광을 적극적으로 이용할 수 있도록 계획한다. 특히 학교의 교실, 문화 및 집회시설의 공용부분(복도, 화장실, 휴게실, 로비 등)은 1면 이상 자연채광이 가능하도록 한다.





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

KS{
	getBuildingUsage() = "Hospital.수술실"
	OR getBuildingUsage() = "Hospital.응급처치실"
} 




Python Code 변환 예정



26
건축물의 에너지절약설계기준 제 7조 6호 나 목

나. 문화 및 집회시설 등의 대공간 또는 아트리움의 최상부에는 자연배기 또는 강제배기가 가능한 구조 또는 장치를 채택한다.





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

KS{
	getBuildingUsage() = "펌프실"
	OR getBuildingUsage() = "물탱크실"
	OR getBuildingUsage() = "엘리베이터 권상기실"
} 




Python Code 변환 예정



27
건축물의 에너지절약설계기준 제 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 변환 예정



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

1. 설계용 외기조건





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

KS{
	getSpaceUsage() = "ColdStorage"
	OR getSpaceUsage() = "RefrigerationRoom"
} 




Python Code 변환 예정



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

2. 열원 및 반송설비





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

KS{
	getBuildingUsage() = "PurificationPlant"
	OR getBuildingUsage() = "오물처리장"
} 




Python Code 변환 예정



30
건축물의 에너지절약설계기준 제 8조 2호 가 목

가. 공동주택에 중앙집중식 난방설비(집단에너지사업법에 의한 지역난방공급방식을 포함한다)를 설치하는 경우에는 「주택건설기준등에관한규정」 제37조의 규정에 적합한 조치를 하여야 한다.





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

KS{
	getBuildingUsage() = "PulpMill.WorkPlace"
	OR getBuildingUsage() = "BeverageFactory.WorkPlace"
}
 




Python Code 변환 예정



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

나. 펌프는 한국산업규격(KS B 6318, 7501, 7505등) 표시인증제품 또는 KS규격에서 정해진 효율 이상의 제품을 설치하여야 한다.





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

KS{
	getBuildingUsage() = "ProcessingFactory"
	isObjectProperty(Space.hasCombustible) = FALSE
} 




Python Code 변환 예정



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

다. 기기배관 및 덕트는 국토교통부에서 정하는 「건축기계설비공사표준시방서」의 보온두께 이상 또는 그 이상의 열저항을 갖도록 단열조치를 하여야 한다. 다만, 건축물내의 벽체 또는 바닥에 매립되는 배관 등은 그러하지 아니할 수 있다.





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

KS{
	(getBuildingUsage() = "Indoor.TennisCourts"
	OR getBuildingUsage() = "Indoor.게이트볼장"
	OR getBuildingUsage() = "Indoor.정구장")

	(getObjectProperty(Floor.InteriorFinish.Material.nonCombustibility) = TRUE
	OR getObjectProperty(Floor.InteriorFinish.Material.quasiNonCombustibility) TRUE)

	(getObjectProperty(Wall.InteriorFinish.Material.nonCombustibility) = TRUE
	OR getObjectProperty(Wall.InteriorFinish.Material.quasiNonCombustibility) TRUE)

	(getObjectProperty(Ceiling.InteriorFinish.Material.nonCombustibility) = TRUE
	OR getObjectProperty(Ceiling.InteriorFinish.Material.quasiNonCombustibility) TRUE)

	isObjectProperty(Space.hasCombustible) = FALSE
	hasSpace(Auditorium, SportsFacility) = FALSE
	getObjectProperty(Floor.number) > 0
} 




Python Code 변환 예정



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

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





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

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




Python Code 변환 예정



34
건축물의 에너지절약설계기준 제 9조

제9조(기계부문의 권장사항) 에너지절약계획서 제출대상 건축물의 건축주와 설계자 등은 다음 각 호에서 정하는 사항을 제13조의 규정에 적합하도록 선택적으로 채택할 수 있다.





//	스프링클러설비의 화재안전기준(NFSC 103) 16조 (수원 및 가압송수장치의 펌프 등의 겸용) 2항

Check(NFSC103_16_2){

	IF CS THEN KS

}



	Pump myPump{

		isInstalled(SprinklerSystem, PressurizedWaterSupplySystem) = TRUE

		getObjectUsage(Pump) = "PressurizedWaterSupplySystem"

	}



	Pump myPump2{

		isInstalled(IndoorFireHydrantSystem, PressurizedWaterSupplySystem) = TRUE

		getObjectUsage(Pump) = "PressurizedWaterSupplySystem"

	}



	Pump myPump3{

		isInstalled(SimpleSprinklerSystem, PressurizedWaterSupplySystem) = TRUE

		getObjectUsage(Pump) = "PressurizedWaterSupplySystem"

	}



	Pump myPump4{

		isInstalled(SprinklerSystemForEarlyFireSuppression, PressurizedWaterSupplySystem) = TRUE

		getObjectUsage(Pump) = "PressurizedWaterSupplySystem"

	}



	Pump myPump5{

		isInstalled(WaterSprayExtingushingSystem, PressurizedWaterSupplySystem) = TRUE

		getObjectUsage(Pump) = "PressurizedWaterSupplySystem"

	}



	Pump myPump6{

		isInstalled(FoamExtinguishingSystem, PressurizedWaterSupplySystem) = TRUE

		getObjectUsage(Pump) = "PressurizedWaterSupplySystem"

	}



	Pump myPump7{

		isInstalled(OutdoorFireHydrantSystem, PressurizedWaterSupplySystem) = TRUE

		getObjectUsage(Pump) = "PressurizedWaterSupplySystem"

	}





CS{

	isShared(myPump, myPump2) = TRUE

	OR isShared(myPump, myPump3) = TRUE

	OR isShared(myPump, myPump4) = TRUE

	OR isShared(myPump, myPump5) = TRUE

	OR isShared(myPump, myPump6) = TRUE

	OR isShared(myPump, myPump7) = TRUE

}



KS{

	getObjectProperty(myPump.ratedDischargeRate) = PRD



	getObjectProperty(myPump2.ratedDischargeRate) + getObjectProperty(myPump3.ratedDischargeRate) + getObjectProperty(myPump4.ratedDischargeRate) + getObjectProperty(myPump5.ratedDischargeRate) + getObjectProperty(myPump6.ratedDischargeRate) + getObjectProperty(myPump7.ratedDischargeRate) = TPRD



	PRD >= TPRD

} 




Python Code 변환 예정



35
건축물의 에너지절약설계기준 제 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 변환 예정



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

3. 공조설비





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

Check(NFSC503A_4_2_6){
	KS
}
KS{
	Valve myValve{
	isObjectProperty(Valve.isDeliveryValveForCleaning) = TRUE
	}
	Pipe myPipe{
	isObjectProperty(Pipe.usage) = "WaterDrainPipe"
	}
	isInstalled(Tank.BottomSurface, myValve) = TRUE
	OR isInstalled(Tank.BottomSurface, myPipe) = TRUE
}
 




Python Code 변환 예정



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

나. 에너지 사용설비는 에너지절약 및 에너지이용 효율의 향상을 위하여 컴퓨터에 의한 자동제어시스템 또는 네트워킹이 가능한 현장제어장치 등을 사용한 에너지제어시스템을 채택하거나, 분산제어 시스템으로서 각 설비별 에너지제어 시스템에 개방형 통신기술을 채택하여 설비별 제어 시스템간 에너지관리 데이터의 호환과 집중제어가 가능하도록 한다.





//간이스프링클러설비의 화재안전기준(nfsc 103a) 5조 (가압송수장치) 3항 2호



Check(NFSC503A_5_3_2){

	KS

}

KS{

	Tank myTank{

	isObjectProperty(Tank.operationType) = "ElevatedWaterTank"

	}

	Pipe myPipe1{

	isObjectProperty(Pipe.isOverflowPipe) = TRUE

	}
	Pipe myPipe2{

	getObjectProperty(Pipe.usage) = "WaterDrainPipe"

	}
	Pipe myPipe3{

	getObjectProperty(Pipe.usage) = "WaterSupplyPipe"

	}
	isInstalled(myTank,WaterLevelGauge) = TRUE

	isInstalled(myTank,myPipe2) = TRUE

	isInstalled(myTank,myPipe3) = TRUE

	isInstalled(myTank,myPipe1) = TRUE

	isInstalled(myTank,Manshole) = TRUE

} 




Python Code 변환 예정



38
건축물의 에너지절약설계기준 제 10조 1호

1. 수변전설비





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



Check(NFSC503A_5_4_2){

	KS

}

KS{

	Tank myTank{

	isObjectProperty(Tank.operationType) = "HydropneumaticTank"

	}

	Pipe myPipe{

	isObjectProperty(Pipe.usage)="WaterSupplyPipe"

	OR isObjectProperty(Pipe.usage)="WaterDrainPipe"

	OR isObjectProperty(Pipe.usage)="AirSupplyPipe"

	}

	AirCompressor myAirCompressor{

	isObjectProperty(AirCompressor.isAutomatic) = TRUE

	}

	isInstalled(WaterLevelGauge, myTank) = TRUE

	isInstalled(myPipe, myTank) = TRUE

	isInstalled(Manshole, myTank) = TRUE

	isInstalled(PressureGauge, myTank) = TRUE

	isInstalled(SafetyDevice, myTank) = TRUE

	isInstalled(AirCompressor, myTank) = TRUE

} 




Python Code 변환 예정



39
건축물의 에너지절약설계기준 제 11조 1호 마 목

마. 역률개선용콘덴서를 집합 설치하는 경우에는 역률자동조절장치를 설치한다.





//	간이스프링클러설비의 화재안전기준(nfsc 103a) 8조 (배관 및 밸브) 3항 1호
Check(NFSC103A_8_3_1){
	IF (CS1 THEN KS1) OR (CS2 THEN KS2)
}

	Pipe myPipe{
		getObjectProperty(Pipe.usage) = "WaterSupplyType"
		isObjectProperty(myPipe.isDirectCoupledType) != TRUE
	}

	Pipe myPipe2{
		getObjectProperty(Pipe.usage) = "WaterSupplyType"
		isObjectProperty(myPipe.isDirectCoupledType) = TRUE
	}

CS1{
	isExist(myPipe) = TRUE
}

KS1{
	isObjectProperty(myPipe.isShared) = FALSE
}

CS2{
	isExist(myPipe2) = TRUE
}

KS2{
	isObjectProperty(myPipe.isShared) = FALSE
	getObjectProperty(Pipe.diameter) >= 32mm
}
 




Python Code 변환 예정



40
건축물의 에너지절약설계기준 제 13조

제13조(에너지절약계획서 및 설계 검토서 작성) 에너지절약 설계 검토서는 별지 제1호 서식에 따라 에너지절약설계기준 의무사항 및 에너지성능지표, 에너지소요량 평가서로 구분된다. 에너지절약계획서를 제출하는 자는 에너지절약계획서 및 설계 검토서(에너지절약설계기준 의무사항 및 에너지성능지표, 에너지소요량 평가서)의 판정자료를 제시(전자문서로 제출하는 경우를 포함한다)하여야 한다. 다만, 자료를 제시할 수 없는 경우에는 부득이 당해 건축사 및 설계에 협력하는





// 간이스프링클러설비의 화재안전기준(nfsc 103a) 8조 (배관 및 밸브) 11항 2호 가목

Check(NFSC503A_8_11_2_가){
	KS
}
KS{
	Pipe myPipe{
	isObjectProperty(Pipe.usage) = "WaterDrainPipe"
	isObjectProperty(Pipe.isRiser) = TRUE
	}
	Valve myValve{
	isObjectProperty(Valve.isShutoffValve) = TRUE
	}
	isConnectedTo(Pipe, myPipe) = TRUE
	isInstalled(myValve, Pipe) = TRUE
} 




Python Code 변환 예정



41
건축물의 에너지절약설계기준 제 17조 1 항

제17조(완화기준의 적용방법) ① 완화기준의 적용은 당해 용도구역 및 용도지역에 지방자치단체 조례에서 정한 최대 용적률의 제한기준, 조경면적 기준, 건축물 최대높이의 제한 기준에 대하여 다음 각 호의 방법에 따라 적용한다.





// 간이스프링클러설비의 화재안전기준(nfsc 103a) 8조 (배관 및 밸브) 12항 3호

Check(NFSC503A_8_12_3){
	KS
}
KS{
	Pipe myPipe1{
	isObjectProperty(Pipe.isForTest) = TRUE
	}
	Pipe myPipe2{
	isObjectProperty(Pipe.usage) = "WaterDrainPipe"
	}
	isInstalled(myPipe2, myPipe1.End) = TRUE
} 




Python Code 변환 예정



42
건축물의 에너지절약설계기준 제 17조 1 항 3호

「법 및 조례에서 정하는 건축물의 최고높이」× [1 + 완화기준]





// 간이스프링클러설비의 화재안전기준(nfsc 103a) 8조 (배관 및 밸브) 15항 1호

Check(NFSC503A_8_15_1){
	KS
}
KS{
	Pipe myPipe{
	isObjectProperty(Pipe.usage) = "WaterDrainPipe"
	}
	isParallel(FloorSlab, myPipe) = TRUE  
} 




Python Code 변환 예정



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

④ 기숙사, 오피스텔은 별표1 및 별표3의 공동주택 외의 단열기준을 준수할 수 있으며, 별지 제1호서식의 에너지성능지표 작성 시, 기본배점에서 비주거를 적용한다.





//	간이스프링클러설비의 화재안전기준(NFSC 103A) 별표1 (간이헤드 수별 급수관의 구경) 1항

Check(NFSC103A_*_1){

	getResult(NFSC103A_*_1_1) = TRUE

	getResult(NFSC103A_*_1_2) = TRUE

	getResult(NFSC103A_*_1_3) = TRUE

	getResult(NFSC103A_*_1_4) = TRUE

}

	

	Pipe myPipe{

	getObjectProperty(Pipe.usage) = "WaterSupplyPipe"

	}

	Pipe myPipe2{

	isObjectProperty(Pipe.isBranchLines) = TRUE

	}

	PD = getObjectProperty(Pipe.diameter)

	SSHN = getObjectCount(SimpleSprinkler.Head.)



Check(NFSC103A_*_1_2){

	IF CS THEN KS

}

CS{

	Head myHead{

	getObjectProperty(SimpleSprinkler.Head.openAndCloseType) = "EnclosedType"

	}

	isInstalled(myHead) = TRUE

}

KS{

	IF PD = 25 THEN SSHN = 2

	OR IF PD = 32 THEN SSHN = 3

	OR IF PD = 40 THEN SSHN = 5

	OR IF PD = 50 THEN SSHN = 10

	OR IF PD = 65 THEN SSHN = 30

	OR IF PD = 80 THEN SSHN = 60

	OR IF PD = 100 THEN SSHN = 100

	OR IF PD = 125 THEN SSHN = 160

	OR IF PD = 150 THEN SSHN >= 161

}

Check(NFSC103A_*_1_3){

	IF CS THEN KS

}

CS{

	Head myHead1{

	getObjectProperty(SimpleSprinkler.Head.openAndCloseType) = "EnclosedType"

	}

	isInstalled(myHead1) = TRUE

	Head myHead2{

	getObjectVerticalLocation(Head, CeilingCovering, )  <  0
	}

	Head myHead3{

	isInstalled(Head, CeilingCovering.Inside) = TRUE

	}

	isInstalled(myHead2, myPipe2) = TRUE

	isInstalled(myHead3, myPipe2) = TRUE

}

KS{

	IF PD = 25 THEN SSHN = 2

	OR IF PD = 32 THEN SSHN = 4

	OR IF PD = 40 THEN SSHN = 7

	OR IF PD = 50 THEN SSHN = 15

	OR IF PD = 65 THEN SSHN = 30

	OR IF PD = 80 THEN SSHN = 60

	OR IF PD = 100 THEN SSHN = 100

	OR IF PD = 125 THEN SSHN = 160

	OR IF PD = 150 THEN SSHN >= 161

} 




Python Code 변환 예정



44
건축물의 에너지절약설계기준 제 28조 1 항 2호

2. 제로에너지빌딩 인정 등 인센티브 지원에 관한 업무





//	자동화재탐지설비의 화재안전기준(nfsc 203) 7조 (감지기) 2항 2호
Check(NFSC203_7_2_3){
	IF CS THEN KS
}
CS{
	Pipe myPipe{
	isObjectProperty(Pit.isPipePit) = TRUE
	}
	Space mySace{
	getSpaceUsage(Space) = "ElevatorTractionMachineRoom"
	OR isInstalled(LinenChute,Space) = TRUE
	OR isInstalled(myPipe,Space) = TRUE
	OR isInstalled(Duct,Space) = TRUE
	}
}
KS{
	isInstalled(SmokeSensor,mySpace) = TRUE
}
 




Python Code 변환 예정



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

②영 제38조의 규정에 의하여 문화 및 집회시설중 공연장의 개별관람석(바닥면적이 300제곱미터 이상인 것에 한한다)의 출구는 다음 각호의 기준에 적합하게 설치하여야 한다.





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 10조 (관람석등으로부터의 출구의 설치기준) 2항
check(REFB_10_2){
    IF (CS) THEN KS ENDIF
}

CS{
    getBuildingUsage() = "CulturalAndAssemblyFacility.PerformanceHall"

    Space mySpace = getSpace("individualSeats")
    getFloorArea(mySpace) >= 300

KS{
    getResult(REFB_10_2_1) = TRUE
    getResult(REFB_10_2_2) = TRUE
    getResult(REFB_10_2_3) = TRUE
} 








theater_code = '00000'
std_floor_area = 300


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 == '공연장'):
            building.SUCcESS('검토 대상 건물이 아닙니다.')
            continue
        for storey in building.SELECT('storey'):
            for space in storey.SELECT('space'):
                if space.SELECT('class code').STRING() != theater_code:
                    continue
                if space.SELECT('area').UNIT(m2).NUMBER() < std_floor_area:
                    continue
                door_w_total = 0
                door_cnt = 0
                for door in space.Select('door'):
                    door_cnt += 1 
                    door_w = door.SELECT('width').Unit(m).number()
                    door_w_total += door_w
                    if door_w >= 1.5:
                        door.SUCCESS('출구의 너비' + door_w +'>= 1.5m')
                    else:
                        door.ERROR('출구의 너비' + door_w +'< 1.5m')
                min_door_w_total = space.SELECT('area').UNIT(m2).NUMBER()
                min_door_w_total = min_door_w_total/100*0.6
                if door_w_total >= min_door_w_total :
                    space.SUCCESS('출구의 너비의 총합' + door_w_total +'>='+ min_door_w_total)
                else:
                    space.ERROR('출구의 너비의 총합' + door_w_total +'<' + min_door_w_total)
                if door_cnt >= 2:
                    space.SUCCESS('출구의 개수' + door_w_total +'>='+ '2')
                else:
                    space.ERROR('출구의 개수' + door_w_total +'<'+ '2')
 





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

제14조의2(복합건축물의 피난시설 등) 영 제47조제1항 단서의 규정에 의하여 같은 건축물안에 공동주택ㆍ의료시설ㆍ아동관련시설 또는 노인복지시설(이하 이 조에서 "공동주택등"이라 한다)중 하나 이상과 위락시설ㆍ위험물저장 및 처리시설ㆍ공장 또는 자동차정비공장(이하 이 조에서 "위락시설등"이라 한다)중 하나 이상을 함께 설치하고자 하는 경우에는 다음 각 호의 기준에 적합하여야 한다. <개정 2005.7.22.>





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 14조의2 (복합건축물의 피난시설 등)



Check(REFB_14-2){

     IF CS THEN KS

}



CS{


Building myBuilding1{
Building.usage = "MultiUnitHouse" 
   OR Building.usage = "MedicalFacility"

   OR Building.usage =  "ChildrenRelatedFacility"

   OR Building.usage =  "WelfareFacilityForTheAged"
}

 Building myBuilding2{
Building.usage = "AmusementFacility"

   OR Building.usage = "FacilityForStorageAndTreatmentOfDangerousSubstance"

   OR Building.usage = "Factory"

   OR Building.usage = "AutomobileRepairShop"
}

hasObject(Building, myBuilding1) = TRUE
hasObject(Building, myBuilding2) = TRUE


}



KS{

   getResult(REFB_14-2_0_1)=True

   getResult(REFB_14-2_0_2)=True

   getResult(REFB_14-2_0_3)=True

   getResult(REFB_14-2_0_4)=True

   getResult(REFB_14-2_0_5)=True

   

} 




Python Code 변환 예정



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

1. 공동주택등의 출입구와 위락시설등의 출입구는 서로 그 보행거리가 30미터 이상이 되도록 설치할 것





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

Check(REFB_14-2_0_1){
        KS
}

KS{
 Space mySpace{
  Space.usage="MultiUnitHouse"  
  OR Space.usage="MedicalFacility"
  OR Space.usage="ChildrenRelatedFacility"
  OR Space.usage="WelfareFacilityForTheAged"
 }
 
 Space mySpace2{
  Space.usage="AmusementFacility"  
  OR Space.usage="FacilityForStorageAndTreatmentOfDangerousSubstance"
  OR Space.usage="Factory"
  OR Space.usage="AutomobileRepairShop"
 }


getSpaceDiatance(mySpace.Door, mySpace2.Door)>=30 m

}
 




Python Code 변환 예정



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

2. 공동주택등(당해 공동주택등에 출입하는 통로를 포함한다)과 위락시설등(당해 위락시설등에 출입하는 통로를 포함한다)은 내화구조로 된 바닥 및 벽으로 구획하여 서로 차단할 것





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 14조의 2 (복합건축물의 피난시설 등) 2호

Check(REFB_14-2_0_2){
    KS
}

KS{
  Space mySpace{
  Space.usage="MultiUnitHouse"  
  OR Space.usage="MedicalFacility"
  OR Space.usage="ChildrenRelatedFacility"
  OR Space.usage="WelfareFacilityForTheAged"
  }
 
 Space mySpace2{
 Space.usage="AmusementFacility"  
 OR Space.usage="FacilityForStorageAndTreatmentOfDangerousSubstance"
 OR Space.usage="Factory"
 OR Space.usage="AutomobileRepairShop"
 }

 Passage myPassage{
    isAccessible(Passage, mySpace)=True
    OR isAccessible(Passage, mySpace2)=True
 }


 isFirePartition(mySpace)=True
 isFirePartition(mySpace2)=True
 isFirePartition(myPassage)=True
} 




Python Code 변환 예정



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

3. 공동주택등과 위락시설등은 서로 이웃하지 아니하도록 배치할 것





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

Check(REFB_14-2_0_3){
     KS
}

KS{

  Space mySpace{
  Space.usage="MultiUnitHouse"  
  OR Space.usage="MedicalFacility"
  OR Space.usage="ChildrenRelatedFacility"
  OR Space.usage="WelfareFacilityForTheAged"
 }
 
 Space mySpace2{
  Space.usage="AmusementFacility"  
  OR Space.usage="FacilityForStorageAndTreatmentOfDangerousSubstance"
  OR Space.usage="Factory"
  OR Space.usage="AutomobileRepairShop"
 }

 isAdjacent(mySpace, mySpace2)=False

} 




Python Code 변환 예정



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



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



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



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



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



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



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



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



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



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

4. 교육연구시설 중 학교





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

Check(REFB_11_5_4){
     

KS


}





KS {

Building myBuilding{

getBuildingUsage() = “EducationAndResearchFacility.School”

}



isExist(myBuliding) = TRUE

} 




Python Code 변환 예정



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



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





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





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





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



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



66
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 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('관람석의 앞뒤쪽 중 복도가 존재하지 않는 곳이 있습니다.') 





67
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 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('관람석의 앞뒤쪽 중 복도가 존재하지 않는 곳이 있습니다.') 





68
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 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('관람석의 앞뒤쪽 중 복도가 존재하지 않는 곳이 있습니다.') 





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





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



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



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



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



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



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

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





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

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









min_stair_width = 1.5

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

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

        d_stairs = building.SELECT('direct stair')

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

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





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

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





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

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









min_stair_width = 1.5

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

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

        d_stairs = building.SELECT('direct stair')

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

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





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

⑧ 승강기기계실용 계단, 망루용 계단 등 특수한 용도에만 쓰이는 계단에 대해서는 제1항부터 제7항까지의 규정을 적용하지 아니한다. <개정 2012.1.6>





check(REFP_15_8){

     KS

}



KS{

      getObjectUsage(Stair)= "ElevatorMachineRoom" OR "WatchTower"

      AND getResult(REFP_15_1)=FALSE

      AND getResult(REFP_15_2)=FALSE

      AND getResult(REFP_15_3)=FALSE

      AND getResult(REFP_15_4)=FALSE

      AND getResult(REFP_15_5)=FALSE

      AND getResult(REFP_15_6)=FALSE

      AND getResult(REFP_15_7)=FALSE

} 




Python Code 변환 예정



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

제29조(피난용승강기의 설치 및 구조)





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 29조 (피난용승강기의 설치 및 구조) 1항 



Check(REFB_29_1){

   IF (!CS1 AND CS2)THEN KS 

}



CS1{



   Building myBuilding{

         isObjectProperty(Building.isQuasiHighriseBuilding )=True

   }



    getBuildingUsage()="myBuilding.MultiUnitHouse"

}

CS2{

    isObjectProperty(Building.isHighBuilding) = TRUE

}

KS{

   getResult(REFB_30)=True

   getResult(REFB_29_2)=True

} 




Python Code 변환 예정



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

② 영 제34조제1항 단서에서 "국토교통부령으로 정하는 공장"이란 반도체 및 디스플레이 패널을 제조하는 공장을 말한다. <신설 2010.4.7, 2013.3.23>





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



Check(REFB_8_2){

getObjectProperty(Building.usage)=“Factory.SemiconductorAndDisplayPanelManufacturingFactory"

} 




Python Code 변환 예정



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

①영 제61조제1항제4호가목 및 제2항제1호나목에서 "국토교통부령으로 정하는 화재위험이 적은 공장"이란 각각 별표 3의 업종에 해당하는 공장을 말한다. 다만, 공장의 일부 또는 전체를 기숙사 및 구내식당의 용도로 사용하는 건축물을 제외한다. <개정 2008.3.14, 2010.12.30, 2012.1.6, 2013.3.23>





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

check(REFB_24-2_1){

      KS

}

KS{

	getResult(REFB_*_3) = TRUE

	(getBuildingUsage() != "Dormitory"

	OR getBuildingUsage() != "Cafeteria"

	OR getSpaceUsage() != "Dormitory"

	OR getSpaceUsage() != "Cafeteria")

} 




Python Code 변환 예정



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

①영 제48조의 규정에 의하여 건축물에 설치하는 복도의 유효너비는 다음 표와 같이 하여야 한다 img30607976 ┌───────────────┬────────────┬──────┐ │구분 │양옆에 거실이 있는 복도 │기타의 복도 │ ├───────────────┼────────────┼──────┤ │유치원ㆍ초등학교 │2.4미터 이상 │1.8미터 이상│ │중학교ㆍ고등학교 │ │ │ ├───────────────┼────────────┼──────┤ │공동주택ㆍ오피스텔 │1.8미터 이상 │1.2미터 이상│ ├───────────────┼────────────┼──────┤ │당해 층 거실의 바닥면적 │1.5미터 이상(의료시설의 │1.2미터 이상│ │합계가 200제곱미터 이상인 경우│복도 1.8미터 이상) │ │ └───────────────┴────────────┴──────┘





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조의2 (복도의 너비 및 설치기준) 1항
Check(EDBA_15-2_1){
    IF getBuildingUsage()="Kindergarten"
       OR getBuildingUsage()="ElementarySchool"
       OR getBuildingUsage()="MiddleSchool"
       OR getBuildingUsage()="HightSchool"
       THEN IF isExternal(Corridor)=FALSE
             THEN getObjectProperty(Corridor.effectiveWidth)>2.4 m   
     ELSE THEN  getObjectProperty(Corridor.effectiveWidth)>1.8 m
            END IF
     END IF  


     IF getBuildingUsage()="MultiUnitHouse"
       OR getBuildingUsage()="Officetel"
       THEN IF isExternal(Corridor)=FALSE
             THEN getObjectProperty(Corridor.effectiveWidth)>1.8 m
            ELSE THEN  getObjectProperty(Corridor.effectiveWidth)>1.2 m
            END IF
     END IF  


     IF getTotalFloorArea(Corridor.Floor.Room)>200 m2 
     THEN IF isExternal(Corridor)=FALSE
             THEN IF getBuildingUsage()="MedicalFacilities"
                       THEN getObjectProperty(Corridor.effectiveWidth)>1.8 m
                  ELSE THEN getObjectProperty(Corridor.effectiveWidth)>1.5 m
                  END IF
          ELSE THEN  getObjectProperty(Corridor.effectiveWidth)>1.2 m
          END IF
     END IF  
} 




Python Code 변환 예정



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

②문화 및 집회시설(공연장ㆍ집회장ㆍ관람장ㆍ전시장에 한한다), 종교시설 중 종교집회장, 노유자시설 중 아동 관련 시설ㆍ노인복지시설, 수련시설 중 생활권수련시설, 위락시설 중 유흥주점 및 장례식장의 관람석 또는 집회실과 접하는 복도의 유효너비는 제1항의 규정에 불구하고 다음 각 호에서 정하는 너비로 하여야 한다. <개정 2010.4.7>





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

check(REFB_15-2_2){

     IF CS THEN KS 

}



CS{

Space  mySpace{

getSpaceUsage(Space) = “AssemblyHall”

OR getSpaceUsage(Space) = “PerformanceHall”

}

    Corridor myCorridor{

       isAdjacent(mySpace,Corridor) = TRUE

    }



    (getBuildingUsage()="CulturalAndAssemblyFacility.PerformanceHall"

    OR getBuildingUsage()="CulturalAndAssemblyFacility.AssemblyHall"

    OR getBuildingUsage()="CulturalAndAssemblyFacility.Auditorium"

    OR getBuildingUsage()="CulturalAndAssemblyFacility.ExhibitionHall"

    OR getBuildingUsage()="ReligiousFacility.ReligiousAssemblyFacility"

    OR getBuildingUsage()="FacilitiesForTheAgedAndChildren.ChildrenRelatedFacility"

    OR getBuildingUsage()="FacilitiesForTheAgedAndChildren.WelfareFacilityForTheAged"

    OR getBuildingUsage()="Trainingfacility.TrainingFacilitiesInLiving "

    OR getBuildingUsage()="AmusementFacility.tavern"

    OR getBuildingUsage()="AmusementFacility.FuneralParlors" )

     

    isExist(myCorridor)=TRUE   

}



KS{



 

   getResult(REFB_15-2_2_1)=TRUE

   getResult(REFB_15-2_2_2)=TRUE

   getResult(REFB_15-2_2_3)=TRUE

} 








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





83
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 조 1(표) 항

표





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

Check(REFB_15-2_1){
            KS
}

KS{

  IF (Building.usage="Kindergarten"
      OR Building.usage="ElementarySchool"
      OR Building.usage="MiddleAndHighSchool" )
      IF(isAdjacent(Corridor, Room)=True)
         THEN   Corridor.width>=2.4 m
            ELSE THEN  Corridor.width>=1.8 m                 
      END IF 

  ELSE IF( Building.usage="MultiUnitHouse"
           OR Building.usage="Officetels" )
         IF( isAdjacent(Corridor, Room)=True)
            TEHN  Corridor.width>=1.8 m
         ELSE THEN Corridor.width>=1.2 m
         END IF
  ELSE IF( Floor.One.Room.area > 200 m2) 
          IF(isAdjacent(Corridor, Room)=True)
             TEHN IF (Building.usage="MedicalFacility")
                   THEN Corridor.width>=1.8 m
             ELSE THEN  Corridor.width>=1.5 m
             
          ELSE THEN Corridor.width>=1.2 m
          END IF
  END IF

}














 




Python Code 변환 예정



84
건축법 시행령 제 36조 1호

1. 제2종 근린생활시설 중 공연장(해당 용도로 쓰는 바닥면적의 합계가 300제곱미터 이상인 경우만 해당한다), 문화 및 집회시설 중 공연장이나 위락시설 중 주점영업의 용도로 쓰는 층으로서 그 층 거실의 바닥면적의 합계가 300제곱미터 이상인 것





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

Check(EDBA_36_0_1){
        KS
}

KS{
      Floor myFloor{
          getFloorUsage()="CulturalAndAssemblyFacility.PerformanceHall"
          OR getFloorUsage()="AmusementFacility.BarBusiness"
      }

      FloorSlab myFloorSlab{
           getObjectUsage(FloorSlab)="NeighborhoodLivingFacility.PerformanceHall"
      }


      getFloorUsage()="NeighborhoodLivingFacility.PerformanceHall"
      getObjectArea(myFloorSlab)>=300 m2
      OR getTotalFloorArea(myFloor.Room)>300 m2

     
} 




Python Code 변환 예정



85
건축법 시행령 제 36조 2호

2. 문화 및 집회시설 중 집회장의 용도로 쓰는 층으로서 그 층 거실의 바닥면적의 합계가 1천 제곱미터 이상인 것





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

Check(EDBA_36_0_2){
            KS
}

KS{   
      Floor myFloor{
           getFloorUsage()="CulturalAndAssemblyFacility.AssemblyHall"
      }

      getTotalFloorArea(myFloor.Room)>=1000 m2


} 




Python Code 변환 예정



86
건축법 시행령 제 38조 1호

1. 제2종 근린생활시설 중 공연장ㆍ종교집회장(해당 용도로 쓰는 바닥면적의 합계가 각각 300제곱미터 이상인 경우만 해당한다)





//건축법 시행령 38조(관람석 등으로부터의 출구 설치) 1호
Check(EDBA_38_0_1){
     (getBuildingUsage() = "ClassIINeighborhoodLivingFacility.performancehall"
     OR getBuildingUsage() = "ClassIINeighborhoodLivingFacility.ReligiousAssemblyFacility")

     Space mySpace {
          getSpaceUsage(Space) = "ClassIINeighborhoodLivingFacility.performancehall"
          OR getSpaceUsage(Space) = "ClassIINeighborhoodLivingFacility.ReligiousAssemblyFacility"
     }

     getTotalFloorArea(mySpace) > 300
}

 








identified_space_codes =['33703', '33708']
min_area = 300
min_door_width = 1.5
min_door_count = 2
identified_space_codes_label ='해당 공간 명칭'
min_area_label = '바닥면적이 다음 미만일 경우 제외(m2)'
min_door_width_label = '출구 유효너비'
min_door_count_label = '유효너비 이상 최소 출구 개수'

def Check():
    for space in SELECT('space'):
        name = space.SELECT('name').STRING()
        code = space.SELECT('class code').STRING()

        if not code in identified_space_codes:
            continue
                
        area = space.SELECT('area').UNIT('m2').NUMBER()
        if area >= min_area:
            exitCnt = 0
            door_width_sum = 0
            inward_exist = False

            for door in space.SELECT('space door'):
                if door.SELECT('is inward', space).BOOL() == False:
                    door_width = door.SELECT('width').UNIT('m2').NUMBER()
                    if door_width >= min_door_width:
                        exitCnt += 1
                        door_width_sum += door_width
                else:
                    door.ERROR('안여닫이 출구')
                    inward_exist = True
                    
            if inward_exist == True:
                continue

            if exitCnt >= min_door_count:
                if door_width_sum >= (area / 100) * 0.6:
                    space.SUCCESS(name)
                else:
                    space.ERROR(name + ', 출구유효너비 합: ' + str(door_width_sum) + 'm, 바닥면적: ' + str(area) + 'm2')
            else:
                space.ERROR(name + ', 출구 수 : ' + str(exitCnt) + '( < ' + str(min_door_count) + ')')
        else:
            space.SUCCESS('바닥면적:' + str(area) + '㎡ ( < ' + str(min_area) + '㎡)') 





87
건축법 시행령 제 38조 4호

4. 위락시설





//건축법 시행령 38조(관람석 등으로부터의 출구 설치) 4호
Check(EDBA_38_0_4){
    getBuildingUsage() = "AmusementFacility"
} 








identified_space_codes =['위락시설']
min_area = 300
min_door_width = 1.5
min_door_count = 2
identified_space_codes_label ='해당 공간 명칭'
min_area_label = '바닥면적이 다음 미만일 경우 제외(m2)'
min_door_width_label = '출구 유효너비'
min_door_count_label = '유효너비 이상 최소 출구 개수'

def Check():
    for space in SELECT('space'):
        name = space.SELECT('name').STRING()
        code = space.SELECT('class code').STRING()

        if not code in identified_space_codes:
            continue
                
        area = space.SELECT('area').UNIT('m2').NUMBER()
        if area >= min_area:
            exitCnt = 0
            door_width_sum = 0
            inward_exist = False

            for door in space.SELECT('space door'):
                if door.SELECT('is inward', space).BOOL() == False:
                    door_width = door.SELECT('width').UNIT('m2').NUMBER()
                    if door_width >= min_door_width:
                        exitCnt += 1
                        door_width_sum += door_width
                else:
                    door.ERROR('안여닫이 출구')
                    inward_exist = True
                    
            if inward_exist == True:
                continue

            if exitCnt >= min_door_count:
                if door_width_sum >= (area / 100) * 0.6:
                    space.SUCCESS(name)
                else:
                    space.ERROR(name + ', 출구유효너비 합: ' + str(door_width_sum) + 'm, 바닥면적: ' + str(area) + 'm2')
            else:
                space.ERROR(name + ', 출구 수 : ' + str(exitCnt) + '( < ' + str(min_door_count) + ')')
        else:
            space.SUCCESS('바닥면적:' + str(area) + '㎡ ( < ' + str(min_area) + '㎡)') 





88
건축법 시행령 제 38조 5호

5. 장례식장





//건축법 시행령 38조(관람석 등으로부터의 출구 설치) 3호
Check(EDBA_38_0_5){
    getBuildingUsage() = "FuneralParlor"
} 








identified_space_codes =['장례시설']
min_area = 300
min_door_width = 1.5
min_door_count = 2
identified_space_codes_label ='해당 공간 명칭'
min_area_label = '바닥면적이 다음 미만일 경우 제외(m2)'
min_door_width_label = '출구 유효너비'
min_door_count_label = '유효너비 이상 최소 출구 개수'

def Check():
    for space in SELECT('space'):
        name = space.SELECT('name').STRING()
        code = space.SELECT('class code').STRING()

        if not code in identified_space_codes:
            continue
                
        area = space.SELECT('area').UNIT('m2').NUMBER()
        if area >= min_area:
            exitCnt = 0
            door_width_sum = 0
            inward_exist = False

            for door in space.SELECT('space door'):
                if door.SELECT('is inward', space).BOOL() == False:
                    door_width = door.SELECT('width').UNIT('m2').NUMBER()
                    if door_width >= min_door_width:
                        exitCnt += 1
                        door_width_sum += door_width
                else:
                    door.ERROR('안여닫이 출구')
                    inward_exist = True
                    
            if inward_exist == True:
                continue

            if exitCnt >= min_door_count:
                if door_width_sum >= (area / 100) * 0.6:
                    space.SUCCESS(name)
                else:
                    space.ERROR(name + ', 출구유효너비 합: ' + str(door_width_sum) + 'm, 바닥면적: ' + str(area) + 'm2')
            else:
                space.ERROR(name + ', 출구 수 : ' + str(exitCnt) + '( < ' + str(min_door_count) + ')')
        else:
            space.SUCCESS('바닥면적:' + str(area) + '㎡ ( < ' + str(min_area) + '㎡)') 





89
건축법 시행령 제 52조 2호

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





//건축법 시행령 52조 (거실 등의 방습) 2호

Check(EDBA_52_0_2){

KS

}



KS{

Building myBuilding1{
Building.usage = "ClassiNeighborhoodLivingFacilites.BathHouse"
}
Building myBuilding2{
Building.usage = "ClassiNeighborhoodLivingFacilites" OR "RestingRestaurant"
}

getSpaceUsage(myBuilding1.Space)="BathRoom"

getSpaceUsage(myBuilding2.Space)="Kitchen"

} 




Python Code 변환 예정



90
건축법 시행령 제 52조 3호

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





//건축법 시행령 52조 (거실 등의 방습) 3호

Check(EDBA_52_0_3){

KS

}



KS{

Building myBuilding1{
Building.usage = "ClassiiNeighborhoodLivingFacilites.Restaurant" OR "ClassiiNeighborhoodLivingFacilites.RestingRestaurant" OR "ClassiiNeighborhoodLivingFacilites.Bakery"
}
Building myBuilding2{
Building.usage = "ClassiiNeighborhoodLivingFacilites.LodgingFacility" 
}

getSpaceUsage(myBuilding1.Space)="Kitchen"

getSpaceUsage(myBuilding2.Space)="BathRoom"


} 




Python Code 변환 예정



91
건축법 시행령 제 53조 1 항 2호

2. 공동주택 중 기숙사의 침실, 의료시설의 병실, 교육연구시설 중 학교의 교실 또는 숙박시설의 객실 간 경계벽





// 건축법 시행령 53조 (경계벽 등의 설치) 1항 2호



check(EDBA_53_1_1){

	KS

}

KS{


Space mySpace1{

Space.Building.usage = “MultiUnitHouse.Dormitory”

Space.name = “BedRoom”

}



Space mySpace1_1{

Space.Building.usage = “MultiUnitHouse.Dormitory”

Space.name != “BedRoom”

}



Space mySpace2{

Space.Building.usage = “MedicalFacility”

Space.name = “Ward”

}



Space mySpace2_1{

Space.Building.usage = “MedicalFacility”

Space.name != “Ward”

}



Space mySpace3{

Space.Building.usage = “EducationAndResearchFacility.School”

Space.name = “ClassRoom”

}

Space mySpace3_1{

Space.Building.usage = “EducationAndResearchFacility.School”

Space.name != “ClassRoom”

}



Space mySpace4{

Space.Building.usage = “LodgingFacility”

Space.name = “GuestRoom”

}

Space mySpace4_1

Space.Building.usage = “LodgingFacility”

Space.name != “GuestRoom”

}



Wall myWall1{

isObjectProperty(Wall.isPartitionWall)=TRUE

hasObject(mySpace1, Wall) =TRUE

}



Wall myWall2{

isObjectProperty(Wall.isPartitionWall)=TRUE

hasObject(mySpace2, Wall) =TRUE

}



Wall myWall3{

isObjectProperty(Wall.isPartitionWall)=TRUE

hasObject(mySpace3, Wall) =TRUE

}



Wall myWall4{

isObjectProperty(Wall.isPartitionWall)=TRUE

hasObject(mySpace4, Wall) =TRUE

}



(hasObject(mySpace1, myWall) =TRUE

hasObject(mySpace1_1, myWall) =FALSE)

OR

(hasObject(mySpace2, myWall) =TRUE

hasObject(mySpace2_1, myWall) =FALSE)

OR

(hasObject(mySpace3, myWall) =TRUE

hasObject(mySpace3_1, myWall) =FALSE)

OR

(hasObject(mySpace4, myWall) =TRUE

hasObject(mySpace4_1, myWall) =FALSE)



} 




Python Code 변환 예정



92
건축법 시행령 제 53조 1 항 3호

3. 제2종 근린생활시설 중 다중생활시설의 호실 간 경계벽





// 건축법 시행령 53조 (경계벽 등의 설치) 1항 3호



check(EDBA_53_1_3){

	KS

}


KS{

Space mySpace1{

Space.Building.usage = “ClassIINeighborhoodLivingFacility.CommunalLivingFacility”

}



Wall myWall{

isObjectProperty(Wall.isPartitionWall)=TRUE
hasObject(mySpace1, Wall) =TRUE
}



isObjectProperty(myWall.isSharedByHouseholds) = TRUE


} 




Python Code 변환 예정



93
건축법 시행령 제 53조 1 항 4호

4. 노유자시설 중 「노인복지법」 제32조제1항제3호에 따른 노인복지주택(이하 "노인복지주택"이라 한다)의 각 세대 간 경계벽





// 건축법 시행령 53조 (경계벽 등의 설치) 1항 4호





check(EDBA_53_1_4){

	KS

}


KS{

Building  myBuilding{

Zone.Building.usage = “FacilitiesForTheAgedAndChildren.WelfareFacilityForTheAged ”

getResult(WOPA_32_1_3)=TRUE

}



Wall myWall{

isObjectProperty(Wall.isPartitionWall)=TRUE
hasObject(myBuilding, Wall) =TRUE
}



isObjectProperty(myWall.isSharedByHouseholds) = TRUE



} 




Python Code 변환 예정



94
건축법 시행령 제 53조 2 항 1호

1. 단독주택 중 다가구주택





//건축법 시행령 53조 (경계벽 등의 설치) 2항 1호

Check(EDBA_53_2_1){
   KS
}

KS{
   getBuildingUsage()="DetachedHouse.MultiFamilyHouse"
}  




Python Code 변환 예정



95
건축법 시행령 제 53조 2 항 3호

3. 업무시설 중 오피스텔





//건축법 시행령 53조 (경계벽 등의 설치) 2항 3호

Check(EDBA_53_2_3){
   KS
}

KS{
   getBuildingUsage()="BusinessFacility.Officetel"
   
}  




Python Code 변환 예정



96
건축법 시행령 제 53조 2 항 4호

4. 제2종 근린생활시설 중 다중생활시설





//건축법 시행령 53조 (경계벽 등의 설치) 2항 4호

Check(EDBA_53_2_4){
   KS
}

KS{
   getBuildingUsage()="ClassIINeighborhoodLivingFacility.CommunalLivingFacility"
   
}  




Python Code 변환 예정



97
건축법 시행령 제 53조 2 항 5호

5. 숙박시설 중 다중생활시설





//건축법 시행령 53조 (경계벽 등의 설치) 2항 5호

Check(EDBA_53_2_5){
   KS
}

KS{
   getBuildingUsage()="LodgingFacility.CommunalLivingFacility"
   
}  




Python Code 변환 예정



98
건축법 시행령 제 58조 2호

2. 도매시장의 용도로 쓰는 건축물로서 그 주요구조부가 불연재료로 된 것





check(EDBA_58_0_2){

	getBuildingUsage() < "WholeSale Market"

	isFireResistantStructure(MainStructure) = TRUE

} 




Python Code 변환 예정



99
건축법 시행령 제 80조 1호

1. 주거지역: 60제곱미터





//건축법 시행령 80조 (건축물이 있는 대지의 분할제한) 1호

Check(EDBA_80_1){
     IF CS THEN KS
}
CS{
	getBuildingUsage() = "ResidentialArea"
}
KS{
	getObjectProperty(Building.Site.area) >= 60m2
} 




Python Code 변환 예정



100
건축법 시행령 제 80조 2호

2. 상업지역: 150제곱미터






//건축법 시행령 80조 (건축물이 있는 대지의 분할제한) 2호

Check(EDBA_80_2){
     IF CS THEN KS
}
CS{
	getBuildingUsage() = "CommercialArea"
}
KS{
	getObjectProperty(Building.Site.area) >= 150m2
} 




Python Code 변환 예정



    1   2   3   next▷