1
19388
건축물의 설비기준 등에 관한 규칙 제 13조 1 항 1호
1. 보일러는 거실외의 곳에 설치하되, 보일러를 설치하는 곳과 거실사이의 경계벽은 출입구를 제외하고는 내화구조의 벽으로 구획할 것
// 건축물의 설비기준 등에 관한 규칙 13조 (개별난방설비) 1항 1호
Check(RFB_13_1_1){
KS
}
KS{
hasSpace(Room, Boiler) = FALSE
Room myRoom{
hasSpace(Room, Boiler) = TRUE
}
Room myRoom2{
hasAdjacent(myRoom, Room) = TRUE
}
Wall myWall{
isPartitioned(myRoom, myRoom2, Wall) = TRUE
hasObject(Wall, Door.isEntrance ) = FALSE
isObjectProperty(Wall.isfireResistantStructure) = TRUE
}
isExist(myWall) = TRUE
}
Python Code 변환 예정
Modify
2
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
3
72673
건축물의 에너지절약설계기준 제 5조 11호 다 목
다. "전압강하”라 함은 인입전압(또는 변압기 2차전압)과 부하측전압과의 차를 말하며 저항이나 인덕턴스에 흐르는 전류에 의하여 강하하는 전압을 말한다.
// 비상콘센트설비의 화재안전기준(nfsc 504) 4조 (전원 및 콘센트 등) 5항 3호 가목
Check(NFSC504_4_5_3_1){
IF CS THEN KS
}
Door myDoor{
isObjectProperty(Door.isEntrance ) = TRUE
}
Floor myFloor{
getFloorNumber(Floor) < 0
}
CS{
getFloorArea(myFloor) >= 3000m2
}
KS{
getObjectDistance(myDoor.Stair.Space, EmergencyPowerOutlet) > 25m
OR getObjectDistance(myDoor.Stair.AncillaryRoom, EmergencyPowerOutlet) > 25m
}
Python Code 변환 예정
Modify
4
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
5
19467
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 10조 1 항
제10조(관람석등으로부터의 출구의 설치기준) ①영 제38조 각호의 1에 해당하는 건축물의 관람석 또는 집회실로부터 바깥쪽으로의 출구로 쓰이는 문은 안여닫이로 하여서는 아니된다.
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 10조 (관람석등으로부터의 출구의 설치기준) 1항
check(REFB_10_1){
Space mySpace = getSpace("Auditorium") + getSpace("AssemblyHall")
Door myExit {
isAccessible(mySpace, Door) = TRUE
isObjectProperty(Door.isEntrance ) = TRUE
}
getObjectProperty(myExit.panelOperationType) != "OpeningInDoor"
}
SUCCESS
theater_code = '00000'
std_floor_area = 300
theater_code_label = '관람석 공간분류코드'
std_floor_area_label = '기준 바닥면적'
def Check():
for building in SELECT('building'):
bldg_use = building.SELECT('building type').STRING()
sub_use = building.SELECT('prop', '세부용도').STRING()
for storey in building.SELECT('storey'):
for space in storey.SELECT('space'):
if space.SELECT('name').STRING() not in ['관람석', '집회실':
continue
for door in space.Select('door'):
if door.SELECT('type') is '안여닫이' :
door.ERROR('본 공간의 문은 안여닫이입니다.')
else:
door.SUCCESS('본 공간의 문은 안여닫이가 아닙니다.')
Modify
6
19469
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 10조 2 항 1호
1. 관람석별로 2개소 이상 설치할 것
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 10조 (관람석등으로부터의 출구의 설치기준) 2항 1호
check(REFB_10_2_1){
Door myExit {
Door.Space.name = "individualSeats"
getFloorArea(Door.Space) >= 300
isObjectProperty(Door.isEntrance ) = TRUE
}
getObjectCount(myExit) >= 2
}
SUCCESS
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.SUCESS('검토 대상 건물이 아닙니다.')
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
7
19470
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 10조 2 항 2호
2. 각 출구의 유효너비는 1.5미터 이상일 것
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 10조 (관람석등으로부터의 출구의 설치기준) 2항 2호
check(REFB_10_2_2){
Door myExit {
Door.Space.name = "individualSeats"
getFloorArea(Door.Space) >= 300
isObjectProperty(Door.isEntrance ) = TRUE
}
getObjectWidth(myExit) >= 1.5m
}
SUCCESS
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.SUCESS('검토 대상 건물이 아닙니다.')
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
8
19471
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 10조 2 항 3호
3. 개별 관람석 출구의 유효너비의 합계는 개별 관람석의 바닥면적 100제곱미터마다 0.6미터의 비율로 산정한 너비 이상으로 할 것
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 10조 (관람석등으로부터의 출구의 설치기준) 2항 3호
check(REFB_10_2_3){
Door myExit {
Door.Space.name = "individualSeats"
getFloorArea(Door.Space) >= 300
isObjectProperty(Door.isEntrance ) = TRUE
}
getTotalObjectWidth(myExit) >= getFloorArea(myExit.Space)/100*0.6
}
SUCCESS
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.SUCESS('검토 대상 건물이 아닙니다.')
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
9
19484
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 12조
제12조(회전문의 설치기준) 영 제39조제2항의 규정에 의하여 건축물의 출입구에 설치하는 회전문은 다음 각 호의 기준에 적합하여야 한다. <개정 2005.7.22.>
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 12조 (회전문의 설치기준)
Check(REFB_12){
IF CS THEN KS
}
CS {
Door myDoor {
isObjectProperty(Door.isEntrance ) = TRUE
Door.panelOperationType=“RevolvingDoor”
}
isExist(myDoor) = TRUE
}
KS {
getResult(REFB_12_1)=TRUE
}
Python Code 변환 예정
Modify
10
19602
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 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 변환 예정
Modify
11
19611
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 30조 3호 가 목
가. 출입구를 제외한 부분은 해당 건축물의 다른 부분과 내화구조의 바닥 및 벽으로 구획할 것
// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 30조 (피난용승강기의 설치기준) 3호 가목
check(REFB_30_0_3_가){
KS
}
KS{
FloorSlab myFloorSlab{
isFireResistantStructure(FloorSlab) = TRUE
}
Wall myWall{
isFireResistantStructure(Wall) = TRUE
}
Door myDoor{
isObjectProperty(Door.isEntrance ) = TRUE
}
Object myElement{
getObject(Space.Object) - getObject(myDoor)
}
isPartitioned(myElement, , myFloorSlab) = TRUE
isPartitioned(myElement, , myWall) = TRUE
}
Python Code 변환 예정
Modify
12
19612
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 30조 3호 나 목
나. 출입구에는 갑종방화문을 설치할 것
// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 30조 (피난용승강기의 설치기준) 3호 나목
check(REFB_30_0_3_나){
KS
}
KS{
Door myDoor{
isObjectProperty(Door.isEntrance ) = TRUE
}
isObjectProperty(myDoor.isStrictFireproofDoor) = TRUE
}
Python Code 변환 예정
Modify
13
25218
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 11조 1 항
①영 제39조제1항의 규정에 의하여 건축물의 바깥쪽으로 나가는 출구를 설치하는 경우 피난층의 계단으로부터 건축물의 바깥쪽으로의 출구에 이르는 보행거리(가장 가까운 출구와의 보행거리를 말한다. 이하 같다)는 영 제34조제1항의 규정에 의한 거리이하로 하여야 하며, 거실(피난에 지장이 없는 출입구가 있는 것을 제외한다)의 각 부분으로부터 건축물의 바깥쪽으로의 출구에 이르는 보행거리는 영 제34조제1항의 규정에 의한 거리의 2배 이하로 하여야 한다.
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 11조 (건축물의 바깥쪽으로의 출구의 설치기준) 1항
Check(REFB_11_1){
IF CS THEN KS1 AND KS2
}
CS {
Door myDoor{
isObjectProperty(Door.isEntrance )=TRUE
}
isExist(myDoor)
}
KS1 {
Floor myFloor{
isObjectProperty(Floor.isEscape)=TRUE
}
getObjectDistance(myFloor.Stair, myDoor,a) <= EDBA_34_1.distance
}
KS2 {
getObjectDistance(Room, myDoor) <= (EDBA_34_1.distance)*2
}
Python Code 변환 예정
Modify
14
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
15
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
16
25221
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 11조 4 항
④판매시설의 용도에 쓰이는 피난층에 설치하는 건축물의 바깥쪽으로의 출구의 유효너비의 합계는 해당 용도에 쓰이는 바닥면적이 최대인 층에 있어서의 해당 용도의 바닥면적 100제곱미터마다 0.6미터의 비율로 산정한 너비 이상으로 하여야 한다. <개정 2010.4.7>
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 11조 (건축물의 바깥쪽으로의 출구의 설치기준) 4항
Check(REFB_11_4){
IF CS THEN KS
}
CS {
Floor myFloor{
getObjectUsage(Floor) = “CommercialFacility”
isObjectProperty(Floor.isEscape)=TRUE
}
Door myDoor{
isObjectProperty(Door.isEntrance )=TRUE
}
hasObject(myFloor,myDoor) = TRUE
}
KS{
myFloor.myDoor.effectiveWidth >=
}
Python Code 변환 예정
Modify
17
25229
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 11조 6 항
⑥법 제39조제1항에 따라 영 제39조제1항 각 호의 어느 하나에 해당하는 건축물의 바깥쪽으로 나가는 출입문에 유리를 사용하는 경우에는 안전유리를 사용하여야 한다. <신설 2006.6.29>
// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 11조 (건축물의 바깥쪽으로의 출구의 설치기준) 6항
Check(REFB_11_6){
KS
}
KS{
Door myDoor{
isObjectProperty(Door.isEntrance )=TRUE
}
IF getObjectMaterial(myDoor)="Glass"
THEN getObjectType(Glass)="Safety"
}
Python Code 변환 예정
Modify
18
25319
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 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 변환 예정
Modify
19
25453
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 13조 3 항 4호
4. 출입구는 유효너비 0.9미터 이상으로 하고, 그 출입구에는 갑종방화문을 설치할 것
// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 13조 (헬리포트 및 구조공간 설치 기준) 3항 4호
Check(REFB_13_3_4){
KS
}
KS{
isObjectProperty(Door.isEntrance )=True
getObjectProperty( myDoor.effectiveWidth) > 0.9 m
isObjectProperty(Door.isStrictFireproofDoor)=True
Python Code 변환 예정
Modify
20
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
21
27881
건축법 제 49조 1 항
① 대통령령으로 정하는 용도 및 규모의 건축물과 그 대지에는 국토교통부령으로 정하는 바에 따라 복도, 계단, 출입구, 그 밖의 피난시설과 저수조(貯水槽), 대지 안의 피난과 소화에 필요한 통로를 설치하여야 한다. <개정 2013.3.23, 2018.4.17>
//건축법 49조 (건축물의 피난시설 및 용도제한 등) 1항
Check(BA_49_1){
IF CS THEN KS
}
CS{
getResult(EDBA_34_2)= TRUE
OR getResult(EDBA_35_1) = TRUE
OR getResuLt(EDBA_35_2) = TRUE
OR getResuLt(EDBA_35_3) = TRUE
OR getResuLt(EDBA_35_5) = TRUE
OR getResult (EDBA_38) = TRUE
OR getResuLt(EDBA_39_1) = TRUE
OR getResuLt(EDBA_39_2) = TRUE
}
KS{
Door myDoor{
isObjectProperty(Door.isEntrance )=TRUE
}
isExist(Corridor) = TRUE
isExist(Stair) = TRUE
isExist(myDoor) = TRUE
isExist(EvacuationFacility) = TRUE
isExist(FireHydrant) = TRUE
isExist(Tank) = TRUE
isExist(ExtinguishingSystem)= TRUE
isExist(Passage)=True
getResult(REFB_11_1)= TRUE
getResult(REFB_11_2)= TRUE
getResult(REFB_11_3)= TRUE
getResult(REFB_11_4)= TRUE
getResult(REFB_11_5)= TRUE
}
Python Code 변환 예정
Modify
22
36588
건축법 시행령 제 38조
제38조 (관람석 등으로부터의 출구 설치) 법 제49조제1항에 따라 다음 각 호의 어느 하나에 해당하는 건축물에는 국토해양부령으로 정하는 기준에 따라 관람석 또는 집회실로부터의 출구를 설치하여야 한다.
//건축법 시행령 38조(관람석 등으로부터의 출구 설치)
Check(EDBA_38){
IF (CS) THEN KS ENDIF
}
CS{
getResult(EDBA_38_0_1) = TRUE
OR getResult(EDBA_38_0_2) = TRUE
OR getResult(EDBA_38_0_3) = TRUE
OR getResult(EDBA_38_0_4) = TRUE
OR getResult(EDBA_38_0_5) = TRUE
}
KS {
Space mySpace = getSpace("Auditorium")+getSpace("AssemblyHall")
Door myExit {
isObjectProperty(Door.isEntrance ) = TRUE
isAccessible(mySpace, Door) = TRUE
getResult(REFB_10_1) = TRUE
}
hasElement(mySpace, myExit)=TRUE
}
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
23
36590
건축법 시행령 제 39조 1 항
① 법 제49조제1항에 따라 다음 각 호의 어느 하나에 해당하는 건축물에는 국토해양부령으로 정하는 기준에 따라 그 건축물로부터 바깥쪽으로 나가는 출구를 설치하여야 한다.
// 건축법 시행령 39조 (건축물 바깥쪽으로의 출구 설치) 1항
Check(EDBA_39_1){
IF CS THEN KS
}
CS {
getResult(EDBA_39_1_1) = TRUE
OR getResult(EDBA_39_1_2) = TRUE
OR getResult(EDBA_39_1_3) = TRUE
OR getResult(EDBA_39_1_4) = TRUE
OR getResult(EDBA_39_1_5) = TRUE
OR getResult(EDBA_39_1_6) = TRUE
OR getResult(EDBA_39_1_7) = TRUE
OR getResult(EDBA_39_1_8) = TRUE
OR getResult(EDBA_39_1_9) = TRUE
OR getResult(EDBA_39_1_10) = TRUE
}
KS {
Door myDoor{
isObjectProperty(Door.isEntrance )=TRUE
}
isExist(myDoor)=TRUE
getResult(REFB_11_1)=TRUE
getResult(REFB_11_2)=TRUE
getResult(REFB_11_3)=TRUE
getResult(REFB_11_4)=TRUE
getResult(REFB_11_5)=TRUE
getResult(REFB_11_6)=TRUE
}
target_bldg_type_1 = ['제2종 근린생활시설', '문화 및 집회시설', '종교시설', '판매시설', '업무시설', '창고시설', '교육연구시설', '장례시설', '승강기를 설치하여야하는 건축물']
target_bldg_sub_type_2 = ['판매시설']
max_route_length_stair_to_door = 30
max_route_length_space_to_door = 60
min_em_door_count = 2
min_em_door_h = 1.5
min_em_door_w = 0.75
target_bldg_types_1_label = '외부 출입구 방향 적용 대상 건출물 용도'
target_bldg_types_2_label = '외부 출입구 유효너비 대상 건출물 용도'
max_route_length_stair_to_door_label = '직통계단과 외부 출입구 간 최소거리'
max_route_length_space_to_door_label = '거실과 외부 출입구 간 최소거리'
min_em_door_count_label = '최소 비상구 개수'
min_em_door_h_label = '최소 비상구 높이'
min_em_door_w_label = '최소 비상구 유효너비'
def Check():
for building in SELECT('building'):
bldg_type = building.SELECT('building type').STRING()
sub_type = building.SELECT('prop', '세부용도').STRING()
if (bldg_type in target_bldg_type_1):
if bldg_type == '제2종 근린생활시설' and sub_type in ['공연장', '종교집회장', '인터넷컴퓨터게임시설제공업소']:
message = '검토 대상 건물이 아닙니다.' + '(용도:' + bldg_type + ', 세부용도:' + sub_type + ' )'
SUCCESS(message)
break
elif bldg_type == '문화 및 집회시설' and sub_type in ['전시장', '동물원', '식물원']:
message = '검토 대상 건물이 아닙니다.' + '(용도:' + bldg_type + ', 세부용도:' + sub_type + ' )'
SUCCESS(message)
break
elif bldg_type == '업무시설' and sub_type == '청사':
message = '검토 대상 건물이 아닙니다.' + '(용도:' + bldg_type + ', 세부용도:' + sub_type + ' )'
SUCCESS(message)
break
elif bldg_type == '교육연구시설' and sub_type == '학교':
message = '검토 대상 건물이 아닙니다.' + '(용도:' + bldg_type + ', 세부용도:' + sub_type + ' )'
SUCCESS(message)
break
message = '검토 대상 건물입니다.' + '(용도:' + bldg_type + ', 세부용도:' + sub_type + ' )'
SUCCESS(message)
else:
message = '검토 대상 건물이 아닙니다.' + '(용도:' + bldg_type + ', 세부용도:' + sub_type + ' )'
SUCCESS(message)
break
evac_storey_exist = False
stories = building.SELECT('storey')
for storey in stories:
if storey.SELECT('is evacuation storey').BOOL() == True:
evac_storey_exist = True
break
if evac_storey_exist == False:
ERROR('피난층이 존재하지 않습니다.')
return
for storey in stories:
stairs = storey.SELECT('direct stair')
if stairs.COUNT() == 0:
storey.ERROR(storey.SELECT('name').STRING() + '에 직통계단이 존재하지 않습니다.')
continue
exDoors = []
for door in storey.SELECT('door'):
if door.SELECT('is external').BOOL() == True:
exDoors.append(door)
for stair in stairs:
route_length = -1
for route in stair.SELECT('escape route', exDoors):
length = route.SELECT('length').UNIT('m').NUMBER()
if length > 0:
if route_length < 0:
route_length = length
else:
route_length = min([route_length, length])
if route_length < 0:
stair.ERROR(stair.SELECT('name').STRING() + '부터 외부 출입구까지 갈 수 없다.')
elif route_length > max_route_length_stair_to_door:
stair.ERROR(stair.SELECT('name').STRING() + '부터 외부 출입구까지의 거리가 멀다 : ' + str(route_length))
else:
stair.SUCCESS(stair.SELECT('name').STRING() + ' : ' + str(route_length))
spaces = storey.SELECT('space')
for space in spaces:
route_length = -1
for route in space.SELECT('escape route', exDoors):
length = route.SELECT('length').UNIT('m').NUMBER()
if length > 0:
if route_length < 0:
route_length = length
else:
route_length = min([route_length, length])
if route_length < 0:
space.ERROR(space.SELECT('name').STRING() + '부터 외부 출입구까지 갈 수 없다.')
elif route_length > max_route_length_space_to_door:
space.ERROR(space.SELECT('name').STRING() + '부터 외부 출입구까지의 거리가 멀다 : ' + str(route_length))
else:
space.SUCCESS(space.SELECT('name').STRING() + ' : ' + str(route_length))
if bldg_type in target_bldg_types_1:
for door in exDoors:
if door.SELECT('is inward').BOOL():
door.ERROR('외부 출입구의 방향이 안여닫이입니다.')
for space in spaces:
code = space.SELECT('class code').STRING()
if not code in theater_space_codes:
continue
area = space.SELECT('area').UNIT('m2').NUMBER()
if area < 300:
continue
emExits = []
for door in space.SELECT('space door'):
if door.SELECT('prop', '비상구').BOOL() or door.SELECT('prop', '보조출입구').BOOL():
emExits.append(door)
if len(emExits) < min_em_door_count:
space.ERROR('비상구(보조출입구) 개수:' + str(len(emExits)) + '(<' + str(min_em_door_count) + ')')
continue
em_exit_count = 0
for exit in emExits:
if exit.SELECT('clear opening').UNIT('m').NUMBER() >= min_em_door_w and exit.SELECT('height').UNIT('m').NUMBER() >= min_em_door_h:
em_exit_count += 1
if em_exit_count < min_em_door_count:
space.ERROR('기준(' + str(min_em_door_w) + 'X' + str(min_em_door_h) + ')을 충족하는 비상구(보조출입구) 개수:' + str(em_exit_count) + '(<' + str(min_em_door_count) + ')')
else:
space.SUCCESS('기준(' + str(min_em_door_w) + 'X' + str(min_em_door_h) + ')을 충족하는 비상구(보조출입구) 개수:' + str(em_exit_count) + '(>=' + str(min_em_door_count) + ')')
if bldg_type in target_bldg_types_2:
if storey.SELECT('is evacuation storey').BOOL() == False:
continue
max_area = 0;
for space in spaces:
area = space.SELECT('area').UNIT('m2').NUMBER()
if area > max_area:
max_area = area
min_door_w = max_area / 100 * 0.6;
for door in exDoors:
width = door.SELECT('clear opening').UNIT('m')
w = width.NUMBER()
if (w < min_door_w):
width.ERROR('출구 유효너비:' + str(w) + '(<' + str(min_door_w) + ')')
else:
width.SUCCESS('출구 유효너비:' + str(w) + '(>=' + str(min_door_w) + ')')
Modify
24
36600
건축법 시행령 제 39조 2 항
② 법 제49조제1항에 따라 건축물의 출입구에 설치하는 회전문은 국토해양부령으로 정하는 기준에 적합하여야 한다.
// 건축법 시행령 39조 (건축물 바깥쪽으로의 출구 설치) 2항
Check(EDBA_39_2){
IF CS THEN KS
}
CS {
Door myDoor {
isObjectProperty(Door.isEntrance ) = TRUE
Door.panelOperationType=“RevolvingDoor”
}
isExist(myDoor) = TRUE
}
KS {
getResult(REFB_11_2)=TRUE
}
Python Code 변환 예정
Modify
25
36606
건축법 시행령 제 44조
제44조 (피난 규정의 적용례) 건축물이 창문, 출입구, 그 밖의 개구부(開口部)(이하 "창문등"이라 한다)가 없는 내화구조의 바닥 또는 벽으로 구획되어 있는 경우에는 그 구획된 각 부분을 각각 별개의 건축물로 보아 제34조부터 제41조까지를 적용한다.
//건축법 시행령 44조 (피난 규정의 적용례)
Check(EDBA_44){
IF CS THEN KS
}
CS{
Door myDoor{
isObjectProperty(Door.isEntrance )=True
}
Object myElement {
getObject(Window)
getObject(Opening)
getObject(myDoor)
}
FloorSlab myFloorSlab{
getObjectProperty(FloorSlab.isFireResistantStructure)=True
}
Wall myWall{
getObjectProperty(FloorSlab.isFireResistantStructure)=True
hasObject(Wall, myElement) =False
}
isFirePartition(Building, myFloorSlab)=True
OR isFirePartition(Building, myWall)=True
}
KS{
getResult(EDBA_34)=True
getResult(EDBA_35)=True
getResult(EDBA_36)=True
getResult(EDBA_37)=True
getResult(EDBA_38)=True
getResult(EDBA_39)=True
getResult(EDBA_40)=True
getResult(EDBA_41)=True
}
Python Code 변환 예정
Modify
26
19890
다중이용업소의 안전관리에 관한 특별법 시행령 제 2조 5호
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
}
Python Code 변환 예정
Modify
27
20122
연소방지설비의 화재안전기준(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 변환 예정
Modify
28
19966
유도등 및 유도표지의 화재안전기준(NFSC 303) 제 5조 1 항 1호
1. 옥내로부터 직접 지상으로 통하는 출입구 및 그 부속실의 출입구
//유도등 및 유도표지의 화재안전기준(nfsc 303) 5조 (피난구유도등) 1항 1호
Check(NFSC303_5_1_1){
KS
}
KS{
Door myDoor {
isObjectProperty(Door.isEntrance )=True
isDirectlyAccessible(Door, Ground)=True
}
LeadingLight myLeadingLight{
isObjectProperty(LeadingLight.isForExit)=True
}
isEnstalled(myLeadingLight,myDoor)=True
IF hasObject(AncillaryRoom, myDoor)=True
THEN isEnstalled(myLeadingLight, AncillaryRoom )=True
}
Python Code 변환 예정
Modify
29
19967
유도등 및 유도표지의 화재안전기준(NFSC 303) 제 5조 1 항 2호
2. 직통계단·직통계단의 계단실 및 그 부속실의 출입구
//유도등 및 유도표지의 화재안전기준(nfsc 303) 5조 (피난구유도등) 1항 2호
Check(NFSC303_5_1_2){
KS
}
KS{
Stair myStair {
isObjectProperty(Stair.isDirect)=True
}
Door myDoor{
isObjectProperty(Door.isEntrance )=True
OR hasObject( myStair, Door)=True
OR hasObject(myStair.Space,Door)=True
OR hasObject(myStair.AncillaryRoom,Door)=True
}
LeadingLight myLight{
isObjectProperty(LeadingLight.isForExit)=True
}
isEnstalled(myLight,myDoor)=True
}
Python Code 변환 예정
Modify
30
19968
유도등 및 유도표지의 화재안전기준(NFSC 303) 제 5조 1 항 3호
3. 제1호와 제2호에 따른 출입구에 이르는 복도 또는 통로로 통하는 출입구
//유도등 및 유도표지의 화재안전기준(nfsc 303) 5조(피란구유도등) 1항 3호
Check(NFSC303){
KS
}
Door myDoor{
isObjectProperty(Door.isEntrance )=True
(OR hasObject( myStair, Door)=True
OR hasObject(myStair.Space,Door)=True
OR hasObject(myStair.AncillaryRoom,Door)=True)
OR isDirectlyAccessible(Door, Ground)=True
}
LeadingLight myLeadingLight{
isObjectProperty(LeadingLight.isForExit)=True
}
Passage myPassage{
isAccessible(myDoor, Passage)=True
}
Corridor myCorriodr{
isAccessible(myDoor, Corridor)=True
}
Door myDoor2{
isObjectProperty(Door.isEntrance )=True
isAccessible(myPassage, Door)=True
or isAccessible(myCorridor, Door)=True
}
isInstalled(myLeadingLight, myDoor2)=True
}
Python Code 변환 예정
Modify
31
19990
유도등 및 유도표지의 화재안전기준(NFSC 303) 제 8조의2조 2 항 1호
1. 구획된 각 실로부터 주출입구 또는 비상구까지 설치할 것
// 유도등 및 유도표지의 화재안전기준(nfsc 303) 8조의2 (피난유도선 설치기준) 2항 1호
Check(NFSC303_8-2_2_1){
KS
}
KS{
Door myDoor{
isObjectProperty(Door.isEntrance ) = TRUE
getObjectProperty(Door.functionType) = "Main"
}
Door myDoor2{
getObjectProperty(Door.functionType) = "Emergency"
}
getObjectCountInInterval(LeadingLine, Room, myDOor) >=1
OR getObjectCountInInterval(LeadingLine, Rom, myDoor2) >=1
}
Python Code 변환 예정
Modify
32
19995
장애인ㆍ노인ㆍ임산부 등의 편의증진 보장에 관한 법률 시행규칙 제 별표1조
1. 장애인등의 통행이 가능한 접근로
가. 유효폭 및 활동공간
(1) 휠체어사용자가 통행할 수 있도록 접근로의 유효폭은 1.2미터 이상으로 하여야 한다.
(2) 휠체어사용자가 다른 휠체어 또는 유모차 등과 교행할 수 있도록 50미터마다 1.5미터×1.5미터 이상의 교행구역을 설치할 수 있다.
(3) 경사진 접근로가 연속될 경우에는 휠체어사용자가 휴식할 수 있도록 30미터마다 1.5미터×1.5미터 이상의 수평면으로 된 참을 설치할
//장애인ㆍ노인ㆍ임산부 등의 편의증진보장에 관한 법률 시행규칙 별표1 편의시설의 구조·재질등에 관한 세부기준(제2조제1항관련)
Check(ERCDAPA_2_1_*_1_4_나_1){
IF (CS1 THEN KS1) OR (CS2 THEN KS2)
ParkingUnit myParkingUnit{
isObjectProperty(ParkingUnit.isParallelParking) = TRUE
}
CS1{
isObjectProperty(ParkingUnit.isParallelParking) = TRUE
}
KS1{
getObjectWidth(ParkingLotArea.isHandicapParking, a) >= 3.3 m
getElementLength(ParkingLotArea.isHandicapParking) >= 5 m
}
CS2{
isObjectProperty(ParkingLotArea.isParallelParking) = FALSE
}
KS2{
getObjectWidth(ParkingLotArea.isHandicapParking, a) >= 2 m
getElementLength(ParkingLotArea.isHandicapParking) >= 6 m
}
}
check(ERCDAPA_2_1_*_1_4_나_2){
getObjectGradient(ParkingSpace.Floor) <= 1/50
}
check(ERCDAPA_2_1_*_1_6_가_1){
Door myDoor1{
isObjectProperty(Door.isEntrance ) = TRUE
}
Door myDoor2{
isObjectProperty(Door.isEntrance ) = TRUE
getObject(Door.isEntrance ) != getObject(myDoor1)
}
getObjectWidth(Door.isEntrance ) >= 0.8 m
isEgressDirection(myDoor1) = isEgressDirection(myDoor2)
getObjectDistance(myDoor1, myDoor2) >= 1.2 m
}
check(ERCDAPA_2_1_*_1_6_가_2){
isObjectProperty(Door.isAutomatic) = FALSE
isObjectProperty(Door.isSillFree) = TRUE
}
check(ERCDAPA_2_1_*_1_8_가_2){
getObjectVerticalDistance(FloorSurface,Door.Bottom)
}
check(ERCDAPA_2_1_*_1_8_나){
Stair myStair{
isObjectProperty(Stair.isEscape) = TRUE
isObjectProperty(Stair.isOutdoor) = TRUE
}
getObjectWidth(myStair) >= 0.9 m
getObjectWidth(myStair.StairLanding) >= 0.9 m
Stair myStair2{
isObjectProperty(Stair.isEscape) = FALSE
isObjectProperty(Stair.isOutdoor) = FALSE
}
getObjectWidth(myStair2) >= 1.2 m
getObjectWidth(myStair2.StairLanding) >= 1.2 m
}
check(ERCDAPA_2_1_*_1_8_다_1){
hasObject(Stair, VerticalSurfaceStair) = TRUE
}
check(ERCDAPA_2_1_*_1_8_다_2){
getObjectWidth(Stair.threadWidth) >= 0.28 m
getObjectHeight(Stair.riserHeight) <= 0.18m
}
check(ERCDAPA_2_1_*_1_8_다_3){
getObjectGradient(Stair.riserGradient) >= 60
getObjectLength(Stair.nosingLength) < 3 cm
}
Python Code 변환 예정
Modify
33
19999
장애인ㆍ노인ㆍ임산부 등의 편의증진 보장에 관한 법률 시행령 제 별표2조
1. 삭제 <2006.1.19>
2. 공원<표-EDCDAPA_*_2_T1>
(편의시설의 종류
:설치기준)
가. 장애인 등의 출입이 가능한 출입구
:공원 외부에서 내부로 이르는 출입구는 주출입구를 포함하여 적어도 하나 이상을 장애인등의 출입이 가능하도록 유효폭·형태 및 부착물 등을 고려하여 설치하여야 한다.
나. 장애인등의 통행이 가능한 보도
:공원시설(공중이 직접 이용하는 시설에 한한다)에 접근할 수 있는 공원안의 보도중 적어도 하나는 장애인등이 통행할
// 장애인ㆍ노인ㆍ임산부 등의 편의증진보장에 관한 법률 시행령 별표2 대상시설별 편의시설의 종류 및 설치기준(제4조관련)
Check(EDCDAPA_*_2_3_가_2_가){
IF CS1 AND CS2 THEN KS
}
ParkingLot myParkingLot{
isObjectProperty(ParkingLot.isAttachedParking) = TRUE
}
CS1 {
isExist(myParkingLot) = TRUE
}
CS2 {
getObjectProperty(myParkingLot.numberOfParkingUnit) >= 10
}
KS1 {
Area myArea{
isObjectProperty(ParkingLotArea.isHandicapParking)=TRUE
}
hasSpace(myParkingLot, myArea) = TRUE
getResult(EDPA_*_1) = TRUE
}
Check(EDCDAPA_*_2_3_가_4_가){
KS1 IF CS1 THEN KS2
}
Door myDoor1{
isObjectProperty(Door.isEntrance )=TRUE
isObjectProperty(myDoor1.isHandicapAccessible)=TRUE
}
Door myDoor2{
Door.Space.usage = “Office”
isObjectProperty(myDoo2.isHandicapAccessible)=TRUE
}
KS1 {
isExist(myDoor1) = TRUE
isExist(myDoor2) = TRUE
}
CS1{
Building.usage = “BusinessFacility.GovernmentOfficeBuilding”
Building.usage != “ClassINeighborhoodLivingFacility”
}
KS2 {
isObjectProperty(myDoor1.isAutomatic)=TRUE
isObjectProperty(myDoo2.isAutomatic)=TRUE
}
ParkingLot myParkingLot{
isObjectProperty(ParkingLotArea.isHandicapParking)=TRUE
}
Building myBuilding1_1{
Building.usage = “ClassINeighborhoodLivingFacility.RetailStore”
Building.usage = “ClassINeighborhoodLivingFacility.Barbershop”
Building.usage = “ClassINeighborhoodLivingFacility.BeautyShop”
Building.usage = “ClassINeighborhoodLivingFacility.Bathhouse”
}
Building myBuilding1_2{
Building.usage = “ClassINeighborhoodLivingFacility.CommunityCenter”
Building.usage = “ClassINeighborhoodLivingFacility.PoliceBox”
Building.usage = “ClassINeighborhoodLivingFacility.PoliceSubstation”
Building.usage = “ClassINeighborhoodLivingFacility.PostOffice”
Building.usage = “ClassINeighborhoodLivingFacility.HealthCenter”
Building.usage = “ClassINeighborhoodLivingFacility.PublicLibrary”
Building.usage = “ClassINeighborhoodLivingFacility.NationalHealthInsuranceService_NationalPensionService_Korea EmploymentAgencyForTheDisabled_KoreaWorkersCompensationAndWelfareServiceOffice”
}
Building myBuilding1_3{
Building.usage = “ClassINeighborhoodLivingFacility.Clinic_ DentalClinic_OrientalMedicalClinic_MaternityClinic”
}
Building myBuilding1_4{
Building.usage = “ClassINeighborhoodLivingFacility.CommunityChildCenter”
Building.facilityArea >= 300 m2
}
Building myBuilding1_5{
Building.usage = “ClassINeighborhoodLivingFacility.Shelter”
}
Building myBuilding1_6{
Building.usage = “ClassINeighborhoodLivingFacility.PublicToilet”
}
Building myBuilding2_1{
Building.usage = “ClassIINeighborhoodLivingFacility.Restaurant”
Building.usage = “ClassIINeighborhoodLivingFacility.RestingRestaurant”
Building.usage = “ClassIINeighborhoodLivingFacility.Bakery”
Building.usage != “ClassINeighborhoodLivingFacility”
Building.facilityArea >= 300 m2
}
Building myBuilding2_2{
Building.usage = “ClassIINeighborhoodLivingFacility.MassageParlor”
}
Building myBuilding3_1{
Building.usage = “CulturalAndAssemblyFacility.PerformanceHall”
Building.usage = “CulturalAndAssemblyFacility.Auditorium”
}
Building myBuilding3_2{
Building.usage = “CulturalAndAssemblyFacility.AssemblyHall”
}
Building myBuilding3_3{
Building.usage = “CulturalAndAssemblyFacility.ExhibitionHall”
Building.usage = “CulturalAndAssemblyFacility.ZoologicalAndBotanicalGarden”
}
Building myBuilding4_1{
Building.usage = “ReligiousFacility.ReligiousAssemblyFacility”
Building.facilityArea >= 500 m2
}
Building myBuilding5_1{
Building.usage = “CommercialFacility.WholesaleMarket”
Building.usage = “CommercialFacility.RetailMarket”
Building.usage = “CommercialFacility.Shop”
Building.facilityArea >= 1000 m2
}
Building myBuilding6_1{
Building.usage = “MedicalFacility.Hospital”
Building.usage = “MedicalFacility.DetentionHospital”
}
Building myBuilding7_1{
Building.usage = “EducationAndResearchFacility.School”
Building.usage = “EducationAndResearchFacility.SpecialSchool”
Building.usage != “EducationAndResearchFacility.Kindergarten”
}
Building myBuilding7_2{
Building.usage = “EducationAndResearchFacility.Kindergarten”
}
Building myBuilding7_3{
Building.usage = “EducationAndResearchFacility.TrainingInstitute”
Building.usage = “EducationAndResearchFacility.VocationalTrainingCenter”
Building.usage != “EducationAndResearchFacility.EducationalInstitute”
Building.facilityArea >= 500 m2
}
Building myBuilding8_1{
Building.usage = “FacilitiesForTheAgedAndChildren.ChildrenRelatedFacility”
Building.usage = “FacilitiesForTheAgedAndChildren.WelfareFacilityForTheAged”
Building.usage = “FacilitiesForTheAgedAndChildren.SocialWelfareFacility”
Building.usage = “경로당”
Building.usage = “ResidentialFacilityForTheDisabled”
Building.facilityArea >= 500 m2
}
Building myBuilding9_1{
Building.usage = “Trainingfacility.TrainingFacilityInLivingZone”
Building.usage = “Trainingfacility.TrainingFacilityInNatureZone”
}
Building myBuilding10_1{
Building.usage = “SportsFacility”
Building.facilityArea >= 500 m2
}
Building myBuilding11_1{
Building.usage = “BusinessFacility.GovernmentOfficeBuilding”
Building.facilityArea >= 500 m2
}
Building myBuilding11_2{
Building.usage = “BusinessFacility.FinanceBusiness”
Building.usage = “BusinessFacility.Office”
Building.usage = “BusinessFacility.NewspaperOffice”
Building.usage = “BusinessFacility.Officetel”
Building.facilityArea >= 500 m2
}
Building myBuilding12_1{
Building.usage = “LodgingFacility.GeneralLodgingFacility”
}
Building myBuilding12_2{
Building.usage = “LodgingFacility.TouristAccommodation”
}
Building myBuilding13_1{
Building.usage = “Factory”
}
Building myBuilding14_1{
Building.usage = “FacilityForMotorVehicle.ParkingLot”
Building.usage = “FacilityForMotorVehicle.DrivingSchool”
}
Building myBuilding15_1{
Building.usage = “FacilityForBroadcastingAndTelecommunication.BroadcastingStation”
Building.facilityArea >= 1000 m2
}
Building myBuilding15_2{
Building.usage = “FacilityForBroadcastingAndTelecommunication.TelegraphAndTelephoneStation”
Building.facilityArea >= 1000 m2
}
Building myBuilding16_1{
Building.usage = “CorrectionalFacilityAndMilitaryInstallation.Prison”
Building.usage = “CorrectionalFacilityAndMilitaryInstallation.DetentionCenter”
}
Building myBuilding17_1{
Building.usage = “CemeteryAndRelatedFacility.CremationFacility”
Building.usage = “CemeteryAndRelatedFacility.CharnelHouse”
Building.usage != “ReligiousFacility”
}
Building myBuilding18_1{
Building.usage = “FacilityForTourismAndRelaxation.BandStand”
Building.usage = “FacilityForTourismAndRelaxation.OutdoorTheater”
Building.usage = “FacilityForTourismAndRelaxation.ChildrenCenter”
}
Building myBuilding18_2{
Building.usage = “FacilityForTourismAndRelaxation.RestArea”
}
Building myBuilding19_1{
Building.usage = “FuneralParlor”
}
Check(EDCDAPA_*_2_3_나){
IF (CS1 THEN KS1) OR (CS2 THEN KS2)
}
CS1{
Building myBuilding20_1 {
getObject(myBuilding1_1 | myBuilding12_2)
}
KS1{
hasSpace(myBuilding20_1, myParkingLot) = TRUE
OR hasSpace(myBuilding20_1, myParkingLot) = FALSE
}
CS2{
Building myBuilding20_2 {
getObject(myBuilding1_2 | myBuilding1_3 | myBuilding1_4 | myBuilding2_1 | myBuilding2_2 | myBuilding3_1 | myBuilding3_2 | myBuilding3_3 | myBuilding4_1 | myBuilding5_1 | Building myBuilding6_1 | Building myBuilding7_1 | myBuilding7_2 | myBuilding7_3 | myBuilding8_1 | myBuilding9_1 | myBuilding10_1 | myBuilding11_1 | myBuilding11_2 | myBuilding12_1 | myBuilding13_1 | myBuilding14_1 | myBuilding15_1 | myBuilding15_2 | myBuilding16_1 | myBuilding17_1 | myBuilding18_1 | myBuilding18_2 | myBuilding19_1)
}
KS2{
hasSpace(Building20_2, myParkingLot) = TRUE
}
Check(EDCDAPA_*_2_3_나){
IF CS THEN KS
CS{
Building myBuilding20_3{
getObject(myBuilding1_1 | myBuilding1_2 | myBuilding1_3 | myBuilding1_4 | myBuilding1_5 | myBuilding1_6 | myBuilding2_1 | myBuilding2_2 | myBuilding3_1 | myBuilding3_2 | myBuilding3_3 | myBuilding4_1 | myBuilding5_1 | Building myBuilding6_1 | Building myBuilding7_1 | myBuilding7_2 | myBuilding7_3 | myBuilding8_1 | myBuilding9_1 | myBuilding10_1 | myBuilding11_1 | myBuilding11_2 | myBuilding12_1 | myBuilding13_1 | myBuilding14_1 | myBuilding15_1 | myBuilding15_2 | myBuilding16_1 | myBuilding17_1 | myBuilding18_1 | myBuilding18_2 | myBuilding19_1)
}
KS{
isObjectProperty(myBuilding20_3.Door.isSillFree) = TRUE
}
Python Code 변환 예정
Modify
34
20147
주차장법 시행규칙 제 5조 7호
7. 주차대수 400대를 초과하는 규모의 노외주차장의 경우에는 노외주차장의 출구와 입구를 각각 따로 설치하여야 한다. 다만, 출입구의 너비의 합이 5.5미터 이상으로서 출구와 입구가 차선 등으로 분리되는 경우에는 함께 설치할 수 있다.
//주차장법 시행규칙 5조 (노외주차장의 설치에 대한 계획기준) 7항
Check(ERPA_5_7){
IF (!CS1 AND CS2) THEN KS
}
CS2{
ParkingLot myParkingLot{
isObjectProperty(ParkingLot.isOffStreetParking)=TRUE
}
getObjectProperty(ParkingLot.numberOfParkingUnit) > 400
}
Opening myOpening1{
isObjectProperty(myParkingLot.Oepning.isEntrance )=TRUE
}
Opening myOpening2{
isObjectProperty(myParkingLot.Oepning.isExit)=TRUE
}
myOpening1 != myOpening2
CS1{
getObjectProperty(myOpening1.width) = W1
getObjectProperty(myOpening2.width) = W2
W1 + W2 >= 5.5m
}
KS2{
isExist(myOpening1) = TRUE
isExist(myOpening2) = TRUE
}
Python Code 변환 예정
Modify
35
61614
주차장법 시행규칙 제 6조 1 항 4호
4. 노외주차장의 출입구의 너비는 3.5미터 이상으로 하여야 하며, 주차대수규모가 50대 이상인 경우에는 출구와 입구를 분리하거나 너비 5.5미터 이상의 출입구를 설치하여 소통이 원활하도록 하여야 한다.
//주차장법 시행규칙 6조 (노외주차장의 구조·설비기준) 1항 4호
Check(ERPA_6_1_4){
KS1 AND IF CS THEN KS2
}
KS1{
ParkingLot myParkingLot{
isObjectProperty(ParkingLot.isOffStreetParking)=TRUE
}
getObjectProperty(myParkingLot.Opening.width) >= 3.5m
}
CS{
getObjectProperty(ParkingLot.numberOfParkingUnit) >= 50
}
KS2{
Opening myOpening1{
isObjectProperty(Opening.isExit)=TRUE
}
Opening myOpening2{
isObjectProperty(Opening.isEntrance )=TRUE
}
myOpening1 != myOpening2
isExist(myOpening1)=TRUE
isExist(myOpening2)=TRUE
OR getObjectProperty(Opening.width) >= 5.5m
}
Python Code 변환 예정
Modify
36
61621
주차장법 시행규칙 제 6조 1 항 5호 바 목
바. 주차대수규모가 50대 이상인 경우의 경사로는 너비 6미터 이상인 2차선의 차로를 확보하거나 진입차로와 진출차로를 분리하여야 한다.
//주차장법 시행규칙 6조 (노외주차장의 구조·설비기준) 1항 5호 바목
Check(ERPA_6_1_5_바){
IF CS THEN (KS1 OR KS2)
}
CS{
getObjectProperty(ParkingLot.numberOfParkingUnit) >= 50
hasObject(Ramp, ParkingLot.Driveway.)=TRUE
}
KS1{
getObjectProperty(ParkingLot.Driveway.width) >= 6m
getObjectProperty(ParkingLot.Driveway.numberOfLane) >= 2
}
KS2{
Opening myOpening1{
isObjectProperty(Opening.isExit)=TRUE
}
Opening myOpening2{
isObjectProperty(Opening.isEntrance )=TRUE
}
myOpening1 != myOpening2
hasObject(ParkingLot.Driveway., myOpening1)=TRUE
hasObject(ParkingLot.Driveway., myOpening2)=TRUE
}
Python Code 변환 예정
Modify
37
61623
주차장법 시행규칙 제 6조 1 항 6호
6. 노외주차장의 주차에 사용되는 부분의 높이는 주차바닥면으로부터 2.1미터 이상으로 하여야 한다.
//주차장법 시행규칙 6조 (노외주차장의 구조·설비기준) 1항 6호
Check(ERPA_6_1_6){
IF (!CS1 AND CS2) THEN (KS1 AND KS2)
}
CS1{
Elevator myElevator{
getObjectProperty(Elevator.usage) = "AutomobileElevator"
}
Opening myOpening1{
isObjectProperty(Elevator.Opening.isEntrance )=TRUE
}
Opening myOpening2{
isObjectProperty(Elevator.Opening.isExit)=TRUE
}
myOpening1 != myOpening2
isExist(myOpening1)=TRUE
isExist(myOpening2)=TRUE
}
CS2{
getObjectProperty(ParkingLot.operationType) = "DriveInParking"
isObjectProperty(ParkingLot.isOffStreetParking)=TRUE
}
KS1{
}
KS2{
getResult(ERPA_16-2_1)=TRUE
getResult(ERPA_16-2_3)=TRUE
}
Python Code 변환 예정
Modify