개방형BIM 기반의 건축설계 적법성 평가 자동화 기술 및 응용기술 개발
Development of OpenBIM based Architectural Design Code Checking and Evaluation Technology
  Welcome to BIM - 2nd Project Website - Yonsei University
PAGE MENU  
전체법규 - 법규데이터베이스
- 대한민국 전체 법규 목록
- 설계품질검토 대상 관련법규
- 관련법규 변동 현황
대상법규 - 문장 논리규칙체계화
- 조항단위 논리규칙체계
- 문장단위 논리규칙체계
주어부 - 객체.속성 데이터베이스
- 법규로부터의 객체.속성 분류
- 명칭DB: 객체 | 객체및속성
서술부 - 함수 데이터베이스
- 논리규칙화 함수 분류
- 논리규칙화 함수 DB
관계부 - 문장 내.외 관계논리
- 문장 내.외 관계유형분류
- 문장 내.외관계 논리체계화
문장단위 | 체크리스트 단위
KBimCode 데이터베이스
- KBimCode Lang. Definition
- KBimCode Editor:
전체 개발항목 단위
우선순위 개발항목 단위
- KBimCode DB 2단계:
문장단위 | 조항단위 |
분야/용도/단계 체크리스트 단위
- KBimLogic Applications
KBimAssess Code 데이터베이스
- Executable KBimAssess Code
- KBimCode-Assess 연동모듈
 
(2025-06-27 기준) 설계품질검토용 건축법 및 관련법규 - KBIMCode (문장단위)
    1      
1 / 1 page Total 2500 / 4000 records    신규입력
Select
ALL
None
#
ID
Law
Jo
JO Name
HANG
HO
MOK
Text
Search!
1
72716 건축물의 에너지절약설계기준 제 6조 1호 가 목

가. 외기에 직접 또는 간접 면하는 거실의 각 부위에는 제2조에 따라 건축물의 열손실방지 조치를 하여야 한다. 다만, 다음 부위에 대해서는 그러하지 아니할 수 있다.





//스프링클러설비의 화재안전기준(NFSC 103) 6조 (폐쇄형스프링클러설비의 방호구역·유수검지장치) 2호

Check(NFSC103_6_0_2){
     KS
}

KS{
     getObjectCount(SprinklerSystem.ProtectionZonme.One.WaterflowIndicator)>=1
} 




Python Code 변환 예정



Modify
2
72717 건축물의 에너지절약설계기준 제 6조 1호 가 1) 목

1) 지표면 아래 2미터를 초과하여 위치한 지하 부위(공동주택의 거실 부위는 제외)로서 이중벽의 설치 등 하계 표면결로 방지 조치를 한 경우





//스프링클러설비의 화재안전기준(NFSC 103) 6조 (폐쇄형스프링클러설비의 방호구역·유수검지장치) 3호



Check(NFSC103_6_0_3){

    IF CS THEN KS1 ELSE KS2 

}



CS{

Building myBuilding{
Building.usage = "MultiUnitHouse"
}

     getObjectCount(Floor.One, SprinklerHead)<=10

     OR isObjectProperty(myBuilding.isDuplexType)=True

}



KS1{

     getObjectCount(SprinklerSystem.ProtectionZone.One.Floor )<=3

}



KS2{

   

 getObjectCount(SprinklerSystem.ProtectionZone.One.Floor )<2

} 




Python Code 변환 예정



Modify
3
72721 건축물의 에너지절약설계기준 제 6조 1호 가 5) 목

5) 제5조제9호아목에 따른 방풍구조(외벽제외) 또는 바닥면적 150제곱미터 이하의 개별 점포의 출입문





//스프링클러설비의 화재안전기준(NFSC 103) 7조 (개방형스프링클러설비의 방수구역 및 일제개방밸브) 1호

Check(NFSC103_7_0_1){
       KS
}

KS{
   Zone myZone{
          isObjectProperty(Zone.isWaterProofingZone)=True
   }

    getObjectCount(myZonme.One.Floor)<2
} 




Python Code 변환 예정



Modify
4
72722 건축물의 에너지절약설계기준 제 6조 1호 나 목

나. 단열조치를 하여야 하는 부위의 열관류율이 위치 또는 구조상의 특성에 의하여 일정하지 않는 경우에는 해당 부위의 평균 열관류율값을 면적가중 계산에 의하여 구한다.





//스프링클러설비의 화재안전기준(NFSC 103) 7조 (개방형스프링클러설비의 방수구역 및 일제개방밸브) 2호

Check(NFSC103_7_0_2){
     KS
}

KS{
 Zone myZone{
    isObjectProperty(Zone.isWaterProofingZone)=True
 }
 
Valve myValve{
    isObjectProperty(Valve.isDelugeValve)=True
}
  getObjectCount(myValve,myZone)>=1
} 




Python Code 변환 예정



Modify
5
72723 건축물의 에너지절약설계기준 제 6조 1호 다 목

다. 단열조치를 하여야 하는 부위에 대하여는 다음 각 호에서 정하는 방법에 따라 단열기준에 적합한지를 판단할 수 있다.





//스프링클러설비의 화재안전기준(NFSC 103) 7조 (개방형스프링클러설비의 방수구역 및 일제개방밸브) 3호



NFSC103_7_0_3{

      IF CS THEN KS1 ELSE KS2

}



CS{

 getObjectCount(myZone)>=2

}



KS1{

  getObjectCount(SprinklerSystem.Head, myZone.One)>=25

}



KS2{

 getObjectCount(SprinklerSystem.Head, myZone.One)<=50

} 




Python Code 변환 예정



Modify
6
72735 건축물의 에너지절약설계기준 제 6조 4호

4. 기밀 및 결로방지 등을 위한 조치





//	스프링클러설비의 화재안전기준(NFSC 103) 10조 (음향장치 및 기동장치) 2항

Check(NFSC103_10_2){

	IF (CS1 THEN KS1) OR (CS2 THEN KS2)

}



CS1{
Space.usage = "RackWarehouse"
isObjectProperty(Space.hasSpecialCombustible) = TRUE

}



KS1{

	getObjectHeight(Rack) / 4 = RH



	(RH-1) <= getObjectCount(SprinklerHead) < RH

	getObjectInterval(SprinklerHead) = 4m

}



CS2{

Space.usage = "RackWarehouse"
isObjectProperty(Space.hasSpecialCombustible) != TRUE


}



KS2{

	getObjectHeight(Rack) / 6 = RH



	(RH-1) <= getObjectCount(SprinklerHead) < RH

	getObjectInterval(SprinklerHead) = 6m

} 




Python Code 변환 예정



Modify
7
72761 건축물의 에너지절약설계기준 제 7조 3호

3. 단열계획





