(2025-05-05 기준) 설계품질검토용 건축법 및 관련법규 - KBIMCode (문장단위)
      KBIMCode - KBimAssess Python Code     KBIMCode - 체크리스트 단위     KBIMCode - 조항단위
    1      
1 / 1 page Total 2500 / 4000 records
Select
ALL
None
#
Law
Jo
JO Name
HANG
HO
MOK
Text
Search!
1
건축물의 구조기준 등에 관한 규칙 제 9조의3조 1 항

① 주요구조부(바닥·지붕틀 및 주계단은 제외한다. 이하 이 조에서 같다)가 목구조인 건축물은 지붕높이 18미터 이하, 처마높이 15미터 이하 및 연면적 3,000제곱미터 이하로 하여야 한다. 다만, 스프링클러를 설치하는 경우에는 연면적을 6,000제곱미터까지 허용할 수 있다.





//건축물의 구조기준 등에 관한 규칙 9조의3 (건축물의 규모제한) 1항

Check(RSSB_9-3_1){

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

}

	MainStructuralPart myMainStructuralPart1{
	getObject(FloorSlab) OR getObject(RoofTruss)
	}
MainStructuralPart myMainStructuralPart2{
	MainStructuralPart != myMainStructuralPart1
	}

CS1{

	isInstalled(SprinklerSystem) != TRUE

	getObjectProperty(myMainStructuralPart2.Structure.materialType) = "Timber"

}

KS1{

	getObjectVerticalDistance(FloorSlab, Roof) <= 18m

	getObjectVerticalDistance(FloorSlab, Eave) <= 15m

	getGrossFloorArea() <= 3000m2

}

CS2{

	isInstalled(SprinklerSystem) = TRUE

	getObjectProperty(myMainStructuralPart2.Structure.materialType) = "Timber"

}

KS1{

	getObjectVerticalDistance(FloorSlab, Roof) <= 18m

	getObjectVerticalDistance(FloorSlab, Eave) <= 15m

	getGrossFloorArea() <= 6000m2

} 




Python Code 변환 예정



2
건축물의 구조기준 등에 관한 규칙 제 9조의3조 2 항

② 주요구조부가 비보강조적조인 건축물은 지붕높이 15미터 이하, 처마높이 11미터 이하 및 3층 이하로 하여야 한다.





//건축물의 구조기준 등에 관한 규칙 9조의3 (건축물의 규모제한) 2항
Check(RSSB_9-3_2){
        IF CS THEN KS
}
CS{
	isObjectProperty(MainStructuralPart.Structure.isUnreinforcedMansoryStructure) = TRUE
}
KS{
	getObjectVerticalDistance(FloorSlab, Roof) <= 15m
	getObjectVerticalDistance(FloorSlab, Eave) <= 11m	
	getBuildingStoriesCount() <= 3
} 




Python Code 변환 예정



3
건축물의 에너지절약설계기준 제 29조

제29조(재검토기한) 「훈령·예규 등의 발령 및 관리에 관한 규정」 (대통령훈령 제248호)에 따라 이 고시 발령 후의 법령이나 현실여건의 변화 등을 검토하여 이 고시의 폐지, 개정 등의 조치를 하여야 하는 기한은 2017년 5월 31일까지로 한다.





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

Check(NFSC203_7_3_5){

	IF CS1 AND CS2 THEN KS

}

	Sensor mySensor1{

	getObjectProperty(Sensor.sensingMode) = "DifferentialTemperatureType"

	getObjectProperty(Sensor.sensingRange) = "SpotType"

	}

	Sensor mySensor2{

	getObjectProperty(Sensor.sensingMode) = "CompensationType"

	getObjectProperty(Sensor.sensingRange) = "SpotType"

	}

	Sensor mySensor3{

	getObjectProperty(Sensor.sensingMode) = "ConstantTemperatureType"

	getObjectProperty(Sensor.sensingRange) = "SpotType"

	}

	 

CS1{

	getElementDistance(FloorSlab, Sensor) < 4m

	}

CS2{

	isFireResistantStructure(SpecificFireFightingBuilding.MainStructuralPart) = TRUE

	}

CS3{

	getElementDistance(FloorSlab, Sensor) < 8m

	getElementDistance(FloorSlab, Sensor) >= 4m

	}



KS{

	isObjectProperty(mySensor1.type) = "Type1"

	isInstalled(mySensor1, FloorSlab, 90) = TRUE

} 




