개방형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   3   4   next▷  
1 / 4 page Total 2500 / 4000 records    신규입력
Select
ALL
None
#
ID
Law
Jo
JO Name
HANG
HO
MOK
Text
Search!
1
11021 건축물의 구조기준 등에 관한 규칙 제 32조 2 항

②조적식구조인 내력벽의 두께는 그 건축물의 층수·높이 및 벽의 길이에 따라 각각 다음 표의 두께 이상으로 하되, 조적재가 벽돌인 경우에는 당해 벽높이의 20분의 1이상, 블록인 경우에는 당해 벽높이의 16분의 1이상으로 하여야 한다. ┌───────┬─────────────┬─────────────┬─────────────┐ │건축물의 높이 │5미터 미만 │5미터 이상 11미터 미만





//건축물의 구조기준 등에 관한 규칙 32조 (내력벽의 두께) 2항



Check(RSSB_32_2){

        getResult(RSSB_32_7) = TRUE AND getResult(RSSB_32_3) = TRUE AND getResult(RSSB_28_1) = TRUE AND getResult(RSSB_3_3) = TRUE AND IF CS THEN  KS

}

CS {

   getResult(RSSB_33_3)=True

}





KS{

     //HW means Height of wall

Wall myWall{
isObjectProperty(Wall.isLoadBearingWall) = TRUE
}
       HW=getObjectHeight(myWall)



     IF isObjectProperty(Wall.Structure.isMansoryStructure)=TRUE

 

    

         IF getBuildingHeight()<5 m

            IF getFloorNumber(myWall)=1

                 IF getObjectLength(myWall)<8 m

                     THEN getObjectThickness(myWall)>= 150 mm

                 ELSE THEN  getObjectThickness(myWall)>= 190 mm   

                 END IF 

            END IF 



         ELSE IF  getBuildingHeight()>=5 m  

                  getBuildingHeight()<11 m

                  getFloorNumber(myWall)=1

                  OR getFloorNumber(myWall)=2

             THEN getObjectThickness(myWall)>= 190 mm

         



         ELSE IF  getBuildingHeight()>=11 m  

                  IF getObjectLength(myWall)<8 m

                      getFloorNumber(myWall)=1

                      OR getFloorNumber(myWall)=2

                             THEN getObjectThickness(myWall)>=190 mm

                  ELSE IF getFloorNumber(myWall)=1

                               THEN getObjectThickness(myWall)>=290 mm

                  ELSE IF  getFloorNumber(myWall)=2

                               THEN getObjectThickness(myWall)>=190 mm

                  END IF          

        END IF





             IF getObjectMaterial(myWall)="벽돌"

                  THEN getObjectThickness(myWall)>= HW/20



             ELSE IF getObjectMaterial(myWall)="Block"

                  THEN getObjectThickness(myWall)>= HW/16

              

             END IF







    END IF 

} 




Python Code 변환 예정



Modify
2
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
3
20059 건축물의 구조기준 등에 관한 규칙 제 34조

제34조(테두리보) 건축물의 각층의 조적식구조인 내력벽 위에는 그 춤이 벽두께의 1.5배 이상인 철골구조 또는 철근콘크리트구조의 테두리보를 설치하여야 한다. 다만, 1층인 건축물로서 벽두께가 벽의 높이의 16분의 1이상이거나 벽길이가 5미터 이하인 경우에는 목조의 테두리보를 설치할 수 있다.





//건축물의 구조기준 등에 관한 규칙 34조 (테두리보)



Check(RSSB_34){

     getResult(RSSB_28_1) = TRUE AND getResult(RSSB_3_3) = TRUE AND IF CS THEN  KS

}



CS{

    Wall myWall{

      isObjectProperty(Wall.isLoadBearingWall)=True

    }



    isObjectProperty(myWall.Structure.isMansoryStructure)= True

}

   



KS{

  

    WD=getObjectProperty(myWall.depth)

    WH=getObjectProperty(myWall.height)

    WallGirder  myWallGirder{   

      getObjectProperty(WallGirder.height)>=1.5*WD

    }

   

    isInstalled(myWallGrider, myWall, Top)=True







   IF getBuildingStoriesCount()=1

     (WD>=WH/16

      OR getObjectProperty(myWall.length)<=5 m

      )

   THEN getObjectProperty(myWallGrider.Structure.materialType)="Timber"

   

   ELSE THEN   getObjectProperty(myWallGrider.Structure.materialType)="SteelFrame"

OR getObjectProperty(myWallGrider.Structure.materialType)="ReinforcedConcrete"



   END IF

} 




Python Code 변환 예정



Modify
4
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
5
20071 건축물의 구조기준 등에 관한 규칙 제 41조 2 항

②높이 4미터 이하이고, 연면적 20제곱미터 이하인 건축물에 대하여는 제42조 및 제45조의 규정에 한하여 이를 적용한다.





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

Check(RSSB_41_2){
     getResult(RSSB_41_1) = TRUE AND getResult(RSSB_3_3) = TRUE AND IF CS THEN KS 
}

CS{
    getBuildingHeight()<=4 m
    getGrossFloorArea() <=20 m2  
}

KS{

   getResult(RSSB_42)=True
   getResult(RSSB_45)=True
} 




Python Code 변환 예정



Modify
6
20082 건축물의 구조기준 등에 관한 규칙 제 47조 2 항

②높이가 4미터 이하이고 연면적이 30제곱미터 이하인 건축물이나 높이가 3미터 이하인 담에 대하여는 제49조 및 제51조의 규정에 한하여 이를 적용한다.





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



Check(RSSB_47_2){

     getResult(RSSB_3_3) = TRUE AND IF CS THEN KS 

}



CS{

    getBuildingHeight()<=4 m

    getGrossFloorArea() <=30 m2  



    OR getObjectHeight(Fence)<= 3m

}



KS{



   getResult(RSSB_51)=True

} 




Python Code 변환 예정



Modify
7
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
8
24866 건축물의 구조기준 등에 관한 규칙 제 9조의3조 2 항

