BIMBase二次開發教程_第1頁
BIMBase二次開發教程_第2頁
BIMBase二次開發教程_第3頁
BIMBase二次開發教程_第4頁
BIMBase二次開發教程_第5頁
已閱讀5頁,還剩288頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

目錄

第1章HelloBIMBase

1.1HelloBIMBase

1.2使用BIMBaseAPI的準備「作

1.3BIMBase環境搭建

第2章BIVBase基礎

2.1BIMBas。概述

2.2BIMBase重要概念

2.3外部命令和工具

2.4應用類和文檔類

2.5事務處理

2.6實戰:兩點畫線工具

第3章領域對象(BPObjecl)

3.1領域對象基礎

3.2對象編輯

第4章幾何對象(Graphics)

4.1概述

42幾何基元類

4.3幾何輔助類

4.4實戰:獲取實體的幾何數據

第5章視圖

5.1視圖概述

5.2創建和刪除視圖

5.3視圖控制

5.4臨時繪制/視圖裝飾

第6章事件

6.1事件簡介

6.2事件定義、注冊和注銷

6.3右鍵菜單事件

6.4構件顯示事件

第7章二維圖紙

7.1詳圖線

7.2填充

7.3尺寸標注

7.4文字注釋

7.5表格

第8章功能區擴展(RibbonUI)

8.1菜單

8.2項目樹

8.3??繉υ捒?/p>

第9章開啟BIM之旅:實戰項目

9.1新建我的專業

9.2布置對象:在立方體上開洞

9.3編輯對象

9.4剖切出圖

附錄一:插件加載及界面配置

1.1插件加載

1.2啟動界面配置

附錄::編輯Schema文件

附錄三:Schema字段說明

BIMBase二次開發教程

(C++語言版本V2.1)

企業名稱:北京構力科技有限公司

日期:2022.08

第1章HelloBIMBase

1.1HelloBIMBase

想假在■環境卜.實慶門■的,能,?/£I.桿中港〕川扣卜?代班中浮泄門」的命令.實現

彈出對話框。

void

HelloBIMBase

0

AfxMessageBox(

L*HelloBIMBase!*

);

}

AutoDoRegisterFunctionsBegin

BPToolsMessager::registerFun(_T(

"HelloBIMBase"

),&HelloBIMBase);

AutoDoRegisterFunctionsEnd

代碼ITHelloBIMbase函數

我們可以將以上代碼分為兩個步驟;

第一步:創建自己的■函數,并在函數中彈出對話框。

第二步:通過BTMBase平臺的接口,將第一步中所創建的■函數注

冊到相關平臺,并將其與命令■■關聯。此時,■■和

■兩個宏之間的代碼會在相關模塊加載時執行,即模塊加載時■被注冊到平臺。此

時,啟動BIMBase,在命令行輸入已經注冊的命令,執行后將彈出■彈窗,如圖上

1所示。

BIMBaseP3D-[D:\test\testP3D]-皮件testP3D視圖1]□

開始基本建模翁相數奇導出群助Q快速啟動....15x

昌Q盥畫昌國

融演臺導入導入導入載人參數設置組件工程重材庫參數化類型屬性

P3DPMODEL言理器SKPIFCPMODEL化組件Python路徑編宙器組件庫組件庫莒浮器

導入S3

視圖瀏覽器斑?令o回日

□工程項目

E_|_程埼累

Y

視圖瀏寬器|雌|在此輸入命…QkI

//◎乂上口▼乙003圍昌園

圖ITHHelloBIMBase"對話框

1.2使用BIMBaseAPI的準備工作

在使用BIMBascAPI和本書之前,需要具備以下條件:

?安裝BIMBase系列產品,了解BIMBase系列產品的功能和使用。

?獲取BIMBaseAPI,可通過二次開發官網()下載SDK進行研究或開發。

?了解C++開發語言。