//스프링클러설비의 화재안전기준(nfsc 103) 11조 (송수구) 5호

Check(NFSC103_11_0_5){
	IF CS THEN KS
}
CS{
	isObject(Sprinkler.Head.openAndCloseType) = "EnclosedType"
}
KS{
	Port myPort{
	isObjectProperty(Port.typeForWater)="FireDepartmentConnection"
	}
	Space mySpace{
	isObjectProperty(Space.FloorSlab.area) = 3000m2
	}
	isInstalled(mySpace, myPort) = TRUE
	getObjectCount(mySpace.One.myPort) >= 1
	getObjectCount(myPort) <= 5
	
} 




Python Code 변환 예정



Modify
8
72791 건축물의 에너지절약설계기준 제 9조 1호

난방 및 냉방설비의 용량계산을 위한 설계기준 실내온도는 난방의 경우 20℃, 냉방의 경우 28℃를 기준으로 하되(목욕장 및 수영장은 제외) 각 건축물 용도 및 개별 실의 특성에 따라 별표8에서 제시된 범위를 참고하여 설비의 용량이 과다해지지 않도록 한다.





//	간이스프링클러설비의 화재안전기준(NFSC 103A) 4조 (수원) 1항 2호

Check(NFSC103A_4_1_2){

	IF CS THEN KS

}



CS{

	WaterSource myWaterSource{

		isObjectProperty(Tank.isWaterSource) = TRUE

	}



	isInstalled(myWaterSource) = TRUE

}



KS{

	getObjectCount(AutomaticWaterSupplyEquipment) >= 1

} 




Python Code 변환 예정



Modify
9
72819 건축물의 에너지절약설계기준 제 10조 3호

3. 조명설비





//간이스프링클러설비의 화재안전기준(nfsc 103a) 6조 (간이스프링클러설비의 방호구역·유수검지장치) 3호



Check(NFSC503A_6_0_3){

	IF (CS1 THEN KS1) OR (CS2 THEN KS2)

}

	Zone myZone{

	isObjectProperty(Zone.isProtectionZone) = TRUE

	}

CS1{

	getObjectCount(Floor.One.SimpleSprinklerHead) > 10

}

KS1{

	getObjectCount(Zone.One.Floor) < 2

}

CS2{

	getObjectCount(Floor.One.SimpleSprinklerHead) <= 10

}

KS2{

	getObjectCount(myZone.One.Floor) <= 3

} 




Python Code 변환 예정



Modify
10
72847 건축물의 에너지절약설계기준 제 11조 4호 나 목

나. 팬코일유닛이 설치되는 경우에는 전원의 방위별, 실의 용도별 통합제어가 가능하도록 한다.





// 간이스프링클러설비의 화재안전기준(nfsc 103a) 8조 (배관 및 밸브) 9항 2호

Check(NFSC503A_8_9_2){
	IF !CS THEN KS
}
CS{
	getResult(NFSC503A_8_9_2_가) = TRUE
}
KS{
	Pipe myPipe{
	isObjectProperty(Pipe.isBranchLines) = TRUE
	}
	Head myHead{
	isIntalled(SimpleSprinkler.Head, myPipe.One) = TRUE
	getObjectVerticalLocation(CeilingCovering, SimpleSprinkler.Head) < 0
	}
	getObjectCount(myHead) <= 8  
} 




Python Code 변환 예정



Modify
11
72867 건축물의 에너지절약설계기준 제 18조 2 항

② 이미 건축허가를 받은 건축물의 건축주 또는 사업주체도 허가변경을 통하여 완화기준 적용 신청을 할 수 있다.





// 간이스프링클러설비의 화재안전기준(nfsc 103a) 8조 (배관 및 밸브) 16항 1호 가복



Check(NFSC503A_8_16_1_가){

	KS

}

KS{

	ShutdownEquipment myShutdownEquipment{

	isObjectProperty(ShutdownEquipment.type) = "Water"

	}

	Valve myValve1{

	isObjectProperty(Valve.isIndicatingValve) = TRUE

	}

	Valve myValve2{

	isObjectProperty(Valve.isCheckValve) = TRUE

	}

	Valve myValve3{

	isObjectProperty(Valve.isTestValve) = TRUE

	getObjectCount(Valve) = 2

	}

	isInstalledInOrder(WaterGauge, myShutdownEquipment, myValve1, myValve2, PressureGauge, WaterflowIndicator, myValve3) = TRUE

} 




Python Code 변환 예정



Modify
12
72870 건축물의 에너지절약설계기준 제 19조 1 항

제19조(인증의 취득) ① 신청인이 인증에 의해 완화기준을 적용받고자 하는 경우에는 인증기관으로부터 예비인증을 받아야 한다.





// 간이스프링클러설비의 화재안전기준(nfsc 103a) 8조 (배관 및 밸브) 16항 3호



Check(NFSC503A_8_16_3){

	IF CS THEN KS

}

CS{

	PressurizedWaterSupplySystem myPressurizedWaterSupplySystem{

	isObjectProperty(PressurizedWaterSupplySystem.supplyType) = "PressurizedTankType"

	}

	isInstalled(Pipe, myPressurizedWaterSupplySystem) = TRUE

	OR 	isInstalled(Valve, myPressurizedWaterSupplySystem) = TRUE

}

KS{

	Tank myTank{

	isObjectProperty(Tank.operationType) = "PressurizedTank"

	}

	Valve myValve1{

	isObjectProperty(Valve.isCheckValve) = TRUE

	}

	Valve myValve2{

	isObjectProperty(Valve.isIndicatingValve) = TRUE

	}

	Valve myValve3{

	isObjectProperty(Valve.isTestValve) = TRUE

	getObjectCount(Valve) = 2

	}

	Pipe myPipe{

	isObjectProperty(Pipe.isForTest) = TRUE

	}

	isInstalledInOrder(WaterSource,  myTank, PressureGauge, myValve1, myPipe, myValve2, WaterflowIndicator, myValve3) = TRUE

} 




Python Code 변환 예정



Modify
13
72871 건축물의 에너지절약설계기준 제 19조 2 항

② 완화기준을 적용받은 건축주 또는 사업주체는 건축물의 사용승인 신청 이전에 본인증을 취득하여 사용승인 신청 시 허가권자에게 인증서 사본을 제출하여야 한다. 단, 본인증의 등급은 예비인증 등급 이상으로 취득하여야 한다.





// 간이스프링클러설비의 화재안전기준(nfsc 103a) 8조 (배관 및 밸브) 16항 4호



Check(NFSC503A_8_16_4){

	IF (!CS1 AND CS2) THEN KS

}

CS1{

	getObjectVerticalLocation(WaterSource, Pump) > 0

}