② 주요구조부가 비보강조적조인 건축물은 지붕높이 15미터 이하, 처마높이 11미터 이하 및 3층 이하로 하여야 한다.





//건축물의 구조기준 등에 관한 규칙 9조의3 (건축물의 규모제한) 2항
Check(RSSB_9-3_2){
        IF CS THEN KS
}
CS{
	isObjectProperty(MainStructuralPart.Structure.isUnreinforcedMansoryStructure) = TRUE
}
KS{
	getObjectVerticalDistance(FloorSlab, Roof) <= 15m
	getObjectVerticalDistance(FloorSlab, Eave) <= 11m	
	getBuildingStoriesCount() <= 3
} 




Python Code 변환 예정



Modify
9
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
10
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
11
24893 건축물의 구조기준 등에 관한 규칙 제 28조 2 항

②높이 4미터 이하이고 연면적 20제곱미터 이하인 건축물에 대하여는 제29조·제30조·제35조·제36조·제38조 및 제40조의 규정에 한하여 이를 적용한다.





//건축물의 구조기준 등에 관한 규칙 28조 (적용범위 등) 2항
Check(RSSB_28_2){
	getResult(RSSB_28_1) = TRUE AND getResult(RSSB_3_3) = TRUE AND KS
}
KS{
	getBuildingHeight() <= 4m
	getGrossFloorArea() <= 20m2
} 




Python Code 변환 예정



Modify
12
19375 건축물의 설비기준 등에 관한 규칙 제 9조 2호

2. 높이 31미터를 넘는 각층의 바닥면적의 합계가 500제곱미터 이하인 건축물





//건축물의 설비기준 등에 관한 규칙 9조 (비상용승강기를 설치하지 아니할 수 있는 건축물) 2호

Check(RFB_9_0_2){

   KS

}



KS{

    getBuildingHeight()>31 m

    getTotalFloorArea()<=500 m2

} 








def Check():
    bld = SELECT("building")
    bldHeight = bld.SELECT("height").UNIT("m").NUMBER()
    totalFloorArea = getTotalFloorArea()
    if bldHeight > 31 and totalFloorArea <=500:
        bld.SUCCESS("pass")
    else:
        bld.ERROR("error")
 

def getTotalFloorArea():
    totalArea = 0
    floors = SELECT("storey")
    for floor in floors:
        floorArea = floor.SELECT("area").UNIT('m2').NUMBER()
        totalArea += floorArea
    return totalArea 





Modify
13
19376 건축물의 설비기준 등에 관한 규칙 제 9조 3호

3. 높이 31미터를 넘는 층수가 4개층이하로서 당해 각층의 바닥면적의 합계 200제곱미터(벽 및 반자가 실내에 접하는 부분의 마감을 불연재료로 한 경우에는 500제곱미터)이내마다 방화구획으로 구획한 건축물





//건축물의 설비기준 등에 관한 규칙 9조 (비상용승강기를 설치하지 아니할 수 있는 건축물) 3호

Check(RFB_9_0_3){

    KS

}



KS{

    getBuildingHeight()>31 m

    getBuildingStoriesCount()<=4

    IF isObjectProperty(Wall.InteriorFinish.Material.nonCombustibility)=TRUE

       isObjectProperty(CeilingCovering.InteriorFinish.Material.nonCombustibility)=TRUE

    THEN isFirePartition(Floor, a,500)=TRUE 

    ELSE THEN isFirePartition(Floor, a,200)=TRUE 

    END IF

} 




Python Code 변환 예정



Modify
14
19387 건축물의 설비기준 등에 관한 규칙 제 13조 1 항

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





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

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

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




Python Code 변환 예정



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

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





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

Check(RFB_13_1_6){

	IF CS THEN KS

}



CS{

	getBuildingUsage() = "Officetel"

}



KS{

	Wall myWall{

		isObjectProperty(Wall.isfireResistantStructure)

	}



	FloorSlab myFloorSlab{

		isObjectProperty(FloorSlab.isFireResistantStructure) = TRUE

	}



	Door myDoor{

		isObjectProperty(Door.isStrictFireproofDoor) = TRUE

	}


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

	OR isPartitioned(myZone, myFloorSlab) = TRUE

	OR isPartitioned(myZone, myDoor) = TRUE

} 




Python Code 변환 예정



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

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





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

Check(RFB_13_2){

	IF CS THEN KS

}



CS{

	getBuildingUsage() = "Officetel"

}



KS{

	Wall myWall{

		isObjectProperty(Wall.isfireResistantStructure)

	}



	FloorSlab myFloorSlab{

		isObjectProperty(FloorSlab.isFireResistantStructure) = TRUE

	}



	Door myDoor{

		isObjectProperty(Door.isStrictFireproofDoor) = TRUE

	}


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

	OR isPartitioned(myZone, myFloorSlab) = TRUE

	OR isPartitioned(myZone, myDoor) = TRUE

} 




Python Code 변환 예정



Modify
17
19403 건축물의 설비기준 등에 관한 규칙 제 20조 5호

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





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

Check(RFB_20_0_5){

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

}

CS1{

	getBuildingHeight() > 60m

}

KS1{

	BH1 = getBuildingHeight()

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

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

	getObjectVerticalDistance(Ground, Terminal, a) < BH1

}

CS2{

	getBuildingHeight() > 150m

}

KS2{

	BH2 = getBuildingHeight()

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

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

	getObjectVerticalDistance(Ground, Terminal, a) < BH2

} 




Python Code 변환 예정



Modify
18
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
19
25135 건축물의 설비기준 등에 관한 규칙 제 14조 1 항 2호

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





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

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

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

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

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

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

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




Python Code 변환 예정



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

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





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

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

KS{
	getResult(RFB_23_3_1)
} 




Python Code 변환 예정



Modify
21
72659 건축물의 에너지절약설계기준 제 5조 10호 나 목

나. "효율”이라 함은 설비기기에 공급된 에너지에 대하여 출력된 유효에너지의 비를 말한다.





//	비상경보설비의 화재안전기준 (nfsc 201) 4조 (비상벨설비 또는 자동식사이렌설비) 2항



