SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Downloaden Sie, um offline zu lesen
IFC 이해에 필요한 개념
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
BIM이란?
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
BIM(Building Information Modeling)은 건설 전 분야에서 시설물 객체의 물리적 혹은 기능적 특성에 의하여, 시설물 수명주기 동안
의사결정을 하는데 신뢰할 수 있는 근거를 제공하는 디지털 모델과 그 의 작성을 위한 업무절차를 포함하여 지칭한다.
즉, 건물 정보 통합 모델링이다.
-> 종이 기반의 결과물들을 3D 가상 모델에 디지털 정보를 입력시켜 원하는 성과물을 만들어 낸다.
-> 종이 -> 디지털 데이터
3D 가상 모델 == BIM 모델
역사
1. 건물을 지으려면 신뢰할 수 있는 정보인 도면이 필요하다. 우리는 도면을 처음에는 직접 물리적으로 만들었다.
2. CAD 라는 것이 나오면서 도면을 디지털로 표현하였다.
3. 3D 모델링 개념이 나오면서, 복잡함이 수반되었고 조금 더 확실한 표현법이 필요했다. 그것을 표현하는 모델 BIM이 나타났다.
4. BIM은 즉 모델 하나를 의미한다기 보다는 하나의 전체적인 개념으로서 이해해야 한다.
개념
BIM은 단순한 3D 모델이 아니다. 오히려 개념적으로는 실시 설계 도면에 가깝다. 하지만 위에서 언급 하였듯이 2D도면에는 분
명한 한계를 지니고 있다. 우리는 새로운 시대에 발맞추어 많은 환경이 변하고 있고 세상이 변화함에 따라 표현법도 달라져야 한
다.
그런 의미에서 BIM은 정보화 시대의 새로운 도면이다. 라고 말할 수 있다.
BIM(Building Information Modeling)은 디지털 방식으로 건물의 하나 또는 그 이상의 정확한 가상 모델을 생성하는 기술입니
다.
-> 통합적인 지표가 됨으로써 Workflow를 향상시킴
http://www.buildingsmart-tech.org/
IFC란?
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
IFC는 BIM 데이터를 교환하기 위한 완전하고 안정적인 개방형 및 국제 표준이다. (데이터 모델 표준)
특징
- XML 형식
- 객체지향적인 구조이다.
- IFC4 Add2 버전까지 개발
- IFC는 Industry Foundation Classes 이다.
- STEP은 (Standard for the Exchange of Product data)은 제품 데이터의 물리적, 기능적 특성을 기술하기 위한 국제표준이다.
- 각각 Terms, Process, Data 표준을 정의한다. 그 중에 IFC는 Data 표준 정의
IFC 구조
UML로 표현하면 다음과 같다.
http://www.buildingsmart-tech.org/
IFC Query, IFC++란?
IFC Query는 그냥 얘네 팀 이름.
얘네가 배포한 exe 파일 이름도 IFC Query.
IFC++은 IFC STEP 파일을 읽고 쓰게 해주는 C++ Class Model이다.
특징으로
- 스마트 포인터 이용.
- 멀티 코어.
- IFC 모든 데이터 모델 포함.
- QT와 OpenSceneGraph를 이용한 Viewer 제공.
- IFC를 중심으로 모든 종류의 어플리케이션을 위한 시작점으로 사용가능. (내 어플리케이션에 소스 수정으로 인한 포팅 가능)
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
http://www.ifcquery.com/
Carve란?
Carve는 빠르고 견고한 구조적 솔리드 기하학 라이브러리이다.
Carve는 두 개의 임의의 다각형 메쉬 간에 부울 연산을 수행하도록 설계된 C++ 라이브러리이다.
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
https://github.com/VTREEM/Carve
QT란?
QT는 GUI 프로그래밍에 이용되는 C++ 개발 프레임워크이다.
멀티 플랫폼 개발이 가능하며, 임베디드 환경에서 고급스러운 GUI 요구사항을 만족시키기에 적합하다.
개념
Qt은 GUI 개발의 편리성에 더해 응용 프로그램 개발 전반을 포괄하는 종합적인 개발 프레임워크 입니다. 예를 들어 프로그램 개
발에 필수 적인 멀티 스레드 프로세스 통신, 네트워크, OpenGL의 3D 그래픽, HTML5 지원 통합 웹엔진, XML 데이터베이스 등
C++ 개발자가 개발 중에 마주하게 되는 다양한 구현 요구 사항을 만족시켜 줄 수 있도록 편리하게 이용할 수 있는 1,300 여 개
의 다양한 라이브러리를 갖춘 Qt 는 이 모두를 모듈형식으로 기능별로 제공합니다.
멀티 플랫폼
개발자는 이 모듈을 활용하여 한 번 개발을 하면 그 소스 코드를 재 컴파일 하는 것만으로 멀티 플랫폼으로 전개가 가능합니다.
하나의 데스크탑 용으로 개발한 소스코드를 처음부터 다시 개발할 필요 없이 iOS나 Android 용으로 각각 컴파일 하면 해당 기기
에서 사용할 수 있는 것 입니다.
QT Creater
컴파일 과정 역시 Qt 에서 제공하는 IDE인 ‘Qt Creator’를 이용해 직관적이고 편리하게 작업할 수 있습니다.
GUI 화면을 직접 디자인하고 이를 개발코드와 직접 연결시킬 수 있는 ‘Qt Designer’,
GUI 개발을 편리하게 해주는 Qt 자체의 스크립트 언어인 ‘QML’
UI개발을 할 수 있는 ‘Qt Quick
간단한 절차만으로 제품의 국제화, 현지화를 실수 할 수 있는 ‘Qt Linguist’
Qt로 제작된 GUI 화면의 상세한 리소스 프로파일링이 가능한 ‘Qt Quick Profiler’,
Qt 라이브러리에 대한 풍부하고 상세한 도움말 문서인 ‘Qt Assistant’
그리고 이 모든 것들을 통합하는 개발 환경(IDE)으로 ‘Qt Creator’를 제공하고 있습니다.
C++ 환경에 적합
개발자는 Qt Creator를 이용하면 C++와 QML 애플리케이션의 코딩과 빌드 그리고 디버깅을 편리하게 진행할 수 있으며 Qt
Designer를 활용해 디자인 설계도 할 수 있습니다. 또한 Visual Stuido나 Eclipse등 친숙한 개발 환경에 플러그인 하여 이용할
수도 있습니다.
사용분야
CAD/CAM/EDA 애니메이션/CG/게임 개발 등의 데스크탑 에플리케이션 분야에서 널리 쓰이고 있으며 최근에는 자동차 정보기
기나 의료/산업기기에 사용되고 있습니다.
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
https://www.qt.io/
OpenSceneGraph란?
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
http://www.openscenegraph.org/
OpenSceneGraph는 시각적 시뮬레이션에서 가성 현실 및 증강 현실, 의료 및 과학 시각화, 교육 및 게임에 이르기까지 응용 프로그램
개발자가 사용하는 오픈 소스 실시간 미들웨어이다.
멀티 플랫폼
Linux, Windows, Android, FreeBSD, Mac OSX, Solaris, HP-UX, AIX, PlayStation 2, iOS 등 다양한 플랫폼으로 신속하게
포팅 될 수 있습니다.
강점
OpenSceneGraph의 핵심 강점은 성능, 확장 성, 이식성 및 모든 기능을 갖춘 씬 그래프 사용과 관련된 생산성 향상입니
다.
C++ 환경에 적합
OpenSceneGraph는 컨테이너의 표준 템플릿 라이브러리 (STL)를 활용하여 Standard C ++로 작성되었습니다.
사용분야
시각화 시뮬레이션에 필요한 모든 분야
Boost란?
Boost는 C++ 외부 유틸 라이브러리이다.
자바는 자바의 원칙상 플랫폼에 독립적이어야 하므로, 표준 API 안에서 개발에 필요한 기능한 많은 기능을 제공한다.
반면에, C++은 언어와 API가 별개이다. 때문에 개발 할 때 마다 필요한 기능을 직접 개발해야 하는 일이 빈번했는데, Boost는 이
런 문제의식을 배경으로, 범용적으로 빈번하게 사용되는 유틸리티들을 제공하는 라이브러리(프로젝트)이다.
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
https://www.slideshare.net/OnGameServer/boost-c11?ref=http://www.jiniya.net/wp/archives/11769
자주 사용 되는 Boost 함수들
밑에는 Boost에 대한 설명이 있는 SlideShare
이다.
https://www.boost.org/
CMake란?
CMake는 Cross-Platform-Make으로 기존에 사용되는 Linux 환경에서의 Make의 대용품을 만들기 위한 오픈 소스 프로젝트이다.
더 쉽게 말하면, CMake는 멀티 플랫폼을 위한 빌드 지원 시스템이다.
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
https://cmake.org/
https://www.tuwlab.com/ece/27234
http://chiccoder.tistory.com/46
좋은 예제 URL ->
관리가 편함
CMake를 사용하면 의존성 정보를 일일이 기술해 주지 않아도 되므로 빌드 스크립트의 관리 측면에서 매우 효율적입니다.
의존성 정보를 스스로 파악함
CMake도 Make와 마찬가지로 의존성 검사를 해서 Incremental Build를 수행하지만, 가장 큰 차이점은 CMake는 소스파일
내부까지 들여다보고 분석해서 의존성 정보를 스스로 파악한다는 점입니다.
또한, Makefile에서는 빌드 중간생성물인 Object파일들의 이름과 의존성 정보까지 모두 기술해 줘야 하지만, CMake에서는
그럴 필요가 전혀 없습니다. (make clean, 같은 것들도 다 자동적으로 생성)
Makefile의 단점을 해소한 것
그렇다고 CMake가 Make보다 훨씬 좋고 편리한 전혀 다른 오버테크놀러지의 새로운 무언가[!]라는게 아니고, Makefile의 다
소 지저분한 루틴들을 추상화(Abstraction)해서 보다 직관적으로 빌드 과정을 기술해주는 것입니다.
결론
즉, CMake는 Makefile을 보다 쉽게 기술해 주는 일종의 Meta-Makefile이라고 할 수 있습니다.
CMake로 프로젝트를 관리하더라도 결국 최종 빌드는 Make와 마찬가지로 make 명령으로 수행합니다.
IFC++,
SimpleViewerQT
Build하기
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
Window 환경에서 IFC++ Build 하기
1. IfcPlusPlus.dll
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
1) IFC++ Download https://github.com/ifcquery/ifcplusplus
2) Boost Library Download https://www.boost.org/users/download/
3) Boost Library를 읽기 위한 BOOST_DIR Path 설정
4) Open IfcPlusPlus.sln with VS2017
5) Complie
6) Get IfcPlusPlusd.dll and IfcPlusPlusd.lib
Window 환경에서 IFC++ Build 하기
2. SimpleViewerExampleQt
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
1) QT Download https://www.qt.io/
2) OpenSceneGraph Download https://github.com/openscenegraph/OpenSceneGraph
3) CMake Download https://cmake.org/download/
4) Run CMake to build OSG
5) Get OSG .dll and .lib
6) set the paths to [ QTDIR, BOOST_DIR, OSG_DIR ]
7) Complie을 위한 3개의 외부 라이브러리 Path 설정 (dll, lib)
8) Complie and Debug
IFC++ 다운
IFC Query는 실행해볼 수 있는 실행파일, Build하고 싶으면 Git에서 clone해서 앞의 과정을 거쳐야 함
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
Git Clone
https://github.com/ifcquery/ifcplusplus
1. 아이디 가입하라면 가입하고 쭉 Next 해서 다운
2. 최신 버전 선택
3. D 드라이버에 다운 받았음
http://iam777.tistory.com/397 -> 설치 법
QT 다운
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
https://www.qt.io/
https://github.com/openscenegraph/OpenSceneGraph
OpenSceneGraph 다운
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
Git Clone
https://www.boost.org/users/download/
다운로드 후 압축 풀기
Boost 다운
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
https://cmake.org/download/
CMake 다운
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
IFC++ Build
Boost Path 설정
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
1. BOOST_DIR Path 설정
IFC++ Build
Dll, Lib 파일 Get
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
2. Get IfcPlusPlusd.dll and IfcPlusPlusd.lib
OpenSceneGraph Build
CMake를 이용
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
1. Binary 실행 파일은 Build 디렉토리를 따로 만듬
2. 환경을 고를 시, 꼭 Win64에 맞춰야 함! -> CIM 환경
3. Configure, Generate, Open Project 순으로 Click
Win64 설정
OpenSceneGraph Build
Visual Studio All Build
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
4. All Build를 build 함 (꽤 오래 걸림)
OpenSceneGraph Build
#define 파일을 헤더파일에 옮겨 줌
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
5. Build/include/osg , Build/include/OpenThreads에 만들어진 파일 들을 각각 해당하는 Include 파일에 넣어준다.
6. Build에 만들어진 저 파일들은 #define 정의를 해주는 부분인데, 헤더파일에서 저것을 읽으려면 빌드 후 옮겨줘야 한다.
옮겨야 됨!
SimpleViewerExampleQt Build
Visual Studio 이용
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
1. SimpleViewerExampleQt.vcxproj.user 파일에 QTDIR, BOOST_DIR, OSG_DIR 지정
SimpleViewerExampleQt Build
Visual Studio 이용
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
2. 프로젝트 설정 > C/C++ > 일반 > 추가 포함 디렉터리 $(OSG_DIR)lib 을 -> $(OSG_DIR)buildlib 으로 변경
OSG를 CMake를 이용하여 Build에 따로 바이너리 파일을 모아놨기 때문에 맞는 설정을 해 줌
SimpleViewerExampleQt Build
Visual Studio 이용
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
3. 프로젝트 설정 > 링커 > 입력 > 추가종속성에 freetype28.lib, TKernel.lib, TK 어쩌구 하는 애들 다 삭제 (Debug, Release 둘 다)
FreeType은 글꼴을 렌더링 할 수 있는 자유롭게 사용할 수 있는 소프트웨어 라이브러리입니다. (필요 없음)
4. 한글경로 들어간 파일 안 열리는 오류 수정. 소스 내 utilIfcPlusPlus 폴더에 수정된 파일 올려놓음
SimpleViewerExampleQt Build
Visual Studio 이용
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
5. 프로젝트 실행을 위한 dll 파일을 연결해줌 (그냥 실행 시 osg dll을 못 찾음)
구성 속성 > 디버깅 > 환경 에서 OSG dll PATH 추가
PATH=C:midasit_sourceifcOpenSceneGraphbuildbin/;
기타
1. CIM에 외부 라이브러리 Import 하기
(여기서는 IFC++)
2. 각종 필기
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
IFC++ Import (외부 Lib Import 시 할 것 들)
Lib 파일 Import
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
1. 링커 > 일반 > 추가 라이브러리 디렉터리
2. 링커 > 입력 > 추가 종속성
헤더 파일 Import
1. C/C++ > 일반 > 추가 포함 디렉터리
dll 파일 Import
방법 1. 지속적인 개발 필요할 시
- 구성 속성 > 디버깅 > 환경 > 편집
방법 2. Release 시
- 그냥 Release 파일에 dll 파일과 함께 Release
https://wnsgml972.github.io/setting/dll_lib.html
Import 설명 url
노트
IFC++ 파일 수정 시 우리가 사용할 것은 lib파일과 include들 아니면 실행할 시 dll 파일
과제 : IFC Geometry Converter
Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
IFC++ 파일을 수정할 시 dll 파일이 자동으로 SimpleViewerQT의 bin 즉 exe 파일과 같은 경로에 들어가짐
-> ReaderSTEP 고쳤는데 알아서 dll 파일 들어가진 거 보고 확인
Visual Studio User Macro 정의
각종 Path 정리에 유용한 User Macro를 *.vcxproj.user 에 정의할 수 있다.
예를 들어 여기에 사용하려는 Lib의 path를 <LIB_PATH>C://</LIB_PATH> 로 정의해놓고 프로젝트 속성상에서 $(LIB_PATH)
로 사용할 수 있다.
IFC++를 Build하는 과정에서도 다음과 같은 방법을 사용했다.
Visual Studio 프로젝트 속성 중, 외부 라이브러리 import 노트
Visual Studio 기본 설정
VC++ 디렉터리 > 포함 디렉터리
VC++ 디렉터리 > 라이브러리 디렉터리
추가 include 설정
C/C++ > 일반 > 추가 포함 디렉터리
추가 lib 설정
링커 > 일반 > 추가 라이브러리 디렉터리
링커 > 입력 > 추가 종속성
추가 dll 설정
디버깅 > 환경

