+

+

+
+
diff --git a/TestAddinPlugin/App.config b/TestAddinPlugin/App.config
new file mode 100644
index 0000000..b50c74f
--- /dev/null
+++ b/TestAddinPlugin/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/TestAddinPlugin/Properties/AssemblyInfo.cs b/TestAddinPlugin/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..6d069a4
--- /dev/null
+++ b/TestAddinPlugin/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的一般信息由以下
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("TestAddinPlugin")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("TestAddinPlugin")]
+[assembly: AssemblyCopyright("Copyright © 2022")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 会使此程序集中的类型
+//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
+//请将此类型的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("013a0d0a-5c3f-4510-acc0-ccb8c86cc4fc")]
+
+// 程序集的版本信息由下列四个值组成:
+//
+// 主版本
+// 次版本
+// 生成号
+// 修订号
+//
+//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
+//通过使用 "*",如下所示:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/TestAddinPlugin/TestAddin/Commands.xml b/TestAddinPlugin/TestAddin/Commands.xml
new file mode 100644
index 0000000..917819e
--- /dev/null
+++ b/TestAddinPlugin/TestAddin/Commands.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/TestAddinPlugin/TestAddin/PluginAddin.cs b/TestAddinPlugin/TestAddin/PluginAddin.cs
new file mode 100644
index 0000000..cfb0259
--- /dev/null
+++ b/TestAddinPlugin/TestAddin/PluginAddin.cs
@@ -0,0 +1,36 @@
+using Bentley.MstnPlatformNET;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using MSAddinTest.MSTestInterface;
+
+namespace TestAddinPlugin.TestAddin
+{
+ ///
+ /// 测试 addin 调试
+ /// 1. 继承抽象类 MSTest_Addin
+ /// 2. 在 Init 中获取传递的 addin 供当前库使用
+ ///
+ [AddIn(MdlTaskID = "TestAddinPlugin")]
+ internal class PluginAddin : MSTest_Addin
+ {
+ public static AddIn Instance { get; private set; }
+ public PluginAddin(IntPtr mdlDescriptor) : base(mdlDescriptor)
+ {
+
+ }
+
+ public override void Init(AddIn addin)
+ {
+ Instance = addin;
+ Run(new string[] { });
+ }
+
+ protected override int Run(string[] commandLine)
+ {
+ return 0;
+ }
+ }
+}
diff --git a/TestAddinPlugin/TestAddin/PluginKeyinFuncs.cs b/TestAddinPlugin/TestAddin/PluginKeyinFuncs.cs
new file mode 100644
index 0000000..43d8ff2
--- /dev/null
+++ b/TestAddinPlugin/TestAddin/PluginKeyinFuncs.cs
@@ -0,0 +1,24 @@
+using MSAddinTest.MSTestInterface;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace TestAddinPlugin.TestAddin
+{
+ internal class PluginKeyinFuncs
+ {
+ [MSTest("element",Description ="这是keyin别名")]
+ public static void TestElement(string unparsed)
+ {
+ MessageBox.Show("我是 keyin,我被调用了");
+ }
+
+ public static void TestAddin(string unparsed)
+ {
+ MessageBox.Show("我是纯 keyin,且我没有被 MSTest 标记,我被调用了");
+ }
+ }
+}
diff --git a/TestAddinPlugin/TestAddinPlugin.csproj b/TestAddinPlugin/TestAddinPlugin.csproj
new file mode 100644
index 0000000..e538b48
--- /dev/null
+++ b/TestAddinPlugin/TestAddinPlugin.csproj
@@ -0,0 +1,58 @@
+
+
+ net48
+ Library
+ true
+ false
+ true
+ AnyCPU;x64
+ true
+ C:\Program Files\Bentley\MicroStation 2024\MicroStation\Mdlapps
+ C:\Program Files\Bentley\MicroStation 2024\MicroStation
+
+
+ x64
+ C:\Program Files\Bentley\MicroStation 2024\MicroStation\Mdlapps
+
+
+
+ bin\x64\Debug\
+
+
+ bin\x64\Release\
+
+
+
+ False
+ $(Microstation)\Bentley.DgnPlatformNET.dll
+
+
+ False
+ $(Microstation)\Bentley.GeometryNET.dll
+
+
+ False
+ $(Microstation)\Bentley.GeometryNET.Structs.dll
+
+
+ $(Microstation)\ustation.dll
+ False
+
+
+
+
+ Designer
+ CommandTable.xml
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/TestAddinPlugin/TestClassExecutor.cs b/TestAddinPlugin/TestClassExecutor.cs
new file mode 100644
index 0000000..7b0481b
--- /dev/null
+++ b/TestAddinPlugin/TestClassExecutor.cs
@@ -0,0 +1,22 @@
+using System.Windows.Forms;
+
+namespace TestAddinPlugin
+{
+ ///
+ /// 测试类执行器
+ /// 1. 继承接口 IMSTest_Class
+ /// 2. 类添加特性 MSTest
+ ///
+ [MSTest("class", Description = "测试 IClassPlugin 插件,通过 mstest test class 来调用")]
+ public class TestClassExecutor : IMSTest_Class
+ {
+ ///
+ /// 该接口为实例初始化后的调用入口
+ ///
+ ///
+ public void Execute(string arg)
+ {
+ MessageBox.Show("IClassPlugin 被调用了!");
+ }
+ }
+}
diff --git a/TestAddinPlugin/TestStaticMethodExecutor.cs b/TestAddinPlugin/TestStaticMethodExecutor.cs
new file mode 100644
index 0000000..40caa95
--- /dev/null
+++ b/TestAddinPlugin/TestStaticMethodExecutor.cs
@@ -0,0 +1,57 @@
+using System.Collections.Generic;
+using System.Windows.Forms;
+
+using Bentley.DgnPlatformNET.Elements;
+using Bentley.GeometryNET;
+using Bentley.MstnPlatformNET;
+
+using MSAddinTest.Interfaces;
+
+using MSUtils;
+
+namespace TestAddinPlugin
+{
+ ///
+ /// 测试静态方法
+ /// 1. 类继承接口 IMSTest_StaticMethod
+ /// 2. 静态方法添加特性 MSTest
+ /// 3. 静态方法有且仅有一个IMSTestArg参数
+ ///
+ public class TestStaticMethodExecutor : IMSTest_StaticMethod
+ {
+ [MSTest("static", Description = "通过 mstest test static 来调用")]
+ public static object Execute(string arg)
+ {
+ MessageBox.Show("IStaticMethodPlugin 被调用了4!");
+ return true;
+ }
+
+
+ [MSTest("element")]
+ public static object NewElement(string arg)
+ {
+ // 绘制一个元素
+ CurvePrimitive line = CurvePrimitive.CreateLineString(new List
()
+ {
+ new DPoint3d(0,0,0),
+ new DPoint3d(100000,0,0),
+ });
+ var instance = Session.Instance;
+ if (instance == null) return false;
+
+ var dgnm = instance.GetActiveDgnModel();
+ Element et = DraftingElementSchema.ToElement(dgnm, line, null);
+ if (et != null) et.AddToModel();
+
+ MessageBox.Show("绘制元素成功!");
+ return true;
+ }
+
+ [MSTest("exception")]
+ public static object TestReference(string arg)
+ {
+ TestClass.NullException();
+ return false;
+ }
+ }
+}