(2025-04-09 기준) 설계품질검토용 건축법 및 관련법규 - KBIMCode (문장단위)
      KBIMCode - KBimAssess Python Code     KBIMCode - 체크리스트 단위     KBIMCode - 조항단위
    1      
1 / 1 page Total 2500 / 4000 records
Select
ALL
None
#
Law
Jo
JO Name
HANG
HO
MOK
Text
Search!
1
건축물의 구조기준 등에 관한 규칙 제 44조

제44조(테두리보) 보강블록구조인 내력벽의 각층의 벽 위에는 춤이 벽두께의 1.5배 이상인 철근콘크리트구조의 테두리보를 설치하여야 한다. 다만, 최상층의 벽으로서 그 벽위에 철근콘크리트구조의 옥상바닥판이 있는 경우에는 그러하지 아니하다.





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



Check(RSSB_44){

     getResult(RSSB_41_1) = TRUE AND getResult(RSSB_3_3) = TRUE AND IF !CS THEN  KS

}



!CS{

  Wall myWall{

   isInstalled(Wall, TopFloor)=True

  } 

  

  FloorSlab myFloorSlab{
isInstalled(FloorSlab, Rooftop) = TRUE
       getObjectProperty(FloorSlab.Structure.materialType)="ReinforcedConcrete"

  }

   isInstalled(myFloorSlabOfRooftop, myWall, Top)=True   

    } 



KS{

   Wall myWall{

     isObjectProperty(Wall.isLoadBearingWall)=True

     isObjectProperty(Wall.Structure.isMansoryStructure)= True

   }



   WD=getObjectProperty(myWall.depth)

   

   WallGirder myWallGirder{   

     getObjectProperty(WallGirder.height)>=1.5*WD

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

   }

   

    isInstalled(myWallGrider, myWall, Top)=True



  

} 




Python Code 변환 예정



2
건축물의 구조기준 등에 관한 규칙 제 9조의3조 1 항

① 주요구조부(바닥·지붕틀 및 주계단은 제외한다. 이하 이 조에서 같다)가 목구조인 건축물은 지붕높이 18미터 이하, 처마높이 15미터 이하 및 연면적 3,000제곱미터 이하로 하여야 한다. 다만, 스프링클러를 설치하는 경우에는 연면적을 6,000제곱미터까지 허용할 수 있다.





//건축물의 구조기준 등에 관한 규칙 9조의3 (건축물의 규모제한) 1항

Check(RSSB_9-3_1){

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

}

	MainStructuralPart myMainStructuralPart1{
	getObject(FloorSlab) OR getObject(RoofTruss)
	}
MainStructuralPart myMainStructuralPart2{
	MainStructuralPart != myMainStructuralPart1
	}

CS1{

	isInstalled(SprinklerSystem) != TRUE

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

}

KS1{

	getObjectVerticalDistance(FloorSlab, Roof) <= 18m

	getObjectVerticalDistance(FloorSlab, Eave) <= 15m

	getGrossFloorArea() <= 3000m2

}

CS2{

	isInstalled(SprinklerSystem) = TRUE

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

}

KS1{

	getObjectVerticalDistance(FloorSlab, Roof) <= 18m

	getObjectVerticalDistance(FloorSlab, Eave) <= 15m

	getGrossFloorArea() <= 6000m2

} 




Python Code 변환 예정



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



4
건축물의 설비기준 등에 관한 규칙 제 10조 2호 나 목

나. 승강장은 각층의 내부와 연결될 수 있도록 하되, 그 출입구(승강로의 출입구를 제외한다)에는 갑종방화문을 설치할 것. 다만, 피난층에는 갑종방화문을 설치하지 아니할 수 있다.





//건축물의 설비기준 등에 관한 규칙 10조 (비상용승강기의 승강장 및 승강로의 구조) 2호 나목
Check(RFB_10_0_2_나){
	KS1 AND IF !(CS) THEN KS2
}
	Space mySpace{
	hasObject(Floor,Space)=TRUE
	isAccessible(Platform,Space) = TRUE
	}
