Pm插件最重要的优势,就是能够使界面实时响应PM数据变化

下面展示PM 插件可订阅的事件。

其中有一些事件是无效的,例如"ProcessedCommand"命令输出事件。

<?xml version="1.0" encoding="utf-8"?><!-- PowerMill 可订阅事件汇总--><PowerMILLEvents><!-- 应用事件 events --><!-- 项目打开失败 events --><ProjectOpenFailed event_group="Application"><Path/></ProjectOpenFailed><!-- 项目关闭时 events --><ProjectClosing event_group="Application"/><!-- 归档文件插入完成 --><ArchiveInserted event_group="Application"><Path/></ArchiveInserted><!-- 归档文件插入时 --><ArchiveInserting event_group="Application"><Path/></ArchiveInserting><SessionInserted event_group="Application"><Path/></SessionInserted><ModeChanged event_group="Application"><Mode/><PreviousMode/></ModeChanged><ProjectOpening event_group="Application"><Path/><ReadOnly/></ProjectOpening><ArchiveOpened event_group="Application"><Path/></ArchiveOpened><ProcessedCommand event_group="Application"><Command/></ProcessedCommand><ElectrodeProjectOpened event_group="Application"><Project/><TrodeFile/><TrodeName/></ElectrodeProjectOpened><FormRaised event_group="Application"><FormName/></FormRaised><LocaleChanged event_group="Application"><Locale/></LocaleChanged><ProjectSaved event_group="Application"><AutoSave/><Path/></ProjectSaved><ProjectClosed event_group="Application"/><ToolbarMaximised event_group="Application"><ToolbarName/></ToolbarMaximised><ProjectOpened event_group="Application"><Path/><ReadOnly/></ProjectOpened><TemplateInserting event_group="Application"><Path/></TemplateInserting><ProjectSavedAs event_group="Application"><Path/><PreviousPath/></ProjectSavedAs><ProjectInserted event_group="Application"><Path/></ProjectInserted><ToolbarMinimised event_group="Application"><ToolbarName/></ToolbarMinimised><ArchiveOpening event_group="Application"><Path/></ArchiveOpening><ArchiveSaved event_group="Application"><Path/></ArchiveSaved><SessionInserting event_group="Application"><Path/></SessionInserting><ToolbarLowered event_group="Application"><ToolbarName/></ToolbarLowered><UnitsChanged event_group="Application"><Units/></UnitsChanged><TemplateSaved event_group="Application"><Path/></TemplateSaved><ToolbarRaised event_group="Application"><ToolbarName/></ToolbarRaised><TemplateInserted event_group="Application"><Path/></TemplateInserted><FormLowered event_group="Application"><FormName/></FormLowered><!-- Boundary events --><BoundaryGeometryModified event_group="Boundary"><Name/></BoundaryGeometryModified><BoundaryCalculationStarted event_group="Boundary"><Name/><Process/></BoundaryCalculationStarted><BoundaryCalculationFinished event_group="Boundary"><Name/><Process/><Status/></BoundaryCalculationFinished><!-- EntityManager events --><EntityActivated event_group="EntityManager"><Deactivated/><EntityType/><Name/></EntityActivated><EntityDeleted event_group="EntityManager"><EntityType/><Name/></EntityDeleted><EntityCreated event_group="EntityManager"><EntityType/><Name/></EntityCreated><EntityDeactivated event_group="EntityManager"><Activated/><EntityType/><Name/><Reason/></EntityDeactivated><EntityDrawn event_group="EntityManager"><EntityType/><Name/></EntityDrawn><EntityRenamed event_group="EntityManager"><EntityType/><Name/><PreviousName/></EntityRenamed><EntityUndrawn event_group="EntityManager"><EntityType/><Name/></EntityUndrawn><!-- FeatureSet events --><FeatureSetGeometryModified event_group="FeatureSet"><Name/></FeatureSetGeometryModified><FeatureSetFeatureRemoved event_group="FeatureSet"><FeatureName/><Name/></FeatureSetFeatureRemoved><FeatureSetFeatureRenamed event_group="FeatureSet"><FeatureName/><Name/><PreviousFeatureName/></FeatureSetFeatureRenamed><FeatureSetFeatureAdded event_group="FeatureSet"><FeatureName/><Name/></FeatureSetFeatureAdded><!-- Group events --><GroupEntityAdded event_group="Group"><EntityName/><EntityType/><Name/></GroupEntityAdded><GroupEntityRemoved event_group="Group"><EntityName/><EntityType/><Name/></GroupEntityRemoved><!-- LevelsAndSets events --><LevelGeometryAcquired event_group="LevelsAndSets"><Name/></LevelGeometryAcquired><SetGeometryAcquired event_group="LevelsAndSets"><Name/></SetGeometryAcquired><SetGeometryRemoved event_group="LevelsAndSets"><Name/></SetGeometryRemoved><!-- MachineTool events --><MachineToolCollisionTypeChanged event_group="MachineTool"><MachineToolCollisionType/></MachineToolCollisionTypeChanged><MachineToolMovement event_group="MachineTool"><AuxI/><AuxJ/><AuxK/><CollisionState/><ComponentType/><ComponentTypeChanged/><DirI/><DirJ/><DirK/><Feed/><FeedChanged/><MoveType/><MoveTypeChanged/><Name/><PointGeometry/><PointGeometryChanged/><PosX/><PosY/><PosZ/><SpindleSpeed/><SpindleSpeedChanged/><Time/><TimeValid/><Tool/><ToolChanged/></MachineToolMovement><!-- NX程序 事件 --><NCProgramItemAdded event_group="NCProgram"><InsertedItemName/><InsertedItemType/><Name/></NCProgramItemAdded><NCProgramItemRemoved event_group="NCProgram"><Name/><RemovedItemName/><RemovedItemType/></NCProgramItemRemoved><NCProgramWritten event_group="NCProgram"><Name/><OutputFormat/><OutputPath/><OutputType/></NCProgramWritten><!-- 参数事件 --><CurrentParameterChanged event_group="Parameter"><ParameterName/><PreviousValue/><Value/></CurrentParameterChanged><SimulationStateParameterChanged event_group="Parameter"><ParameterName/><PreviousValue/><Value/></SimulationStateParameterChanged><EntityParameterChanged event_group="Parameter"><EntityName/><EntityType/><ParameterName/><PreviousValue/><Value/></EntityParameterChanged><SystemParameterChanged event_group="Parameter"><ParameterName/><PreviousValue/><Value/></SystemParameterChanged><!-- Pattern events --><PatternGeometryModified event_group="Pattern"><Name/></PatternGeometryModified><!-- 设置 events --><SetupToolpathsReordered event_group="Setup"><Name/></SetupToolpathsReordered><SetupToolpathRemoved event_group="Setup"><Name/><ToolpathName/></SetupToolpathRemoved><SetupToolpathAdded event_group="Setup"><Name/><ToolpathName/></SetupToolpathAdded><!-- 仿真事件 events --><SimulatePlay event_group="Simulate"><Speed/></SimulatePlay><SimulateSearch event_group="Simulate"><Direction/></SimulateSearch><SimulateIssueDetected event_group="Simulate"><Issue/></SimulateIssueDetected><SimulatePause event_group="Simulate"/><SimulateActionComplete event_group="Simulate"><Action/></SimulateActionComplete><SimulateJump event_group="Simulate"><Target/></SimulateJump><SimulateStep event_group="Simulate"><Direction/><Speed/></SimulateStep><!-- 残留模型事件 events --><StockModelStateInvalidated event_group="StockModel"><Name/><StateName/><StateType/></StockModelStateInvalidated><StockModelCalculationFinished event_group="StockModel"><Name/><Process/><Status/></StockModelCalculationFinished><StockModelStateCalculated event_group="StockModel"><Name/><StateName/><StateType/></StockModelStateCalculated><StockModelStateRemoved event_group="StockModel"><Name/><StateName/><StateType/></StockModelStateRemoved><StockModelStateAdded event_group="StockModel"><Name/><StateName/><StateType/></StockModelStateAdded><!-- 刀具事件 --><!----><ToolHolderGeometryModified event_group="Tool"><Name/></ToolHolderGeometryModified><ToolCutterGeometryModified event_group="Tool"><Name/></ToolCutterGeometryModified><ToolShankGeometryModified event_group="Tool"><Name/></ToolShankGeometryModified><!-- 刀轨事件 events --><!--刀轨计算开始--><ToolpathCalculationStarted event_group="Toolpath"><Name/><Process/></ToolpathCalculationStarted><!--刀轨计算结束--><ToolpathCalculationFinished event_group="Toolpath"><Name/><Process/><Status/></ToolpathCalculationFinished>
</PowerMILLEvents>

