라. 외기에 직접 면하고 1층 또는 지상으로 연결된 출입문은 제5조제9호아목에 따른 방풍구조로 하여야 한다. 다만, 다음 각 호에 해당하는 경우에는 그러하지 않을 수 있다.
Check(NFCS103){
KS
}
KS{
getSpaceUsage()="Officetels.BedRoom"
OR getSpaceUsage()="LodgingFacility.BedRoom"
OR getSpaceUsage()="Hospital.HospitalRoom"
}
제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
}
1. 공동주택등의 출입구와 위락시설등의 출입구는 서로 그 보행거리가 30미터 이상이 되도록 설치할 것
// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 14조의2 (복합건축물의 피난시설 등) 1호
Check(REFB_14-2_0_1){
KS
}
KS{
Space mySpace{
Space.usage="MultiUnitHouse"
OR Space.usage="MedicalFacility"
OR Space.usage="ChildrenRelatedFacility"
OR Space.usage="WelfareFacilityForTheAged"
}
Space mySpace2{
Space.usage="AmusementFacility"
OR Space.usage="FacilityForStorageAndTreatmentOfDangerousSubstance"
OR Space.usage="Factory"
OR Space.usage="AutomobileRepairShop"
}
getSpaceDiatance(mySpace.Door, mySpace2.Door)>=30 m
}
2. 공동주택등(당해 공동주택등에 출입하는 통로를 포함한다)과 위락시설등(당해 위락시설등에 출입하는 통로를 포함한다)은 내화구조로 된 바닥 및 벽으로 구획하여 서로 차단할 것
// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 14조의 2 (복합건축물의 피난시설 등) 2호
Check(REFB_14-2_0_2){
KS
}
KS{
Space mySpace{
Space.usage="MultiUnitHouse"
OR Space.usage="MedicalFacility"
OR Space.usage="ChildrenRelatedFacility"
OR Space.usage="WelfareFacilityForTheAged"
}
Space mySpace2{
Space.usage="AmusementFacility"
OR Space.usage="FacilityForStorageAndTreatmentOfDangerousSubstance"
OR Space.usage="Factory"
OR Space.usage="AutomobileRepairShop"
}
Passage myPassage{
isAccessible(Passage, mySpace)=True
OR isAccessible(Passage, mySpace2)=True
}
isFirePartition(mySpace)=True
isFirePartition(mySpace2)=True
isFirePartition(myPassage)=True
}
// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 14조의2 (복합건축물의 피난시설 등) 3호
Check(REFB_14-2_0_3){
KS
}
KS{
Space mySpace{
Space.usage="MultiUnitHouse"
OR Space.usage="MedicalFacility"
OR Space.usage="ChildrenRelatedFacility"
OR Space.usage="WelfareFacilityForTheAged"
}
Space mySpace2{
Space.usage="AmusementFacility"
OR Space.usage="FacilityForStorageAndTreatmentOfDangerousSubstance"
OR Space.usage="Factory"
OR Space.usage="AutomobileRepairShop"
}
isAdjacent(mySpace, mySpace2)=False
}
②영 제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”
}
2. 제1종 근린생활시설 중 마을회관·마을공동작업소·마을공동구판장·변전소·양수장·정수장·대피소·공중화장실 기타 이와 유사한 것
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 11조 (건축물의 바깥쪽으로의 출구의 설치기준) 5항 2호
Check(REFB_11_5_2){
KS
}
KS {
Building myBuilding{
getBuildingUsage() = “ClassINeighborhoodLivingFacility.VillageHall”
OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.CommunityWorkspace”
OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.CommunitySalesShop”
OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.Substation”
OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.PumpingStation”
OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.PurificationPlant”
OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.Shelter”
OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.PublicLibrary”
OR getBuildingUsage() = “ClassINeighborhoodLivingFacility.PublicToilet”
}
isExist(myBuilding) = TRUE
}
3. 문화 및 집회시설(공연장·집회장 및 관람장에 한한다)·판매시설 기타 이와 유사한 용도에 쓰이는 건축물의 계단인 경우에는 계단 및 계단참의 너비를 120센티미터 이상으로 할 것
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조 (계단의 설치기준) 2항3호
check(REFB_15_2_3){
IF CS THEN KS
}
CS{
getBuildingUsage()= "CulturalAndAssemblyFacility.PerformanceHall"
OR getBuildingUsage()= "CulturalAndAssemblyFacility.AssemblyHall"
OR getBuildingUsage()= "CulturalAndAssemblyFacility.Auditorium"
OR getBuildingUsage()= "CommercialFacility "
}
KS{
getObjectWidth(Stair)>=120 cm
getObjectWidth(StairLanding)>=120 cm
}
def Check():
for building in SELECT('building'):
bldg_use = building.SELECT('building type').STRING()
sub_use = building.SELECT('prop', '세부용도').STRING()
min_clear_w = 0.6
max_riser_h = 0.0
min_tread_w = 0.0
if bldg_use == '교육연구시설':
min_clear_w = 1.5
min_tread_w = 0.26
if sub_use == '초등학교':
max_riser_h = 0.16
elif sub_use in ['중학교', '고등학교']:
max_riser_h = 0.18
elif (bldg_use == '문화 및 집회시설' and sub_use in ['공연장', '집회장', '관람장']) or (bldg_use == '판매시설'):
min_clear_w = 1.2
else:
min_clear_w = 0.6
for storey in building.SELECT('storey'):
for stair in storey.SELECT('stair'):
clear_width = stair.SELECT('clear width').UNIT('m')
clear_w = clear_width.NUMBER()
if clear_w < min_clear_w:
clear_width.ERROR('유효너비: ' + str(clear_w) + ' < ' + str(min_clear_w))
else:
clear_width.SUCCESS('유효너비: ' + str(clear_w) + ' >= ' + str(min_clear_w))
if max_riser_h > 0:
for riser_height in stair.SELECT('riser height'):
riser_h = riser_height.UNIT('m').NUMBER()
if riser_h > max_riser_h:
riser_height.ERROR('단높이: ' + str(riser_h) + ' > ' + str(max_riser_h))
break
if min_tread_w > 0:
for tread_width in stair.SELECT('tread width'):
tread_w = tread_width.UNIT('m').NUMBER()
if tread_w < min_tread_w:
tread_width.ERROR('단너비: ' + str(tread_w) + ' < ' + str(min_tread_w))
break
③공동주택(기숙사를 제외한다)·제1종 근린생활시설·제2종 근린생활시설·문화 및 집회시설·종교시설·판매시설·운수시설·의료시설·노유자시설·업무시설·숙박시설·위락시설 또는 관광휴게시설의 용도에 쓰이는 건축물의 주계단·피난계단 또는 특별피난계단에 설치하는 난간 및 바닥은 아동의 이용에 안전하고 노약자 및 신체장애인의 이용에 편리한 구조로 하여야 하며, 양쪽에 벽등이 있어 난간이 없는 경우에는 손잡이를 설치하여야 한다. <개정 2010.4.7>
check(REFB_15_3){
IF CS THEN KS
}
CS{
getBuildingUsage()= "ClassINeighborhoodLivingFacility"
OR getBuildingUsage() = "ClassIINeighborhoodLivingFacility"
OR getBuildingUsage() = "CulturalAndAssemblyFacility"
OR getBuildingUsage() = "ReligiousFacility"
OR getBuildingUsage() = "CommercialFacility"
OR getBuildingUsage() = "TransportationFacility"
OR getBuildingUsage() = "MedicalFacility"
OR getBuildingUsage() = "FacilitiesForTheAgedAndChildren"
OR getBuildingUsage() = "BusinessFacility"
OR getBuildingUsage() = "LodgingFacility"
OR getBuildingUsage() = "AmusementFacility"
OR getBuildingUsage() = "FacilityForTourismAndRelaxation"
OR (getBuildingUsage() = "MultiUnitHouse" AND getBuildingUsage() != "Dormitory")
}
KS{
isExist(Railing)=TRUE
OR (isExist(Railing)=FALSE AND isExist(Handle)=TRUE)
}
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 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의2. 제2종근린생활시설 중 공연장·단란주점·당구장·노래연습장, 문화 및 집회시설중 예식장·공연장, 수련시설 중 생활권수련시설·자연권수련시설, 숙박시설중 여관·여인숙, 위락시설중 단란주점·유흥주점 또는 「다중이용업소의 안전관리에 관한 특별법 시행령」 제2조에 따른 다중이용업의 용도에 쓰이는 층으로서 그 층의 거실의 바닥면적의 합계가 50제곱미터 이상인 건축물에는 직통계단을 2개소 이상 설치할 것
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 25조 (지하층의 구조) 1항 1의2호
check(REFB_25_1_1-2){
IF CS THEN KS
}
CS{
(getBuildingUsage() = "ClassIINeighborhoodLivingFacility.PerformanceHall"
OR getBuildingUsage() = "ClassIINeighborhoodLivingFacility.Pubs"
OR getBuildingUsage() = "ClassIINeighborhoodLivingFacility.BilliardRoom"
OR getBuildingUsage() = "ClassIINeighborhoodLivingFacility.Karaoke"
OR getBuildingUsage() = "CulturalAndAssemblyFacility.WeddingHall"
OR getBuildingUsage() = "CulturalAndAssemblyFacility.PerformanceHall"
OR getBuildingUsage() = "TrainingFacility.TrainingFacilityInLivingZone"
OR getBuildingUsage() = "TrainingFacility.??LivingZone"
OR getBuildingUsage() = "LodgingFacility.Inn"
OR getBuildingUsage() = "AmusementFacility.Pubs"
OR getBuildingUsage() = "AmusementFacility.Tavern"
OR getResult(ERSASP_2) = TRUE)
getTotalFloorArea(Room) >= 50 m2
}
KS{
Stair myStair{
isObjectProperty(Stair.isDirect) = TRUE
}
getObjectCount(myStair) >= 2
}
2. 헬리포트의 중심으로부터 반경 12미터 이내에는 헬리콥터의 이·착륙에 장애가 되는 건축물, 공작물, 조경시설 또는 난간 등을 설치하지 아니할 것
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 13조 (헬리포트 및 구조공간 설치 기준) 1항 2호
Check(REFB_13_1_2){
KS
}
KS{
Space mySpace{
// 헬리포트의 중심으로부터 반경 12미터 이내의 공간
}
isInstalled(Building, mySpace)=False
isInstalled(Construction, mySpace)=False
isInstalled(LandscapeFacility, mySpace)=False
isInstalled(Railing, mySpace)=False
}
// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 13조 (헬리포트 및 구조공간 설치 기준) 3항 7호
check(REFB_13_3_7){
KS
}
KS{
Space mySpace{
isObjectProperty(Space.isEscape) = TRUE
}
hasObject(mySpace, WarningAndCommunicationFacility) = TRUE
}
④ 영 제51조제3항에서 "국토교통부령으로정하는 기준"이란 높이 1.2미터 이상의 난간이나 그 밖에 이와 유사한 추락방지를 위한 안전시설을 말한다. <신설 2010.4.7, 2013.3.23>
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 17조 (채광 및 환기를 위한 창문등) 4항
check(REFB_17_4){
getObjectHeight(Railing) >= 1.2 m
OR getObjectHeight(FallPreventionSafetyFacility) >= 1.2 m
}
②문화 및 집회시설(공연장ㆍ집회장ㆍ관람장ㆍ전시장에 한한다), 종교시설 중 종교집회장, 노유자시설 중 아동 관련 시설ㆍ노인복지시설, 수련시설 중 생활권수련시설, 위락시설 중 유흥주점 및 장례식장의 관람석 또는 집회실과 접하는 복도의 유효너비는 제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))
//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 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
}
3. 위험물저장 및 처리시설(자가난방과 자가발전 등의 용도로 쓰는 시설을 포함한다), 자동차 관련 시설, 방송통신시설 중 방송국ㆍ촬영소 또는 발전시설의 용도로 쓰는 건축물
Check(EDBA_61_1_3){
KS}
KS{
getBuildingUsage()="FacilityForStorageAndTreatmentOfDangerousSubstance"
OR getBuildingUsage()="FacilityForMotorVehicle"
OR (getBuildingUsage()="FacilityForBroadcastingAndTelecommunication.BroadcastingStation"
OR getBuildingUsage()="FacilityForBroadcastingAndTelecommunication.Studio"
OR getBuildingUsage()="FacilityForBroadcastingAndTelecommunication.PowerPlant"
}
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))
Check(EDBA_61_1_1){
IF CS THEN KS
}
Floor myfloor1 {
isObjectProperty(ClassIINeighborhoodLivingFacility.PerformanceHall)=TRUE
OR isObjectProperty(ClassIINeighborhoodLivingFacility.ReligiousAssemblyFacility)=TRUE
OR isObjectProperty(ClassIINeighborhoodLivingFacility.ReligiousAssemblyFacility)=TRUE
AND getFloorArea()>=300
}
CS{
isExist(myfloor1)=TRUE
OR(getBuildingUsage()= "CulturalAndAssemblyFacility"
AND getBuildingUsage()!= "CulturalAndAssemblyFacility.WeddingHall")
OR getBuildingUsage()= "ReligiousFacility"
OR getBuildingUsage()= "CommercialFacility"
OR getBuildingUsage()= "TransportationFacility"
OR (getBuildingUsage()= "AmusementFacility"
OR (getBuildingUsage()!= "AmusementFacility.Pubs"
AND getBuildingUsage()!= "AmusementFacility.BarBusiness")
}
KS{
getFloorArea(Room)>=200m2
OR (isObjectProperty(MainStructuralPart.isFireResistantStructure)=TRUE
OR isObjectProperty(MainStructuralPart.Material.nonCombustibility)=TRUE
getFloorArea(Room)>=400m2
}
2. 제2종 근린생활시설 중 공연장·종교집회장·인터넷컴퓨터게임시설제공업소·학원·독서실·당구장·다중생활시설의 용도로 쓰는 건축물
Check(EDBA_61_1_2){
IF CS THEN KS1 OR KS2}
Building myBuilding{
getBuildingUsage()="DetachedHouse.Multi-userHouses"
OR getBuildingUsage()="DetachedHouse.Multi-familyHouses"
OR getBuildingUsage()="ClassIINeighborhoodLivingFacility.EducationalInstitute"
OR getBuildingUsage()="ClassIINeighborhoodLivingFacility.ReadingRooms
OR getBuildingUsage()="ClassIINeighborhoodLivingFacility.CommunalLivingFacility
OR getBuildingUsage()="ClassIINeighborhoodLivingFacility.LodgingFacility"
OR getBuildingUsage()="ClassIINeighborhoodLivingFacility.MedicalFacility"
OR getBuildingUsage()="EducationAndResearchFacility.EducationalInstitute"
OR getBuildingUsage()="BusinessFacility.Oofficetels"
OR getBuildingUsage()="FuneralParlors"
}
MBU = getObjectUsage(myBuilding)
CS{
getBuildingUsage() = MBU
Floor myfloor{
Floor.number>=3
}
KS1{
(Floor.number>=3
AND getTotalfloorarea(Room)>=200m2)
KS2{isObjectProperty(MainStructuralPart.isFireResistantStructure)=TRUE
OR isObjectProperty(MainStructuralPart.Material.nonCombustibility)=TRUE
AND Floor.number>=3
getTotalfloorarea(Room)>=200m2
}
나. 바닥면적의 합계가 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))
6. 문화 및 집회시설, 종교시설, 판매시설, 운수시설, 의료시설, 교육연구시설 중 학교(초등학교만 해당한다)·학원, 노유자시설, 수련시설, 업무시설 중 오피스텔, 숙박시설, 위락시설(단란주점 및 유흥주점은 제외한다), 장례시설, 「다중이용업소의 안전관리에 관한 특별법 시행령」 제2조에 따른 다중이용업(단란주점영업 및 유흥주점영업은 제외한다)의 용도로 쓰는 건축물
Check(EDBA_61_1_6){
KS}
KS{
(getBuildingUsage()="ClassIINeighborhoodLivingFacility.PerformanceHall"
OR getBuildingUsage()="ClassIINeighborhoodLivingFacility.BilliardRoom")
OR getBuildingUsage()="CulturalAndAssemblyFacility.WeddingHall"
OR getBuildingUsage()="EducationAndResearchFacility.ElementarySchool"
OR getBuildingUsage()="Trainingfacility"
OR (getBuildingUsage()="AmusementFacility.BarBusiness"
OR getResult(ERSASP_2)= TRUE)
}
def Check():
typ = SELECT('typology').STRING().lower()
if typ == "LodgingFacility":
building.SUCCESS("Building Usage is LodgingFacility")
else:
building.ERROR("Building Usage is not LodgingFacility")
def Check():
typ = SELECT('typology').STRING().lower()
if typ == "ClassIINeighborhoodLivingFacility.Restaurant":
building.SUCCESS("Building Usage is Restaurant of ClassIINeighborhoodLivingFacility")
else:
building.ERROR("Building Usage is not Restaurant of ClassIINeighborhoodLivingFacility")
def Check():
typ = SELECT('typology').STRING().lower()
if typ == "BusinessFacility.GeneralBusinessFacility":
building.SUCCESS("Building Usage is GeneralBusinessFacility of BusinessFacility")
else:
building.ERROR("Building Usage is not GeneralBusinessFacility of BusinessFacility")
① 법 제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
}
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")
}
제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))
2. 문화 및 집회시설 중 전시장 또는 동·식물원, 판매시설, 운수시설, 수련시설, 운동시설 중 체육관·운동장, 위락시설(주점영업의 용도로 쓰는 것은 제외한다), 창고시설, 위험물저장 및 처리시설, 자동차 관련 시설, 방송통신시설 중 방송국·전신전화국·촬영소, 묘지 관련 시설 중 화장장 또는 관광휴게시설의 용도로 쓰는 건축물로서 그 용도로 쓰는 바닥면적의 합계가 500제곱미터 이상인 건축물
4. 건축물의 2층이 단독주택 중 다중주택 및 다가구주택, 공동주택, 제1종 근린생활시설(의료의 용도로 쓰는 시설만 해당한다), 의료시설, 노유자시설 중 아동 관련 시설 및 노인복지시설, 수련시설 중 유스호스텔, 업무시설 중 오피스텔, 숙박시설 또는 장례식장의 용도로 쓰는 건축물로서 그 용도로 쓰는 바닥면적의 합계가 400제곱미터 이상인 건축물
//건축법 시행령 56조 (건축물의 내화구조와 방화벽) 1항 4호
check(EDBA_56_1_4){
Floor myFloor{
getFloorNumber = 2
getObjectUsage(Floor) = "DetachedHouse.MultiUserHouse"
OR getObjectUsage(Floor) = "DetachedHouse.MultiFamilyHouse"
OR getObjectUsage(Floor) = "DetachedHouse.MultiFamilyHouse"
OR getObjectUsage(Floor) = "MultiUnitHouse"
OR getObjectUsage(Floor) = "ClassINeighborhoodLivingFacility.MedicalFacility"
OR getObjectUsage(Floor) = "ClassIINeighborhoodLivingFacility.CommunalLivingFacility"
OR getObjectUsage(Floor) = "MedicalFacility"
OR getObjectUsage(Floor) = "FacilitiesForTheAgedAndChildren.ChildrenRelatedFacility"
OR getObjectUsage(Floor) = "FacilitiesForTheAgedAndChildren.WelfareFacilityForTheAged "
OR getObjectUsage(Floor) = "Trainingfacility.YouthHostel"
OR getObjectUsage(Floor) = "BusinessFacility.Officetel"
OR getObjectUsage(Floor) = "LodgingFacility"
OR getObjectUsage(Floor) = "FuneralParlor"
}
getFloorArea(myFloor) >= 400 m2
}
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
}
⑤ 건축물의 5층 이상인 층으로서 문화 및 집회시설 중 전시장 또는 동·식물원, 판매시설, 운수시설(여객용 시설만 해당한다), 운동시설, 위락시설, 관광휴게시설(다중이 이용하는 시설만 해당한다) 또는 수련시설 중 생활권 수련시설의 용도로 쓰는 층에는 제34조에 따른 직통계단 외에 그 층의 해당 용도로 쓰는 바닥면적의 합계가 2천 제곱미터를 넘는 경우에는 그 넘는 2천 제곱미터 이내마다 1개소의 피난계단 또는 특별피난계단(4층 이하의 층에는 쓰지 아니하는 피난계단 또는 특별피난계단만 해당한다)을 설치하여야 한다. <개정 2008.10.29, 2009.7.16>
//건축법 시행령 35조 (피난계단의 설치) 5항
check(EDBA_35_5){
IF (CS) THEN KS
}
CS{
Floor myFloor{
Floor.number >= 5
OR Floor.usage = "CulturalAndAssemblyFacility.ExhibitionHall"
OR Floor.usage = "CulturalAndAssemblyFacility.ZoologicalAndBotanicalGarden"
OR Floor.usage = "CommercialFacility"
OR Floor.usage = "PassengerTrafficFacilities“??
OR Floor.usage = "SportsFacility"
OR Floor.usage = "AmusementFacility"
OR Floor.usage = "FacilityForTourismAndRelaxation“???
OR Floor.usage = "Trainingfacility.TrainingFacilityInLivingZone“
}
isExist(myFloor)=True
}
KS{
Stair myStair2{
isObjectProperty(Stair.isSpecialEscape) = True
OR isObjectProperty(Stair.isEscape) = True
}
getResult(EDBA_34) = TRUE
IF (getTotalFloorArea(myFloor.Space) >= 2000m2)
THEN getObjectCount(myStair2) >= 1+ getFloorArea(myFloor.Space)/2000
}
① 법 제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
//다만, 주택의 출입구ㆍ계단 및 승강기 등을 주택 외의 시설과 분리된 구조로 하여야 한다.
}
1. 노유자시설 중 아동 관련 시설 또는 노인복지시설과 판매시설 중 도매시장 또는 소매시장
//건축법 시행령 47조 (방화에 장애가 되는 용도의 제한) 2항 1호
Check(EDBA_47_2_1){
KS
}
KS{
getBuildingUsage()="FacilitiesForTheAgedAndChildren.ChildrenRelatedFacility"
OR getBuildingUsage()="FacilitiesForTheAgedAndChildren.WelfareFacilityForTheAged"
OR getBuildingUsage()="CommercialFacility.WholesaleMarket"
OR getBuildingUsage()="CommercialFacility.RetailMarket"
}
//건축법 시행령 47조 (방화에 장애가 되는 용도의 제한) 2항 2호
Check(EDBA_47_2_2){
KS
}
KS{
getBuildingUsage()="DetachedHouse.MultiUserHouse"
OR getBuildingUsage()="DetachedHouse.MultiFamilyHouse"
OR getBuildingUsage()="MultiUnitHouse"
OR getBuildingUsage()="ClassINeighborhoodLivingFacility.MaternityCenter"
OR getBuildingUsage()="ClassINeighborhoodLivingFacility.PostnatalCareCenter"
OR getBuildingUsage()="ClassIINeighborhoodLivingFacility.CommunalLivingFacility"
}
def Check():
typ = SELECT('typology').STRING().lower()
if typ == "MultiUnitHouse":
building.SUCCESS("Building Usage is AmusementFacility")
else:
building.ERROR("Building Usage is not AmusementFacility")
⑧ 제1항에도 불구하고 자연녹지지역에 설치되는 도시·군계획시설 중 유원지의 건폐율은 30퍼센트의 범위에서 도시·군계획조례로 정하는 비율을 초과하여서는 아니 되며, 공원의 건폐율은 20퍼센트의 범위에서 도시·군계획조례로 정하는 비율을 초과하여서는 아니 된다. <개정 2009.7.7, 2011.9.16, 2012.4.10>
//국토의 계획 및 이용에 관한 법률 시행령 84조 (용도지역안에서의 건폐율) 8항
Check(EDLPUA_84_8){
KS
}
KS{
IF getObjectProperty(GreenNaturalArea.UrbanAndGunPlanningFacility.type)="AmusementPark"
THEN getBuildingToLandRatio() <30
getResult(Unimplemented_UPMO)
ELSE IF getObjectProperty(GreenNaturalArea.UrbanAndGunPlanningFacility.type)="Park"
THEN getBuildingToLandRatio() <30
getResult(Unimplemented_UPMO)
END IF
}
④ 다음 각 호의 어느 하나에 해당하는 특정소방대상물 가운데 대통령령으로 정하는 특정소방대상물에는 제9조제1항에도 불구하고 대통령령으로 정하는 소방시설을 설치하지 아니할 수 있다.
// 소방시설 설치ㆍ유지 및 안전관리에 관한 법률 11조 (소방시설기준 적용의 특례) 4항
Check(IMSFA_11_4){
IF CS THEN KS
}
CS{
getResult(IMSFA_11_4_4) = TRUE
}
KS{
isInstalled(FireFightingFacility) = TRUE OR FALSE
}
다. 송수구가 부설된 옥내소화전을 설치한 특정소방대상물(집회장·관람장·백화점·도매시장·소매시장·판매시설·공장·창고시설 또는 지하가를 제외한다)로서 다음의 어느 하나에 해당하는 층
(1) 지하층을 제외한 층수가 4층 이하이고 연면적이 6,000㎡ 미만인 특정소방대상물의 지상층
(2) 지하층의 층수가 2 이하인 특정소방대상물의 지하층
제4조(유도등 및 유도표지의 종류) 특정소방대상물의 용도별로 설치하여야 할 유도등 및 유도표지는 다음 표에 따라 그에 적응하는 종류의 것으로 설치하여야 한다.<개정 2008.12.15, 2012.8.20>
// 유도등 및 유도표지의 화재안전기준(nfsc 303) 4조 (유도등 및 유도표지의 종류)
Check(NFSC303_4){
KS
}
KS{
LeadingLight myLeadingLight1{
// isObejctProperty(LeadingLight.isForExit)=True, 대형
}
LeadingLight myLeadingLight2{
// isObejctProperty(LeadingLight.isForExit)=True , 중형
}
LeadingLight myLeadingLight3{
// isObejctProperty(LeadingLight.isForExit)=True, 소형
}
LeadingLight myLeadingLight4{
isObejctProperty(LeadingLight.isForPassage)=True
}
LeadingLight myLeadingLight5{
isObjectProperty(LeadingLight.isForSeat)=True
}
LeadingSign myLeadingSign1{
isObjectProperty(LeadingSign.isForExit)=True
}
LeadingSign myLeadingSign2{
isObjectProperty(LeadingSign.isForPassage)=True
}
IF getBuildingUsage()="PerformanceHall"
OR getBuildingUsage()="AssemblyHall"
OR getBuildingUsage()="Auditorium"
OR getBuildingUsage()="SportsFacility"
OR getBuildingUsage()="Tavern"
THEN
isExist(myLeadingLight1)=True
isExist(myLeadingLight4)=True
isExist(myLeadingLight5)=True
ELSE IF getBuildingUsage()="AmusementFacility"
OR getBuildingUsage()="CommercialFacility"
OR getBuildingUsage()="TransportationFacility"
OR getBuildingUsage()="TouristAccommodationBusiness"
OR getBuildingUsage()="MedicalFacility"
OR getBuildingUsage()="FuneralParlor"
OR getBuildingUsage()="FacilityForBroadcastingAndTelecommunication"
OR getBuildingUsage()="ExhibitionHall"
OR getBuildingUsage()="UndergroundShoppingCenter"
OR getBuildingUsage()="SubwayStation"
THEN isExist(myLeadingLight1)=True
isExist(myLeadingLight4)True
ELSE IF getBuildingUsage()="LodgingFacility"
OR getBuildingUsage()="Officetel"
// OR 지하층, 무창층 또는 층수가 11층 이상인 특정소방대상물
THEN isExist(myLeadingLight2)=True
isExist(myLeadingLight4)True
ELSE IF getBuildingUsage()="ClassINeighborhoodLivingFacility"
OR getBuildingUsage()="ClassIINeighborhoodLivingFacility"
OR getBuildingUsage()="FacilitiesForTheAgedAndChildren"
OR getBuildingUsage()="BusinessFacility"
OR getBuildingUsage()="FacilityForPowerGeneration"
OR getBuildingUsage()="ReligiousFacility"
OR getBuildingUsage()="EducationAndResearchFacility"
OR getBuildingUsage()="Trainingfacility"
OR getBuildingUsage()="Factory"
OR getBuildingUsage()="Warehouse"
OR getBuildingUsage()="CorrectionalFacilityAndMilitaryInstallation"
OR getBuildingUsage()="Dormitory"
OR getBuildingUsage()="AutomobileRepairShop"
OR getBuildingUsage()="DrivingSchool"
OR getBuildingUsage()="RepairingSchool"
OR getBuildingUsage()="PubliclyUsedEstablishment"
OR getBuildingUsage()="ComplexBuilding"
OR getBuildingUsage()="ApartmentHouse"
THEN isExist(myLeadingLight3)=True
isExist(myLeadingLight4)True
ELSE THEN isExist(myLeadingSign1)=True
isExist(myLeadingSign2)True
END IF
}
1. 공원
2. 공공건물 및 공중이용시설
가. 제1종 근린생활시설
(1) 수퍼마켓·일용품(식품·잡화·의류·완구·서적·건축자재·의약품ㆍ의료기기 등) 등의 소매점으로서 동일한 건축물(하나의 대지 안에 2동 이상의 건축물이 있는 경우에는 이를 동일한 건축물로 본다. 이하 같다) 안에서 당해 용도에 쓰이는 바닥면적의 합계가 300제곱미터 이상 1천제곱미터 미만인 시설
(2) 이용원·미용원·목욕장으로서 동일한 건축물 안에서 당해 용도에 쓰이는 바닥면적
// 장애인ㆍ노인ㆍ임산부 등의 편의증진보장에 관한 법률 시행령 별표1 편의시설 설치 대상시설(제3조 관련)
Check(EDCDAPA_*_1_2_가_1){
getBuildingUsage()=“RetailStore”
Floor myFloor{
getFloorUsage(Floor)=”RetailStore”
}
getTotalFloorArea(myFloor)>=300 m2
getTotalFloorArea(myFloor)<1000 m2
}
Check(EDCDAPA_*_1_2_가_2){
Building myBuilding {
getBuildingUsage()=“Barbershop”
OR getBuildingUsage()=“BeautyShop”
OR getBuildingUsage()=“Bathhouse”
}
Floor myFloor{
getFloorUsage(Floor)= myBuilding.usage
}
getTotalFloorArea(myFloor)>=500 m2
}
Check(EDCDAPA_*_1_2_가_3){
Building myBuilding{
getBuildingUsage()=“CommunityCenter”
OR getBuildingUsage()=“PoliceBox”
OR getBuildingUsage()=“PoliceSubstation”
OR getBuildingUsage()=“PostOffice”
OR getBuildingUsage()=“HealthCenter”
OR getBuildingUsage()=“PublicLibrary”
OR getBuildingUsage()=“NationalHealthInsuranceService_NationalPensionService_Korea EmploymentAgencyForTheDisabled_KoreaWorkersCompensationAndWelfareServiceOffice”
}
Floor myFloor{
getFloorUsage(Floor)= myBuilding.usage
}
getTotalFloorArea(myFloor)<1000 m2
}
Check(EDCDAPA_*_1_2_가_4){
getBuildingUsage()=“Shelter”
}
Check(EDCDAPA_*_1_2_가_5){
getBuildingUsage()=“PublicToilet”
}
Check(EDCDAPA_*_1_2_가_6){
Building myBuilding{
getBuildingUsage()=“Clinic_ DentalClinic_OrientalMedicalClinic_MaternityClinic”
}
Floor myFloor{
getFloorUsage(Floor)= myBuilding.usage
}
getTotalFloorArea(myFloor)>=500 m2
}
Check(EDCDAPA_*_1_2_가_7){
getBuildingUsage()=“CommunityChildCenter”
Floor myFloor{
getFloorUsage(Floor)= “CommunityChildCenter”
}
getTotalFloorArea(myFloor)>=300 m2
}
Check(EDCDAPA_*_1_2_나_1){
getBuildingUsage()=“Restaurant”
Floor myFloor{
getFloorUsage(Floor)= “CommunityChildCenter”
}
getTotalFloorArea(myFloor)>=300 m2
}
Check(EDCDAPA_*_1_2_나_2){
Building myBuilding {
(getBuildingUsage()=“RestingRestaurant”
OR getBuildingUsage()=“Bakery”)
getBuildingUsage() !=”ClassINeighborhoodLivingFacility”
}
Floor myFloor{
getFloorUsage(Floor)= myBuilding.usage
}
getTotalFloorArea(myFloor)>=300 m2
}
Check(EDCDAPA_*_1_2_나_2){
getBuildingUsage()=“MassageParlor”
Floor myFloor{
getFloorUsage(Floor)= “MassageParlor”
}
getTotalFloorArea(myFloor)>=500 m2
}
Check(EDCDAPA_*_1_2_카_1){
getBuildingUsage()=“PublicOfficeBuilding. OfficeBuildingOfLocalGovernment ”
getBuildingUsage() !=”ClassINeighborhoodLivingFacility”
}
Check(EDCDAPA_*_1_2_카_2){
Building myBuilding{
getBuildingUsage()=“GeneralBusinessFacility.FinanceBusiness”
OR getBuildingUsage()=“GeneralBusinessFacility.Office”
OR getBuildingUsage()=“GeneralBusinessFacility.NewspaperOffice”
OR getBuildingUsage()=“GeneralBusinessFacility. Officetel”
}
Floor myFloor {
getFloorUsage()=myBuilding.usage
}
getTotalFloorArea(myFloor)>=500 m2
}
Check(EDCDAPA_*_1_2_카_3){
Building myBuilding{
getBuildingUsage()=“GeneralBusinessFacility.NationalHealthInsuranceService_NationalPensionService_Korea EmploymentAgencyForTheDisabled_KoreaWorkersCompensationAndWelfareServiceOffice”
}
Floor myFloor {
getFloorUsage()=myBuilding.usage
}
getTotalFloorArea(myFloor)>=1000 m2
}
1. 삭제 <2006.1.19>
2. 공원<표-EDCDAPA_*_2_T1>
(편의시설의 종류
:설치기준)
가. 장애인 등의 출입이 가능한 출입구
:공원 외부에서 내부로 이르는 출입구는 주출입구를 포함하여 적어도 하나 이상을 장애인등의 출입이 가능하도록 유효폭·형태 및 부착물 등을 고려하여 설치하여야 한다.
나. 장애인등의 통행이 가능한 보도
:공원시설(공중이 직접 이용하는 시설에 한한다)에 접근할 수 있는 공원안의 보도중 적어도 하나는 장애인등이 통행할
①국토의계획및이용에관한법률의 규정에 의한 도시지역·제2종지구단위계획구역 및 지방자치단체의 조례가 정하는 관리지역안에서 건축물·골프연습장 기타 주차수요를 유발하는 시설(이하 "施設物"이라 한다)을 건축 또는 설치하고자 하는 자는 당해 시설물의 내부 또는 그 부지안에 부설주차장(貨物의 荷役 기타 사업수행을 위한 駐車場을 포함한다. 이하 같다)을 설치하여야 한다. <개정 1995.12.29, 2002.2.4>
//주차장법 19조 (부설주차장의 설치) 1항
Check(PLA_19_1){
IF CS THEN KS
}
CS{
getSiteUsage()="UrbanArea"
OR getSiteUsage()="DistrictUnitPlanningZone"
OR getSiteUsage()="ControlArea"
}
KS{
ParkingLot myParkingLot{
isObjectProperty(ParkingLot.isAttachedParking)=True
}
isInstalled(myParkingLot, Facility)=True
isInstalled(myParkingLot, Site)=True
}