KS1{
	isExist(mySpace)=TRUE
}
CS{
	isAccessible(Platform, myFloor) = TRUE
}
KS2{
	Door myDoor{
		hasSpace(Platform, Door) =TRUE
		hasSpace(mySpace, Door) =TRUE
		Door != ElevatorShaft.Opening
	}
	isObjectProperty(myDoor.isStrictFireproofDoor)= TRUE
}
 




Python Code 변환 예정



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



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



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

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





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

Check(NFSC103_7_0_1){
       KS
}

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

    getObjectCount(myZonme.One.Floor)<2
} 




Python Code 변환 예정



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

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





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

Check(NFSC103_7_0_2){
     KS
}

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




Python Code 변환 예정



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

③ 법 제49조제3항에 따른 가구ㆍ세대 등 간 소음방지를 위한 바닥은 경량충격음(비교적 가볍고 딱딱한 충격에 의한 바닥충격음을 말한다)과 중량충격음(무겁고 부드러운 충격에 의한 바닥충격음을 말한다)을 차단할 수 있는 구조로 하여야 한다. <신설 2014.11.28>





check(REFB_19_1){

     KS

}



KS{

Wall myWall{
   isObjectProperty(Wall.isPartitionWall) = TRUE
}
Floor myFloor{
hasObject(Floor, myWall)
}
   isFireResistantStructure(myWall)=TRUE
(isConnectedTo(myWall, Roof.BottomSurface) = TRUE
 OR isCOnnectedTo(myWall, myFloor.UpperFloor.FloorSlab) = TRUE)

} 








def Check():
    for building in SELECT('building'):
        bldg_use = building.SELECT('building type').STRING()
        sub_use = building.SELECT('prop', '세부용도').STRING()
        space_codes = []
        
        if bldg_use == '단독주택' and sub_use == '다가구주택':
            space_codes = ['가구'] #가구
        elif (bldg_use == '공동주택' and sub_use != '기숙사') or (bldg_use == '노유자시설' and sub_use == '노인복지주택'):
            space_codes = ['33237'] #세대
        elif bldg_use == '공동주택' and sub_use == '기숙사':
            space_codes = ['33230'] #침실
        elif bldg_use == '의료시설':
            space_codes = ['34310'] #병실
        elif bldg_use == '교육연구시설' and sub_use == '학교':
            space_codes = ['34404', '34409']    #교실
        elif bldg_use == '숙박시설':
            space_codes = ['33201'] #객실
        elif (bldg_use == '제2종 근린생활시설' and sub_use == '다중생활시설') or (bldg_use == '노유자시설' and sub_use == '노인요양시설'):
            space_codes = ['호실'] #호실
        else:
            return

        for storey in building.SELECT('storey'):
            walls_list = []
            for space in storey.SELECT('space'):
                code = space.SELECT('class code').STRING()
                if code in space_codes:
                    walls_list.append(space.SELECT('wall'))
            
            n = len(walls_list)
            for i, walls in enumerate(walls_list):
                if i == n-1:
                    break
                for j, walls2 in enumerate(walls_list):
                    if i >= j:
                        continue
                    for wall in walls:
                        if wall.SELECT('isexterior').BOOL():
                            continue
                        id = wall.SELECT('element id').STRING()
                        for wall2 in walls2:
                            if wall2.SELECT('isexterior').BOOL():
                                continue
                            id2 = wall2.SELECT('element id').STRING()
                            if id == id2:
                                if wall.SELECT('prop', '경계벽').BOOL() == False:
                                    wall.ERROR('해당 벽은 경계벽이어야 합니다.')
                                else:
                                    if wall.SELECT('prop', '내화구조').BOOL() == False:
                                        wall.ERROR('경계벽은 내화구조이어야 합니다.')
                                    else:
                                        if wall.SELECT('top touched').BOOL():
                                            wall.SUCCESS('경계벽 조건에 부합합니다.')
                                        else:
                                            wall.ERROR('경계벽 상단이 슬라브와 닿지 않습니다.')
                                break 





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