CS2{

	SimpleSprinklerSystem mySimpleSprinklerSystem{

	isObjectProperty(SimpleSprinklerSystem.isCabinetType) = TRUE

	}

	isInstalled(Pipe, mySimpleSprinklerSystem.PressurizedWaterSupplySystem) = TRUE

	OR 	isInstalled(Valve, mySimpleSprinklerSystem.PressurizedWaterSupplySystem) = TRUE

}

KS{

	Tank myTank{

	isObjectProperty(Tank.operationType) = "HydropneumaticTank"

	}

	Valve myValve1{

	isObjectProperty(Valve.isCheckValve) = TRUE

	}

	Valve myValve2{

	isObjectProperty(Valve.isIndicatingValve) = TRUE

	}

	Valve myValve3{

	isObjectProperty(Valve.isTestValve) = TRUE

	getObjectCount(Valve) = 2

	}



	isInstalledInOrder(WaterSource,  CompoundGauge | VacuumGauge, Pump | myTank, PressureGauge, myValve1, myPipe, myValve2, myValve3) = TRUE

} 




Python Code 변환 예정



Modify
14
72879 건축물의 에너지절약설계기준 제 23조 4 항

④ 기숙사, 오피스텔은 별표1 및 별표3의 공동주택 외의 단열기준을 준수할 수 있으며, 별지 제1호서식의 에너지성능지표 작성 시, 기본배점에서 비주거를 적용한다.





//	간이스프링클러설비의 화재안전기준(NFSC 103A) 별표1 (간이헤드 수별 급수관의 구경) 1항

Check(NFSC103A_*_1){

	getResult(NFSC103A_*_1_1) = TRUE

	getResult(NFSC103A_*_1_2) = TRUE

	getResult(NFSC103A_*_1_3) = TRUE

	getResult(NFSC103A_*_1_4) = TRUE

}

	

	Pipe myPipe{

	getObjectProperty(Pipe.usage) = "WaterSupplyPipe"

	}

	Pipe myPipe2{

	isObjectProperty(Pipe.isBranchLines) = TRUE

	}

	PD = getObjectProperty(Pipe.diameter)

	SSHN = getObjectCount(SimpleSprinkler.Head.)



Check(NFSC103A_*_1_2){

	IF CS THEN KS

}

CS{

	Head myHead{

	getObjectProperty(SimpleSprinkler.Head.openAndCloseType) = "EnclosedType"

	}

	isInstalled(myHead) = TRUE

}

KS{

	IF PD = 25 THEN SSHN = 2

	OR IF PD = 32 THEN SSHN = 3

	OR IF PD = 40 THEN SSHN = 5

	OR IF PD = 50 THEN SSHN = 10

	OR IF PD = 65 THEN SSHN = 30

	OR IF PD = 80 THEN SSHN = 60

	OR IF PD = 100 THEN SSHN = 100

	OR IF PD = 125 THEN SSHN = 160

	OR IF PD = 150 THEN SSHN >= 161

}

Check(NFSC103A_*_1_3){

	IF CS THEN KS

}

CS{

	Head myHead1{

	getObjectProperty(SimpleSprinkler.Head.openAndCloseType) = "EnclosedType"

	}

	isInstalled(myHead1) = TRUE

	Head myHead2{

	getObjectVerticalLocation(Head, CeilingCovering, )  <  0
	}

	Head myHead3{

	isInstalled(Head, CeilingCovering.Inside) = TRUE

	}

	isInstalled(myHead2, myPipe2) = TRUE

	isInstalled(myHead3, myPipe2) = TRUE

}

KS{

	IF PD = 25 THEN SSHN = 2

	OR IF PD = 32 THEN SSHN = 4

	OR IF PD = 40 THEN SSHN = 7

	OR IF PD = 50 THEN SSHN = 15

	OR IF PD = 65 THEN SSHN = 30

	OR IF PD = 80 THEN SSHN = 60

	OR IF PD = 100 THEN SSHN = 100

	OR IF PD = 125 THEN SSHN = 160

	OR IF PD = 150 THEN SSHN >= 161

} 




Python Code 변환 예정



Modify
15
72907 건축물의 에너지절약설계기준 제 별표9조

완화기준





자동화재탐지설비의 화재안전기준(nfsc 203) 7조 (감지기) 3항 8호 가목
Check(NFSC203_7_3_8_가){
	IF !CS THEN KS1 AND K2 ELSE THEN KS3 AND KS4

}
	Zone myZone{
	isObjectProperty(Zone.isDetectionZone) = TRUE
	}
CS1{
	isFireResistantStructure(SpecificFireFightingBuilding.MainStructuralPart) = TRUE
) 
KS1{
	isInstalled(ThermocoupleElement , myZone.Floor, c, 18) = TRUE
}
KS2{
	isObjectProperty(SpecificFireFightingBuilding.myZone.Floor.area) <= 72m2
	getObjectCount(myZone) >= 4
}
KS3{
	isInstalled(ThermocoupleElement , myZone.Floor, c, 22) = TRUE
}
KS4{
	isObjectProperty(SpecificFireFightingBuilding.myZone.Floor.area) <= 88m2
	getObjectCount(myZone) >= 4
} 




Python Code 변환 예정



Modify
16
72908 건축물의 에너지절약설계기준 제 서식1조

에너지절약계획 설계 검토서






자동화재탐지설비의 화재안전기준(nfsc 203) 7조 (감지기) 3항 8호 나목
Check(NFSC203_7_3_8_나){
	KS
}
KS{
	isConnectedTo(ThermocoupleElement, DetectingElement.One) = TRUE
	getObjectCount(ThermocoupleElement) <= 20
} 




Python Code 변환 예정



Modify
17
72910 건축물의 에너지절약설계기준 제 서식3조

에너지절약계획 이행 검토서





