제41조(적용범위) ①이 절의 규정은 보강블록구조의 건축물이나 보강블록구조와 철근콘크리트구조 그 밖의 구조를 병용하는 건축물의 보강블록구조인 부분에 이를 적용한다.
//건축물의 구조기준 등에 관한 규칙 41조 (적용범위 등) 1항
Check(RSSB_41_1){
getResult(RSSB_41_1) = TRUE AND KS
}
KS{
getObjectProperty(Building.Structure.materialType) = "SteelReinforcedConcreteBlock"
OR "ReinforcedConcrete"
}
②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
①이 절의 규정은 벽돌구조·돌구조·콘크리트블록구조 그 밖의 조적식구조(보강블록구조를 제외한다. 이하 이 절에서 같다)의 건축물이나 조적식구조와 목구조 그 밖의 구조를 병용하는 건축물의 조적식구조로 된 부분에 이를 적용한다.
//건축물의 구조기준 등에 관한 규칙 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")
}
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
}
}
가. 바닥난방 부위에 설치되는 단열재는 바닥난방의 열이 슬래브 하부 및 측벽으로 손실되는 것을 막을 수 있도록 온수배관(전기난방인 경우는 발열선) 하부와 슬래브 사이에 설치하고, 온수배관(전기난방인 경우는 발열선) 하부와 슬래브 사이에 설치되는 구성 재료의 열저항의 합계는 층간 바닥인 경우에는 해당 바닥에 요구되는 총열관류저항(별표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
}
난방 및 냉방설비의 용량계산을 위한 외기조건은 각 지역별로 위험율 2.5%(냉방기 및 난방기를 분리한 온도출현분포를 사용할 경우) 또는 1%(연간 총시간에 대한 온도출현 분포를 사용할 경우)로 하거나 별표7에서 정한 외기온·습도를 사용한다. 별표7 이외의 지역인 경우에는 상기 위험율을 기준으로 하여 가장 유사한 기후조건을 갖는 지역의 값을 사용한다. 다만, 지역난방공급방식을 채택할 경우에는 산업통상자원부 고시 「집단에너지시설의 기술기준」에 의하여 용량계
제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
}
④영 제35조제2항에서 "갓복도식 공동주택"이라 함은 각 층의 계단실 및 승강기에서 각 세대로 통하는 복도의 한쪽 면이 외기(外氣)에 개방된 구조의 공동주택을 말한다. <신설 2006.6.29>
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 9조 (피난계단 및 특별피난계단의 구조) 4항
Check(REFB_9_4) {
KS
}
Building myBuilding{
Building.usage = “SideCorridorTypeMultiUnitHouse”
}
Space mySpace = getSpace(“Corridor”)
isConnectedToExternal(mySpace)=TRUE
②영 제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”
}
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
}
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
}
④영 제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
}
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 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
}
② 영 제34조제1항 단서에서 "국토교통부령으로 정하는 공장"이란 반도체 및 디스플레이 패널을 제조하는 공장을 말한다. <신설 2010.4.7, 2013.3.23>
// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 8조 (직통계단의 설치기준) 2항
Check(REFB_8_2){
getObjectProperty(Building.usage)=“Factory.SemiconductorAndDisplayPanelManufacturingFactory"
}
②영 제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
}
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 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
}
Check(EDBA_41_1_1){
IF (CS) THEN KS END IF
}
CS{
getObjectProperty(Building.usage)="DetachedHouse"
}
KS{
getObjectProperty(Passage.effectiveWidth)> 0.9M
}
def Check():
if SELECT("building type").STRING() == "DetachedHouse":
passage = SELECT("passage")
if passage.SELECT("clear width").UNIT("m").NUMBER()> 0.9:
passage.SUCCESS("pass")
else:
passage.ERROR("fail")
Check(EDBA_41_1_3){
IF (CS) THEN KS END IF
}
CS{
Building.usage !="DetachedHouse"
OR Building.usage !="CulturalAndAssemblyFacility"
OR Building.usage !="ReligiousFacility"
OR Building.usage !="MedicalFacility"
OR Building.usage !="AmusementFacility"
OR Building.usage !="FuneralParlor"
}
KS{
getObjectProperty(Passage.effectiveWidth)> 1.5m ;
}
target_bldg_uses_01 = ['단독주택']
target_bldg_uses_02 = ['문화 및 집회시설', '장례시설', '의료시설', '위락시설']
target_bldg_uses_01_label = '건축물 용도1'
target_bldg_uses_02_label = '건축물 용도2'
def Check():
for building in SELECT('building'):
bldg_use = building.SELECT('building type').STRING()
min_corridor_w = 1.5
min_area = 0.0
if bldg_use in target_bldg_uses_01:
min_corridor_w = 0.9
elif bldg_use in target_bldg_uses_02:
min_corridor_w = 3.0
min_area = 500
if min_area > 0:
area = 0
for space in building.SELECT('space'):
area += space.SELECT('area').UNIT('m2').NUMBER()
if area < min_area:
building.SUCCESS('바닥면적의 합: ' + str(area) + ' < ' + str(min_area))
continue
base_storey = None
stories = building.SELECT('storey')
for storey in stories:
if storey.SELECT('prop', '기준 지상층').BOOL() == True:
base_storey = storey
break
if base_storey is None:
building.ERROR('기준 지상층이 존재하지 않습니다.')
break
stairs = base_storey.SELECT('direct stair')
if stairs.COUNT() == 0:
base_storey.ERROR(base_storey.SELECT('name').STRING() + '에 직통계단이 존재하지 않습니다.')
continue
exDoors = []
for door in base_storey.SELECT('door'):
if door.SELECT('is external').BOOL() == True:
exDoors.append(door)
for stair in stairs:
for route in stair.SELECT('escape route', exDoors):
for space in route.SELECT('passing space'):
width = space.SELECT('min clear width').UNIT('m')
w = width.NUMBER()
if w < min_corridor_w:
width.ERROR('통로 너비: ' + str(w) + ' < ' + str(min_corridor_w))
else:
width.SUCCESS('통로 너비: ' + str(w) + ' >= ' + str(min_corridor_w))
나. 바닥면적의 합계가 500제곱미터 이상인 문화 및 집회시설, 종교시설, 의료시설, 위락시설 또는 장례시설: 유효 너비 3미터 이상
Check(EDBA_41_1_2){
IF (CS) THEN KS END IF
}
CS{
FloorSlab.area> 500 m2
Building.usage="CulturalAndAssemblyFacility"
OR Building.usage="ReligiousFacility"
OR Building.usage="MedicalFacility"
OR Building.usage="AmusementFacility"
OR Building.usage="FuneralParlor"
}
KS{
Passage.effectiveWidth> 3m ;
}
target_bldg_uses_01 = ['단독주택']
target_bldg_uses_02 = ['문화 및 집회시설', '장례시설', '의료시설', '위락시설']
target_bldg_uses_01_label = '건축물 용도1'
target_bldg_uses_02_label = '건축물 용도2'
def Check():
for building in SELECT('building'):
bldg_use = building.SELECT('building type').STRING()
min_corridor_w = 1.5
min_area = 0.0
if bldg_use in target_bldg_uses_01:
min_corridor_w = 0.9
elif bldg_use in target_bldg_uses_02:
min_corridor_w = 3.0
min_area = 500
if min_area > 0:
area = 0
for space in building.SELECT('space'):
area += space.SELECT('area').UNIT('m2').NUMBER()
if area < min_area:
building.SUCCESS('바닥면적의 합: ' + str(area) + ' < ' + str(min_area))
continue
base_storey = None
stories = building.SELECT('storey')
for storey in stories:
if storey.SELECT('prop', '기준 지상층').BOOL() == True:
base_storey = storey
break
if base_storey is None:
building.ERROR('기준 지상층이 존재하지 않습니다.')
break
stairs = base_storey.SELECT('direct stair')
if stairs.COUNT() == 0:
base_storey.ERROR(base_storey.SELECT('name').STRING() + '에 직통계단이 존재하지 않습니다.')
continue
exDoors = []
for door in base_storey.SELECT('door'):
if door.SELECT('is external').BOOL() == True:
exDoors.append(door)
for stair in stairs:
for route in stair.SELECT('escape route', exDoors):
for space in route.SELECT('passing space'):
width = space.SELECT('min clear width').UNIT('m')
w = width.NUMBER()
if w < min_corridor_w:
width.ERROR('통로 너비: ' + str(w) + ' < ' + str(min_corridor_w))
else:
width.SUCCESS('통로 너비: ' + str(w) + ' >= ' + str(min_corridor_w))
② 건축물(갓복도식 공동주택은 제외한다)의 11층(공동주택의 경우에는 16층) 이상인 층(바닥면적이 400제곱미터 미만인 층은 제외한다) 또는 지하 3층 이하인 층(바닥면적이 400제곱미터미만인 층은 제외한다)으로부터 피난층 또는 지상으로 통하는 직통계단은 제1항에도 불구하고 특별피난계단으로 설치하여야 한다. <개정 2008.10.29>
//건축법 시행령 35조 (피난계단의 설치) 2항
check(EDBA_35_2){
IF (CS1 AND CS2) THEN KS
}
CS1{
Building.usage != "MultiUnitHouse.SideCorridorTypeMultiUnitHouse"
}
CS2{
Floor myFloor{
IF (Building.usage = "MultiUnitHouse“)
THEN getFloorNumber(Floor) >= 16
ELSE
getFloorNumber(Floor) >= 11
ENDIF
OR getFloorNumber(Floor) < -3
getFloorArea(Floor) >= 400m2
}
Stair myStair {
(isAccessible(Stair, Floor.isEscape) = TRUE
OR isAccessible(Stair, Ground) = TRUE)
isObjectProperty(Stair.isDirect) = TRUE
}
hasObject(myFloor, myStair) = TRUE
}
KS{
isObjectProperty(myStair.isSpecialEscape) = TRUE
}
① 법 제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
}
⑤ 제4항에도 불구하고 아파트의 4층 이상인 층에서 발코니에 설치하는 인접 세대와의 경계벽이 파괴하기 쉬운 경량구조 등이거나 경계벽에 피난구를 설치한 경우에는 대피공간을 설치하지 아니할 수 있다.
//건축법 시행령 46조 (방화구획의 설치) 5항
Check(EDBA_5){
CS
}
Space mySpace{
Space.isEscape = TRUE
}
CS{getObjectProperty(Building.usage)="ApartmentHouses"
AND isExist(Balcony)=TRUE
AND (hasObject(Balcony,Structure)=TRUE
AND (getResult(EDBA_5_1)=TRUE
or getResult(EDBA_5_2)=TRUE
or getResult(EDBA_5_3)=TRUE)
AND isExist(mySpace)=FALSE
}
제50조 (거실반자의 설치) 법 제49조제2항에 따라 공장, 창고시설, 위험물저장 및 처리시설, 동물 및 식물 관련 시설, 분뇨 및 쓰레기처리시설 또는 묘지 관련시설 외의 용도로 쓰는 건축물 거실의 반자(반자가 없는 경우에는 보 또는 바로 위층의 바닥판의 밑면, 그 밖에 이와 비슷한 것을 말한다)는 국토해양부령으로 정하는 기준에 적합하여야 한다.
// 건축법 시행령 50조 (거실반자의 설치)
check(EDBA_50){
IF (CS) THEN KS
}
CS{
Building.usage != "Factory"
OR Building.usage != "Warehouse"
OR Building.usage != "FacilityForStorageAndTreatmentOfDangerousSubstance"
OR Building.usage != "FacilityForAnimalAndPlant"
OR Building.usage != "ResourceRecyclingFacility"
OR Building.usage != "CemeteryAndRelatedFacility"
}
KS{
getResult(REFB_16_1) = TRUE
getResult(REFB_16_2) = TRUE
}
min_h = 2.1
min_h_label = '최소 반자 높이'
def Check():
for space in SELECT('space'):
dist = space.SELECT('ceiling height')
height = dist.UNIT('m').NUMBER()
if height < min_h:
dist.ERROR('반자 높이 : ' + str(height) + ' < ' + str(min_h))
else:
dist.SUCCESS('반자 높이 : ' + str(height) + ' >= ' + str(min_h))
① 법 제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
}
5. 3층 이상인 건축물 및 지하층이 있는 건축물. 다만, 단독주택(다중주택 및 다가구주택은 제외한다), 동물 및 식물 관련 시설, 발전시설(발전소의 부속용도로 쓰는 시설은 제외한다), 교도소·감화원 또는 묘지 관련 시설(화장장은 제외한다)의 용도로 쓰는 건축물과 철강 관련 업종의 공장 중 제어실로 사용하기 위하여 연면적 50제곱미터 이하로 증축하는 부분은 제외한다.
//건축법 시행령 56조 (건축물의 내화구조) 1항 5호
check(EDBA_56_1_5){
IF !CS THEN KS
}
Building myBuilding{
getBuildingUsage() = "PowerPlant"
isObjectProperty(Building.isAttachedBuilding) = TRUE
}
Building myBuilding{
getResult(REFB_*_3_30) = TRUE
getResult(REFB_*_3_31) = TRUE
}
CS{
getBuildingUsage() = "facilities for animals and plants"
| "facilities for power generation"
| "correctional facilities and military installations.prison"
| "correctional facilities and military installations.reformatories
| "myFactory"
OR (getBuildingUsage() = "detached houses"
AND getBuildingUsage() != "detached houses.multi-user houses"
| "detached houses.multi-family houses" )
OR (getBuildingUsage() = "facilities for power generation"
AND (getBuildingUsage() = "myBuilding"
OR (getBuildingUsage() = "cemeteries and related facilities"
AND getBuildingUsage() != "Crematorium")
}
KS{
Floor myFloor{
Floor.number < 0
}
getBuildingStoriesCount() >= 3
AND isExist(myFloor) = TRUE
}
3. 공동주택과 위락시설이 같은 초고층 건축물에 있는 경우. 다만, 사생활을 보호하고 방범·방화 등 주거 안전을 보장하며 소음·악취 등으로부터 주거환경을 보호할 수 있도록 주택의 출입구·계단 및 승강기 등을 주택 외의 시설과 분리된 구조로 하여야 한다.
//건축법 시행령 47조 (방화에 장애가 되는 용도의 제한) 1항 3호
Check(EDBA_47_1_3){
KS
}
KS{
Space mySpace1{
getSpaceUsage(Space)="MultiUnitHouse"
}
Space mySpace2{
getSpaceUsage(Space)="AmusementFacility"
}
Building myBuilding{
isObjectProperty(Building.isHighriseBuilding)=True
}
isExistTogether(mySpace1, mySpace2, myBuilding)=True
//다만, 주택의 출입구ㆍ계단 및 승강기 등을 주택 외의 시설과 분리된 구조로 하여야 한다.
}
//국토의 계획 및 이용에 관한 법률 77조 (용도지역의 건폐율) 1항 1호 가목
Check(LPUA_77_1_1_1){
IF CS THEN KS
}
CS{
getObjectProperty(SpecialPurposeArea.type) = "ResidentialArea"
}
KS{
getObjectProperty(Building.buildingToLandRatio) = BTL
BTL <= 70
}
//국토의 계획 및 이용에 관한 법률 77조 (용도지역의 건폐율) 1항 1호 나목
Check(LPUA_77_1_1_2){
IF CS THEN KS
}
CS{
getObjectProperty(SpecialPurposeArea.type) = "CommercialArea"
}
KS{
getObjectProperty(Building.buildingToLandRatio) = BTL
BTL <= 90
}
//국토의 계획 및 이용에 관한 법률 77조 (용도지역의 건폐율) 1항 1호 다목
Check(LPUA_77_1_1_3){
IF CS THEN KS
}
CS{
getObjectProperty(SpecialPurposeArea.type) = "IndustrialArea"
}
KS{
getObjectProperty(Building.buildingToLandRatio) = BTL
BTL <= 70
}
//국토의 계획 및 이용에 관한 법률 77조 (용도지역의 건폐율) 1항 1호 라목
Check(LPUA_77_1_1_4){
IF CS THEN KS
}
CS{
getObjectProperty(SpecialPurposeArea.type) = "GreenArea"
}
KS{
getObjectProperty(Building.buildingToLandRatio) = BTL
BTL <= 20
}
//국토의 계획 및 이용에 관한 법률 77조 (용도지역의 건폐율) 1항 3호
Check(LPUA_77_1_3){
IF CS THEN KS
}
CS{
getObjectProperty(SpecialPurposeArea.type) = "AgriculturalAndForestryArea"
}
KS{
getObjectProperty(Building.buildingToLandRatio) = BTL
BTL <= 20
}
//국토의 계획 및 이용에 관한 법률 77조 (용도지역의 건폐율) 1항 4호
Check(LPUA_77_1_4){
IF CS THEN KS
}
CS{
getObjectProperty(SpecialPurposeArea.type) = "NaturalEnvironmentConservationArea"
}
KS{
getObjectProperty(Building.buildingToLandRatio) = BTL
BTL <= 20
}
③ 다음 각 호의 어느 하나에 해당하는 지역에서의 건폐율에 관한 기준은 제1항과 제2항에도 불구하고 80퍼센트 이하의 범위에서 대통령령으로 정하는 기준에 따라 특별시ㆍ광역시ㆍ특별자치시ㆍ특별자치도ㆍ시 또는 군의 조례로 따로 정한다. <개정 2011.4.14, 2011.8.4, 2015.8.11, 2017.4.18>
//국토의 계획 및 이용에 관한 법률 77조 (용도지역의 건폐율) 3항
Check(LPUA_77_3){
IF CS THEN KS
}
CS{
getResult(LPUA_77_3_1) = TRUE
OR getResult(LPUA_77_3_2) = TRUE
OR getResult(LPUA_77_3_3) = TRUE
OR getResult(LPUA_77_3_4) = TRUE
OR getResult(LPUA_77_3_5) = TRUE
OR getResult(LPUA_77_3_6) = TRUE
}
KS{
getObjectProperty(Building.buildingToLandRatio) = BTL
BTL <= 80
}
// 국토의 계획 및 이용에 관한 법률 78조 (용도지역에서의 용적률) 1항 1호
Check(LPUA_78_1_1){
IF CS THEN KS
}
CS{
getObjectProperty(Building.SpecialPurposeArea.type) = "UrbanArea"
}
KS{
getResult(LPUA_78_1_1_가)=TRUE
OR getResult(LPUA_78_1_1_나)=TRUE
OR getResult(LPUA_78_1_1_다)=TRUE
OR getResult(LPUA_78_1_1_라)=TRUE
}
// 국토의 계획 및 이용에 관한 법률 78조 (용도지역에서의 용적률) 1항 1호 가목
Check(LPUA_78_1_1_가){
IF CS THEN KS
}
CS{
getObjectProperty(Building.SpecialPurposeArea.type) = "ResidentialArea"
}
KS{
getFloorAreaRatio() <= 500%
}
// 국토의 계획 및 이용에 관한 법률 78조 (용도지역에서의 용적률) 1항 1호 나목
Check(LPUA_78_1_1_나){
IF CS THEN KS
}
CS{
getObjectProperty(Building.SpecialPurposeArea.type) = "CommercialArea"
}
KS{
getFloorAreaRatio() <= 1500%
}
// 국토의 계획 및 이용에 관한 법률 78조 (용도지역에서의 용적률) 1항 1호 다목
Check(LPUA_78_1_1_다){
IF CS THEN KS
}
CS{
getObjectProperty(Building.SpecialPurposeArea.type) = "IndustrialArea"
}
KS{
getFloorAreaRatio() <= 400%
}
// 국토의 계획 및 이용에 관한 법률 78조 (용도지역에서의 용적률) 1항 1호 라목
Check(LPUA_78_1_1_라){
IF CS THEN KS
}
CS{
getObjectProperty(Building.SpecialPurposeArea.type) = "GreenArea"
}
KS{
getFloorAreaRatio() <= 100%
}
// 국토의 계획 및 이용에 관한 법률 78조 (용도지역에서의 용적률) 1항 2호
Check(LPUA_78_1_2){
IF CS THEN KS
}
CS{
getObjectProperty(Building.SpecialPurposeArea.type) = "ControlArea"
}
KS{
getResult(LPUA_78_1_2_가)=TRUE
OR getResult(LPUA_78_1_2_나)=TRUE
OR getResult(LPUA_78_1_2_다)=TRUE
}
// 국토의 계획 및 이용에 관한 법률 78조 (용도지역에서의 용적률) 1항 2호 가목
Check(LPUA_78_1_2_가){
IF CS THEN KS
}
CS{
getObjectProperty(Building.SpecialPurposeArea.type) = "ConservationManagementArea"
}
KS{
getFloorAreaRatio() <= 80%
}
// 국토의 계획 및 이용에 관한 법률 78조 (용도지역에서의 용적률) 1항 2호 나목
Check(LPUA_78_1_2_나){
IF CS THEN KS
}
CS{
getObjectProperty(Building.SpecialPurposeArea.type) = "ProductionManagementArea"
}
KS{
getFloorAreaRatio() <= 80%
}
// 국토의 계획 및 이용에 관한 법률 78조 (용도지역에서의 용적률) 1항 2호 다목
Check(LPUA_78_1_2_다){
IF CS THEN KS
}
CS{
getObjectProperty(Building.SpecialPurposeArea.type) = "PlanningManagementArea"
}
KS{
getFloorAreaRatio() <=100%
}
// 국토의 계획 및 이용에 관한 법률 78조 (용도지역에서의 용적률) 1항 3호
Check(LPUA_78_1_3){
IF CS THEN KS
}
CS{
getObjectProperty(Building.SpecialPurposeArea.type) = "AgriculturalAndForestryArea"
}
KS{
getFloorAreaRatio() <= 80%
}
// 국토의 계획 및 이용에 관한 법률 78조 (용도지역에서의 용적률) 1항 4호
Check(LPUA_78_1_4){
IF CS THEN KS
}
CS{
getObjectProperty(Building.SpecialPurposeArea.type) = "NaturalEnvironmentConservationArea"
}
KS{
getFloorAreaRatio() <= 80%
}
//국토의 계획 및 이용에 관한 법률 시행령 84조 (용도지역안에서의 건폐율) 3항 2호
Check(EDLPUA_84_3_2){
IF CS THEN KS
}
CS{
getObjectProperty(Building.SpecialPurposeDistrict.type)="DevelopmentPromotionDistrict"
}
KS{
getBuildingToLandRatio()<=40%
}
⑩제1항 내지 제4항 및 제7항의 규정에 의하여 완화하여 적용되는 건폐율 및 용적률은 당해 용도지역 또는 용도지구에 적용되는 건폐율의 150퍼센트 및 용적률의 200퍼센트를 각각 초과할 수 없다. <개정 2004.1.20.>
//국토의 계획 및 이용에 관한 법률 시행령 46조 (도시지역 내 지구단위계획구역에서의 건폐율 등의 완화적용) 10항
Check(EDLPUA_46_10){
IF CS THEN KS
}
CS{
getResult(EDLPUA_46_1)=TRUE
OR getResult(EDLPUA_46_2)=TRUE
OR getResult(EDLPUA_46_3)=TRUE
OR getResult(EDLPUA_46_4)=TRUE
OR getResult(EDLPUA_46_7)=TRUE
}
KS{
BBTR = getObjectProperty(Building.buildingToLandRatio)
BFAR = getObjectProperty(Building.floorAreaRatio)
(BBTR < 1.5*getObjectProperty(Building.SpecialPurposeArea.buildingToLandRatio)
OR BBTR < 1.5*getObjectProperty(Building.SpecialPurposeZone.buildingToLandRatio))
(BFAR < 2*getObjectProperty(Building.SpecialPurposeArea.floorAreaRatio)
OR BFAR < 2*getObjectProperty(Building.SpecialPurposeZone.floorAreaRatio))
}
①지구단위계획구역(도시지역 외에 지정하는 경우로 한정한다. 이하 이 조에서 같다)에서는 법 제52조제3항에 따라 지구단위계획으로 당해 용도지역 또는 개발진흥지구에 적용되는 건폐율의 150퍼센트 및 용적률의 200퍼센트 이내에서 건폐율 및 용적률을 완화하여 적용할 수 있다. <개정 2005.1.15, 2007.4.19, 2012.4.10>
//EDLPUA 47조 1항
Check(EDLPUA_47_1){
IF CS THEN KS
}
CS{
getObjectUsage(Zone)="DistrictUnitPlanningZones"
}
KS{
SpecialPurposeArea mySpecialPurposeArea{
getObjectProperty(Building.SpecialPurposeArea.type) = "DevelopmentPromotionDistrict"
}
BLR= getObjectProperty(Building.SpecialPurposeArea.buildingToLandRatio) OR getObjectProperty(mySpecialPurposeArea.buildingToLandRatio)
FAR= getObjectProperty(Building.SpecialPurposeArea.floorAreaRatio) OR getObjectProperty(mySpecialPurposeArea.floorAreaRatio)
getBuildingToLandRatio()<=BLR*150%
getFloorAreaRatio(FAR)<=200%
}
1. 취락지구 : 60퍼센트 이하(집단취락지구에 대하여는 개발제한구역의지정및관리에관한특별조치법령이 정하는 바에 의한다)
//국토의 계획 및 이용에 관한 법률 시행령 84조 (용도지역안에서의 건폐율) 3항 1호
Check(EDLPUA_84_3_1){
IF CS THEN KS
}
CS{
getObjectProperty(Building.SpecialPurposeDistrict.type)="SettlementDistrict"
}
KS{
getBuildingToLandRatio()<=60%
}
//국토의 계획 및 이용에 관한 법률 시행령 84조 (용도지역안에서의 건폐율) 3항 3호
Check(EDLPUA_84_3_3){
IF CS THEN KS
}
CS{
getObjectProperty(Building.SpecialPurposeDistrict.type)="FisheryResourcesProtectionZone"
}
KS{
getBuildingToLandRatio()<=40%
}
//국토의 계획 및 이용에 관한 법률 시행령 84조 (용도지역안에서의 건폐율) 3항 4호
Check(EDLPUA_84_3_4){
IF CS THEN KS
}
CS{
getObjectProperty(Building.SpecialPurposeDistrict.type)="ParkProtectionZone"
}
KS{
getBuildingToLandRatio()<=60%
}
5. 「산업입지 및 개발에 관한 법률」 제2조제8호라목에 따른 농공단지 : 70퍼센트 이하
//국토의 계획 및 이용에 관한 법률 시행령 84조 (용도지역안에서의 건폐율) 3항 5호
Check(EDLPUA_84_3_5){
IF CS THEN KS
}
CS{
getObjectProperty(Building.SpecialPurposeDistrict.type)="AgriculturalIndustrialComplex"
}
KS{
getBuildingToLandRatio()<=70%
}
(3) 하나의 건축물에 제1호, 제2호, 제4호부터 제7호까지, 제7호의2부터 제7호의5까지 및 제8호의 다중이용업 중 어느 하나 이상의 다중이용업과 학원이 함께 있는 경우
Check(ERSASP_2_0_3_나3){
IF CS THEN KS
}
CS{
getObjectProperty(Building.business)= "AEOPE_2_0_1"
}
KS{
getResult(ERSASP_2_0_1)= TRUE
OR getResult(ERSASP_2_0_2)= TRUE
OR getResult(ERSASP_2_0_4)= TRUE
OR getResult(ERSASP_2_0_5)= TRUE
OR getResult(ERSASP_2_0_6)= TRUE
OR getResult(ERSASP_2_0_7)= TRUE
OR getResult(ERSASP_2_0_7-2)= TRUE
OR getResult(ERSASP_2_0_7-3)= TRUE
OR getResult(ERSASP_2_0_7-4)= TRUE
OR getResult(ERSASP_2_0_7-5)= TRUE
OR getResult(ERSASP_2_0_8)= TRUE
}
5. 「게임산업진흥에 관한 법률」 제2조제6호ㆍ제6호의2ㆍ제7호 및 제8호의 게임제공업ㆍ인터넷컴퓨터게임시설제공업 및 복합유통게임제공업. 다만, 게임제공업 및 인터넷컴퓨터게임시설제공업의 경우에는 영업장(내부계단으로 연결된 복층구조의 영업장은 제외한다)이 지상 1층 또는 지상과 직접 접하는 층에 설치되고 그 영업장의 주된 출입구가 건축물 외부의 지면과 직접 연결된 구조에 해당하는 경우는 제외한다.
//다중이용업소의 안전관리에 관한 특별법 시행령 2조 (다중이용업) 5호
Check(ERSASP_2_0_5){
KS1 AND IF CS THEN !KS2
}
KS1{
getObjectProperty(Building.business)= "GIPA_2_0_6"
OR getObjectProperty(Building.business)= "GIPA_2_0_6-2"
OR getObjectProperty(Building.business)= "GIPA_2_0_7"
OR getObjectProperty(Building.business)= "GIPA_2_0_8"
}
CS{
getObjectProperty(Building.business)= "GIPA_2_0_6"
OR getObjectProperty(Building.business)= "GIPA_2_0_7"
}
KS2{
Space mySpace{
Space.usage = "GIPA_2_0_6"
OR Space.usage = "GIPA_2_0_7"
}
Floor myFloor{
hasObject(Floor,mySpace)=TRUE
}
Door myDoor{
isObjectProperty(mySpace.Door.isEntrance)=TRUE
}
(getObjectProperty(myFloor.number)=1
OR isDirectlyAccessible(myFloor, Ground)=TRUE)
isConnectedToExternal(myDoor)=TRUE
}
가. 각층마다 설치하되, 특정소방대상물의 각 부분으로부터 1개의 소화기까지의 보행거리가 소형소화기의 경우에는 20m 이내, 대형소화기의 경우에는 30m 이내가 되도록 배치할 것. 다만, 가연성물질이 없는 작업장의 경우에는 작업장의 실정에 맞게 보행거리를 완화하여 배치할 수 있으며, 지하구의 경우에는 화재발생의 우려가 있거나 사람의 접근이 쉬운 장소에 한하여 설치할 수 있다<개정 2012.6.11>
//소화기구 및 자동 소화장치의 화재안전기준(nfsc 101) 4조 (설치기준) 1항 4호 가목
Check(NFSC101_4_1_4){
KS
}
KS{
isInstalled(FireExtinguisher, Floor)=True
IF getObjectProperty(FireExtinguisher.sizeType)="SmallSize"
THEN getObjectDistance(SpecificFireFightingBuilding.Wall, FireExtinguisher.One)<=20 m
getObjectDistance(SpecificFireFightingBuilding.Column, FireExtinguisher.One)<=20 m
ELSE IF getObjectProperty(FireExtinguisher.sizeType)="LargeSize"
THEN getObjectDistance(SpecificFireFightingBuilding.Wall, FireExtinguisher.One)<=30 m
getObjectDistance(SpecificFireFightingBuilding.Column, FireExtinguisher.One)<=30 m
END IF
}