1.3.1 下载Visual Studio 2019 版本


图1-2 下载位置

  • 下载完成并打开安装包后,会出现如图1-3所示的Visual Studio Install界面,点击修改,可下载开发所需的工作负荷,一般下载图1-4中4个即可满足大部分开发需求,安装位置可自定义,在工作负荷右侧安装位置选项中修改。

图1-3 Visual Studio Install界面


图1-4 安装相关工作负荷

1.3.2 下载并安装BIMBase软件及SDK

按以下步骤创建一个最简单的项目,该插件作为一个BIMBase外部命令,执行时弹出一个提示框显示“Hello BIMBase”。

  • 下载并安装软件及SDK
  • 1)在PKPM官网(https://www.pkpm.cn/ )“下载”入口下载BIMBase软件产品(下载“BIMBase建模软件”版本即可)并进行安装。

    图1-5 软件下载入口

  • 2)在BIMBase二次开发网站(https://dev.pkpm.cn/ )下载BIMBaseSDK版本并进行安装。注意:下载的BIMBase软件产品与BIMBaseSDK版本号应保持一致。

    图1-6 SDK下载入口

  • 安装完SDK后,目录如图1-7所示,Samples中包含了所有的范例,对于范例中的APITest.sln稍做配置,如图1-8所示,“调试”的“启动操作”设置为安装的BIMBase软件exe路径,并引用BIMBase C#库(“BIMBaseNet.Geometries.dll”、“BIMBaseNet.dll”、“BIMBaseNet.UI.dll”)即可运行起来进行查看。

    图1-7 SDK中相关内容


    图1-8 SDK中范例项目配置

1.3.3 新建项目

  • 打开Visual Studio 2019,单击菜单框“文件”→“新建”→“项目”,打开“新建项目对话框”如图1-9所示。


图1-9 新建项目对话框

在该对话框中,在“模板”→“其他语言”选择“Visual C#”,在中间列表栏选择“类库”,在名称栏中输入项目名称“HelloBIMBase”,点击“确定”完成。

  • 添加引用
    选择“解决方案资源管理器”的“引用”节点(如果“解决方案资源管理器”窗口没有打开,可以通过点击菜单“视图”→“解决方案资源管理器”打开)。右击选择“添加引用”,打开“引用管理器”对话框。如图1-10所示。

    图1-10 添加引用对话框


在该对话框中,选择“浏览”选项卡,进入BIMBase安装目录,选择“BIMBaseNet.Geometries.dll”、“BIMBaseNet.dll”、“BIMBaseNet.UI.dll”三个BIMBase动态链接库,点击“确定”添加到项目引用中。
需要注意的是,在属性中将这三个引用的“复制本地”属性值设为“False”,如图1-11所示,这样可以避免在编译的时候将这两个文件复制到本地目录。另外,后文示例也会用到“System.Windows.Forms”、“System.Drawing”两个动态链接库。


图1-11 设置属性值

1.3.4 代码编写

下面可以开始编写具体代码。请用示例代码1-2替换Visual Studio默认生成的代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using BIMBaseCS.UI;
using BIMBaseCS.Attributes;

namespace APITest
{
    [BPExternalCommandAttribute(name = "Hello")]
    public class TestHelloCommand : IBPFunctionCommand
    {
        public override void onExcute(BPCommandContext context)
        {
            MessageBox.Show("Hello BIMBase!");
            base.onExcute(context);
        }
    }

}

代码1-2 "HelloBIMBase"

1.3.5 插件配置

  • 安装SDK时,会自动在C:\ProgramData\PKPM\BIMBase\Plugins\SDK类别\SDK版本号\c#plugin路径下放置一个默认的plugin文件(安装完SDK后,C盘会默认配置,注意有些电脑ProgramData文件夹是隐藏状态),用于插件加载。其中路径里SDK类别为不同类型的软件,如lite/pro/Traffic版本等,lite是指BIMBase建模软件Lite-模型浏览器这款软件;pro是指BIMBase建模软件,例如BIMBase建模软件2024R1.0;Traffic是指交通版建模软件,例如BIMBase建模软件2024R1.0[T]。示例中下载的BIMBase建模软件2024R1.0,所以插件加载在pro这个路径下。SDK版本号,即SDK安装包上所标识版本号。plugin文件放置位置示意如图1-12所示,以及plugin文件配置(代码1-3所示),可通过修改plugin配置文件来加载自己的插件。范例中基于的SDK版本号为V1.2,加载具体流程参考附录一

图1-12 plugin文件放置位置


<?xml version="1.0" encoding="utf-8" ?>
    <BIMBasePlugins>
       <Plugin>
           <!-- 插件名称。标签不可缺少,值不可为空。插件名称要小于128字符-->
           <Name>HelloBIMBase</Name>
           <!-- 插件描述。标签不可缺少,值可以为空-->
           <Description>HelloBIMBase</Description>
           <!-- 开发商信息。标签不可缺少,值可为空-->
           <VendorId>PKPM</VendorId>
           <!-- 插件开发标识。标签不可缺少,值不可为空。需要去dev.pkpm.cn申请pluginId-->
           <PluginId>FFA5E1D6-CCE7-4CE1-B1EA-FDEF6D8FC13D</PluginId>
           <!-- 插件研发基于BIMBase的版本,默认不用修改 -->
           <PluginSDKVersion>1.2.5</PluginSDKVersion>
           <!-- 插件的版本记录。标签不可缺少,值不可为空。格式要求x.x.x,由插件研发者维护,便于管理插件版本-->
           <PluginVersion>1.0.0</PluginVersion>
           <!-- 插件入口DLL。标签不可缺少,值不可为空。填写入口插件dll全路径-->
           <EntryAssembly>D:\HelloBIMBase\HelloBIMBase\bin\Release\HelloBIMBase.dll</EntryAssembly>
           <!-- 其他Dll列表。需填写dll全路径。标签可缺少,值可以为空-->
           <AssemblyList>
               <Assembly></Assembly>
           </AssemblyList>
           <!-- Schema的路径。标签不可缺少,值可以为空。填写schema文件所在的文件夹路径,若所填写的路径为无效路径,则插件加载失败-->
           <SchemaPath>D:\SDK版本\BIMBase建模软件2024R1.0_SDK V1.2\Samples\schemaDemo\</SchemaPath>
           <!-- Schema的版本。标签不可缺少,值可以为空。格式要求x.x,若是不符合规则,插件则加载信息失败。注意SchemaPath与SchemaVersion要么同时填写,要么同时为空,否则也会导致插件加载失败-->
           <SchemaVersion>1.0</SchemaVersion>
           <!-- 界面配置文件。标签可缺少,值可以为空。若需要在软件启动界面配置新模块,则需要配置MajorConfig文件(SDK包中有模板),并在此指定全路径-->
           <!-- MajorConfig文件命名格式要求:MajorConfig_XXX.xml,前缀MajorConfig+自定义名称-->
           <MajorConfig>D:\SDK版本\BIMBase建模软件2024R1.0_SDK V1.2\Samples\config\MajorConfig_secDevCSharp.xml</MajorConfig>
           <!-- 加载菜单。标签可缺少,值可以为空。填写菜单dll的全路径-->
           <Ribbon>D:\SDK版本\BIMBase建模软件2024R1.0_SDK V1.2\Samples\C#Examples\RibbonDesignCSharpDemo\Release\RibbonDesignCSharpDemo.dll</Ribbon>
           <!-- 插件作用的模块,对应MajorConfig中的NAME标签。标签不可缺少,值不可为空。指定后可在特定模块加载插件。多个使用","隔开,如“电气,BIMBase”,若为All,则作用所有模块-->
           <ActionChDomainKeys>BIMBase,二次开发CSharp</ActionChDomainKeys>
           <!-- 插件加载状态。标签不可缺少,值可为空,空则为false -->
           <LoadStatus>true</LoadStatus>
        </Plugin>
    </BIMBasePlugins>

代码1-3 "HelloBIMBase"plugin文件

1.3.6 执行插件

启动BIMBase,在命令行输入命令名称“Hello”,执行后将弹出一个对话框,如图1-13所示。

图1-13 “Hello BIMBase”对话框

1.3.7 调试插件

在编码、运行过程中可能会遇到各种各样的问题,因此需要进行断点调试检查当前变量和对象的状态来定位问题。

在“HelloBIMBase”工程上右击,选择“属性”。
在打开的对话框左侧面板中选择“调试”选项卡,在右侧窗口的“启动操作”中点选“启动外部程序”,并设置执行文件路径,见图1-14。

图1-14 设置执行文件路径

编译之后,按F5进行调试。
另外一种调试方法是,在BIMBase启动后,在Visual Studio的“调试”菜单下选择“附加到进程”,见图1-15。在打开的“附加到进程”对话框中选择“BIMBASE.exe”,然后单击“附加”按钮。

图1-15 附加到进程