Python Code 변환 예정



4
건축물의 에너지절약설계기준 제 별표3조

단열재의 두께





자동화재탐지설비의 화재안전기준(nfsc 203) 7조 (감지기) 3항 7호 가목
Check(NFSC203_7_3_7_가){
	KS3 AND IF !CS THEN KS1 ELSE KS2
}
	Pipe myPipe{
	isObjectProperty(Pipe.isForAir) = TRUE
	}
	Zone myZone{
	isObjectProperty(Zone.isDetectionZone) = TRUE
	}
KS3{
	getElementDistance(myPipe, myZone.Wall) <= 1.5m
	getElementDistance(myPipe, myZone.Column) <= 1.5m
}
CS{
	isFireResistantStructure(SpecificFireFightingBuilding.MainStructuralPart) = TRUE
	
}
KS1{
	getObjectInterval(myPipe) <= 6m
}
KS2{
	getObjectInterval(myPipe) <= 6m
} 




Python Code 변환 예정



5
건축물의 에너지절약설계기준 제 별표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 변환 예정



6
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 14조의2조 4호

4. 건축물의 주요 구조부를 내화구조로 할 것





// 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 14조의2 (복합건축물의 피난시설 등) 4호



Check(REFB_14-2_0_4){

       KS

}



KS{

  isFireResistantStructure(MainStructuralPart)=True

} 




Python Code 변환 예정



7
건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 20조의2조

제20조의2 (내화구조의 적용이 제외되는 공장건축물) 영 제56조제1항제3호 단서에서 "국토해양부령으로 정하는 공장"이란 별표 2의 업종에 해당하는 공장으로서 주요구조부가 불연재료로 되어 있는 2층 이하의 공장을 말한다. <개정 2005.7.22, 2008.3.14, 2009.7.1>





check(REFB_20-2){

     getResult(REFB_*_2) = True

     getObjectProperty(MainStructuralPart.Material.nonCombustibility)= TRUE

     getBuildingStoriesCount()<2;

} 




Python Code 변환 예정



8
건축법 제 50조 1 항

① 문화 및 집회시설, 의료시설, 공동주택 등 대통령령으로 정하는 건축물은 국토교통부령으로 정하는 기준에 따라 주요구조부를 내화(耐火)구조로 하여야 한다. <개정 2013.3.23>





//건축법 50조 (건축물의 내화구조와 방화벽) 1항
check(BA_50_1){
	getResult(EDBA_56_1) = TRUE
	getResult(EDBA_56_2) = TRUE
	isObjectProperty(MainStructuralPart.isFireResistantStructure) = TRUE
} 




Python Code 변환 예정



9
건축법 제 51조 2 항

② 방화지구 안의 공작물로서 간판, 광고탑, 그 밖에 대통령령으로 정하는 공작물 중 건축물의 지붕 위에 설치하는 공작물이나 높이 3미터 이상의 공작물은 주요부를 불연(不燃)재료로 하여야 한다.





//건축법 51조 (방화지구 안의 건축물) 2항



Check(BA_51_2){

       IF CS THEN KS 

}



CS{

   getResult(LPUA_37_1_4)=True

   

}



KS{



   Construction  myConstruction {

       

       isInstalled(Construction , Rooftop)=True

       OR Construction.height>=3 m 

   }



   isObjectProperty(myConstruction.MainStructuralPart.Material.nonCombustibility)=True

} 




Python Code 변환 예정



10
건축법 시행령 제 61조 1 항 1호

1. 단독주택 중 다중주택·다가구주택





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

} 




Python Code 변환 예정



11
건축법 시행령 제 61조 1 항 2호

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

} 




Python Code 변환 예정



12
건축법 시행령 제 61조 1 항

①법 제52조제1항에서 "대통령령으로 정하는 용도 및 규모의 건축물"이란 다음 각 호의 어느 하나에 해당하는 건축물을 말한다. 다만, 그 주요구조부가 내화구조 또는 불연재료로 되어 있고 그 거실의 바닥면적(스프링클러나 그 밖에 이와 비슷한 자동식 소화설비를 설치한 바닥면적을 뺀 면적으로 한다. 이하 이 조에서 같다) 200제곱미터 이내마다 방화구획이 되어 있는 건축물은 제외한다. <개정 2009.7.16, 2010.2.18, 2010.12.13, 2013.3.23, 2014.3.24, 2014.8.27, 2014.10.14, 2015.9.22, 2017.2.3>





