설계품질검토 대상법규   |   조항단위 법규   |   문장단위 법규   |   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
건축물의 설비기준 등에 관한 규칙 제 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 변환 예정



2
건축물의 설비기준 등에 관한 규칙 제 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 변환 예정



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

1. 영 제46조제1항의 규정에 의하여 건축물에 방화구획이 설치된 경우에는 그 구획마다 1개소 이상의 배연창을 설치하되, 배연창의 상변과 천장 또는 반자로부터 수직거리가 0.9미터 이내일 것. 다만, 반자높이가 바닥으로부터 3미터 이상인 경우에는 배연창의 하변이 바닥으로부터 2.1미터 이상의 위치에 놓이도록 설치하여야 한다.





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

Check(RFB_14_1_1){

	IF (CS) THEN KS1 AND KS2

}



Zone myZone{

		isObjectProperty(Zone.isFirePartition) = TRUE

	}





CS{

	isObjectProperty(Building.isFirePartition) = TRUE

}



KS1{

	

	hasSpace(myZone, SmokeVentilator) = TRUE

	

	getObjectVerticalDistance(SmokeVentilator, Ceiling) < 0.9 m

	OR getObjectVerticalDistance(SmokeVentilator, CeilingCovering) < 0.9 m

}



KS2{	

	IF{

		getSpaceHeight(myZone, b) >= 3 m

	}



	THEN{

		getObjectVerticalDistance(SmokeVentilator, FloorSlab) >= 2.1 m 

	}

} 




Python Code 변환 예정



4
건축물의 설비기준 등에 관한 규칙 제 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 변환 예정



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

1. 단열조치 일반사항





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

Check(NFSC103_6_0_1){
      KS
}

KS{
    getFloorArea(SprinklerSystme.ProtectionZone.One)<=3000 m2
} 




Python Code 변환 예정



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



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

5) 제5조제9호아목에 따른 방풍구조(외벽제외) 또는 바닥면적 150제곱미터 이하의 개별 점포의 출입문





//스프링클러설비의 화재안전기준(NFSC 103) 7조 (개방형스프링클러설비의 방수구역 및 일제개방밸브) 1호

Check(NFSC103_7_0_1){
       KS
}

KS{
   Zone myZone{
          isObjectProperty(Zone.isWaterProofingZone)=True
   }

    getObjectCount(myZonme.One.Floor)<2
} 




Python Code 변환 예정



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

나. 단열조치를 하여야 하는 부위의 열관류율이 위치 또는 구조상의 특성에 의하여 일정하지 않는 경우에는 해당 부위의 평균 열관류율값을 면적가중 계산에 의하여 구한다.





//스프링클러설비의 화재안전기준(NFSC 103) 7조 (개방형스프링클러설비의 방수구역 및 일제개방밸브) 2호

Check(NFSC103_7_0_2){
     KS
}

KS{
 Zone myZone{
    isObjectProperty(Zone.isWaterProofingZone)=True
 }
 
Valve myValve{
    isObjectProperty(Valve.isDelugeValve)=True
}
  getObjectCount(myValve,myZone)>=1
} 




Python Code 변환 예정



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

다. 단열조치를 하여야 하는 부위에 대하여는 다음 각 호에서 정하는 방법에 따라 단열기준에 적합한지를 판단할 수 있다.





//스프링클러설비의 화재안전기준(NFSC 103) 7조 (개방형스프링클러설비의 방수구역 및 일제개방밸브) 3호



NFSC103_7_0_3{

      IF CS THEN KS1 ELSE KS2

}



CS{

 getObjectCount(myZone)>=2

}



KS1{

  getObjectCount(SprinklerSystem.Head, myZone.One)>=25

}



KS2{

 getObjectCount(SprinklerSystem.Head, myZone.One)<=50

} 




Python Code 변환 예정



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

3) 구성재료의 열전도율 값으로 열관류율을 계산한 결과가 별표1의 부위별 열관류율 기준을 만족하는 경우 적합한 것으로 본다.(단, 각 재료의 열전도율 값은 한국산업규격 또는 국가공인시험기관의 KOLAS 인정마크가 표시된 시험성적서의 값을 사용하고, 표면열전달저항 및 중공층의 열저항은 이 기준 별표5 및 별표6에서 제시하는 값을 사용)





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

Check(NFSC103_9_1_3){
	KS
}
KS{
	Zone myZone{
	isObjectProperty(Zone.isProtectionZone) = TRUE
	}
	isInstalled(AcousticSystem, myZone) = TRUE
	getElementDistance(myZone.Wall|myZone.Column, AcousticSystem.One) <= 25m
} 




Python Code 변환 예정



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

가. 전동기에는 대한전기협회가 정한 내선규정의 콘덴서부설용량기준표에 의한 제5조제11호나목에 따른 역률개선용콘덴서를 전동기별로 설치하여야 한다. 다만, 소방설비용 전동기 및 인버터 설치 전동기에는 그러하지 아니할 수 있다.





//간이스프링클러설비의 화재안전기준(nfsc 103a) 6조 (간이스프링클러설비의 방호구역·유수검지장치) 1호

Check(NFSC503A_6_0_1){
	KS
}
KS{
	Zone myZon{
	isObjectProperty(Zone.isProtectionZone) = TRUE
	}
	isObjectProperty(myZone.FloorSlab.area) < 1000 m2
} 




Python Code 변환 예정



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

나. 간선의 전압강하는 대한전기협회가 정한 내선규정을 따라야 한다.





//간이스프링클러설비의 화재안전기준(nfsc 103a) 6조 (간이스프링클러설비의 방호구역·유수검지장치) 2호