Check(NFSC201_4_2){

    KS

}



KS{

	Floor myFloor{

		hasSpace(Floor, SpecificFireFightingBuilding) = TRUE

	}

AcousticSystem myAcousticSystem{
isObjectProperty(AcousticSystem.isForPublic) = TRUE
}

	isInstalled(myAcousticSystem, myFloor) = TRUE

	(getObjectDistance(myAcousticSystem, Wall.Structure.) <= 25m 




Python Code 변환 예정



Modify
22
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
23
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
24
72667 건축물의 에너지절약설계기준 제 5조 10호 차 목

차. "이코노마이저시스템”이라 함은 중간기 또는 동계에 발생하는 냉방부하를 실내 엔탈피 보다 낮은 도입 외기에 의하여 제거 또는 감소시키는 시스템을 말한다.





//	비상콘센트설비의 화재안전기준(nfsc 504) 4조 (전원 및 콘센트 등) 1항 2호

Check(NFSC504_4_1_2){

	IF CS THEN KS

}



	Floor myFloor{

		getFloorNumber < 0

		hasSpace(Floor, SpecificFireFightingBuilding) = TRUE

	}



	Floor myFloor2{

		getFloorNumber >= 0

		hasSpace(Floor, SpecificFireFightingBuilding) = TRUE

	}



CS{

	(getBuildingStoriesCount() >= 7

	getGrossFloorArea(myFloor2) >= 2000m2)

	OR getTotalFloorArea(myFloor) >= 3000m2

}



KS{

	isInstalled(EmergencyPower, EmergencyPowerOutletSystem) = TRUE

	getObjectProperty(EmergencyPowerReceivingSystem.type) = "InhousePowerGenerationSystem"

	OR getObjectProperty(EmergencyPowerReceivingSystem.type) = "EmergencyPowerReceivingSystem"

} 




Python Code 변환 예정



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

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





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

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

	Floor myFloor{
		getFloorArea(Floor) < 1000m2
	}

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

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

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

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

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

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

	isExist(myFloor) = TRUE
}

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

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




Python Code 변환 예정



Modify
26
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
27
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
28
72731 건축물의 에너지절약설계기준 제 6조 1호 바 목

바. 바닥난방을 하는 공간의 하부가 바닥난방을 하지 않는 공간일 경우에는 당해 바닥난방을 하는 바닥부위는 별표1의 최하층에 있는 거실의 바닥으로 보며 외기에 간접 면하는 경우의 열관류율 기준을 만족하여야 한다.





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

Check(NFSC103_9_3_5){
	IF (!CS1 AND CS2) THEN KS
}
CS1{
	isInstalled(Transmitter, Building) = TRUE
	isObjectProperty(Transmitter.systemType) = "자동화재탐지설비"
}
CS2{
	isInstalled(Transmitter, FireDetector.Circuit) = TRUE
}
KS{
	getResult(NFSC103_9_3_5_가) = TRUE
	getResult(NFSC103_9_3_5_나) = TRUE
} 




Python Code 변환 예정



Modify
29
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
30
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
31
72739 건축물의 에너지절약설계기준 제 6조 4호 나 2) 목

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





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

check(NFSC103_10_3_3){

	IF (CS) THEN KS ENDIF

}



CS{

	getBuildingUsage() = "MultiUnitHouse"

}



KS{

	Space mySpace = getObject(Room)

			

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

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

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

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

} 




Python Code 변환 예정



Modify
32
72757 건축물의 에너지절약설계기준 제 7조 2호

2. 평면계획





//스프링클러설비의 화재안전기준 10조 (헤드) 8항
check(NFSC103_10_8){
	(IF !(CS1) THEN KS1) or (IF CS1 THEN KS2)
}

KS1{
	Beam myBeam{
		hasObject(SpecificFireFightingBuilding, Beam) = TRUE
	}

	getElementDistance(myBeam, SprinklerHead, 1) = TRUE

	//Table

	getElementDistance(SprinklerHead.Deflector, Beam, a) + getObjectWidth(SprinklerHead.Deflector)*0.5 = SBD
	getObjectVerticalDistance(SprinklerHead.Deflector, Beam.BottomSurface, a) = SHD

	IF SBD < 0.75 m 
	THEN SHD < getObjectHeight(Beam.BottomSurface)

	IF 0.75 m <= SBD < 1 m 
	THEN SHD < 0.1 m

	IF 1 m <= SBD < 1.5 m
	THEN SHD < 0.15 m

	IF SBD >= 1.5 m 
	THEN SHD < 0.3 m 
}

CS1{
	getObjectDistance(Ceiling.Surface, Beam.BottomSurface) > 55 cm
	getObjectDistance(Beam.BottomSideSurface, SprinklerHead) = OD
	OD <= getElementDistance(SprinklerHead, c)*0.5
}

KS2{
	getObjectDistance(SprinklerHead, SprinklerHead.AttachingToSurface) <= 55 cm
} 




Python Code 변환 예정



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

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





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

Check(NFSC103_12_2){

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

}



CS1{

	Tank myTank{

		getObjectProperty(Tank) = "PressurizedTank"

	}



	isInstalled(myTank) = TRUE

}



CS2{

	getBuildingUsage() = "Garage"

	OR getBuildingUsage() = "ParkingLot"



	ParkingLot myParkingLot{

		getResult(Unimplemented_NFSC105_13_2_2) = TRUE

		getSpace(ParkingLot)

	}



	Floor myFloor{

		isInstalled(SprinklerSystem, Floor) = TRUE

	}



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

}



KS1{

	EmergencyPower myEmergencyPower{

		getObjectProperty(EmergencyPower.systemType) = "InhousePowerGenerationSystem"

		OR getObjectProperty(EmergencyPower.systemType) = "StorageBatterySystem"

	}

	isInstalled(myEmergencyPower, SprinklerSystem) = TRUE

}