Weitere ähnliche Inhalte

Was ist angesagt?

Adventures with Podman and Varlink
Adventures with Podman and VarlinkAdventures with Podman and Varlink
Adventures with Podman and VarlinkJeremy Brown
 
Git 기본개념과 사용법 그리고 어플리케이션
Git 기본개념과 사용법 그리고 어플리케이션Git 기본개념과 사용법 그리고 어플리케이션
Git 기본개념과 사용법 그리고 어플리케이션Dabi Ahn
 
황규영 포트폴리오
황규영 포트폴리오황규영 포트폴리오
황규영 포트폴리오Q_0
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019devCAT Studio, NEXON
 
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트Amazon Web Services Korea
 
Multiplatform architecture ribs in swift
Multiplatform architecture ribs in swiftMultiplatform architecture ribs in swift
Multiplatform architecture ribs in swiftNAVER Engineering
 
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기Kiyoung Moon
 
[IGC 2016] 골드로쉬 김현석 - 왜 항상 기획자는 욕을 들어야만 하는 걸까? –게임 기획의 포지션 변화-
[IGC 2016] 골드로쉬 김현석 - 왜 항상 기획자는 욕을 들어야만 하는 걸까? –게임 기획의 포지션 변화-[IGC 2016] 골드로쉬 김현석 - 왜 항상 기획자는 욕을 들어야만 하는 걸까? –게임 기획의 포지션 변화-
[IGC 2016] 골드로쉬 김현석 - 왜 항상 기획자는 욕을 들어야만 하는 걸까? –게임 기획의 포지션 변화-강 민우
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Gitatishgoswami
 
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리강 민우
 
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git민태 김
 
