Polyworks脚本开发学习笔记(十八)-用SDK开发Polyworks插件

插件是由PolyWorks加载的动态链接库(DLL文件),然后查询Polyworks模块,以确定它们具有哪些功能,提供给加载它们的模块。在这种情况下,插件和PolyWorks Metrology Suite模块通过COM接口交互,它们可以同时被视为彼此的客户端和服务器。
插件用于向PolyWorks套件模块添加特定功能,例如作为探测设备和宏命令,可以通过模块的图形用户界面(GUI)实现。因为插件是在与模块相同的过程中运行COM层增加的性能成本最小。

  1. 示例文件位置:

    \CSharp\CSharp3DSceneRendering
    Shows how to create and add the IM::IDrawNode derived class to the host application draw nodes collection. When added, the draw node will draw simple shapes, text, and annotations into the 3D Scene.
    演示如何创建IM::IDrawNode派生类并将其添加到宿主应用程序draw nodes集合。添加后,“绘制”节点将在3D场景中绘制简单的形状、文本和注释。
    \CSharp\CSharpBasic
    Shows how to implement a basic plug-in supporting common COM Interfaces such as IIMPlugin and IIMCommand.
    展示了如何实现一个基本插件来支持公共COM接口,如IIMPlugin和IIMCommand。
    \CSharp\CSharpCommands
    Shows how to implement MSCL commands with arguments.
    演示如何使用参数实现MSCL命令。
    \CSharp\CSharpLineScanFramework
    Shows how to implement a new Line Scanner plug-in
    演示如何实现一个新的线扫描仪插件
  2. 下面是插件可以实现的接口:
  3. 插件存放的位置:
    插件必须放在PolyWorks安装中的\plugins文件夹中,插件的支持文件(即其他必需的DLL)应放在子文件夹中。
    \plugins文件夹的下方,以相关插件文件命名,减去扩展名“.dll”。
    对于Visual Basic。NET和C#插件,所需的DLL必须分别替换被放置在以所需DLL命名的子文件夹中,减去扩展名“.DLL”。
    在某些情况下,如果不能使用\plugins的子文件夹,则支持文件可以放在将加载插件的可执行文件旁边的\bin中文件夹(或子文件夹,如果可能的话也可以)。

生成一个插件

  1. 尝试把第二个案例转成COM组件 写好说明 公司等信息

  2. 勾选为COM互操作注册

  3. 由于签名比较麻烦,且引用的DLL也要签名的密钥,失败多次之后就没有为程序集签名了。

  4. 编译生成CharpBasic.dll在debug目录下,复制出来。

  5. 编译插件: 安装到INSTALL_DIR\plugins
    In most cases, any additional DLLs required by your plug-in should be installed in a
    subfolder named like this:
    在大多数情况下,插件所需的任何附加DLL都应该安装在
    子文件夹的名称如下:
    INSTALL_DIR\plugins[name of your plug-in without extension]
    Ex: INSTALL_DIR\plugins\CompanyNamePlugin\Additional1.dll
    INSTALL_DIR\plugins\CompanyNamePlugin\Additional2.dll
    For Visual Basic and C#, assembly binding is different. Therefore, any additional DLLs required by your plug-in should be installed in a subfolder named like this:
    对于Visual Basic和C#,程序集绑定是不同的。因此,任何额外的DLL插件所需的文件应安装在名为以下内容的子文件夹中:
    Ex: INSTALL_DIR\plugins\Additional1\Additional1.dll
    INSTALL_DIR\plugins\Additional2\Additional2.dll

  6. 注册插件: 右键管理员身份运行INSTALL_DIR\bin目录下的RegisterIMCOMServers.bat

必须将新插件注册为COM组件,然后才能安装该插件被PolyWorks套件使用。
插件和任何支持文件使用前,复制到\plugins文件夹(如如第4.2.1节“插件位置”所述),必须运行注册服务器。在\bin文件夹中找到用于注册插件的bat文件。要正确考虑Windows安全策略。必须运行bat文件,以获取足够的权限。
Windows 7:
右键单击 RegisterIMCOMServers.bat文件并选择以管理员身份运行。这个注册将对所有用户有效。
Windows 8及后续版本:
右键单击 RegisterIMCOMServers.bat文件并选择以管理员身份运行。这个注册只对当前用户有效。
打开看下,原理似乎是把放在 plugins\目录下的所有dll模块和插件都自动注册一遍,也就不用特意写dll名称了。

  1. 调用COM组件: 此时打开引用寻找里面的COM组件,有一个叫示例代码1.0的组件出现了。但是具体怎么样,效果怎么样,还没有仔细挖掘。COM组件很强大,需要进一步的学习研究。