6. 지붕의 경우에는 다음 각목의 1에 해당하는 것





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

Check (REFB_3_0_6){
	IF CS THEN KS
}
CS{
	isInstalled(Roof) = TRUE
}
KS{
	getResult(REFB_3_0_6_가)=TRUE
    getResult(REFB_3_0_6_나)=TRUE
    getResult(REFB_3_0_6_다)=TRUE
} 




Python Code 변환 예정



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

나. 철재로 보강된 콘크리트블록조ㆍ벽돌조 또는 석조





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

Check (REFB_3_0_6_나){
	IF CS THEN KS
}
CS{
getObjectProperty(Roof.Structure.materialType) = "ConcreteBlock" OR "Brick" OR "Stone"
isObjectProperty(Structure.isReinforcedSteelStructure) = TRUE
} 




Python Code 변환 예정



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

다. 철재로 보강된 유리블록 또는 망입유리로 된 것





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

Check (REFB_3_0_6_다){
	IF CS THEN KS
}
CS{
getObjectProperty(Roof.Structure.materialType) = "GlassBlock" OR "WiredSheetGlass"
isObjectProperty(Structure.isReinforcedSteelStructure) = TRUE
} 




Python Code 변환 예정



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

1. 굴뚝의 옥상 돌출부는 지붕면으로부터의 수직거리를 1미터 이상으로 할 것. 다만, 용마루ㆍ계단탑ㆍ옥탑등이 있는 건축물에 있어서 굴뚝의 주위에 연기의 배출을 방해하는 장애물이 있는 경우에는 그 굴뚝의 상단을 용마루ㆍ계단탑ㆍ옥탑등보다 높게 하여야 한다.





check(REFB_20_0_1){
     KS
}

KS{
     getObjectDistance(Chimney, Ground)
     -getObjectDistance(Roof, Ground)>= 1M
} 
 




Python Code 변환 예정



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

나. 승강장은 각 층의 내부와 연결될 수 있도록 하되, 그 출입구에는 갑종방화문을 설치할 것. 이 경우 방화문은 언제나 닫힌 상태를 유지할 수 있는 구조이어야 한다.





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 30조 (피난용승강기의 설치기준) 1호 나목
check(REFB_30_0_1_나){
      KS
}
KS{
	isConnectedTo(Platform, Floor.One.Space) = TRUE
	Door myDoor{
	isObjectProperty(Door.isEntrance) = TRUE
	isInstalled(Door, Floor.One) = TRUE
	}
	isObjectProperty(myDoor.isStrictFireproofDoor) = TRUE
} 




Python Code 변환 예정



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

나. 출입구에는 갑종방화문을 설치할 것





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 30조 (피난용승강기의 설치기준) 3호 나목
check(REFB_30_0_3_나){
      KS
}
KS{
	Door myDoor{
	isObjectProperty(Door.isEntrance) = TRUE
	}
	isObjectProperty(myDoor.isStrictFireproofDoor) = TRUE
} 




Python Code 변환 예정



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

나. 건축물의 내부에서 계단으로 통하는 출입구에는 제26조에 따른 갑종방화문을 설치할 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 9조 (피난계단 및 특별피난계단의 구조) 2항 2호 나목
check(REFB_9_2_2_2){
	IF (CS) THEN KS     
}
CS {
	Space mySpace{
		isExternal(Space)=FALSE
}
	Door myDoor{
		isGoThrough(mySpace,Door,Stair) = TRUE
}
isExist(myDoor) = TRUE
}

KS {
	isObjectProperty(myDoor.strictFireproofDoor) = TRUE
	
}
 




Python Code 변환 예정



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



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



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