Check(NFSC503A_6_0_2){
	KS
}
KS{
	Zone myZone{
	isObjectProperty(Zone.isProtectionZone) = TRUE
	}
	isInstalled(myZone,WaterflowIndicator) = TRUE
} 




Python Code 변환 예정



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

3. 조명설비





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



Check(NFSC503A_6_0_3){

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

}

	Zone myZone{

	isObjectProperty(Zone.isProtectionZone) = TRUE

	}

CS1{

	getObjectCount(Floor.One.SimpleSprinklerHead) > 10

}

KS1{

	getObjectCount(Zone.One.Floor) < 2

}

CS2{

	getObjectCount(Floor.One.SimpleSprinklerHead) <= 10

}

KS2{

	getObjectCount(myZone.One.Floor) <= 3

} 




Python Code 변환 예정



14
건축물의 에너지절약설계기준 제 별표2조

단열재의 등급 분류





자동화재탐지설비의 화재안전기준(nfsc 203) 7조 (감지기) 3항 7호 가목
Check(NFSC203_7_3_7_가){
	KS
}
KS{
	Pipe myPipe{
	isObjectProperty(Pipe.isForAir) = TRUE
	}
	Zone myZone{
	isObjectProperty(Zone.isDetectionZone) = TRUE
	}
	hasObject(myZone, myPipe) = TRUE
	getObjectLength(myZone.One.myPipe) >= 20m
}
 




Python Code 변환 예정



15
건축물의 에너지절약설계기준 제 별표3조

단열재의 두께





자동화재탐지설비의 화재안전기준(nfsc 203) 7조 (감지기) 3항 7호 가목
Check(NFSC203_7_3_7_가){
	KS3 AND IF !CS THEN KS1 ELSE KS2
}
	Pipe myPipe{
	isObjectProperty(Pipe.isForAir) = TRUE
	}
	Zone myZone{
	isObjectProperty(Zone.isDetectionZone) = TRUE
	}
KS3{
	getElementDistance(myPipe, myZone.Wall) <= 1.5m
	getElementDistance(myPipe, myZone.Column) <= 1.5m
}
CS{
	isFireResistantStructure(SpecificFireFightingBuilding.MainStructuralPart) = TRUE
	
}
KS1{
	getObjectInterval(myPipe) <= 6m
}
KS2{
	getObjectInterval(myPipe) <= 6m
} 




Python Code 변환 예정



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

완화기준





자동화재탐지설비의 화재안전기준(nfsc 203) 7조 (감지기) 3항 8호 가목
Check(NFSC203_7_3_8_가){
	IF !CS THEN KS1 AND K2 ELSE THEN KS3 AND KS4

}
	Zone myZone{
	isObjectProperty(Zone.isDetectionZone) = TRUE
	}
CS1{
	isFireResistantStructure(SpecificFireFightingBuilding.MainStructuralPart) = TRUE
) 
KS1{
	isInstalled(ThermocoupleElement , myZone.Floor, c, 18) = TRUE
}
KS2{
	isObjectProperty(SpecificFireFightingBuilding.myZone.Floor.area) <= 72m2
	getObjectCount(myZone) >= 4
}
KS3{
	isInstalled(ThermocoupleElement , myZone.Floor, c, 22) = TRUE
}
KS4{
	isObjectProperty(SpecificFireFightingBuilding.myZone.Floor.area) <= 88m2
	getObjectCount(myZone) >= 4
} 




Python Code 변환 예정



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

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





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

Check(REFB_8-2_2){



   Zone myZone{

      isObjectProperty(Zone.isEgressSafetyZone)=TRUE

   }

   Stair myStair{

      isObjectProperty(Stair.isSpecialEscape)=TRUE

      isAccessible(myZone, Stair)=TRUE

   }

  Floor myFloor{

         Floor.number>getFloorNumber(myZone)

         OR Floor.numberZone)

  }

 

  isGoThrough(myStair, myZone, myFloor)=TRUE

} 




Python Code 변환 예정



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

2. 피난안전구역의 내부마감재료는 불연재료로 설치할 것





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

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

    isObjectProperty(myZone.InteriorFinish.nonCombustibility)=TRUE
} 




Python Code 변환 예정



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

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





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




Python Code 변환 예정



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

4. 비상용 승강기는 피난안전구역에서 승하차 할 수 있는 구조로 설치할 것





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 8조의2 (직통계단의 설치기준) 3항4호
check(REFB_8-2_3_4){
   
   Elevator  myElevator{
     isObjectProperty(Elevator.isEmergency)=TRUE
   }

   isDirectlyAccessible(myZone, myElevator)=TRUE
} 




Python Code 변환 예정



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

5. 피난안전구역에는 식수공급을 위한 급수전을 1개소 이상 설치하고 예비전원에 의한 조명설비를 설치할 것





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 8조의2 (직통계단의 설치기준) 3항5호
check(REFB_8-2_3_5){
  hasObject(myZone,Hydrant)=True
  hasObject(myZone,LightingSystem)=TRUE
} 




Python Code 변환 예정



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

6. 관리사무소 또는 방재센터 등과 긴급연락이 가능한 경보 및 통신시설을 설치할 것





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 8조의2 (직통계단의 설치기준) 3항6호
check(REFB_8-2_3_6){
hasObject(myZone, WarningAndCommunicationFacility)=TRUE
} 




Python Code 변환 예정



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



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



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

