第一章 前言
工業基礎分類,即 Industry Foundation Class(簡稱 IFC)標準形成於 1994 年,
是由 BuildingSMART(前身 International Alliance for Interoperability)主導並維護 的用於描述工業模型及其附加數據資料的開放格式。其主要目標是通過統一的模 型 交 換 檔 格 式 標 準 提 升 建 築 、 工 程 和 施 工 ( Architecture, Engineering and Construction,簡稱 AEC)人員的協同工作能力,現在已經發展成最為主流的,應 用於建築資訊塑模(Building Information Modeling,簡稱 BIM)領域內的通用格式
(Laakso et al., 2012)。
根據 BuildingSMART 官方公佈的資訊, CAD 業界的大部分廠商 ——如 Autodesk 、 Bentley 、 Graphisoft—— 旗 下 軟 體 均 已 通 過 IFC 標 準 的 認 證
(BuildingSMART,2017)。而在英國正在推進的 BIM Level2 階段裏也規定了最 終模型交付時,推薦附有 IFC 模型和原始工程模型(Project Information Model)如 rvt 檔(British Standards Institution, 2013),美國總務署在其 BIM 手冊中亦規定了 必須附有 IFC 模型的類似要求(U.S. General Services Administration, 2011)。
IFC 模型的廣泛應用主要歸功於其開放性。在傳統的二維平面設計時代,所有
2
需要開發 20 套插件來實現這個功能,這是不可想像的工作量,且出於商業目的考 慮,他們也不一定願意這麼做。而作為中間格式的 IFC 標準的出現,讓各家公司 可以先專注於自己的軟體與 IFC 格式的交互功能的開發,當他們通過了 IFC 的認 證的時候,則相當於其軟體具備了與其他所有 IFC 認證軟體的模型交換功能,這 樣大大減輕了他們在交互性方面的工作量。
圖 1 IFC 作爲交換模型的連接作用
IFC 現在已發展至 IFC4 Add2 版本,按照時間順序排列即 IFC 第 7 版。但現在 支持最為廣泛,資料最多的版本是 IFC2x3 TC1,本文的研究亦基於其之上。IFC 的架構經過常年發展已經沉澱,所以兩個版本之間的更新内容僅限于類別的增減 和一些 bug 的修復1,對研究的影響甚小。下文開始所有涉及 IFC 的字樣均指代 IFC2x3 版,不再贅述。
1 http://www.buildingsmart-tech.org/implementation/ifc4-implementation/ifc4-vs.-ifc2x3-1
3
1.1 研究背景
本文將 IFC 的“應用”分爲兩類:一是模型交付後的設施維護(Facility Management,簡稱 FM)領域和設計階段的模型交換領域内的應用,如在 Tekla 内 設計鋼結構細節并匯出爲 IFC,再將其匯入 Revit 進行進一步操作。這一類情景里 些情況需要用戶具有一定的編寫程式的能力,而 BuildingSMART 和其他第三方廠 商也確實發佈了一些 IFC 庫(IFC Library)如 ifcjavatoolbox2和 IfcOpenShell3幫助 用戶解析編輯 IFC 模型,用戶藉助這些 IFC 庫完全可以完成上述(但不限于)提
2 http://www.ifctoolsproject.com/
3 http://ifcopenshell.org/
4
圖 2 獲取 IFC 實例幾何外觀的程式碼(Brep 情況下)
而另一方面,絕大部分關於 IFC 應用開發的論文都更注重于最終應用“結果”
的研究,而很少談及實現結果的“過程”——因爲它們有些使用了世面上已有的 IFC 庫或解析器,有些則是自己從零實現程式碼解析 IFC,但無論是前者或後者,
“過程”都不是研究的重點而是手段。這也是爲什麽截至本文成稿,尚沒有論文 對 IFC SDK 進行過研究。
(注:一些商業軟體會抽象 IFC 的結構以契合其内部的物件結構和使用邏輯,
從另一個角度來講,這樣的抽象化等效于 IFC SDK,但考慮到閉源的前提,這些 軟體不在本研究範圍内。同理如 EDMmodelServer4或 IFC Engine DLL5之類的 IFC 庫雖然亦有自己的 IFC API 簡化操作,但其原始碼無法從公開渠道獲得,且 IFC Engine 的 API 爲指令式,與本研究内容差別較大,故不予考慮。)
1.2 研究目的
本文認為 Revit 的成功不僅是依靠於 Autodesk 強大的市場號召力,也是因為 他們設計了一套門檻較低的 Revit API,讓廣大入門級的工程師也可以對 Revit 的
4 http://www.jotneit.no/edmmodelserver-ifc
5 http://www.ifcbrowser.org/
5
功能進行擴展,而這正是 IFC 目前所欠缺的。基於“授人以魚不如授人以漁”的 思想,本研究的目的是希望通過實現一個用戶友好的軟體開發套件(Software Development Kit,簡稱 SDK)來簡化 IFC 模型的相關操作,降低初學者的入門門 檻,減輕使用者的重複勞動,以利 IFC 應用開發。本文認爲涉及 IFC 的操作衹有
Entity IFC 類別、類 Attribute 屬性、參數 Class Java 類別、類別類 Realization 實現
Argument 參數(具有值) Utility 應用、實現
Parameter 參數、參數名
6
本文中涉及到英文字元時,使用了兩種字體:
1)Times New Roman,表示一般英文的字體 2)Consolas,特別用於表達程式碼的字體
1.4 程式碼授權
本研究的 SDK 原始碼托管于 https://github.com/coyove/IfcLibrary,其使用了 ifcjavatoolbox 的 Java 類別庫。ifcjavatoolbox 使用了 CC BY-NC-SA 3.06協議,本 SDK 使用了 GPLv27協議。
對本文的引用遵循一般標準;對本 SDK 及 ifcjavatoolbox 的商業使用需要獲得 ifctoolsproject 的許可。
1.5 使用手冊
本 SDK 的用戶使用手冊需用戶自行使用 javadoc 生成:
javadoc -cp ./src -d ./javadoc org.ifc.toolkit
6 http://creativecommons.org/licenses/by-nc-sa/3.0/de/deed.en/
7 https://www.gnu.org/licenses/gpl-3.0.odt
7