?安裝MircoSoftVisualStudio2019(下載VisualStudioTools免費安裝Windows,Mac、Linux

(https://visualstjdio.microsoft.com/zh-hans/vs/))?

1.3BIMBase環境搭建

按以下步驟創建?個最簡單的項目,該插件作為一個BIMBase外部命令,執行時彈出一個提示框顯示

1.3.1下載VisualStudio2019版本

?首先進入微軟官網下載VisualStudio2019版木安裝包(hltps://learn.microsoft.com,zh-cn/vi

sualsludio/releasas/2019./release-notes),如圖I2所示。

Learn/VisualStudio/??i

^VisualStudio2019版本16.11發行說明

項目?2023/03/29G反饌

本文內容

VisualStudio2019版本16.11的新店內容

VisualStudio2019版本16.11.28

VisualStudio2019版本16.11.27

VisualStudio2019版本16.11.26

顯示另外30個

開發者社區Q|系統要求|兼容性|可分發代碼|發布歷史記錄|許可條款|博客Q|VisualStudio新增功能文檔

。備注

此版本不是最新版本的VisualStudio.若要下載最新版本,請訪問VisualStudioe網站。

單擊按鈕即可下載最新版VisualStudio2019.有關如何安裝和更新VisualStudio2019的說明,請參閱楮VisualStudio

2019更新至喝新版本.另請參回如何脫機安裝的說明。

DownloadCommunity2019上■DownloadProfessional2019±HDownloadEnterprise2019上

圖1-2下載位苴

?下載完成并打開安裝包后,會出現如圖1-3所示的VisualStudioInstall界面,點擊修改,可下載

開發所需的工作負桁,一般下載圖1-4中4個即可滿足大部分開發需求,安裝位置可自定義,在工作

負荷右側安裝位置選項中修改。

?注意,若想使用VFC功能需要勾選使用C++的桌面開發工作負荷中的選項(適用于最新VM2生成工具

的C++ATL)o

o□x

VisualStudioInstaller

巳安笈可用

更新可用.開發人員新聞

SubKnbetothe4^?81KEM,

VisudlStudioCommunity2019"(MWeree*otcdtoannouncethatyou3cntR*lubk..

1&1127aia(u2023零7月箋日

o有可用更?更多?Rock¥ourOebu99FGamePaalWStockWindow

T科怕uhkedtoKnc^

161128BVrfU)

In17.6iAdV.7weAddedeu.

2023隼陰25日

Toom?nytotnopen?Nopwbk?^

WwcQKMJc4UArtc^??emVk3

2023冬7月20日

■,更今Micewt

SfieMkrgH開發人費社區?il

Q恒由stude變存r?ttn

mrtmtt血ii到769

圖1-3VisualStudioInstall界面

正在修改-VfiualStudioQxnmurMy2019?1G1127

工作負荷個擔件諳言包安裝位置

Aj-2Kmiwweo辦成LJ.Azureca

vtZ7ASPMTCore.ASP.NET.HTMMMvaScnpt1CgA

>用于便用.NETmNET開發云&用O創也貴》安裝詳細信息

Docker麥月的疝生威Web匠用寫序.的AzureSOK.工1UD0目.處R*用于實/應用內厚日…

,VisualStudio核心91箱35

?Python開發

|3>Pythoo開發G3Node.j?JfM?.NET鼻面開發

。Wpython?n?a.■&、殳a式開發ID3代再管理.吃使用NodejM一個由R分?件塞0的Man歡送"附)生

)使用的桌面開發

成可?收加網婚這用電學.

?通用Windows平臺開發

▼單個蛆件

亶面應用和移動應用(S)0).NETSOK|outo(wppo<1)

S3Pythor131blM19.1”

MIsB;?[使用c??的麻面開發S

-J將C&WUMI—如F*與NET*JNET&Ewcrk一包—使用“111JKW舞MSVUCMn小CMeH或MSMW)生或

侵用.生成2,W)MCM■體元型制臺程整.硼于的現代d?&M.

■■-RWSdom學化開發QiiAMobiedevck>pmcfitwithNET(outatsupport)

■■使用SYB、殘C??何0力通用岫31平白包H螭蜥42m壽QS.Androrf或Mtom生5Fg應

&m?用盤風

格除內不受支樣r?8件