애자일 스크럼과 JIRA
애자일 스크럼과 JIRA 애자일 스크럼과 JIRA
애자일 스크럼과 JIRA Terry Cho
 
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁Yi-kwon Hwang
 
Docker 101 - Nov 2016
Docker 101 - Nov 2016Docker 101 - Nov 2016
Docker 101 - Nov 2016Docker, Inc.
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?흥배 최
 
Inyección de dependencias en Node.js con InversifyJS & TypeScript
Inyección de dependencias en Node.js con  InversifyJS & TypeScriptInyección de dependencias en Node.js con  InversifyJS & TypeScript
Inyección de dependencias en Node.js con InversifyJS & TypeScriptRemo Jansen
 
Domain-Driven Design with ASP.NET MVC
Domain-Driven Design with ASP.NET MVCDomain-Driven Design with ASP.NET MVC
Domain-Driven Design with ASP.NET MVCSteven Smith
 

Was ist angesagt? (20)

DevOps 3 - Docker.pdf
DevOps 3 - Docker.pdfDevOps 3 - Docker.pdf
DevOps 3 - Docker.pdf
 
Adventures with Podman and Varlink
Adventures with Podman and VarlinkAdventures with Podman and Varlink
Adventures with Podman and Varlink
 
Git 기본개념과 사용법 그리고 어플리케이션
Git 기본개념과 사용법 그리고 어플리케이션Git 기본개념과 사용법 그리고 어플리케이션
Git 기본개념과 사용법 그리고 어플리케이션
 