①영 제52조의 규정에 의하여 건축물의 최하층에 있는 거실바닥의 높이는 지표면으로부터 45센티미터 이상으로 하여야 한다. 다만, 지표면을 콘크리트바닥으로 설치하는 등 방습을 위한 조치를 하는 경우에는 그러하지 아니하다.





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





Check(REFB_18_1){

IF !CS THEN KS}







KS{

 getObjectHeight(getFloor(BottomFloor))>=45CM

}





CS {

 isObjectProperty(Ground.Surface.isDampProof)=TRUE 

} 








// 변환중

Check():

KS{

    myFloors = getFloor(BottomFloor)
    for myFloor in myFloors:
        if getObjectHeight(myFloor)>= 4500:
            myFloor.SUCCESS("BottomFloor elevation:"+ str(getObjectHeight(myFloor))  + 'mm')
        else:
            myFloor.Fail("BottomFloor elevation:"+ str(getObjectHeight(myFloor))  + 'mm')


}


CS{

    isObjectProperty(Ground.Surface.isDampProof)=TRUE

}


getobjectheight(str objname):
    objheight = root.select(obj).height().unit('m').number()
    return objheight

def getfloor(floor):
    if type(floor) == int:
        floornum = floor
        myfloor = root.select('slab')
        myfloor = myfloor.select(floornum)
        return myfloor

    elif type(floor) == str:
        floorname = floor
        myfloor = root.select('slab')
        myfloor = myfloor.select(floorname)
        return myfloor 





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

①영 제53조의 규정에 의하여 건축물에 설치하는 경계벽 및 간막이벽은 내화구조로 하고, 지붕밑 또는 바로 윗층의 바닥판까지 닿게 하여야 한다.





check(REFB_19_1){

     KS

}



KS{

Wall myWall{
   isObjectProperty(Wall.isPartitionWall) = TRUE
}
Floor myFloor{
hasObject(Floor, myWall)
}
   isFireResistantStructure(myWall)=TRUE
(isConnectedTo(myWall, Roof.BottomSurface) = TRUE
 OR isCOnnectedTo(myWall, myFloor.UpperFloor.FloorSlab) = TRUE)

} 








def Check():
    for building in SELECT('building'):
        bldg_use = building.SELECT('building type').STRING()
        sub_use = building.SELECT('prop', '세부용도').STRING()
        space_codes = []
        
        if bldg_use == '단독주택' and sub_use == '다가구주택':
            space_codes = ['가구'] #가구
        elif (bldg_use == '공동주택' and sub_use != '기숙사') or (bldg_use == '노유자시설' and sub_use == '노인복지주택'):
            space_codes = ['33237'] #세대
        elif bldg_use == '공동주택' and sub_use == '기숙사':
            space_codes = ['33230'] #침실
        elif bldg_use == '의료시설':
            space_codes = ['34310'] #병실
        elif bldg_use == '교육연구시설' and sub_use == '학교':
            space_codes = ['34404', '34409']    #교실
        elif bldg_use == '숙박시설':
            space_codes = ['33201'] #객실
        elif (bldg_use == '제2종 근린생활시설' and sub_use == '다중생활시설') or (bldg_use == '노유자시설' and sub_use == '노인요양시설'):
            space_codes = ['호실'] #호실
        else:
            return

        for storey in building.SELECT('storey'):
            walls_list = []
            for space in storey.SELECT('space'):
                code = space.SELECT('class code').STRING()
                if code in space_codes:
                    walls_list.append(space.SELECT('wall'))
            
            n = len(walls_list)
            for i, walls in enumerate(walls_list):
                if i == n-1:
                    break
                for j, walls2 in enumerate(walls_list):
                    if i >= j:
                        continue
                    for wall in walls:
                        if wall.SELECT('isexterior').BOOL():
                            continue
                        id = wall.SELECT('element id').STRING()
                        for wall2 in walls2:
                            if wall2.SELECT('isexterior').BOOL():
                                continue
                            id2 = wall2.SELECT('element id').STRING()
                            if id == id2:
                                if wall.SELECT('prop', '경계벽').BOOL() == False:
                                    wall.ERROR('해당 벽은 경계벽이어야 합니다.')
                                else:
                                    if wall.SELECT('prop', '내화구조').BOOL() == False:
                                        wall.ERROR('경계벽은 내화구조이어야 합니다.')
                                    else:
                                        if wall.SELECT('top touched').BOOL():
                                            wall.SUCCESS('경계벽 조건에 부합합니다.')
                                        else:
                                            wall.ERROR('경계벽 상단이 슬라브와 닿지 않습니다.')
                                break 





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