자동화재탐지설비의 화재안전기준(nfsc 203) 7조 (감지기) 3항 5호
Check(NFSC203_7_3_5){

	Sensor mySensor1{
	getObjectProperty(Sensor.type) = "Type1"
	}
	Sensor mySensor2{
	isObjectProperty(Sensor.type) = "Type2"
	}

IF 
{isFireResistantStructure(SpecificFireFightingBuilding) = TRUE)
AND 
{isInstalled(Sensor, FloorSlab) = TRUE
	getObjectVerticalDistance(FloorSlab, Sensor) < 8m
}
THEN
{(FA = 65
isInstalled(mySensor1, FloorSlab.Space, C, FA) = TRUE)
OR 
(FA = 36 
isInstalled(mySensor2, FloorSlab.Space, C, FA) = TRUE)

IF getObjectArea(Sensor.FloorSlab) <= FA
THEN getObjectCount(Sensor) = 1

ELSE IF getObjectArea(Sensor.FloorSlab) <= 2*FA
THEN getObjectCount(Sensor) >= 2
}

ELSE IF
{isFireResistantStructure(SpecificFireFightingBuilding) = TRUE)
AND 
{isInstalled(Sensor, FloorSlab) = TRUE
AND
getObjectVerticalDistance(FloorSlab, Sensor) >= 8m
AND
getObjectVerticalDistance(FloorSlab, Sensor) < 15m

THEN
{(FA = 50
isInstalled(mySensor1, FloorSlab.Space, C, FA) = TRUE)
OR 
(FA = 36 
isInstalled(mySensor2, FloorSlab.Space, C, FA) = TRUE)

IF getObjectArea(Sensor.FloorSlab) <= 2*FA
THEN getObjectCount(Sensor) >= 2
}

ELSE IF
{isFireResistantStructure(SpecificFireFightingBuilding) != TRUE)
AND 
{isInstalled(Sensor, FloorSlab) = TRUE
	getObjectVerticalLocation(FloorSlab, Sensor) < 8m
}
THEN
{(FA = 40
isInstalled(mySensor1, FloorSlab.Space, C, FA) = TRUE)
OR 
(FA = 23 
isInstalled(mySensor2, FloorSlab.Space, C, FA) = TRUE)

IF getObjectArea(Sensor.FloorSlab) <= FA
THEN getObjectCount(Sensor) = 1

ELSE IF getObjectArea(Sensor.FloorSlab) <= 2*FA
THEN getObjectCount(Sensor) >= 2
}

ELSE IF
{isFireResistantStructure(SpecificFireFightingBuilding) != TRUE)
AND 
getObjectVerticalDistance(FloorSlab, Sensor) >= 8m
AND
getObjectVerticalDistance(FloorSlab, Sensor) < 15m
}

THEN
{(FA = 30
isInstalled(mySensor1, FloorSlab.Space, C, FA) = TRUE)
OR 
(FA = 23 
isInstalled(mySensor2, FloorSlab.Space, C, FA) = TRUE)

IF getObjectArea(Sensor.FloorSlab) <= 2*FA
THEN getObjectCount(Sensor) >= 2
} 




Python Code 변환 예정



Modify
18
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
19
19604 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 30조 1호 마 목

마. 승강장의 바닥면적은 피난용승강기 1대에 대하여 6제곱미터 이상으로 할 것





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 30조 (피난용승강기의 설치기준) 1호 마목

Check(REFB_30_0_1_마){
      KS
}

KS{
     
        EC= getObjectCount(myElevator)  
        getFloorArea(myElevator.Platform)>=6*EC m2
} 




Python Code 변환 예정



Modify
20
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
21
25261 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 15조 1 항 1호

1. 높이가 3미터를 넘는 계단에는 높이 3미터이내마다 너비 1.2미터 이상의 계단참을 설치할 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조 (계단의 설치기준) 1항1호
check(REFB_15_1_1){
     IF CS THEN KS
}

CS{
     getObjectHeight(Stair)>3 m
}

KS{
     isExist(StairLanding )= TRUE
     getPaceWidth(StairLanding>=1.2 m
     getObjectCount(StairLanding)>=getObjectCount(getObjectCount(StairLanding))/3
     IF getObjectCount(StairLanding)>1
          THEN   getObjectVerticalDistance(StairLanding ,StairLanding)>3 m   
     END IF 
} 








def Check():
    for building in SELECT('building'):
        for stair in building.SELECT('stair'):
            st_h = stair.SELECT('height').UNIT('m')
            st_h_num = height.NUMBER()
            if st_h_num >= 3:
                elv1 = stair.SELECT('elevation').UNIT('m').NUMBER()
                elv2 = elv1

                for width in stair.SELECT("clear landing width"):
                    elv2 = width.SELECT('elevation').UNIT('m').NUMBER()
                    if elv2 - elv1 > 3:
                        stair.ERROR('3m 이내마다 계단참이 존재하지 않습니다.')
                        breaker = True
                        break
                        
                    elv1 = elv2
                    w = width.UNIT('m').NUMBER()
                    if w < min_w:
                        width.ERROR('계단참 유효너비: ' + str(w) + ' < ' + str(min_w))
                    else:
                        width.SUCCESS('계단참 유효너비: ' + str(w) + ' >= ' + str(min_w)) 





Modify
22
25263 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 15조 1 항 3호

3. 너비가 3미터를 넘는 계단에는 계단의 중간에 너비 3미터 이내마다 난간을 설치할 것. 다만, 계단의 단높이가 15센티미터 이하이고, 계단의 단너비가 30센티미터 이상인 경우에는 그러하지 아니하다.





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조 (계단의 설치기준) 1항3호
check(REFB_15_1_3){
     IF !CS THEN KS
}

CS{
      getStairStepHeight()<=15 cm
      getStairStepWidth()>=30 cm
}

KS{
   IF   getObjectWidth(Stair)>=3 m
       
       THEN  hasObject(Stair, Railing) = TRUE
             N=getObjectWidth(Stair)/3
             getObjectCount(Railing)>=N
            IF N>1
                 THEN getObjectDistance(Railing,Railing)<3 m
            END IF
   END IF 
}
 








def Check():
    for building in SELECT('building'):
        for stair in building.SELECT('stair'):
            st_w = stair.SELECT('width').UNIT('m')
            st_w_num = height.NUMBER()
            
            if st_w_num >= 3:
                for riser_height in stair.SELECT('riser height'):
                    riser_h_num = riser_height.UNIT('mm').NUMBER()
                    if riser_h_num <=  15:
                        braker = True
                        break
                for riser_width in stair.SELECT('riser width'):
                    riser_w_num = riser_width.UNIT('mm').NUMBER()
                    if riser_w_num >= 30:
                        braker = True
                        break
                if braker is True:
                    break
                else:
                    pass
                # 3미터 이내마다 난간 설치 확인을 위하여 난간간 간격 파악 필요

                 





Modify
23
25292 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 15조의2조 3 항 2호

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('관람석의 앞뒤쪽 중 복도가 존재하지 않는 곳이 있습니다.') 





Modify
24
25337 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 25조 1 항 1호

1. 거실의 바닥면적이 50제곱미터 이상인 층에는 직통계단외에 피난층 또는 지상으로 통하는 비상탈출구 및 환기통을 설치할 것. 다만, 직통계단이 2개소 이상 설치되어 있는 경우에는 그러하지 아니하다.





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 25조 (지하층의 구조) 1항 1호

check(REFB_25_1_1){

	IF !(CS) THEN KS

}



KS{

	Floor myFloor1{

		hasSpace(Floor,Room) = TRUE

		getTotalArea(Room) >= 50 m2

	}



	Floor myFloor2{

		isObjectProperty(Floor.isEscape) = TRUE

	}



	Door myDoor{

		isObjectProperty(Door.functionType) = "Emergency"

		(isDirectlyAccessible(Door, myFloor2) = TRUE

		OR isDirectlyAccessible(Door, Ground) = TRUE)

	}

	

	hasSpace(myFloor1, myDoor)

	OR (hasSpace(myFloor1, VentilatorPipe) = TRUE

	(isDirectlyAccessible(VentilatorPipe, myFloor2) = TRUE

	OR isDirectlyAccessible(VentilatorPipe, Ground) = TRUE))

}



CS{

	Floor myFloor1{

		hasSpace(Floor,Room) = TRUE

		getTotalArea(Room) >= 50 m2

	}



	Stair myStair{

		isObjectProperty(Stair.isDirect) = TRUE

		hasSpace(myFloor1, Stair) = TRUE

	}



	getObjectCount(myStair) >= 2

} 




Python Code 변환 예정



Modify
25
25338 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 25조 1 항 1의2호

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
} 




Python Code 변환 예정



Modify
26
25341 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 25조 1 항 4호

4. 지하층의 바닥면적이 300제곱미터 이상인 층에는 식수공급을 위한 급수전을 1개소이상 설치할 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 25조 (지하층의 구조) 1항 4호

check(REFB_25_1_4){

Floor myFloor{
Floor.number < 0
}
	getTotalFloorArea(myFloor) >= 300 m2

	getObjectCount(Hydrant) >= 1

} 




Python Code 변환 예정



Modify
27
36708 건축법 시행령 제 90조 1 항 2호

2. 높이 31미터를 넘는 각 층의 바닥면적 중 최대 바닥면적이 1천500제곱미터를 넘는 건축물: 1대에 1천500제곱미터를 넘는 3천 제곱미터 이내마다 1대씩 더한 대수 이상





//건축법 시행령 90조 (비상용 승강기의 설치) 1항2호
Check(EDBA_1_2){
   IF CS THEN KS
}

 Floor myFloor{
     getObjectHeight(Floor)>31 m
  }

CS{
   getFloorArea(myFloor)>1500 m2
}

KS{
   FA=getFloorArea(myFloor) //FA means floor area
   IF FA>=4500 m2
      THEN   {(FA-1500)/3000}+1 < getObjectCount(EmergencyElevator)
             getObjectCount(EmergencyElevator) < {(FA-1500)/3000}+2
   END IF 
  
  

} 




Python Code 변환 예정



Modify
28
36709 건축법 시행령 제 90조 2 항

② 제1항에 따라 2대 이상의 비상용 승강기를 설치하는 경우에는 화재가 났을 때 소화에 지장이 없도록 일정한 간격을 두고 설치하여야 한다.





//건축법 시행령 90조 (비상용 승강기의 설치) 2항

Check(EDBA_90_2){
     KS
}

KS{
     getObjectCount(Elevator.isEmergency) >= 2
}

 




Python Code 변환 예정



Modify
29
37353 건축법 시행령 제 34조 2 항

② 법 제49조제1항에 따라 피난층 외의 층이 다음 각 호의 어느 하나에 해당하는 용도 및 규모의 건축물에는 국토해양부령으로 정하는 기준에 따라 피난층 또는 지상으로 통하는 직통계단을 2개소 이상 설치하여야 한다. <개정 2009.7.16>





//건축법 시행령 34조 (직통계단의 설치) 2항

Check(EDBA_34_2){

   IF (CS1 AND CS2) THEN KS

}



CS1{

	isObjectProperty(Floor.isEscape) = FALSE

}



CS2{

	getResult(EDBA_34_2_1)=TRUE

   	OR getResult(EDBA_34_2_2)=TRUE

   	OR getResult(EDBA_34_2_3)=TRUE  

   	OR getResult(EDBA_34_2_4)=TRUE

   	OR getResult(EDBA_34_2_5)=TRUE

}



KS{

        Floor myFloor{

        isObjectProperty(Floor.isEscape)=TRUE

        }



   	Stair myStair{

      		isObjectProperty(Stair.isDirect) = TRUE

      		isAccessible(myFloor, Stair)= TRUE

      		OR isAccessible(Ground,Stair) = TRUE

   	}



   	getObjectCount(myStair)>2 

   	getResult(REFB_8_1) = True

} 




Python Code 변환 예정



Modify
30
37359 건축법 시행령 제 34조 3 항

③ 초고층 건축물에는 피난층 또는 지상으로 통하는 직통계단과 직접 연결되는 피난안전구역(초고층 건축물의 피난·안전을 위하여 지상층으로부터 최대 30개 층마다 설치하는 대피공간을 말한다. 이하 같다)을 설치하여야 한다. <신설 2009.7.16>





// 건축법 시행령 제 34조 (직통계단의 설치) 3항

check(EDBA_34_3){

		IF CS THEN KS ENDIF

}



CS{

isObjectProperty(Building.isHighriseBuilding) = TRUE

}

KS{

		Stair myStair{

				isObjectProperty(Stair.isDirect) = TRUE			

		}

		Zone myZone{

				isObjectProperty(Zone.isEgressSafetyZone) = TRUE

		}

		Floor myFloor{

				isObjectProperty(Floor.isEscape) = TRUE

		}

isGoThrough(myFloor, myZone, myStair) = TRUE

		OR isGoThrough(myFloor, Ground, myStair) = TRUE



		getObjectCount(myZone) >= getBuildingStoriesCount()/30

} 




Python Code 변환 예정



Modify
31
37368 건축법 시행령 제 35조 5 항

⑤ 건축물의 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
}
 