황규영 포트폴리오
황규영 포트폴리오황규영 포트폴리오
황규영 포트폴리오
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
 
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
 
Multiplatform architecture ribs in swift
Multiplatform architecture ribs in swiftMultiplatform architecture ribs in swift
Multiplatform architecture ribs in swift
 
Git and github
Git and githubGit and github
Git and github
 
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
 
[IGC 2016] 골드로쉬 김현석 - 왜 항상 기획자는 욕을 들어야만 하는 걸까? –게임 기획의 포지션 변화-
[IGC 2016] 골드로쉬 김현석 - 왜 항상 기획자는 욕을 들어야만 하는 걸까? –게임 기획의 포지션 변화-[IGC 2016] 골드로쉬 김현석 - 왜 항상 기획자는 욕을 들어야만 하는 걸까? –게임 기획의 포지션 변화-
[IGC 2016] 골드로쉬 김현석 - 왜 항상 기획자는 욕을 들어야만 하는 걸까? –게임 기획의 포지션 변화-
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
 
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
 
애자일 스크럼과 JIRA
애자일 스크럼과 JIRA 애자일 스크럼과 JIRA
애자일 스크럼과 JIRA
 
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
 
Docker 101 - Nov 2016
Docker 101 - Nov 2016Docker 101 - Nov 2016
Docker 101 - Nov 2016
 
Git commands
Git commandsGit commands
Git commands
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?
 
Inyección de dependencias en Node.js con InversifyJS & TypeScript
Inyección de dependencias en Node.js con  InversifyJS & TypeScriptInyección de dependencias en Node.js con  InversifyJS & TypeScript
Inyección de dependencias en Node.js con InversifyJS & TypeScript
 
Domain-Driven Design with ASP.NET MVC
Domain-Driven Design with ASP.NET MVCDomain-Driven Design with ASP.NET MVC
Domain-Driven Design with ASP.NET MVC
 

Ähnlich wie ifcpp build guide