CAProgram%(?e6AMKro5oaVisualSludio\201%omnscy

襄求的息或應08

met*作更聶示勺回,所這ais?udK>第*均回匕an還*伊通過zi女w⑥下a其他w樣的幼??包欲件更行洋司.如第三方公告塞具局TtUtftHR]XR!(Q,

*?游可任中標“即?次量體可巴

圖卜4安裝相關工作負荷

1.3.2下載并安裝軟件及SDK

?在PKPV官網(https://www.pkpm.cn)”下載"入口下載BIMBase軟件產品(下載“BIMBase建模軟

件”版本即可)并進安裝。

p1

產品試用構力學空圖慢大師

圖1-5軟件下我

?在BIMBase二次開發網站(https://dev.pkpm.cn)下我BIMBaseSDK版本并進行安裝。注意:下載的

BIMBase軟件產品與3IMBaseSDK版本號應保持一致。

產品試用梅力學堂二次開發

圖1-6SDK下載

?安裝完SDK后,目錄如圖1-5所示,Samples中包含了所有的范例,對于范例中的Example.s:n稍做配

置,如圖16所示,“調試”的“命令”設置為安裝的BIMBase軟件exe路徑,即可運行起來進行查

看。

修改日期

Document2023/5/3011:33文件夾

Include2023/6/617:12文件夾

JLib2023/5/3011:21文件夾

Samples2023/6/89:42文件夾

圖1-7SDK中相關內容

Examples匡性13

E3(C):活動(Release)”平貨P):活動(x64)v配置行理簿(O)...

」配置國性

常規

WindowsiSiXS

盒雙

命令D:\SDKjK^\BIMBasc_2023_42501_42400_S751_38569_??45rft\BIMBasc.cxc

VC++目錄

命令參數

DC/C++

工作目錄$(Pro>jectDir)

D

附£0否

D清單工fl

用試器類里自動

D期

合并環境S

0MS信經

sot3S

生成事件

DAmp默認快運》WARP軟件國翳

D

t>代碼分析

DCodeAnalysis

命令

要執行的調試命令.

畸取消應用(A)

@1-8SDK中范例項目配置

1.3.3新建項目

?打開VisualStudio2019,單擊菜單框“文件”一“新建”-“項目”,打開“新建項目對話

框"。如圖1-9所示,創建一個自己的項目(MyBIMBase項目)。

□X

創建新項目伍X.一,

最近使用的項目模板(R)C++?Windows?Sfl臺?

機不到克全匹配5

WMFC動態隹接國

芟于你的雙重找到先反他結案

?拄制臺應用

nMFCgffl

uhJ

S3共享3!目生成且有在Window,上后行的愛京用戶界面的應用.

€??Windows左面

£jMFCEffl

口mMFC的膝庫

aa生成可在多個正在運行的Windows應用之間共享的.dll.包括

MicrosoftgSd^IC.

C**Windows,W

就《MFCActiveX拄件

aa使用Microsoft串聯M的ActiveX控件.

C**Window1>

未找到徐要查找明內容?

安裝⑤個工且和功能

下一音1N}

□X

配置新項目

MFC動態鏈接庫-Window*方

項目名稱⑴

MyBIMBase

fizS(L)MFCDLL

DADLL謂(T)

解決方案⑸MFCraDLL?

創薪程關方空勖四)能:

自動化(U)

晚夫方案名存(M)①□Window妾接字(W)

MyBIMBase

□行解決方案和項自放在同一目錄中(D)

上fB)

圖1-9新建項目對話框

?右犍設置VyBIMBase項目屬性,如表11所示。解決方案配置為“Release”,解決方案平臺配置為x6

4;

表17主要環境配置

配置安裝路徑

[SDK安裝路徑]'include、:[SDK安