//건축법 시행령 61조 (건축물의 마감재료) 1항

Check(EDBA_61_1){

   IF !CS THEN  KS

}



CS{

 (isObjectProperty(MainStructuralPart.isFireResistantStructure)=TRUE

 OR isObjectProperty(MainStructuralPart.Material.nonCombustibility)=TRUE)

 

 isFirePartition(Room.Floor, a, 200)=TRUE



 

}



KS{

    getResult(EDBA_61_1_1)=TRUE

    OR getResult(EDBA_61_1_2)=TRUE

    OR getResult(EDBA_61_1_3)=TRUE

    OR getResult(EDBA_61_1_4)=TRUE

    OR getResult(EDBA_61_1_5)=TRUE

    OR getResult(EDBA_61_1_6)=TRUE

    OR getResult(EDBA_61_1_7)=TRUE

} 




Python Code 변환 예정



13
건축법 시행령 제 35조 1 항

① 법 제49조제1항에 따라 5층 이상 또는 지하 2층 이하인 층에 설치하는 직통계단은 국토해양부령으로 정하는 기준에 따라 피난계단 또는 특별피난계단으로 설치하여야 한다. 다만, 건축물의 주요구조부가 내화구조 또는 불연재료로 되어 있는 경우로서 다음 각 호의 어느 하나에 해당하는 경우에는 그러하지 아니하다. <개정 2008.10.29>





//건축법 시행령 35조(피난계단의 설치) 1항
Check(EDBA_35_1){
	IF (!CS1 AND !CS2 AND CS3) THEN KS
}

CS1 {
     isFireProofStructure(MainStructuralPart) = TRUE
     OR isObjectProperty(MainStructuralPart.Material.nonCombustibility) = TRUE
}

CS2 {
     getResult(EDBA_35_1_1) = TRUE
     OR getResult(EDBA_35_1_2) = TRUE
}

CS3{
     Floor myFloor {
          Floor.number > 5
		OR Floor.number <= -2
	}

	Stair myStair {	
		isObjectProperty(Stair.isDirect) = TRUE
	}

	hasElement(myFloor, myStair) = TRUE
}

KS {
	isObjectProperty(myStair.isEscape) = TRUE
	OR isObjectProperty(myStair.isSpecialEscape) = TRUE
} 




Python Code 변환 예정



14
건축법 시행령 제 46조 1 항

① 법 제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



} 




Python Code 변환 예정



15
건축법 시행령 제 46조 2 항 6호

6. 주요구조부가 내화구조 또는 불연재료로 된 주차장





//건축법 시행령 46조 (방화구획의 설치) 2항 6호

check(EDBA_46_2_6){

KS

}



KS{

  isObjectProperty(MainStructuralPart.isFireResistantStructure)=TRUE

  AND isObjectProperty(MainStructuralPart.Material.nonCombustibility)=TRUE

  AND getSpaceUsage()=ParkingLot

} 




Python Code 변환 예정



16
건축법 시행령 제 57조 1 항

① 법 제50조제2항에 따라 연면적 1천 제곱미터 이상인 건축물은 방화벽으로 구획하되, 각 구획된 바닥면적의 합계는 1천 제곱미터 미만이어야 한다. 다만, 주요구조부가 내화구조이거나 불연재료인 건축물과 제56조제1항제5호 단서에 따른 건축물 또는 내부설비의 구조상 방화벽으로 구획할 수 없는 창고시설의 경우에는 그러하지 아니하다.





//  건축법 시행령 57조 (	대규모 건축물의 방화벽 등) 1항
Check(EDBA_57_1){
	IF (CS1 AND CS2) THEN KS
}

CS1{
	getObjectProperty(MainStructuralPart.isFireResistantStructure) = TRUE
	OR getObjectProperty(MainStructuralPart.Material.nonCombustibility) = TRUE
	OR getResult(EDBA_56_1_5) = TRUE
}

CS2{
	getObjectProperty(Building.grossFloorArea) >= 1000m2
}

KS{
	Space mySpace{
		getFloorArea(Space) < 1000m2
	}

	Space mySpace2{
		Space != mySpace
	}

	Wall myWall{
		isObjectProperty(Wall.isFireProofWall) = TRUE
	}

	isPartitioned(mySpace, mySpace2, myWall) = TRUE
} 




