1
연결살수설비의 화재안전기준(NFSC 503) 제 6조 3 항 3호
3. 스프링클러헤드와 그 부착면(상향식헤드의 경우에는 그 헤드의 직상부의 천장·반자 또는 이와 비슷한 것을 말한다. 이하 같다)과의 거리는 30㎝ 이하로 할 것
//연결살수설비의 화재안전기준(nfsc 503) 6조 (연결살수설비의 헤드) 3항 3호
Check(NFSC503_6_3_3){
IF (CS1 THEN KS1) or (CS2 THEN KS2)
}
CS1{
getObjectProperty(SprinklerHead) != "BottomUpType"
}
KS1{
getObjectDistance(SprinklerHead.AttachingToSurface, SprinklerHead) <= 30CM
}
CS2{
getObjectProperty(SprinklerHead) = "BottomUpType"
}
KS2{
getObjectVerticalDistance(Ceiling, SprinklerHead) <= 30CM
}
Python Code 변환 예정
2
연결살수설비의 화재안전기준(NFSC 503) 제 6조 3 항 5호
5. 스프링클러헤드의 반사판은 그 부착면과 평행하게 설치할 것. 다만, 측벽형헤드 또는 제7호에 따라 연소할 우려가 있는 개구부에 설치하는 스프링클러헤드의 경우에는 그러하지 아니하다.
//연결살수설비의 화재안전기준(nfsc 503) 6조 (연결살수설비의 헤드) 3항 5호
Check(NFSC503_6_3_5){
IF !CS THEN KS
}
CS{
getObjectProperty(SprinklerSystem.Head.shapeType) = "SideWallType"
}
KS{
isParallel(SprinklerSystem.Head.Deflector, SprinklerSystem.Head.AttachingToSurface) = TRUE
}
Python Code 변환 예정
3
연결살수설비의 화재안전기준(NFSC 503) 제 6조 3 항 8호
8. 습식 연결살수설비외의 설비에는 상향식스프링클러헤드를 설치할 것. 다만, 다음 각 목의 어느 하나에 해당하는 경우에는 그러하지 아니하다.
//연결살수설비의 화재안전기준(nfsc 503) 6조 (연결살수설비의 헤드) 3항 8호
Check(NFSC503_6_3_8){
IF CS THEN KS
}
CS{
isObjectProperty(SprinklerSystem.type ) != WetPipeSprinklerSystem
(getResult(NFSC503_6_3_8_1) = FALSE
OR getResult(NFSC503_6_3_8_2) = FALSE)
}
KS{
mySprinklerHead{
getObjectProperty(SprinklerSystem.Head.installationDirectionType) = "BottomUpType"
}
isExist(mySprinklerHead) = TRUE
}
Python Code 변환 예정
4
연결살수설비의 화재안전기준(NFSC 503) 제 6조 3 항 8호 다 목
다. 개방형스프링클러헤드를 사용하는 경우
//연결살수설비의 화재안전기준(nfsc 503) 6조 (연결살수설비의 헤드) 3항 8호 다목
Check(NFSC503_6_3_8_3){
KS
}
KS{
Head myHead{
getObjectProperty(SprinklerSystem.Head.openAndCloseType) = "OpenType"
}
isExist(myHead) = TRUE
}
Python Code 변환 예정
5
연결살수설비의 화재안전기준(NFSC 503) 제 6조 3 항 9호
9. 측벽형스프링클러헤드를 설치하는 경우 긴변의 한쪽벽에 일렬로 설치(폭이 4.5m 이상 9m 이하인 실은 긴변의 양쪽에 각각 일렬로 설치하되 마주보는 스프링클러헤드가 나란히꼴이 되도록 설치)하고 3.6m 이내마다 설치할 것
//연결살수설비의 화재안전기준(nfsc 503) 6조 (연결살수설비의 헤드) 3항 9호
Check(NFSC503_6_3_9){
IF (CS1 THEN KS1) or (CS2 THEN KS2)
}
CS1{
SprinklerHead mySprinklerHead{
getObjectProperty(SprinklerHead.shapeType) = "SideWallType"
}
isExist(mySprinklerHead) = TRUE
getObjectWidth(Room) < 4.5m
OR getObjectWidth(Room) > 9m
}
KS1{
SprinklerHead mySprinklerHead{
getObjectProperty(SprinklerHead.shapeType) = "SideWallType"
}
getObjectWidth(mySprinklerHead, c) < 3.6m
}
CS2{
Head myHead{
getObjectProperty(SprinklerSystem.Head.shapeType) = "SideWallType"
}
isExist(mySprinklerHead) = TRUE
getObjectWidth(Room) >= 4.5m
OR getObjectWidth(Room) <= 9m
}
KS2{
Head myHead{
getObjectProperty(SprinklerSystem.Head.shapeType) = "SideWallType"
}
isParallel(mySprinklerHead, Wall) = TRUE
}
Python Code 변환 예정
6
연결살수설비의 화재안전기준(NFSC 503) 제 6조 4 항 1호
1. 연결살수설비 전용의 개방형헤드를 설치할 것
//연결살수설비의 화재안전기준(nfsc 503) 6조 (연결살수설비의 헤드) 4항 1호
Check(NFSC503_6_4_1){
KS
}
KS{
getObjectProperty(HookingUpSprinklerSystem.Head.openAndCloseType) = "OpenType"
}
Python Code 변환 예정
7
연결살수설비의 화재안전기준(NFSC 503) 제 4조 1 항 4호
4. 지면으로부터 높이가 0.5m 이상 1m 이하의 위치에 설치할 것
Check(NFSC503_4_1_4){
KS
}
KS{
Port myPort{
getObjectProperty(Port.systemType) = "HookingUpSprinklerSystem"
getObjectProperty(Port.type ForWater) = "FireDepartmentConnection"
}
getObjectVerticalDistance(Ground, myPort) >= 0.5m
getObjectVerticalDistance(Ground, myPort) <= 1m
}
Python Code 변환 예정
8
연결송수관설비의 화재안전기준(NFSC 502) 제 4조 4호
4. 송수구로부터 연결송수관설비의 주배관에 이르는 연결배관에 개폐밸브를 설치한 때에는 그 개폐상태를 쉽게 확인 및 조작할 수 있는 옥외 또는 기계실 등의 장소에 설치할 것. 이 경우 개폐밸브에는 그 밸브의 개폐상태를 감시제어반에서 확인할 수 있도록 급수개폐밸브 작동표시 스위치를 다음 각 목의 기준에 따라 설치하여야 한다. <개정 2014.8.18>
//연결송수관설비의 화재안전기준(NFSC 502) 4조 (송수구) 4호
Check(NFSC502_4_0_4){
IF CS THEN KS
}
CS{
Pipe myPipe1{
Pipe.systemType = "FireDepartmentConnectionSystem"
Pipe.isRiser = TRUE
}
Pipe myPipe2{
isConnectedTo(FireDepartmentConnection, Pipe)=True
isConnectedTo(myPipe1, Pipe)=True
}
Valve myValve{
isObjectProperty(Valve.isShutoffValve)=True
}
hasObject(myConnectionPipe, myValve)=True
}
KS{
isExternal(myValve)=True
OR (hasObject(Space, myValve)=True
getSpaceUsage(Space) = "MachinRoom"
}
Python Code 변환 예정
9
연결송수관설비의 화재안전기준(NFSC 502) 제 4조 5호
5. 구경 65㎜의 쌍구형으로 할 것
//연결송수관설비의 화재안전기준(NFSC 502) 4조 (송수구) 5호
Check(NFSC502_4_0_5){
KS
}
KS{
Port myPort{
getObjectProperty( Port.type ForWater)="FireDepartmentConnection "
getObjectProperty(Port.shapeType)="DoubleType"
}
getObjectDiameter(myFireDepartmentConnection)= 65 mm
}
Python Code 변환 예정
10
연결송수관설비의 화재안전기준(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.type ForWater = "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 변환 예정
11
연결송수관설비의 화재안전기준(NFSC 502) 제 4조 8호 가 목
가. 습식의 경우에는 송수구·자동배수밸브·체크밸브의 순으로 설치할 것
//연결송수관설비의 화재안전기준(NFSC 502) 4조 (송수구) 8호 가목
Check(){
IF CS THEN KS
}
CS{
getObjectProperty(FireDepartmentConnectionSystem.dryWetType)="WetFireDepartmentConnectionSystem"
}
KS{
// 송수구·자동배수밸브·체크밸브의 순으로 설치할 것
}
Python Code 변환 예정
12
연결송수관설비의 화재안전기준(NFSC 502) 제 4조 8호 나 목
나. 건식의 경우에는 송수구·자동배수밸브·체크밸브·자동배수밸브의 순으로 설치할 것
//연결송수관설비의 화재안전기준(NFSC 502) 4조 (송수구) 8호 나목
Check(NFSC502_4_0_8_나){
IF CS THEN KS
}
CS{
getObjectProperty(FireDepartmentConnectionSystem.dryWetType)="DryFireDepartmentConnectionSystem"
}
KS{
// 송수구·자동배수밸브·체크밸브·자동배수밸브의 순으로 설치할 것
}
Python Code 변환 예정
13
연결송수관설비의 화재안전기준(NFSC 502) 제 5조 1 항 1호
1. 주배관의 구경은 100㎜ 이상의 것으로 할 것
//연결송수관설비의 화재안전기준(NFSC 502) 5조 (배관) 1항 1호
Check(NFSC502_5_1_1){
KS
}
KS{
Pipe myPipe{
Pipe.isRiser = TRUE
Pipe.systemType = "FireDepartmentConnectionSystem"
}
getObjectDiameter(myPipe)>=100 mm
}
Python Code 변환 예정
14
연결송수관설비의 화재안전기준(NFSC 502) 제 5조 1 항 2호
2. 지면으로부터의 높이가 31m 이상인 특정소방대상물 또는 지상 11층 이상인 특정소방대상물에 있어서는 습식설비로 할 것
//연결송수관설비의 화재안전기준(NFSC 502) 5조 (배관) 1항 2호
Check(NFSC502_5_1_2){
IF CS THEN KS
}
CS{
(
getBuildingHeight()>=31 m
OR getBuildingStoriesCount()>=11
)
getBuildingUsage()="SpecificFireFightingBuilding"
}
KS{
getObjectProperty(FireDepartmentConnectionSystem.dryWetType)="WetFireDepartmentConnectionSystem"
}
Python Code 변환 예정
15
연결송수관설비의 화재안전기준(NFSC 502) 제 5조 2 항 1호 나 목
나. 이음매 없는 구리 및 구리합금관(KS D 5301). 다만, 습식의 배관에 한한다.
//연결송수관설비의 화재안전기준(NFSC 502) 5조 (배관) 2항 1호 나목
Check(NFSC502_5_2_1_나){
IF CS THEN KS
}
CS{
getObjectProperty(Pipe.type )="WetPipe"
}
KS{
getObjectMaterial(Pipe)="KSD5301"
}
Python Code 변환 예정
16
연결송수관설비의 화재안전기준(NFSC 502) 제 5조 4 항
④ 연결송수관설비의 배관은 주배관의 구경이 100㎜ 이상인 옥내소화전설비·스프링클러설비 또는 물분무등소화설비의 배관과 겸용할 수 있다.[종전의 제2항에서 이동 2014.8.18]
//연결송수관설비의 화재안전기준(NFSC 502) 5조 (배관) 4항
Check(NFSC502_5_4){
IF CS THEN KS
}
CS2{
isObjectProperty(Pipe.systemType) = "FireDepartmentConnectionSystem"
}
KS{
Pipe myPipe1{
isObjectProperty(Pipe.isRiser) = TRUE
getObjectProperty(Pipe.diameter) >= 100mm
isObjectProperty(Pipe.systemType) = "IndoorFireHydrantSystem"
}
Pipe myPipe2{
isObjectProperty(Pipe.isRiser) = TRUE
getObjectProperty(Pipe.diameter) >= 100mm
isObjectProperty(Pipe.systemType) = "WaterSprayExtingushingSystem"
}
isShared(Pipe,myPipe1) = TRUE
OR isShared(Pipe,myPipe2) = TRUE
OR isShared(Pipe,myPipe1) != TRUE
OR isShared(Pipe,myPipe2) != TRUE
}
Python Code 변환 예정
17
연결송수관설비의 화재안전기준(NFSC 502) 제 6조 1호
1. 연결송수관설비의 방수구는 그 특정소방대상물의 층마다 설치할 것. 다만, 다음 각목의 어느 하나에 해당하는 층에는 설치하지 아니할 수 있다.
연결송수관설비의 화재안전기준(NFSC 502) 6조 (방수구) 1호
Check(NFSC502_6_0_1){
IF !CS THEN KS
}
CS{
getResult(NFSC502_6_0_1_가)=True
getResult(NFSC502_6_0_1_나)=True
}
KS{
Port myPort{
Port.type ForWater = "Delivery"
}
isInstalled(myPort,SpecificFireFightingBuilding)=True
}
Python Code 변환 예정
18
연결송수관설비의 화재안전기준(NFSC 502) 제 6조 3호
3. 11층 이상의 부분에 설치하는 방수구는 쌍구형으로 할 것. 다만, 다음 각목의 어느 하나에 해당하는 층에는 단구형으로 설치할 수 있다.
//연결송수관설비의 화재안전기준(NFSC 502) 6조 (방수구) 3호
Check(NFSC502_6_0_3){
IF CS1 THEN KS1 ELSE IF CS2 THEN KS2
}
CS1{
Space mySpace{
getFloorNumber(Space)>=11
}
isInstalled(FireDepartmentConnectionSystem.Port, mySpace)=True
}
KS1{
getObjectProperty(FireDepartmentConnectionSystem.Port.shapeType)="DoubleType"
}
CS2{
getResult(NFSC502_6_0_3_가)=True
OR getResult(NFSC502_6_0_3_나)=True
}
KS2{
getObjectProperty(FireDepartmentConnectionSystem.Port.shapeType)="SingleType"
}
Python Code 변환 예정
19
연결송수관설비의 화재안전기준(NFSC 502) 제 6조 5호
5. 방수구는 연결송수관설비의 전용방수구 또는 옥내소화전방수구로서 구경 65㎜의 것으로 설치할 것
//연결송수관설비의 화재안전기준(NFSC 502) 6조 (방수구) 5호
Check(NFSC502_6_0_5){
KS
}
KS{
getObjectProperty(FireDepartmentConnectionSystem.Port.isShared)= FALSE
OR getObjectProperty(FireDepartmentConnectionSystem.Port.type ForWater)="IndoorFireHydrantDischarge"
Port myPort{
Port.type ForWater = "Delivery"
}
getObjectProperty(myPortt.diameter)=65 mm
}
Python Code 변환 예정
20
연결송수관설비의 화재안전기준(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 변환 예정
21
연소방지설비의 화재안전기준(NFSC 506) 제 4조 4 항 2호
2. 스프링클러헤드를 사용하는 경우에는 「스프링클러설비의 화재안전기준(NFSC 103)」별표 1의 기준에 따를 것<개정 2012.8.20>
// 연소방지설비의 화재안전기준(nfsc 506) 4조 (배관) 4항 2호
Check(NFSC506_4_4_2){
IF CS THEN KS
}
CS{
isObjectProperty(Sprinkler.Head.systemType) = "HookingUpSprinklerSystem"
}
KS{
getResult(NFSC103_*_1) = TRUE
}
Python Code 변환 예정
22
연소방지설비의 화재안전기준(NFSC 506) 제 4조 6 항 3호
3. 하향식헤드를 설치하는 경우에 가지배관으로부터 헤드에 이르는 헤드접속배관은 가지관상부에서 분기할 것
//연소방지설비의 화재안전 기준(nfsc 506) 4조 (배관) 6항 3호
Check(NFSC506_4_6_3){
IF CS THEN KS
}
CS{
Pipe myPipe{
hasObject(CombustionProtectionSystem, Pipe) = TRUE
isObjectProperty(Pipe.isBranchLines) = TRUE
}
Head myHead{
getObjectProperty(Head.installationDirectionType) = "TopDownType"
}
isInstalled(myPipe, myHead) = TRUE
}
KS{
Pipe myPipe{
hasObject(CombustionProtectionSystem, Pipe) = TRUE
isObjectProperty(Pipe.isBranchLines) = TRUE
}
Head myHead{
getObjectProperty(Head.installationDirectionType) = "TopDownType"
}
Pipe myPipe2{
isConnectedTo(myPipe, Pipe) = TRUE
isConnectedTo(myHead, Pipe) = TRUE
}
isDiverged(가지관 상부, myPipe2) = TRUE
}
Python Code 변환 예정
23
연소방지설비의 화재안전기준(NFSC 506) 제 4조 7 항 1호
1. 가지배관에는 헤드의 설치지점 사이마다 1개 이상의 행가를 설치하되, 헤드간의 거리가 3.5m을 초과하는 경우에는 3.5m 이내마다 1개 이상 설치할 것. 이 경우 상향식헤드와 행가 사이에는 8㎝ 이상의 간격을 두어야 한다.
// 연소방지설비의 화재안전기준(nfsc 506) 4조 (배관) 7항 1호
Check(NFSC506_4_7_1){
IF (CS1 THEN KS1) OR (CS2 THEN KS2)
}
CS1{
Pipe myPipe{
isObjectProperty(Pipe.isBranchLines) = TRUE
}
Head myHead{
isInstalled(Head, myPipe) = TRUE
}
getObjectInterval(myHead) <= 3.5m
}
KS1{
Pipe myPipe{
isObjectProperty(Pipe.isBranchLines) = TRUE
}
Head myHead{
isInstalled(Head, myPipe) = TRUE
}
getobjectCountInInterval(Hanger, myHead) >= 1
}
CS2{
Pipe myPipe{
isObjectProperty(Pipe.isBranchLines) = TRUE
}
Head myHead{
isInstalled(Head, myPipe) = TRUE
}
getObjectInterval(myHead) > 3.5m
}
KS2{
Pipe myPipe{
isObjectProperty(Pipe.isBranchLines) = TRUE
}
Head myHead{
isInstalled(Head, myPipe) = TRUE
}
getObjectInterval(myHead) = OIH
OIH/3.5 = OIHH
(OIHH-1) <= getObjectCountInInterval(Hanger, myHead) < OIHH
getObjectInterval(Hanger) = 3.5m
Head myHead2{
getObjectProperty(Head.installationDirectionType) = "BottomUpType"
}
getObjectInterval(myHead2, Hanger) >= 8cm
}
Python Code 변환 예정
24
연소방지설비의 화재안전기준(NFSC 506) 제 4조 8 항
⑧연소방지설비는 습식외의 방식으로 하여야 한다.
// 연소방지설비의 화재안전기준(nfsc 506) 4조 (배관) 8항
Check(NFSC506_4_8){
KS
}
KS{
getObjectProperty(CombustionProtectionSystem.type ) != "WetPipeCombustionProtectionSystem"
}
Python Code 변환 예정
25
연소방지설비의 화재안전기준(NFSC 506) 제 6조 2호
2. 송수구는 구경 65㎜의 쌍구형으로 할 것
// 연소방지설비의 화재안전기준(nfsc 506) 6조 (송수구) 2호
Check(NFSC506_6_0_2){
KS
}
KS{
Port myPort{
getObjectProperty(Port.type ForWater) = "FireDepartmentConnection"
}
isInstalled(myPort, CombustionProtectionSystem) = TRUE
getObjectProperty(myPort.diameter) = 65mm
getObjectProperty(myPort.shapeType) = "DoubleType"
}
Python Code 변환 예정
26
연소방지설비의 화재안전기준(NFSC 506) 제 6조 6호
6. 송수구로부터 주배관에 이르는 연결배관에는 개폐밸브를 설치하지 아니할 것
// 연소방지설비의 화재안전기준(nfsc 506) 6조 (송수구) 6호
Check(NFSC506_6_0_6){
KS
}
KS{
Port myPort{
getObjectProperty(Port.type ForWater) = "FireDepartmentConnection"
}
Pipe myPipe2{
isObjectProperty(Pipe.isRiser) = TRUE
}
Pipe myPipe{
isConnectedTo(Pipe, myPort) = TRUE
isConnectedTo(Pipe, myPipe2) = TRUE
}
Valve myValve{
isObjectProperty(Valve.isShutoffValve) = TRUE
}
isInstalled(myValve, myPipe) = FALSE
}
Python Code 변환 예정
27
연소방지설비의 화재안전기준(NFSC 506) 제 6조 4호
4. 지면으로부터 높이가 0.5m 이상 1m 이하의 위치에 설치할 것
// 연소방지설비의 화재안전기준(nfsc 506) 6조 (송수구) 4호
Check(NFSC506_6_0_4){
KS
}
KS{
Port myPort{
getObjectProperty(Port.type ForWater) = "FireDepartmentConnection"
isInstalled(Port, CombustionProtectionSystem) = TRUE
}
getObjectVerticalLocation(myPort, Ground) >= 0.5m
getObjectVerticalLocation(myPort, Ground) <= 1m
}
Python Code 변환 예정
28
옥내소화전설비의 화재안전기준(NFSC 102) 제 6조 1 항 1호 나 목
나. 이음매 없는 구리 및 구리합금관(KS D 5301). 다만, 습식의 배관에 한한다.
// 옥내소화전설비의 화재안전기준(nfsc 102) 6조 (배관 등) 1항 1호 나목
Check(NFSC102_6_1_1_나){
IF CS THEN KS
}
CS{
isObjectProperty(Pipe.systemType) = "WetPipeSprinklerSystem"
}
KS{
getObjectProperty(Pipe.Material) = "KS_D_5301"
}
Python Code 변환 예정
29
유도등 및 유도표지의 화재안전기준(NFSC 303) 제 6조 1 항 2호 가 목
가. 거실의 통로에 설치할 것. 다만, 거실의 통로가 벽체 등으로 구획된 경우에는 복도통로유도등을 설치하여야 한다.
// 유도등 및 유도표지의 화재안전기준(nfsc 303) 6조 (통로유도등 설치기준) 1항 2호 가목
Check(NFSC303_6_1_2_가){
KS
}
KS{
IF // isPartitioned(Room.Passage, c)=True type c: 벽체 등으로 구획
THEN isInstalled(Room.Passage,LeadingLightForCorridors)=True
ELSE THEN isInstalled(Room.Passage, LeadingLightForLivingRoom )=True
}
Python Code 변환 예정
30
유도등 및 유도표지의 화재안전기준(NFSC 303) 제 8조의2조 2 항
②광원점등방식의 피난유도선은 다음 각 호의 기준에 따라 설치하여야 한다.
// 유도등 및 유도표지의 화재안전기준(nfsc 303) 8조의2 (피난유도선 설치기준) 2항
Check(NFSC303_8-2_2){
IF CS THEN KS
}
CS{
isObjectProperty(LeadingLine.isLuminousTypeLeadingLine) = TRUE
}
KS{
getResult(NFSC303_8-2_2_1) = TRUE
OR getResult(NFSC303_8-2_2_2) = TRUE
OR getResult(NFSC303_8-2_2_3) = TRUE
OR getResult(NFSC303_8-2_2_7) = TRUE
}
Python Code 변환 예정
31
유도등 및 유도표지의 화재안전기준(NFSC 303) 제 8조의2조 2 항 1호
1. 구획된 각 실로부터 주출입구 또는 비상구까지 설치할 것
// 유도등 및 유도표지의 화재안전기준(nfsc 303) 8조의2 (피난유도선 설치기준) 2항 1호
Check(NFSC303_8-2_2_1){
KS
}
KS{
Door myDoor{
isObjectProperty(Door.isEntrance) = TRUE
getObjectProperty(Door.functionType) = "Main"
}
Door myDoor2{
getObjectProperty(Door.functionType) = "Emergency"
}
getObjectCountInInterval(LeadingLine, Room, myDOor) >=1
OR getObjectCountInInterval(LeadingLine, Rom, myDoor2) >=1
}
Python Code 변환 예정
32
자동화재탐지설비 및 시각경보장치의 화재안전기준(NFSC 203) 제 7조 3 항 10호 가 목
가. 감지기의 부착높이에 따라 다음 표에 따른 바닥면적마다 1개 이상으로 할 것
자동화재탐지설비의 화재안전기준(nfsc 203) 7조 (감지기) 3항 10호 가목
Check(NFSC203_7_3_10_가){
IF (CS1 THEN KS1) OR (CS2 THEN KS2)
}
Sensor mySensor1{
getObjectProperty(Sensor.type ) = "Type1"
OR getObjectProperty(Sensor.type ) = "Type2"
}
Sensor mySensor2{
isObjectProperty(Sensor.type ) = "Type3"
}
CS1{
getObjectVerticalDistance(FloorSlab, Sensor) < 4m
}
KS1{
isInstalled(mySensor1, FloorSlab.Space, C, 150) = TRUE)
OR isInstalled(mySensor2, FloorSlab.Space, C, 50) = TRUE)
}
CS2{
getObjectVerticalDistance(FloorSlab, Sensor) >= 4m
getObjectVerticalDistance(FloorSlab, Sensor) < 20m
}
KS2{
isInstalled(mySensor1, FloorSlab.Space, C, 75) = TRUE)
}
Python Code 변환 예정
33
자동화재탐지설비 및 시각경보장치의 화재안전기준(NFSC 203) 제 7조 3 항 11호
11. 열복합형감지기의 설치에 관하여는 제3호 및 제9호를, 연기복합형감지기의 설치에 관하여는 제10호를, 열연기복합형감지기의 설치에 관하여는 제5호 및 제10호 나목 또는 마목을 준용하여 설치할 것
자동화재탐지설비의 화재안전기준(nfsc 203) 7조 (감지기) 3항 11호
Check(NFSC203_7_3_11){
IF (CS1 THEN KS1) OR (CS2 THEN KS2) OR (CS3 THEN KS3)
}
CS1{
getObjectProperty(Sensor.isIntegratedType) = "HeatIntegratedType"
}
KS1{
getResult(NFSC203_7_3_3) = TRUE
OR getResult(NFSC203_7_3_9) = TRUE
}
CS2{
getObjectProperty(Sensor.isIntegratedType) = "SmokeIntegratedType"
}
KS2{
getResult(NFSC203_7_3_10) = TRUE
}
CS3{
getObjectProperty(Sensor.isIntegratedType) = "HeatAndSmokeIntegratedType"
}
KS3{
getResult(NFSC203_7_3_5) = TRUE
OR (getResult(NFSC203_7_3_10_나) = TRUE
OR getResult(NFSC203_7_3_10_마) = TRUE)
}
Python Code 변환 예정
34
자동화재탐지설비 및 시각경보장치의 화재안전기준(NFSC 203) 제 7조 3 항 12호 라 목
라. 감지기와 감지구역의 각부분과의 수평거리가 내화구조의 경우 1종 4.5m 이하, 2종 3m 이하로 할 것. 기타 구조의 경우 1종 3m 이하, 2종 1m 이하로 할 것
자동화재탐지설비의 화재안전기준(nfsc 203) 7조 (감지기) 3항 12호 라목
Check(NFSC203_7_3_12_라){
IF (CS1 THEN KS1 AND KS2) OR (!CS1 THEN KS3 AND KS4)
}
Zone myZone{
isObjectProperty(Zone.isDetectionZone) = TRUE
}
Sensor mySensor1{
getObjectProperty(Sensor.type ) = "Type1"
}
Sensor mySensor2{
getObjectProperty(Sensor.type ) = "Type2"
}
CS1{
isFireResistantStructure(myZone.Wall) = TRUE
isFireResistantStructure(myZone.Column) = TRUE
}
KS1{
getElementDistance(mySensor1, myZone.Wall) <= 4.5m
getElementDistance(mySensor1, myZone.Column) <= 4.5m
}
KS2{
getElementDistance(mySensor2, myZone.Wall) <= 3m
getElementDistance(mySensor2, myZone.Column) <= 3m
}
KS3{
getElementDistance(mySensor1, myZone.Wall) <= 3m
getElementDistance(mySensor1, myZone.Column) <= 3m
}
KS4{
getElementDistance(mySensor2, myZone.Wall) <= 1m
getElementDistance(mySensor2, myZone.Column) <= 1m
}
Python Code 변환 예정
35
자동화재탐지설비 및 시각경보장치의 화재안전기준(NFSC 203) 제 7조 4 항
④ 제3항에도 불구하고 다음 각 호의 장소에는 각각 광전식분리형감지기 또는 불꽂감지기를 설치하거나 광전식공기흡입형감지기를 설치할 수 있다.
자동화재탐지설비의 화재안전기준(nfsc 203) 7조 (감지기) 4항
Check(NFSC203_7_4){
IF CS THEN KS
}
CS{
getResult(NFSC203_7_4_1) = TRUE
OR getResult(NFSC203_7_4_2) = TRUE
}
KS{
Sensor mySensor1{
getObjectProperty(Sensor.sensingMode) = "PhotoelectricType"
getObjectProperty(Sensor.sensingRange) = "SeparateType"
}
Sensor mySensor2{
getObjectProperty(Sensor.sensingMode) = "PhotoelectricType"
getObjectProperty(Sensor.sensingRange) = "AspiratingType"
}
isInstalled(mySensor1) = TRUE
OR isInstalled(mySensor2) = TRUE
}
Python Code 변환 예정
36
자동화재탐지설비 및 시각경보장치의 화재안전기준(NFSC 203) 제 7조 4 항 1호
1. 화학공장·격납고·제련소등 : 광전식분리형감지기 또는 불꽃감지기. 이 경우 각 감지기의 공칭감시거리 및 공칭시야각등 감지기의 성능을 고려하여야 한다.
자동화재탐지설비의 화재안전기준(nfsc 203) 7조 (감지기) 4항 1호
Check(NFSC203_7_4_1){
IF CS THEN KS
}
CS{
getBuildingUsage() = "ChemistryFactory"
OR getBuildingUsage() = "Hangar"
OR getBuildingUsage() = "Smelter"
}
KS{
Sensor mySensor1{
getObjectProperty(Sensor.sensingMode) = "PhotoelectricType"
getObjectProperty(Sensor.sensingRange) = "SeparateType"
}
isInstalled(mySensor1) = TRUE
OR isInstalled(FlameSensor) = TRUE
}
Python Code 변환 예정
37
자동화재탐지설비 및 시각경보장치의 화재안전기준(NFSC 203) 제 7조 4 항 2호
2. 전산실 또는 반도체 공장등 : 광전식공기흡입형감지기. 이 경우 설치장소·감지면적 및 공기흡입관의 이격거리등은 형식승인 내용에 따르며 형식승인 사항이 아닌 것은 제조사의 시방에 따라 설치하여야 한다.
자동화재탐지설비의 화재안전기준(nfsc 203) 7조 (감지기) 4항 2호
Check(NFSC203_7_4_2){
IF CS THEN KS
}
CS{
getSpaceUsage() = "ComputerRoom"
OR getBuildingUsage() = "SemiconductorFactory"
}
KS{
Sensor mySensor1{
getObjectProperty(Sensor.sensingMode) = "PhotoelectricType"
getObjectProperty(Sensor.sensingRange) = "AspiratingType"
}
isInstalled(mySensor1) = TRUE
}
Python Code 변환 예정
38
주차장법 시행규칙 제 16조의2조 1 항 1호 가 목
가. 중형 기계식주차장(길이 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
}
Python Code 변환 예정
39
주차장법 시행규칙 제 16조의2조 1 항 3호 가 목
가. 중형 기계식주차장: 길이 5.05미터 이상, 너비 1.9미터 이상
//주차장법 시행규칙 16조의2 (기계식주차장의 설치기준) 3호 가목
Check(ERPA_16-2_0_3_가){
IF CS THEN KS
}
CS{
ParkingLot myParkingLot{
ParkingLot.operationType = "MechanicalParking"
}
getObjectProperty(myParkingLot.scale)="MiddleSize"
}
KS{
myParking.length>=5.05 m
myParking.width>1.85 m
}
Python Code 변환 예정
40
주차장법 시행규칙 제 11조 2 항 1호
1. 주차대수 30대를 초과하는 지하식 또는 건축물식 형태의 자주식주차장으로서 판매시설, 숙박시설, 운동시설, 위락시설, 문화 및 집회시설, 종교시설 또는 업무시설(이하 이 항에서 "판매시설등"이라 한다)의 용도로 이용되는 건축물의 부설주차장
//주차장법 시행규칙 11조 (부설주차장의 구조·설비기준) 2항 1조
Check(ERPA_11_2_1){
KS
}
KS{
Building myBuilding{
getBuildingUsage() = "CommercialFacility" OR "LodgingFacility", "AmusementFacility", "CulturalAndAssemblyFacility", "ReligiousFacility","BusinessFacility"
}
isObjectProperty(myBuilding.ParkingLot.isAttachedParking) = TRUE
getObjectProperty(ParkingLot.numberOfParkingUnit) > 30
getObjectProperty(ParkingLot.operationType) = "DriveInParking" OR "MechanicalParking"
}
Python Code 변환 예정
41
주차장법 시행규칙 제 16조의5조 1 항 2호
2. 기계식주차장치 출입구의 크기는 중형 기계식주차장의 경우에는 너비 2.3미터 이상, 높이 1.6미터 이상으로 하여야 하고, 대형 기계식주차장의 경우에는 너비 2.4미터 이상, 높이 1.9미터 이상으로 하여야 한다. 다만, 사람이 통행하는 기계식주차장치 출입구의 높이는 1.8미터 이상으로 한다.
Check(ERPA_16 – 5_1_2) { IF (CS1 then KS1) OR (CS2 then KS2) }
CS1 {
ParkingLot myParkingLot {
myParkingLot.operationType = "MechanicalParking" }
getObjectProperty(myParkingLot.scale) = "MiddleSize"
MechanicalParkingEquipment myMechanicalParkingEquipment {
isExist(myMechanicalParkingEquipment, myParkingLot) = true }
}
KS1{
Opening myOpening1 {
isExist(myOpening1, myMechanicalParkingEquipment) = true
WD1 = getObjectWidth(myOpening1, a) >= 2.3m
H1 = getObjectHeight(myOpening1, a) >= 1.6m }
}
CS2 {
ParkingLot myParkingLot {
myParkingLot.operationType = "MechanicalParking" }
getObjectProperty(myParkingLot.scale) = "LargeSize"
MechanicalParkingEquipment myMechanicalParkingEquipment {
isExist(myMechanicalParkingEquipment, myParkingLot) = true }
}
KS2 {
Opening myOpening2 {
isExist(myOpening2, myMechanicalParkingEquipment) = true
WD2 = getObjectWidth(myOpening2, a) >= 2.4m
H2 = getObjectHeight(myOpening2, a) >= 1.9m } }
Python Code 변환 예정
42
주차장법 시행규칙 제 11조 4 항
④ 주차대수 50대 이상의 부설주차장에 설치되는 확장형 주차단위구역에 관하여는 제6조제1항제14호를 준용한다. <신설 2012.7.2>
//주차장법 시행규칙 11조 (부설주차장의 구조·설비기준) 4항
Check(ERPA_11_4){
IF CS THEN KS
}
CS{
ParkingLot myParkingLot{
isObjectProperty(ParkingLot.isAttachedParking) = TRUE
getObjectProperty(ParkingLot.numberOfParkingUnit) >= 50
}
ParkingUnit myParkingUnit{
getObjectProperty(ParkingUnit) = "ExtensionType"
}
hasSpace(myParkingLot, myParkingUnit) = TRUE
}
KS{
getResult(ERPA_6_1_14) = TRUE
}
Python Code 변환 예정
43
주차장법 시행규칙 제 11조 5 항 1호
1. 차로의 너비는 2.5미터 이상으로 한다. 다만, 주차단위구획과 접하여 있는 차로의 너비는 주차형식에 따라 다음 표에 따른 기준 이상으로 하여야 한다.
┌───────┬──────┐
│주차형식 │차로의 너비 │
├───────┼──────┤
│평행주차 │3.0미터 │
├───────┼──────┤
│직각주차 │6.0미터 │
├───────┼──────┤
│60도 대향주차 │4.0미터 │
├───────┼──────┤
│45도 대향주차 │3.5미터 │
├───────┼──────┤
│교차주차 │3.5미터 │
└───────┴──────┘
//주차장법 시행규칙 11조 (부설주차장의 구조·설비기준) 5항 1호
Check(ERPA_11_5_1){
KS
}
KS{
IF isAdjacent(ParkingUnit, ParkingLot.Driveway)=True
THEN
IF getObjectProperty(ParkingUnit.parkingType)="ParallelParking"
THEN ParkingLot.Driveway.width>=3.0 m
ELSE IF getObjectProperty(ParkingUnit.parkingType)="RightAngleParking"
THEN ParkingLot.Driveway.width>=6.0 m
ELSE IF getObjectProperty(ParkingUnit.parkingType)="60AngleParking"
THEN ParkingLot.Driveway.width>=4.0 m
ELSE IF getObjectProperty(ParkingUnit.parkingType)="45AngleParking"
THEN ParkingLot.Driveway.width>=3.5 m
ELSE IF getObjectProperty(ParkingUnit.parkingType)="CrossParking"
THEN ParkingLot.Driveway.width>=3.5 m
END IF
ELSE THEN
ParkingLot.Driveway.width>=2.5 m
END IF
}
Python Code 변환 예정
44
주차장법 시행규칙 제 6조 1 항 14호
14. 노외주차장에는 제3조제1항제2호에 따른 확장형 주차단위구획을 주차단위구획 총수(평행주차형식의 주차단위구획 수는 제외한다)의 30퍼센트 이상 설치하여야 한다.
//주차장법 시행규칙 6조 (노외주차장의 구조·설비기준) 1항 14호
Check(ERPA_6_1_14){
KS
}
KS{
ParkingLot myParkingLot{
isObjectProperty(ParkingLot.isOffStreetParking) = TRUE
}
ParkingUnit myParkingUnit{
getResult(ERPA_3_1_2) = TRUE
getObjectProperty(ParkingUnit.parkingUseType) = "ExtensionType"
}
ParkingUnit myParkingUnit2{
getResult(ERPA_3_1_2) = TRUE
getObjectProperty(ParkingUnit.parkingType) = "ParallelParking"
}
hasSpace(myParkingLot, myParkingUnit) = TRUE
(getObjectProperty(ParkingUnit.numberOf)*0.3 - getObjectNumber(myParkingUnit2)) <= getObjectNumber(myParkingUnit)
}
Python Code 변환 예정
45
주차장법 시행규칙 제 11조 5 항
⑤ 부설주차장의 총주차대수 규모가 8대 이하인 자주식주차장(지평식 및 건축물식 중 필로티 구조만 해당한다)의 구조 및 설비기준은 제1항 본문에도 불구하고 다음 각 호에 따른다. <개정 2012.7.2, 2013.1.25>
//주차장법 시행규칙 11조 (부설주차장의 구조·설비기준) 5항
Check(ERPA_11_5){
IF CS THEN KS
}
CS{
ParkingLot myParkingLot{
isObjectProperty(ParkingLot.isAttachedParking) = TRUE
isObjectProperty(ParkingLot.operationType) = "DriveInParking"
}
getObjectProperty(myParkingLot.numberOfParkingUnit) >= 8
}
KS{
getResult(ERPA_11_5_1) = TRUE
getResult(ERPA_11_5_2) = TRUE
getResult(ERPA_11_5_3) = TRUE
}
Python Code 변환 예정
46
주차장법 시행규칙 제 3조 1 항 1호
1. 평행주차형식의 경우
┌───────────┬──────┬──────┐
│구분 │너비 │길이 │
├───────────┼──────┼──────┤
│경형 │1.7미터 이상│4.5미터 이상│
├───────────┼──────┼──────┤
│일반형 │2.0미터 이상│6.0미터 이상│
├───────────┼──────┼──────┤
│보도와 차도의 구분이 │2.0미터 이상│5.0미터 이상│
│없는 주거지역의 도로 │ │ │
├───────────┼──────┼──────┤
│이륜자동차전용 │1.0미터 이상│2.3미터 이상│
└───────────┴──────┴──────┘
// 주차장법 시행규칙 3조 (주차장의 주차구획) 1항 1호
Check(ERPA_3_1_1){
KS
}
KS{
getObjectProperty(ParkingUnit.parkingType) = "ParallelParking"
}
def Check():
for parklot in ROOT.SELECT('parklot'):
park_type = parklot.SELECT('prop', '주차형식').STRING()
car_type = parklot.SELECT('prop', '주차단위구획').STRING()
min_w = 0.0
min_l = 0.0
if park_type == '평행주차':
if car_type == '경형':
min_w = 1.7
min_l = 4.5
elif car_type == '일반형':
min_w = 2.0
min_l = 6.0
elif car_type == '이륜자동차전용':
min_w = 1.0
min_l = 2.3
else:
continue
else:
if car_type == '경형':
min_w = 2.0
min_l = 3.6
elif car_type == '일반형':
min_w = 2.5
min_l = 5.0
elif car_type == '확장형':
min_w = 2.6
min_l = 5.2
elif car_type == '장애인전용':
min_w = 3.3
min_l = 5.0
elif car_type == '이륜자동차전용':
min_w = 1.0
min_l = 2.3
else:
continue
width = parklot.SELECT('width').UNIT('m')
length = parklot.SELECT('length').UNIT('m')
w = width.NUMBER()
l = length.NUMBER()
if w < min_w:
width.ERROR('너비: ' + str(w) + ' (< ' + str(min_w) + ')' )
elif l < min_l:
length.ERROR('길이: ' + str(l) + ' (< ' + str(min_l) + ')' )
else:
parklot.SUCCESS(str(w) + ' x ' + str(l))
47
주차장법 시행규칙 제 3조 1 항 2호
2. 평행주차형식 외의 경우
┌────────┬──────┬──────┐
│구분 │너비 │길이 │
├────────┼──────┼──────┤
│경형 │2.0미터 이상│3.6미터 이상│
├────────┼──────┼──────┤
│일반형 │2.5미터 이상│5.0미터 이상│
├────────┼──────┼──────┤
│확장형 │2.6미터 이상│5.2미터 이상│
├────────┼──────┼──────┤
│장애인전용 │3.3미터 이상│5.0미터 이상│
├────────┼──────┼──────┤
│이륜자동차 전용 │1.0미터 이상│2.3미터 이상│
└────────┴──────┴──────┘
// 주차장법 시행규칙 3조 (주차장의 주차구획) 1항 2호
Check(ERPA_3_1_2){
KS
}
KS{
getObjectProperty(ParkingUnit.parkingType) != "ParallelParking"
}
def Check():
for parklot in ROOT.SELECT('parklot'):
park_type = parklot.SELECT('prop', '주차형식').STRING()
car_type = parklot.SELECT('prop', '주차단위구획').STRING()
min_w = 0.0
min_l = 0.0
if park_type == '평행주차':
if car_type == '경형':
min_w = 1.7
min_l = 4.5
elif car_type == '일반형':
min_w = 2.0
min_l = 6.0
elif car_type == '이륜자동차전용':
min_w = 1.0
min_l = 2.3
else:
continue
else:
if car_type == '경형':
min_w = 2.0
min_l = 3.6
elif car_type == '일반형':
min_w = 2.5
min_l = 5.0
elif car_type == '확장형':
min_w = 2.6
min_l = 5.2
elif car_type == '장애인전용':
min_w = 3.3
min_l = 5.0
elif car_type == '이륜자동차전용':
min_w = 1.0
min_l = 2.3
else:
continue
width = parklot.SELECT('width').UNIT('m')
length = parklot.SELECT('length').UNIT('m')
w = width.NUMBER()
l = length.NUMBER()
if w < min_w:
width.ERROR('너비: ' + str(w) + ' (< ' + str(min_w) + ')' )
elif l < min_l:
length.ERROR('길이: ' + str(l) + ' (< ' + str(min_l) + ')' )
else:
parklot.SUCCESS(str(w) + ' x ' + str(l))
48
주차장법 시행규칙 제 6조 1 항 5호 다 목
다. 경사로의 차로너비는 직선형인 경우에는 3.3미터 이상(2차선의 경우에는 6미터 이상)으로 하고, 곡선형인 경우에는 3.6미터이상(2차선의 경우에는 6.5미터 이상)으로 하며, 경사로의 양측벽면으로부터 30센티미터 이상의 지점에 높이 10센티미터 이상 15센티미터 미만의 연석을 설치하여야 한다. 이 경우 연석 부분은 차로의 너비에 포함되는 것으로 본다.
//주차장법 시행규칙 6조 (노외주차장의 구조·설비기준) 1항 5호 다목
Check(ERPA_6_1_5_다){
KS AND IF (CS1 THEN KS1 ELSE KS2) OR (CS2 THEN KS3 ELSE KS4)
}
KS{
Wall myWall{
hasObject(Ramp,Wall)=TRUE
}
hasObject(Ramp, ParkingLot.Driveway)=TRUE
getElementDistance(myWall.Surface, Curb, a) >= 30cm
10cm =< getObjectProperty(Curb.height) < 15cm
}
CS1{
getObjectProperty(ParkingLot.Driveway.shapeType) = "LinearType"
getObjectProperty(ParkingLot.Driveway.numberOfLane) >= 2
}
KS1{
getOjbectProperty(ParkingLot.Driveway.width) >= 6m
}
KS2{
getOjbectProperty(ParkingLot.Driveway.width) >= 3.3m
}
CS2{
getObjectProperty(ParkingLot.Driveway.shapeType) = "CurvedType"
getObjectProperty(ParkingLot.Driveway.numberOfLane) >= 2
}
KS1{
getOjbectProperty(ParkingLot.Driveway.width) >= 6.5m
}
KS2{
getOjbectProperty(ParkingLot.Driveway.width) >= 3.6m
}
Python Code 변환 예정
49
주차장법 시행규칙 제 6조 1 항 5호 라 목
라. 경사로의 종단경사도는 직선부분에서는 17퍼센트를 곡선부분에서는 14퍼센트를 초과하여서는 아니 된다.
//주차장법 시행규칙 6조 (노외주차장의 구조·설비기준) 1항 5호 라목
Check(ERPA_6_1_5_라){
IF (CS1 THEN KS1) OR (CS2 THEN KS2)
}
CS1{
getObjectProperty(ParkingLot.Driveway.shapeType) = "LinearType"
}
KS1{
getObjectProperty(ParkingLot.Driveway.gradient) < 17%
}
CS2{
getObjectProperty(ParkingLot.Driveway.shapeType) = "CurvedType"
}
KS2{
getObjectProperty(ParkingLot.Driveway.gradient) < 14%
}
Python Code 변환 예정
50
주차장법 시행규칙 제 6조 1 항 6호
6. 노외주차장의 주차에 사용되는 부분의 높이는 주차바닥면으로부터 2.1미터 이상으로 하여야 한다.
//주차장법 시행규칙 6조 (노외주차장의 구조·설비기준) 1항 6호
Check(ERPA_6_1_6){
IF (!CS1 AND CS2) THEN (KS1 AND KS2)
}
CS1{
Elevator myElevator{
getObjectProperty(Elevator.usage) = "AutomobileElevator"
}
Opening myOpening1{
isObjectProperty(Elevator.Opening.isEntrance)=TRUE
}
Opening myOpening2{
isObjectProperty(Elevator.Opening.isExit)=TRUE
}
myOpening1 != myOpening2
isExist(myOpening1)=TRUE
isExist(myOpening2)=TRUE
}
CS2{
getObjectProperty(ParkingLot.operationType) = "DriveInParking"
isObjectProperty(ParkingLot.isOffStreetParking)=TRUE
}
KS1{
}
KS2{
getResult(ERPA_16-2_1)=TRUE
getResult(ERPA_16-2_3)=TRUE
}
Python Code 변환 예정
51
주차장법 시행규칙 제 6조 1 항 12호
12. 노외주차장의 주차단위구획은 평평한 장소에 설치하여야 한다. 다만, 경사도가 7퍼센트 이하인 경우로서 시장ㆍ군수 또는 구청장이 안전에 지장이 없다고 인정하는 경우에는 그러하지 아니하다.
//주차장법 시행규칙 6조 (노외주차장의 구조·설비기준) 1항 12호
Check(ERPA_6_1_12){
IF CS THEN KS
}
CS{
getObjectProperty(ParkingLot.buildingType)="BuildingType"
getObjectProperty(ParkingLot.Floor.numberOf) >= 2
}
KS{
getResult(ERPA_6_1_12_나)=TRUE
}
Python Code 변환 예정
52
주차장법 시행규칙 제 16조의2조 1 항 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
}
Python Code 변환 예정
53
주차장법 시행규칙 제 16조의2조 1 항 3호 나 목
나. 대형 기계식주차장: 길이 5.3미터 이상, 너비 2.15미터 이상
//주차장법 시행규칙 16조의2 (기계식주차장의 설치기준) 3호 나목
Check(ERPA_16-2_0_3_나){
IF CS THEN KS
}
CS{
ParkingLot myParkingLot{
ParkingLot.operationType = "MechanicalParking"
}
getObjectProperty(myParkingLot.scale)="LargeSize"
}
KS{
myParking.length>5.3 m
myParking.width>2.15 m
}
Python Code 변환 예정
54
주차장법 시행규칙 제 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 변환 예정
55
주차장법 시행규칙 제 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 변환 예정
56
주차장법 시행령 제 별표1조
부설주차장의 설치대상 시설물 종류 및 설치기준(제6조제1항 관련)
(시설물
:설치기준)
1. 위락시설
:○ 시설면적 100㎡당 1대(시설면적/100㎡)
2. 문화 및 집회시설(관람장은 제외한다), 종교시설, 판매시설, 운수시설, 의료시설(정신병원·요양병원 및 격리병원은 제외한다), 운동시설(골프장·골프연습장 및 옥외수영장은 제외한다), 업무시설(외국공관 및 오피스텔은 제외한다), 방송통신시설 중 방송국, 장례식장
:○ 시설면적 150㎡당 1대(시설면적/
//주차장법 시행령 별표1 부설주차장의 설치대상 시설물 종류 및 설치기준
Check(EDPA_*_1_1){
IF CS THEN KS
}
Space mySpace1{
getBuildingUsage()=” AmusementFacility”
myTotalFloorArea = getTotalFloorArea(mySpace1)
CS{
isExist(mySpace1)=TRUE
}
KS{
ParkingLot.numberOfParkingUnit<=myTotalFloorArea/100
}
Check(EDPA_*_1_2){
IF CS THEN KS
}
Space mySpace2{
(getBuildingUsage()= “CulturalAndAssemblyFacility”
AND getBuildingUsage() !=” Auditorium”)
OR (getBuildingUsage() = “ReligiousFacility | CommercialFacility | TransportationFacilit”
OR getBuildingUsage() = ”MedicalFacility”
AND getBuildingUsage() != “MentalHospital | ConvalescentHospital | DetentionHoispital”)
OR (getBuildingUsage() = “SportsFacility”
AND getBuildingUsage() != “GolfCourse | GolfDrivingRange | OurdoorSwimmingPool”)
OR (getBuildingUsage()= “BusinessFacility”
AND getBuildingUsage() != “ForeignOfficialResidence | Officetels” )
}
myTotalFloorArea2 = getTotalFloorArea(mySpace2)
}
CS{
isExist(mySpace2)=TRUE
}
KS{
ParkingLot.numberOfParkingUnit<=myTotalFloorArea2/150
}
Check(EDPA_*_1_3){
IF CS THEN KS
}
Space mySpace3{
((getBuildingUsage ()=” ClassINeighborhoodLivingFacility”
AND getSpaceUsage != “PublicToilet | Shelter | CommunityChildCenter”)
OR getBuildingUsage ()=”ClassIINeighborhoodLivingFacility”
OR getBuildingUsage ()=”LodgingFacility”)
}
myTotalFloorArea3 = getTotalFloorArea(mySpace3)
}
CS{
isExist(mySpace3)=TRUE
}
KS{
ParkingLot.numberOfParkingUnit<=myTotalFloorArea3/200
}
Check(EDPA_*_1_4){
IF CS1 THEN KS1 OR CS2 THEN KS2
}
Space mySpace1{
getBuildingUsage ()=” DetachedHouse”
}
myTotalFloorArea = getTotalFloorArea(mySpace1)
}
CS1{
myTotalFloorArea>50
AND myTotalFloorArea<=150
}
KS1{
isObjectProperty(parkingLot.numberofParkingUnit)=1
}
CS2{
myTotalFloorArea>150
}
KS2{
(myTotalFloorArea-150)/100+1=ParkingLot.numberofParkingUnit
}
Check(EDPA_*_1_7){
IF CS THEN KS
}
Space mySpace7{
getBuildingUsage ()=”Trainingfacility”
getBuildingUsage ()=”Factory”
getBuildingUsage () != ”AptartmentTypeFactory”
}
myTotalFloorArea7 = getTotalFloorArea(myspace7)
CS{
isExist(mySpace7)=TRUE
}
KS{
ParkingLot.numberOfParkingUnit<=myTotalFloorArea7/400
}
Check(EDPA_*_1_8){
IF CS THEN KS
}
Space mySpace8{
getBuildingUsage ()= “Warehouse”
}
myTotalFloorArea8 = getTotalFloorArea(mySpace8)
}
CS{
isExist(mySpace8)=TRUE
}
KS{
ParkingLot.numberOfParkingUnit<=myTotalFloorArea8/400
}
Check(EDPA_*_1_9){
IF CS THEN KS
}
Space mySpace9{
getBuildingUsage ()= “DormitoryForStudents”
}
myTotalFloorArea9 = getTotalFloorArea(myspace9)
CS{
isExist(mySpace9)=TRUE
}
KS{
ParkingLot.numberOfParkingUnit<=myTotalFloorArea9/400
}
Check(EDPA_*_1_10){
IF CS THEN KS
}
Space mySpace10 {
getObject(Space) != myspace1 | myspace2 | myspace3 | myspace4 | myspace5 | myspace6 | myspace7 | myspace8 | myspace9 |
}
myTotalFloorArea10 = getTotalFloorArea(mySpace10)
}
CS{
isExist(mySpace9)=TRUE
}
KS{
ParkingLot.numberOfParkingUnit<=myTotalFloorArea10/300
}
Check(EDPA_*_1_0_1){
IF CS THEN KS
}
CS{
getResult(EDPA_*_1_0_1_가)= TRUE
OR getResult(EDPA_*_1_0_1_나)= TRUE
OR getResult(EDPA_*_1_0_1_다)= TRUE
OR getResult(EDPA_*_1_0_1_라)= TRUE
OR getResult(EDPA_*_1_0_1_마)= TRUE
OR getResult(EDPA_*_1_0_1_바)= TRUE
OR getResult(EDPA_*_1_0_1_사)= TRUE
}
KS{
isExist(ParkingLot.isAttachedParking)=FALSE
}
Check(EDPA_*_1_0_1_가){
KS
}
isExist(ClassINeighborhoodLivingFacility.Substation)=TRUE
OR isExist(ClassINeighborhoodLivingFacility.PumpingStation)=TRUE
OR isExist(ClassINeighborhoodLivingFacility.PurificationPlant)=TRUE
OR isExist(ClassINeighborhoodLivingFacility.Shelter)=TRUE
OR isExist(ClassINeighborhoodLivingFacility.PublicToilet)=TRUE
Check(EDPA_*_1_0_1_나){
KS
}
isExist(ReligiousFacility.Monastery)=TRUE
OR isExist(ReligiousFacility.Convent)=TRUE
OR isExist(ReligiousFacility.Chapel)=TRUE
OR isExist(ReligiousFacility.Shrine)=TRUE
Check(EDPA_*_1_0_1_다){
KS
}
isExist(getBuildingUsage()=”FacilityForAnimalAndPlant”)=TRUE
AND isExist(getBuildingUsage()=”SlaughterHouse”)=FALSE
AND isExist(getBuildingUsage()=”ChickenSlaughterHouse”)=FALSE
Check(EDPA_*_1_0_1_라){
KS
}
isExist(FacilityForBroadcastingAndTelecommunication.TransmitAndReceptionAndTransitFacility)=TRUE
Check(EDPA_*_1_0_1_마){
KS
}
getObjectProperty(Building.isExclusiveUseOfParkingLot) = FALSE
(getBuildingUsage() != "CommercialFacility.DepartmentStore" OR "CommercialFacility.ShoppingCenter" OR "LargeStore"
OR getBuildingUsage() != "CulturalAndAssemblyFacility.MovieTheater" OR "CulturalAndAssemblyFacility.ExhibitionHall" OR "CulturalAndAssemblyFacility.WeddingHall"
Check(EDPA_*_1_0_1_바){
KS
}
getBuildingUsage()= “Station”
Check(EDPA_*_1_0_1_사){
KS
}
getResult(EDBA_6_1_4)=TRUE
Check(EDPA_*_1_0_4){
KS
}
Space mySpace{
getBuildingUsage()= “DetachedHouse”
getBuildingUsage() !=”Multi-familyHouses”
}
getTotalArea(mySpace)<=50m2
getTotalArea(mySpace)/100 = ParkingLot.numberOfParkingUnit
Python Code 변환 예정
57
특별피난계단의 계단실 및 부속실 제연설비의 화재안전기준(NFSC 501A) 제 14조 3호 가 목
가. 배출댐퍼는 두께 1.5㎜ 이상의 강판 또는 이와 동등 이상의 성능이 있는 것으로 설치하여야 하며 비 내식성 재료의 경우에는 부식방지 조치를 할 것
//특별피난계단의 계단실 및 부속실 제연설비의 화재안전기준(nfsc 501a) 14조 (수직풍도에 따른 배출) 3호 가목
Check(NFSC501A_14_0_1_가){
KS
}
KS{
Damper myDamper{
getObjectProperty(Damper.functionType)="배출댐퍼"
}
Material myMaterial{
}
getObjectProperty(myDamper.Material.name)="SteelPlate"
getObjectProperty(myDamper.Material.depth)>=1.5 mm
}
Python Code 변환 예정
58
특별피난계단의 계단실 및 부속실 제연설비의 화재안전기준(NFSC 501A) 제 18조
제18조(급기풍도) 급기풍도(이하 "풍도"라 한다)의 설치는 다음 각 호의 기준에 적합하여야 한다.
//특별피난계단의 계단실 및 부속실 제연설비의 화재안전기준(nfsc 501a) 18조 (급기풍도)
Check(NFSC_18){
IF CS THEN KS
}
CS{
getObjectProperty(Duct.functionType)="급기"
}
KS{
getResult(NFSC_18_0_1)=True
}
Python Code 변환 예정
59
특별피난계단의 계단실 및 부속실 제연설비의 화재안전기준(NFSC 501A) 제 18조 1호
1. 수직풍도는 제14조제1호 및 제2호의 기준을 준용할 것
//특별피난계단의 계단실 및 부속실 제연설비의 화재안전기준(nfsc 501a) 18조 (급기풍도) 1호
Check(NFSC501A_18_0_1){
IF CS THEN KS
}
CS{
getObjectProperty(Duct.type )="Verticle"
}
KS{
getResult(NFSC501A_14_0_1)=True
}
Python Code 변환 예정