Python Code 변환 예정



Modify
32
19912 연결살수설비의 화재안전기준(NFSC 503) 제 4조 1 항 2호

2. 송수구는 구경 65㎜의 쌍구형으로 설치할 것. 다만, 하나의 송수구역에 부착하는 살수헤드의 수가 10개 이하인 것은 단구형의 것으로 할 수 있다.





//  연결살수설비의 화재안전기준(nfsc 503) 4조 (송수구 등) 1항 2호



Check(NFSC503_4_1_2){

 IF CS THEN KS 

}

CS{

 Zone myZone{

  isObjectProperty(Zone.isWaterSupplyZone)=TRUE

 }

 hasObject(myZone.One,HookingUpSprinklerSystem.Head.)=TRUE

 getObjectCount(HookingUpSprinklerSystem.Head.) <= 10  

}

KS{

 Port myPort{
getObjectProperty(Port.systemType) = "HookingUpSprinklerSystem"
 getObjectProperty(Port.typeForWater) = "FireDepartmentConnection" 

 }

 isObjectProperty(myPort.diameter) = 65mm

 getObjectProperty(myPort.shapeType) = "DoubleType"

} 




Python Code 변환 예정



Modify
33
19919 연결살수설비의 화재안전기준(NFSC 503) 제 4조 4 항

