개방형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-07-12 기준) 설계품질검토용 건축법 및 관련법규 - KBIMCode (문장단위)
    1      
1 / 1 page Total 2500 / 4000 records    신규입력
Select
ALL
None
#
ID
Law
Jo
JO Name
HANG
HO
MOK
Text
Search!
1
20061 건축물의 구조기준 등에 관한 규칙 제 35조 1 항 1호

1. 각층의 대린벽으로 구획된 각 벽에 있어서 개구부의 폭의 합계는 그 벽의 길이의 2분의 1이하로 하여야 한다.





//건축물의 구조기준 등에 관한 규칙 35조 (개구부) 1항 1호
Check(RSSB_35_1_1){
        KS
}
KS{
	Wall myWall1{
	isObjectProperty(Wall.isRightAngleCrossingWall) = TRUE
	isInstalled(Wall, Floor.One) = TRUE
	}
	Wall myWall2{
	isPartitioned(Wall, , myWall1) = TRUE
	}
	WL = getObjectWidth(myWall2)
	OW = getObjectWidth(myOpening)
	Opening myOpening{
	isInstalled(Opening, Wall) = TRUE
	}
	Sum(OW) <= WL * 1/2
} 




Python Code 변환 예정



Modify
2
72747 건축물의 에너지절약설계기준 제 6조 4호 라 4) 목

4) 너비 1.2미터 이하의 출입문





Check(NFCS103_10_7_3){

IF !CS THEN KS

}



objectDistance myObjectDistance1{

getObjectDistance(SprinklerHead,Obstacle,a)

}



objectDistance myObjectDistance2{

getObjectDistance(SprinklerHead,Ceiling,a)

}