KS2{

	EmergencyPower myEmergencyPower{

		getObjectProperty(EmergencyPower.systemType) = "InhousePowerGenerationSystem"

		OR getObjectProperty(EmergencyPower.systemType) = "StorageBatterySystem"

		OR getObjectProperty(EmergencyPower.systemType) = "EmergencyPowerReceivingSystem"

	}

	isInstalled(myEmergencyPower, SprinklerSystem) = TRUE

} 




Python Code 변환 예정



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

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





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

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




Python Code 변환 예정



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

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





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

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




Python Code 변환 예정



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

5. 자연채광계획





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

Check(NFSC103_15_1_3){

	KS

}



KS{

	getBuildingUsage() = "GeneratorRoom"

	OR getBuildingUsage() = "TransformerRoom"

	OR isInstalled(
Transformer, Room) = TRUE

} 




Python Code 변환 예정



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

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





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

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




Python Code 변환 예정



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

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





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

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




Python Code 변환 예정



Modify
39
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
40
72784 건축물의 에너지절약설계기준 제 8조 2호

2. 열원 및 반송설비





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

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




Python Code 변환 예정



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

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





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

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




Python Code 변환 예정



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

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





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

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




Python Code 변환 예정



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

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





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

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

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

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

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

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




Python Code 변환 예정



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

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





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

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




Python Code 변환 예정



Modify
45
72815 건축물의 에너지절약설계기준 제 10조 1호 가 목

가. 변압기를 신설 또는 교체하는 경우에는 제5조제11호가목에 따른 고효율변압기를 설치하여야 한다.





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

Check(NFSC503A_5_7){
	IF CS THEN KS
}
CS{
	SpecificFireFightingBuilding mySpecificFireFightingBuilding{
	getResult(_*_5_1_마_1)) = TRUE
	getResult(_*_5_1_마_6)) = TRUE
	getResult(_*_5_1_마_7)) = TRUE
	}
}
KS{
	SimpleSprinklerSystem mySimpleSprinklerSystem{
		isObjectProperty(SimpleSprinklerSystem.isDirectCoupledType) != TRUE
		isObjectProperty(SimpleSprinklerSystem.isCabinetType) != TRUE
	}

	isInstalled(PressurizedWaterSupplySystem, mySpecificFireFightingBuilding) = TRUE
	isInstalled(mySimpleSprinklerSystem, mySpecificFireFightingBuilding) != TRUE
}
	 




Python Code 변환 예정



Modify
46
72821 건축물의 에너지절약설계기준 제 10조 3호 나 목

나. 안정기는 해당 형광램프 전용안정기를 사용하여야 한다.





//	간이스프링클러설비의 화재안전기준(nfsc 103a) 6조 (간이스프링클러설비의 방호구역·유수검지장치)
Check(NFSC503A_6){
	IF CS THEN KS
}

	ParkingLot myParkingLot{
		hasSpace(SpecificFireFightingBuilding, ParkingLot) = TRUE
	}

CS{
	isInstalled(SimpleSprinklerSystem, SpecificFireFightingBuilding) = TRUE
}

KS{
	getObjectProperty(SprinklerSystem.type) != "WetPipeSprinklerSystem"
} 




Python Code 변환 예정



Modify
47
72872 건축물의 에너지절약설계기준 제 20조 1 항

제20조(이행여부 확인) ① 인증취득을 통해 완화기준을 적용받은 경우에는 본인증서를 제출하는 것으로 이행한 것으로 본다.





// 간이스프링클러설비의 화재안전기준(nfsc 103a) 9조 (간이헤드) 



Check(NFSC503A_9){

	IF CS THEN KS

}

CS{

	isInstalled(SimpleSprinkler.Head, Building) = TRUE

}

KS{

	getResult(NFSC503A_9_1) = TRUE

	getResult(NFSC503A_9_3) = TRUE

	getResult(NFSC503A_9_4) = TRUE

	getResult(NFSC503A_9_6) = TRUE

	getResult(NFSC503A_9_8) = TRUE

	getResult(NFSC503A_9_9) = TRUE

} 




Python Code 변환 예정



Modify
48
72876 건축물의 에너지절약설계기준 제 23조 1 항

제23조(복합용도 건축물의 에너지절약계획서 및 설계 검토서 작성방법 등) ① 에너지절약계획서 및 설계 검토서를 제출하여야 하는 건축물 중 비주 거와 주거용도가 복합되는 건축물의 경우에는 해당 용도별로 에너지절 약계획서 및 설계 검토서를 제출하여야 한다.





/ 간이스프링클러설비의 화재안전기준(nfsc 103a) 9조 (간이헤드) 6호



Check(NFSC503A_9_0_6){

	IF !CS THEN KS

}

CS{

	DBSH = getObjectDistance(Head.One, Head.One)

	getObjectdistance(Ceiling.Surface, Beam.BottomSurface) > 55cm

	getObjectdistance(Beam.BottomSideSurface, SimpleSprinkler.Head) <= DBSH/2

}

KS{

Beam myBeam{
isInstalled(Beam, SpecificFireFightingBuilding) = TRUE
}
	DCH = getObjectInterval(Head, myBeam)

	Head myHead{

	getObjectDistance(Head, myBeam) = DCH

	}

	

	IF getElementDistance(myHead.Deflector.Center, Beam) < 0.75m THEN getObjectVerticalLocation(myHead.Deflector, Beam.BottomSurface) < 0



	ELSE IF getElementDistance(myHead.Deflector.Center, Beam) >= 0.75m 

	OR getElementDistance(myHead.Deflector.Center, Beam) < 1m THEN getObjectVerticalLocation(myHead.Deflector, Beam.BottomSurface) < 0 

	getElementDistance(myHead.Deflector, Beam.BottomSurface) < 0.1m



	ELSE IF getElementDistance(myHead.Deflector.Center, Beam) >= 1m 

	OR getElementDistance(myHead.Deflector.Center, Beam) < 1.5m THEN getObjectVerticalLocation(myHead.Deflector, Beam.BottomSurface) < 0 

	getElementDistance(myHead.Deflector, Beam.BottomSurface) < 0.15m



	ELSE IF getElementDistance(myHead.Deflector.Center, Beam) >= 1.5m 

	THEN getObjectVerticalLocation(myHead.Deflector, Beam.BottomSurface) < 0 

	getElementDistance(myHead.Deflector, Beam.BottomSurface) < 0.3m

} 