④개방형헤드를 사용하는 연결살수설비에 있어서 하나의 송수구역에 설치하는 살수헤드의 수는 10개 이하가 되도록 하여야 한다.





//  연결살수설비의 화재안전기준(nfsc 503) 4조 (송수구 등) 4항

Check(NFSC503_4_4){
	IF CS THEN KS
}
CS{
	Head myHead{
	getObjectProperty(Head.openAndCloseType) = "OpenType"	
	}
	getObjectProperty(myHead.systemType) = "HookingUpSprinklerSystem"
}
KS{
	Zone myZone{
	isObjectProperty(Zone.isWaterSupplyZone) = TRUE
	}
	Head myHead{
	isInstalled(HookingUpSprinklerSystem.Head, myZone.One) = TRUE
	}

	getObjectCount(myHead) <= 10
} 




Python Code 변환 예정



Modify
34
19924 연결살수설비의 화재안전기준(NFSC 503) 제 5조 2 항 1호

1. 연결살수설비 전용헤드를 사용하는 경우에는 다음 표에 따른 구경 이상으로 할 것





//  연결살수설비의 화재안전기준(nfsc 503) 5조 (배관 등) 2항 1호



Check(NFSC503_5_2_1){

	IF CS THEN KS

}

CS{

getObjectProperty(Head.systemType) = "HookingUpSprinklerSystem"
	isObjectProperty(Head.isShared) = FALSE 

}

KS{

	Head myHead{

	isInstalled(Head., Pipe.One) = TRUE

	}

	NH = getObjectCount(myHead)



	IF NH = 1 THEN getObjectDiameter(Pipe) >= 32mm

	ELSE IF NH = 2 THEN getObjectDiameter(Pipe) >= 40mm

	ELSE IF NH = 3 THEN getObjectDiameter(Pipe) >= 50mm

	ELSE IF NH = 4 OR NH = 5 THEN getObjectDiameter(Pipe) >= 65mm

	ELSE IF NH >= 6 AND HN <= 10 THEN getObjectDiameter(Pipe) >= 80mm

} 





//  연결살수설비의 화재안전기준(nfsc 503) 5조 (배관 등) 2항 2호



Check(NFSC503_5_2_2){

	IF CS THEN KS

}

CS{

	isObjectProperty(SprinklerSystem.Head.systemType) = "HookingUpSprinklerSystem"

}

KS{

	getResult(NFSC103_*_1) = TRUE

} 




Python Code 변환 예정Python Code 변환 예정



Modify
35
19926 연결살수설비의 화재안전기준(NFSC 503) 제 5조 2 항 2호

2. 스프링클러헤드를 사용하는 경우에는 「스프링클러설비의 화재안전기준(NFSC 103)」 별표 1의 기준에 따를 것





//  연결살수설비의 화재안전기준(nfsc 503) 5조 (배관 등) 2항 1호



Check(NFSC503_5_2_1){

	IF CS THEN KS

}

CS{
getObjectProperty(Head.systemType) = "HookingUpSprinklerSystem"
	isObjectProperty(Head.isShared) = FALSE 

}

KS{

	Head myHead{

	isInstalled(HookingUpSprinklerSystem.Head., Pipe.One) = TRUE

	}

	NH = getObjectCount(myHead)



	IF NH = 1 THEN getObjectDiameter(Pipe) >= 32mm

	ELSE IF NH = 2 THEN getObjectDiameter(Pipe) >= 40mm

	ELSE IF NH = 3 THEN getObjectDiameter(Pipe) >= 50mm

	ELSE IF NH = 4 OR NH = 5 THEN getObjectDiameter(Pipe) >= 65mm

	ELSE IF NH >= 6 AND HN <= 10 THEN getObjectDiameter(Pipe) >= 80mm

} 




Python Code 변환 예정



Modify
36
19932 연결살수설비의 화재안전기준(NFSC 503) 제 5조 6 항

⑥가지배관 또는 교차배관을 설치하는 경우에는 가지배관의 배열은 토너멘트방식이 아니어야 하며, 가지배관은 교차배관 또는 주배관에서 분기되는 지점을 기점으로 한 쪽 가지배관에 설치되는 헤드의 개수는 8개 이하로 하여야 한다.





//  연결살수설비의 화재안전기준(nfsc 503) 5조 (배관 등) 6항

Check(NFSC503_5_6){
	IF CS THEN KS
}

	Pipe myPipe1{
	isObjectProperty(Pipe.isBranchLines) = TRUE
	}
	Pipe myPipe2{
	isObjectProperty(Pipe.isCrossMains) = TRUE
	}
	Pipe myPipe3{
	isObjectProperty(Pipe.isRiser) = TRUE
	}
CS{
	isInstalled(myPipe1) = TRUE 
	OR isInstalled(myPipe2) = TRUE
}
KS{
	Head myHead{
	isInstalled(Head, myPipe1.DivergedSide.One) = TRUE
	}
	isObjectProperty(myPipe1.tournamentArrangement) = FALSE
	getObjectCount(myHead) <= 8
} 




Python Code 변환 예정



Modify
37
20465 연결송수관설비의 화재안전기준(NFSC 502) 제 4조 7호

7. 송수구는 연결송수관의 수직배관마다 1개 이상을 설치할 것. 다만, 하나의 건축물에 설치된 각 수직배관이 중간에 개폐밸브가 설치되지 아니한 배관으로 상호 연결되어 있는 경우에는 건축물마다 1개씩 설치할 수 있다.





//연결송수관설비의 화재안전기준(NFSC 502) 4조 (송수구) 7호



Check(NFSC502_4_0_7){

    IF CS THEN KS1 ELSE KS2

}



CS{
Port myPort{
Port.typeForWater = "FireDepartmentConnection"
}

    Pipe myPipe{
Pipe.systemType = "FireDepartmentConnectionSystem"
         isObjectProperty(Pipe.isRiser)=True

   }



   Pipe myPipe2{

       isInstalled( myValve, Pipe)=False

   }

   

   Valve myValve{

      isObjectProperty(Valve.isShutOffValve)=True

   }



   

   isConnectedTo(myPipe, myPipe2)=True

}



KS1{

    isInstalled(myPort)=True

}



KS2{

    getObjectCount(myPort,myPipe )>=1

} 




Python Code 변환 예정



Modify
38
20485 연결송수관설비의 화재안전기준(NFSC 502) 제 6조 1호 다 목

