②조적식구조인 내력벽의 두께는 그 건축물의 층수·높이 및 벽의 길이에 따라 각각 다음 표의 두께 이상으로 하되, 조적재가 벽돌인 경우에는 당해 벽높이의 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
}
⑦조적식구조인 내력벽을 이중벽으로 하는 경우에는 제1항 내지 제6항의 규정은 당해 이중벽중 하나의 내력벽에 대하여 적용한다. 다만, 건축물의 최상층(1층인 건축물의 경우에는 1층을 말한다)에 위치하고 그 높이가 3미터를 넘지 아니하는 이중벽인 내력벽으로서 그 각벽 상호간에 가로·세로 각각 400밀리미터 이내의 간격으로 보강한 내력벽에 있어서는 그 각벽의 두께의 합계를 당해 내력벽의 두께로 본다.
②조적식구조인 칸막이벽의 바로 윗층에 조적식구조인 칸막이벽이나 주요 구조물을 설치하는 경우에는 당해 칸막이벽의 두께는 190밀리미터 이상으로 하여야 한다. 다만, 제34조의 규정에 의한 테두리보를 설치하는 경우에는 그러하지 아니하다.
// 건축물의 구조기준 등에 관한 규칙 33조 (칸막이벽 등의 두께) 2항
Check(RSSB_33_2){
getResult(RSSB_28_3) = TRUE AND getResult(RSSB_28_1) = TRUE AND getResult(RSSB_3_3) = TRUE AND IF (!CS1 AND CS2) THEN KS
}
Wall myWall{
isObjectProperty(Wall.isPartitionWall)=True
isObjectProperty(Wall.Structure.isMansoryStructure)=True
}
CS1{
getResult(RSSB_34)=True
}
CS2{
FN=getFloorNumber(myWall) //FN means myWall's floor number
Floor myFloor{
Floor.number=FN+1
}
isInstalled(myFloor, myWall)= True
OR isInstalled (myFloor, MainStructure)=True
}
KS{
getObjectThickness(myWall)>=190 mm
}
//건축물의 구조기준 등에 관한 규칙 33조 (칸막이벽 등의 두께) 3항
Check(RSSB_33_3){
getResult(RSSB_28_3) = TRUE AND getResult(RSSB_28_1) = TRUE AND getResult(RSSB_3_3) = TRUE AND KS
}
KS{
isObjectProperty(Wall.isPartitionWall)=True
isObjectProperty(Wall.Structure.isMansoryStructure)=True
}
제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
}
제36조(벽의 홈) 조적식구조인 벽에 그 층의 높이의 4분의 3이상인 연속한 세로홈을 설치하는 경우에는 그 홈의 깊이는 벽의 두께의 3분의 1이하로 하고, 가로홈을 설치하는 경우에는 그 홈의 깊이는 벽의 두께의 3분의 1이하로 하되, 길이는 3미터 이하로 하여야 한다.
//건축물의 구조기준 등에 관한 규칙 36조 (벽의 홈)
Check(RSSB_36){
getResult(RSSB_28_2) = TRUE AND getResult(RSSB_28_1) = TRUE AND getResult(RSSB_3_3) = TRUE AND IF CS THEN KS
}
CS{
Wall myWall{
isObjectProperty(Wall.Structure.isMansoryStructure)=True
}
isInstalled(Channel, myWall)=True
}
KS{
WD=getObjectProperty(myWall.depth)
IF getObjectProperty(Channel.shapeType)="VerticleChannel"
FH=getObjectHeight(Floor.Space)
getObjectProperty(Channel.length)>=FH*3/4
THEN getObjectProperty(Channel.depth)<= WD/3
ELSE IF getObjectProperty(Channel.shapeType)="HorizontalChannel"
THEN getObjectProperty(Channel.depth)<= WD/3
getObjectProperty(Channel.length)<= 3 m
END IF
}
3. 담의 길이 2미터 이내마다 담의 벽면으로부터 그 부분의 담의 두께 이상 튀어나온 버팀벽을 설치하거나, 담의 길이 4미터 이내마다 담의 벽면으로부터 그 부분의 담의 두께의 1.5배 이상 튀어나온 버팀벽을 설치할 것. 다만, 각 부분의 담의 두께가 제2호의 규정에 의한 담의 두께의 1.5배 이상인 경우에는 그러하지 아니하다.
//건축물의 구조기준 등에 관한 규칙 39조 (조적식구조인 담) 3호
Check(RSSB_39_0_3){
IF !CS THEN KS
}
CS{
}
KS{
FD = getObjectProperty(Fence.depth)
Wall myWall{
isObjectProperty(Wall.isSupportingWall) = TRUE
}
(isInstalled(myWall, Fence, b, 2) = TRUE
getObjectProperty(Wall.depth) >= FD)
OR (isInstalled(myWall, Fence, b, 4) = TRUE
getObjectProperty(Wall.depth) >= 1.5* 2호 규정에 의한 담의 두께)
}
제43조(내력벽) ①건축물의 각층에 있어서 건축물의 길이방향 또는 너비방향의 보강블록구조인 내력벽의 길이(대린벽의 경우에는 그 접합된 부분의 각 중심을 이은 선의 길이를 말한다. 이하 이 절에서 같다)는 각각 그 방향의 내력벽의 길이의 합계가 그 층의 바닥면적 1제곱미터에 대하여 0.15미터 이상이 되도록 하되, 그 내력벽으로 둘러쌓인 부분의 바닥면적은 80제곱미터를 넘을 수 없다.
// 건축물의 구조기준 등에 관한 규칙 43조 (내력벽) 1항
Check(RSSB_43_1){
getResult(RSSB_41_1) = TRUE AND getResult(RSSB_3_3) = TRUE AND KS
}
KS{
Wall myWall{
isObjectProperty(Wall.isLoadBearingWall) = TRUE
getObjectProperty(Wall.Structure.materialType) = "SteelReinforcedConcreteBlock"
}
FA =getObjectArea(Floor.One)
getObjectProperty(myWall.Length)>= FA*0.15 m
getObjectProperty(myWall.width)>= FA*0.15 m
Space mySpace{
isSurrounded(Space, myWall)=True
}
getFloorArea(mySpace)<=80 m2
}
// 건축물의 구조기준 등에 관한 규칙 51조 (철근을 덮는 두께) 2호 가목
Check(RSSB_51_0_2_가){
KS
}
KS{
getObjectThickness(Slab)>=20 mm
getObjectThickness(Wall)>=20 mm
getObjectThickness(BridgingJoist)>=20 mm
}
1. 내력벽의 최소두께는 벽의 최상단에서 4.5미터까지는 150밀리미터 이상이어야 하며, 각 3미터 내려감에 따라 10밀리미터씩의 비율로 증가시켜야 한다. 다만, 두께가 120밀리미터 이상의 경우로서 구조계산에 의하여 안전하다고 확인된 경우에는 그러하지 아니하다.
//건축물의 구조기준 등에 관한 규칙 54조 (내력벽의 구조) 1호
Check(RSSB_54_0_1){
IF !CS THEN KS
}
Wall myWall{
isObjectProperty(Wall.isLoadBearingWall)=True
}
CS{
getWallThickness(myWall)>=120 mmm
}
KS{
H1=getObjectHeight(myWall)
H2= H1-4.5 m
getWallThickness(myWall,H2,H1)>=150 mm
H3=getFloorElevationHeight(myWall.Floor)
getWallThickness(myWall,H3,H2,3 m, a)>=150+10*a
}
2. 내력벽의 배근은 9밀리미터 이상의 것을 450밀리미터 이하의 간격으로 하고, 벽두께의 3배 이하이어야 한다. 이 경우 벽의 두께가 200밀리미터 이상일 때에는 벽 양면에 복근으로 하여야 한다.
//건축물의 구조기준 등에 관한 규칙 54조 (내력벽의 구조) 2호
Check(RSSB_54_02){
KS
}
KS{
Wall myWall{
isObjectProperty(Wall.isLoadBearingWall)=True
}
Reinforcement myReinforcement{
getObjectProperty(Reinforcement.diameter)>=9 mm
}
isInstalled(myReinforcement, myWall, 450 mm)=True
//벽두께의 3배 이하이어야 한다.
IF getObjectProperty(myWall.depth)>=200 mm
THEN isInstalled(DoubleReinforcement, myWall, myWall.BothSides)=True
END IF
}
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
}
②가스보일러에 의한 난방설비를 설치하고 가스를 중앙집중공급방식으로 공급하는 경우에는 제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
}
3) 구성재료의 열전도율 값으로 열관류율을 계산한 결과가 별표1의 부위별 열관류율 기준을 만족하는 경우 적합한 것으로 본다.(단, 각 재료의 열전도율 값은 한국산업규격 또는 국가공인시험기관의 KOLAS 인정마크가 표시된 시험성적서의 값을 사용하고, 표면열전달저항 및 중공층의 열저항은 이 기준 별표5 및 별표6에서 제시하는 값을 사용)
가. 바닥난방 부위에 설치되는 단열재는 바닥난방의 열이 슬래브 하부 및 측벽으로 손실되는 것을 막을 수 있도록 온수배관(전기난방인 경우는 발열선) 하부와 슬래브 사이에 설치하고, 온수배관(전기난방인 경우는 발열선) 하부와 슬래브 사이에 설치되는 구성 재료의 열저항의 합계는 층간 바닥인 경우에는 해당 바닥에 요구되는 총열관류저항(별표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
}
제22조(건축물의 에너지 소요량의 평가방법) 건축물 에너지소요량은 ISO 13790 등 국제규격에 따라 난방, 냉방, 급탕, 조명, 환기 등에 대해 종합적으로 평가하도록 제작된 프로그램에 따라 산출된 연간 단위면적당 1차 에너지소요량 등으로 평가하며, 별표10의 평가기준과 같이 한다.
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
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 3조 (내화구조) 1호
Check (REFB_3_0_1){
IF CS THEN KS
}
CS{
isInstalled(Wall) = TRUE
}
KS{
getResult(REFB_3_0_1_가)=TRUE
getResult(REFB_3_0_1_나)=TRUE
getResult(REFB_3_0_1_다)=TRUE
getResult(REFB_3_0_1_라)=TRUE
getResult(REFB_3_0_1_마)=TRUE
}
다. 철재로 보강된 콘크리트블록조ㆍ벽돌조 또는 석조로서 철재에 덮은 콘크리트블록등의 두께가 5센티미터 이상인 것
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 3조 (내화구조) 1호 다목
Check (REFB_3_0_1_다){
IF CS THEN KS
}
CS{
getObjectProperty(Wall.Structure.materialType) = "ConcreteBlock" OR "Brick" OR "Stone"
isObjectProperty(Structure.isReinforcedSteelStructure) = TRUE
}
KS{
getObjectThickness(Wall.Structure) >= 5cm
}
마. 고온ㆍ고압의 증기로 양생된 경량기포 콘크리트패널 또는 경량기포 콘크리트블록조로서 두께가 10센티미터 이상인 것
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 3조 (내화구조) 1호 마목
Check (REFB_3_0_1_마){
KS
}
KS{
getObjectProperty(Wall.Structure.materialType) = "AeratedConcretePanel" OR "AeratedConcreteBlock"
getObjectThickness(Wall.Structure) >= 10cm
}
5. 거실의 벽 및 반자가 실내에 면하는 부분(반자돌림대ㆍ창대 그 밖에 이와 유사한 것을 제외한다. 이하 이 조에서 같다)의 마감은 불연재료ㆍ준불연재료 또는 난연재료로 하고, 그 거실로부터 지상으로 통하는 주된 복도ㆍ계단 그밖에 통로의 벽 및 반자가 실내에 면하는 부분의 마감은 불연재료 또는 준불연재료로 할 것
// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 14조의2 (복합건축물의 피난시설 등) 5호
Check(REFB_14-2_0_5){
KS
}
KS{
Object myObject{
getObject(Room.wall)
getObject(Room.CeilingCovering)
}
Corridor myCorridor{
isGoThrough(Room, Corridor, Ground )=True
}
Stair myStair{
isGoThrough(Room,Stair, Ground )=True
}
Passage myPassage{
isGoThrough(Room,Passage, Ground )=True
}
Space mySpace{
Space.usage==myCorridor.usage
OR Space.usage==myStair.usage
OR Space.usage=myPassage.usage
}
Object myObject2{
getObject(mySpace.wall)
getObject(mySpace.CeilingCovering)
}
( isObjectProperty(myObject.InteriorFinish.Material.nonCombustibility)=True
OR isObjectProperty(myObject.InteriorFinish.Material.quasiNonCombustibility)=True
OR isObjectProperty(myObject.InteriorFinish.Material.flameResistance)= True
)
isObjectProperty(myObject2.InteriorFinish.Material.nonCombustibility)=True
OR isObjectProperty(myObject2.InteriorFinish.Material.quasiNonCombustibility)=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
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
}
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
}
①법 제52조제1항에 따라 영 제61조제1항 각 호의 건축물에 대하여는 그 거실의 벽 및 반자의 실내에 접하는 부분(반자돌림대·창대 기타 이와 유사한 것을 제외한다. 이하 이 조에서 같다)의 마감은 불연재료·준불연재료 또는 난연재료로 하여야 하며, 그 거실에서 지상으로 통하는 주된 복도·계단 기타 통로의 벽 및 반자의 실내에 접하는 부분의 마감은 불연재료 또는 준불연재료로 하여야 한다. <개정 2005.7.22, 2010.4.7, 2010.12.30>
check(REFB_24_1){
KS}
KS{
(check(EDBA_61_1_1)=TRUE
OR check(EDBA_61_1_2)=TRUE
OR check(EDBA_61_1_3)=TRUE
OR check(EDBA_61_1_4)=TRUE)
OR check(EDBA_61_1_5)=TRUE)
OR check(EDBA_61_1_6)=TRUE)
OR check(EDBA_61_1_7)=TRUE)
AND (getObjectProperty(Room.Wall.Material.noncombustible)= TRUE
AND (getObjectProperty(CeilingCornice | WindowSill.Material.noncombustible)= TRUE
OR !(getObjectProperty(CeilingCornice | WindowSill.Material.noncombustiblel)= TRUE)
AND (isGoThrough(Room, Corridor | Stair | Passage,Ground)= TRUE
AND (isFireResistant(getWall(Corridor))=TRUE
AND isFireResistant(getWall(Stair))=TRUE
AND isFireResistant(getWall(Passage))=TRUE
AND isFireResistant(getObject(CeilingCovering))=TRUE)
}
②영 제61조제1항 각 호의 건축물 중 다음 각 호의 어느 하나에 해당하는 거실의 벽 및 반자의 실내에 접하는 부분의 마감은 제1항에도 불구하고 불연재료 또는 준불연재료로 하여야 한다. <개정 2003.1.6, 2005.7.22, 2006.6.29, 2010.4.7, 2010.12.30>
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 24조 (건축물의 마감재료) 2항
check(REFB_24_2){
IF CS THEN KS
}
CS{
getResult(REFB_24_2_1)=TRUE
OR getResult(REFB_24_2_2)=TRUE
}
KS{
(isObjectProperty(CeilingCovering.InteriorFinish.Material.nonCombustibility)=TRUE
OR isObjectProperty(CeilingCovering.InteriorFinish.Material.quasiNonCombustibility)=TRUE )
(isObjectProperty(Room.Wall.InteriorFinish.Material.nonCombustibility)=TRUE
OR isObjectProperty(Room.Wall.InteriorFinish.Material.quasiNonCombustibility)=TRUE
)
}
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 3조 (내화구조) 1호 가목
Check (REFB_3_0_1_가){
KS
}
KS{
getObjectProperty(Wall.Structure.materialType) = "ReinforcedConcrete" OR "SteelFramedReinforcedConcrete"
getWallThickness(Wall) >= 10cm
}
① 법 제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
}
① 법 제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
}
① 법 제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
}
가. 각층마다 설치하되, 특정소방대상물의 각 부분으로부터 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
}
// 연소방지설비의 화재안전기준(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
}
1. 계단에 설치하는 것을 제외하고는 각층마다 복도 및 통로의 각 부분으로부터 하나의 유도표지까지의 보행거리가 15m 이하가 되는 곳과 구부러진 모퉁이의 벽에 설치할 것
//유도등 및 유도표지의 화재안전기준(nfsc 303) 8조 (유도표지 설치기준) 1항 1호
Check(NFSC303_8_1_1){
IF ! CS THEN KS
}
CS{
isInstalled(LeadingSign,Stair)=True
}
KS{
getObjectDistance(Floor.One.Corridor.Wall, LeadingSign)<=15 m
getObjectDistance(Floor.One.Corridor.Column, LeadingSign)<=15 m
getObjectDistance(Floor.One.Passage.Wall, LeadingSign)<=15 m
getObjectDistance(Floor.One.Passage.Column, LeadingSign)<=15 m
}