① 영 제34조제3항 및 제4항에 따라 설치하는 피난안전구역(이하 "피난안전구역"이라 한다)은 해당 건축물의 1개층을 대피공간으로 하며, 대피에 장애가 되지 아니하는 범위에서 기계실, 보일러실, 전기실 등 건축설비를 설치하기 위한 공간과 같은 층에 설치할 수 있다. 이 경우 피난안전구역은 건축설비가 설치되는 공간과 내화구조로 구획하여야 한다. <개정 2012.1.6>





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 8조의2 (피난안전구역의 설치기준) 1항
check(REFB_8-2_1){
	KS1 AND IF CS THEN KS2
}

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

	Space mySpace{
		hasSpace(Space, FacilitiesOfABuilding)
	}

	Structure myStructure{
		isObjectProperty(Space.isfireResistantStructure) = TRUE
	}

KS1{
 	BSC = getBuildingStoriesCount()
	getFloorNumber(myZone) <= BSC
}

CS{
	getFloorNumber(mySpace) = getFloorNumber(myZone)
}

KS2{
	isPartitioned(myZone, myStructure, mySpace) = TRUE
}
 




Python Code 변환 예정



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

8. 피난안전구역의 높이는 2.1미터 이상일 것





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

   Zone myZone {
      geObjectProperty(Zone.isEgressSafetyZone) = TRUE
   }
   getSpaceHeight(myZone)>=2.1 m 
} 




Python Code 변환 예정



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



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

1. 단독주택 중 다가구주택의 각 가구 간 또는 공동주택(기숙사는 제외한다)의 각 세대 간 경계벽(제2조제14호 후단에 따라 거실·침실 등의 용도로 쓰지 아니하는 발코니 부분은 제외한다)





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



check(EDBA_53_1_1){

	KS

}




KS{



Zone myZone1{

Zone.Building.usage = “DetachedHouse.MultiFamilyHouse ”

}



Zone myZone2{

Zone.Building.usage = “MultiUnitHouse”

}



Balcony myBalcony{

Balcony.usage != “BedRoom”

Balcony.usage != “LivingRoom”

}



Wall myWall1{

isObjectProperty(Wall.isPartitionWall)=TRUE

hasObject(myZone1.Household, Wall) =TRUE

hasObject(myBalcony,Wall) =FALSE

}



Wall myWall1{

isObjectProperty(Wall.isPartitionWall)=TRUE

hasObject(myZone2.Household, Wall) =TRUE

hasObject(myBalcony,Wall) =FALSE

}





isExist(myWall1)=TRUE

isExist(myWall2)=TRUE



} 




Python Code 변환 예정



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

4. 건축물의 최상층 또는 피난층으로서 대규모 회의장·강당·스카이라운지·로비 등의 용도로 쓰는 부분으로서 그 용도로 사용하기 위하여 불가피한 부분





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

check(EDBA_46_2_4){

KS

}



KS{
Floor myFloor{
getObject(TopFloor)
OR  isObjectProperty(Floor.isEscape)=TRUE
}


 AND 

 (getSpaceUsage(myFloor.Space)="ConferenceRoom"

 OR getSpaceUsage(myFloor.Space)="Hall"

 OR getSpaceUsage(myFloor.Space)="SkyLounge"

 OR getSpaceUsage(myFloor.Space)="Lobby"

 OR isObjectProperty(Zone.isEgressSafetyZone)= TRUE

} 




Python Code 변환 예정



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

5. 복층형 공동주택의 세대별 층간 바닥 부분





//건축법 시행령 46조 (방화구획의 설치) 2항 5호
check(EDBA_46_2_5){
	Zone myZone{
		isObjectProperty(Zone.isOccupiedByOneHousehold) = TRUE
	}
	getBuildingUsage() = "DuplexMultiUnitHouses"
	hasSpace(myZone, Floor) = TRUE
	getFloorNumber(Floor) != 1
} 




Python Code 변환 예정



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

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





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

check(EDBA_46_4){

IF CS THEN KS1 AND KS2

}



Zone myZone{

     isObjectProperty(Zone.isOccupiedByOneHousehold) = TRUE

}



KS1{
Space mySpace{
Space.isEscape = TRUE
}

isExist(Balcony)=TRUE

AND hasElement(Balcony,mySpace)=TRUE

AND (getResult(EDBA_46_4_1)=TRUE

AND getResult(EDBA_46_4_2)=TRUE

AND getResult(EDBA_46_4_3)=TRUE

AND getResult(EDBA_46_4_4)=TRUE)

}



KS2{
Stair myStair{
Stair.isDirect = TRUE
}

isGoThrough(myZone,mySpace,myZone)=TRUE

AND isGoThrough(mySpace,myZone,myStair)=TRUE

}



CS{

getBuildingUsage()="MultiUnitHouses.ApartmentHouses"

AND Floor.number >=4

AND isDirectlyAccessible(myZone, myStair)=TRUE

AND myStair.Number>=2

} 




Python Code 변환 예정



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





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



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



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

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





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

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

	isExist(myFloor)=True           
}

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

	getResult(EDBA_34) = TRUE

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




Python Code 변환 예정



36
국토의 계획 및 이용에 관한 법률 제 77조 3 항 3호

3. 제40조에 따른 수산자원보호구역





//국토의 계획 및 이용에 관한 법률 77조 (용도지역의 건폐율) 3항 3호
Check(LPUA_77_3_3){
	KS
}

KS{
	getResult(LPUA_40) = TRUE
	getObjectProperty(SpecialPurposeZone.type) = "FisheryResourcesProtectionZone"
} 




Python Code 변환 예정



37
국토의 계획 및 이용에 관한 법률 제 77조 3 항 4호

4. 「자연공원법」에 따른 자연공원





// 국토의 계획 및 이용에 관한 법률 77조 (용도지역의 건폐율) 3항 4호 

Check(LPUA_77_3_4){
      KS
}


