第一次进行BIMBase二次开发时,需要搭建开发环境,与Revit二次开发类似,很容易上手。接下来将介绍如何搭建BIMBase二次开发环境,开始BIMBase二开。
1. 先创建一个空项目,然后引入“BIMBaseNet.Geometries.dll”、“BIMBaseNet.dll”、“BIMBaseNet.UI.dll”这三个BIMBase动态链接库。
2. 编写以下代码,代码的功能是显示一个WPF窗体
using BIMBaseCS.ApplicationService;
using BIMBaseCS.Attributes;
using BIMBaseCS.Core;
using BIMBaseCS.UI;
using BIMBaseTest.Views;
using Serilog;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Interop;
namespace BIMBaseTest.BIMBaseCommands
{
[BPExternalCommand(name = "WPFcmd")]
public class WPFcmd : IBPFunctionCommand
{
public override void onExcute(BPCommandContext context)
{
try
{
BPDocument doc = BPApplication.singleton().activeDocument;
MainWindow ctr = new MainWindow(doc);
WindowInteropHelper helper = new WindowInteropHelper(ctr);
helper.Owner = BIMBaseCS.ApplicationService.BPApplication.singleton().activeDocument.viewManager.getMainFrame();
ctr.ShowInTaskbar = false;
ctr.Show();
}
catch (Exception ex)
{
Log.Error($"在{MethodBase.GetCurrentMethod().ReflectedType.Name}-{MethodBase.GetCurrentMethod().Name}中,{ex}");
}
base.onExcute(context);
}
}
}
3. 在本地“C:\ProgramData\PKPM\BIMBase\Plugins\Pro\V1.5\c#plugin”路径下,放置一个修改好的的plugin文件,这个文件可以根据官方提供的例子进行修改,主要修改你编译的dll路径和Ribbon路径,详细可以看下面我提供的plugin文件
<?xml version="1.0" encoding="utf-8"?>
<BIMBasePlugins>
<Plugin>
<!-- 插件名称。标签不可缺少,值不可为空。插件名称要小于128字符-->
<Name>TestDemo</Name>
<!-- 插件描述。标签不可缺少,值可以为空-->
<Description>APIDemo1</Description>
<!-- 开发商信息。标签不可缺少,值可为空-->
<VendorId>PKPM</VendorId>
<!-- 插件开发标识。标签不可缺少,值不可为空。需要去dev.pkpm.cn申请pluginId-->
<PluginId>FFB5E1D6-C2E7-4CE1-B1EA-FDEF6D8FC13B</PluginId>
<!-- 插件研发基于BIMBase的版本,默认不用修改 -->
<PluginSDKVersion>1.5.1</PluginSDKVersion>
<!-- 插件的版本记录。标签不可缺少,值不可为空。格式要求x.x.x,由插件研发者维护,便于管理插件版本-->
<PluginVersion>1.0.0</PluginVersion>
<!-- 插件入口DLL。标签不可缺少,值不可为空。填写入口插件dll全路径-->
<EntryAssembly>D:\学习文件\BIMBase开发\bin\x64\Debug\BIMBaseTest.dll</EntryAssembly>
<!-- 其他Dll列表。需填写dll全路径。标签可缺少,值可以为空-->
<AssemblyList>
<Assembly></Assembly>
</AssemblyList>
<!-- Schema的路径。标签不可缺少,值可以为空。填写schema文件所在的文件夹路径,若所填写的路径为无效路径,则插件加载失败-->
<SchemaPath></SchemaPath>
<!-- SchemaVersion的版本。标签不可缺少,值可以为空。格式要求x.x,若是不符合规则,插件则加载信息失败。注意SchemaPath与SchemaVersion要么同时填写,要么同时为空,否则也会导致插件加载失败-->
<SchemaVersion>1.0</SchemaVersion>
<!-- 界面配置文件。标签可缺少,值可以为空。若需要在软件启动界面配置新模块,则需要配置MajorConfig文件(SDK包中有模板),并在此指定全路径-->
<!-- MajorConfig文件命名格式要求:MajorConfig_XXX.xml 前缀MajorConfig + 自定义名称。-->
<MajorConfig></MajorConfig>
<!-- 加载菜单。标签可缺少,值可以为空。填写菜单dll的全路径-->
<Ribbon></Ribbon>
<!-- 插件作用的模块,对应MajorConfig中的NAME标签。标签不可缺少,值不可为空。指定后可在特定模块加载插件。多个使用","隔开,如“电气,BIMBase”,若为All,则作用所有模块-->
<ActionChDomainKeys>BIMBase,二次开发CSharp</ActionChDomainKeys>
<!-- 插件加载状态。标签不可缺少,值可为空,空则为false -->
<LoadStatus>true</LoadStatus>
</Plugin>
</BIMBasePlugins>
4. 启动BIMBase,在命令行输入命令名称“WPFcmd”,执行后将弹出一个WPF窗体,如图所示。
5.少年,从此开启你的BIMBase二开之旅吧!