举个例子:

假如需要在项目打开完毕后执行某个操作

第一步:要找到是否有对应可订阅事件,经过在上述事件列表中的寻找,可知如下事件符合要求

    <ProjectOpened event_group="Application"><Path/><ReadOnly/></ProjectOpened>

第二步:构造委托函数

委托函数原型如下

    /// <summary>/// The delegate for event callbacks./// </summary>/// <param name="event_name">The name of the event that was subscribed to.</param>/// <param name="event_arguments">A dictionary of key/values, which conatins the list of event fields and corresponding data.</param>public delegate void EventCallback(string event_name, Dictionary<string, string> event_arguments);

据此:

//响应项目打开
private void OnProjectOpened(string event_name, Dictionary<string, string> event_arguments)
{//该事件携带两个参数//event_arguments["ReadOnly"] 是否是可读的//event_arguments["Path"] 图档路径}

第三步:订阅事件

注册主要是用到了EventSubscription类

它有两个构造函数

 //=============================================================================/// <summary>/// Constructs an event subscription object without filtering./// </summary>/// <param name="event_name">The name of the event being subscribed to.</param>/// <param name="callback">The function delgate that will be called when a matching event occurs, with all the event data.</param>//// History.// DICC  Who When     What// ----- --- -------- ---------------------------------------------------------// 93978 PSL 10/11/11 Written.//-----------------------------------------------------------------------------public EventSubscription(string event_name, EventCallback callback){m_event_name = event_name;m_callback_function = callback;}//=============================================================================/// <summary>/// Constructs an event subscription object without filtering./// </summary>/// <param name="event_name">The name of the event being subscribed to.</param>/// <param name="filter_field">The name of the filter field.</param>/// <param name="filter_value">The data within the specified field that must match the event.</param>/// <param name="callback">The function delgate that will be called when a matching event occurs, with all the event data.</param>//// History.// DICC  Who When     What// ----- --- -------- ---------------------------------------------------------// 93978 PSL 10/11/11 Written.//-----------------------------------------------------------------------------public EventSubscription(string event_name, string filter_field, string filter_value, EventCallback callback){m_event_name = event_name;m_filter_field = filter_field;m_filter_value = filter_value;m_callback_function = callback;}

简单来说:第一种是直接注册,第二种是参数过滤

在这里只用第一种注册

            var even = new EventSubscription("ProjectOpened", OnProjectOpened);EventUtil.Subscribe(even);

而后PM,打开一个项目后,这个函数就被调用

PowerMill二次开发——插件响应PM变化相关推荐

  1. C语言powermill二次开发,Powermill二次开发的必要性以及重要性

    **上所有的编程软件在开发时都以功能全面为路线, Powermill作为**性的主流CAM编程软件,力求让powermill适用于全球不同类型的各个加工行业,在功能全面的同时也导致了一些问题的出现. ...

  2. 关于C#对AutoCad2007二次开发插件工作总结

    上次写关于cad二次开发插件的文章,还是在插件的开发过程中,今天写的是功能已经基本开发完毕,用户开始使用的这样一个节点,进行一个小小的总结吧 此次开发插件,主要分了几个大的功能点,功能点的是来自于用户 ...

  3. Solid Edge 二次开发插件 ProkitAddIn 属性管理器

    Solid Edge 二次开发插件 ProkitAddIn 属性管理器 特点: 涵盖与Solid Edge自带的"属性管理器"的基本功能. 额外增加外部数据(具有关联关系的数据,或 ...

  4. PrestaShop二次开发-插件|支付|模板|跳转|功能|模块|外贸信用卡-1

    2019独角兽企业重金招聘Python工程师标准>>> [Modules]Category Batch Seo [Modules]Product Batch Seo [Modules ...

  5. CAD二次开发 插件初始化接口IExtensionApplication

    前言:在实际项目开发中,我们总会遇到一些问题.比如说在CAD打开之前,修改注册表的内容,或者解决CAD在没有完全加载想要的dll情况下,功能运行报错的bug.因此,下面和大家介绍一下IExtensio ...

  6. 异构数据源导redis不用找了!DataX二次开发插件rediswriter已上菜

    rediswriter代码地址: https://github.com/lijufeng2016/DataX-redis-writer 合并后DataX完整代码地址: https://github.c ...

  7. PrestaShop二次开发-插件|支付|模板|跳转|功能|模块|外贸信用卡-2

    2019独角兽企业重金招聘Python工程师标准>>> PrestaShop支付接口-Tenpay支付,财付通支付,外贸收款在线支付 PrestaShop支付-快钱多站点跳转-支持多 ...

  8. PowerMill二次开发资料集-Powermill常用宏命令预览表

    Powermill常用宏命令预览表 下表列出了Powermill系统的一些常用和实用命令.应用这些命令的路径是在PowerMill的下拉菜单中执行工具-显示命令,打开Powermill命令操作窗口输入 ...

  9. Solid Edge 二次开发插件 工程图环境下根据装配视图批量生成图纸页

    特点: 可预先配置模板参数.如:是否同时生成零件明细表.零件明细表模板.是否自动符号标注.生成特定视图等. 根据装配.零件.钣金零件类型,可分别匹配不同的图纸页模板及配置参数(如:不同的图纸图幅.不同 ...

最新文章

  1. 向量算子优化Vector Operation Optimization
  2. Request参数值自动去空格
  3. Apache Flink 零基础入门(五)Flink开发实时处理应用程序
  4. 自然语言15_Part of Speech Tagging with NLTK
  5. VMware Workstation中Linux虚拟机安装VMware-Tools
  6. 2021年B站创作者生态报告
  7. 面试中有这些特征的公司可以pass了
  8. Matplotlib 中文显示方框 最简单解决方案
  9. ubuntu安装ros_ROS--Melodic 安装
  10. java自定义equals函数和hashCode函数
  11. 【前端干货】CSS 的空格处理
  12. 【easy】101. Symmetric Tree
  13. 招聘贴---这个很重要嘛
  14. logo下方显示技术支持信息_LOGO墙形象设计的几种方案
  15. explain如何查看mysql_MySQL(九)|如何查看执行计划(Explain)
  16. 慎用 JSON.stringify
  17. LIO-SAM后端中的回环检测及位姿计算
  18. OLE、ActiceX、COM、DLL
  19. 斯坦福SCI论文写作课笔记(十)
  20. potplayer最佳设置_PotPlayer调整常用设置让播放器效果更佳的具体操作流程

热门文章

  1. mvn Mac Linux 版本,Mac 下 Maven 的命令行安装
  2. English Grammar-奋斗的开始-简单句(二)
  3. 邓白氏码、苹果公司/企业开发者账号最新申请流程(2019)
  4. 用计算机画图截图图片,如何使用系统自带画图工具截图?电脑画图工具截图操作详解...
  5. azkaban执行各种job任务
  6. python将列表平分
  7. 香橙派全志H3烧入U-boot和Linux内核以及配置
  8. 数列的组合及排列方式java_java数组排列组合
  9. 建筑施工技术【19】
  10. 基于C++和QT实现的旅店管理系统 课程论文+项目源码