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

제31조(내력벽의 높이 및 길이) ①조적식구조인 건축물중 2층 건축물에 있어서 2층 내력벽의 높이는 4미터를 넘을 수 없다.





//건축물의 구조기준 등에 관한 규칙 31조 (내력벽의 높이 및 길이) 1항
Check(RSSB_31_1){
        getResult(RSSB_28_1) = TRUE AND getResult(RSSB_28_1) = TRUE AND getResult(RSSB_3_3) = TRUE AND IF CS THEN KS
}
CS{
	isObjectProperty(Building.Structure.isMansoryStructure) = TRUE
	getBuildingStoriesCount() = 2
}
KS{
	Wall myWall{
	isObjectProperty(Wall.isLoadBearingWall) = TRUE
	getFloorNumber(Wall.Floor) = TRUE
	}
	getObjectHeight(myWall) < 4m
} 




Python Code 변환 예정



Modify
2
20070 건축물의 구조기준 등에 관한 규칙 제 41조 1 항

제41조(적용범위) ①이 절의 규정은 보강블록구조의 건축물이나 보강블록구조와 철근콘크리트구조 그 밖의 구조를 병용하는 건축물의 보강블록구조인 부분에 이를 적용한다.





//건축물의 구조기준 등에 관한 규칙 41조 (적용범위 등) 1항
Check(RSSB_41_1){
	getResult(RSSB_41_1) = TRUE AND KS
}
KS{
	getObjectProperty(Building.Structure.materialType) = "SteelReinforcedConcreteBlock" 
	OR "ReinforcedConcrete"
} 




Python Code 변환 예정



Modify
3
24832 건축물의 구조기준 등에 관한 규칙 제 3조 3 항

③ 제21조부터 제55조까지의 규정에 따른 구조안전에 관한 기준은 「건축법 시행령」(이하 "영"이라 한다) 제32조제1항에 해당하지 아니하는 소규모건축물(이하 "소규모건축물"이라 한다)에 대하여만 적용된다.





//건축물의 구조기준 등에 관한 규칙 3조 (적용범위 등) 3항

Check(RSSB_3_3){

	KS

}



KS{

	getResult(EDBA_32_1) = FALSE 

	isObjectProperty(Building.isSmallBuilding) = TRUE

} 




Python Code 변환 예정



Modify
4
24882 건축물의 구조기준 등에 관한 규칙 제 24조 2 항

②2층 이상인 건축물에 있어서는 모서리에 설치하는 기둥 또는 이에 준하는 기둥은 통재(通材)기둥으로 하여야 한다. 다만, 이은기둥의 경우 그 이은 부분을 통재기둥과 동등 이상의 내력을 가지도록 보강한 경우에는 그러하지 아니하다.





//건축물의 구조기준 등에 관한 규칙 24조 (압축재의 최소단면 및 모서리에 설치하는 기둥) 2항

Check(RSSB_24_2){

        getResult(RSSB_3_3) = TRUE AND IF CS THEN KS

}

CS{

	getBuildingStoriesCount() >= 2

}

