개방형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 (문장단위)
  ◁prev 1   2   3   4   next▷  
2 / 4 page Total 2500 / 4000 records    신규입력
Select
ALL
None
#
ID
Law
Jo
JO Name
HANG
HO
MOK
Text
Search!
1
25208 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 9조 2 항 3호 마 목

마. 계단실·노대 또는 부속실에 설치하는 건축물의 바깥쪽에 접하는 창문등(망이 들어 있는 유리의 붙박이창으로서 그 면적이 각각 1제곱미터이하인 것을 제외한다)은 계단실·노대 또는 부속실외의 당해 건축물의 다른 부분에 설치하는 창문등으로부터 2미터 이상의 거리를 두고 설치할 것





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

check (REFB_9_2_3_5){

CS TEHN KS

}

CS{

	Space mySpace {

		getSpace(Stair.Space)

		getSpace(“Balcony”)

		getSpace(“AncillaryRoom”)

}

	Opening myOpening1 {

		hasElement(mySpace,Opening)=TRUE

		isConnectedToExternal(Opening) = TRUE



	Opening myOpening2 {

		getObjectProperty(Opening.material)= “WireContainedGlass”

		getObjectProperty(Window.panelOperationType)= “FixedSashWindow”

		getObjectProperty(Opening.area)=< 1㎡

}

	Opening myOpening3{

		getObject(myOpening1)-getObject(myOpening2)

}

isExist(myOpening3)=TRUE



KS{

	Opening myOpening4{

		getObject(Opening)-getObject(myOpening3)

}

getElementDistance(myOpening3, myOpening4, a)>=2m

} 




Python Code 변환 예정



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

사. 계단실의 노대 또는 부속실에 접하는 창문등(출입구를 제외한다)은 망이 들어 있는 유리의 붙박이창으로서 그 면적을 각각 1제곱미터 이하로 할 것





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

check (REFB_9_2_3_7){

CS TEHN KS

}

CS{

	Space mySpace {

		getSpace(“Balcony”)

		getSpace(“AncillaryRoom”)

		hasObject(Stair.Space,Space)=TRUE

}

	Opening myOpening {

		getObject(mySpace.Opening)

}

isExist(myOpening)=TRUE

}



KS{

getObjectProperty(myOpening.material)= “WireContainedGlass”

getObjectProperty(Window.panelOperationType)= “FixedSashWindow”

getObjectProperty(myOpening.area)=< 1㎡

} 




Python Code 변환 예정



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

카. 출입구의 유효너비는 0.9미터 이상으로 하고 피난의 방향으로 열 수 있을 것





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

check (REFB_9_2_3_카){
	KS
}

KS{
getObjectProperty(Door.effectiveWidth) >= 0.9m
isObjectProperty(Door.isEscapeDirection)=TRUE
} 




Python Code 변환 예정



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

③영 제35조제1항에 따른 피난계단 또는 특별피난계단은 돌음계단으로 하여서는 아니되며, 영 제40조에 따라 옥상광장을 설치하여야 하는 건축물의 피난계단 또는 특별피난계단은 해당 건축물의 옥상으로 통하도록 설치하여야 한다. 이 경우 옥상으로 통하는 출입문은 피난방향으로 열리는 구조로서 피난시 이용에 장애가 없어야 한다. <개정 2010.4.7>





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

Check(REFB_9_3) {

	KS

}

KS {

	Stair myStair1{

		isObjectProperty(Stair.isEscape)=TRUE

		OR isObjectProperty(Stair.isSpecialEscape)=TRUE

}

	Space mySpace{

		getObjectProperty(Space.usage) = “RooftopPlaza”
}
		hasObject(Rooftop, mySpace)=TRUE



}

	Stair myStair2{

		hasObject(mySpace.Building,myStair1)=TRUE 

}	

	getObjectProperty(myStair.type)!= “WindingStair”

	isAccessible(myStair2,mySpace)=TRUE

	isEgressDirection(mySpace.Door) = TRUE

} 




Python Code 변환 예정



Modify
5
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
6
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
7
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
8
25264 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 15조 1 항 4호

4. 계단의 유효 높이(계단의 바닥 마감면부터 상부 구조체의 하부 마감면까지의 연직방향의 높이를 말한다)는 2.1미터 이상으로 할 것





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

check(REFB_15_1_4){

     KS

}



KS{

getObjectProperty(Stair.effectiveHeight)>=2.1 m

} 








min_h = 2.1
min_h_label = '최소 계단 유효높이'
def Check():
    for building in SELECT('building'):
        for stair in building.SELECT('stair'):
            st_h = stair.SELECT('height').UNIT('m')
            st_h_num = height.NUMBER()
            if st_h_num < min_h:
                stair.ERROR('계단 유효높이: ' + str(st_h_num) + ' < ' + str(min_h))
            else:
                stair.SUCCESS('계단 유효높이: ' + str(st_h_num) + ' >= ' + str(min_h)) 





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

1. 초등학교의 계단인 경우에는 계단 및 계단참의 너비는 150센티미터 이상, 단높이는 16센티미터 이하, 단너비는 26센티미터 이상으로 할 것





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

CS{
      getBuildingUsage()="ElementarySchool"
}

KS{
      getObjectWidth(Stair)>= 150 cm
      getObjectWidth(StairLanding)>150 cm
      getObjectProperty(Stair.riserHeight)>=16 cm
      getObjectProperty(Stair.riserWidth)>=26 cm
} 










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

        bldg_use = building.SELECT('building type').STRING()
        sub_use = building.SELECT('prop', '세부용도').STRING()
        min_clear_w = 0.6
        max_riser_h = 0.0
        min_tread_w = 0.0

        if bldg_use == '교육연구시설':
            min_clear_w = 1.5            
            min_tread_w = 0.26
            if sub_use == '초등학교':
                max_riser_h = 0.16
            elif sub_use in ['중학교', '고등학교']:
                max_riser_h = 0.18
        elif (bldg_use == '문화 및 집회시설' and sub_use in ['공연장', '집회장', '관람장']) or (bldg_use == '판매시설'):
            min_clear_w = 1.2
        else:
            min_clear_w = 0.6 
        
        for storey in building.SELECT('storey'):
            for stair in storey.SELECT('stair'):
                clear_width = stair.SELECT('clear width').UNIT('m')
                clear_w = clear_width.NUMBER()
                
                if clear_w < min_clear_w:
                    clear_width.ERROR('유효너비: ' + str(clear_w) + ' < ' + str(min_clear_w))
                else:
                    clear_width.SUCCESS('유효너비: ' + str(clear_w) + ' >= ' + str(min_clear_w))

                if max_riser_h > 0:
                    for riser_height in stair.SELECT('riser height'):
                        riser_h = riser_height.UNIT('m').NUMBER()

                        if riser_h > max_riser_h:
                            riser_height.ERROR('단높이: ' + str(riser_h) + ' > ' + str(max_riser_h))
                            break

                if min_tread_w > 0:
                    for tread_width in stair.SELECT('tread width'):
                        tread_w = tread_width.UNIT('m').NUMBER()

                        if tread_w < min_tread_w:
                            tread_width.ERROR('단너비: ' + str(tread_w) + ' < ' + str(min_tread_w))
                            break 





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

2. 중·고등학교의 계단인 경우에는 계단 및 계단참의 너비는 150센티미터 이상, 단높이는 18센티미터 이하, 단너비는 26센티미터 이상으로 할 것





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

CS{
       getBuildingUsage()="MiddleSchool"
       OR getBuildingUsage()="HighSchool"
}

KS{
      getObjectWidth(Stair)>=150 cm
      getObjectWidth(StairLanding)>150 cm
      getObjectProperty(Stair.riserHeight)>=18 cm
      getObjectProperty(Stair.riserWidth)>=26 cm
} 










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

        bldg_use = building.SELECT('building type').STRING()
        sub_use = building.SELECT('prop', '세부용도').STRING()
        min_clear_w = 0.6
        max_riser_h = 0.0
        min_tread_w = 0.0

        if bldg_use == '교육연구시설':
            min_clear_w = 1.5            
            min_tread_w = 0.26
            if sub_use == '초등학교':
                max_riser_h = 0.16
            elif sub_use in ['중학교', '고등학교']:
                max_riser_h = 0.18
        elif (bldg_use == '문화 및 집회시설' and sub_use in ['공연장', '집회장', '관람장']) or (bldg_use == '판매시설'):
            min_clear_w = 1.2
        else:
            min_clear_w = 0.6 
        
        for storey in building.SELECT('storey'):
            for stair in storey.SELECT('stair'):
                clear_width = stair.SELECT('clear width').UNIT('m')
                clear_w = clear_width.NUMBER()
                
                if clear_w < min_clear_w:
                    clear_width.ERROR('유효너비: ' + str(clear_w) + ' < ' + str(min_clear_w))
                else:
                    clear_width.SUCCESS('유효너비: ' + str(clear_w) + ' >= ' + str(min_clear_w))

                if max_riser_h > 0:
                    for riser_height in stair.SELECT('riser height'):
                        riser_h = riser_height.UNIT('m').NUMBER()

                        if riser_h > max_riser_h:
                            riser_height.ERROR('단높이: ' + str(riser_h) + ' > ' + str(max_riser_h))
                            break

                if min_tread_w > 0:
                    for tread_width in stair.SELECT('tread width'):
                        tread_w = tread_width.UNIT('m').NUMBER()

                        if tread_w < min_tread_w:
                            tread_width.ERROR('단너비: ' + str(tread_w) + ' < ' + str(min_tread_w))
                            break 





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

6. 「산업안전보건법」에 의한 작업장에 설치하는 계단인 경우에는 「산업안전 기준에 관한 규칙」에서 정한 구조로 할 것





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



check(REFB_15_2_6){

     IF CS THEN KS

}

CS{

Space mySpace{
getObjectProperty(Space.usage) = "Workplace"
}
	isInstalled(Stair,mySpace) = TRUE

}

KS{

	getResult(ROSHA_26) = TRUE

	getResult(ROSHA_27) = TRUE

	getResult(ROSHA_28) = TRUE

	getResult(ROSHA_29) = TRUE

	getResult(ROSHA_30) = TRUE

} 




Python Code 변환 예정



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

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





check(REFB_15_4_1){

     KS

}

KS{

       getElementWidth(Railing,Handle) >= 3.2CM

       AND getElementWidth(Handle) <= 3.8CM

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

} 




Python Code 변환 예정



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

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





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

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




Python Code 변환 예정



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

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





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








corridor_code = '33105'
std_floor_area = 200

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

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

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

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

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

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





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

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





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


 








corridor_code = '33105'
std_floor_area = 200

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

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

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

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

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

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





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

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





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


 








corridor_code = '33105'
std_floor_area = 200

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

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

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

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

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

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





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

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





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

check(REFB_17_3){

	IF CS THEN KS

}



CS{

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

	Room myRoom{

		isPartitioned(Room, myDoor, Room) = TRUE

	}

}



KS{

	myRoom = Room

} 




Python Code 변환 예정



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

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





check(REFB_19_2_1){

     KS

}



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

   AND getObjectThickness(myWall) >= 10CM

} 




