BIMBase API是建立在BIMBase产品基础之上的,需要在BIMBase运行时才能工作。通过这套强大的API,可以添加基于BIMBase API开发的插件来扩展和增强BIMBase的功能和应用。本章将详细介绍如何基于BIMBase API开发自己的插件。

2.3.1 插件注册及加载

可参考1.3.3至1.3.5讲解

2.3.2 外部命令及注册

插件开发者可以通过函数注册实现自己的命令。

  • 基本原理
    BIMBase中注册的命令可通过命令名直接被激活,一旦插件被加载,外部命令被创建出来。外部命令被集成到BIMBase之后,也可以通过自定义菜单项来进行调用。BIMBase API中的外部命令包括外部函数、基本工具、选择工具三类。外部函数与视图不进行交互,基本工具及选择工具可与视图交互,都可在视图中输入点,选择工具还可选择构件进行过滤。本章将详细介绍这三种命令的实现方式。
  • 外部函数
    用户可通过实现自己的函数并注册到平台来实现自己的命令,注册时需定义该命令的名称,该名称可在命令行直接输入,也可在菜单上加载。示例代码2-1演示了如何注册自己的函数命令。
void HelloBIMBase()
{
     AfxMessageBox(L"Hello BIMBase!");
}
AutoDoRegisterFunctionsBegin
BPToolsMessager::registerFun(_T("HelloBIMBase"), &HelloBIMBase);
AutoDoRegisterFunctionsEnd

代码2-1 注册自己的函数命令

  • 基本工具
    BIMBase API用户可通过重写类BPPrimitiveTool来实现用户所需的布置工具,在软件中布置所需的构件。BPPrimitiveTool提供了各种接口用于实现在不同时机需要实现的功能。

表2-1 布置工具接口列表

方法 描述
_onPostInstall() 工具启动响应函数
_onDataButton(BPBaseButtonEventCP) 按下鼠标左键响应函数
_onDataButtonUp(BPBaseButtonEventCP) 抬起鼠标左键响应函数
_onResetButton(BPBaseButtonEventCP) 点击鼠标右键响应函数
_onModelMotion(BPBaseButtonEventCP) 鼠标移动响应函数
_onStartDrag(BPBaseButtonEventCP) 按住鼠标左键拖拽开始
_onEndDrag(BPBaseButtonEventCP) 按住鼠标左键拖拽结束
_onMouseWheel(BPBaseMouseWheelEventCP) 鼠标滚轮滚动响应函数
_onDynamicFrame(BPBaseButtonEventCP) 动态绘制函数
_onKeyTransition(bool ,P3DVirtualKey, bool, bool) 键盘响应函数
_onTracerChanged(BPTracerInfo) 追踪器赋值函数
_exitTool() 退出工具响应函数
  • 选择工具
    BIMBase API用户可通过重写类BPEntitySelectSetTool来实现用户所需的选择工具。BPEntitySelectSetTool提供了各种接口用于实现在不同时机需要实现的功能。

表2-2 选择工具接口列表

方法 描述
_onPostInstall() 工具启动响应函数
_onDataButton(BPBaseButtonEventCP) 按下鼠标左键响应函数
_onDataButtonUp(BPBaseButtonEventCP) 抬起鼠标左键响应函数
_onResetButton(BPBaseButtonEventCP) 点击鼠标右键响应函数
_onModelMotion(BPBaseButtonEventCP) 鼠标移动响应函数
_onStartDrag(BPBaseButtonEventCP) 按住鼠标左键拖拽开始
_onEndDrag(BPBaseButtonEventCP) 按住鼠标左键拖拽结束
_onMouseWheel(BPBaseMouseWheelEventCP) 鼠标滚轮滚动响应函数
_onDynamicFrame(BPBaseButtonEventCP) 动态绘制函数
_onKeyTransition(bool,P3DVirtualKey,bool, bool) 键盘响应函数
_onTracerChanged(BPTracerInfo) 追踪器赋值函数
_onPostLocate(BPPickDataCP, PStringR ) 工具拾取实体过滤函数
BPEntityArrayPtr getEntityArray() 获取拾取到的对象集
_exitTool() 退出工具响应函数

基本工具和选择工具使用BPToolsManager::registerTool来进行注册。