BIM/GIS - IFC 구조

Donut·2025년 3월 12일

IFC

목록 보기
2/6
post-thumbnail

IFC파일은 객체지향 기법을 적용하여 객체 구성요소인 건물, 지붕, 벽, 문 등의 객체와 그 객체들 간의 관계를 express 언어 기반의 구조화된 스키마로 정의되어있다.

이전 게시글에서 얘기했던 것과 같이 IFC 파일은 벽, 문, 창문 등의 객체들로 구성되어있다.
아래 테스트 파일을 보면 문과 벽과 안에 의자들, 창문들 등에 대한 정보가 IFC 파일 안에 들어가있다.


IFC의 가장 상위 Entity인 IfcProduct는 그 하위 Entity인 IfcBuilding의 위치와 형상을 표현하는 기본적인 데이터 구조를 가지며, 그 하위 엔티티들인 IfcBeam, IfcColumn, IfcWall 등은 건물을 실제로 구성하는 지붕, 기둥 벽체 등을 표현하고 각 특성을 나타내는 속성정보들을 갖고 있다.


IFC 파일의 내부들을 보면 무슨 내용인지, 매우 복잡하다고 생각할 수 있다.


IFC를 구성하고 있는 Entity들의 속성 정보들은 서로 참조하고 있는 구조로, 다음과 같이 살펴볼 수 있다.

1. IfcProject

IFC 모델에서 최상위 루트 Entity로, 하나의 BIM 프로젝트 전체를 대표하는 개체이다.

테스트 파일에서 IfcProject Entity만 갖고 오면 아래와 같이 나온다.

#122= IFCPROJECT(
	'0L$0W65fP6aPyqk5jauOMK',
	#42,
	'Residential Tower A',
	'High-rise residential building project',
	$,
	'Residential Tower A - Phase 1',
	'Construction',
	(#113),
	#108
);

IfcProject가 갖고 있는 속성 정보가 어떤 것을 의미하는지는 아래의 표로 정리했다.

- GlobalId
고유 식별자 역할을 하며, 필요한 Entity만 갖고 있는 값이다.
단순히 속성(Property) 및 관계(Relationship), 형상 역할 등만 하는 Entity에게는 부여되지 않는다.

- OwnerHistory
객체의 생성 및 수정 이력을 저장하는 속성이다.
#42를 참조하고 있는데 참조된 Entity들을 따라가다보면 해당 정보들을 확인할 수 있다.

#42= IFCOWNERHISTORY(#39,#5,$,.NOCHANGE.,$,$,$,1671174410);
#39= IFCPERSONANDORGANIZATION(#36,#38,$);
#5= IFCAPPLICATION(#1,'2021','Autodesk Revit 2021 (KOR)','Revit');
#36= IFCPERSON($,'','shinmc',$,$,$,$,$);
#38= IFCORGANIZATION($,'','',$,$);

- Name
프로젝트의 이름을 지정하는 속성이다.

- Description
프로젝트에 대한 추가적인 설명을 제공하는 속성입니다.

- ObjectType
프로젝트의 특정 유형을 지정하는 속성입니다.

- LongName
프로젝트의 긴 이름(전체 이름)을 지정하는 속성이다.
$ 표시는 Null값으로 생각하면 된다.

- Phase
프로젝트의 단계(Phase)를 나타낸다.

- RepresentationContexts
프로젝트에서 사용되는 좌표계 및 표현 컨텍스트 정보를 저장하는 값이다.

#113= IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.00000000000000E-5,#110,#111);
#110= IFCAXIS2PLACEMENT3D(#6,$,$);
#111= IFCDIRECTION((6.12303176911189E-17,1.));

#113 Entity를 따라가다보면 위와 같은 Entity들 정보가 확인된다.
후에 IFC 위치와 관련된 글에서 자세하게 작성될 것인데 'IFCGEOMETRICREPRESENTATIONCONTEXT' Entity는 3D 형상 표현 관련 정보를 갖고 있으며 IFC4 버전부터는 위치와 밀접한 Entity와 연관이 있다.

- UnitsInContext
프로젝트에서 사용되는 단위(Units) 시스템을 정의하는 속성이다.

#108= IFCUNITASSIGNMENT((#43,#44,#45,#49,#51,#54,#57,#59,#60,#62,#66,#71,#73,#74,#75,#76,#77,#78,#79,#84,#88,#90,#94,#100,#106));
#43= IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.);
#44= IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.);
#45= IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.);
#46= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.);
#47= IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0);
#48= IFCMEASUREWITHUNIT(IFCRATIOMEASURE(0.0174532925199433),#46);
#49= IFCCONVERSIONBASEDUNIT(#47,.PLANEANGLEUNIT.,'DEGREE',#48);
#51= IFCSIUNIT(*,.MASSUNIT.,.KILO.,.GRAM.);
(이하 생략)

BIM을 설계할 때 길이 단위 등을 조정할 수 있다.
그래서 해당 IFC 파일이 어느 단위로 설계되었는지에 대한 내용을 알 수 있다.


2. IfcSite

IfcSite는 건설 프로젝트의 부지(Site) 를 나타내는 IFC Entity로, 건축물, 토목 구조물 등이 위치하는 물리적 공간을 의미한다.

#172= IFCSITE(
	'0L$0W65fP6aPyqk5jauOMM',
	#42,
	'Default',$,$,
	#171,$,$,
	.ELEMENT.,
	(42,21,31,181945),
	(-71,-3,-24,-263305),106.000090303027,
	$,$);

IfcSite의 속성 정보는 아래와 같다.

(앞서 설명한 속성 정보는 생략하겠다.)

- ObjectPlacement
객체의 좌표계를 정의한다.