KS{
getObjectProperty(SpecialPurposeZone.type) = "NaturalPark"
} 




Python Code 변환 예정



38
국토의 계획 및 이용에 관한 법률 제 77조 3 항 5호

5. 「산업입지 및 개발에 관한 법률」 제2조제8호라목에 따른 농공단지





// 국토의 계획 및 이용에 관한 법률 77조 (용도지역의 건폐율) 3항 5호

Check(LPUA_J77_3_5){
      KS
}

KS{
   getObjectProperty(SpecialPurposeZone.type) = "AgriculturalAndIndustrialComplexes"
 
}  




Python Code 변환 예정



39
국토의 계획 및 이용에 관한 법률 제 77조 3 항 6호

6. 공업지역에 있는 「산업입지 및 개발에 관한 법률」 제2조제8호가목부터 다목까지의 규정에 따른 국가산업단지, 일반산업단지 및 도시첨단산업단지와 같은 조 제12호에 따른 준산업단지





//국토의 계획 및 이용에 관한 법률 77조 (용도지역의 건폐율) 3항 6호 

Check(LPUA_77_3_6){
         KS
}


KS{
    getObjectProperty(SpecialPurposeZone.type) = "NationalIndustrialComplexes"
    OR  getObjectProperty(SpecialPurposeZone.type) = "GeneralIndustrialComplexes"
    OR getObjectProperty(SpecialPurposeZone.type) = "UrbanHighTechIndustrialComplexes"
    OR getObjectProperty(SpecialPurposeZone.type) = "SemiIndustrialComplex"

}


 




Python Code 변환 예정



40
국토의 계획 및 이용에 관한 법률 시행령 제 46조 10 항

⑩제1항 내지 제4항 및 제7항의 규정에 의하여 완화하여 적용되는 건폐율 및 용적률은 당해 용도지역 또는 용도지구에 적용되는 건폐율의 150퍼센트 및 용적률의 200퍼센트를 각각 초과할 수 없다. <개정 2004.1.20.>





//국토의 계획 및 이용에 관한 법률 시행령 46조 (도시지역 내 지구단위계획구역에서의 건폐율 등의 완화적용) 10항

Check(EDLPUA_46_10){
     IF CS THEN KS
}
CS{
	getResult(EDLPUA_46_1)=TRUE
	OR getResult(EDLPUA_46_2)=TRUE
	OR getResult(EDLPUA_46_3)=TRUE
	OR getResult(EDLPUA_46_4)=TRUE
	OR getResult(EDLPUA_46_7)=TRUE
}
KS{
	BBTR = getObjectProperty(Building.buildingToLandRatio)
	BFAR = getObjectProperty(Building.floorAreaRatio)

	(BBTR < 1.5*getObjectProperty(Building.SpecialPurposeArea.buildingToLandRatio)
	OR BBTR < 1.5*getObjectProperty(Building.SpecialPurposeZone.buildingToLandRatio))

	(BFAR < 2*getObjectProperty(Building.SpecialPurposeArea.floorAreaRatio)
	OR BFAR < 2*getObjectProperty(Building.SpecialPurposeZone.floorAreaRatio))

} 




Python Code 변환 예정



41
국토의 계획 및 이용에 관한 법률 시행령 제 47조 1 항

①지구단위계획구역(도시지역 외에 지정하는 경우로 한정한다. 이하 이 조에서 같다)에서는 법 제52조제3항에 따라 지구단위계획으로 당해 용도지역 또는 개발진흥지구에 적용되는 건폐율의 150퍼센트 및 용적률의 200퍼센트 이내에서 건폐율 및 용적률을 완화하여 적용할 수 있다. <개정 2005.1.15, 2007.4.19, 2012.4.10>





//EDLPUA 47조 1항



Check(EDLPUA_47_1){

     IF CS THEN KS

}



CS{

     getObjectUsage(Zone)="DistrictUnitPlanningZones"

}



KS{
SpecialPurposeArea mySpecialPurposeArea{
getObjectProperty(Building.SpecialPurposeArea.type) = "DevelopmentPromotionDistrict"
}

BLR= getObjectProperty(Building.SpecialPurposeArea.buildingToLandRatio) OR getObjectProperty(mySpecialPurposeArea.buildingToLandRatio)

FAR= getObjectProperty(Building.SpecialPurposeArea.floorAreaRatio) OR getObjectProperty(mySpecialPurposeArea.floorAreaRatio)


   getBuildingToLandRatio()<=BLR*150%

   getFloorAreaRatio(FAR)<=200%

} 




Python Code 변환 예정



42
국토의 계획 및 이용에 관한 법률 시행령 제 46조 4 항

④지구단위계획구역에서는 법 제52조제3항의 규정에 의하여 도시ㆍ군계획조례의 규정에 불구하고 지구단위계획으로 제84조에 규정된 범위안에서 건폐율을 완화하여 적용할 수 있다. <개정 2012.4.10>





//국토의 계획 및 이용에 관한 법률 시행령 46조 (도시지역 내 지구단위계획구역에서의 건폐율 등의 완화적용) 4항

Check(EDLPUA_46_4){
     IF CS THEN KS
}


CS{
  
         getObjectUsage(Zone)="DistrictUnitPlanningZones"
}


KS{
         getResult(EDLPUA_84_1)=True
         getResult(EDLPUA_84_1)=True
         getResult(EDLPUA_84_8)=True
} 




Python Code 변환 예정



43
국토의 계획 및 이용에 관한 법률 시행령 제 85조 6 항 2호

2. 너비 25미터 이상인 도로에 20미터 이상 접한 대지안의 건축면적이 1천제곱미터 이상인 건축물