KS{

	Column myColumn{

	isInstalled(Column, Building.Edge) = TRUE 




Python Code 변환 예정



Modify
5
24892 건축물의 구조기준 등에 관한 규칙 제 28조 1 항

①이 절의 규정은 벽돌구조·돌구조·콘크리트블록구조 그 밖의 조적식구조(보강블록구조를 제외한다. 이하 이 절에서 같다)의 건축물이나 조적식구조와 목구조 그 밖의 구조를 병용하는 건축물의 조적식구조로 된 부분에 이를 적용한다.





//건축물의 구조기준 등에 관한 규칙 28조 (적용범위 등) 1항
Check(RSSB_28_1){
	getResult(RSSB_28_1) = TRUE AND getResult(RSSB_3_3) = TRUE AND KS
}
KS{
	(getObjectProperty(Building.Structure.materialType) = "Brick" OR "Stone" OR "ConcreteBlock")
	OR (isObjectProperty(Building.Structure.isMansoryStructure) = TRUE
	getObjectProperty(Building.Structure.materialType) != "SteelReinforcedConcreteBlock")
} 




Python Code 변환 예정



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



Modify
7
72662 건축물의 에너지절약설계기준 제 5조 10호 마 목

마. "비례제어운전”이라 함은 기기의 출력값과 목표값의 편차에 비례하여 입력량을 조절하여 최적운전상태를 유지할 수 있도록 운전하는 방식을 말한다.





// // 스프링클러설비의 화재안전기준(NFSC 103) 4조 (비상벨설비 또는 자동식사이렌설비) 5항 2호



Check(NFSC201_4_5_1){

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

CS1{

	getObjectDistance(Corridor | Space, Transmitter) < 40m

}

KS1{

	isInstalled(Transmitter, SpecificFireFightingBuilding.Floor.One) = TRUE

	getOjectCount(Transmitter) = 1

	getElementDistance(SpecificFireFightingBuilding.Wall | SpecificFireFightingBuilding.Column, Transmitter) <= 25m

}



CS2{

	getObjectDistance(Corridor | Space, Transmitter) >= 40m

}

KS2{

	isInstalled(Transmitter, SpecificFireFightingBuilding.Floor.One) = TRUE

	getOjectCount(Transmitter) >= 2

	getElementDistance(SpecificFireFightingBuilding.Wall | SpecificFireFightingBuilding.Column, Transmitter) <= 25m

} 




Python Code 변환 예정



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

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





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

Check(NFSC201_5_0_2){

	KS

}



KS{

	Ceiling myCeiling{

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

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


	isInstalled(myCeiling, mySensor) = TRUE

} 




Python Code 변환 예정



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



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



Modify
11
72733 건축물의 에너지절약설계기준 제 6조 3호

3. 바닥난방에서 단열재의 설치





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



Check(NFSC103_9_3_5_나){

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

CS1{

	getObjectDistance(Corridor | Space, Transmitter) < 40m

}

KS1{

	isInstalled(Transmitter, SpecificFireFightingBuilding.Floor.One) = TRUE

	getOjectCount(Transmitter) = 1

	getElementDistance(SpecificFireFightingBuilding.Wall | SpecificFireFightingBuilding.Column, Transmitter) <= 25m

}



CS2{

	getObjectDistance(Corridor | Space, Transmitter) >= 40m

}

KS2{

	isInstalled(Transmitter, SpecificFireFightingBuilding.Floor.One) = TRUE

	getOjectCount(Transmitter) >= 2

	getElementDistance(SpecificFireFightingBuilding.Wall | SpecificFireFightingBuilding.Column, Transmitter) <= 25m

} 




Python Code 변환 예정



Modify
12
72734 건축물의 에너지절약설계기준 제 6조 3호 가 목

가. 바닥난방 부위에 설치되는 단열재는 바닥난방의 열이 슬래브 하부 및 측벽으로 손실되는 것을 막을 수 있도록 온수배관(전기난방인 경우는 발열선) 하부와 슬래브 사이에 설치하고, 온수배관(전기난방인 경우는 발열선) 하부와 슬래브 사이에 설치되는 구성 재료의 열저항의 합계는 층간 바닥인 경우에는 해당 바닥에 요구되는 총열관류저항(별표1에서 제시되는 열관류율의 역수)의 60% 이상, 최하층 바닥인 경우에는 70% 이상이 되어야 한다. 다만, 바닥난방을 하는





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



Check(NFSC_10_1){

KS2 AND IF CS THEN KS1





KS2{

Space mySpace1{

천장과반자사이

}

hasElement(SpecificFireFightingBuilding.Ceiling,SprinklerHead)= TRUE

hasElement(SpecificFireFightingBuilding.CeilingCovering,SprinklerHead)= TRUE

hasElement(SpecificFireFightingBuilding.mySpace1,SprinklerHead)= TRUE

hasElement(SpecificFireFightingBuilding.Duct,SprinklerHead)= TRUE

hasElement(SpecificFireFightingBuilding.Shelf,SprinklerHead)= TRUE

}



CS{

Space mySpace2{

isExternal(Space)= FALSE 

}

getSpaceWidth(Building.mySpace)<= 9m

}



KS1{

Wall myWall{

Wall.isSideWall=TRUE

}

hasElement(myWall,SprinklerSystem.Head)=TRUE

hasElement(myWall,SprinklerSystem.Head)=FALSE

} 




Python Code 변환 예정



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

난방 및 냉방설비의 용량계산을 위한 외기조건은 각 지역별로 위험율 2.5%(냉방기 및 난방기를 분리한 온도출현분포를 사용할 경우) 또는 1%(연간 총시간에 대한 온도출현 분포를 사용할 경우)로 하거나 별표7에서 정한 외기온·습도를 사용한다. 별표7 이외의 지역인 경우에는 상기 위험율을 기준으로 하여 가장 유사한 기후조건을 갖는 지역의 값을 사용한다. 다만, 지역난방공급방식을 채택할 경우에는 산업통상자원부 고시 「집단에너지시설의 기술기준」에 의하여 용량계





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

KS{
	getObjectMaterial(SpecificFireFightingBuilding.Material.nonCombustibility) = TRUE
	(getResult(NFSC103_15_1_13_1) = TRUE
	OR getResult(NFSC103_15_1_13_2) = TRUE
	OR getResult(NFSC103_15_1_13_3) = TRUE)
} 




Python Code 변환 예정



Modify
14
72897 건축물의 에너지절약설계기준 제 29조

제29조(재검토기한) 「훈령·예규 등의 발령 및 관리에 관한 규정」 (대통령훈령 제248호)에 따라 이 고시 발령 후의 법령이나 현실여건의 변화 등을 검토하여 이 고시의 폐지, 개정 등의 조치를 하여야 하는 기한은 2017년 5월 31일까지로 한다.





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

Check(NFSC203_7_3_5){

	IF CS1 AND CS2 THEN KS

}

	Sensor mySensor1{

	getObjectProperty(Sensor.sensingMode) = "DifferentialTemperatureType"

	getObjectProperty(Sensor.sensingRange) = "SpotType"

	}

	Sensor mySensor2{

	getObjectProperty(Sensor.sensingMode) = "CompensationType"

	getObjectProperty(Sensor.sensingRange) = "SpotType"

	}

	Sensor mySensor3{

	getObjectProperty(Sensor.sensingMode) = "ConstantTemperatureType"

	getObjectProperty(Sensor.sensingRange) = "SpotType"

	}

	 

CS1{

	getElementDistance(FloorSlab, Sensor) < 4m

	}

CS2{

	isFireResistantStructure(SpecificFireFightingBuilding.MainStructuralPart) = TRUE

	}

CS3{

	getElementDistance(FloorSlab, Sensor) < 8m

	getElementDistance(FloorSlab, Sensor) >= 4m

	}



KS{

	isObjectProperty(mySensor1.type) = "Type1"

	isInstalled(mySensor1, FloorSlab, 90) = TRUE

} 




Python Code 변환 예정



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



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



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



Modify
18
25216 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 9조 4 항

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





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

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

 




Python Code 변환 예정



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

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





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



Check(REFB_11_2){
     

IF CS1 AND CS2 THEN KS


}





CS1 {

Building myBuilding{

getBuildingUsage() = “CulturalAndAssemblyFacility”

OR getBuildingUsage() = “ReligiousFacility”

OR getBuildingUsage() = “AmusementFacility”

OR getBuildingUsage() = “FuneralParlor”

getBuildingUsage() != “ExhibitionHall”

getBuildingUsage() != “ZoologicalAndBotanicalGarden”

}



Door myDoor{

isObjectProperty(myBuilding.Door.isEntrance)=TRUE

}

isExist(myDoor) = TRUE

}



KS {

getObjectProperty(myDoor.panelOperationType) != “OpeningInDoor”



} 




Python Code 변환 예정



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

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





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

Check(REFB_11_3){
     

IF CS1 AND CS2 THEN KS


}





CS1 {

Building myBuilding{

getBuildingUsage() = “AssemblyHall”

OR getBuildingUsage() = “PerformanceHall”

}



Space mySpace{

myBuilding.Space.name = “Auditorium”

Space.FloorSlab.area >= 300 m2

}



isExist(mySpace) = TRUE

}



CS2 {

Door myDoor{

isObjectProperty(Door.isEntrance)=TRUE

}

hasObject(myBuilding,myDoor) = TRUE

}



KS {

Door myDoor{

getObjectProperty(Door.functionType) = "Auxiliary"

OR getObjectProperty(Door.functionType) = "Emergency" 

}



getObjectCount(myDoor) >=2

} 




Python Code 변환 예정



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

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





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

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

}
 




Python Code 변환 예정



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

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





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

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

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

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

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




Python Code 변환 예정



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

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





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

Check(REFB_23_1){

	IF CS THEN KS

}



CS{


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



	Roof myRoof{

		hasObject(myBuilding, Roof) = TRUE

	}



	isObjectProperty(myRoof.isFireResistantStructure) != TRUE

}



KS{

	isObjectProperty(myRoof.Material.nonCombustibility) = TRUE

} 




Python Code 변환 예정



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

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





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

KS{

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

} 




Python Code 변환 예정



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

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





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

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

    getSpaceUsage(Room)=str
}

 




Python Code 변환 예정



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

④영 제61조제1항제2호에 따른 공동주택에는 「다중이용시설 등의 실내공기질관리법」 제11조제1항 및 같은 법 시행규칙 제10조에 따라 환경부장관이 고시한 오염물질방출 건축자재를 사용하여서는 아니 된다. <신설 2006.6.29, 2010.12.30>





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


Check(REFB_24_4){
IF CS THEN KS
}

Building myBuilding{
getResult(EDBA_61_1_2)=TRUE
}

CS{
isExist(myBuilding)=TRUE
}

KS{
isObjectProperty(myBuilding.Material.isEmittingPollutant)=FALSE
}
 




Python Code 변환 예정



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



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

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





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



Check(REFB_8_2){

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

} 




Python Code 변환 예정



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

②영 제61조제1항제4호나목에서 "국토교통부령으로 정하는 출구"란 건축물의 내부의 각 부분으로부터 출구(가장 가까운 거리에 있는 출구를 말한다)에 이르는 보행거리가 30미터 이하가 되도록 설치된 유효너비 1.5미터 이상의 출구를 말한다. <개정 2008.3.14, 2010.12.30, 2013.3.23>





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 24조의2 (소규모 공장용도 건축물의 마감재료) 2항
check(REFB_24-2_2){
      KS
}
KS{
	Door myDoor{
	isObjectProperty(Door.isEntrance) = TRUE
	}
	getObjectDistance(Building.IndoorElement, Door) <= 30
	isObjectProperty(Door.effectiveWidth) >= 1.5m
} 




Python Code 변환 예정



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



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



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



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



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



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



Modify
36
19738 건축법 시행령 제 58조 1호

1. 연면적 30제곱미터 미만인 단층 부속건축물로서 외벽 및 처마면이 내화구조 또는 불연재료로 된 것





check(EDBA_58_0_1){

	getGrossFloorArea() < 30m2;

	isObjectProperty(Building.isAttachedBuilding) = TRUE

	getBuildingStoriesCount() = 1;

	isFireResistantStructure(MainStructure) = TRUE

	OR isFireResistantStructure(ExternalWall) = TRUE;

} 




Python Code 변환 예정



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



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



Modify
39
19758 건축법 시행령 제 80조 3호

3. 공업지역: 150제곱미터





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

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




Python Code 변환 예정



Modify
40
19759 건축법 시행령 제 80조 4호

4. 녹지지역: 200제곱미터





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

Check(EDBA_80_4){
     IF CS THEN KS
}
CS{
	getBuildingUsage() = "GreenArea"
}
KS{
	getObjectProperty(Building.Site.area) >= 200m2
}
 




Python Code 변환 예정



Modify
41
19760 건축법 시행령 제 80조 5호

5. 제1호부터 제4호까지의 규정에 해당하지 아니하는 지역: 60제곱미터





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

Check(EDBA_80_5){
     IF CS THEN KS
}
CS{
	getBuildingUsage() != "ResidentialArea"
	getBuildingUsage() != "CommercialArea"	
	getBuildingUsage() != "IndustrialArea"
	getBuildingUsage() != "GreenArea"
}
KS{
	getObjectProperty(Building.Site.area) >= 60m2
} 




Python Code 변환 예정



Modify
42
30403 건축법 시행령 제 61조 2 항 1호

1. 상업지역(근린상업지역은 제외한다)의 건축물로서 다음 각 목의 어느 하나에 해당하는 것





// 건축법 시행령 61조 (건축물의 마감재료) 2항 1호


Check(EDBA_61_2_1){
       KS
}




KS{
    getObjectProperty(Building.SpecialPurposeArea.type) = "CommercialArea"
    getResult(EDBA_61_2_1_가)=TRUE
  

} 




Python Code 변환 예정



Modify
43
33161 건축법 시행령 제 41조 1 항 1호 가 목

가. 단독주택: 유효 너비 0.9미터 이상





Check(EDBA_41_1_1){

  IF (CS) THEN KS END IF 

}

CS{

getObjectProperty(Building.usage)="DetachedHouse"

}

KS{

  getObjectProperty(Passage.effectiveWidth)> 0.9M

} 








def Check():
    if SELECT("building type").STRING() == "DetachedHouse":
        passage = SELECT("passage")
        if passage.SELECT("clear width").UNIT("m").NUMBER()> 0.9:
            passage.SUCCESS("pass")
        else:
            passage.ERROR("fail")
 





Modify
44
33163 건축법 시행령 제 41조 1 항 1호 다 목

다. 그 밖의 용도로 쓰는 건축물: 유효 너비 1.5미터 이상





Check(EDBA_41_1_3){

IF (CS) THEN KS END IF

}

CS{

Building.usage !="DetachedHouse"

OR   Building.usage !="CulturalAndAssemblyFacility"

   OR Building.usage !="ReligiousFacility" 

   OR  Building.usage !="MedicalFacility" 

   OR Building.usage !="AmusementFacility" 

   OR Building.usage !="FuneralParlor"  
}

KS{

 getObjectProperty(Passage.effectiveWidth)> 1.5m ;

} 








target_bldg_uses_01 = ['단독주택']
target_bldg_uses_02 = ['문화 및 집회시설', '장례시설', '의료시설', '위락시설']

target_bldg_uses_01_label = '건축물 용도1'
target_bldg_uses_02_label = '건축물 용도2'

def Check():
    for building in SELECT('building'):
        bldg_use = building.SELECT('building type').STRING()
        min_corridor_w = 1.5
        min_area = 0.0

        if bldg_use in target_bldg_uses_01:
            min_corridor_w = 0.9
        elif bldg_use in target_bldg_uses_02:
            min_corridor_w = 3.0
            min_area = 500

        if min_area > 0:
            area = 0
            for space in building.SELECT('space'):
                area += space.SELECT('area').UNIT('m2').NUMBER()
            if area < min_area:
                building.SUCCESS('바닥면적의 합: ' + str(area) + ' < ' + str(min_area))
                continue

        base_storey = None
        stories = building.SELECT('storey')

        for storey in stories:
            if storey.SELECT('prop', '기준 지상층').BOOL() == True:
                base_storey = storey
                break

        if base_storey is None:
            building.ERROR('기준 지상층이 존재하지 않습니다.')
            break

        stairs = base_storey.SELECT('direct stair')

        if stairs.COUNT() == 0:
            base_storey.ERROR(base_storey.SELECT('name').STRING() + '에 직통계단이 존재하지 않습니다.')
            continue

        exDoors = []
        for door in base_storey.SELECT('door'):
            if door.SELECT('is external').BOOL() == True:
                exDoors.append(door)

        for stair in stairs:
            for route in stair.SELECT('escape route', exDoors):
                for space in route.SELECT('passing space'):
                    width = space.SELECT('min clear width').UNIT('m')
                    w = width.NUMBER()
                    if w < min_corridor_w:
                        width.ERROR('통로 너비: ' + str(w) + ' < ' + str(min_corridor_w))
                    else:
                        width.SUCCESS('통로 너비: ' + str(w) + ' >= ' + str(min_corridor_w)) 





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



Modify
46
33243 건축법 시행령 제 61조 2 항 1호 가 목

가. 제1종 근린생활시설, 제2종 근린생활시설, 문화 및 집회시설, 종교시설, 판매시설, 의료시설, 교육연구시설, 노유자시설, 운동시설 및 위락시설의 용도로 쓰는 건축물로서 그 용도로 쓰는 바닥면적의 합계가 2천제곱미터 이상인 건축물





//건축법 시행령 61조 (건축물의 마감재료) 2항 1호 가목

Check(EDBA_61_2_1_가){
            KS 
}



KS{
   Building myBuilding{
    getResult(SASP_2_1_1)=True
   }

  FloorSlab myFloorSlab{

     //   getFloorUsage()=myBuilding.usage
  }
  
   getObjectArea(myFloorSlab)>2000 m2

   
} 




Python Code 변환 예정



Modify
47
33245 건축법 시행령 제 61조 2 항 2호

2. 6층 이상 또는 높이 22미터 이상인 건축물





//  건축법 시행령 61조 (건축물의 마감재료) 2항 2호
Check(EDBA_61_2_2){
	KS
}

KS{
	getObjectProperty(Building.isHighriseBuilding) = TRUE
	OR getObjectProperty(Building.isQuasiHighriseBuilding) = TRUE
} 




Python Code 변환 예정



Modify
48
34608 건축법 시행령 제 41조 1 항 1호 나 목

나. 바닥면적의 합계가 500제곱미터 이상인 문화 및 집회시설, 종교시설, 의료시설, 위락시설 또는 장례시설: 유효 너비 3미터 이상





Check(EDBA_41_1_2){

   IF (CS) THEN  KS END IF

}



CS{

FloorSlab.area> 500 m2 

   Building.usage="CulturalAndAssemblyFacility"

   OR Building.usage="ReligiousFacility" 

   OR  Building.usage="MedicalFacility" 

   OR Building.usage="AmusementFacility" 

   OR Building.usage="FuneralParlor"  

}



KS{

  Passage.effectiveWidth> 3m ;

} 








target_bldg_uses_01 = ['단독주택']
target_bldg_uses_02 = ['문화 및 집회시설', '장례시설', '의료시설', '위락시설']

target_bldg_uses_01_label = '건축물 용도1'
target_bldg_uses_02_label = '건축물 용도2'

def Check():
    for building in SELECT('building'):
        bldg_use = building.SELECT('building type').STRING()
        min_corridor_w = 1.5
        min_area = 0.0

        if bldg_use in target_bldg_uses_01:
            min_corridor_w = 0.9
        elif bldg_use in target_bldg_uses_02:
            min_corridor_w = 3.0
            min_area = 500

        if min_area > 0:
            area = 0
            for space in building.SELECT('space'):
                area += space.SELECT('area').UNIT('m2').NUMBER()
            if area < min_area:
                building.SUCCESS('바닥면적의 합: ' + str(area) + ' < ' + str(min_area))
                continue

        base_storey = None
        stories = building.SELECT('storey')

        for storey in stories:
            if storey.SELECT('prop', '기준 지상층').BOOL() == True:
                base_storey = storey
                break

        if base_storey is None:
            building.ERROR('기준 지상층이 존재하지 않습니다.')
            break

        stairs = base_storey.SELECT('direct stair')

        if stairs.COUNT() == 0:
            base_storey.ERROR(base_storey.SELECT('name').STRING() + '에 직통계단이 존재하지 않습니다.')
            continue

        exDoors = []
        for door in base_storey.SELECT('door'):
            if door.SELECT('is external').BOOL() == True:
                exDoors.append(door)

        for stair in stairs:
            for route in stair.SELECT('escape route', exDoors):
                for space in route.SELECT('passing space'):
                    width = space.SELECT('min clear width').UNIT('m')
                    w = width.NUMBER()
                    if w < min_corridor_w:
                        width.ERROR('통로 너비: ' + str(w) + ' < ' + str(min_corridor_w))
                    else:
                        width.SUCCESS('통로 너비: ' + str(w) + ' >= ' + str(min_corridor_w)) 





Modify
49
35870 건축법 시행령 제 39조 1 항 7호

7. 교육연구시설 중 학교





// 건축법 시행령 39조 (건축물 바깥쪽으로의 출구 설치) 1항 7호

Check(EDBA_39_1_7){     
KS
}


KS {
Building myBuilding{
getBuildingUsage() = “Warehouse”
Building.grossFloorArea >= 5000 m2
}

isExist(myBuliding) = TRUE
}
 








target_bldg_type_1 = ['제2종 근린생활시설', '문화 및 집회시설', '종교시설', '판매시설', '업무시설', '창고시설', '교육연구시설', '장례시설', '승강기를 설치하여야하는 건축물']
target_bldg_sub_type_2 = ['판매시설']
max_route_length_stair_to_door = 30
max_route_length_space_to_door = 60
min_em_door_count = 2
min_em_door_h = 1.5
min_em_door_w = 0.75

target_bldg_types_1_label = '외부 출입구 방향 적용 대상 건출물 용도'
target_bldg_types_2_label = '외부 출입구 유효너비 대상 건출물 용도'

max_route_length_stair_to_door_label = '직통계단과 외부 출입구 간 최소거리'
max_route_length_space_to_door_label = '거실과 외부 출입구 간 최소거리'
min_em_door_count_label = '최소 비상구 개수'
min_em_door_h_label = '최소 비상구 높이'
min_em_door_w_label = '최소 비상구 유효너비'

def Check():
    for building in SELECT('building'):
        bldg_type = building.SELECT('building type').STRING()
        sub_type = building.SELECT('prop', '세부용도').STRING()
        if (bldg_type in target_bldg_type_1):
            if bldg_type == '제2종 근린생활시설' and sub_type in ['공연장', '종교집회장', '인터넷컴퓨터게임시설제공업소']:
                message =  '검토 대상 건물이 아닙니다.' + '(용도:' + bldg_type + ', 세부용도:' + sub_type + ' )'
                SUCCESS(message)
                break
            elif bldg_type == '문화 및 집회시설' and sub_type in ['전시장', '동물원', '식물원']:
                message =  '검토 대상 건물이 아닙니다.' + '(용도:' + bldg_type + ', 세부용도:' + sub_type + ' )'
                SUCCESS(message)
                break
            elif bldg_type == '업무시설' and sub_type == '청사':
                message =  '검토 대상 건물이 아닙니다.' + '(용도:' + bldg_type + ', 세부용도:' + sub_type + ' )'
                SUCCESS(message)
                break
            elif bldg_type == '교육연구시설' and sub_type == '학교':
                message =  '검토 대상 건물이 아닙니다.' + '(용도:' + bldg_type + ', 세부용도:' + sub_type + ' )'
                SUCCESS(message)
                break
            message =  '검토 대상 건물입니다.' + '(용도:' + bldg_type + ', 세부용도:' + sub_type + ' )'
            SUCCESS(message)

        else:
            message =  '검토 대상 건물이 아닙니다.' + '(용도:' + bldg_type + ', 세부용도:' + sub_type + ' )'
            SUCCESS(message)
            break



        evac_storey_exist = False
        stories = building.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:
            stairs = storey.SELECT('direct stair')

            if stairs.COUNT() == 0:
                storey.ERROR(storey.SELECT('name').STRING() + '에 직통계단이 존재하지 않습니다.')
                continue

            exDoors = []
            for door in storey.SELECT('door'):
                if door.SELECT('is external').BOOL() == True:
                    exDoors.append(door)

            for stair in stairs:
                route_length = -1
                for route in stair.SELECT('escape route', exDoors):
                    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:
                    stair.ERROR(stair.SELECT('name').STRING() + '부터 외부 출입구까지 갈 수 없다.')
                elif route_length > max_route_length_stair_to_door:
                    stair.ERROR(stair.SELECT('name').STRING() + '부터 외부 출입구까지의 거리가 멀다 : ' + str(route_length))
                else:
                    stair.SUCCESS(stair.SELECT('name').STRING() + ' : ' + str(route_length))

            spaces = storey.SELECT('space')

            for space in spaces:
                route_length = -1
                for route in space.SELECT('escape route', exDoors):
                    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_to_door:
                    space.ERROR(space.SELECT('name').STRING() + '부터 외부 출입구까지의 거리가 멀다 : ' + str(route_length))
                else:
                    space.SUCCESS(space.SELECT('name').STRING() + ' : ' + str(route_length))

            if bldg_type in target_bldg_types_1:
                for door in exDoors:
                    if door.SELECT('is inward').BOOL():
                        door.ERROR('외부 출입구의 방향이 안여닫이입니다.')

                for space in spaces:
                    code = space.SELECT('class code').STRING()
                    if not code in theater_space_codes:
                        continue
                    area = space.SELECT('area').UNIT('m2').NUMBER()
                    if area < 300:
                        continue
                    emExits = []
                    for door in space.SELECT('space door'):
                        if door.SELECT('prop', '비상구').BOOL() or door.SELECT('prop', '보조출입구').BOOL():
                            emExits.append(door)
                    if len(emExits) < min_em_door_count:
                        space.ERROR('비상구(보조출입구) 개수:' + str(len(emExits)) + '(<' + str(min_em_door_count) + ')')
                        continue
                    em_exit_count = 0
                    for exit in emExits:
                        if exit.SELECT('clear opening').UNIT('m').NUMBER() >= min_em_door_w and exit.SELECT('height').UNIT('m').NUMBER() >= min_em_door_h:
                            em_exit_count += 1
                    if em_exit_count < min_em_door_count:
                        space.ERROR('기준(' + str(min_em_door_w) + 'X' + str(min_em_door_h) + ')을 충족하는 비상구(보조출입구) 개수:' + str(em_exit_count) + '(<' + str(min_em_door_count) + ')')
                    else:
                        space.SUCCESS('기준(' + str(min_em_door_w) + 'X' + str(min_em_door_h) + ')을 충족하는 비상구(보조출입구) 개수:' + str(em_exit_count) + '(>=' + str(min_em_door_count) + ')')

            if bldg_type in target_bldg_types_2:
                if storey.SELECT('is evacuation storey').BOOL() == False:
                    continue
                max_area = 0;
                for space in spaces:
                    area = space.SELECT('area').UNIT('m2').NUMBER()
                    if area > max_area:
                        max_area = area
                min_door_w = max_area / 100 * 0.6;

                for door in exDoors:
                    width = door.SELECT('clear opening').UNIT('m')
                    w = width.NUMBER()
                    if (w < min_door_w):
                        width.ERROR('출구 유효너비:' + str(w) + '(<' + str(min_door_w) + ')')
                    else:
                        width.SUCCESS('출구 유효너비:' + str(w) + '(>=' + str(min_door_w) + ')')
 





Modify
50
36581 건축법 시행령 제 35조 2 항

② 건축물(갓복도식 공동주택은 제외한다)의 11층(공동주택의 경우에는 16층) 이상인 층(바닥면적이 400제곱미터 미만인 층은 제외한다) 또는 지하 3층 이하인 층(바닥면적이 400제곱미터미만인 층은 제외한다)으로부터 피난층 또는 지상으로 통하는 직통계단은 제1항에도 불구하고 특별피난계단으로 설치하여야 한다. <개정 2008.10.29>





//건축법 시행령 35조 (피난계단의 설치) 2항
check(EDBA_35_2){
	IF (CS1 AND CS2) THEN KS
}

CS1{
	Building.usage != "MultiUnitHouse.SideCorridorTypeMultiUnitHouse"
}

CS2{
	Floor myFloor{
 		IF (Building.usage = "MultiUnitHouse“) 
			THEN getFloorNumber(Floor) >= 16
     		ELSE 		
			getFloorNumber(Floor) >= 11
     		ENDIF

 		OR getFloorNumber(Floor) < -3
		getFloorArea(Floor) >= 400m2
	}

	Stair myStair {
		(isAccessible(Stair, Floor.isEscape) = TRUE
		 OR isAccessible(Stair, Ground) = TRUE)
                        isObjectProperty(Stair.isDirect) = TRUE
	}

	hasObject(myFloor, myStair) = TRUE
}

KS{
	isObjectProperty(myStair.isSpecialEscape) = TRUE
}
 




Python Code 변환 예정



Modify
51
36608 건축법 시행령 제 46조 1 항

① 법 제49조제2항에 따라 주요구조부가 내화구조 또는 불연재료로 된 건축물로서 연면적이 1천 제곱미터를 넘는 것은 국토해양부령으로 정하는 기준에 따라 내화구조로 된 바닥·벽 및 제64조에 따른 갑종 방화문(국토해양부장관이 정하는 기준에 적합한 자동방화셔텨를 포함한다. 이하 이 조에서 같다)으로 구획(이하 "방화구획"이라 한다)하여야 한다. 다만, 「원자력법」 제2조에 따른 원자로 및 관계시설은 「원자력법」에서 정하는 바에 따른다.





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

Check(EDBA_46_1){

   IF (!CS1 AND CS2) THEN KS

}





CS1{

  getBuildingUsage()="NuclearReactorAndRelatedFacility"

}



CS2{

  (isObjectProperty(MainStructuralPart.isFireResistantStructure)=TRUE

  OR isObjectProperty(MainStructuralPart.Material.nonCombustibility)=TRUE))

  AND Building.grossFloorArea>1000 m2

}



KS{



  Floor myFloor{

      isObjectProperty(FloorSlab.isFireResistantStructure)=TRUE

  }

  Wall myWall{

      isObjectProperty(Wall.isFireResistantStructure)=TRUE

  }

  Door myDoor{

      isObjectProperty(Door.isStrictFireproofDoor)=TRUE

  }



  isFirePartition(Building, myFloor)=TRUE

  AND  isFirePartition(Building, myWall)=TRUE

  AND  isFirePatrition(Building, myDoor)=TRUE



  AND getResult(REFB_14_1)=TRUE

  AND getResult(REFB_14_2)=TRUE

  AND getResult(REFB_14_3)=TRUE



} 




Python Code 변환 예정



Modify
52
36623 건축법 시행령 제 46조 5 항

⑤ 제4항에도 불구하고 아파트의 4층 이상인 층에서 발코니에 설치하는 인접 세대와의 경계벽이 파괴하기 쉬운 경량구조 등이거나 경계벽에 피난구를 설치한 경우에는 대피공간을 설치하지 아니할 수 있다.





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

Check(EDBA_5){

CS 

}

Space mySpace{
Space.isEscape = TRUE
}

CS{getObjectProperty(Building.usage)="ApartmentHouses"
  AND isExist(Balcony)=TRUE

  AND (hasObject(Balcony,Structure)=TRUE

  AND (getResult(EDBA_5_1)=TRUE

  or getResult(EDBA_5_2)=TRUE

  or getResult(EDBA_5_3)=TRUE)

  AND isExist(mySpace)=FALSE

} 




Python Code 변환 예정



Modify
53
36632 건축법 시행령 제 50조

제50조 (거실반자의 설치) 법 제49조제2항에 따라 공장, 창고시설, 위험물저장 및 처리시설, 동물 및 식물 관련 시설, 분뇨 및 쓰레기처리시설 또는 묘지 관련시설 외의 용도로 쓰는 건축물 거실의 반자(반자가 없는 경우에는 보 또는 바로 위층의 바닥판의 밑면, 그 밖에 이와 비슷한 것을 말한다)는 국토해양부령으로 정하는 기준에 적합하여야 한다.





// 건축법 시행령 50조 (거실반자의 설치)
check(EDBA_50){
	IF (CS) THEN KS
}

CS{
	Building.usage != "Factory"
	OR Building.usage != "Warehouse"
	OR Building.usage != "FacilityForStorageAndTreatmentOfDangerousSubstance"
	OR Building.usage != "FacilityForAnimalAndPlant"
	OR Building.usage != "ResourceRecyclingFacility"
	OR Building.usage != "CemeteryAndRelatedFacility"
}

KS{
	getResult(REFB_16_1) = TRUE
	getResult(REFB_16_2) = TRUE
}
 








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

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





Modify
54
36649 건축법 시행령 제 57조 1 항

① 법 제50조제2항에 따라 연면적 1천 제곱미터 이상인 건축물은 방화벽으로 구획하되, 각 구획된 바닥면적의 합계는 1천 제곱미터 미만이어야 한다. 다만, 주요구조부가 내화구조이거나 불연재료인 건축물과 제56조제1항제5호 단서에 따른 건축물 또는 내부설비의 구조상 방화벽으로 구획할 수 없는 창고시설의 경우에는 그러하지 아니하다.





//  건축법 시행령 57조 (	대규모 건축물의 방화벽 등) 1항
Check(EDBA_57_1){
	IF (CS1 AND CS2) THEN KS
}

CS1{
	getObjectProperty(MainStructuralPart.isFireResistantStructure) = TRUE
	OR getObjectProperty(MainStructuralPart.Material.nonCombustibility) = TRUE
	OR getResult(EDBA_56_1_5) = TRUE
}

CS2{
	getObjectProperty(Building.grossFloorArea) >= 1000m2
}

KS{
	Space mySpace{
		getFloorArea(Space) < 1000m2
	}

	Space mySpace2{
		Space != mySpace
	}

	Wall myWall{
		isObjectProperty(Wall.isFireProofWall) = TRUE
	}

	isPartitioned(mySpace, mySpace2, myWall) = TRUE
} 




Python Code 변환 예정



Modify
55
36651 건축법 시행령 제 57조 3 항

③ 연면적 1천 제곱미터 이상인 목조 건축물의 구조는 국토해양부령으로 정하는 바에 따라 방화구조로 하거나 불연재료로 하여야 한다.





//  건축법 시행령 57조 (대규모 건축물의 방화벽 등) 3항

Check(EDBA_57_3){

	IF CS THEN KS

}



CS{

	getObjectProperty(Building.grossFloorArea) >= 1000m2

	getObjectProperty(Building.Structure.materialType) = "Timber"

}



KS{

	getObjectProperty(MainStructuralPart.Material.nonCombustibility) = TRUE

	OR getObjectProperty(MainStructuralPart.isFireProofStructure) = TRUE

} 




Python Code 변환 예정



Modify
56
37047 건축법 시행령 제 56조 1 항 5호

5. 3층 이상인 건축물 및 지하층이 있는 건축물. 다만, 단독주택(다중주택 및 다가구주택은 제외한다), 동물 및 식물 관련 시설, 발전시설(발전소의 부속용도로 쓰는 시설은 제외한다), 교도소·감화원 또는 묘지 관련 시설(화장장은 제외한다)의 용도로 쓰는 건축물과 철강 관련 업종의 공장 중 제어실로 사용하기 위하여 연면적 50제곱미터 이하로 증축하는 부분은 제외한다.





//건축법 시행령 56조 (건축물의 내화구조) 1항 5호

check(EDBA_56_1_5){

	IF !CS THEN KS

}

Building myBuilding{

     getBuildingUsage() = "PowerPlant"

     isObjectProperty(Building.isAttachedBuilding) = TRUE

}


Building  myBuilding{

     getResult(REFB_*_3_30) = TRUE

     getResult(REFB_*_3_31) = TRUE

}



CS{

         getBuildingUsage() = "facilities for animals and plants"

                                       

                              | "facilities for power generation"

                              | "correctional facilities and military installations.prison"

                              | "correctional facilities and military installations.reformatories 

                              | "myFactory"



	 OR (getBuildingUsage() = "detached houses"

             AND getBuildingUsage() != "detached houses.multi-user houses" 

                                     | "detached houses.multi-family houses" )



	 OR (getBuildingUsage() = "facilities for power generation" 

	 AND (getBuildingUsage() = "myBuilding"



	 OR (getBuildingUsage() = "cemeteries and related facilities"

	 AND getBuildingUsage() != "Crematorium") 





}



KS{

Floor myFloor{
Floor.number < 0
}

          getBuildingStoriesCount() >= 3 

	  AND isExist(myFloor) = TRUE

} 




Python Code 변환 예정



Modify
57
37359 건축법 시행령 제 34조 3 항

③ 초고층 건축물에는 피난층 또는 지상으로 통하는 직통계단과 직접 연결되는 피난안전구역(초고층 건축물의 피난·안전을 위하여 지상층으로부터 최대 30개 층마다 설치하는 대피공간을 말한다. 이하 같다)을 설치하여야 한다. <신설 2009.7.16>





// 건축법 시행령 제 34조 (직통계단의 설치) 3항

check(EDBA_34_3){

		IF CS THEN KS ENDIF

}



CS{

isObjectProperty(Building.isHighriseBuilding) = TRUE

}

KS{

		Stair myStair{

				isObjectProperty(Stair.isDirect) = TRUE			

		}

		Zone myZone{

				isObjectProperty(Zone.isEgressSafetyZone) = TRUE

		}

		Floor myFloor{

				isObjectProperty(Floor.isEscape) = TRUE

		}

isGoThrough(myFloor, myZone, myStair) = TRUE

		OR isGoThrough(myFloor, Ground, myStair) = TRUE



		getObjectCount(myZone) >= getBuildingStoriesCount()/30

} 




Python Code 변환 예정



Modify
58
37360 건축법 시행령 제 34조 4 항

④ 제3항에 따른 피난안전구역의 규모와 설치기준은 국토해양부령으로 정한다. <신설 2009.7.16>





// 건축법 시행령 34조 (직통계단의 설치) 4항

check(EDBA_34_4){

		IF !CS THEN KS ENDIF

}

CS{

		Stair myStair{

				isObjectProperty(Stair.isDirect) = TRUE

		}

		Floor myFloor{

				isObjectProperty(Floor.isEscape) = TRUE

		}

		isDirectlyAccessible(myStair, myFloor) = TRUE

		OR isDirectlyAccessible(myStair, Ground) = TRUE

}

				

KS{

		isObjectProperty(Building.isQuasiHighriseBuilding) = TRUE

		Stair myStair{

				isObjectProperty(Stair.isDirect) = TRUE			

		}

		Zone myZone{

				isObjectProperty(Zone.isEgressSafetyZone) = TRUE

		}

		Floor myFloor{

				isObjectProperty(Floor.isEscape) = TRUE

		}

                isGoThrough(myFloor, myZone, myStair) = TRUE

		OR isGoThrough(myFloor, Ground, myStair) = TRUE

		(getBuildingStoriesCount()/2)-5 < getFloorNumber(myZone)

                getFloorNumber(myZone) < (getBuildingStoriesCount()/2)+5

} 




Python Code 변환 예정



Modify
59
37378 건축법 시행령 제 47조 1 항 3호

3. 공동주택과 위락시설이 같은 초고층 건축물에 있는 경우. 다만, 사생활을 보호하고 방범·방화 등 주거 안전을 보장하며 소음·악취 등으로부터 주거환경을 보호할 수 있도록 주택의 출입구·계단 및 승강기 등을 주택 외의 시설과 분리된 구조로 하여야 한다.





//건축법 시행령 47조 (방화에 장애가 되는 용도의 제한) 1항 3호

Check(EDBA_47_1_3){
         KS
}

KS{
    Space mySpace1{
        getSpaceUsage(Space)="MultiUnitHouse"
    }
 
    Space mySpace2{
        getSpaceUsage(Space)="AmusementFacility"
    }

  
    Building myBuilding{
       isObjectProperty(Building.isHighriseBuilding)=True
    }

   
    isExistTogether(mySpace1, mySpace2, myBuilding)=True

   //다만, 주택의 출입구ㆍ계단 및 승강기 등을 주택 외의 시설과 분리된 구조로 하여야 한다.

} 




Python Code 변환 예정



Modify
60
40908 국토의 계획 및 이용에 관한 법률 제 77조 1 항 1호 가 목

가. 주거지역: 70퍼센트 이하





//국토의 계획 및 이용에 관한 법률 77조 (용도지역의 건폐율) 1항 1호 가목
Check(LPUA_77_1_1_1){
	IF CS THEN KS
}
	
CS{
	getObjectProperty(SpecialPurposeArea.type) = "ResidentialArea"
}

KS{
	getObjectProperty(Building.buildingToLandRatio) = BTL
	BTL <= 70
} 




Python Code 변환 예정



Modify
61
40909 국토의 계획 및 이용에 관한 법률 제 77조 1 항 1호 나 목

나. 상업지역: 90퍼센트 이하





//국토의 계획 및 이용에 관한 법률 77조 (용도지역의 건폐율) 1항 1호 나목
Check(LPUA_77_1_1_2){
	IF CS THEN KS
}
		
CS{
	getObjectProperty(SpecialPurposeArea.type) = "CommercialArea"
}

KS{
	getObjectProperty(Building.buildingToLandRatio) = BTL
	BTL <= 90
} 




Python Code 변환 예정



Modify
62
40910 국토의 계획 및 이용에 관한 법률 제 77조 1 항 1호 다 목

다. 공업지역: 70퍼센트 이하





//국토의 계획 및 이용에 관한 법률 77조 (용도지역의 건폐율) 1항 1호 다목
Check(LPUA_77_1_1_3){
	IF CS THEN KS
}
	
CS{
	getObjectProperty(SpecialPurposeArea.type) = "IndustrialArea"
}

KS{
	getObjectProperty(Building.buildingToLandRatio) = BTL
	BTL <= 70
} 




Python Code 변환 예정



Modify
63
40911 국토의 계획 및 이용에 관한 법률 제 77조 1 항 1호 라 목

라. 녹지지역: 20퍼센트 이하





//국토의 계획 및 이용에 관한 법률 77조 (용도지역의 건폐율) 1항 1호 라목
Check(LPUA_77_1_1_4){
	IF CS THEN KS
}
	
CS{
	getObjectProperty(SpecialPurposeArea.type) = "GreenArea"
}

KS{
	getObjectProperty(Building.buildingToLandRatio) = BTL
	BTL <= 20
} 




Python Code 변환 예정



Modify
64
40913 국토의 계획 및 이용에 관한 법률 제 77조 1 항 2호 가 목

가. 보전관리지역: 20퍼센트 이하





//국토의 계획 및 이용에 관한 법률 77조 (용도지역의 건폐율) 1항 2호 가목
Check(LPUA_77_1_2_1){
	IF CS THEN KS
}
		
CS{
	getObjectProperty(SpecialPurposeArea.type) = "ConservationManagementArea"
}

KS{
	getObjectProperty(Building.buildingToLandRatio) = BTL
	BTL <= 20
} 




Python Code 변환 예정



Modify
65
40914 국토의 계획 및 이용에 관한 법률 제 77조 1 항 2호 나 목

나. 생산관리지역: 20퍼센트 이하





//국토의 계획 및 이용에 관한 법률 77조 (용도지역의 건폐율) 1항 2호 나목
Check(LPUA_77_1_2_2){
	IF CS THEN KS
}
		
CS{
	getObjectProperty(SpecialPurposeArea.type) = "ProductionManagementArea"
}

KS{
	getObjectProperty(Building.buildingToLandRatio) = BTL
	BTL <= 20
} 




Python Code 변환 예정



Modify
66
40915 국토의 계획 및 이용에 관한 법률 제 77조 1 항 2호 다 목

다. 계획관리지역: 40퍼센트 이하





//국토의 계획 및 이용에 관한 법률 77조 (용도지역의 건폐율) 1항 2호 다목
Check(LPUA_77_1_2_3){
	IF CS THEN KS
}
		
CS{
	getObjectProperty(SpecialPurposeArea.type) = "PlanningManagementArea"
}

KS{
	getObjectProperty(Building.buildingToLandRatio) = BTL
	BTL <= 40
} 




Python Code 변환 예정



Modify
67
40916 국토의 계획 및 이용에 관한 법률 제 77조 1 항 3호

3. 농림지역: 20퍼센트 이하





//국토의 계획 및 이용에 관한 법률 77조 (용도지역의 건폐율) 1항 3호
Check(LPUA_77_1_3){
	IF CS THEN KS
}
		
CS{
	getObjectProperty(SpecialPurposeArea.type) = "AgriculturalAndForestryArea"
}

KS{
	getObjectProperty(Building.buildingToLandRatio) = BTL
	BTL <= 20
} 




Python Code 변환 예정



Modify
68
40917 국토의 계획 및 이용에 관한 법률 제 77조 1 항 4호

4. 자연환경보전지역: 20퍼센트 이하





//국토의 계획 및 이용에 관한 법률 77조 (용도지역의 건폐율) 1항 4호
Check(LPUA_77_1_4){
	IF CS THEN KS
}
		
CS{
	getObjectProperty(SpecialPurposeArea.type) = "NaturalEnvironmentConservationArea"
}

KS{
	getObjectProperty(Building.buildingToLandRatio) = BTL
	BTL <= 20
} 




Python Code 변환 예정



Modify
69
43019 국토의 계획 및 이용에 관한 법률 제 77조 3 항

③ 다음 각 호의 어느 하나에 해당하는 지역에서의 건폐율에 관한 기준은 제1항과 제2항에도 불구하고 80퍼센트 이하의 범위에서 대통령령으로 정하는 기준에 따라 특별시ㆍ광역시ㆍ특별자치시ㆍ특별자치도ㆍ시 또는 군의 조례로 따로 정한다. <개정 2011.4.14, 2011.8.4, 2015.8.11, 2017.4.18>





//국토의 계획 및 이용에 관한 법률 77조 (용도지역의 건폐율) 3항
Check(LPUA_77_3){
	IF CS THEN KS
}
		
CS{
	getResult(LPUA_77_3_1) = TRUE
	OR getResult(LPUA_77_3_2) = TRUE
	OR getResult(LPUA_77_3_3) = TRUE
	OR getResult(LPUA_77_3_4) = TRUE
	OR getResult(LPUA_77_3_5) = TRUE
	OR getResult(LPUA_77_3_6) = TRUE
}

KS{
	getObjectProperty(Building.buildingToLandRatio) = BTL
	BTL <= 80
} 




Python Code 변환 예정



Modify
70
43751 국토의 계획 및 이용에 관한 법률 제 78조 1 항 1호

1. 도시지역





// 국토의 계획 및 이용에 관한 법률 78조 (용도지역에서의 용적률) 1항 1호

Check(LPUA_78_1_1){
IF CS THEN KS
}

CS{
getObjectProperty(Building.SpecialPurposeArea.type) = "UrbanArea"
}
KS{
getResult(LPUA_78_1_1_가)=TRUE
OR getResult(LPUA_78_1_1_나)=TRUE
OR getResult(LPUA_78_1_1_다)=TRUE
OR getResult(LPUA_78_1_1_라)=TRUE

}
 




Python Code 변환 예정



Modify
71
43752 국토의 계획 및 이용에 관한 법률 제 78조 1 항 1호 가 목

가. 주거지역: 500퍼센트 이하





// 국토의 계획 및 이용에 관한 법률 78조 (용도지역에서의 용적률) 1항 1호 가목

Check(LPUA_78_1_1_가){
IF CS THEN KS
}

CS{
getObjectProperty(Building.SpecialPurposeArea.type) = "ResidentialArea"
}

KS{
getFloorAreaRatio() <= 500%
}
 




Python Code 변환 예정



Modify
72
43753 국토의 계획 및 이용에 관한 법률 제 78조 1 항 1호 나 목

나. 상업지역: 1천500퍼센트 이하





// 국토의 계획 및 이용에 관한 법률 78조 (용도지역에서의 용적률) 1항 1호 나목

Check(LPUA_78_1_1_나){
IF CS THEN KS
}

CS{
getObjectProperty(Building.SpecialPurposeArea.type) = "CommercialArea"
}

KS{
getFloorAreaRatio() <= 1500%
}
 




Python Code 변환 예정



Modify
73
43754 국토의 계획 및 이용에 관한 법률 제 78조 1 항 1호 다 목

다. 공업지역: 400퍼센트 이하





// 국토의 계획 및 이용에 관한 법률 78조 (용도지역에서의 용적률) 1항 1호 다목

Check(LPUA_78_1_1_다){
IF CS THEN KS
}

CS{
getObjectProperty(Building.SpecialPurposeArea.type) = "IndustrialArea"
}

KS{
getFloorAreaRatio() <= 400%
}
 




Python Code 변환 예정



Modify
74
43755 국토의 계획 및 이용에 관한 법률 제 78조 1 항 1호 라 목

라. 녹지지역: 100퍼센트 이하





// 국토의 계획 및 이용에 관한 법률 78조 (용도지역에서의 용적률) 1항 1호 라목

Check(LPUA_78_1_1_라){
IF CS THEN KS
}

CS{
getObjectProperty(Building.SpecialPurposeArea.type) = "GreenArea"
}

KS{
getFloorAreaRatio() <= 100%
}
 




Python Code 변환 예정



Modify
75
43756 국토의 계획 및 이용에 관한 법률 제 78조 1 항 2호

2. 관리지역





// 국토의 계획 및 이용에 관한 법률 78조 (용도지역에서의 용적률) 1항 2호

Check(LPUA_78_1_2){
IF CS THEN KS
}

CS{
getObjectProperty(Building.SpecialPurposeArea.type) = "ControlArea"
}

KS{
getResult(LPUA_78_1_2_가)=TRUE
OR getResult(LPUA_78_1_2_나)=TRUE
OR getResult(LPUA_78_1_2_다)=TRUE
}
 




Python Code 변환 예정



Modify
76
43757 국토의 계획 및 이용에 관한 법률 제 78조 1 항 2호 가 목

가. 보전관리지역: 80퍼센트 이하





// 국토의 계획 및 이용에 관한 법률 78조 (용도지역에서의 용적률) 1항 2호 가목

Check(LPUA_78_1_2_가){
IF CS THEN KS
}

CS{
getObjectProperty(Building.SpecialPurposeArea.type) = "ConservationManagementArea"
}

KS{
getFloorAreaRatio() <= 80%
}
 




Python Code 변환 예정



Modify
77
43758 국토의 계획 및 이용에 관한 법률 제 78조 1 항 2호 나 목

나. 생산관리지역: 80퍼센트 이하





// 국토의 계획 및 이용에 관한 법률 78조 (용도지역에서의 용적률) 1항 2호 나목

Check(LPUA_78_1_2_나){
IF CS THEN KS
}

CS{
getObjectProperty(Building.SpecialPurposeArea.type) = "ProductionManagementArea"
}

KS{
getFloorAreaRatio() <= 80%
}
 




Python Code 변환 예정



Modify
78
43759 국토의 계획 및 이용에 관한 법률 제 78조 1 항 2호 다 목

다. 계획관리지역: 100퍼센트 이하





// 국토의 계획 및 이용에 관한 법률 78조 (용도지역에서의 용적률) 1항 2호 다목

Check(LPUA_78_1_2_다){
IF CS THEN KS
}

CS{
getObjectProperty(Building.SpecialPurposeArea.type) = "PlanningManagementArea"
}

KS{
getFloorAreaRatio() <=100%
}
 




Python Code 변환 예정



Modify
79
43760 국토의 계획 및 이용에 관한 법률 제 78조 1 항 3호

3. 농림지역: 80퍼센트 이하





// 국토의 계획 및 이용에 관한 법률 78조 (용도지역에서의 용적률) 1항 3호

Check(LPUA_78_1_3){
IF CS THEN KS
}

CS{
getObjectProperty(Building.SpecialPurposeArea.type) = "AgriculturalAndForestryArea"
}

KS{
getFloorAreaRatio() <= 80%
}
 




Python Code 변환 예정



Modify
80
43761 국토의 계획 및 이용에 관한 법률 제 78조 1 항 4호

4. 자연환경보전지역: 80퍼센트 이하





// 국토의 계획 및 이용에 관한 법률 78조 (용도지역에서의 용적률) 1항 4호

Check(LPUA_78_1_4){
IF CS THEN KS
}

CS{
getObjectProperty(Building.SpecialPurposeArea.type) = "NaturalEnvironmentConservationArea"
}

KS{
getFloorAreaRatio() <= 80%
}
 




Python Code 변환 예정



Modify
81
43763 국토의 계획 및 이용에 관한 법률 제 78조 3 항

③ 제77조제3항제2호부터 제5호까지의 규정에 해당하는 지역에서의 용적률에 대한 기준은 제1항과 제2항에도 불구하고 200퍼센트 이하의 범위에서 대통령령으로 정하는 기준에 따라 특별시·광역시·시 또는 군의 조례로 따로 정한다.





// 국토의 계획 및 이용에 관한 법률 78조 (용도지역에서의 용적률) 3항

Check(LPUA_78_3){
IF CS THEN KS
}
CS{
	getResult(LPUA_77_3_2) = TRUE
	getResult(LPUA_77_3_3) = TRUE
	getResult(LPUA_77_3_4) = TRUE
	getResult(LPUA_77_3_5) = TRUE
}
KS{
	BFA = getObjectProperty(Building.floorAreaRatio)
	BFA <= 200
	getResult(Unimplemented_LGMO) = TRUE 




Python Code 변환 예정



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

2. 개발진흥지구: 다음 각 목에서 정하는 비율 이하





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

Check(EDLPUA_84_3_2){
      IF CS THEN KS
}

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

KS{
    getBuildingToLandRatio()<=40%
} 




Python Code 변환 예정



Modify
83
19789 국토의 계획 및 이용에 관한 법률 시행령 제 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 변환 예정



Modify
84
46015 국토의 계획 및 이용에 관한 법률 시행령 제 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 변환 예정



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

1. 취락지구 : 60퍼센트 이하(집단취락지구에 대하여는 개발제한구역의지정및관리에관한특별조치법령이 정하는 바에 의한다)





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

Check(EDLPUA_84_3_1){
      IF CS THEN KS
}

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

KS{
    getBuildingToLandRatio()<=60%
} 




Python Code 변환 예정



Modify
86
72057 국토의 계획 및 이용에 관한 법률 시행령 제 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 변환 예정



Modify
87
72058 국토의 계획 및 이용에 관한 법률 시행령 제 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 변환 예정



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

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





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

Check(EDLPUA_84_3_5){
      IF CS THEN KS
}

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

KS{
    getBuildingToLandRatio()<=70%
} 




Python Code 변환 예정



Modify
89
19886 다중이용업소의 안전관리에 관한 특별법 시행령 제 2조 1호

1. 「식품위생법 시행령」 제21조제8호에 따른 식품접객업 중 다음 각 목의 어느 하나에 해당하는 것





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


Check(ERSASP_2_0_1){
IF CS THEN KS
}

CS{
getObjectProperty(Building.business) = "EDFA_21_0_8"

}
KS{
getResult(ERSASP_2_0_1_1)= TRUE
OR getResult(ERSASP_2_0_1_2)= TRUE

} 




Python Code 변환 예정



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

2. 「영화 및 비디오물의 진흥에 관한 법률」 제2조제10호, 같은 조 제16호가목ㆍ나목 및 라목에 따른 영화상영관ㆍ비디오물감상실업ㆍ비디오물소극장업 및 복합영상물제공업





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


Check(ERSASP_2_0_2){
KS
}

KS{
getObjectProperty(Building.business)= "PMVA_2_0_10"
OR getObjectProperty(Building.business)= "PMVA_2_0_16_1"
OR getObjectProperty(Building.business)= "PMVA_2_0_16_2"
OR getObjectProperty(Building.business)= "PMVA_2_0_16_4"
}

 




Python Code 변환 예정



Modify
91
19888 다중이용업소의 안전관리에 관한 특별법 시행령 제 2조 3호

3. 「학원의 설립ㆍ운영 및 과외교습에 관한 법률」 제2조제1호에 따른 학원(이하 "학원"이라 한다)으로서 다음 각 목의 어느 하나에 해당하는 것





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


Check(ERSASP_2_0_3){
IF CS THEN KS
}

CS{
getObjectProperty(Building.business)= "AEOPE_2_0_1_"
}

KS{
getResult(ERSASP_2_0_3_가)= TRUE
OR getResult(ERSASP_2_0_3_나)= TRUE
} 




Python Code 변환 예정



Modify
92
19889 다중이용업소의 안전관리에 관한 특별법 시행령 제 2조 3호 나 목

(3) 하나의 건축물에 제1호, 제2호, 제4호부터 제7호까지, 제7호의2부터 제7호의5까지 및 제8호의 다중이용업 중 어느 하나 이상의 다중이용업과 학원이 함께 있는 경우





Check(ERSASP_2_0_3_나3){
IF CS THEN KS
}

CS{
getObjectProperty(Building.business)= "AEOPE_2_0_1"
}
KS{
getResult(ERSASP_2_0_1)= TRUE
OR getResult(ERSASP_2_0_2)= TRUE
OR getResult(ERSASP_2_0_4)= TRUE
OR getResult(ERSASP_2_0_5)= TRUE
OR getResult(ERSASP_2_0_6)= TRUE
OR getResult(ERSASP_2_0_7)= TRUE
OR getResult(ERSASP_2_0_7-2)= TRUE
OR getResult(ERSASP_2_0_7-3)= TRUE
OR getResult(ERSASP_2_0_7-4)= TRUE
OR getResult(ERSASP_2_0_7-5)= TRUE
OR getResult(ERSASP_2_0_8)= TRUE
} 




Python Code 변환 예정



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

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





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


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


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


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

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

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




Python Code 변환 예정



Modify
94
19891 다중이용업소의 안전관리에 관한 특별법 시행령 제 2조 6호

6. 「음악산업진흥에 관한 법률」 제2조제13호에 따른 노래연습장업





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


Check(ERSASP_2_0_6){
KS
}

KS{
getObjectProperty(Building.business)= "MIPA_2_0_13"
}
 




Python Code 변환 예정



Modify
95
19892 다중이용업소의 안전관리에 관한 특별법 시행령 제 2조 7호

7. 「모자보건법」 제2조제12호에 따른 산후조리업





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


Check(ERSASP_2_0_7){
KS
}

KS{
getObjectProperty(Building.business)= "MCHA_2_0_11"
}
 




Python Code 변환 예정



Modify
96
19893 다중이용업소의 안전관리에 관한 특별법 시행령 제 2조 7의2호

7의2. 고시원업[구획된 실(室) 안에 학습자가 공부할 수 있는 시설을 갖추고 숙박 또는 숙식을 제공하는 형태의 영업]





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




Check(ERSASP_2_0_7-2){
KS
}

KS{
getObjectProperty(Building.business)= "AccommodationForExaminers"
}
 




Python Code 변환 예정



Modify
97
19894 다중이용업소의 안전관리에 관한 특별법 시행령 제 2조 7의3호

7의3. 「사격 및 사격장 안전관리에 관한 법률 시행령」 제2조제1항 및 별표 1에 따른 권총사격장(실내사격장에 한정하며, 같은 조 제1항에 따른 종합사격장에 설치된 경우를 포함한다)





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


Check(ERSASP_2_0_7-3){
KS
}

KS{
getObjectProperty(Building.business)= "GunShootingRange"
}
 




Python Code 변환 예정



Modify
98
19895 다중이용업소의 안전관리에 관한 특별법 시행령 제 2조 7의4호

7의4. 「체육시설의 설치ㆍ이용에 관한 법률」 제10조제1항제2호에 따른 골프 연습장업(실내에 1개 이상의 별도의 구획된 실을 만들어 스크린과 영사기 등의 시설을 갖추고 골프를 연습할 수 있도록 공중의 이용에 제공하는 영업에 한정한다)





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


Check(ERSASP_2_0_7-4){
KS
}

KS{
getObjectProperty(Building.business)="IUSA_10_1_2_9"
} 




Python Code 변환 예정



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

7의5. 「의료법」 제82조제4항에 따른 안마시술소





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


Check(ERSASP_2_0_7-5){
KS
}

KS{
getObjectProperty(Building.business)="MassageParlor"
} 




Python Code 변환 예정



Modify
100
19903 소화기구 및 자동소화장치의 화재안전기준(NFSC 101) 제 4조 1 항 4호 가 목

가. 각층마다 설치하되, 특정소방대상물의 각 부분으로부터 1개의 소화기까지의 보행거리가 소형소화기의 경우에는 20m 이내, 대형소화기의 경우에는 30m 이내가 되도록 배치할 것. 다만, 가연성물질이 없는 작업장의 경우에는 작업장의 실정에 맞게 보행거리를 완화하여 배치할 수 있으며, 지하구의 경우에는 화재발생의 우려가 있거나 사람의 접근이 쉬운 장소에 한하여 설치할 수 있다<개정 2012.6.11>





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



Check(NFSC101_4_1_4){

       KS

}



KS{

     isInstalled(FireExtinguisher, Floor)=True

     

     IF getObjectProperty(FireExtinguisher.sizeType)="SmallSize"

     THEN getObjectDistance(SpecificFireFightingBuilding.Wall, FireExtinguisher.One)<=20 m

          getObjectDistance(SpecificFireFightingBuilding.Column, FireExtinguisher.One)<=20 m



     ELSE IF getObjectProperty(FireExtinguisher.sizeType)="LargeSize"

     THEN getObjectDistance(SpecificFireFightingBuilding.Wall, FireExtinguisher.One)<=30 m

          getObjectDistance(SpecificFireFightingBuilding.Column, FireExtinguisher.One)<=30 m



     END IF 

} 




Python Code 변환 예정



Modify
    1   2   next▷  
 

Related Sites

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