다. 송수구가 부설된 옥내소화전을 설치한 특정소방대상물(집회장·관람장·백화점·도매시장·소매시장·판매시설·공장·창고시설 또는 지하가를 제외한다)로서 다음의 어느 하나에 해당하는 층 (1) 지하층을 제외한 층수가 4층 이하이고 연면적이 6,000㎡ 미만인 특정소방대상물의 지상층 (2) 지하층의 층수가 2 이하인 특정소방대상물의 지하층





//연결송수관설비의 화재안전기준(NFSC 502) 6조 (방수구) 1호 다목



Check(NFSC502_6_0_1_다목){

         KS

}



KS{

       getBuildingUsage()!="AssemblyHall"

       getBuildingUsage()!="Auditorium"

       getBuildingUsage()!="DepartmentStore"

       getBuildingUsage()!="WholesaleMarket"

       getBuildingUsage()!="CommercialFacility"

       getBuildingUsage()!="Factory"

       getBuildingUsage()!="Warehouse"

       getBuildingUsage()!="UndergroundMarket"



      

FireHydrant myFireHydrant{
isExternal(FireHydrant)  = FALSE
         isInstalled(FireDepartmentConnection, FireHydrant)=True

    }       



    isInstalled(myIndoorFireHydrant,SpecificFireFightingBuilding)=True



    Floor myFloor{

            Floor.number>0

    }

    Floor myFloor2{

            Floor.number<0

    }

    (

    gerObjectCount(myFloor)<=4 

    getGrossFloorArea()<6000 m2

    Floor.number>0

    )



    OR 

    (

     getObjectCount(myFloor)<=2

     Floor.number<0        

    )

    



    

} 




Python Code 변환 예정



Modify
39
20491 연결송수관설비의 화재안전기준(NFSC 502) 제 6조 3호 나 목

나. 스프링클러설비가 유효하게 설치되어 있고 방수구가 2개소 이상 설치된 층





//연결송수관설비의 화재안전기준(NFSC 502) 6조 (방수구) 3호 나목



Check(NFSC502_6_0_3_나){

            KS

}



KS{

       isExist(SprinklerSystem)=True

       getObjectCount(	FireDepartmentConnectionSystem.Port, Floor.One)>=2

} 




Python Code 변환 예정



Modify
40
20498 연결송수관설비의 화재안전기준(NFSC 502) 제 7조 2호 나 목

나. 방사형 관창은 단구형 방수구의 경우에는 1개, 쌍구형 방수구의 경우에는 2개 이상 비치할 것





//연결송수관설비의 화재안전기준(NFSC 502) 7조 (방수기구함) 2호 나목



Check(NFSC502_7_0_2_나){



             KS

}



KS{

      IF getObjectPropety(RadialSprayNozzle.Port.shapeType)="SingleType"



      THEN getObjectCount(RadialSprayNozzle)=1

      

      ELSE IF getObjectPropety(RadialSprayNozzle.Port.shapeType)="DoubleType"

            

           getObjectCount(RadialSprayNozzle)=2

        

      END IF



} 




Python Code 변환 예정



Modify
41
20102 연소방지설비의 화재안전기준(NFSC 506) 제 4조 4 항 1호

1. 연소방지설비전용헤드를 사용하는 경우에는 다음 표에 따른 구경 이상으로 할 것





//연소방지설비의 화재안전 기준(nfsc 506) 4조 (배관) 4항 1호
Check(NFSC506_4_4_1){
	IF CS THEN KS
}

CS{
	isInstalled(CombustionProtectionSystem, ?) = TRUE
}

KS{
	Pipe myPipe{
		hasObject(CombustionProtectionSystem, Pipe) = TRUE
	}

	SprinklerHead mySprinklerHead{
		isInstalled(myPipe, SprinklerHead) = TRUE
	}

	(getObjectCount(mySprinklerHead) = 1 
	getObjectProperty(myPipe.Diameter) >= 32mm)
	OR(getObjectCount(mySprinklerHead) = 2 
	getObjectProperty(myPipe.Diameter) >= 40mm)
	OR(getObjectCount(mySprinklerHead) = 3
	getObjectProperty(myPipe.Diameter) >= 50mm)
	OR(getObjectCount(mySprinklerHead) = 4
	getObjectProperty(myPipe.Diameter) >= 65mm)
	OR(getObjectCount(mySprinklerHead) = 5
	getObjectProperty(myPipe.Diameter) >= 65mm)
	OR(getObjectCount(mySprinklerHead) >= 6
	getObjectProperty(myPipe.Diameter) >= 80mm)
} 




Python Code 변환 예정



Modify
42
19980 유도등 및 유도표지의 화재안전기준(NFSC 303) 제 6조 1 항 3호 가 목

가. 각층의 경사로 참 또는 계단참마다(1개층에 경사로 참 또는 계단참이 2 이상 있는 경우에는 2개의 계단참마다)설치할 것





//유도등 및 유도표지의 화재안전기준(nfsc 303) 6조 (통로유도등 설치기준) 1항 3호 가목 

Check (NFSC303_6_1_3_가){
           KS
}

KS{
   IF // getObjectCount(RampLanding, "1개층" )>=2
      // OR getObjectCount(StairLanding, "1개층" )>=2
      THEN // isInstalled(StairLanding, LeadingLightForStairs , "2개마다")=True

   ELSE THEN   isInstalled(RampLanding, LeadingLightForStairs)=True
               OR isInstalled(StairLanding, LeadingLightForStairs)=True   
   END IF      

}

 




Python Code 변환 예정



Modify
43
19983 유도등 및 유도표지의 화재안전기준(NFSC 303) 제 7조 2 항

②객석내의 통로가 경사로 또는 수평로로 되어 있는 부분은 다음의 식에 따라 산출한 수(소수점 이하의 수는 1로 본다)의 유도등을 설치하고, 그 조도는 통로바닥의 중심선 0.5m 높이에서 측정하여 0.2㏓ 이상이어야 한다. <개정 2012.8.20>





//유도등 및 유도표지의 화재안전기준(nfsc 303) 7조 (객석유도등 설치기준) 2항



Check(NFSC303_7_2){

            IF CS THEN KS

}



CS{

Space mySpace{
Space.usage = "Auditorium"
}
isInstalled(Passage, mySpace) = TRUE
isObjectProperty(Passage.isFlatWay) = TRUE
OR isObjectProperty(Passage.isSlopeWay) = TRUE


}





KS{

    LeadingLight myLeadingLight{

          isObjectProperty(LeadingLight.isForSeat)=True

    }



    isExist(myLeadingLight)=True



    //LAP means Length of Auditorium passage

    LAP= getObjectLength(AuditoriumPassage)

    getObjectCount(myLeadingLight)>= LAP/4-1

   // getSpaceIlluminance(AuditoriumPassage, "통로바닥의 중심선 0.5m 높이에서 측정")>0.2 lx , 측정 기준에 관한 파라미터 추가 필요 



} 