//	국토의 계획 및 이용에 관한 법률 시행령 85조 (용도지역 안에서의 용적률) 6항 2호
Check(EDLPUA_85_6_2){
	IF CS THEN KS
}

CS{
	getBuildingUsage() = "FisheryResourcesProtectionZone"
}

KS{
	getFloorAreaRatio() <= 80
} 




Python Code 변환 예정



44
국토의 계획 및 이용에 관한 법률 시행령 제 84조 4 항 3호

3. 수산자원보호구역 : 40퍼센트 이하





//국토의 계획 및 이용에 관한 법률 시행령 84조 (용도지역안에서의 건폐율) 3항 3호

Check(EDLPUA_84_3_3){
      IF CS THEN KS
}

CS{
   getObjectProperty(Building.SpecialPurposeDistrict.type)="FisheryResourcesProtectionZone"
}

KS{
    getBuildingToLandRatio()<=40%
} 




Python Code 변환 예정



45
국토의 계획 및 이용에 관한 법률 시행령 제 84조 4 항 4호

4. 「자연공원법」에 따른 자연공원 : 60퍼센트 이하





//국토의 계획 및 이용에 관한 법률 시행령 84조 (용도지역안에서의 건폐율) 3항 4호

Check(EDLPUA_84_3_4){
      IF CS THEN KS
}

CS{
   getObjectProperty(Building.SpecialPurposeDistrict.type)="ParkProtectionZone"
}

KS{
    getBuildingToLandRatio()<=60%
} 




Python Code 변환 예정



46
국토의 계획 및 이용에 관한 법률 시행령 제 85조 6 항 3호

3. 「자연공원법」에 따른 자연공원: 100퍼센트 이하





//	국토의 계획 및 이용에 관한 법률 시행령 85조 (용도지역 안에서의 용적률) 6항 3호
Check(EDLPUA_85_6_3){
	IF CS THEN KS
}

CS{
	getBuildingUsage() = "ParkProtectionZone"
}

KS{
	getFloorAreaRatio() <= 100
}
 




Python Code 변환 예정



47
소화기구 및 자동소화장치의 화재안전기준(NFSC 101) 제 4조 8호 가 목

가. 분사헤드의 설치 높이는 방호구역의 바닥으로부터 최소 0.2m 이상 최대 3.7m 이하로 하여야 한다. 다만, 별도의 높이로 형식승인 받은 경우에는 그 범위 내에서 설치할 수 있다.





//소화기구 및 자동 소화장치의 화재안전기준(nfsc 101) 4조 (설치기준) 1항 8호 가목
Check(NFSC101_4_1_8_가){
	KS
}

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

02.m <= getObjectVerticalDistance(myZone.FloorSlab, AutomaticFireExtinguishingEquipment.Head, a) <= 3.7m
	 




Python Code 변환 예정



48
소화기구 및 자동소화장치의 화재안전기준(NFSC 101) 제 4조 8호 나 목

나. 화재감지기는 방호구역내의 천장 또는 옥내에 면하는 부분에 설치하되 「자동화재탐지설비의 화재안전기준(NFSC 203)」 제7조에 적합하도록 설치할 것





//소화기구 및 자동 소화장치의 화재안전기준(nfsc 101) 4조 (설치기준) 1항 8호 나목
Check(NFSC101_4_1_8_나){
	KS
}
KS{
	Zone myZone{
		isObjectProperty(Zone.isProtectionZone)=TRUE
	}
	{hasObject(myZone.Ceiling, FireDetector) = TRUE
	OR isExternal(FireDetector) = FALSE}
	getResult(NFSC203_7) = TRUE

} 




Python Code 변환 예정



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

2. 송수구는 구경 65㎜의 쌍구형으로 설치할 것. 다만, 하나의 송수구역에 부착하는 살수헤드의 수가 10개 이하인 것은 단구형의 것으로 할 수 있다.





//  연결살수설비의 화재안전기준(nfsc 503) 4조 (송수구 등) 1항 2호



Check(NFSC503_4_1_2){

 IF CS THEN KS 

}

CS{

 Zone myZone{

  isObjectProperty(Zone.isWaterSupplyZone)=TRUE

 }

 hasObject(myZone.One,HookingUpSprinklerSystem.Head.)=TRUE

 getObjectCount(HookingUpSprinklerSystem.Head.) <= 10  

}

KS{

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

 }

 isObjectProperty(myPort.diameter) = 65mm

 getObjectProperty(myPort.shapeType) = "DoubleType"

} 




Python Code 변환 예정



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

3. 개방형헤드를 사용하는 송수구의 호스접결구는 각 송수구역마다 설치할 것. 다만, 송수구역을 선택할 수 있는 선택밸브가 설치되어 있고 각 송수구역의 주요구조부가 내화구조로 되어 있는 경우에는 그러하지 아니하다.





//  연결살수설비의 화재안전기준(nfsc 503) 4조 (송수구 등) 1항 3호



Check(NFSC503_4_1_3){

 IF !CS THEN KS 

}

	Zone myZone{

  isObjectProperty(Zone.isWaterSupplyZone)=TRUE

	}

CS{

	Valve myValve{

	isObjectProerpty(Valve.isSelectionValve) = TRUE

	}

	isInstalled(myValve) = TRUE

	hasObject(myZone,MainStructuralPart) = TRUE

	isFireResistantStructure(MainStructuralPart) = TRUE

}

KS{

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

 }

	Head myHead{

	getObjectProperty(Head.openAndCloseType) = "OpenType"

	}

	isInstalled(myPort.호스접결구, myZone.One) = TRUE

} 




