文|中國建筑科學研究院有限公司北京構(gòu)力科技有限公司 李建業(yè) 張杰樂 李欣
STEP 的英文全稱為Standard for the Exchange of Product Model Data,中文名稱為產(chǎn)品模型數(shù)據(jù)交換標準,由ISO 標準化組織維護和發(fā)布。主流的CAD/CAE 軟件,例如Pro/E、CATIA、SolidWorks 等,都對STEP 格式文件提供了完善的支持。 能夠支持STEP 格式文件的導入導出已成為一款優(yōu)秀工業(yè)軟件的重要評價標準[1]。在開源工業(yè)軟件領(lǐng)域、為了體現(xiàn)程序的正確性、易用性、通用性等,無不支持STEP 接口支持,方便與國內(nèi)外主流工程軟件進行模型共享和數(shù)據(jù)互通,最大限度提高軟件價值。
PKPM 在國內(nèi)的建筑結(jié)構(gòu)設(shè)計領(lǐng)域處于領(lǐng)先地位,數(shù)以百萬計的多高層建筑的結(jié)構(gòu)設(shè)計均由該軟件完成設(shè)計,經(jīng)過了充分的理論和實際工程的驗證。PKPM 包括PM、SATWE、JCCAD 等模塊,分別用于不同的設(shè)計流程環(huán)節(jié)。在BIM、CIM 數(shù)字化大背景下,PKPM 推出了基于SQLITE 數(shù)據(jù)庫的開放的JWD 模型數(shù)據(jù)文件,包括節(jié)點、網(wǎng)格、截面、構(gòu)件、荷載、樓層、設(shè)計參數(shù)等模型相關(guān)的全部信息[2]。基于該模型文件,第三方組織和個人可以開發(fā)出各種各樣的數(shù)據(jù)接口程序,豐富完善和創(chuàng)新實現(xiàn)自身的業(yè)務(wù)場景和產(chǎn)品形態(tài)。
本文基于PKPM 開放的JWD 數(shù)據(jù)格式,開發(fā)出了PKPM模型導出STEP格式文件的接口程序,能夠?qū)С隽?、柱、板、墻等常用結(jié)構(gòu)構(gòu)件。通過該接口,能夠?qū)KPM 導入主流的CAD/CAE軟件,能夠進行對象瀏覽和編輯,實現(xiàn)建筑結(jié)構(gòu)BIM 軟件和工業(yè)軟件的數(shù)據(jù)流通。同時,導出的模型文件也可以用于輕量化瀏覽,在云端、web 端實現(xiàn)BIM模型的查看。
本程序使用C++ 編程語言在Visual Studio 2019 集成開發(fā)環(huán)境中進行開發(fā),使用C++ 11 語言標準和標準模板庫。使用的第三方庫包括SQLite官方API,用來讀取和解析sqlite 格式的文件。Assimp 圖形庫,用來保存和導入導出各種格式的文件。
本接口軟件的基本流程圖如圖1所示。首先使用SQLite 官方提供的API 打開要導出為STEP 格式的JWD模型文件,與數(shù)據(jù)庫建立連接。解析和遍歷數(shù)據(jù)庫中所必需的數(shù)據(jù)庫表,包括樓層、網(wǎng)格節(jié)點、構(gòu)件截面、構(gòu)件定位等。將上述數(shù)據(jù)表的解析結(jié)果暫存為中間數(shù)據(jù)格式,并按實際物理關(guān)系組織為模型場景。將中間數(shù)據(jù)格式進行三角化,轉(zhuǎn)換為Assimp 所支持的數(shù)據(jù)格式。三角化也是本程序中比較耗時的部分,因為STEP 沒有很好的支持像PKPM 一樣的參數(shù)化表達,所以需要先離散成STEP 所支持的三角面片格式。然后使用Assimp 提供的接口,指定文件路徑和導出控制參數(shù),將模型導出為STEP 格式文件。最后關(guān)閉數(shù)據(jù)庫文件,清理所用資源,程序運行流程結(jié)束。
圖1 模型解析、導入導出基本流程
JWD 模型文件是基于SQLITE 數(shù)據(jù)庫標準開發(fā)的,所有能支持SQLITE數(shù)據(jù)庫的軟件都可以打開JWD 模型文件。JWD 是由許多張具有實際工程意義的表組成,這也與PKPM 軟件的操作使用邏輯相匹配。例如表示標準層的表名稱為pkpmFloor,表示梁構(gòu)件的表名稱為pkpmBeamSeg,表示節(jié)點的表名稱為pkpmJoint。
本程序用到的JWD 的數(shù)據(jù)表總結(jié)如下。通過從相關(guān)的數(shù)據(jù)表解析和整理數(shù)據(jù),組裝出整體模型場景。主要數(shù)據(jù)表格及關(guān)鍵參數(shù)說明如下。網(wǎng)格表pkpmGrid,起點編號Jt1ID,終點編號Jt2ID。節(jié)點表pkpmJoint,橫坐標X,縱坐標Y。樓層表pkpmFloor,標準層編號StdFlrID,標準層高度Height。梁構(gòu)件表pkpmBeamSeg,標準層編號StdFlrID,截面編號SectID,網(wǎng)格編號GridID。梁截面表pkpmBeamSect,截面幾何參數(shù)字符串ShapeVal。柱構(gòu)件表pkpmColSeg,標準層編號StdFlrID,截面編號SectID,節(jié)點編號JtID。柱截面表pkpmColSect,截面幾何參數(shù)字符串ShapeVal。板構(gòu)件表pkpmSlab,板輪廓線節(jié)點坐標VertexX,VertexY,VertexZ。通過解析以上各數(shù)據(jù)表,生成程序中間格式表達的模型場景。
用SQLite 瀏覽器打開PKPM 生成的JWD 文件,其主要內(nèi)容顯示如圖2所示。可以清楚的看到,JWD 是按照實際的工程和物理含義進行數(shù)據(jù)庫組織的,每種對象類型對應一個獨立的數(shù)據(jù)表,例如pkpmAxis 表保存了軸網(wǎng)相關(guān)的信息。
圖2 JWD 模型文件主要內(nèi)容
在數(shù)字孿生、CIM、BIM 等信息化數(shù)字應用范式中,模型數(shù)據(jù)的無損共享和自由流動一直是研究的重點和難點。業(yè)界提出了數(shù)據(jù)中心、數(shù)據(jù)平臺、數(shù)據(jù)中臺等概念,其核心任務(wù)就是要解決模型數(shù)據(jù)的描述、存儲、傳輸、共享、擴展等一系列實際應用問題。在理想情況下,希望能夠用唯一的數(shù)據(jù)模型涵蓋項目全生命周期和全業(yè)務(wù)參與方的所有應用場景。然而,近十多年的BIM 推廣和應用用事實證明,唯一數(shù)據(jù)模型的思路是不可行的,只有針對項目不同的生命階段、不同的參與方,提供對其有實際應用價值的模型數(shù)據(jù),才能充分發(fā)揮數(shù)字化技術(shù)的最大效能。
本軟件采用Assimp 開源庫作為中間數(shù)據(jù)存儲格式。Assimp 是當前流行的支持大量三維模型數(shù)據(jù)格式導入導出的開源庫,提供與模型無關(guān)的中間數(shù)據(jù)格式表達,支持包括STEP、IGES格式在內(nèi)的模型導入導出。Assimp 完美支持層次結(jié)構(gòu)模型,能夠自頂向下或自底向上組織模型場景。具體落實到建筑結(jié)構(gòu)模型,我們采用構(gòu)件(墻柱梁板)、樓層、單體結(jié)構(gòu)、多塔結(jié)構(gòu)、整體模型的業(yè)務(wù)邏輯順序組織場景。
與JWD 數(shù)據(jù)庫相匹配,程序中建立所需的數(shù)據(jù)類,主要類如表1所示。
表1 主要模型數(shù)據(jù)類
中間數(shù)據(jù)平臺包括節(jié)點、網(wǎng)格等定位信息,截面等幾何尺寸信息,梁柱等構(gòu)件信息,樓層等場景組織信息。每種對象類的主要內(nèi)容如圖3所示。模型Model 由樓層Floor 組成,Model中包含截面Section 數(shù)據(jù)。Floor 中包含節(jié)點Joint 和網(wǎng)格Grid 數(shù)據(jù)。Column、Beam、Slab 由Joint 和Grid 進行定位,并通過Section 進行截面尺寸描述。
圖3 主要數(shù)據(jù)類依賴關(guān)系
?
JWD 中對于構(gòu)件采用截面加定位向量的方式存儲構(gòu)件,無法直接獲取構(gòu)件的頂點坐標及網(wǎng)格連接關(guān)系,因此在導出模型時,需根據(jù)構(gòu)件的截面及定位信息生成三角面片。具體來說,構(gòu)件類添加Mesh 函數(shù),根據(jù)截面節(jié)點坐標在局部系下形成實體拉伸所需基面,然后用構(gòu)件關(guān)聯(lián)的軸網(wǎng)節(jié)點作為拉伸向量拉伸成實體,依次遍歷構(gòu)件實體的每個面進行三角化,從而形成導出模型所需要的三角網(wǎng)。對梁柱板墻等構(gòu)件依次執(zhí)行Mesh 函數(shù),形成整個模型的三角網(wǎng)數(shù)據(jù)。
每個構(gòu)件作為一個節(jié)點,生成Assimp 庫的aiNode 對象,每個aiNode對象又指向一個aiMesh 對象,該對象保存構(gòu)件通過Mesh 函數(shù)生成的三角網(wǎng)信息。JWD 中沒有提供構(gòu)件的顏色信息,因此采用PM 軟件視圖中構(gòu)件的顏色作為aiMesh 的顏色。經(jīng)過以上步驟,形成aiScene 模型場景所需全部數(shù)據(jù)。通過Export 類,指定導出文件路徑及文件模型,即可將模型場景導出到STEP 模型文件。
工程實例1 為框架混凝土結(jié)構(gòu),平面內(nèi)2×2 跨,高度上10 層,柱截面尺寸為500×500mm,梁截面尺寸為300×600mm,板厚取用120mm。圖4為在PM 中和導出STEP 格式文件后在第三方軟件的顯示效果,可以看到與在PM 中的模型完全一致,正確性得到保證??梢栽诘谌杰浖袑Υ四P瓦M行二次加工,包括增加特定類型構(gòu)件,增加材質(zhì),紋理貼圖,調(diào)整燈光參數(shù)等,以達到最佳的顯示效果。
圖4 框架接口模型對比圖
工程實例2 為大底盤多塔結(jié)構(gòu),底盤平面內(nèi)8×4 跨,高度上共3 層,柱截面尺寸為500×500mm,梁截面尺寸為250×500mm,板厚取用120mm。有兩個塔樓,高度分別為10 層和20 層。圖5 為導出STEP 之后的對比顯示效果,與PM 中的模型完全一致。在某些第三方軟件中,提供了更加強大幾何造型、模型編輯、圖形渲染等功能,因此可以按需進行模型的深化編輯。
圖5 大底盤多塔模型對比圖
STEP 文件格式作為工業(yè)級標準,得到了工程工業(yè)軟件的廣泛支持。基于本接口程序,將PKPM 結(jié)構(gòu)模型導出為STEP 模型后,就能夠在所有支持該格式的軟件中進行查看和編輯。本文選取了幾款典型的工程工業(yè)軟件進行結(jié)果驗證,包括Solidworks、Abaqus、AutoCAD、Mayo。同時也選取了BIMFACE 進行web 端輕量化瀏覽效果驗證。
2.2.1 Solidworks
Solidworks 是當前主流的三維CAD/CAE 軟件, 廣泛應用于機械、電子、建筑等領(lǐng)域。導出之后的模型在Solidworks 中的展示效果如圖6所示,可以看到接口保留了所有幾何屬性,與在PM 中的效果完全一致。同時,用戶可以在軟件中繼續(xù)編輯模型,包括建立幾何約束,進行復雜造型等。也可以將編輯后的模型導出,在專業(yè)的渲染軟件中進行渲染。
圖6 Solidworks 模型展示
2.2.2 Abaqus
Abaqus 是功能強大的三維有限元仿真軟件,能夠進行靜力分析、動力分析、熱傳導分析等各種物理場的分析,提供了隱式和顯式求解器。導出之后的模型在Abaqus 軟件中的展示效果如圖7所示。基于此模型,再補充必要的材料、約束、荷載等信息后,可以進行有限元模擬仿真。既可以與PKPM 的計算結(jié)果進行對比,也可以對復雜模型進行彈塑性非線性分析和校核。注意在Abaqus 中每個構(gòu)件對應一個Part,因此沒有顯示整體模型,下一步工作需要導出模型時進行合并。
圖7 Abaqus 模型展示
2.2.3 AutoCAD
AutoCAD 用于二維繪圖、詳細繪制、設(shè)計文檔和基本三維設(shè)計,現(xiàn)已經(jīng)成為國際上廣為流行的繪圖工具。AutoCAD在建筑制圖領(lǐng)域更是處于絕對主導地位。導出之后的模型在AutoCAD軟件中的展示效果如圖8所示,可以看到接口保留了所有幾何屬性,與在PM中的效果完全一致。用戶可以在此模型基礎(chǔ)上進行二次編輯,也可以將DWG導出,然后在其他軟件中作為襯圖使用,方便進行參考定位。
圖8 AutoCAD 模型展示
2.2.4 Mayo
Mayo 是一款完全開源的三維CAD 瀏覽和轉(zhuǎn)換軟件,基于現(xiàn)代C++、Qt 和OpenCascade 開發(fā)。提供模型格式轉(zhuǎn)換、模型裁切、模型樹瀏覽、測量工具等功能,支持Windows,Linux和macOS 操作系統(tǒng)。導出之后的模型在Mayo 軟件中的展示效果如圖9所示,可以看到接口保留了所有幾何屬性,與在PM 中的效果完全一致。利用Mayo 提供的輔助功能,可以進行部分模型裁切查看,測量構(gòu)件的長度等。
圖9 Mayo 模型展示
2.2.5 web 端輕量化瀏覽
BIMFACE是一款BIM輕量化引擎,解決了文件格式解析、模型圖紙瀏覽、BIM 數(shù)據(jù)存儲等問題,用戶只需要專注于業(yè)務(wù)功能的開發(fā),基于BIMFACE進行功能擴展,開發(fā)自己的BIM 應用。模型在BIMFACE 中的輕量化展示效果如圖10所示。用戶可以在web 端進行模型輕量化瀏覽查看和簡單的編輯。由于web 天然跨平臺的優(yōu)勢,用戶既可以在電腦瀏覽器上查看,也可以在手機端和pad 端進行模型查看。
圖10 web 端輕量化模型展示
根據(jù)不同的工程應用目的,導出到第三方軟件后,可以有針對性的對模型進行二次編輯和加工。例如對于超限工程,需要采用第二套軟件進行彈塑性分析的驗證校核,此時可以使用該接口將模型導出到Abaqus 中。補充必要的信息,包括約束、荷載、分析控制參數(shù)等,進行非線性彈塑性分析,提取分析結(jié)果,與PKPM 的計算結(jié)果進行對比,保證項目的安全性滿足規(guī)范要求。
進一步提高模型數(shù)據(jù)的完整性。PM 模型中包含完整的結(jié)構(gòu)分析設(shè)計所需數(shù)據(jù),包括各種結(jié)構(gòu)構(gòu)件、荷載工況,分析設(shè)計參數(shù)等。目前接口軟件只導出了大部分構(gòu)件類型,并沒有導出其他數(shù)據(jù),包括荷載和約束等計算分析所必須的數(shù)據(jù)。因此只能適用于模型展示和查看,不能進行分析設(shè)計。通過合理組織數(shù)據(jù)結(jié)構(gòu),約定數(shù)據(jù)接口含義等提高數(shù)據(jù)的完整性。
避免離散成三角面片。為了將PKPM 的構(gòu)件轉(zhuǎn)為STEP 支持的格式,將對象進行了三角化的離散。這樣雖然增加了數(shù)據(jù)的靈活性和通用性,但是會損失結(jié)構(gòu)的原始幾何信息。后續(xù)可以采用參數(shù)化表達方式描述構(gòu)件的幾何信息,這樣一方面可以比較完整的保留原始信息,方便雙向轉(zhuǎn)換,另一方也可以減小文件的體積。
在產(chǎn)品和易用性層面繼續(xù)完善接口程序。研發(fā)該軟件的最初目的是個人研究使用,能夠滿足模型幾何數(shù)據(jù)導出和在不同軟件中進行查看的效果,但沒有提供UI、用戶交互等產(chǎn)品層面的支持。因此、為了提高接口程序的易用性和用戶體驗,可以增加用戶界面層,從而可以更加簡單直觀的進行JWD 模型導入和STEP 文件導出。同時也可以在軟件中集成三維渲染展示功能,直接在程序中查看模型,方便校核和檢查。
減小模型文件體積。STEP 格式文件設(shè)計理念開放靈活,易于擴展,一方面能夠最大程度的支持各個專業(yè)領(lǐng)域,另一方面造成了數(shù)據(jù)結(jié)構(gòu)的冗雜。STEP 對建筑領(lǐng)域的支持并不完善,為了保證模型的完整性,在轉(zhuǎn)換過程中會造成一定程度的數(shù)據(jù)膨脹,導致文件體積增大。通過合理組織數(shù)據(jù)結(jié)構(gòu),采用文件壓縮等技術(shù)可以有效減少文件大小。
增加雙向轉(zhuǎn)換接口。目前程序能夠單向?qū)KPM模型轉(zhuǎn)換為STEP 模型,尚不能將STEP 模型轉(zhuǎn)換為PKPM模型。增加雙向接口之后,能夠?qū)⒋罅康腟TEP 模型文件轉(zhuǎn)換為PKPM模型,實現(xiàn)模型資源的充分復用。在PKPM 中補充荷載、約束等信息之后,能夠?qū)δP瓦M行結(jié)構(gòu)分析設(shè)計。
數(shù)據(jù)中臺是BIM、CIM、數(shù)字孿生等數(shù)字化模型的核心概念之一。本程序搭建了與平臺無關(guān)的實用化數(shù)據(jù)中心,能夠承載建筑結(jié)構(gòu)模型中的常用數(shù)據(jù),包括節(jié)點網(wǎng)格、截面、墻柱梁板等常用對象?;谠摂?shù)據(jù)平臺,可以進行數(shù)據(jù)交換、二次開發(fā)、模型瀏覽等實際工程應用。
本文研發(fā)了基于STEP標準的PKPM模型轉(zhuǎn)BIM模型接口軟件,能夠?qū)KPM模型的主要結(jié)構(gòu)構(gòu)件導出為STEP 文件。通過該模型文件,能夠在當前主流BIM 軟件、工業(yè)軟件以及支持輕量化瀏覽的WEB 端、APP 端上瀏覽查看和渲染PKPM模型。最后通過主流的CAD/CAE 軟件、web 輕量化平臺等驗證了接口程序的正確性。