Python Code 변환 예정



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

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





check(REFB_19_2_2){

     KS

}



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

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

} 




Python Code 변환 예정



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

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





check(REFB_19_2_3){

     KS

}



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

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

} 




Python Code 변환 예정



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

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





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

check(REFB_25_2_4){

	IF CS THEN KS

}



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

}



KS{

	isConnectedTo(Wall, Ladder) = TRUE

	getObjectProperty(Ladder.footholdWidth) >= 20 cm

} 




Python Code 변환 예정



Modify
22
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
23
25366 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 24조 1 항

①법 제52조제1항에 따라 영 제61조제1항 각 호의 건축물에 대하여는 그 거실의 벽 및 반자의 실내에 접하는 부분(반자돌림대·창대 기타 이와 유사한 것을 제외한다. 이하 이 조에서 같다)의 마감은 불연재료·준불연재료 또는 난연재료로 하여야 하며, 그 거실에서 지상으로 통하는 주된 복도·계단 기타 통로의 벽 및 반자의 실내에 접하는 부분의 마감은 불연재료 또는 준불연재료로 하여야 한다. <개정 2005.7.22, 2010.4.7, 2010.12.30>





check(REFB_24_1){

      KS}



KS{

    (check(EDBA_61_1_1)=TRUE

    OR check(EDBA_61_1_2)=TRUE

    OR check(EDBA_61_1_3)=TRUE

    OR check(EDBA_61_1_4)=TRUE)

    OR check(EDBA_61_1_5)=TRUE)

    OR check(EDBA_61_1_6)=TRUE)

    OR check(EDBA_61_1_7)=TRUE)

    AND (getObjectProperty(Room.Wall.Material.noncombustible)= TRUE

    AND (getObjectProperty(CeilingCornice | WindowSill.Material.noncombustible)= TRUE

    OR !(getObjectProperty(CeilingCornice | WindowSill.Material.noncombustiblel)= TRUE)

    AND (isGoThrough(Room, Corridor | Stair | Passage,Ground)= TRUE

    AND (isFireResistant(getWall(Corridor))=TRUE

    AND isFireResistant(getWall(Stair))=TRUE

    AND isFireResistant(getWall(Passage))=TRUE

    AND isFireResistant(getObject(CeilingCovering))=TRUE)

} 




Python Code 변환 예정



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

다. 그 밖의 심재는 불연재료·준불연재료 또는 난연재료인 것





//  건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 24조의2 (소규모 공장용도 건축물의 마감재료) 3항 2호 다목
Check(REFB_24-2_3_2_3){
	IF CS THEN KS
}

CS{
	getResult(REFB_24-2_3_2_1) = FALSE
	getResult(REFB_24-2_3_2_2) = FALSE
}

KS{
	getObjectProperty(Heartwood.Material.flameResistance) = TRUE
	OR getObjectProperty(Heartwood.Material.nonCombustibility) = TRUE
	OR getObjectProperty(Heartwood.Material.quasiNonCombustibility) = TRUE
} 




Python Code 변환 예정



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

가. 건축물의 내부와 계단실은 노대를 통하여 연결하거나 외부를 향하여 열 수 있는 면적 1제곱미터 이상인 창문(바닥으로부터 1미터 이상의 높이에 설치한 것에 한한다) 또는 「건축물의 설비기준 등에 관한 규칙」 제14조의 규정에 적합한 구조의 배연설비가 있는 면적 3제곱미터 이상인 부속실을 통하여 연결할 것





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

check (REFB_9_2_3_1){

CS THEN KS 

}

CS {

isExist(Stair.Space) = TRUE

}

KS {

	Window myWindow {

		getObjectProperty(Window.area)>= 1 m2

		isObjectProperty(Window.isExternalDirection) = TRUE

		 getElementDistance(Window, FloorSlab, a)>=1m



}

	SmokeExhaustionSystem mySmokeExhaustionSystem {

		getElement(SmokeExhaustionSystem)

		getResult(RFB_14)=TRUE

}



	Space mySpace1{

		getSpace(“Balcony”)

}

	Space mySpace2{

		isExternal(Space)=FALSE

}

	Space mySpace3{

		getSpace(“AncillaryRoom”)

		getFloorArea(Space.Floor, ) >= 3㎡

		hasElement(Space,mySmokeExhaustionSystem) = TRUE

		hasElement(Space,myWindow) = TRUE

}

isGoThrough(mySpace2,Stair.Space, ,mySpace1)

OR isGoThrough(mySpace2,Stair.Space, ,mySpace3) 




Python Code 변환 예정



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

4. 출입구는 유효너비 0.9미터 이상으로 하고, 그 출입구에는 갑종방화문을 설치할 것





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 13조 (헬리포트 및 구조공간 설치 기준) 3항 4호



Check(REFB_13_3_4){

  KS

}



KS{

     isObjectProperty(Door.isEntrance)=True

  getObjectProperty( myDoor.effectiveWidth) > 0.9 m

   isObjectProperty(Door.isStrictFireproofDoor)=True 




Python Code 변환 예정



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

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





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


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


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




Python Code 변환 예정



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

제20조의2 (내화구조의 적용이 제외되는 공장건축물) 영 제56조제1항제3호 단서에서 "국토해양부령으로 정하는 공장"이란 별표 2의 업종에 해당하는 공장으로서 주요구조부가 불연재료로 되어 있는 2층 이하의 공장을 말한다. <개정 2005.7.22, 2008.3.14, 2009.7.1>





check(REFB_20-2){

     getResult(REFB_*_2) = True

     getObjectProperty(MainStructuralPart.Material.nonCombustibility)= TRUE

     getBuildingStoriesCount()<2;

} 




Python Code 변환 예정



Modify
30
71916 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 3조 1호 가 목

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





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

Check (REFB_3_0_1_가){
	KS
}
KS{
	getObjectProperty(Wall.Structure.materialType) = "ReinforcedConcrete" OR "SteelFramedReinforcedConcrete"
	getWallThickness(Wall) >= 10cm
}
 




Python Code 변환 예정



Modify
31
71918 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 3조 4호 가 목

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





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 3조 (내화구조) 4호 가목

Check (REFB_3_0_4_가){
	KS
}
KS{
	getObjectProperty(Wall.Structure.materialType) = "ReinforcedConcrete" OR "SteelFramedReinforcedConcrete"
	getObjectThickness(FloorSlab.Structure) >= 10cm
} 




Python Code 변환 예정



Modify
32
71920 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 3조 6호 가 목

가. 철근콘크리트조 또는 철골철근콘크리트조





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 3조 (내화구조) 6호 가목

Check (REFB_3_0_6_가){
	KS
}
KS{
	getObjectProperty(Roof.Structure.materialType) = "ReinforcedConcrete" OR "SteelFramedReinforcedConcrete"
} 




Python Code 변환 예정



Modify
33
71921 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 3조 7호 가 목

가. 철근콘크리트조 또는 철골철근콘크리트조





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 3조 (내화구조) 7호 가목

Check (REFB_3_0_7_가){
	KS
}
KS{
	getObjectProperty(Stair.Structure.materialType) = "ReinforcedConcrete" OR "SteelFramedReinforcedConcrete"
} 




Python Code 변환 예정



Modify
34
19713 건축법 시행령 제 52조 1호

1. 건축물의 최하층에 있는 거실(바닥이 목조인 경우만 해당한다)





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

Check(EDBA_52_0_1){

CS}



CS{

hasObject(BottomFloor, Room) = TRUE
 getObjectProperty(FloorSlab.Structure.materialType) = "Timber"

} 




Python Code 변환 예정



Modify
35
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
36
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
37
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
38
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
39
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
40
30376 건축법 시행령 제 40조 3 항 1호

1. 건축물의 지붕을 평지붕으로 하는 경우: 헬리포트를 설치하거나 헬리콥터를 통하여 인명 등을 구조할 수 있는 공간





//건축법 시행령 40조 (옥상광장 등의 설치) 3항 1호

Check(EDBA_40_3_1){

  IF (CS) THEN KS

}



CS{

	getObjectProperty(Roof.shapeType) = “FlatRoof”

}



KS{

	isExist(Heliport) = True

        getResult(REFB_13_1)=True

        getResult(REFB_13_2)=True

} 




Python Code 변환 예정



Modify
41
30377 건축법 시행령 제 40조 3 항 2호

2. 건축물의 지붕을 경사지붕으로 하는 경우: 경사지붕 아래에 설치하는 대피공간





//건축법 시행령 40조 (옥상광장 등의 설치) 3항 2호

Check(EDBA_40_3_2){

  IF (CS) THEN KS

}



CS{

	getObjectProperty(Roof.shapeType) = “PitchedRoof ”

}



KS{
Space mySpace{
Space.isEscape = TRUE
}
	isExist(mySpace) = True

	getObjectProperty(mySpace.Roof.shapeType) = “PitchedRoof”



        getResult(REFB_13_3)=True

        

} 




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
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
46
34605 건축법 시행령 제 41조 1 항

①건축물의 대지 안에는 그 건축물 바깥쪽으로 통하는 주된 출구와 지상으로 통하는 피난계단 및 특별피난계단으로부터 도로 또는 공지(공원, 광장, 그 밖에 이와 비슷한 것으로서 피난 및 소화를 위하여 해당 대지의 출입에 지장이 없는 것을 말한다. 이하 이 조에서 같다)로 통하는 통로를 다음 각 호의 기준에 따라 설치하여야 한다. <개정 2010.12.13, 2015.9.22, 2016.5.17, 2017.2.3>





Check(EDBA_41_1){

    KS

}







KS{



   Door  myDoor {
getObjectProperty(Door.functionType) = "Main"
   }

   Stair myStair{
isAccessible(Stair, Ground) = TRUE
isObjectProperty(Stair.isEscape) = TRUE

       OR isObjectProperty(Stair.isSpecialEscape) = TRUE



   }

   Passage  myPassage{

       isGoThrough(myStair, Road, Passage)=True

       OR isGoThrough(myStair, OpenSpace, Passage )=True

   }



   isExist(myDoor)=True

   isExist(myPassage)=True

   getResult(EDBA_41_1_1)=True

   getResult(EDBA_41_1_2)=True

   getResult(EDBA_41_1_3)=True

} 








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

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

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

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

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

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

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

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

        stairs = base_storey.SELECT('direct stair')

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

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

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





Modify
47
36574 건축법 시행령 제 34조 2 항 3호

3. 공동주택(층당 4세대 이하인 것은 제외한다) 또는 업무시설 중 오피스텔의 용도로 쓰는 층으로서 그 층의 해당 용도로 쓰는 거실의 바닥면적의 합계가 300제곱미터 이상인 것





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

Check(EDBA_34_2_3){



	Floor myFloor{

		 getFloorUsage()= “MultiUnitHouse”

		getObjectProperty(Floor.numberOfHousehold)>=4 



		OR getFloorUsage() = “BusinessFacility.Officetel”

	}	



				getTotalFloorArea(myFloor.Room)>=300 m2



} 




Python Code 변환 예정



Modify
48
36579 건축법 시행령 제 35조 1 항 1호

1. 5층 이상인 층의 바닥면적의 합계가 200제곱미터 이하인 경우





//건축법 시행령 35조(피난계단의 설치) 1항1호

Check(EDBA_35_1_1){
	KS
}



KS { 
	Floor myFloor { 
	getObjectProperty(Floor.number) >= 5 
	} 

	getTotalFloorArea(myFloor) <= 200m2 

} 








min_floor_area = 200
min_floor_area_label = "Minimum total floor area"

def Check():
    num = 0
    for storey in SELECT('storey'):
        if num >= 5:
            area_sum = 0
            for space in storey.SELECT('space'):      
                area_sum += space.SELECT('area').UNIT('m2').NUMBER() 
            if area_sum >= min_floor_area:
                storey.SUCCESS("Total floor area:"+ str(area_sum)  + 'm2')
            else:
                storey.FAIL("Total floor area:"+ str(area_sum) + 'm2')
        num += 1 





Modify
49
36606 건축법 시행령 제 44조

제44조 (피난 규정의 적용례) 건축물이 창문, 출입구, 그 밖의 개구부(開口部)(이하 "창문등"이라 한다)가 없는 내화구조의 바닥 또는 벽으로 구획되어 있는 경우에는 그 구획된 각 부분을 각각 별개의 건축물로 보아 제34조부터 제41조까지를 적용한다.





//건축법 시행령 44조 (피난 규정의 적용례)



Check(EDBA_44){

   IF CS THEN KS

}



CS{

   Door myDoor{

      isObjectProperty(Door.isEntrance)=True

   }



   Object  myElement {

        getObject(Window)

        getObject(Opening)

        getObject(myDoor)

   }

   

   FloorSlab myFloorSlab{



        getObjectProperty(FloorSlab.isFireResistantStructure)=True

   }



     Wall myWall{

        getObjectProperty(FloorSlab.isFireResistantStructure)=True

        hasObject(Wall, myElement) =False

   }



   isFirePartition(Building, myFloorSlab)=True

   OR  isFirePartition(Building, myWall)=True

   



}



KS{

   getResult(EDBA_34)=True

   getResult(EDBA_35)=True

   getResult(EDBA_36)=True

   getResult(EDBA_37)=True

   getResult(EDBA_38)=True

   getResult(EDBA_39)=True

   getResult(EDBA_40)=True

   getResult(EDBA_41)=True

} 




Python Code 변환 예정



Modify
50
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
51
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
52
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
53
36872 건축법 시행령 제 119조 1 항 7호

7. 반자높이: 방의 바닥면으로부터 반자까지의 높이로 한다. 다만, 한 방에서 반자높이가 다른 부분이 있는 경우에는 그 각 부분의 반자면적에 따라 가중평균한 높이로 한다.





//

check() {

getobjectproperty(CeilingCovering.height)

} 








def Check():
    for building in SELECT('building'):
        for space in building.SELECT('space'):
            dist = space.SELECT('ceiling height')
            height = dist.UNIT('m').NUMBER()
            return height 





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





Modify
55
37355 건축법 시행령 제 34조 2 항 2호

2. 단독주택 중 다중주택·다가구주택, 제2종 근린생활시설 중 학원·독서실, 판매시설, 운수시설(여객용 시설만 해당한다), 의료시설(입원실이 없는 치과병원은 제외한다), 교육연구시설 중 학원, 노유자시설 중 아동 관련 시설·노인복지시설, 수련시설 중 유스호스텔, 숙박시설 또는 장례식장의 용도로 쓰는 3층 이상의 층으로서 그 층의 해당 용도로 쓰는 거실의 바닥면적의 합계가 200제곱미터 이상인 것





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

Check(EDBA_34_2_2){



        Building myBuilding{

              getBuildingUsage()="DentalClinic"

        }


Space mySpace{
getSpaceUsage() = "Ward"
}
	Floor myFloor1 {

		getObjectProperty(Floor.number)>=3

                getObjectUsage(Floor)  = “DetachedHouse.MultiUserHouse”

		OR getObjectUsage(Floor)  = “DetachedHouse.MultiFamilyHouse”

		OR getObjectUsage(Floor)  = “ClassIINeighborhoodLivingFacility.EducationalInstitute”

		OR getObjectUsage(Floor)  = “ClassIINeighborhoodLivingFacility.ReadingRooms” 

                OR getObjectUsage(Floor)  = “CommercialFacility”

                OR getObjectUsage(Floor)  = “TransportationFacility.PassengerTrafficFacilities”

                OR ( getObjectUsage(Floor)  = “MedicalFacility” ADN hasObject(myBuilding, mySpace)=TRUE )

                OR getObjectUsage(Floor)  = “EducationAndResearchFacility.EducationalInstitutes” 

		OR getObjectUsage(Floor)  = “FacilitiesForTheAgedAndChildren.ChildrenRelatedFacilities” 

		OR getObjectUsage(Floor)  = “EducationAndResearchFacility.WelfareFacilityForTheAged” 

		OR getObjectUsage(Floor)  = “Trainingfacility.YouthHostel” 

		OR getObjectUsage(Floor)  = “LodgingFacility”

                

	}



	Floor myFloor2{

		 getObjectUsage(Floor)  = “ClassIINeighborhoodLivingFacility.FacilityForProvidingInternetComputerGameService”

		}



           getTotalFloorArea(myFloor1.Room)>= 200 m2

          OR getTotalFloorArea(myFloor2.Room)>= 300 m2	

} 




Python Code 변환 예정



Modify
56
37385 건축법 시행령 제 51조 3 항

③ 법 제49조제2항에 따라 오피스텔에 거실 바닥으로부터 높이 1.2미터 이하 부분에 여닫을 수 있는 창문을 설치하는 경우에는 국토해양부령으로 정하는 기준에 따라 추락방지를 위한 안전시설을 설치하여야 한다. <신설 2009.7.16>





// 건축법 시행령 51조 (거실의 채광 등) 3항

check(EDBA_51_3){

	IF CS THEN KS

}



CS{

Window myWindow{
getObjectProperty(Window.panelOperationType) = "SwingingWindow"
}
	getBuildingUsage() = "Officetels.Room"

	getElementHeight(myWindow) <= 1.2 m

}



KS{

	isExist(FallPreventionSafetyFacility) = TRUE

	getResult(REFB_17_4) = TRUE

} 








min_win_h = 1.2
min_rail_h = 1.2
min_win_h_label = '기준 창문 높이'
min_rail_h_label = '최소 난간 높이'

def Check():
    for building in SELECT('building'):
        bldg_use = building.SELECT('building type').STRING()
        sub_use = building.SELECT('prop', '세부용도').STRING()
        if not (bldg_use == '업무시설' and sub_use == '오피스텔'):
            continue
        for space in building.SELECT('space'):
            for win in space.SELECT('window'):
                if win.SELECT('lower edge height').UNIT('m').NUMBER() > min_win_h:
                    continue
                for railing in win.SELECT('railing'):
                    height = railing.SELECT('height').UNIT('m')
                    h = height.NUMBER()
                    if h < min_rail_h:
                        height.ERROR('난간 높이: ' + str(h) + 'm(< ' + str(min_rail_h) + 'm)')
                    else:
                        height.SUCCESS('난간 높이: ' + str(h) + 'm(>= ' + str(min_rail_h) + 'm)')

                    return

                win.ERROR('난간이 존재하지 않습니다.') 





Modify
57
71634 건축법 시행령 제 81조 3 항 1호

1. 주요구조부가 내화구조일 것





//  건축법 시행령 81조 (맞벽건축 및 연결복도) 3항 1호
Check(EDBA_81_3_1){
	KS
}

KS{
	getObjectProperty(MainStructuralPart.isFireResistantStructure) = TRUE
} 




Python Code 변환 예정



Modify
58
71635 건축법 시행령 제 81조 3 항 2호

2. 마감재료가 불연재료일 것





//  건축법 시행령 81조 (맞벽건축 및 연결복도) 3항 2호
Check(EDBA_81_3_2){
	KS
}

KS{
	getObjectProperty(Wall.Finish.Material.nonCombustibility) = TRUE
} 




Python Code 변환 예정



Modify
59
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
60
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
61
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
62
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
63
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
64
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
65
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
66
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
67
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
68
40922 국토의 계획 및 이용에 관한 법률 제 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 변환 예정



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

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





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

Check(LPUA_77_3_4){
      KS
}


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




Python Code 변환 예정



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

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





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

Check(LPUA_J77_3_5){
      KS
}

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




Python Code 변환 예정



Modify
71
40925 국토의 계획 및 이용에 관한 법률 제 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 변환 예정



Modify
72
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
73
43020 국토의 계획 및 이용에 관한 법률 제 77조 3 항 1호

1. 제37조제1항제6호에 따른 취락지구





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

KS{
	getResult(LPUA_37_1_8) = TRUE
	getObjectProperty(SpecialPurposeDistrict.type) = "SettlementDistrict"
} 




Python Code 변환 예정



Modify
74
43021 국토의 계획 및 이용에 관한 법률 제 77조 3 항 2호

2. 제37조제1항제7호에 따른 개발진흥지구(도시지역 외의 지역 또는 대통령령으로 정하는 용도지역만 해당한다)





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

KS{
	getResult(LPUA_37_1_9) = TRUE
	getObjectProperty(SpecialPurposeDistrict.type) = "DevelopmentPromotionDistrict"
	getObjectProperty(SpecialPurposeArea.type) != "UrbanArea"
} 




Python Code 변환 예정



Modify
75
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
76
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
77
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
78
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
79
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
80
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
81
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
82
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
83
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
84
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
85
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
86
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
87
72005 국토의 계획 및 이용에 관한 법률 제 77조 1 항 1호

1. 도시지역





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

KS{
	getObjectProperty(SpecialPurposeArea.type) = "UrbanArea"
} 




Python Code 변환 예정



Modify
88
72006 국토의 계획 및 이용에 관한 법률 제 77조 1 항 2호

2. 관리지역





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

KS{
	getObjectProperty(SpecialPurposeArea.type) = "ControlArea"
} 




Python Code 변환 예정



Modify
89
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
90
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
91
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
92
47737 국토의 계획 및 이용에 관한 법률 시행령 제 84조 8 항

⑧ 제1항에도 불구하고 자연녹지지역에 설치되는 도시·군계획시설 중 유원지의 건폐율은 30퍼센트의 범위에서 도시·군계획조례로 정하는 비율을 초과하여서는 아니 되며, 공원의 건폐율은 20퍼센트의 범위에서 도시·군계획조례로 정하는 비율을 초과하여서는 아니 된다. <개정 2009.7.7, 2011.9.16, 2012.4.10>





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

Check(EDLPUA_84_8){
	KS
}

KS{
      IF getObjectProperty(GreenNaturalArea.UrbanAndGunPlanningFacility.type)="AmusementPark"
      
      	THEN   getBuildingToLandRatio() <30 
                	          getResult(Unimplemented_UPMO)
     
      ELSE IF getObjectProperty(GreenNaturalArea.UrbanAndGunPlanningFacility.type)="Park"

     	THEN    getBuildingToLandRatio() <30 
                 	           getResult(Unimplemented_UPMO)
      
      END IF
     
} 
 




Python Code 변환 예정



Modify
93
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
94
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
95
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
96
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
97
72060 국토의 계획 및 이용에 관한 법률 시행령 제 84조 4 항 6호

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





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

Check(EDLPUA_84_3_6){
      IF CS THEN KS
}

CS{
   getObjectProperty(IndustrialComplex.type)="NationalIndustrialComplex"
   OR getObjectProperty(IndustrialComplex.type)="GeneralIndustrialComplex"
   OR getObjectProperty(IndustrialComplex.type)="UrbanHighTechIndustrialComplex"
   OR getObjectProperty(IndustrialComplex.type)="Semi-IndustrialComplex"
}

KS{
    getBuildingToLandRatio()<=70%
} 




Python Code 변환 예정



Modify
98
72067 국토의 계획 및 이용에 관한 법률 시행령 제 85조 6 항 4호

4. 「산업입지 및 개발에 관한 법률」 제2조제8호라목에 따른 농공단지(도시지역외의 지역에 지정된 농공단지에 한한다) : 150퍼센트 이하





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

CS{
	getObjectProperty(IndustrialComplex.type) = "AgriculturalIndustrialComplex"
}

KS{
	getFloorAreaRatio() <= 150%
}
 




Python Code 변환 예정



Modify
99
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
100
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
  ◁prev 1   2   3   4   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.