Python Code 변환 예정



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

④개방형헤드를 사용하는 연결살수설비에 있어서 하나의 송수구역에 설치하는 살수헤드의 수는 10개 이하가 되도록 하여야 한다.





//  연결살수설비의 화재안전기준(nfsc 503) 4조 (송수구 등) 4항

Check(NFSC503_4_4){
	IF CS THEN KS
}
CS{
	Head myHead{
	getObjectProperty(Head.openAndCloseType) = "OpenType"	
	}
	getObjectProperty(myHead.systemType) = "HookingUpSprinklerSystem"
}
KS{
	Zone myZone{
	isObjectProperty(Zone.isWaterSupplyZone) = TRUE
	}
	Head myHead{
	isInstalled(HookingUpSprinklerSystem.Head, myZone.One) = TRUE
	}

	getObjectCount(myHead) <= 10
} 




Python Code 변환 예정



52
연소방지설비의 화재안전기준(NFSC 506) 제 5조 3호

3. 살수구역은 환기구 등을 기준으로 지하구의 길이방향으로 350 m 이내마다 1개 이상 설치하되, 하나의 살수구역의 길이는 3m 이상으로 할 것





//연소방지설비의 화재안전기준(nfsc 506) 5조 (방수헤드) 3호
Check(NFSC506_5_0_3){
	 KS 
}


KS{
  Zone myZone{
    isObjectProperty(Zone.isWateringZone)=True
  }

  Head myHead{
    isObjectProperty(Head.isDischargeHead)=True
  }
    
    isInstalled(myHead,Zone)=True 
    getObjectInterval(myHead)<=350 m
    getObjectLength(myZone)>=3 m
    
    
} 




Python Code 변환 예정



53
자동화재탐지설비 및 시각경보장치의 화재안전기준(NFSC 203) 제 7조 3 항 12호 라 목

라. 감지기와 감지구역의 각부분과의 수평거리가 내화구조의 경우 1종 4.5m 이하, 2종 3m 이하로 할 것. 기타 구조의 경우 1종 3m 이하, 2종 1m 이하로 할 것





자동화재탐지설비의 화재안전기준(nfsc 203) 7조 (감지기) 3항 12호 라목

Check(NFSC203_7_3_12_라){

	IF (CS1 THEN KS1 AND KS2) OR (!CS1 THEN KS3 AND KS4)

}

	Zone myZone{

	isObjectProperty(Zone.isDetectionZone) = TRUE

	}

	Sensor mySensor1{

	getObjectProperty(Sensor.type) = "Type1"

	}

	Sensor mySensor2{

	getObjectProperty(Sensor.type) = "Type2"

	}

CS1{

	isFireResistantStructure(myZone.Wall) = TRUE

	isFireResistantStructure(myZone.Column) = TRUE

}

KS1{

	getElementDistance(mySensor1, myZone.Wall) <= 4.5m

	getElementDistance(mySensor1, myZone.Column) <= 4.5m

}

KS2{

	getElementDistance(mySensor2, myZone.Wall) <= 3m

	getElementDistance(mySensor2, myZone.Column) <= 3m

}

KS3{

	getElementDistance(mySensor1, myZone.Wall) <= 3m

	getElementDistance(mySensor1, myZone.Column) <= 3m	

}

KS4{

	getElementDistance(mySensor2, myZone.Wall) <= 1m

	getElementDistance(mySensor2, myZone.Column) <= 1m	

} 




Python Code 변환 예정



54
장애인ㆍ노인ㆍ임산부 등의 편의증진 보장에 관한 법률 시행령 제 별표2조

1. 삭제 <2006.1.19> 2. 공원<표-EDCDAPA_*_2_T1> (편의시설의 종류 :설치기준) 가. 장애인 등의 출입이 가능한 출입구 :공원 외부에서 내부로 이르는 출입구는 주출입구를 포함하여 적어도 하나 이상을 장애인등의 출입이 가능하도록 유효폭·형태 및 부착물 등을 고려하여 설치하여야 한다. 나. 장애인등의 통행이 가능한 보도 :공원시설(공중이 직접 이용하는 시설에 한한다)에 접근할 수 있는 공원안의 보도중 적어도 하나는 장애인등이 통행할





// 장애인ㆍ노인ㆍ임산부 등의 편의증진보장에 관한 법률 시행령 별표2 대상시설별 편의시설의 종류 및 설치기준(제4조관련)



Check(EDCDAPA_*_2_3_가_2_가){

IF CS1 AND CS2 THEN KS

}



ParkingLot myParkingLot{

isObjectProperty(ParkingLot.isAttachedParking) = TRUE

}

CS1 {

isExist(myParkingLot) = TRUE

}

CS2 {

getObjectProperty(myParkingLot.numberOfParkingUnit) >= 10

}

KS1 {

Area myArea{

isObjectProperty(ParkingLotArea.isHandicapParking)=TRUE

}

hasSpace(myParkingLot, myArea) = TRUE

getResult(EDPA_*_1) = TRUE

}



Check(EDCDAPA_*_2_3_가_4_가){

KS1 IF CS1 THEN KS2

}



Door myDoor1{

	isObjectProperty(Door.isEntrance)=TRUE

	isObjectProperty(myDoor1.isHandicapAccessible)=TRUE

}

Door myDoor2{

Door.Space.usage = “Office”

isObjectProperty(myDoo2.isHandicapAccessible)=TRUE

}

KS1 {

isExist(myDoor1) = TRUE

isExist(myDoor2) = TRUE

}

CS1{

Building.usage = “BusinessFacility.GovernmentOfficeBuilding”

Building.usage != “ClassINeighborhoodLivingFacility”

}