Python Code 변환 예정



Modify
49
72877 건축물의 에너지절약설계기준 제 23조 2 항

② 다수의 동이 있는 경우에는 동별로 에너지절약계획서 및 설계 검토서를 제출하는 것을 원칙으로 한다.(다만, 공동주택의 주거용도는 하나의 단지로 작성)





// 간이스프링클러설비의 화재안전기준(nfsc 103a) 9조 (간이헤드) 8호

Check(NFSC503A_9_0_8){
	IF CS THEN KS
}
CS{
	isInstalled(SimpleSprinklerSystem, SpecificFireFightingBuilding) = TRUE

}
KS{
	getResult(NFSC503_15_1) = TRUE
} 




Python Code 변환 예정



Modify
50
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
51
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
52
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
53
72910 건축물의 에너지절약설계기준 제 서식3조

에너지절약계획 이행 검토서





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

	Sensor mySensor1{
	getObjectProperty(Sensor.type) = "Type1"
	}
	Sensor mySensor2{
	isObjectProperty(Sensor.type) = "Type2"
	}

IF 
{isFireResistantStructure(SpecificFireFightingBuilding) = TRUE)
AND 
{isInstalled(Sensor, FloorSlab) = TRUE
	getObjectVerticalDistance(FloorSlab, Sensor) < 8m
}
THEN
{(FA = 65
isInstalled(mySensor1, FloorSlab.Space, C, FA) = TRUE)
OR 
(FA = 36 
isInstalled(mySensor2, FloorSlab.Space, C, FA) = TRUE)

IF getObjectArea(Sensor.FloorSlab) <= FA
THEN getObjectCount(Sensor) = 1

ELSE IF getObjectArea(Sensor.FloorSlab) <= 2*FA
THEN getObjectCount(Sensor) >= 2
}

ELSE IF
{isFireResistantStructure(SpecificFireFightingBuilding) = TRUE)
AND 
{isInstalled(Sensor, FloorSlab) = TRUE
AND
getObjectVerticalDistance(FloorSlab, Sensor) >= 8m
AND
getObjectVerticalDistance(FloorSlab, Sensor) < 15m

THEN
{(FA = 50
isInstalled(mySensor1, FloorSlab.Space, C, FA) = TRUE)
OR 
(FA = 36 
isInstalled(mySensor2, FloorSlab.Space, C, FA) = TRUE)

IF getObjectArea(Sensor.FloorSlab) <= 2*FA
THEN getObjectCount(Sensor) >= 2
}

ELSE IF
{isFireResistantStructure(SpecificFireFightingBuilding) != TRUE)
AND 
{isInstalled(Sensor, FloorSlab) = TRUE
	getObjectVerticalLocation(FloorSlab, Sensor) < 8m
}
THEN
{(FA = 40
isInstalled(mySensor1, FloorSlab.Space, C, FA) = TRUE)
OR 
(FA = 23 
isInstalled(mySensor2, FloorSlab.Space, C, FA) = TRUE)

IF getObjectArea(Sensor.FloorSlab) <= FA
THEN getObjectCount(Sensor) = 1

ELSE IF getObjectArea(Sensor.FloorSlab) <= 2*FA
THEN getObjectCount(Sensor) >= 2
}

ELSE IF
{isFireResistantStructure(SpecificFireFightingBuilding) != TRUE)
AND 
getObjectVerticalDistance(FloorSlab, Sensor) >= 8m
AND
getObjectVerticalDistance(FloorSlab, Sensor) < 15m
}

THEN
{(FA = 30
isInstalled(mySensor1, FloorSlab.Space, C, FA) = TRUE)
OR 
(FA = 23 
isInstalled(mySensor2, FloorSlab.Space, C, FA) = TRUE)

IF getObjectArea(Sensor.FloorSlab) <= 2*FA
THEN getObjectCount(Sensor) >= 2
} 




Python Code 변환 예정



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

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





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