Python Code 변환 예정



17
건축법 시행령 제 57조 3 항

③ 연면적 1천 제곱미터 이상인 목조 건축물의 구조는 국토해양부령으로 정하는 바에 따라 방화구조로 하거나 불연재료로 하여야 한다.





//  건축법 시행령 57조 (대규모 건축물의 방화벽 등) 3항

Check(EDBA_57_3){

	IF CS THEN KS

}



CS{

	getObjectProperty(Building.grossFloorArea) >= 1000m2

	getObjectProperty(Building.Structure.materialType) = "Timber"

}



KS{

	getObjectProperty(MainStructuralPart.Material.nonCombustibility) = TRUE

	OR getObjectProperty(MainStructuralPart.isFireProofStructure) = TRUE

} 




Python Code 변환 예정



18
건축법 시행령 제 56조 1 항

① 법 제50조제1항에 따라 다음 각 호의 어느 하나에 해당하는 건축물(제5호에 해당하는 건축물로서 2층 이하인 건축물은 지하층 부분만 해당한다)의 주요구조부는 내화구조로 하여야 한다. 다만, 연면적이 50제곱미터 이하인 단층의 부속건축물로서 외벽 및 처마 밑면을 방화구조로 한 것과 무대의 바닥은 그러하지 아니하다. <개정 2009.6.30>





//건축법 시행령 56조 (건축물의 내화구조) 1항

check(EDBA_56_1){

        IF !CS THEN KS

}

Space mySpace{
Space.usage="StagePart"
}

Floor myFloor{

     hasSpace(mySpace, Floor) = TRUE

}



CS {

       getTotalFloorArea()<= 50m2

       AND getBuildingStoriesCount()=1

       AND getBuildingUsage()="AccessoryBuidling"

       AND isFireProofStructure("OuterWall" | "eaves" | myFloor)=TRUE

}