KS2 {

isObjectProperty(myDoor1.isAutomatic)=TRUE

isObjectProperty(myDoo2.isAutomatic)=TRUE

}







ParkingLot myParkingLot{

isObjectProperty(ParkingLotArea.isHandicapParking)=TRUE

}





Building myBuilding1_1{

	Building.usage = “ClassINeighborhoodLivingFacility.RetailStore”

	Building.usage = “ClassINeighborhoodLivingFacility.Barbershop”

	Building.usage = “ClassINeighborhoodLivingFacility.BeautyShop”

	Building.usage = “ClassINeighborhoodLivingFacility.Bathhouse”

}

Building myBuilding1_2{

	Building.usage = “ClassINeighborhoodLivingFacility.CommunityCenter”

	Building.usage = “ClassINeighborhoodLivingFacility.PoliceBox”

	Building.usage = “ClassINeighborhoodLivingFacility.PoliceSubstation”

	Building.usage = “ClassINeighborhoodLivingFacility.PostOffice”

Building.usage = “ClassINeighborhoodLivingFacility.HealthCenter”

	Building.usage = “ClassINeighborhoodLivingFacility.PublicLibrary”

	Building.usage = “ClassINeighborhoodLivingFacility.NationalHealthInsuranceService_NationalPensionService_Korea EmploymentAgencyForTheDisabled_KoreaWorkersCompensationAndWelfareServiceOffice”

}

Building myBuilding1_3{

	Building.usage = “ClassINeighborhoodLivingFacility.Clinic_ DentalClinic_OrientalMedicalClinic_MaternityClinic”

}

Building myBuilding1_4{

	Building.usage = “ClassINeighborhoodLivingFacility.CommunityChildCenter”

	Building.facilityArea >= 300 m2

}

Building myBuilding1_5{

	Building.usage = “ClassINeighborhoodLivingFacility.Shelter”

}

Building myBuilding1_6{

	Building.usage = “ClassINeighborhoodLivingFacility.PublicToilet”

}

Building myBuilding2_1{

	Building.usage = “ClassIINeighborhoodLivingFacility.Restaurant”

	Building.usage = “ClassIINeighborhoodLivingFacility.RestingRestaurant”

	Building.usage = “ClassIINeighborhoodLivingFacility.Bakery”

	Building.usage != “ClassINeighborhoodLivingFacility”

Building.facilityArea >= 300 m2

}

Building myBuilding2_2{

	Building.usage = “ClassIINeighborhoodLivingFacility.MassageParlor”

}

Building myBuilding3_1{

	Building.usage = “CulturalAndAssemblyFacility.PerformanceHall”

Building.usage = “CulturalAndAssemblyFacility.Auditorium”

}

Building myBuilding3_2{

	Building.usage = “CulturalAndAssemblyFacility.AssemblyHall”

}

Building myBuilding3_3{

	Building.usage = “CulturalAndAssemblyFacility.ExhibitionHall”

Building.usage = “CulturalAndAssemblyFacility.ZoologicalAndBotanicalGarden”

}

Building myBuilding4_1{

	Building.usage = “ReligiousFacility.ReligiousAssemblyFacility”

	Building.facilityArea >= 500 m2

}

Building myBuilding5_1{

	Building.usage = “CommercialFacility.WholesaleMarket”

	Building.usage = “CommercialFacility.RetailMarket”

	Building.usage = “CommercialFacility.Shop”

	Building.facilityArea >= 1000 m2

}

Building myBuilding6_1{

	Building.usage = “MedicalFacility.Hospital”

	Building.usage = “MedicalFacility.DetentionHospital”

}

Building myBuilding7_1{

	Building.usage = “EducationAndResearchFacility.School”

	Building.usage = “EducationAndResearchFacility.SpecialSchool”

	Building.usage != “EducationAndResearchFacility.Kindergarten”

}

Building myBuilding7_2{

	Building.usage = “EducationAndResearchFacility.Kindergarten”

}

Building myBuilding7_3{

	Building.usage = “EducationAndResearchFacility.TrainingInstitute”

	Building.usage = “EducationAndResearchFacility.VocationalTrainingCenter”

	Building.usage != “EducationAndResearchFacility.EducationalInstitute”

Building.facilityArea >= 500 m2

}

Building myBuilding8_1{

	Building.usage = “FacilitiesForTheAgedAndChildren.ChildrenRelatedFacility”

Building.usage = “FacilitiesForTheAgedAndChildren.WelfareFacilityForTheAged”

Building.usage = “FacilitiesForTheAgedAndChildren.SocialWelfareFacility”

Building.usage = “경로당”

Building.usage = “ResidentialFacilityForTheDisabled”

Building.facilityArea >= 500 m2

}

Building myBuilding9_1{

	Building.usage = “Trainingfacility.TrainingFacilityInLivingZone”

	Building.usage = “Trainingfacility.TrainingFacilityInNatureZone”

}

Building myBuilding10_1{

	Building.usage = “SportsFacility”

Building.facilityArea >= 500 m2

}

Building myBuilding11_1{

	Building.usage = “BusinessFacility.GovernmentOfficeBuilding”

Building.facilityArea >= 500 m2

}

Building myBuilding11_2{

	Building.usage = “BusinessFacility.FinanceBusiness”

	Building.usage = “BusinessFacility.Office”

	Building.usage = “BusinessFacility.NewspaperOffice”

	Building.usage = “BusinessFacility.Officetel”

Building.facilityArea >= 500 m2

}

Building myBuilding12_1{

	Building.usage = “LodgingFacility.GeneralLodgingFacility”

}