CS{
    getBuildingUsage() = "CulturalAndAssemblyFacility.PerformanceHall"

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

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








theater_code = '00000'
std_floor_area = 300


theater_code_label = '관람석 공간분류코드'
std_floor_area_label = '기준 바닥면적'

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

        bldg_use = building.SELECT('building type').STRING()
        sub_use = building.SELECT('prop', '세부용도').STRING()

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





Modify
55
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
56
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
57
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
58
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
59
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
60
25223 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 11조 5 항 1호

1. 제1종 근린생활시설 중 지역자치센터·파출소·지구대·소방서·우체국·방송국·보건소·공공도서관·지역건강보험조합 기타 이와 유사한 것으로서 동일한 건축물안에서 당해 용도에 쓰이는 바닥면적의 합계가 1천제곱미터 미만인 것





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

Check(REFB_11_5_1){
      

KS




}

KS {

Building myBuilding{

getBuildingUsage() = “ClassINeighborhoodLivingFacility.CommunityCenter”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.PoliceBox”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.PoliceSubstation”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.FireStation”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.PostOffice”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.BroadcastingStation”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.HealthCenter”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.PublicLibrary”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.RegionalHealthInsuranceAssociation”



}



Space mySpace{

Space.usage=“CommunityCenter”

Space.usage=“PoliceBox”

Space.usage=“PoliceSubstation”

Space.usage=“FireStation”

Space.usage=“PostOffice”

Space.usage=“BroadcastingStation”

Space.usage=“HealthCenter”

Space.usage=“PublicLibrary”

Space.usage=“RegionalHealthInsuranceAssociation”

Space.FloorSlab.area < 1000 m2

}

isExist(myBuilding) = TRUE

isExist(mySpace) = TRUE

} 




Python Code 변환 예정



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

2. 제1종 근린생활시설 중 마을회관·마을공동작업소·마을공동구판장·변전소·양수장·정수장·대피소·공중화장실 기타 이와 유사한 것





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

Check(REFB_11_5_2){
      

KS


}





KS {

Building myBuilding{

getBuildingUsage() = “ClassINeighborhoodLivingFacility.VillageHall”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.CommunityWorkspace”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.CommunitySalesShop”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.Substation”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.PumpingStation”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.PurificationPlant”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.Shelter”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.PublicLibrary”

OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.PublicToilet”



}



isExist(myBuilding) = TRUE

} 




Python Code 변환 예정



Modify
62
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
63
25226 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 11조 5 항 4호

4. 교육연구시설 중 학교





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

Check(REFB_11_5_4){
     

KS


}





KS {

Building myBuilding{

getBuildingUsage() = “EducationAndResearchFacility.School”

}



isExist(myBuliding) = TRUE

} 




Python Code 변환 예정



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

5. 업무시설중 국가 또는 지방자치단체의 청사와 외국공관의 건축물로서 제1종 근린생활시설에 해당하지 아니하는 것





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

Check(REFB_11_5_5){
      

KS


}





KS {

Building myBuilding{

getBuildingUsage() = “BusinessFacility.GovernmentOfficeBuilding”

OR getBuildingUsage() = “BusinessFacility.ForeignOfficialResidence”

getBuildingUsage() != “ClassINeighborhoodLivingFacility”

}



isExist(myBuilding) = TRUE

} 




Python Code 변환 예정



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

6. 승강기를 설치하여야 하는 건축물





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

Check(REFB_11_5_6){
KS
}


KS {

hasObject(Building,Elevator)=TRUE

} 




Python Code 변환 예정



Modify
66
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
67
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
68
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
69
25268 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 15조 2 항 3호

3. 문화 및 집회시설(공연장·집회장 및 관람장에 한한다)·판매시설 기타 이와 유사한 용도에 쓰이는 건축물의 계단인 경우에는 계단 및 계단참의 너비를 120센티미터 이상으로 할 것





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

CS{
      getBuildingUsage()= "CulturalAndAssemblyFacility.PerformanceHall"
      OR getBuildingUsage()= "CulturalAndAssemblyFacility.AssemblyHall"
      OR getBuildingUsage()= "CulturalAndAssemblyFacility.Auditorium"
      OR getBuildingUsage()= "CommercialFacility "
}

KS{
     getObjectWidth(Stair)>=120 cm
     getObjectWidth(StairLanding)>=120 cm
}
 










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

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

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

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

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

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

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





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

③공동주택(기숙사를 제외한다)·제1종 근린생활시설·제2종 근린생활시설·문화 및 집회시설·종교시설·판매시설·운수시설·의료시설·노유자시설·업무시설·숙박시설·위락시설 또는 관광휴게시설의 용도에 쓰이는 건축물의 주계단·피난계단 또는 특별피난계단에 설치하는 난간 및 바닥은 아동의 이용에 안전하고 노약자 및 신체장애인의 이용에 편리한 구조로 하여야 하며, 양쪽에 벽등이 있어 난간이 없는 경우에는 손잡이를 설치하여야 한다. <개정 2010.4.7>





check(REFB_15_3){

     IF CS THEN KS

}



CS{

       getBuildingUsage()= "ClassINeighborhoodLivingFacility"

OR getBuildingUsage() = "ClassIINeighborhoodLivingFacility"

OR getBuildingUsage() = "CulturalAndAssemblyFacility"

OR getBuildingUsage() = "ReligiousFacility"

OR getBuildingUsage() = "CommercialFacility"

OR getBuildingUsage() = "TransportationFacility"

OR getBuildingUsage() = "MedicalFacility"

OR getBuildingUsage() = "FacilitiesForTheAgedAndChildren"

OR getBuildingUsage() = "BusinessFacility"

OR getBuildingUsage() = "LodgingFacility"

OR getBuildingUsage() = "AmusementFacility"

OR getBuildingUsage() = "FacilityForTourismAndRelaxation"

OR (getBuildingUsage() = "MultiUnitHouse" AND getBuildingUsage() != "Dormitory")

}



KS{

       isExist(Railing)=TRUE 

       OR (isExist(Railing)=FALSE AND isExist(Handle)=TRUE) 

} 




Python Code 변환 예정



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

3. 경사로의 직선 및 굴절부분의 유효너비는 「장애인·노인·임산부등의 편의증진보장에 관한 법률」이 정하는 기준에 적합할 것





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

check(REFB_15_5_3){
     IF CS THEN KS
}
CS{
	isInstalled(Ramp, Building) = TRUE
}
KS{
	getResult(unimplemented_CDAPA) = TRUE
} 




Python Code 변환 예정



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

②문화 및 집회시설(전시장 및 동·식물원은 제외한다), 종교시설, 장례식장 또는 위락시설 중 유흥주점의 용도에 쓰이는 건축물의 관람석 또는 집회실로서 그 바닥면적이 200제곱미터 이상인 것의 반자의 높이는 제1항의 규정에 불구하고 4미터(노대의 아랫부분의 높이는 2.7미터)이상이어야 한다. 다만, 기계환기장치를 설치하는 경우에는 그러하지 아니하다. <개정 2010.4.7>





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 16조 (거실의 반자높이) 2항

check(REFB_16_2){

IF (CS1 AND CS2) THEN KS

}



CS1{



VentilatorEquipment myVentilatorEquipemnt{

isObjectProperty(VentilatorEquipment.isMechanical)=TRUE

}

	isExist(myVentilatorEquipemn) = FALSE 

}



CS2{

	Space mySpace{

		getSpaceUsage(Space) = “Auditorium”

		OR getSpaceUsage(Space) = “AssemblyHall”

	}



	((getBuildingUsage() = “CulturalAndAssemblyFacilities.Tavern”

	getBuildingUsage() != “ExhibitionHalls.Tavern”

	getBuildingUsage() != “ZoologicalAndBotanicalGardens.Tavern”)

	OR getBuildingUsage() = "ReligiousFacilities.Tavern” 








target_space_codes = ['33703', '33708']
min_h = 4.0
min_h_bal = 2.7
target_space_codes_label = '대상 공간분류코드'
min_h_label = '최소 반자 높이'
min_h_bal_label = '최소 반자 높이(노대 밑)'

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

        if not ((bldg_use == '문화 및 집회시설' and not sub_use in ['전시장', '동물원', '식물원'])
                or (bldg_use in ['종교시설', '장례시설'])
                or (bldg_use == '위락시설' and sub_use == '유흥주점')):
            continue
        spaces = building.SELECT('space');

        for space in spaces:
            code = space.SELECT('class code').STRING()
            if not code in target_space_codes:
                continue
            area = space.SELECT('area').UNIT('m2').NUMBER()
            if area < 200:
                continue

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

        for space in spaces:
            if not '노대' in space.SELECT('name').STRING():
                continue
            for lower in space.SELECT('lower space'):
                code = lower.SELECT('class code').STRING()
                if not code in target_space_codes:
                    continue
                area = lower.SELECT('area').UNIT('m2').NUMBER()
                if area < 200:
                    continue
                pos = space.SELECT('center')
                dist = lower.SELECT('ceiling height', pos)
                height = dist.UNIT('m').NUMBER()
                if height < min_h_bal:
                    dist.ERROR('반자 높이 : ' + str(height) + ' < ' + str(min_h_bal))
                else:
                    dist.SUCCESS('반자 높이 : ' + str(height) + ' >= ' + str(min_h_bal)) 





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

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





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 18조 (거실등의방습) 2항1호





Check(REFB_18_2_1){

KS

}







KS{

Space mySpace1{
getSpaceUsage() = "Bathroom"
}
Space mySpace2{
getSpaceUsage() = "Kitchen"
}

getBuildingUsage(mySpace1.Building) = "ClassINeighborhoodLivingFacility.BathHouse"
OR 
 getBuildingUsage(mySpace2.Building) = "ClassINeighborhoodLivingFacility.RestingRestaurant"


} 




Python Code 변환 예정



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

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





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 18조 (거실등의 방습) 2항 2호



Check(REFB_18_2_2){

KS

}



KS{

Space mySpace1{
getSpaceUsage() = "Kitchen"
}
Space mySpace2{
getSpaceUsage() = "Bathroom"
}

getBuildingUsage(mySpace1.Building) = "ClassINeighborhoodLivingFacility.Restarant"
OR 
 getBuildingUsage(mySpace2.Building) = "ClassINeighborhoodLivingFacility.LodgingFacilities"

} 




Python Code 변환 예정



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

1의2. 제2종근린생활시설 중 공연장·단란주점·당구장·노래연습장, 문화 및 집회시설중 예식장·공연장, 수련시설 중 생활권수련시설·자연권수련시설, 숙박시설중 여관·여인숙, 위락시설중 단란주점·유흥주점 또는 「다중이용업소의 안전관리에 관한 특별법 시행령」 제2조에 따른 다중이용업의 용도에 쓰이는 층으로서 그 층의 거실의 바닥면적의 합계가 50제곱미터 이상인 건축물에는 직통계단을 2개소 이상 설치할 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 25조 (지하층의 구조) 1항 1의2호
check(REFB_25_1_1-2){
	IF CS THEN KS
}

CS{
	(getBuildingUsage() = "ClassIINeighborhoodLivingFacility.PerformanceHall"
	OR getBuildingUsage() = "ClassIINeighborhoodLivingFacility.Pubs"
	OR getBuildingUsage() = "ClassIINeighborhoodLivingFacility.BilliardRoom"
	OR getBuildingUsage() = "ClassIINeighborhoodLivingFacility.Karaoke"
	OR getBuildingUsage() = "CulturalAndAssemblyFacility.WeddingHall"
	OR getBuildingUsage() = "CulturalAndAssemblyFacility.PerformanceHall"
	OR getBuildingUsage() = "TrainingFacility.TrainingFacilityInLivingZone"
	OR getBuildingUsage() = "TrainingFacility.??LivingZone"
	OR getBuildingUsage() = "LodgingFacility.Inn"
	OR getBuildingUsage() = "AmusementFacility.Pubs"
	OR getBuildingUsage() = "AmusementFacility.Tavern"
	OR getResult(ERSASP_2) = TRUE)

	getTotalFloorArea(Room) >= 50 m2
}

KS{
	Stair myStair{
		isObjectProperty(Stair.isDirect) = TRUE
	}

	getObjectCount(myStair) >= 2
} 




Python Code 변환 예정



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

②제1항제1호에 따른 지하층의 비상탈출구는 다음 각호의 기준에 적합하여야 한다. 다만, 주택의 경우에는 그러하지 아니하다. <개정 2000.6.3, 2010.4.7>





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 25조 (지하층의 구조) 2항
check(REFB_25_2){
	IF !(CS) THEN KS
}

CS{
	getBuildingUsage() = "House"
}

KS{
	getResult(REFB_25_2_1) = TRUE
	getResult(REFB_25_2_2) = TRUE
	getResult(REFB_25_2_3) = TRUE
	getResult(REFB_25_2_4) = TRUE
	getResult(REFB_25_2_5) = TRUE
	getResult(REFB_25_2_7) = TRUE
} 




Python Code 변환 예정



Modify
77
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
78
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
79
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
80
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
81
25399 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 8조의2조 1 항

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





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

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

	Space mySpace{
		hasSpace(Space, FacilitiesOfABuilding)
	}

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

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

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

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




Python Code 변환 예정



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

2. 헬리포트의 중심으로부터 반경 12미터 이내에는 헬리콥터의 이·착륙에 장애가 되는 건축물, 공작물, 조경시설 또는 난간 등을 설치하지 아니할 것





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



Check(REFB_13_1_2){

        KS

}



KS{

    Space mySpace{



    // 헬리포트의 중심으로부터 반경 12미터 이내의 공간        

   }



   isInstalled(Building, mySpace)=False

   isInstalled(Construction, mySpace)=False

   isInstalled(LandscapeFacility, mySpace)=False

   isInstalled(Railing, mySpace)=False

} 




Python Code 변환 예정



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

② 영 제40조제3항제1호에 따라 옥상에 헬리콥터를 통하여 인명 등을 구조할 수 있는 공간을 설치하는 경우에는 직경 10미터 이상의 구조공간을 확보하여야 하며, 구조공간에는 구조활동에 장애가 되는 건축물, 공작물 또는 난간 등을 설치해서는 안 된다. 이 경우 구조공간의 표시기준 등에 관하여는 제1항제3호 및 제4호를 준용한다. <신설 2010.4.7, 2012.1.6>





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



Check(REFB_13_2){

    KS

}



KS{  

    Space mySpace{



      getObjectDiameter(Space)>=10 m

    }



   isInstalled(Building, mySpace)=False

   isInstalled(Construction, mySpace)=False

   isInstalled(Railing, mySpace)=False

} 




Python Code 변환 예정



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

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





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

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









min_stair_width = 1.5

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

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

        d_stairs = building.SELECT('direct stair')

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

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





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

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





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

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









min_stair_width = 1.5

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

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

        d_stairs = building.SELECT('direct stair')

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

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





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

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





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

check(REFB_24-2_1){

      KS

}

KS{

	getResult(REFB_*_3) = TRUE

	(getBuildingUsage() != "Dormitory"

	OR getBuildingUsage() != "Cafeteria"

	OR getSpaceUsage() != "Dormitory"

	OR getSpaceUsage() != "Cafeteria")

} 




Python Code 변환 예정



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

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





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

check(REFB_15-2_2){

     IF CS THEN KS 

}



CS{

Space  mySpace{

getSpaceUsage(Space) = “AssemblyHall”

OR getSpaceUsage(Space) = “PerformanceHall”

}

    Corridor myCorridor{

       isAdjacent(mySpace,Corridor) = TRUE

    }



    (getBuildingUsage()="CulturalAndAssemblyFacility.PerformanceHall"

    OR getBuildingUsage()="CulturalAndAssemblyFacility.AssemblyHall"

    OR getBuildingUsage()="CulturalAndAssemblyFacility.Auditorium"

    OR getBuildingUsage()="CulturalAndAssemblyFacility.ExhibitionHall"

    OR getBuildingUsage()="ReligiousFacility.ReligiousAssemblyFacility"

    OR getBuildingUsage()="FacilitiesForTheAgedAndChildren.ChildrenRelatedFacility"

    OR getBuildingUsage()="FacilitiesForTheAgedAndChildren.WelfareFacilityForTheAged"

    OR getBuildingUsage()="Trainingfacility.TrainingFacilitiesInLiving "

    OR getBuildingUsage()="AmusementFacility.tavern"

    OR getBuildingUsage()="AmusementFacility.FuneralParlors" )

     

    isExist(myCorridor)=TRUE   

}



KS{



 

   getResult(REFB_15-2_2_1)=TRUE

   getResult(REFB_15-2_2_2)=TRUE

   getResult(REFB_15-2_2_3)=TRUE

} 








corridor_code = '33105'
std_floor_area = 200

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

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

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

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

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

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





Modify
92
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
93
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
94
26546 건축법 제 64조 1 항

① 건축주는 6층 이상으로서 연면적이 2천제곱미터 이상인 건축물(대통령령으로 정하는 건축물은 제외한다)을 건축하려면 승강기를 설치하여야 한다. 이 경우 승강기의 규모 및 구조는 국토교통부령으로 정한다. <개정 2013.3.23>





//건축법 64조 (승강기) 1항
check(BA_64_1){
   IF CS THEN KS
}

CS{ 
   getBuildingStoriesCount() >= 6    
   getGrossFloorArea()>= 2000 m2
}

KS{
	isExist(Elevator) = TRUE
        getResult(RFB_5)=TRUE
        getResult(RFB_6)=TRUE
        getResult(REFB_29_1)=True
} 




Python Code 변환 예정



Modify
95
26547 건축법 제 64조 2 항

② 높이 31미터를 초과하는 건축물에는 대통령령으로 정하는 바에 따라 제1항에 따른 승강기뿐만 아니라 비상용승강기를 추가로 설치하여야 한다. 다만, 국토교통부령으로 정하는 건축물의 경우에는 그러하지 아니하다. <개정 2013.3.23>





//건축법 64조 (승강기) 2항

check(BA_64_2){

  IF (!CS1 AND CS2) THEN KS

}



CS1{

    getResult(RFB_9)=TRUE

} 



CS2{

    getBuildingHeight()>31 m

}

KS{


   getResult(BA_64_1) = TRUE 

   isObjectProperty(Elevator.isEmergency)= TRUE

   getResult(EDBA_90_1)=TRUE

   getResult(RFB_10)=TRUE

} 




Python Code 변환 예정



Modify
96
28546 건축법 제 52조 1 항

①대통령령으로 정하는 용도 및 규모의 건축물의 내부 마감재료는 방화에 지장이 없는 재료로 하되, 「다중이용시설 등의 실내공기질관리법」 제5조 및 제6조에 따른 실내공기질 유지기준 및 권고기준을 고려하고 관계 중앙행정기관의 장과 협의하여 국토해양부령으로 정하는 기준에 따른 것이어야 한다. <개정 2009.12.29>





//건축법 52조 (건축물의 마감재료) 1항
Check(BA_52_1){
   IF CS THEN KS 
}

Building myBuilding{
getResult(EDBA_61_1)=TRUE
}
CS{
isExist(myBuilding)=TRUE
}
KS{
getResult(REFB_24_1)=TRUE
getResult(REFB_24_2)=TRUE
getResult(REFB_24_3)=TRUE
getResult(REFB_24_4)=TRUE
} 




Python Code 변환 예정



Modify
97
19640 건축법 시행령 제 38조 1호

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





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

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

     getTotalFloorArea(mySpace) > 300
}

 








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

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

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

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

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





Modify
98
19643 건축법 시행령 제 38조 4호

4. 위락시설





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








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

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

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

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

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





Modify
99
19644 건축법 시행령 제 38조 5호

5. 장례식장





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








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

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

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

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

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





Modify
100
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
    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.