1. 내화구조로서 홀로 설 수 있는 구조일 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 21조 (방화벽의 구조) 1항 1호

Check(REFB_21_1_1){
     KS
}

KS{
   Wall myWall{
       isObjectProperty(Wall.isFireProofWall)=True
   }
   
   isObjectProperty(myWall.isfireResistantStructure)=True
}

 




Python Code 변환 예정



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

2. 방화벽의 양쪽 끝과 윗쪽 끝을 건축물의 외벽면 및 지붕면으로부터 0.5미터 이상 튀어 나오게 할 것





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

Check(REFB_21_1_2){
     KS
}

KS{
   Object myObject{
      //방화벽의 양쪽 끝과 윗쪽 끝
   }  

   Wall myWall{
      isObjectProperty(Wall.isExternal)=True
   }

    getObjectDistance(myObject, myWall)>=0.5 m
    getObjectDistance(myObject, Roof)>=0.5 m
} 




Python Code 변환 예정



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

3. 방화벽에 설치하는 출입문의 너비 및 높이는 각각 2.5미터 이하로 하고, 해당 출입문에는 제26조에 따른 갑종방화문을 설치할 것





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

Check(REFB_21_1_3){
      KS
}

KS{
     Door myDoor{
      isObjectProperty(Door.isEntrance)=True
      isInstalled(Door, myWall)=True
    }

    getObjectWidth(myDoor)<=2.5 m
    getObjectHeight(myDoor)<=2.5 m
    isObjectProperty(myDoor.isStrictFireproofDoor)=True
  
} 




Python Code 변환 예정



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



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

자. 건축물의 내부에서 노대 또는 부속실로 통하는 출입구에는 제26조에 따른 갑종방화문을 설치하고, 노대 또는 부속실로부터 계단실로 통하는 출입구에는 제26조에 따른 갑종방화문 또는 을종방화문을 설치할 것. 이 경우 갑종방화문 또는 을종방화문은 언제나 닫힌 상태를 유지하거나 화재로 인한 연기, 온도, 불꽃 등을 가장 신속하게 감지하여 자동적으로 닫히는 구조로 하여야 한다.





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

check (REFB_9_2_3_9){

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

}

Space mySpace1 {

	isExternal(Space)=FALSE

}

Space mySpace2 = getSpace(“Balcony”) + getSpace(“AncillaryRoom”)

CS1{

	

	isGoThrough(mySpace1,Door,mySpace2) = TRUE

}

KS1 {

	isObjectProperty(Door.isStrictFireproofDoor)= TRUE

}



CS2{

	isGoThrough(mySpace2,Door,Stair.Space) = TRUE

}

KS2{

	isObjectProperty(Door.isFireproofDoor)= TRUE

} 




Python Code 변환 예정



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

1. 대피공간의 면적은 지붕 수평투영면적의 10분의 1 이상 일 것





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



Check (REFB_13_3_1){

      KS

}



KS{

Space mySpace{
isObjectProperty(Space.isEscape) = TRUE
}
  mySpace.area > Roof.horizontalProjectionArea*0.1

} 




Python Code 변환 예정



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



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

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





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

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




Python Code 변환 예정