[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트iFunFactory Inc.
 
C++ GUI 라이브러리 소개: Qt & Nana
C++ GUI 라이브러리 소개: Qt & NanaC++ GUI 라이브러리 소개: Qt & Nana
C++ GUI 라이브러리 소개: Qt & NanaLazy Ahasil
 
델파이 소스코드의재발견
델파이 소스코드의재발견델파이 소스코드의재발견
델파이 소스코드의재발견Devgear
 
DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기SeungYong Baek
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsminseok kim
 
Pivotal 101세미나 발표자료 (PAS,PKS)
Pivotal 101세미나 발표자료 (PAS,PKS) Pivotal 101세미나 발표자료 (PAS,PKS)
Pivotal 101세미나 발표자료 (PAS,PKS) VMware Tanzu Korea
 
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_계획과 검토
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_계획과 검토[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_계획과 검토
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_계획과 검토Devgear
 
GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축철구 김
 
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.효근 박
 
KGC10 - Visual C++10과 디버깅
KGC10 - Visual C++10과 디버깅KGC10 - Visual C++10과 디버깅
KGC10 - Visual C++10과 디버깅흥배 최
 
Kotlin 2.0을 통해 알아보는 코틀린의 미래
Kotlin 2.0을 통해 알아보는 코틀린의 미래Kotlin 2.0을 통해 알아보는 코틀린의 미래
Kotlin 2.0을 통해 알아보는 코틀린의 미래Leonardo YongUk Kim
 
OCE - Cno 2014 private sector oriented open paas oce
OCE - Cno 2014 private sector oriented open paas   oceOCE - Cno 2014 private sector oriented open paas   oce
OCE - Cno 2014 private sector oriented open paas oceuEngine Solutions
 
락플레이스 OpenShift Q&A 토크쇼 발표자료
락플레이스 OpenShift Q&A 토크쇼 발표자료락플레이스 OpenShift Q&A 토크쇼 발표자료
락플레이스 OpenShift Q&A 토크쇼 발표자료rockplace
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재Hankyo
 
임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입
임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입
임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입Chanjin Park
 
18.10.05 Fusion 360 Meetup in Busan
18.10.05 Fusion 360 Meetup in Busan18.10.05 Fusion 360 Meetup in Busan
18.10.05 Fusion 360 Meetup in BusanDaniel Kim
 
C++ 개발자와 함께 하는 visual studio 2013
C++ 개발자와 함께 하는 visual studio 2013C++ 개발자와 함께 하는 visual studio 2013
C++ 개발자와 함께 하는 visual studio 2013명신 김
 
Knative로 서버리스 워크로드 구현
Knative로 서버리스 워크로드 구현Knative로 서버리스 워크로드 구현
Knative로 서버리스 워크로드 구현Jinwoong Kim
 
디자인에 이어 코딩까지 AI가 프로그램 개발을 척척?: GitHub Copilot, 어디까지 알아보셨나요
디자인에 이어 코딩까지 AI가 프로그램 개발을 척척?: GitHub Copilot, 어디까지 알아보셨나요디자인에 이어 코딩까지 AI가 프로그램 개발을 척척?: GitHub Copilot, 어디까지 알아보셨나요
디자인에 이어 코딩까지 AI가 프로그램 개발을 척척?: GitHub Copilot, 어디까지 알아보셨나요Ian Choi
 

Ähnlich wie ifcpp build guide (20)

[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
 
C++ GUI 라이브러리 소개: Qt & Nana
C++ GUI 라이브러리 소개: Qt & NanaC++ GUI 라이브러리 소개: Qt & Nana
C++ GUI 라이브러리 소개: Qt & Nana
 
델파이 소스코드의재발견
델파이 소스코드의재발견델파이 소스코드의재발견
델파이 소스코드의재발견
 
DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vs
 
Pivotal 101세미나 발표자료 (PAS,PKS)
Pivotal 101세미나 발표자료 (PAS,PKS) Pivotal 101세미나 발표자료 (PAS,PKS)
Pivotal 101세미나 발표자료 (PAS,PKS)
 
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_계획과 검토
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_계획과 검토[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_계획과 검토
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_계획과 검토
 
GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축
 
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.
 
KGC10 - Visual C++10과 디버깅
KGC10 - Visual C++10과 디버깅KGC10 - Visual C++10과 디버깅
KGC10 - Visual C++10과 디버깅
 
Sencha ExtJS를 활용한 Big Data Platform 개발 사례
Sencha ExtJS를 활용한 Big Data Platform 개발 사례 Sencha ExtJS를 활용한 Big Data Platform 개발 사례
Sencha ExtJS를 활용한 Big Data Platform 개발 사례
 
Kotlin 2.0을 통해 알아보는 코틀린의 미래
Kotlin 2.0을 통해 알아보는 코틀린의 미래Kotlin 2.0을 통해 알아보는 코틀린의 미래
Kotlin 2.0을 통해 알아보는 코틀린의 미래
 
OCE - Cno 2014 private sector oriented open paas oce
OCE - Cno 2014 private sector oriented open paas   oceOCE - Cno 2014 private sector oriented open paas   oce
OCE - Cno 2014 private sector oriented open paas oce
 
락플레이스 OpenShift Q&A 토크쇼 발표자료
락플레이스 OpenShift Q&A 토크쇼 발표자료락플레이스 OpenShift Q&A 토크쇼 발표자료
락플레이스 OpenShift Q&A 토크쇼 발표자료
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입
임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입
임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입
 
18.10.05 Fusion 360 Meetup in Busan
18.10.05 Fusion 360 Meetup in Busan18.10.05 Fusion 360 Meetup in Busan
18.10.05 Fusion 360 Meetup in Busan
 
C++ 개발자와 함께 하는 visual studio 2013
C++ 개발자와 함께 하는 visual studio 2013C++ 개발자와 함께 하는 visual studio 2013
C++ 개발자와 함께 하는 visual studio 2013
 
Knative로 서버리스 워크로드 구현
Knative로 서버리스 워크로드 구현Knative로 서버리스 워크로드 구현
Knative로 서버리스 워크로드 구현
 
디자인에 이어 코딩까지 AI가 프로그램 개발을 척척?: GitHub Copilot, 어디까지 알아보셨나요
디자인에 이어 코딩까지 AI가 프로그램 개발을 척척?: GitHub Copilot, 어디까지 알아보셨나요디자인에 이어 코딩까지 AI가 프로그램 개발을 척척?: GitHub Copilot, 어디까지 알아보셨나요
디자인에 이어 코딩까지 AI가 프로그램 개발을 척척?: GitHub Copilot, 어디까지 알아보셨나요
 

Mehr von JUNHEEKIM27

전략적 사고 : 2W1H
전략적 사고 : 2W1H전략적 사고 : 2W1H
전략적 사고 : 2W1HJUNHEEKIM27
 
2018 Namyangju IoT Hackathon
2018 Namyangju IoT Hackathon2018 Namyangju IoT Hackathon
2018 Namyangju IoT HackathonJUNHEEKIM27
 
2018 tech trends_and_present_report
2018 tech trends_and_present_report2018 tech trends_and_present_report
2018 tech trends_and_present_reportJUNHEEKIM27
 
Linux ut-broker-install
Linux ut-broker-installLinux ut-broker-install
Linux ut-broker-installJUNHEEKIM27
 

Mehr von JUNHEEKIM27 (7)

Errc
ErrcErrc
Errc
 
Oasis
OasisOasis
Oasis
 
전략적 사고 : 2W1H
전략적 사고 : 2W1H전략적 사고 : 2W1H
전략적 사고 : 2W1H
 
Etri Retrospect
Etri RetrospectEtri Retrospect
Etri Retrospect
 
2018 Namyangju IoT Hackathon
2018 Namyangju IoT Hackathon2018 Namyangju IoT Hackathon
2018 Namyangju IoT Hackathon
 
2018 tech trends_and_present_report
2018 tech trends_and_present_report2018 tech trends_and_present_report
2018 tech trends_and_present_report
 
Linux ut-broker-install
Linux ut-broker-installLinux ut-broker-install
Linux ut-broker-install
 

ifcpp build guide

  • 1. IFC 이해에 필요한 개념 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
  • 2. BIM이란? 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake BIM(Building Information Modeling)은 건설 전 분야에서 시설물 객체의 물리적 혹은 기능적 특성에 의하여, 시설물 수명주기 동안 의사결정을 하는데 신뢰할 수 있는 근거를 제공하는 디지털 모델과 그 의 작성을 위한 업무절차를 포함하여 지칭한다. 즉, 건물 정보 통합 모델링이다. -> 종이 기반의 결과물들을 3D 가상 모델에 디지털 정보를 입력시켜 원하는 성과물을 만들어 낸다. -> 종이 -> 디지털 데이터 3D 가상 모델 == BIM 모델 역사 1. 건물을 지으려면 신뢰할 수 있는 정보인 도면이 필요하다. 우리는 도면을 처음에는 직접 물리적으로 만들었다. 2. CAD 라는 것이 나오면서 도면을 디지털로 표현하였다. 3. 3D 모델링 개념이 나오면서, 복잡함이 수반되었고 조금 더 확실한 표현법이 필요했다. 그것을 표현하는 모델 BIM이 나타났다. 4. BIM은 즉 모델 하나를 의미한다기 보다는 하나의 전체적인 개념으로서 이해해야 한다. 개념 BIM은 단순한 3D 모델이 아니다. 오히려 개념적으로는 실시 설계 도면에 가깝다. 하지만 위에서 언급 하였듯이 2D도면에는 분 명한 한계를 지니고 있다. 우리는 새로운 시대에 발맞추어 많은 환경이 변하고 있고 세상이 변화함에 따라 표현법도 달라져야 한 다. 그런 의미에서 BIM은 정보화 시대의 새로운 도면이다. 라고 말할 수 있다. BIM(Building Information Modeling)은 디지털 방식으로 건물의 하나 또는 그 이상의 정확한 가상 모델을 생성하는 기술입니 다. -> 통합적인 지표가 됨으로써 Workflow를 향상시킴 http://www.buildingsmart-tech.org/
  • 3. IFC란? 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake IFC는 BIM 데이터를 교환하기 위한 완전하고 안정적인 개방형 및 국제 표준이다. (데이터 모델 표준) 특징 - XML 형식 - 객체지향적인 구조이다. - IFC4 Add2 버전까지 개발 - IFC는 Industry Foundation Classes 이다. - STEP은 (Standard for the Exchange of Product data)은 제품 데이터의 물리적, 기능적 특성을 기술하기 위한 국제표준이다. - 각각 Terms, Process, Data 표준을 정의한다. 그 중에 IFC는 Data 표준 정의 IFC 구조 UML로 표현하면 다음과 같다. http://www.buildingsmart-tech.org/
  • 4. IFC Query, IFC++란? IFC Query는 그냥 얘네 팀 이름. 얘네가 배포한 exe 파일 이름도 IFC Query. IFC++은 IFC STEP 파일을 읽고 쓰게 해주는 C++ Class Model이다. 특징으로 - 스마트 포인터 이용. - 멀티 코어. - IFC 모든 데이터 모델 포함. - QT와 OpenSceneGraph를 이용한 Viewer 제공. - IFC를 중심으로 모든 종류의 어플리케이션을 위한 시작점으로 사용가능. (내 어플리케이션에 소스 수정으로 인한 포팅 가능) 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake http://www.ifcquery.com/
  • 5. Carve란? Carve는 빠르고 견고한 구조적 솔리드 기하학 라이브러리이다. Carve는 두 개의 임의의 다각형 메쉬 간에 부울 연산을 수행하도록 설계된 C++ 라이브러리이다. 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake https://github.com/VTREEM/Carve
  • 6. QT란? QT는 GUI 프로그래밍에 이용되는 C++ 개발 프레임워크이다. 멀티 플랫폼 개발이 가능하며, 임베디드 환경에서 고급스러운 GUI 요구사항을 만족시키기에 적합하다. 개념 Qt은 GUI 개발의 편리성에 더해 응용 프로그램 개발 전반을 포괄하는 종합적인 개발 프레임워크 입니다. 예를 들어 프로그램 개 발에 필수 적인 멀티 스레드 프로세스 통신, 네트워크, OpenGL의 3D 그래픽, HTML5 지원 통합 웹엔진, XML 데이터베이스 등 C++ 개발자가 개발 중에 마주하게 되는 다양한 구현 요구 사항을 만족시켜 줄 수 있도록 편리하게 이용할 수 있는 1,300 여 개 의 다양한 라이브러리를 갖춘 Qt 는 이 모두를 모듈형식으로 기능별로 제공합니다. 멀티 플랫폼 개발자는 이 모듈을 활용하여 한 번 개발을 하면 그 소스 코드를 재 컴파일 하는 것만으로 멀티 플랫폼으로 전개가 가능합니다. 하나의 데스크탑 용으로 개발한 소스코드를 처음부터 다시 개발할 필요 없이 iOS나 Android 용으로 각각 컴파일 하면 해당 기기 에서 사용할 수 있는 것 입니다. QT Creater 컴파일 과정 역시 Qt 에서 제공하는 IDE인 ‘Qt Creator’를 이용해 직관적이고 편리하게 작업할 수 있습니다. GUI 화면을 직접 디자인하고 이를 개발코드와 직접 연결시킬 수 있는 ‘Qt Designer’, GUI 개발을 편리하게 해주는 Qt 자체의 스크립트 언어인 ‘QML’ UI개발을 할 수 있는 ‘Qt Quick 간단한 절차만으로 제품의 국제화, 현지화를 실수 할 수 있는 ‘Qt Linguist’ Qt로 제작된 GUI 화면의 상세한 리소스 프로파일링이 가능한 ‘Qt Quick Profiler’, Qt 라이브러리에 대한 풍부하고 상세한 도움말 문서인 ‘Qt Assistant’ 그리고 이 모든 것들을 통합하는 개발 환경(IDE)으로 ‘Qt Creator’를 제공하고 있습니다. C++ 환경에 적합 개발자는 Qt Creator를 이용하면 C++와 QML 애플리케이션의 코딩과 빌드 그리고 디버깅을 편리하게 진행할 수 있으며 Qt Designer를 활용해 디자인 설계도 할 수 있습니다. 또한 Visual Stuido나 Eclipse등 친숙한 개발 환경에 플러그인 하여 이용할 수도 있습니다. 사용분야 CAD/CAM/EDA 애니메이션/CG/게임 개발 등의 데스크탑 에플리케이션 분야에서 널리 쓰이고 있으며 최근에는 자동차 정보기 기나 의료/산업기기에 사용되고 있습니다. 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake https://www.qt.io/
  • 7. OpenSceneGraph란? 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake http://www.openscenegraph.org/ OpenSceneGraph는 시각적 시뮬레이션에서 가성 현실 및 증강 현실, 의료 및 과학 시각화, 교육 및 게임에 이르기까지 응용 프로그램 개발자가 사용하는 오픈 소스 실시간 미들웨어이다. 멀티 플랫폼 Linux, Windows, Android, FreeBSD, Mac OSX, Solaris, HP-UX, AIX, PlayStation 2, iOS 등 다양한 플랫폼으로 신속하게 포팅 될 수 있습니다. 강점 OpenSceneGraph의 핵심 강점은 성능, 확장 성, 이식성 및 모든 기능을 갖춘 씬 그래프 사용과 관련된 생산성 향상입니 다. C++ 환경에 적합 OpenSceneGraph는 컨테이너의 표준 템플릿 라이브러리 (STL)를 활용하여 Standard C ++로 작성되었습니다. 사용분야 시각화 시뮬레이션에 필요한 모든 분야
  • 8. Boost란? Boost는 C++ 외부 유틸 라이브러리이다. 자바는 자바의 원칙상 플랫폼에 독립적이어야 하므로, 표준 API 안에서 개발에 필요한 기능한 많은 기능을 제공한다. 반면에, C++은 언어와 API가 별개이다. 때문에 개발 할 때 마다 필요한 기능을 직접 개발해야 하는 일이 빈번했는데, Boost는 이 런 문제의식을 배경으로, 범용적으로 빈번하게 사용되는 유틸리티들을 제공하는 라이브러리(프로젝트)이다. 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake https://www.slideshare.net/OnGameServer/boost-c11?ref=http://www.jiniya.net/wp/archives/11769 자주 사용 되는 Boost 함수들 밑에는 Boost에 대한 설명이 있는 SlideShare 이다. https://www.boost.org/
  • 9. CMake란? CMake는 Cross-Platform-Make으로 기존에 사용되는 Linux 환경에서의 Make의 대용품을 만들기 위한 오픈 소스 프로젝트이다. 더 쉽게 말하면, CMake는 멀티 플랫폼을 위한 빌드 지원 시스템이다. 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake https://cmake.org/ https://www.tuwlab.com/ece/27234 http://chiccoder.tistory.com/46 좋은 예제 URL -> 관리가 편함 CMake를 사용하면 의존성 정보를 일일이 기술해 주지 않아도 되므로 빌드 스크립트의 관리 측면에서 매우 효율적입니다. 의존성 정보를 스스로 파악함 CMake도 Make와 마찬가지로 의존성 검사를 해서 Incremental Build를 수행하지만, 가장 큰 차이점은 CMake는 소스파일 내부까지 들여다보고 분석해서 의존성 정보를 스스로 파악한다는 점입니다. 또한, Makefile에서는 빌드 중간생성물인 Object파일들의 이름과 의존성 정보까지 모두 기술해 줘야 하지만, CMake에서는 그럴 필요가 전혀 없습니다. (make clean, 같은 것들도 다 자동적으로 생성) Makefile의 단점을 해소한 것 그렇다고 CMake가 Make보다 훨씬 좋고 편리한 전혀 다른 오버테크놀러지의 새로운 무언가[!]라는게 아니고, Makefile의 다 소 지저분한 루틴들을 추상화(Abstraction)해서 보다 직관적으로 빌드 과정을 기술해주는 것입니다. 결론 즉, CMake는 Makefile을 보다 쉽게 기술해 주는 일종의 Meta-Makefile이라고 할 수 있습니다. CMake로 프로젝트를 관리하더라도 결국 최종 빌드는 Make와 마찬가지로 make 명령으로 수행합니다.
  • 10. IFC++, SimpleViewerQT Build하기 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
  • 11. Window 환경에서 IFC++ Build 하기 1. IfcPlusPlus.dll 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake 1) IFC++ Download https://github.com/ifcquery/ifcplusplus 2) Boost Library Download https://www.boost.org/users/download/ 3) Boost Library를 읽기 위한 BOOST_DIR Path 설정 4) Open IfcPlusPlus.sln with VS2017 5) Complie 6) Get IfcPlusPlusd.dll and IfcPlusPlusd.lib
  • 12. Window 환경에서 IFC++ Build 하기 2. SimpleViewerExampleQt 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake 1) QT Download https://www.qt.io/ 2) OpenSceneGraph Download https://github.com/openscenegraph/OpenSceneGraph 3) CMake Download https://cmake.org/download/ 4) Run CMake to build OSG 5) Get OSG .dll and .lib 6) set the paths to [ QTDIR, BOOST_DIR, OSG_DIR ] 7) Complie을 위한 3개의 외부 라이브러리 Path 설정 (dll, lib) 8) Complie and Debug
  • 13. IFC++ 다운 IFC Query는 실행해볼 수 있는 실행파일, Build하고 싶으면 Git에서 clone해서 앞의 과정을 거쳐야 함 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake Git Clone https://github.com/ifcquery/ifcplusplus
  • 14. 1. 아이디 가입하라면 가입하고 쭉 Next 해서 다운 2. 최신 버전 선택 3. D 드라이버에 다운 받았음 http://iam777.tistory.com/397 -> 설치 법 QT 다운 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake https://www.qt.io/
  • 15. https://github.com/openscenegraph/OpenSceneGraph OpenSceneGraph 다운 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake Git Clone
  • 16. https://www.boost.org/users/download/ 다운로드 후 압축 풀기 Boost 다운 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
  • 17. https://cmake.org/download/ CMake 다운 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
  • 18. IFC++ Build Boost Path 설정 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake 1. BOOST_DIR Path 설정
  • 19. IFC++ Build Dll, Lib 파일 Get 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake 2. Get IfcPlusPlusd.dll and IfcPlusPlusd.lib
  • 20. OpenSceneGraph Build CMake를 이용 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake 1. Binary 실행 파일은 Build 디렉토리를 따로 만듬 2. 환경을 고를 시, 꼭 Win64에 맞춰야 함! -> CIM 환경 3. Configure, Generate, Open Project 순으로 Click Win64 설정
  • 21. OpenSceneGraph Build Visual Studio All Build 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake 4. All Build를 build 함 (꽤 오래 걸림)
  • 22. OpenSceneGraph Build #define 파일을 헤더파일에 옮겨 줌 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake 5. Build/include/osg , Build/include/OpenThreads에 만들어진 파일 들을 각각 해당하는 Include 파일에 넣어준다. 6. Build에 만들어진 저 파일들은 #define 정의를 해주는 부분인데, 헤더파일에서 저것을 읽으려면 빌드 후 옮겨줘야 한다. 옮겨야 됨!
  • 23. SimpleViewerExampleQt Build Visual Studio 이용 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake 1. SimpleViewerExampleQt.vcxproj.user 파일에 QTDIR, BOOST_DIR, OSG_DIR 지정
  • 24. SimpleViewerExampleQt Build Visual Studio 이용 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake 2. 프로젝트 설정 > C/C++ > 일반 > 추가 포함 디렉터리 $(OSG_DIR)lib 을 -> $(OSG_DIR)buildlib 으로 변경 OSG를 CMake를 이용하여 Build에 따로 바이너리 파일을 모아놨기 때문에 맞는 설정을 해 줌
  • 25. SimpleViewerExampleQt Build Visual Studio 이용 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake 3. 프로젝트 설정 > 링커 > 입력 > 추가종속성에 freetype28.lib, TKernel.lib, TK 어쩌구 하는 애들 다 삭제 (Debug, Release 둘 다) FreeType은 글꼴을 렌더링 할 수 있는 자유롭게 사용할 수 있는 소프트웨어 라이브러리입니다. (필요 없음) 4. 한글경로 들어간 파일 안 열리는 오류 수정. 소스 내 utilIfcPlusPlus 폴더에 수정된 파일 올려놓음
  • 26. SimpleViewerExampleQt Build Visual Studio 이용 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake 5. 프로젝트 실행을 위한 dll 파일을 연결해줌 (그냥 실행 시 osg dll을 못 찾음) 구성 속성 > 디버깅 > 환경 에서 OSG dll PATH 추가 PATH=C:midasit_sourceifcOpenSceneGraphbuildbin/;
  • 27. 기타 1. CIM에 외부 라이브러리 Import 하기 (여기서는 IFC++) 2. 각종 필기 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake
  • 28. IFC++ Import (외부 Lib Import 시 할 것 들) Lib 파일 Import 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake 1. 링커 > 일반 > 추가 라이브러리 디렉터리 2. 링커 > 입력 > 추가 종속성 헤더 파일 Import 1. C/C++ > 일반 > 추가 포함 디렉터리 dll 파일 Import 방법 1. 지속적인 개발 필요할 시 - 구성 속성 > 디버깅 > 환경 > 편집 방법 2. Release 시 - 그냥 Release 파일에 dll 파일과 함께 Release https://wnsgml972.github.io/setting/dll_lib.html Import 설명 url
  • 29. 노트 IFC++ 파일 수정 시 우리가 사용할 것은 lib파일과 include들 아니면 실행할 시 dll 파일 과제 : IFC Geometry Converter Key Word : BIM, IFC, IFC Query, IFC++, Carve, QT, OpenSceneGraph, Boost, CMake IFC++ 파일을 수정할 시 dll 파일이 자동으로 SimpleViewerQT의 bin 즉 exe 파일과 같은 경로에 들어가짐 -> ReaderSTEP 고쳤는데 알아서 dll 파일 들어가진 거 보고 확인 Visual Studio User Macro 정의 각종 Path 정리에 유용한 User Macro를 *.vcxproj.user 에 정의할 수 있다. 예를 들어 여기에 사용하려는 Lib의 path를 <LIB_PATH>C://</LIB_PATH> 로 정의해놓고 프로젝트 속성상에서 $(LIB_PATH) 로 사용할 수 있다. IFC++를 Build하는 과정에서도 다음과 같은 방법을 사용했다. Visual Studio 프로젝트 속성 중, 외부 라이브러리 import 노트 Visual Studio 기본 설정 VC++ 디렉터리 > 포함 디렉터리 VC++ 디렉터리 > 라이브러리 디렉터리 추가 include 설정 C/C++ > 일반 > 추가 포함 디렉터리 추가 lib 설정 링커 > 일반 > 추가 라이브러리 디렉터리 링커 > 입력 > 추가 종속성 추가 dll 설정 디버깅 > 환경