Polyworks脚本开发学习笔记(十八)-用SDK开发Polyworks插件相关推荐

  1. Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件

    Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件 用Polyworks脚本开发,没有高级语言的支持,功能难免单一,一些比较复杂的交互实现不了,界面和报告也很 ...

  2. Polyworks脚本开发学习笔记(十六)-用C#进行Polyworks二次开发

    Polyworks脚本开发学习笔记(十六)-用C#进行Polyworks二次开发 Polyworks支持C#二次开发,用对应的SDK文档试着做一下开发样例. 新建一个C#项目,在解决方案中右键添加引用 ...

  3. windows内核开发学习笔记十八:IRP 处理的标准模式

    windows内核开发学习笔记十八:IRP 处理的标准模式 在 Windows 内核中的请求基本上是通过 I/O Request Packet 完成的. I/O manager ---> Dis ...

  4. Nginx 模块开发(学习笔记十八)

    1. Nginx 介绍 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,它的发音为"engine X", 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP ...

  5. Polyworks脚本开发学习笔记(十)-互动式开发及出错控制

    Polyworks脚本开发学习笔记(十)-互动式开发及出错控制 第八章组合的各种命令,完成了一个对所选的测点名称进行命名的任务.但是,由于任务中没有交互环节,只能机械地将 曲面点 - 包边点改为Flu ...

  6. Polyworks脚本开发学习笔记(十四)-WORKSPACE信息读取及管理

    Polyworks脚本开发学习笔记(十四)-WORKSPACE信息读取及管理 Polyworks的工作任务存储分为工作区和项目两级,通过WORKSPACE命令获取工作任务信息,实现更好的任务管理. 下 ...

  7. Polyworks脚本开发学习笔记(十二)-输出和读取文本文件

    Polyworks脚本开发学习笔记(十二)-输出和读取文本文件 Polyworks作为一个测量工具,将测量的数据方便的导出到文本文件则是一项必须的功能.在DATA_FILE这个命令下提供了很多子命令用 ...

  8. Polyworks脚本开发学习笔记(十九)-将数据对象与参考对象对齐的方法

    Polyworks脚本开发学习笔记(十九)-将数据对象与参考对象对齐的方法 把开发手册理了一遍,发现还有几个点没有记录下来,其中一个就是使用点对的粗对齐和使用参考目标的精确对齐.为了把这个学习笔记凑够 ...

  9. python3.4学习笔记(十八) pycharm 安装使用、注册码、显示行号和字体大小等常用设置...

    python3.4学习笔记(十八) pycharm 安装使用.注册码.显示行号和字体大小等常用设置 Download JetBrains Python IDE :: PyCharm http://ww ...

最新文章

  1. 1. vi 与 vim 有什么区别呢,它们之间有什么关系?
  2. 面试官:谈一下你对DDD的理解?我:马什么梅?
  3. 云计算的未来,就是“打车模式” | CCF C³@亚马逊云科技
  4. 年中总结(2013年3月到2013年9月)
  5. JavaScript权威设计--事件冒泡,捕获,事件句柄,事件源,事件对象(简要学习笔记十八)...
  6. Flink SQL 的 9 个示例
  7. [渝粤教育] 中国地质大学 企业文化建设与管理 复习题
  8. javafx android sdk,JavaFX打包到Android上
  9. xml转svg_C# Excel 转PDF/图片/HTML/TXT/XML/XPS/CSV/ODS/SVG/EMF
  10. 大四课程设计之基于RFID技术的考勤管理系统(二)读取COM口数据
  11. scrapy爬虫+echarts数据分析(安居客)
  12. JPA与EJB3的关系
  13. 一次小黄车的二维码还原过程
  14. 力扣题目系列:322. 零钱兑换
  15. 【图像加密】基于matlab仿射变换数字图象置乱【含Matlab源码 1171期】
  16. mysql常用语句1
  17. LAMP平台部署及应用_wuli大世界_新浪博客
  18. 大友克洋机器人嘉年华_大友克洋
  19. java0.632数据类型_Object-c提供基本数据类型
  20. c语言输入名字判断姓是否缩写,C语言复习笔记

热门文章

  1. 关键字declare的使用
  2. win7咱么锁定计算机,怎么锁定计算机?Win7锁定电脑屏幕的步骤
  3. 企业大数据战略规划高级培训课程
  4. discuz 上传php,Discuz教程:附件上传与php的哪些参数有关
  5. [每日一题]746. 使用最小花费爬楼梯
  6. 完美的绿幕视频抠像材质:扣的干净、适应任意背景色
  7. 程序员久坐不动的8大危害
  8. 2019石油大学西方艺术赏析在线考试(答案)
  9. 葬爱家族时代已远,音乐交友游戏重获新生只是梦一场?
  10. 手机4g网速测试用什么软件,4G LTE 网速测试平台简介_手机生活应用-中关村在线...