29
건축법 제 51조 2 항

② 방화지구 안의 공작물로서 간판, 광고탑, 그 밖에 대통령령으로 정하는 공작물 중 건축물의 지붕 위에 설치하는 공작물이나 높이 3미터 이상의 공작물은 주요부를 불연(不燃)재료로 하여야 한다.





//건축법 51조 (방화지구 안의 건축물) 2항



Check(BA_51_2){

       IF CS THEN KS 

}



CS{

   getResult(LPUA_37_1_4)=True

   

}



KS{



   Construction  myConstruction {

       

       isInstalled(Construction , Rooftop)=True

       OR Construction.height>=3 m 

   }



   isObjectProperty(myConstruction.MainStructuralPart.Material.nonCombustibility)=True

} 




Python Code 변환 예정



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



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



32
건축법 시행령 제 35조 1 항

① 법 제49조제1항에 따라 5층 이상 또는 지하 2층 이하인 층에 설치하는 직통계단은 국토해양부령으로 정하는 기준에 따라 피난계단 또는 특별피난계단으로 설치하여야 한다. 다만, 건축물의 주요구조부가 내화구조 또는 불연재료로 되어 있는 경우로서 다음 각 호의 어느 하나에 해당하는 경우에는 그러하지 아니하다. <개정 2008.10.29>





//건축법 시행령 35조(피난계단의 설치) 1항
Check(EDBA_35_1){
	IF (!CS1 AND !CS2 AND CS3) THEN KS
}

CS1 {
     isFireProofStructure(MainStructuralPart) = TRUE
     OR isObjectProperty(MainStructuralPart.Material.nonCombustibility) = TRUE
}

CS2 {
     getResult(EDBA_35_1_1) = TRUE
     OR getResult(EDBA_35_1_2) = TRUE
}

CS3{
     Floor myFloor {
          Floor.number > 5
		OR Floor.number <= -2
	}

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

	hasElement(myFloor, myStair) = TRUE
}

KS {
	isObjectProperty(myStair.isEscape) = TRUE
	OR isObjectProperty(myStair.isSpecialEscape) = TRUE
} 




Python Code 변환 예정



33
건축법 시행령 제 40조 1 항

① 옥상광장 또는 2층 이상인 층에 있는 노대(露臺)나 그 밖에 이와 비슷한 것의 주위에는 높이 1.2미터 이상의 난간을 설치하여야 한다. 다만, 그 노대 등에 출입할 수 없는 구조인 경우에는 그러하지 아니하다.





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

check(EDBA_40_1){

	IF (CS) THEN KS

}



CS{

	Space myBalcony {

		getSpace(“Balconly”)

		Space.Floor.number >= 2

	}



	Space mySpace{

		getSpace(“RoofTopPlaza”) + getSpace(myBalcony)

	}



	isAccessible(mySpace) = TRUE

}



KS{

	hasElement(mySpace, Railing) = TRUE

	mySpace.Rail.height >= 1.2m

} 








target_space_names = ['옥상광장', '노대']
drop_h = 2.0
barrier_h = 1.2

target_space_names_label = '대상 공간 이름'
drop_h_label = '최소 추락 높이'
barrier_h_label = '최소 난간 높이'

def Check():
    for space in SELECT('space'):
        if space.SELECT('is name in', target_space_names).BOOL() == False:
            continue
        if space.SELECT('space door').COUNT() + space.SELECT('opening').COUNT() == 0:
            space.SUCCESS('출입 불가능')
            continue

        for edge in space.SELECT('edge'):
            drop = edge.SELECT('drop').UNIT('m')
            if drop.COUNT() == 0 or drop.LTE(drop_h): 
                continue

            safetybarrier = edge.SELECT('safety barrier')   
            if safetybarrier.COUNT() == 0 : 
                drop.ERROR('난간 미설치')
                continue
                    
            height = safetybarrier.SELECT('height').UNIT('m')
            height_val = height.NUMBER()
                
            if height_val < barrier_h:
                height.ERROR('난간 높이: ' +  str(height_val) + ' < ' + str(barrier_h))
            else:
                height.SUCCESS('난간 높이: ' +  str(height_val) + ' >= ' + str(barrier_h)) 