CS{

getObjectWidth(Obstacle)<="myObjectDistance"





KS{

getObjectDistance(Pipe,Ceiling,a)<"myObjectDistance"

OR getObjectDistance(Pipe,Hanger,a)<"myObjectDistance"

OR getObjectDistance(Pipe,LightingFixture,a)<"myObjectDistance"

} 




Python Code 변환 예정



Modify
3
72752 건축물의 에너지절약설계기준 제 6조 5호 나 목

나. 「건축법 시행령」별표1 제14호에 따른 연면적의 합계가 3,000제곱미터 이상인 업무시설





//스프링클러설비의 화재안전기준(nfsc 103) 10조 (헤드) 7항 6호

Check(NFSC103_10_7_6){
	IF (CS1 THEN KS1) or (CS2 THEN KS2)
}
CS1{
	isObjectProperty(Opening.isFireSpreading)=TRUE
	getObjectWidth(Opening, a) > 2.5m
}
KS2{
	isInstalled(Opening, Sprinkler.Head, 2.5m) = TRUE
	getElementDistance(Opening.InsideSurface, Sprinkler.Head) <= 15cm
}

CS2{
	isObjectProperty(Opening.isFireSpreading)=TRUE
	getObjectWidth(Opening, Sprinkler.Head, a) <= 2.5m
}
KS2{
	isInstalled(Opening, Sprinkler.Head, center) = TRUE
	getElementDistance(Opening.InsideSurface, Sprinkler.Head) <= 15cm
}

 




Python Code 변환 예정



Modify
4
72757 건축물의 에너지절약설계기준 제 7조 2호

2. 평면계획





//스프링클러설비의 화재안전기준 10조 (헤드) 8항
check(NFSC103_10_8){
	(IF !(CS1) THEN KS1) or (IF CS1 THEN KS2)
}

KS1{
	Beam myBeam{
		hasObject(SpecificFireFightingBuilding, Beam) = TRUE
	}

	getElementDistance(myBeam, SprinklerHead, 1) = TRUE

	//Table

	getElementDistance(SprinklerHead.Deflector, Beam, a) + getObjectWidth(SprinklerHead.Deflector)*0.5 = SBD
	getObjectVerticalDistance(SprinklerHead.Deflector, Beam.BottomSurface, a) = SHD

	IF SBD < 0.75 m 
	THEN SHD < getObjectHeight(Beam.BottomSurface)

	IF 0.75 m <= SBD < 1 m 
	THEN SHD < 0.1 m

	IF 1 m <= SBD < 1.5 m
	THEN SHD < 0.15 m

	IF SBD >= 1.5 m 
	THEN SHD < 0.3 m 
}

CS1{
	getObjectDistance(Ceiling.Surface, Beam.BottomSurface) > 55 cm
	getObjectDistance(Beam.BottomSideSurface, SprinklerHead) = OD
	OD <= getElementDistance(SprinklerHead, c)*0.5
}

KS2{
	getObjectDistance(SprinklerHead, SprinklerHead.AttachingToSurface) <= 55 cm
} 




Python Code 변환 예정



Modify
5
19410 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 3조 1호 나 목

나. 골구를 철골조로 하고 그 양면을 두께 4센티미터 이상의 철망모르타르(그 바름바탕을 불연재료로 한 것에 한한다. 이하 이 조에서 같다) 또는 두께 5센티미터 이상의 콘크리트블록ㆍ벽돌 또는 석재로 덮은 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 3조 (내화구조) 1호 나목

Check (REFB_3_0_1_나){
	KS
}
KS{
	getObjectProperty(Wall.Structure.materialType) = "SteelFrame"  
	(isInstalled(WireMeshMortar, Wall.DoubleSide) = TRUE
	getObjectWidth(WireMeshMortar) >= 4cm)
	(isInstalled(ConcreteBlock, Wall.DoubleSide) = TRUE 
	OR (getObjectWidth(ConcreteBlock) >= 5cm )
	(isInstalled(Brick, Wall.DoubleSide) = TRUE
	OR getObjectWidth(Brick) >= 5cm )
	(isInstalled(Stone, Wall.DoubleSide) = TRUE
	OR getObjectWidth(Stone) >= 5cm)
} 




Python Code 변환 예정



Modify
6
19417 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 3조 4호 다 목

다. 철재의 양면을 두께 5센티미터 이상의 철망모르타르 또는 콘크리트로 덮은 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 3조 (내화구조) 4호 다목

Check (REFB_3_0_4_다){
	KS
}
KS{
	(isInstalled(WireMeshMortar, Steel.DoubleSide) = TRUE
	getObjectWidth(WireMeshMortar) >= 5cm)
	OR (isInstalled(ConcreteBlock, Wall.DoubleSide) = TRUE 
	getObjectWidth(ConcreteBlock) >= 5cm)
} 




Python Code 변환 예정



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

2. 각 출구의 유효너비는 1.5미터 이상일 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 10조 (관람석등으로부터의 출구의 설치기준) 2항 2호

check(REFB_10_2_2){

    Door myExit {

        Door.Space.name = "individualSeats"

        getFloorArea(Door.Space) >= 300

        isObjectProperty(Door.isEntrance) = TRUE

    }



    getObjectWidth(myExit) >= 1.5m

} 








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
8
25232 건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 제 13조 1 항 1호

1. 헬리포트의 길이와 너비는 각각 22미터이상으로 할 것. 다만, 건축물의 옥상바닥의 길이와 너비가 각각 22미터이하인 경우에는 헬리포트의 길이와 너비를 각각 15미터까지 감축할 수 있다.





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙

Check(REFB){
    IF CS THEN KS1 ELSE KS2
}

CS{
   getObjectLength(Building.RoofTop.FloorSlab)<=22 m
   getObjectWidth(Building.RoofTop.FloorSlab)<=22 m
}

KS1{
   getObjectLength(Heliport)>=15 m
   getObjectWidth(Heliport)>=15 m
}

KS2{
  getObjectLength(Heliport)>=22 m
   getObjectWidth(Heliport)>=22 m
} 




Python Code 변환 예정



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

1. 초등학교의 계단인 경우에는 계단 및 계단참의 너비는 150센티미터 이상, 단높이는 16센티미터 이하, 단너비는 26센티미터 이상으로 할 것





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

CS{
      getBuildingUsage()="ElementarySchool"
}

KS{
      getObjectWidth(Stair)>= 150 cm
      getObjectWidth(StairLanding)>150 cm
      getObjectProperty(Stair.riserHeight)>=16 cm
      getObjectProperty(Stair.riserWidth)>=26 cm
} 










def Check():
    for building in SELECT('building'):

        bldg_use = building.SELECT('building type').STRING()
        sub_use = building.SELECT('prop', '세부용도').STRING()
        min_clear_w = 0.6
        max_riser_h = 0.0
        min_tread_w = 0.0

        if bldg_use == '교육연구시설':
            min_clear_w = 1.5            
            min_tread_w = 0.26
            if sub_use == '초등학교':
                max_riser_h = 0.16
            elif sub_use in ['중학교', '고등학교']:
                max_riser_h = 0.18
        elif (bldg_use == '문화 및 집회시설' and sub_use in ['공연장', '집회장', '관람장']) or (bldg_use == '판매시설'):
            min_clear_w = 1.2
        else:
            min_clear_w = 0.6 
        
        for storey in building.SELECT('storey'):
            for stair in storey.SELECT('stair'):
                clear_width = stair.SELECT('clear width').UNIT('m')
                clear_w = clear_width.NUMBER()
                
                if clear_w < min_clear_w:
                    clear_width.ERROR('유효너비: ' + str(clear_w) + ' < ' + str(min_clear_w))
                else:
                    clear_width.SUCCESS('유효너비: ' + str(clear_w) + ' >= ' + str(min_clear_w))

                if max_riser_h > 0:
                    for riser_height in stair.SELECT('riser height'):
                        riser_h = riser_height.UNIT('m').NUMBER()

                        if riser_h > max_riser_h:
                            riser_height.ERROR('단높이: ' + str(riser_h) + ' > ' + str(max_riser_h))
                            break

                if min_tread_w > 0:
                    for tread_width in stair.SELECT('tread width'):
                        tread_w = tread_width.UNIT('m').NUMBER()

                        if tread_w < min_tread_w:
                            tread_width.ERROR('단너비: ' + str(tread_w) + ' < ' + str(min_tread_w))
                            break 





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

2. 중·고등학교의 계단인 경우에는 계단 및 계단참의 너비는 150센티미터 이상, 단높이는 18센티미터 이하, 단너비는 26센티미터 이상으로 할 것





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

CS{
       getBuildingUsage()="MiddleSchool"
       OR getBuildingUsage()="HighSchool"
}

KS{
      getObjectWidth(Stair)>=150 cm
      getObjectWidth(StairLanding)>150 cm
      getObjectProperty(Stair.riserHeight)>=18 cm
      getObjectProperty(Stair.riserWidth)>=26 cm
} 










def Check():
    for building in SELECT('building'):

        bldg_use = building.SELECT('building type').STRING()
        sub_use = building.SELECT('prop', '세부용도').STRING()
        min_clear_w = 0.6
        max_riser_h = 0.0
        min_tread_w = 0.0

        if bldg_use == '교육연구시설':
            min_clear_w = 1.5            
            min_tread_w = 0.26
            if sub_use == '초등학교':
                max_riser_h = 0.16
            elif sub_use in ['중학교', '고등학교']:
                max_riser_h = 0.18
        elif (bldg_use == '문화 및 집회시설' and sub_use in ['공연장', '집회장', '관람장']) or (bldg_use == '판매시설'):
            min_clear_w = 1.2
        else:
            min_clear_w = 0.6 
        
        for storey in building.SELECT('storey'):
            for stair in storey.SELECT('stair'):
                clear_width = stair.SELECT('clear width').UNIT('m')
                clear_w = clear_width.NUMBER()
                
                if clear_w < min_clear_w:
                    clear_width.ERROR('유효너비: ' + str(clear_w) + ' < ' + str(min_clear_w))
                else:
                    clear_width.SUCCESS('유효너비: ' + str(clear_w) + ' >= ' + str(min_clear_w))

                if max_riser_h > 0:
                    for riser_height in stair.SELECT('riser height'):
                        riser_h = riser_height.UNIT('m').NUMBER()

                        if riser_h > max_riser_h:
                            riser_height.ERROR('단높이: ' + str(riser_h) + ' > ' + str(max_riser_h))
                            break

                if min_tread_w > 0:
                    for tread_width in stair.SELECT('tread width'):
                        tread_w = tread_width.UNIT('m').NUMBER()

                        if tread_w < min_tread_w:
                            tread_width.ERROR('단너비: ' + str(tread_w) + ' < ' + str(min_tread_w))
                            break 





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

3. 문화 및 집회시설(공연장·집회장 및 관람장에 한한다)·판매시설 기타 이와 유사한 용도에 쓰이는 건축물의 계단인 경우에는 계단 및 계단참의 너비를 120센티미터 이상으로 할 것





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

CS{
      getBuildingUsage()= "CulturalAndAssemblyFacility.PerformanceHall"
      OR getBuildingUsage()= "CulturalAndAssemblyFacility.AssemblyHall"
      OR getBuildingUsage()= "CulturalAndAssemblyFacility.Auditorium"
      OR getBuildingUsage()= "CommercialFacility "
}

KS{
     getObjectWidth(Stair)>=120 cm
     getObjectWidth(StairLanding)>=120 cm
}
 










def Check():
    for building in SELECT('building'):

        bldg_use = building.SELECT('building type').STRING()
        sub_use = building.SELECT('prop', '세부용도').STRING()
        min_clear_w = 0.6
        max_riser_h = 0.0
        min_tread_w = 0.0

        if bldg_use == '교육연구시설':
            min_clear_w = 1.5            
            min_tread_w = 0.26
            if sub_use == '초등학교':
                max_riser_h = 0.16
            elif sub_use in ['중학교', '고등학교']:
                max_riser_h = 0.18
        elif (bldg_use == '문화 및 집회시설' and sub_use in ['공연장', '집회장', '관람장']) or (bldg_use == '판매시설'):
            min_clear_w = 1.2
        else:
            min_clear_w = 0.6 
        
        for storey in building.SELECT('storey'):
            for stair in storey.SELECT('stair'):
                clear_width = stair.SELECT('clear width').UNIT('m')
                clear_w = clear_width.NUMBER()
                
                if clear_w < min_clear_w:
                    clear_width.ERROR('유효너비: ' + str(clear_w) + ' < ' + str(min_clear_w))
                else:
                    clear_width.SUCCESS('유효너비: ' + str(clear_w) + ' >= ' + str(min_clear_w))

                if max_riser_h > 0:
                    for riser_height in stair.SELECT('riser height'):
                        riser_h = riser_height.UNIT('m').NUMBER()

                        if riser_h > max_riser_h:
                            riser_height.ERROR('단높이: ' + str(riser_h) + ' > ' + str(max_riser_h))
                            break

                if min_tread_w > 0:
                    for tread_width in stair.SELECT('tread width'):
                        tread_w = tread_width.UNIT('m').NUMBER()

                        if tread_w < min_tread_w:
                            tread_width.ERROR('단너비: ' + str(tread_w) + ' < ' + str(min_tread_w))
                            break 





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

4. 윗층의 거실의 바닥면적의 합계가 200제곱미터 이상이거나 거실의 바닥면적의 합계가 100제곱미터 이상인 지하층의 계단인 경우에는 계단 및 계단참의 너비를 120센티미터 이상으로 할 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 15조 (계단의 설치기준) 2항4호

check(REFB_15_2_4){

     IF CS THEN KS 

}



CS{  

   Floor myFloor{

   N=getFloorNumber(Stair)

   Floor.number=N+1

   }

   (getTotalFloorArea(myFloor.Room)>=200 m2 

   OR getTotalFloorArea(Room)>=100 m2)

    getFloorNumber(Stair)<0

      

}



KS{

       getObjectWidth(Stair)>=120 cm

      getObjectWidth(StairLanding)>120 cm

} 








area_sum_lable = '바닥면적 합계'
up_area_sum_lable = '윗층 바닥면적 합계'
clear_w_lable = '계단, 계단참의 유효면적'


def Check():
    area_sum =0
    up_area_sum = 0
    min_clear_w = 1.2
    under_stories = []

    for building in SELECT('building'):

        for storey in building.SELECT('storey'):
            if storey.SELECT('prop', '기준 지상층').BOOL():
                base_storey_exist = True
                break
            under_stories.append(storey)


        for storey in under_stories:
            if up_area_sum >= 200:
                continue

            else:
                for space in storey.SELECT('space'):
                    area_sum += space.SELECT('area').UNIT('m2').NUMBER()
                    if area_sum >= 100:
                        continue
                    else:
                        break
                    up_area_sum = area_sum

            for stair in storey.SELECT('stair'):

                clear_width = stair.SELECT('clear width').UNIT('m')
                clear_w = clear_width.NUMBER()

                if clear_w < min_clear_w:
                    clear_width.ERROR('유효너비: ' + str(clear_w) + ' < ' + str(min_clear_w))
                else:
                    clear_width.SUCCESS('유효너비: ' + str(clear_w) + ' >= ' + str(min_clear_w)) 





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

5. 기타의 계단인 경우에는 계단 및 계단참의 너비를 60센티미터 이상으로 할 것





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


KS{
      getObjectWidth(Stair)>=120 cm
      getObjectWidth(StairLanding)>120 cm
} 










def Check():
    for building in SELECT('building'):

        bldg_use = building.SELECT('building type').STRING()
        sub_use = building.SELECT('prop', '세부용도').STRING()
        min_clear_w = 0.6
        max_riser_h = 0.0
        min_tread_w = 0.0

        if bldg_use == '교육연구시설':
            min_clear_w = 1.5            
            min_tread_w = 0.26
            if sub_use == '초등학교':
                max_riser_h = 0.16
            elif sub_use in ['중학교', '고등학교']:
                max_riser_h = 0.18
        elif (bldg_use == '문화 및 집회시설' and sub_use in ['공연장', '집회장', '관람장']) or (bldg_use == '판매시설'):
            min_clear_w = 1.2
        else:
            min_clear_w = 0.6 
        
        for storey in building.SELECT('storey'):
            for stair in storey.SELECT('stair'):
                clear_width = stair.SELECT('clear width').UNIT('m')
                clear_w = clear_width.NUMBER()
                
                if clear_w < min_clear_w:
                    clear_width.ERROR('유효너비: ' + str(clear_w) + ' < ' + str(min_clear_w))
                else:
                    clear_width.SUCCESS('유효너비: ' + str(clear_w) + ' >= ' + str(min_clear_w))

                if max_riser_h > 0:
                    for riser_height in stair.SELECT('riser height'):
                        riser_h = riser_height.UNIT('m').NUMBER()

                        if riser_h > max_riser_h:
                            riser_height.ERROR('단높이: ' + str(riser_h) + ' > ' + str(max_riser_h))
                            break

                if min_tread_w > 0:
                    for tread_width in stair.SELECT('tread width'):
                        tread_w = tread_width.UNIT('m').NUMBER()

                        if tread_w < min_tread_w:
                            tread_width.ERROR('단너비: ' + str(tread_w) + ' < ' + str(min_tread_w))
                            break 





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

3. 방화벽에 설치하는 출입문의 너비 및 높이는 각각 2.5미터 이하로 하고, 해당 출입문에는 제26조에 따른 갑종방화문을 설치할 것





//건축물의 피난ㆍ방화구조 등의 기준에 관한 규칙 21조 (방화벽의 구조) 1항 3호

Check(REFB_21_1_3){
      KS
}

KS{
     Door myDoor{
      isObjectProperty(Door.isEntrance)=True
      isInstalled(Door, myWall)=True
    }

    getObjectWidth(myDoor)<=2.5 m
    getObjectHeight(myDoor)<=2.5 m
    isObjectProperty(myDoor.isStrictFireproofDoor)=True
  
} 




Python Code 변환 예정



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

1. 비상탈출구의 유효너비는 0.75미터 이상으로 하고, 유효높이는 1.5미터 이상으로 할 것





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

check(REFB_25_2_1){

Door myDoor{
Door.functionType = "Emergency"
Door.Floor.number < 0
}
	getObjectWidth(myDoor, a) >= 0.75 m 

	getObjectHeight(myDoor) >= 1.5 m

} 




Python Code 변환 예정



Modify
17
19952 연결살수설비의 화재안전기준(NFSC 503) 제 6조 3 항 6호 나 목

나. 천장의 최상부를 중심으로 가지관을 서로 마주보게 설치하는 경우에는 최상부의 가지관 상호간의 거리가 가지관상의 스프링클러헤드 상호간의 거리의 2분의 1이하(최소 1m 이상이 되어야 한다)가 되게 스프링클러헤드를 설치하고, 가지관의 최상부에 설치하는 스프링클러헤드는 천장의 최상부로부터의 수직거리가 90㎝ 이하가 되도록 할 것. 톱날지붕, 둥근지붕 기타 이와 유사한 지붕의 경우에도 이에 준한다.





//연결살수설비의 화재안전기준(nfsc 503) 6조 (연결살수설비의 헤드) 3항 6호 나목

Check(NFSC503_6_3_6_2){

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

}



CS1{

	hasObject(Ceiling, SprinklerHead.Deflector) = TRUE

	getObjectWidth(SprinklerHead, c) = SH

	getObjectWidth(SprinklerHead.Deflector) = SHD

	SH*0.5 < 1m

}



KS1{

	getObjectWidth(SprinklerHead.Deflector) = 1m

	getVerticalObjectDistance(SprinklerHead, Ceiling) <= 90cm

}



CS2{

	hasObject(Ceiling, SprinklerSystemHead.Deflector) = TRUE

	getObjectWidth(SprinklerSystemHead, c) = SH

	getObjectWidth(SprinklerSystemHead.Deflector) = SHD

	SH*0.5 >= 1m

}



KS2{

	getObjectWidth(SprinklerSystemHead.Deflector) = SHD

	SHD <= SH*0.5

	getVerticalObjectDistance(SprinklerSystemHead, Ceiling) <= 90cm

} 




Python Code 변환 예정



Modify
18
19953 연결살수설비의 화재안전기준(NFSC 503) 제 6조 3 항 7호

7. 연소할 우려가 있는 개구부에는 그 상하좌우에 2.5m 간격으로(개구부의 폭이 2.5m 이하인 경우에는 그 중앙에) 스프링클러헤드를 설치하되, 스프링클러헤드와 개구부의 내측면으로부터의 직선거리는 15㎝ 이하가 되도록 할 것. 이 경우 사람이 상시 출입하는 개구부로서 통행에 지장이 있는 때에는 개구부의 상부 또는 측면(개구부의 폭이 9m 이하인 경우에 한한다)에 설치하되, 헤드 상호간의 간격은 1.2m 이하로 설치하여야 한다.





//연결살수설비의 화재안전기준(nfsc 503) 6조 (연결살수설비의 헤드) 3항 7호

Check(NFSC503_6_3_7){

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

}



CS1{

	Opening myOpening{

		isObjectProperty(Opening.isFireSpreading) = TRUE

	}

	isExist(myOpening) = TRUE

	getObjectWidth(myOpening, a) > 2.5m

}



KS1{

	(getObjectDistance(myOpening.InsideSurface, SprinklerSystem.Head) <= 15cm

	getObjectWidth(SprinklerSystem.Head, a) = 2.5m)

	OR (getObjectWidth(myOpening) <= 9m

	getObjectDistance(myOpening.InsideSurface, SprinklerSystem.Head) <= 15cm

	getObjectWidth(SprinklerSystem.Head, a) <= 1.2m)

}



CS2{

	Opening myOpening{

		isObjectProperty(Opening.isFireSpreading) = TRUE

	}

	isExist(myOpening) = TRUE

	getObjectWidth(myOpening, a) <= 2.5m

}



KS2{

	hasObject(myOpening, SprinklerSystem.Head) = TRUE

} 




Python Code 변환 예정



Modify
19
19957 연결살수설비의 화재안전기준(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 변환 예정



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

2. 가스저장탱크·가스홀더 및 가스발생기의 주위에 설치하되, 헤드상호간의 거리는 3.7m 이하로 할 것





//연결살수설비의 화재안전기준(nfsc 503) 6조 (연결살수설비의 헤드) 4항 2호
Check(NFSC503_6_4_2){
	KS
}

KS{
	getObjectWidth(HookingUpSprinklerSystem.Head, c) <= 3.7m
} 




Python Code 변환 예정



Modify
21
19995 장애인ㆍ노인ㆍ임산부 등의 편의증진 보장에 관한 법률 시행규칙 제 별표1조

1. 장애인등의 통행이 가능한 접근로 가. 유효폭 및 활동공간 (1) 휠체어사용자가 통행할 수 있도록 접근로의 유효폭은 1.2미터 이상으로 하여야 한다. (2) 휠체어사용자가 다른 휠체어 또는 유모차 등과 교행할 수 있도록 50미터마다 1.5미터×1.5미터 이상의 교행구역을 설치할 수 있다. (3) 경사진 접근로가 연속될 경우에는 휠체어사용자가 휴식할 수 있도록 30미터마다 1.5미터×1.5미터 이상의 수평면으로 된 참을 설치할





//장애인ㆍ노인ㆍ임산부 등의 편의증진보장에 관한 법률 시행규칙 별표1 편의시설의 구조·재질등에 관한 세부기준(제2조제1항관련)

Check(ERCDAPA_2_1_*_1_4_나_1){
	IF (CS1 THEN KS1) OR (CS2 THEN KS2)

	ParkingUnit myParkingUnit{
		isObjectProperty(ParkingUnit.isParallelParking) = TRUE
	}

	CS1{
		isObjectProperty(ParkingUnit.isParallelParking) = TRUE
	}

	KS1{
		getObjectWidth(ParkingLotArea.isHandicapParking, a) >= 3.3 m
		getElementLength(ParkingLotArea.isHandicapParking) >= 5 m
	}

	CS2{
		isObjectProperty(ParkingLotArea.isParallelParking) = FALSE
	}

	KS2{
		getObjectWidth(ParkingLotArea.isHandicapParking, a) >= 2 m
		getElementLength(ParkingLotArea.isHandicapParking) >= 6 m
	}
}


check(ERCDAPA_2_1_*_1_4_나_2){
	getObjectGradient(ParkingSpace.Floor) <= 1/50
}


check(ERCDAPA_2_1_*_1_6_가_1){
	
	Door myDoor1{
		isObjectProperty(Door.isEntrance) = TRUE
	}

	Door myDoor2{
		isObjectProperty(Door.isEntrance) = TRUE
		getObject(Door.isEntrance) != getObject(myDoor1)
	}

	getObjectWidth(Door.isEntrance) >= 0.8 m
	isEgressDirection(myDoor1) = isEgressDirection(myDoor2)
	getObjectDistance(myDoor1, myDoor2) >= 1.2 m
}


check(ERCDAPA_2_1_*_1_6_가_2){
	
	isObjectProperty(Door.isAutomatic) = FALSE
	isObjectProperty(Door.isSillFree) = TRUE
}

check(ERCDAPA_2_1_*_1_8_가_2){
	
	getObjectVerticalDistance(FloorSurface,Door.Bottom)
}

check(ERCDAPA_2_1_*_1_8_나){
	
	Stair myStair{
		isObjectProperty(Stair.isEscape) = TRUE
		isObjectProperty(Stair.isOutdoor) = TRUE
	}

	getObjectWidth(myStair) >= 0.9 m 
	getObjectWidth(myStair.StairLanding) >= 0.9 m

	Stair myStair2{
		isObjectProperty(Stair.isEscape) = FALSE
		isObjectProperty(Stair.isOutdoor) = FALSE
	}

	getObjectWidth(myStair2) >= 1.2 m 
	getObjectWidth(myStair2.StairLanding) >= 1.2 m
}


check(ERCDAPA_2_1_*_1_8_다_1){
	
	hasObject(Stair, VerticalSurfaceStair) = TRUE
}

check(ERCDAPA_2_1_*_1_8_다_2){
	
	getObjectWidth(Stair.threadWidth) >= 0.28 m
	getObjectHeight(Stair.riserHeight) <= 0.18m
}

check(ERCDAPA_2_1_*_1_8_다_3){
	
	getObjectGradient(Stair.riserGradient) >= 60
	getObjectLength(Stair.nosingLength) < 3 cm
} 




Python Code 변환 예정



Modify
22
61201 주차장법 시행규칙 제 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 변환 예정



Modify
23
71939 주차장법 시행규칙 제 11조 5 항 5호

5. 출입구의 너비는 3미터 이상으로 한다. 다만, 막다른 도로에 접하여 있는 부설주차장으로서 시장·군수 또는 구청장이 차량의 소통에 지장이 없다고 인정하는 경우에는 2.5미터 이상으로 할 수 있다.





//	주차장법 시행규칙 11조 (부설주차장의 구조·설비기준) 5항 5호

Check(ERPA_11_5_5){
    KS
}

KS{
	getObjectWidth(ParkingLot.Opening) >= 3m
} 




Python Code 변환 예정



Modify
24
62351 주택건설기준 등에 관한 규정 제 15조 3 항 2호

2. 승강기의 폭 또는 너비중 한변은 1.35미터 이상, 다른 한변은 1.6미터 이상일 것





//주택건설기준 등에 관한 규정 15조 (승강기등) 3항 2호
Check(RHC_15_3_2){
	KS
}

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

	(getObjectWidth(myElevator) >= 1.35m
	getObjectDepth(myElevator) >= 1.6m)
	OR(getObjectWidth(myElevator) >= 1.6m
	getObjectDepth(myElevator) >= 1.35m)
} 




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.