MyBIMBaseC\C++-〉常規->附加庫包含目錄裝路徑八include\P3DCore\;[SDK

安裝路徑-include\Share\;

鏈接器->[SDK安裝路徑]乳ib\Rclcasc\:[SDK安裝路徑八Lib\Rc

常規-〉附leasc\Share\BcgFranic;[SDK安裝路徑]\Lib\Rclcasc\

加庫目錄Share;[SDK安裝路徑八Lib\Rclcasc\P3DCorc;

配置屬性-

>調試->命[建模軟件安裝路徑]\BIMBASE.exe

?在■中添加平臺頭文件引用,■中添加lib引用,可直接從范例中拷貝:在Visual

Sludio新版平臺工具集中,預編譯頭文件由原來的■修改為,以下為相關代碼。

n

include

<vector>

#

include

<map>

*

include

<algorithm>

//平臺相關

include

*BPExportMacros,h”

#

include

*PKPMExportMacros.h"

include

"P3DDC/P3DDCAPI.h"

n

include

*PSDGeomBase/PSDGeomBasePublicAPI.h*

include

"P3DGeom0bject/P3DGeom0bjectPublicAPI.h"

include

"JsonCpp/JsonCppAPLh”

#

include

*BPBase/BPBaseAPLh*

#

include

"BPData/BPDataAPI.h"

include

^BPDataCore/BPDataCoreDef.

#

include

*BPDataCore/BPDataCoreAPI.h"

include

"BPDataCore/BPPlacement.h"

#

include

*BPDataCore/BPDomainDatalnitManager.h"

#

include

"BPDisplay/BPDisplayAPLh*

#

include

"BPInteraction/BPInteractionAPI.h"

#

include

"BPFrame/BPFrameAPLh”

#

include

*BPSolidCore/BPSolidCoreAPI.h*

#

include

"BPBase/BPPlatformAPLh*

#

include

*BPUIFrameWork/BPUIFrameWorkAPLh”

#

include

*BPUIFrameWork/BPUIFrameWorkUti1.h〃

using

namespace

p3d;

n

include

^BPPrimaryElement/BPPrinaryGeomAPI.

#

include

"Share/TgGe/TgGe.h"

代碼1-2頭文件列表(片段)

#

pragma

comment(lib,

"P3DCore/P3DDC.lib”

)

#

pragma

comment(lib,

*P3DCore/P3DGeomBase.lib*

)

n

pragma

comment(lib,

"P3DCore/P3DGeomObject.lib”

)

pragma

comment(lib,

“BPDataCore.lib”

)

pragma

comment(lib,

"Share/TgGe.lib*

)

#

pragma

comment(lib,

"BPPlatform.lib”

)

pragma

comment(lib,

"BPSolidCore.lib”

)

pragma

comment(lib,

“BPDataExt.lib”

)

#

pragma

comment(lib,

*P3DCore/JsonCpp.lib*

)

#

pragma

comment(lib,

"BPUIFrameWork.lib"

)

#

pragma

comment(lib,

"BPApp.lib〃

)

#

pragma

connnent(lib,

"BPDataCore.lib”

)

#

pragma

comment(lib,

''BPPrimaryElement.lib”

)

#

pragma

comment(lib,

“BPPluginManager.lib”

)

代碼1-3lib庫列表(片段)

?入口插件dll注冊

在入口DLL的VyBIMRase.cpp文件中繼承■類,實現

|、并通過類進行注冊、

載,如示例代碼1-4所示。

class

ExamplesPluginEntry:

public

BIMBase::Plugin::BPPluginFactory

public

*

ExamplesPluginEntryO{};

virtual

^ExamplesPluginEntry(){};

protected

*

//提供加載響應時機,重載但不用實現

virtual

void

_onLoadPlugin(CWnd*curMainFrame)override

(

std

?*?

vector

<wstring>vecAssembly=BIMBase::Plugin::BPPluginManager::getlnstance().getCu

rPluginAssmeblyO;

for

(

auto

it:vecAssembly)

(

〃模塊加載

loadPluginAssembly(it);

}

}

//提供卸載響應時機,重載但不用實現

virtual

void

_onUnLoadPlugin(::BIMBase::Core::BPProjectRcurProject)override

//返回插件的信息,重載但不用實現

virtual

void

_initPluginInformation(::BIMBase::Plugin::PluginInformation&pluginlnformati

on)override

(

plugininformation.m_wsPluginDescribe=

L"二次開發"

*

I

)

);

static

ExamplesPluginEntry_pluginEntry;

PBBIM_IMPLEMENT_EXTENSION_MODULE(entryDll);

extern

"C〃

int

APIENTRY

DllMain

(HINSTANCEhlnstance,DWORDdwReason,LPVOIDIpReserved)

〃如果使用IpReserved,請將此移除

UNREFERENCED_PARAMETER(IpReserved);

if

(dwReason==DLL_PROCESS_ATTACH)

if

(!entryDll.Attachlnstance(hlnstance))

return

0

//插件注冊

BIMBase::Plugin::BPPluginManager::getInstance().registerPlugin(&_plug

inEntry);

)

else

if

(dwReason==DLL_PROCESS_DETACH)

(

〃插件反注冊

BIMBase::Plugin::BPPluginManager::getlnstance().unRegisterPluginO;

entryDll.Detachinstance();

)

return

1

'〃確定

}

代碼1-4:入口DLL的dlImain.cpp插件加載部分

表1-2BPPluginFactocr接口說明

描述

方法

onLoadPlugin工程事件-加載插件時觸發

onUnLoadPlugin工程事件-卸載插件時觸發

initPluginlnformation獲取初始化插件的信息-回調調用

loadP1uginAssemb1y加載插件模塊,插件入口調用

表1-3BPPluginManagcr接口說明

描述

方法

registerPlugin插件的注冊

unRcgisterPlugin插件的反注冊-注銷事件、卸載事件、對話框資源釋放

unLoadPlugin插件卸載

getCurP1uginAssmeb1y獲取當前插件需要加載的模塊

addCurPluginAssmebly添加當前插件需要加載的模塊

1.3.4代碼編寫

?在完成上述步驟后,下面可以開始編寫具體代碼。創建一個新的文件,并符受制

以下代碼。

void

HelloBIMBase

0

AfxMessageBox(

rHelloBIMBase!"

);

}

AutoDoRegisterFunctionsBegin

BPToolsMessager::registerFun(_T(

"HelloBIMBase”

),&HelloBIMBase);

AutoDoRegisterFunctionsEnd

1.3.5插件加載

?安裝SDK時,會自動在C:\ProgramData\PKPM\RIMBasp\Flugins\SDK類別\SI)K版本號\e++ph】gin路杼

下放置一個默認的plugin文件(安裝完SDK后,C盤會默認配置,注意有些電腦ProgramData文件夾是

隱藏狀態),用于插件加

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論