34
건축법 시행령 제 46조 1 항

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





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

Check(EDBA_46_1){

   IF (!CS1 AND CS2) THEN KS

}





CS1{

  getBuildingUsage()="NuclearReactorAndRelatedFacility"

}



CS2{

  (isObjectProperty(MainStructuralPart.isFireResistantStructure)=TRUE

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

  AND Building.grossFloorArea>1000 m2

}



KS{



  Floor myFloor{

      isObjectProperty(FloorSlab.isFireResistantStructure)=TRUE

  }

  Wall myWall{

      isObjectProperty(Wall.isFireResistantStructure)=TRUE

  }

  Door myDoor{

      isObjectProperty(Door.isStrictFireproofDoor)=TRUE

  }



  isFirePartition(Building, myFloor)=TRUE

  AND  isFirePartition(Building, myWall)=TRUE

  AND  isFirePatrition(Building, myDoor)=TRUE



  AND getResult(REFB_14_1)=TRUE

  AND getResult(REFB_14_2)=TRUE

  AND getResult(REFB_14_3)=TRUE



} 




Python Code 변환 예정



35
건축법 시행령 제 56조 2 항

② 제1항제1호 및 제2호에 해당하는 용도로 쓰지 아니하는 건축물로서 그 지붕틀을 불연재료로 한 경우에는 그 지붕틀을 내화구조로 아니할 수 있다.





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

check(EDBA_56_2){

	IF (!CS1 AND CS2) THEN !KS



CS1{

        getResult(EDBA_56_1_1)=TRUE

        AND getResult(EDBA_56_1_2)=TRUE

}



CS2{

        getObjectMaterialType(RoofTruss)= "NonCombustibleMaterial"

}



KS{

        isFireResistantStructure(RoofTruss) = TRUE

} 




Python Code 변환 예정



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



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



38
건축법 시행령 제 56조 1 항

① 법 제50조제1항에 따라 다음 각 호의 어느 하나에 해당하는 건축물(제5호에 해당하는 건축물로서 2층 이하인 건축물은 지하층 부분만 해당한다)의 주요구조부는 내화구조로 하여야 한다. 다만, 연면적이 50제곱미터 이하인 단층의 부속건축물로서 외벽 및 처마 밑면을 방화구조로 한 것과 무대의 바닥은 그러하지 아니하다. <개정 2009.6.30>





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

check(EDBA_56_1){

        IF !CS THEN KS

}

Space mySpace{
Space.usage="StagePart"
}

Floor myFloor{

     hasSpace(mySpace, Floor) = TRUE

}



CS {

       getTotalFloorArea()<= 50m2

       AND getBuildingStoriesCount()=1

       AND getBuildingUsage()="AccessoryBuidling"

       AND isFireProofStructure("OuterWall" | "eaves" | myFloor)=TRUE

}



KS {

	getResult(EDBA_56_1_1 = TRUE  

	OR getResult(EDBA_56_1_2) = TRUE  

	OR getResult(EDBA_56_1_3) = TRUE  

	OR getResult(EDBA_56_1_4) = TRUE  

	OR getResult(EDBA_56_1_5) = TRUE  

   		

	AND isFireProofStructure(MainStructuralPart) = TRUE

} 




Python Code 변환 예정



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

③폐쇄형헤드를 사용하는 연결살수설비의 주배관은 옥내소화전설비의 주배관(옥내소화전설비가 설치된 경우에 한한다) 및 수도배관(연결살수설비가 설치된 건축물 안에 설치된 수도배관 중 구경이 가장 큰 배관을 말한다) 또는 옥상에 설치된 수조(다른 설비의 수조를 포함한다)에 접속하여야 한다. 이 경우 연결살수설비의 주배관과 옥내소화전설비의 주배관·수도배관·옥상에 설치된 수조의 접속부분에는 체크밸브를 설치하되, 점검하기 쉽게 하여야 한다.





//  연결살수설비의 화재안전기준(nfsc 503) 5조 (배관 등) 3항



Check(NFSC503_5_3){

	IF CS THEN KS

}

	Head myHead{

	isObjectProperty(Head.openAndCloseType) = "EnclosedType"

	}

	Pipe myPipe1{

	isObjectProperty(Pipe.isRiser) = TRUE

	isObjectProperty(myPipe.systemType) = "HookingUpSprinklerSystem"

	}

CS{

	isInstalled(myHead, myPipe1) = TRUE

}

KS{

	Pipe myPipe2{

	isObjectProperty(Pipe.isRiser) = TRUE

	isObjectProperty(myPipe.systemType) = "IndoorFireHydrantSystem"

	}

	Tank myTank{

	isInstalled(Tank, Rooftop) = TRUE

	}

	Pipe myPipe3{
	Pipe.isForWater = TRUE

	연결살수설비가 설치된 건축물 안에 설치된 수도배관 중 구경이 가장 큰 배관

	}

	Valve myValve{

	isObjectProperty(Valve.isCheckValve) = TRUE

	}

	(isConnectedTo(myPipe1, myPipe2) = TRUE

	isInstalled(myValve, myPipe1) = TRUE

	isInstalled(myValve, myPipe2) = TRUE)



	OR (isConnectedTo(myPipe1, myPipe3) = TRUE

	isInstalled(myValve, myPipe1) = TRUE

	isInstalled(myValve, myPipe3) = TRUE)



	OR (isConnectedTo(myPipe1, myTank) = TRUE

	isInstalled(myValve, myPipe1) = TRUE

	isInstalled(myValve, myTank) = TRUE)

} 




Python Code 변환 예정



40
연소방지설비의 화재안전기준(NFSC 506) 제 8조 2호

2. 방화벽에 출입문을 설치하는 경우에는 방화문으로 할 것





//	연소방지설비의 화재안전기준(nfsc 506) 8조 (방화벽의 설치기준) 2호
Check(NFSC506_8_0_2){
	IF CS THEN KS
}
	Wall myWall{
		isObjectProperty(Wall.isFireProofWall) = TRUE
	}

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

CS{
	isInstalled(myDoor, myWall) = TRUE
}


KS{
	isObjectProperty(myDoor.isStrictFireproofDoor) = TRUE
	OR isObjectProperty(myDoor.isFireproofDoor) = TRUE
} 




Python Code 변환 예정



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

3. 방화벽을 관통하는 케이블·전선 등에는 내화성이 있는 화재차단재로 마감할 것





//	연소방지설비의 화재안전기준(nfsc 506) 8조 (방화벽의 설치기준) 3호

Check(NFSC506_8_0_3){

	 KS

}



KS{



    Wall myWall{

        isObjectProperty(Wall.isFireProofWall)=True

    }

    

  IF   isInstalled(Wire, myWall)=True

  THEN   isObjectProperty(Wire.Finish.Material.isFireStop)= TRUE

  END IF



  IF  isInstalled(Cable, myWall)=True

  THEN   isObjectProperty(Cable.Finish.Material.isFireStop)= TRUE

  END IF



    

} 




Python Code 변환 예정



42
연소방지설비의 화재안전기준(NFSC 506) 제 8조 1호

1. 내화구조로서 홀로 설 수 있는 구조일 것





//	연소방지설비의 화재안전기준(nfsc 506) 8조 (방화벽의 설치기준) 1호
Check(NFSC506_8_0_1){
	KS
}

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

	isObjectProperty(myWall.isfireResistantStructure) = TRUE
}
 




Python Code 변환 예정



    1