PowerMill二次开发——插件响应PM变化
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变化相关推荐
- C语言powermill二次开发,Powermill二次开发的必要性以及重要性
**上所有的编程软件在开发时都以功能全面为路线, Powermill作为**性的主流CAM编程软件,力求让powermill适用于全球不同类型的各个加工行业,在功能全面的同时也导致了一些问题的出现. ...
- 关于C#对AutoCad2007二次开发插件工作总结
上次写关于cad二次开发插件的文章,还是在插件的开发过程中,今天写的是功能已经基本开发完毕,用户开始使用的这样一个节点,进行一个小小的总结吧 此次开发插件,主要分了几个大的功能点,功能点的是来自于用户 ...
- Solid Edge 二次开发插件 ProkitAddIn 属性管理器
Solid Edge 二次开发插件 ProkitAddIn 属性管理器 特点: 涵盖与Solid Edge自带的"属性管理器"的基本功能. 额外增加外部数据(具有关联关系的数据,或 ...
- PrestaShop二次开发-插件|支付|模板|跳转|功能|模块|外贸信用卡-1
2019独角兽企业重金招聘Python工程师标准>>> [Modules]Category Batch Seo [Modules]Product Batch Seo [Modules ...
- CAD二次开发 插件初始化接口IExtensionApplication
前言:在实际项目开发中,我们总会遇到一些问题.比如说在CAD打开之前,修改注册表的内容,或者解决CAD在没有完全加载想要的dll情况下,功能运行报错的bug.因此,下面和大家介绍一下IExtensio ...
- 异构数据源导redis不用找了!DataX二次开发插件rediswriter已上菜
rediswriter代码地址: https://github.com/lijufeng2016/DataX-redis-writer 合并后DataX完整代码地址: https://github.c ...
- PrestaShop二次开发-插件|支付|模板|跳转|功能|模块|外贸信用卡-2
2019独角兽企业重金招聘Python工程师标准>>> PrestaShop支付接口-Tenpay支付,财付通支付,外贸收款在线支付 PrestaShop支付-快钱多站点跳转-支持多 ...
- PowerMill二次开发资料集-Powermill常用宏命令预览表
Powermill常用宏命令预览表 下表列出了Powermill系统的一些常用和实用命令.应用这些命令的路径是在PowerMill的下拉菜单中执行工具-显示命令,打开Powermill命令操作窗口输入 ...
- Solid Edge 二次开发插件 工程图环境下根据装配视图批量生成图纸页
特点: 可预先配置模板参数.如:是否同时生成零件明细表.零件明细表模板.是否自动符号标注.生成特定视图等. 根据装配.零件.钣金零件类型,可分别匹配不同的图纸页模板及配置参数(如:不同的图纸图幅.不同 ...
最新文章
- 向量算子优化Vector Operation Optimization
- Request参数值自动去空格
- Apache Flink 零基础入门(五)Flink开发实时处理应用程序
- 自然语言15_Part of Speech Tagging with NLTK
- VMware Workstation中Linux虚拟机安装VMware-Tools
- 2021年B站创作者生态报告
- 面试中有这些特征的公司可以pass了
- Matplotlib 中文显示方框 最简单解决方案
- ubuntu安装ros_ROS--Melodic 安装
- java自定义equals函数和hashCode函数
- 【前端干货】CSS 的空格处理
- 【easy】101. Symmetric Tree
- 招聘贴---这个很重要嘛
- logo下方显示技术支持信息_LOGO墙形象设计的几种方案
- explain如何查看mysql_MySQL(九)|如何查看执行计划(Explain)
- 慎用 JSON.stringify
- LIO-SAM后端中的回环检测及位姿计算
- OLE、ActiceX、COM、DLL
- 斯坦福SCI论文写作课笔记(十)
- potplayer最佳设置_PotPlayer调整常用设置让播放器效果更佳的具体操作流程
热门文章
- mvn Mac Linux 版本,Mac 下 Maven 的命令行安装
- English Grammar-奋斗的开始-简单句(二)
- 邓白氏码、苹果公司/企业开发者账号最新申请流程(2019)
- 用计算机画图截图图片,如何使用系统自带画图工具截图?电脑画图工具截图操作详解...
- azkaban执行各种job任务
- python将列表平分
- 香橙派全志H3烧入U-boot和Linux内核以及配置
- 数列的组合及排列方式java_java数组排列组合
- 建筑施工技术【19】
- 基于C++和QT实现的旅店管理系统 课程论文+项目源码