Building myBuilding12_2{

	Building.usage = “LodgingFacility.TouristAccommodation”

}

Building myBuilding13_1{

	Building.usage = “Factory”

}

Building myBuilding14_1{

	Building.usage = “FacilityForMotorVehicle.ParkingLot”

Building.usage = “FacilityForMotorVehicle.DrivingSchool”

}

Building myBuilding15_1{

	Building.usage = “FacilityForBroadcastingAndTelecommunication.BroadcastingStation”

Building.facilityArea >= 1000 m2

}

Building myBuilding15_2{

	Building.usage = “FacilityForBroadcastingAndTelecommunication.TelegraphAndTelephoneStation”

Building.facilityArea >= 1000 m2

}

Building myBuilding16_1{

	Building.usage = “CorrectionalFacilityAndMilitaryInstallation.Prison”

Building.usage = “CorrectionalFacilityAndMilitaryInstallation.DetentionCenter”

}

Building myBuilding17_1{

	Building.usage = “CemeteryAndRelatedFacility.CremationFacility”

	Building.usage = “CemeteryAndRelatedFacility.CharnelHouse”

	Building.usage != “ReligiousFacility”

}

Building myBuilding18_1{

	Building.usage = “FacilityForTourismAndRelaxation.BandStand”

	Building.usage = “FacilityForTourismAndRelaxation.OutdoorTheater”

	Building.usage = “FacilityForTourismAndRelaxation.ChildrenCenter”

}

Building myBuilding18_2{

	Building.usage = “FacilityForTourismAndRelaxation.RestArea”

}

Building myBuilding19_1{

	Building.usage = “FuneralParlor”

}







Check(EDCDAPA_*_2_3_나){

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

}



CS1{

Building myBuilding20_1 {

getObject(myBuilding1_1 | myBuilding12_2)

}

KS1{

hasSpace(myBuilding20_1, myParkingLot) = TRUE 

OR hasSpace(myBuilding20_1, myParkingLot) = FALSE

}

CS2{

 Building myBuilding20_2 {

getObject(myBuilding1_2 | myBuilding1_3 | myBuilding1_4 | myBuilding2_1 | myBuilding2_2 | myBuilding3_1 | myBuilding3_2 | myBuilding3_3 | myBuilding4_1 | myBuilding5_1 | Building myBuilding6_1 | Building myBuilding7_1 | myBuilding7_2 | myBuilding7_3 | myBuilding8_1 | myBuilding9_1 | myBuilding10_1 | myBuilding11_1 | myBuilding11_2 | myBuilding12_1 | myBuilding13_1 | myBuilding14_1 | myBuilding15_1 | myBuilding15_2 | myBuilding16_1 | myBuilding17_1 | myBuilding18_1 | myBuilding18_2 | myBuilding19_1) 

}

KS2{

hasSpace(Building20_2, myParkingLot) = TRUE

}



Check(EDCDAPA_*_2_3_나){

IF CS THEN KS



CS{

Building myBuilding20_3{

getObject(myBuilding1_1 | myBuilding1_2 | myBuilding1_3 | myBuilding1_4 | myBuilding1_5 | myBuilding1_6 | myBuilding2_1 | myBuilding2_2 | myBuilding3_1 | myBuilding3_2 | myBuilding3_3 | myBuilding4_1 | myBuilding5_1 | Building myBuilding6_1 | Building myBuilding7_1 | myBuilding7_2 | myBuilding7_3 | myBuilding8_1 | myBuilding9_1 | myBuilding10_1 | myBuilding11_1 | myBuilding11_2 | myBuilding12_1 | myBuilding13_1 | myBuilding14_1 | myBuilding15_1 | myBuilding15_2 | myBuilding16_1 | myBuilding17_1 | myBuilding18_1 | myBuilding18_2 | myBuilding19_1) 

}

KS{

isObjectProperty(myBuilding20_3.Door.isSillFree) = TRUE

} 




Python Code 변환 예정



55
주차장법 제 19조 1 항

①국토의계획및이용에관한법률의 규정에 의한 도시지역·제2종지구단위계획구역 및 지방자치단체의 조례가 정하는 관리지역안에서 건축물·골프연습장 기타 주차수요를 유발하는 시설(이하 "施設物"이라 한다)을 건축 또는 설치하고자 하는 자는 당해 시설물의 내부 또는 그 부지안에 부설주차장(貨物의 荷役 기타 사업수행을 위한 駐車場을 포함한다. 이하 같다)을 설치하여야 한다. <개정 1995.12.29, 2002.2.4>





//주차장법 19조 (부설주차장의 설치) 1항



Check(PLA_19_1){

   IF CS THEN KS 

}



CS{

   getSiteUsage()="UrbanArea"

   OR getSiteUsage()="DistrictUnitPlanningZone"

   OR getSiteUsage()="ControlArea"

}



KS{

   ParkingLot myParkingLot{

     isObjectProperty(ParkingLot.isAttachedParking)=True

   }

   isInstalled(myParkingLot, Facility)=True

   isInstalled(myParkingLot, Site)=True

} 




Python Code 변환 예정



56
특별피난계단의 계단실 및 부속실 제연설비의 화재안전기준(NFSC 501A) 제 17조

제17조(급기구) 제연구역에 설치하는 급기구는 다음 각 호의 기준에 적합하여야 한다.





//특별피난계단의 계단실 및 부속실 제연설비의 화재안전기준(nfsc 501a) 17조 (급기구) 

Check(NFSC_17){
    IF CS THEN KS
}

CS{
  isObjectProperty(Zone.isSmokeControlZone)=True	
}

KS{
   getResult(NFSC17_3)=True
} 




Python Code 변환 예정



    1