Python Code 변환 예정



Modify
44
20440 자동화재탐지설비 및 시각경보장치의 화재안전기준(NFSC 203) 제 7조 3 항 9호 나 목

나. 하나의 검출기에 접속하는 감지부는 2개 이상 15개 이하가 되도록 할 것. 다만, 각각의 감지부에 대한 작동여부를 검출기에서 표시할 수 있는 것(주소형)은 형식승인 받은 성능인정범위내의 수량으로 설치할 수 있다.





자동화재탐지설비의 화재안전기준(nfsc 203) 7조 (감지기) 3항 9호 나목

Check(NFSC203_7_3_9_나){

	IF CS THEN KS

}

CS{

	isConnectedTO(Detector.One, SensingElement) = TRUE

}

KS{

	getObjectCount(SensingElement) >= 2

	getObjectCount(SensingElement) <= 15

} 




Python Code 변환 예정



Modify
45
20145 주차장법 시행규칙 제 4조 1 항 8호 가 목

가. 주차대수 규모가 20대 이상 50대 미만인 경우: 한 면 이상





//주차장법 시행규칙 4조 (노상주차장의 구조·설비기준) 1항 8호 가목



Check(ERPA_4_1_8_가){

    IF CS THEN KS

}



CS{

  getObjectCount(ParkingLot.ParkingUnit)>=20

  getObjectCount(ParkingLot.numberOfParkingUnit)<50

}





KS{



Area myArea{

   isObjectProperty(ParkingLotArea.isHandicapParking)=True

}

    getObjectCount(myArea)>=1

} 




Python Code 변환 예정



Modify
46
20146 주차장법 시행규칙 제 4조 1 항 8호 나 목

나. 주차대수 규모가 50대 이상인 경우: 주차대수의 2퍼센트부터 4퍼센트까지의 범위에서 장애인의 주차수요를 고려하여 해당 지방자치단체의 조례로 정하는 비율 이상





//주차장법 시행규칙 4조 (노상주차장의 구조·설비기준) 1항 8호 나목



Check(ERPA_4_1_8_나){

    IF CS THEN KS

}



CS{

  getObjectCount(ParkingLot.ParkingUnit)>=50



}





KS{



    Area myArea{

        isObjectProperty(ParkingLotArea.isHandicapParking)=True

    }

    PLC=getObjectProperty(ParkingLot.numberOfParkingUnit)



    getObjectCount(myArea)>=PLC*2%

    getObjectCount(myArea)<=PLC*4%

    getResult(Unimplemented_LGMO)=True

} 




Python Code 변환 예정



Modify
47
20148 주차장법 시행규칙 제 5조 8호

8. 특별시장·광역시장, 시장·군수 또는 구청장이 설치하는 노외주차장의 주차대수 규모가 50대 이상인 경우에는 주차대수의 2퍼센트부터 4퍼센트까지의 범위에서 장애인의 주차수요를 고려하여 지방자치단체의 조례로 정하는 비율 이상의 장애인 전용주차구획을 설치하여야 한다.





//주차장법 시행규칙 5조 (노상주차장의 구조·설비기준) 8호 

Check(ERPA_5_0_8){
    IF CS THEN KS
}

CS{
  
  ParkingLot myParkingLot{
    isObjectProperty(ParkingLot.isOffStreetParking)=True
  }

  getObjectCount(myParkingLot.ParkingUnit)>=50

}


KS{

    Area myArea{
        isObjectProperty(myParkingLotArea.isHandicapParking)=True
    }

    PLC=getObjectCount(myParkingLot.ParkingUnit)

    getObjectCount(myArea)>=PLC*2%
    getObjectCount(myArea)<=PLC*4%
    getResult(Unimplemented_LGMO)=True
}

 




Python Code 변환 예정



Modify
48
72624 주차장법 시행규칙 제 6조 1 항 3호 나 1) 목

1) 이륜자동차전용 노외주차장 (표)





//주차장법 시행규칙 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
}
 




Python Code 변환 예정



Modify
49
72625 주차장법 시행규칙 제 6조 1 항 3호 나 2) 목

2) 1) 외의 노외주차장 (표)





//주차장법 시행규칙 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

} 




Python Code 변환 예정



Modify
50
62347 주택건설기준 등에 관한 규정 제 15조 1 항

①6층 이상인 공동주택에는 국토교통부령이 정하는 기준에 따라 대당 6인승 이상인 승용승강기를 설치하여야 한다. 다만, 「건축법 시행령」 제89조의 규정에 해당하는 공동주택의 경우에는 그러하지 아니하다. <개정 1992.5.30, 1994.12.23, 1994.12.30, 1999.9.29, 2005.6.30, 2008.2.29, 2013.3.23>





//주택건설기준 등에 관한 규정 15조 (승강기등) 1항
Check(RHC_15_1){
	getResult(RHC_15_5) = TRUE AND IF (CS1 AND !CS2) THEN KS
}

CS1{
	getBuildingUsage() = "MultiUnitHouse"
	getBuildingStoriesCount() >= 6
}

CS2{
	getBuildingStoriesCount = 6
	
	Stair myStair{
		isObjectProperty(Stair.isDirect) = TRUE
	}

	getFloorArea() = FA
	FA / 300 = FA2
	getIntegeralNumber(FA2) = FA3
	getObjectCount(myStair) >= FA3
}

KS{
	Elevator myElevator{
		getObjectProperty(Elevator.occupancy) >= 6
	}

	isExist(myElevator) = TRUE
} 




Python Code 변환 예정



Modify
51
62353 주택건설기준 등에 관한 규정 제 15조 3 항 4호

4. 복도형인 공동주택의 경우에는 100세대까지 1대를 설치하되, 100세대를 넘는 경우에는 100세대마다 1대를 추가로 설치할 것





//주택건설기준 등에 관한 규정 15조 (승강기등) 3항 4호
Check(RHC_15_3_4){
	IF CS THEN KS
}

CS{
	
}

KS{
	Elevator myElevator{
		getObjectProperty(Elevator.usage) = "FreightElevator"
	}

	getObjectCount(myElevator) = ELV
	100*n <= getObjectProperty(Building.numberOfHousehold) <100*(n+1)
	n <= ELV
}
 




Python Code 변환 예정



Modify
    1      
 

Related Sites

국토부 BIM과제-1st  |   Ministry of Land, Infrasrtucture and Transport   |   Korea Agency for Infrastructure Technology Advancement  |   Space and Design IT Lab   |   Yonsei University
This is Design IT Lab server's restricted area. Authorized users could access this website.