#20= IFCDIRECTION((0.,0.,1.));
#166= IFCCARTESIANPOINT((181194.632851008,517941.184846197,0.));
#168= IFCDIRECTION((-0.00698102814946097,0.999975632326097,0.));
#170= IFCAXIS2PLACEMENT3D(#166,#20,#168);
#171= IFCLOCALPLACEMENT($,#170);
#172= IFCSITE('0L$0W65fP6aPyqk5jauOMM',#42,'Default',$,$,#171,$,$,.ELEMENT.,(42,21,31,181945),(-71,-3,-24,-263305),106.000090303027,$,$);

#171은 IFCLOCALPLACEMENT Entity를 가리키고 있다.
IfcLocalPlacement Entity는 데이터 모델에서 객체의 위치와 방향을 정의하는 데 사용되는 Entity가 참조하고 있는 Entity를 따라가다보면 (181194.632851008,517941.184846197,0.)로 중심 좌표를 알 수 있다.

  • IFCAXIS2PLACEMENT3D : 3D 공간에서 객체의 위치와 방향을 정의하는 기본적인 좌표계 시스템으로, 원점, z축 방향, x축 방향 정보를 갖고 있다.
  • IFCDIRECTION : 3D 공간에서 방향을 나타내는 단위 벡터로 방향을 나타내는 정규화된 벡터 값 (x, y, z)을 갖고 있다.
  • IFCCARTESIANPOINT : 3D 공간에서 객체의 특정 위치(점, Point)를 나타내며 X, Y, Z 좌표값을 갖고 있다.

- Representation
3D 모델에서 IfcSite를 시각적으로 표현하는 기하학적 표현 정보를 갖고 있다.
메쉬 또는 지형 형상(Surface Representation) 정보를 포함할 수 있다.

- CompositionType
IfcSite가 다른 객체들과 어떤 관계를 갖는지 정의한다.

  • ELEMENT → 독립적인 개별 요소
  • PARTIAL → 더 큰 구조의 일부
  • COMPLEX → 여러 개의 요소로 구성된 복합 구조
  • NOTDEFINED → 정의되지 않음

- RefLatitude
IfcSite의 위도(Latitude, 북위/남위)를 나타낸다.

- RefLongitude
IfcSite의 경도(Longitude, 동경/서경) 을 나타낸다.

- RefElevation
IfcSite의 해발 고도(Elevation, m) 를 나타낸다.

- LandTitileNumber
IfcSite에 대한 법적 토지 소유권(Land Title Number) 정보를 갖고 있다.
토지 소유권을 식별하는 법적 번호가 들어가며 등기 정보와 연결될 수 있다.

- SiteAddress
IfcSite의 물리적 주소(Site Address) 를 나타낸다.
IfcPostalAddress Entity와 연결되며 해당 Entity를 통해 국가, 도시, 도로명, 우편번호 등을 포함한 주소 정보를 제공한다.


3. IfcBuilding

IfcBuilding은 건물(Building) 을 나타내는 IFC 엔티티로, 건축 프로젝트에서 하나의 독립적인 건물 단위를 정의한다.

#137= IFCBUILDING(
	'0L$0W65fP6aPyqk5jauOML',
	#42,'',$,$,
	#33,$,
	'',
	.ELEMENT.,$,$,
	#133
);

- ElevationOfRefHeight
건물 내부의 기준 높이(Reference Height) 를 정의한다.
건물의 기본 바닥 높이를 설정하는 데 사용된다.
IfcBuildingStorey (층)과의 높이 차이를 결정하는 기준점이 된다.

- ElevationOfTerrain
건물이 위치한 지형의 평균 고도를 나타내며 주변 지형의 높이를 결정한다.
건물의 입지와 높이 비교에 활용할 수 있다.

- BuildingAddress
IfcBuilding의 물리적 주소를 나타냅니다.
건물의 위치 정보가 들어가 있으며 국가, 도시, 도로명, 우편번호 등의 주소 정보 포함한다.

#133= IFCPOSTALADDRESS($,$,$,$,('## Street\X\0D\X\0ACity, State  Zip'),$,'','Boston','','MA');

4. IfcBuildingStorey

IfcBuildingStorey는 건물의 특정 층(Building Storey) 을 나타내는 IFC Entity이다.
IfcBuilding 내에서 여러 개의 IfcBuildingStorey 가 계층적으로 배치되며, 각 층의 높이, 명칭, 위치 등을 정의한다.

#152= IFCBUILDINGSTOREY(
	'0L$0W65fP6aPyqk5kR7N54',
	#42,
	'G.L\X2\CE35\X0\(EL.-0.610)',$,
	'Level:8mm Head',
	#150,$,
	'G.L\X2\CE35\X0\(EL.-0.610)',
	.ELEMENT.
	,-0.61
);

- Elevation
층의 절대 높이(Elevation, m) 를 나타낸다.
건물 내에서 특정 층이 위치하는 절대 좌표(Z 값)이며 IfcBuilding의 ElevationOfRefHeight을 기준으로 계산될 수도 있다.



IFC를 공통적으로 이루는 큰 뼈대느낌의 Entity들을 살펴봤다.
큰 뼈대 안에 건물들을 구성하는 벽, 문, 지붕 등의 객체들이 포함되어있다.
IFC 안의 구조들이 어떤 식으로 짜여있는지, 어떤 정보들을 갖고 있는지는 대략적으로 알았으니 BIM/GIS 통합을 위해 어떠한 것을 고민해볼지 다루겠다.



참고
강태욱 - BIM 표준과 구현
buildingSmart Entity 문서

profile
안녕하세요 :) BIM, GIS, AI 분야에 관심이 있습니다.

0개의 댓글