KS {

	getResult(EDBA_56_1_1 = TRUE  

	OR getResult(EDBA_56_1_2) = TRUE  

	OR getResult(EDBA_56_1_3) = TRUE  

	OR getResult(EDBA_56_1_4) = TRUE  

	OR getResult(EDBA_56_1_5) = TRUE  

   		

	AND isFireProofStructure(MainStructuralPart) = TRUE

} 




Python Code 변환 예정



19
건축법 시행령 제 34조 1 항

① 건축물의 피난층(직접 지상으로 통하는 출입구가 있는 층을 말한다. 이하 같다) 외의 층에서는 피난층 또는 지상으로 통하는 직통계단(경사로를 포함한다. 이하 같다)을 거실의 각 부분으로부터 계단(거실로부터 가장 가까운 거리에 있는 계단을 말한다)에 이르는 보행거리가 30미터 이하가 되도록 설치하여야 한다. 다만, 건축물(지하층에 설치하는 것으로서 바닥면적의 합계가 300제곱미터 이상인 공연장·집회장·관람장 및 전시장은 제외한다)의 주요구조부가 내화구조 또는 불연재료로 된 건축물은 그 보행거리가 50미터(층수가 16층 이상인 공동주택은 40미터) 이하가 되도록 설치할 수 있으며, 자동화 생산시설에 스프링클러 등 자동식 소화설비를 설치한 공장으로서 국토해양부령으로 정하는 공장인 경우에는 그 보행거리가 75미터(무인화 공장인 경우에는 100미터) 이하가 되도록 설치할 수 있다. <개정 2009.7.16>





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

Check(EDBA_34_1){
     KS
}

KS{
Floor myFloor{
      isObjectProperty(Floor.isEscape) = TRUE
}

Space mySpace{
      getObjectProperty(Space.usage)="PerformanceHall"
      OR getObjectProperty(Space.usage)="AssemblyHall"
      OR getObjectProperty(Space.usage)="Auditorium"	
      OR getObjectProperty(Space.usage)="ExhibitionHall"
}

Door myDoor{
     isDirectlyAccessible(Door, Ground)=TRUE
}

Stair myStair{
     isObjectProperty(Stair.isDirect)=TRUE
     isAccessible(Stair,myFloor)=TRUE
     OR isAccessible(Stair,Ground)=TRUE
}

Ramp myRamp{
     isAccessible(Ramp,myFloor)=TRUE
     OR isAccessible(Ramp,Ground)=TRUE
}

Floor myFloor2{
     isObjectProperty(Floor.isEscape)=FALSE
     OR hasObject(Floor, myDoor)=FALSE
}

	Zone myZone{

		isDirectlyAccessible(myStair, Zone)=FALSE

	}

 

IF

	getFloorNumber(mySpace)>0

	getFloorArea(mySpace)<=300 m2

	isFireResistantStructure(MainStructuralPart)=TRUE

	OR isObjectProperty(MainStructuralPart.Material.nonCombustibility)=TRUE 

	THEN IF        getBuildingStoriesCount()>=16

	               getBuildingUsage()="MultiUnitHouse"

	          THEN ED= 40 

	ELSE THEN   ED=50               

	END IF



ELSE IF   

	getBuildingUsage() = "Factory" 

	isExist(ExtinguishingSystem)=TRUE 

	isObjectProperty(ExtinguishingSystem.isAutomatic)=TRUE

	getResult(REFB_8_2)=TRUE

	THEN IF   	getBuildingUsage() = "UnmannedFactory" 

			THEN ED=100

	ELSE THEN  ED=75

	END IF 



ELSE THEN ED=30

	END IF 



	(hasObject(myFloor,myStair)=TRUE

	hasObject(myZone, myStair)=TRUE

	getObjectDistance(Room,myStair, 1)<=ED)

	OR 

	(hasObject(myFloor,myRamp)=TRUE

	hasObject(myZone, myRamp)=TRUE

	getObjectDistance(Room,myRamp, 1)<=ED)

} 








max_route_length = 30

def Check():
    evac_storey_exist = False
    stories = SELECT('storey')

    for storey in stories:
        if storey.SELECT('is evacuation storey').BOOL() == True:
            evac_storey_exist = True
            break

    if evac_storey_exist == False:
        ERROR('피난층이 존재하지 않습니다.')
        return

    for storey in stories:
        if storey.SELECT('is evacuation storey').BOOL() == True:
            continue

        stairs = storey.SELECT('direct stair')

        if stairs.COUNT() == 0:
            storey.ERROR(storey.SELECT('name').STRING() + '에 직통계단이 존재하지 않습니다.')
            continue

        for space in storey.SELECT('space'):
            route_length = -1
            for route in space.SELECT('escape route', stairs):
                length = route.SELECT('length').UNIT('m').NUMBER()
                if length > 0:
                    if route_length < 0:
                        route_length = length
                    else:
                        route_length = min([route_length, length])
            if route_length < 0:
                space.ERROR(space.SELECT('name').STRING() + '부터 직통계단까지 갈 수 없다.')
            elif route_length > max_route_length:
                space.ERROR(space.SELECT('name').STRING() + '부터 직통계단까지의 거리가 멀다 : ' + str(route_length))
            else:
                space.SUCCESS(space.SELECT('name').STRING() + ' : ' + str(route_length)) 





20
건축법 시행령 제 81조 3 항 1호

1. 주요구조부가 내화구조일 것





//  건축법 시행령 81조 (맞벽건축 및 연결복도) 3항 1호
Check(EDBA_81_3_1){
	KS
}

KS{
	getObjectProperty(MainStructuralPart.isFireResistantStructure) = TRUE
} 




Python Code 변환 예정



21
연결살수설비의 화재안전기준(NFSC 503) 제 4조 1 항 3호

3. 개방형헤드를 사용하는 송수구의 호스접결구는 각 송수구역마다 설치할 것. 다만, 송수구역을 선택할 수 있는 선택밸브가 설치되어 있고 각 송수구역의 주요구조부가 내화구조로 되어 있는 경우에는 그러하지 아니하다.





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



Check(NFSC503_4_1_3){

 IF !CS THEN KS 

}

	Zone myZone{

  isObjectProperty(Zone.isWaterSupplyZone)=TRUE

	}

CS{

	Valve myValve{

	isObjectProerpty(Valve.isSelectionValve) = TRUE

	}

	isInstalled(myValve) = TRUE

	hasObject(myZone,MainStructuralPart) = TRUE

	isFireResistantStructure(MainStructuralPart) = TRUE

}

KS{

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

 }

	Head myHead{

	getObjectProperty(Head.openAndCloseType) = "OpenType"

	}

	isInstalled(myPort.호스접결구, myZone.One) = TRUE

} 




Python Code 변환 예정



    1