2. 배연창의 유효면적은 별표 2의 산정기준에 의하여 산정된 면적이 1제곱미터 이상으로서 그 면적의 합계가 당해 건축물의 바닥면적(영 제46조제1항 또는 제3항의 규정에 의하여 방화구획이 설치된 경우에는 그 구획된 부분의 바닥면적을 말한다)의 100분의 1이상일 것. 이 경우 바닥면적의 산정에 있어서 거실바닥면적의 20분의 1 이상으로 환기창을 설치한 거실의 면적은 이에 산입하지 아니한다.
//건축물의 설비기준 등에 관한 규칙 14조 (배연설비) 1항 2호
Check(RFB_14_1_2){
IF (CS) THEN (KS1 OR KS2)
}
Zone myZone{
isObjectProperty(Zone.isFirePartition) = TRUE
}
Space mySpace{
getSpaceUsage(Space) = "Room"
getTotalElementArea(Ventilator) >= getFloorArea(Space)*0.05
}
Space mySpace2{
hasSpace(Space, myZone) = TRUE
getResult(EDBA_46_1) = TRUE
getREsult(EDBA_46_3) = TRUE
}
CS{
getElementArea(SmokeVentilator) >= 1 m2
getResult(RFB_*_2) = TRUE
}
KS1{
getTotalElementArea(Ventilator) >= (getBuildingArea()-getFloorArea(mySpace))*0.01
}
KS2{
getTotalElementArea(Ventilator) >= (getFloorArea(myZone)-getFloorArea(mySpace))*0.01
}
라. 외기에 직접 면하고 1층 또는 지상으로 연결된 출입문은 제5조제9호아목에 따른 방풍구조로 하여야 한다. 다만, 다음 각 호에 해당하는 경우에는 그러하지 않을 수 있다.
Check(NFCS103){
KS
}
KS{
getSpaceUsage()="Officetels.BedRoom"
OR getSpaceUsage()="LodgingFacility.BedRoom"
OR getSpaceUsage()="Hospital.HospitalRoom"
}
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조의2 (복도의 너비 및 설치기준) 3항
Check(REFB_15-2_3){
IF CS THEN KS
}
CS{
getSpaceUsage(Space)="CulturalAndAssemblyFacility.PerformanceHall"
isExist(Corridor)=TRUE
}
KS{
getResult(REFB_15-2_3_1) = TRUE
getResult(REFB_15-2_3_2) = TRUE
}
corridor_code = '33105'
theater_code = '00000'
std_floor_area = 200
corridor_code_label = '복도 공간분류코드'
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 == '공연장'):
continue
for storey in building.SELECT('storey'):
for space in storey.SELECT('space'):
if space.SELECT('class code').STRING() != theater_code:
continue
area = space.SELECT('area').UNIT('m2').NUMBER()
side_corridors = []
fb_corridors = []
for s in space.SELECT('side space'):
if s.SELECT('class code').STRING() == corridor_code:
side_corridors.append(s)
for s in space.SELECT('front back space'):
if s.SELECT('class code').STRING() == corridor_code:
fb_corridors.append(s)
if area >= 300:
if len(side_corridors) + len(fb_corridors) < 3:
space.ERROR('관람석의 양쪽과 뒤쪽 중 복도가 존재하지 않는 곳이 있습니다.')
else:
space.SUCCESS('관람석의 양쪽과 뒤쪽에 복도가 존재합니다.')
else:
if len(side_corridors) == 2 or len(fb_corridors) == 2:
space.SUCCESS('관람석의 앞뒤쪽에 복도가 존재합니다.')
else:
space.ERROR('관람석의 앞뒤쪽 중 복도가 존재하지 않는 곳이 있습니다.')
1. 공연장의 개별 관람석(바닥면적이 300제곱미터 이상인 경우에 한한다)의 바깥쪽에는 그 양쪽 및 뒤쪽에 각각 복도를 설치할 것
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조의2 (복도의 너비 및 설치기준) 3항1호
Check(REFB_15-2_3_1){
IF CS THEN KS
}
CS{
Space mySpace{
getSpaceUsage(Space)="IndividualAuditorium"
}
getFloorArea(mySpace)>300 m2
}
KS{
}
corridor_code = '33105'
theater_code = '00000'
std_floor_area = 200
corridor_code_label = '복도 공간분류코드'
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 == '공연장'):
continue
for storey in building.SELECT('storey'):
for space in storey.SELECT('space'):
if space.SELECT('class code').STRING() != theater_code:
continue
area = space.SELECT('area').UNIT('m2').NUMBER()
side_corridors = []
fb_corridors = []
for s in space.SELECT('side space'):
if s.SELECT('class code').STRING() == corridor_code:
side_corridors.append(s)
for s in space.SELECT('front back space'):
if s.SELECT('class code').STRING() == corridor_code:
fb_corridors.append(s)
if area >= 300:
if len(side_corridors) + len(fb_corridors) < 3:
space.ERROR('관람석의 양쪽과 뒤쪽 중 복도가 존재하지 않는 곳이 있습니다.')
else:
space.SUCCESS('관람석의 양쪽과 뒤쪽에 복도가 존재합니다.')
else:
if len(side_corridors) == 2 or len(fb_corridors) == 2:
space.SUCCESS('관람석의 앞뒤쪽에 복도가 존재합니다.')
else:
space.ERROR('관람석의 앞뒤쪽 중 복도가 존재하지 않는 곳이 있습니다.')
2. 하나의 층에 개별 관람석(바닥면적이 300제곱미터 미만인 경우에 한한다)을 2개소 이상 연속하여 설치하는 경우에는 그 관람석의 바깥쪽의 앞쪽과 뒤쪽에 각각 복도를 설치할 것
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조의2 (복도의 너비 및 설치기준) 3항2호
Check(REFB_15-2_3_2){
IF CS THEN KS
}
CS{
Space mySpace{
getSpaceUsage(Space)="IndividualAuditorium"
}
getFloorArea(mySpace)>300 m2
getObjectCount(Floor.One.mySpace)>=2
}
KS{
}
corridor_code = '33105'
theater_code = '00000'
std_floor_area = 200
corridor_code_label = '복도 공간분류코드'
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 == '공연장'):
continue
for storey in building.SELECT('storey'):
for space in storey.SELECT('space'):
if space.SELECT('class code').STRING() != theater_code:
continue
area = space.SELECT('area').UNIT('m2').NUMBER()
side_corridors = []
fb_corridors = []
for s in space.SELECT('side space'):
if s.SELECT('class code').STRING() == corridor_code:
side_corridors.append(s)
for s in space.SELECT('front back space'):
if s.SELECT('class code').STRING() == corridor_code:
fb_corridors.append(s)
if area >= 300:
if len(side_corridors) + len(fb_corridors) < 3:
space.ERROR('관람석의 양쪽과 뒤쪽 중 복도가 존재하지 않는 곳이 있습니다.')
else:
space.SUCCESS('관람석의 양쪽과 뒤쪽에 복도가 존재합니다.')
else:
if len(side_corridors) == 2 or len(fb_corridors) == 2:
space.SUCCESS('관람석의 앞뒤쪽에 복도가 존재합니다.')
else:
space.ERROR('관람석의 앞뒤쪽 중 복도가 존재하지 않는 곳이 있습니다.')
②문화 및 집회시설(전시장 및 동·식물원은 제외한다), 종교시설, 장례식장 또는 위락시설 중 유흥주점의 용도에 쓰이는 건축물의 관람석 또는 집회실로서 그 바닥면적이 200제곱미터 이상인 것의 반자의 높이는 제1항의 규정에 불구하고 4미터(노대의 아랫부분의 높이는 2.7미터)이상이어야 한다. 다만, 기계환기장치를 설치하는 경우에는 그러하지 아니하다. <개정 2010.4.7>
// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 16조 (거실의 반자높이) 2항
check(REFB_16_2){
IF (CS1 AND CS2) THEN KS
}
CS1{
VentilatorEquipment myVentilatorEquipemnt{
isObjectProperty(VentilatorEquipment.isMechanical)=TRUE
}
isExist(myVentilatorEquipemn) = FALSE
}
CS2{
Space mySpace{
getSpaceUsage(Space) = “Auditorium”
OR getSpaceUsage(Space) = “AssemblyHall”
}
((getBuildingUsage() = “CulturalAndAssemblyFacilities.Tavern”
getBuildingUsage() != “ExhibitionHalls.Tavern”
getBuildingUsage() != “ZoologicalAndBotanicalGardens.Tavern”)
OR getBuildingUsage() = "ReligiousFacilities.Tavern”
target_space_codes = ['33703', '33708']
min_h = 4.0
min_h_bal = 2.7
target_space_codes_label = '대상 공간분류코드'
min_h_label = '최소 반자 높이'
min_h_bal_label = '최소 반자 높이(노대 밑)'
def Check():
for building in SELECT('building'):
bldg_use = building.SELECT('building type').STRING()
sub_use = building.SELECT('prop', '세부용도').STRING()
if not ((bldg_use == '문화 및 집회시설' and not sub_use in ['전시장', '동물원', '식물원'])
or (bldg_use in ['종교시설', '장례시설'])
or (bldg_use == '위락시설' and sub_use == '유흥주점')):
continue
spaces = building.SELECT('space');
for space in spaces:
code = space.SELECT('class code').STRING()
if not code in target_space_codes:
continue
area = space.SELECT('area').UNIT('m2').NUMBER()
if area < 200:
continue
dist = space.SELECT('ceiling height')
height = dist.UNIT('m').NUMBER()
if height < min_h:
dist.ERROR('반자 높이 : ' + str(height) + ' < ' + str(min_h))
else:
dist.SUCCESS('반자 높이 : ' + str(height) + ' >= ' + str(min_h))
for space in spaces:
if not '노대' in space.SELECT('name').STRING():
continue
for lower in space.SELECT('lower space'):
code = lower.SELECT('class code').STRING()
if not code in target_space_codes:
continue
area = lower.SELECT('area').UNIT('m2').NUMBER()
if area < 200:
continue
pos = space.SELECT('center')
dist = lower.SELECT('ceiling height', pos)
height = dist.UNIT('m').NUMBER()
if height < min_h_bal:
dist.ERROR('반자 높이 : ' + str(height) + ' < ' + str(min_h_bal))
else:
dist.SUCCESS('반자 높이 : ' + str(height) + ' >= ' + str(min_h_bal))
①영 제61조제1항제4호가목 및 제2항제1호나목에서 "국토교통부령으로 정하는 화재위험이 적은 공장"이란 각각 별표 3의 업종에 해당하는 공장을 말한다. 다만, 공장의 일부 또는 전체를 기숙사 및 구내식당의 용도로 사용하는 건축물을 제외한다. <개정 2008.3.14, 2010.12.30, 2012.1.6, 2013.3.23>
// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 24조의2 (소규모 공장용도 건축물의 마감재료) 1항
check(REFB_24-2_1){
KS
}
KS{
getResult(REFB_*_3) = TRUE
(getBuildingUsage() != "Dormitory"
OR getBuildingUsage() != "Cafeteria"
OR getSpaceUsage() != "Dormitory"
OR getSpaceUsage() != "Cafeteria")
}
②문화 및 집회시설(공연장ㆍ집회장ㆍ관람장ㆍ전시장에 한한다), 종교시설 중 종교집회장, 노유자시설 중 아동 관련 시설ㆍ노인복지시설, 수련시설 중 생활권수련시설, 위락시설 중 유흥주점 및 장례식장의 관람석 또는 집회실과 접하는 복도의 유효너비는 제1항의 규정에 불구하고 다음 각 호에서 정하는 너비로 하여야 한다. <개정 2010.4.7>
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조의2 (복도의 너비 및 설치기준) 2항
check(REFB_15-2_2){
IF CS THEN KS
}
CS{
Space mySpace{
getSpaceUsage(Space) = “AssemblyHall”
OR getSpaceUsage(Space) = “PerformanceHall”
}
Corridor myCorridor{
isAdjacent(mySpace,Corridor) = TRUE
}
(getBuildingUsage()="CulturalAndAssemblyFacility.PerformanceHall"
OR getBuildingUsage()="CulturalAndAssemblyFacility.AssemblyHall"
OR getBuildingUsage()="CulturalAndAssemblyFacility.Auditorium"
OR getBuildingUsage()="CulturalAndAssemblyFacility.ExhibitionHall"
OR getBuildingUsage()="ReligiousFacility.ReligiousAssemblyFacility"
OR getBuildingUsage()="FacilitiesForTheAgedAndChildren.ChildrenRelatedFacility"
OR getBuildingUsage()="FacilitiesForTheAgedAndChildren.WelfareFacilityForTheAged"
OR getBuildingUsage()="Trainingfacility.TrainingFacilitiesInLiving "
OR getBuildingUsage()="AmusementFacility.tavern"
OR getBuildingUsage()="AmusementFacility.FuneralParlors" )
isExist(myCorridor)=TRUE
}
KS{
getResult(REFB_15-2_2_1)=TRUE
getResult(REFB_15-2_2_2)=TRUE
getResult(REFB_15-2_2_3)=TRUE
}
corridor_code = '33105'
std_floor_area = 200
corridor_code_label = '복도 공간분류코드'
std_floor_area_label = '기준 연면적'
def Check():
for building in SELECT('building'):
if building.SELECT('prop', '연면적').NUMBER() <= std_floor_area:
continue
bldg_use = building.SELECT('building type').STRING()
sub_use = building.SELECT('prop', '세부용도').STRING()
if not ((bldg_use == '문화 및 집회시설' and sub_use in ['공연장' ,'집회장', '관람장', '전시장'])
or (bldg_use == '종교시설' and sub_use == '종교집회장')
or (bldg_use == '노유자시설' and sub_use in ['아동관련시설' ,'노인복지시설'])
or (bldg_use == '수련시설' and sub_use == '생활권수련시설')
or (bldg_use == '위락시설' and sub_use == '유흥주점')
or (bldg_use == '장례시설' and sub_use == '장례식장')):
continue
for storey in building.SELECT('storey'):
area = 0.0
corridors = []
for space in storey.SELECT('space'):
if space.SELECT('class code').STRING() == corridor_code:
corridors.append(space)
area += space.SELECT('area').UNIT('m2').NUMBER()
min_cor_w = 1.8
if area < 500:
min_cor_w = 1.5
elif area >= 1000:
min_cor_w = 2.4
for space in corridors:
width = space.SELECT('min clear width').UNIT('m')
w = width.NUMBER()
if w < min_cor_w:
width.ERROR('유효너비: ' + str(w) + ' < ' + str(min_cor_w))
else:
width.SUCCESS('유효너비: ' + str(w) + ' >= ' + str(min_cor_w))
4. 건축물의 최상층 또는 피난층으로서 대규모 회의장·강당·스카이라운지·로비 등의 용도로 쓰는 부분으로서 그 용도로 사용하기 위하여 불가피한 부분
//건축법 시행령 46조 (방화구획의 설치) 2항 4호
check(EDBA_46_2_4){
KS
}
KS{
Floor myFloor{
getObject(TopFloor)
OR isObjectProperty(Floor.isEscape)=TRUE
}
AND
(getSpaceUsage(myFloor.Space)="ConferenceRoom"
OR getSpaceUsage(myFloor.Space)="Hall"
OR getSpaceUsage(myFloor.Space)="SkyLounge"
OR getSpaceUsage(myFloor.Space)="Lobby"
OR isObjectProperty(Zone.isEgressSafetyZone)= TRUE
}
7. 단독주택, 동물 및 식물 관련 시설 또는 교정 및 군사시설 중 군사시설(집회, 체육, 창고 등의 용도로 사용되는 시설만 해당한다)로 쓰는 건축물
//건축법 시행령 46조 (방화구획의 설치) 2항 7호
check(EDBA_46_2_7){
KS
}
KS{
getBuildingUsage()="DetachedHouses"
OR getBuildingUsage()="FacilitiesForAnimalsAndPlants"
OR (getBuildingUsage()="CorrectionalFacilityANDMilitaryFacilities" and (getSpaceUsage()= "Assembly" OR "Gymnasium" OR "Warehouses")
}
2. 단독주택 중 다중주택·다가구주택, 제2종 근린생활시설 중 학원·독서실, 판매시설, 운수시설(여객용 시설만 해당한다), 의료시설(입원실이 없는 치과병원은 제외한다), 교육연구시설 중 학원, 노유자시설 중 아동 관련 시설·노인복지시설, 수련시설 중 유스호스텔, 숙박시설 또는 장례식장의 용도로 쓰는 3층 이상의 층으로서 그 층의 해당 용도로 쓰는 거실의 바닥면적의 합계가 200제곱미터 이상인 것
//건축법 시행령 34조 (직통계단의 설치) 2항2호
Check(EDBA_34_2_2){
Building myBuilding{
getBuildingUsage()="DentalClinic"
}
Space mySpace{
getSpaceUsage() = "Ward"
}
Floor myFloor1 {
getObjectProperty(Floor.number)>=3
getObjectUsage(Floor) = “DetachedHouse.MultiUserHouse”
OR getObjectUsage(Floor) = “DetachedHouse.MultiFamilyHouse”
OR getObjectUsage(Floor) = “ClassIINeighborhoodLivingFacility.EducationalInstitute”
OR getObjectUsage(Floor) = “ClassIINeighborhoodLivingFacility.ReadingRooms”
OR getObjectUsage(Floor) = “CommercialFacility”
OR getObjectUsage(Floor) = “TransportationFacility.PassengerTrafficFacilities”
OR ( getObjectUsage(Floor) = “MedicalFacility” ADN hasObject(myBuilding, mySpace)=TRUE )
OR getObjectUsage(Floor) = “EducationAndResearchFacility.EducationalInstitutes”
OR getObjectUsage(Floor) = “FacilitiesForTheAgedAndChildren.ChildrenRelatedFacilities”
OR getObjectUsage(Floor) = “EducationAndResearchFacility.WelfareFacilityForTheAged”
OR getObjectUsage(Floor) = “Trainingfacility.YouthHostel”
OR getObjectUsage(Floor) = “LodgingFacility”
}
Floor myFloor2{
getObjectUsage(Floor) = “ClassIINeighborhoodLivingFacility.FacilityForProvidingInternetComputerGameService”
}
getTotalFloorArea(myFloor1.Room)>= 200 m2
OR getTotalFloorArea(myFloor2.Room)>= 300 m2
}
① 법 제49조제2항에 따라 의료시설, 노유자시설(아동 관련 시설 및 노인복지시설만 해당한다), 공동주택 또는 장례식장과 위락시설, 위험물저장 및 처리시설, 공장 또는 자동차 관련 시설(정비공장만 해당한다)은 같은 건축물에 함께 설치할 수 없다. 다만, 다음 각 호의 어느 하나에 해당하는 경우로서 국토해양부령으로 정하는 경우에는 그러하지 아니하다. <개정 2009.7.16>
//건축법 시행령 47조 (방화에 장애가 되는 용도의 제한) 1항
Check(EDBA_47_1){
IF !CS THEN KS
}
CS{
getResult(EDBA_47_1_1)=True
OR getResult(EDBA_47_1_3)=True
getResult(REFB_14-2)=True
}
KS{
Space mySpace1{
getSpaceUsage(Space)="MedicalFacility"
OR getSpaceUsage(Space)="FacilitiesForTheAgedAndChildren.ChildrenRelatedFacility"
OR getSpaceUsage(Space)="FacilitiesForTheAgedAndChildren.WelfareFacilityForTheAged"
OR getSpaceUsage(Space)="MultiUnitHouse"
}
Space mySpace2{
getSpaceUsage(Space)="FuneralParlor"
OR getSpaceUsage(Space)="AmusementFacility"
OR getSpaceUsage(Space)="FacilityForStorageAndTreatmentOfDangerousSubstance"
OR getSpaceUsage(Space)="Factory"
OR getSpaceUsage(Space)="FacilityForMotorVehicle.AutomobileRepairShop"
isExistTogether(mySpace1, mySpace2)=False
}
}
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
//다만, 주택의 출입구ㆍ계단 및 승강기 등을 주택 외의 시설과 분리된 구조로 하여야 한다.
}
4. 송수구로부터 연결송수관설비의 주배관에 이르는 연결배관에 개폐밸브를 설치한 때에는 그 개폐상태를 쉽게 확인 및 조작할 수 있는 옥외 또는 기계실 등의 장소에 설치할 것. 이 경우 개폐밸브에는 그 밸브의 개폐상태를 감시제어반에서 확인할 수 있도록 급수개폐밸브 작동표시 스위치를 다음 각 목의 기준에 따라 설치하여야 한다. <개정 2014.8.18>
2. 방수구는 아파트 또는 바닥면적이 1,000㎡ 미만인 층에 있어서는 계단(계단의 부속실을 포함하며 계단이 2 이상 있는 경우에는 그 중 1개의 계단을 말한다)으로부터 5m 이내에, 바닥면적 1,000㎡ 이상인 층(아파트를 제외한다)에 있어서는 각 계단(계단의 부속실을 포함하며 계단이 3 이상 있는 층의 경우에는 그 중 2개의 계단을 말한다)으로부터 5m 이내에 설치하되, 그 방수구로부터 그 층의 각 부분까지의 거리가 다음 각목의 기준을 초과하는 경우
//연결송수관설비의 화재안전기준(NFSC 502) 6조 (방수구) 2호
Check(NFSC502_6_0_2){
KS
}
KS{
Space mySpce{
getSpaceUsage(Space)="Stair.AncillaryRoom"
OR
(
IF getObjectCoutn(Stair)>=2
THEN getSpace(Stair.One)
ELSE
getSpaceUsage(Space)="Stair"
END IF
)
}
Space mySpce2{
getSpaceUsage(Space)="Stair.AncillaryRoom"
OR
(
IF getObjectCoutn(Stair)>=3
THEN getSpace(Stair.Two)
ELSE
getSpaceUsage(Space)="Stair"
END IF
)
}
IF getBuildingUsage()="ApartmentHouse"
OR getFloorArea()<1000 m2
THEN getObjectDistance(FireDepartmentConnection, mySpace)<5 m
ELSE IF getFloorArea()>1000 m2
THEN getObjectDistance(FireDepartmentConnection, mySpace)<5 m
getResult(NFSC502_6_0_2_가)=True
getResult(NFSC502_6_0_2_나)=True
END IF
}
가. 중형 기계식주차장(길이 5.05미터 이하, 너비 1.9미터 이하, 높이 1.55미터 이하, 무게 1,850킬로그램 이하인 자동차를 주차할 수 있는 기계식주차장을 말한다. 이하 같다): 너비 8.1미터 이상, 길이 9.5미터 이상의 전면공지 또는 지름 4미터 이상의 방향전환장치와 그 방향전환장치에 접한 너비 1미터 이상의 여유 공지
//주차장법 시행규칙 16조의2 (기계식주차장의 설치기준) 1호 가목
Check(ERPA_16-2_0_1_가){
IF CS THEN KS
}
CS{
ParkingLot myParkingLot{
ParkingLot.operationType = "MechanicalParking"
}
getObjectProperty(myParkingLot.scale)="MiddleSize"
}
KS{
Space mySpace{
getSpaceUsage()="FrontageSpace"
Space.width>=8.1 m
Space.length>9.5 m
}
isExist(mySpace)=True
OR isExist(DirectionSwitchingEquipment)=True
getObjectDiameter(DirectionSwitchingEquipment)>=4 m
isExist(Space)=True
isAdjacent(DirectionSwitchingEquipment, Space)=True
Space.width>=1 m
}
⑥시장ㆍ군수 또는 구청장이 노외주차장내에 국토의계획및이용에관한법률 제2조제7호의 도시계획시설을 부대시설로서 중복하여 설치하고자 하는 경우에는 노외주차장외의 용도로 사용하고자 하는 도시계획시설이 차지하는 면적의 비율은 부대시설을 포함하여 주차장 총 시설면적의 40퍼센트를 초과할 수 없다. <신설 2004.7.1>
나. 대형 기계식주차장(길이 5.75미터 이하, 너비 2.15미터 이하, 높이 1.85미터 이하, 무게 2,200킬로그램 이하인 자동차를 주차할 수 있는 기계식주차장을 말한다. 이하 같다): 너비 10미터 이상, 길이 11미터 이상의 전면공지 또는 지름 4.5미터 이상의 방향전환장치와 그 방향전환장치에 접한 너비 1미터 이상의 여유 공지
//주차장법 시행규칙 16조의2 (기계식주차장의 설치기준) 1호 나목
Check(ERPA_16-2_0_1_나){
IF CS THEN KS
}
CS{
ParkingLot myParkingLot{
ParkingLot.operationType = "MechanicalParking"
}
getObjectProperty(myParkingLot.scale)="LargeSize"
}
KS{
Space mySpace{
getSpaceUsage()="FrontageSpace"
Space.width>=10 m
Space.length>11 m
}
isExist(mySpace)=True
OR isExist(DirectionSwitchingEquipment)=True
getObjectDiameter(DirectionSwitchingEquipment)>=4.5 m
isExist(Space)=True
isAdjacent(DirectionSwitchingEquipment, Space)=True
Space.width>=1 m
}
2. 기계식주차장치의 내부에 방향전환장치를 설치한 경우와 2층 이상으로 주차구획이 배치되어 있고 출입구가 있는 층의 모든 주차구획을 기계식주차장치 출입구로 사용할 수 있는 기계식주차장의 경우에는 제1호에도 불구하고 제6조제1항제3호 또는 제11조제5항제2호를 준용한다.
//주차장법 시행규칙 16조의2 (기계식주차장의 설치기준) 2호
Check(ERPA_16-2_0_2){
IF CS THEN KS
}
CS{
hasObject(MechanicalParkingEquipment,DirectionSwitchingEquipment)=True
OR
//2츠이상으로 주차구획이 배치되어 있고
// 출입구가 있는 층의 모든 주차구획을 기계식주차장치 출입구로 사용할 수 있는
getSpaceUsage()="MechanicalParking"
}
KS{
getResult(ERPA_6_1_3)=True
OR getResult(ERPA_11_5_2)=True
}
3. 기계식주차장에는 도로에서 기계식주차장치 출입구까지의 차로(이하 "진입로"라 한다) 또는 전면공지와 접하는 장소에 자동차가 대기할 수 있는 장소(이하 "정류장"이라 한다)를 설치하여야 한다. 이 경우 주차대수 20대를 초과하는 20대마다 한 대분의 정류장을 확보하여야 하며, 정류장의 규모는 다음 각 목과 같다. 다만, 주차장의 출구와 입구가 따로 설치되어 있거나 진입로의 너비가 6미터 이상인 경우에는 종단경사도가 6퍼센트 이하인 진입로의 길이 6미터
//주차장법 시행규칙 16조의2 (기계식주차장의 설치기준) 3호
Check(ERPA_16-2_0_3){
IF CS THEN KS
}
CS{
getSpaceUsage()="MechanicalParking"
}
KS{
Space mySpace{
isAdjacent(FrontageSpace,Space)=True
}
isExist(ApproachRoad)=True
isExist(mySpace)=True
IF(// 주차장의 출구와 입구가 따로 설치되어 있거나
OR "진입로".width>6 m) THEN
//종단경사도가 6퍼센트 이하인 진입로의 길이 6미터마다
한 대분의 정류장을 확보한 것으로 본다.
ELSE THEN
//주차대수 20대를 초과하는 20대마다 한 대분의 정류장을 확보하여야 하며
getResult(ERPA_16-2_0_3_가)=True
getResult(ERPA_16-2_0_3_나)=True
END IF
}
//주차장법 시행규칙 6조 (노외주차장의 구조·설비기준) 1항 3호 나목
Check(ERPA_6_1_3_나){
IF CS THEN KS
}
CS{
getSpaceUsage()="ParkingLot"
getObjectProperty(ParkingLot.parkingUseType)="TwowheeledVehicle"
}
KS{
IF getObjectProperty(ParkingUnit.parkingType)="ParallelParking"
IF getObjectCount(Opening)>=2
THEN ParkingLot.Driveway.width>=2.25 m
ELSE IF getObjectCount(Opening)=1
THEN ParkingLot.Driveway.width>=3.5 m
END IF
ELSE IF getObjectProperty(ParkingUnit.parkingType)="RightAngleParking"
IF getObjectCount(Opening)>=2
THEN ParkingLot.Driveway.width>=4.0 m
ELSE IF getObjectCount(Opening)=1
THEN ParkingLot.Driveway.width>=4.0 m
END IF
ELSE IF getObjectProperty(ParkingUnit.parkingType)="45AngleParking"
IF getObjectCount(Opening)>=2
THEN ParkingLot.Driveway.width>=2.3 m
ELSE IF getObjectCount(Opening)=1
THEN ParkingLot.Driveway.width>=3.5 m
END IF
END IF
}
//주차장법 시행규칙 6조 (노외주차장의 구조·설비기준) 1항 3호 나목
Check(ERPA_6_1_3_나){
IF CS THEN KS
}
CS{
getSpaceUsage()="ParkingLot"
isObjectProperty(ParkingLot.isOffStreetParking)=True
getObjectProperty(ParkingLot.parkingUseType)!="TwowheeledVehicle"
}
KS{
IF getObjectProperty(ParkingUnit.parkingType)="ParallelParking"
IF getObjectCount(Opening)>=2
THEN ParkingLot.Driveway.width>=3.3 m
ELSE IF getObjectCount(Opening)=1
THEN ParkingLot.Driveway.width>=5.0 m
END IF
ELSE IF getObjectProperty(ParkingUnit.parkingType)="RightAngleParking"
IF getObjectCount(Opening)>=2
THEN ParkingLot.Driveway.width>=6.0 m
ELSE IF getObjectCount(Opening)=1
THEN ParkingLot.Driveway.width>=6.0 m
END IF
ELSE IF getObjectProperty(ParkingUnit.parkingType)="60AngleParking"
IF getObjectCount(Opening)>=2
THEN ParkingLot.Driveway.width>=4.5 m
ELSE IF getObjectCount(Opening)=1
THEN ParkingLot.Driveway.width>=5.5 m
END IF
ELSE IF getObjectProperty(ParkingUnit.parkingType)="45AngleParking"
IF getObjectCount(Opening)>=2
THEN ParkingLot.Driveway.width>=3.5 m
ELSE IF getObjectCount(Opening)=1
THEN ParkingLot.Driveway.width>=5.0 m
END IF
getObjectProperty(ParkingUnit.parkingType)="CrossParking"
IF getObjectCount(Opening)>=2
THEN ParkingLot.Driveway.width>=3.5 m
ELSE IF getObjectCount(Opening)=1
THEN ParkingLot.Driveway.width>=5.0 m
END IF
END IF
}