Calling Add-ins (C#)

news/2024/11/18 0:41:17/

本范例展示如何通过实现 IEdmAddIn5::GetAddInInfo 和 IEdmAddIn5::OnCmd 去创建一个当用户在数据卡中点击一个按钮时被调用的Visual C# add-in程序。这个add-in在用户浏览文件时打开一个对话框. add-in 将所选文件的路径复制到 文件的数据卡。

注意: 因为 SOLIDWORKS PDM Professional 无法强制重新加载 .NET 中编写的Add-in程序。必须重新启动所有客户端计算机,以确保使用最新版本的外接程序。 


  1.   启动VS。
  2. 新建项目,选择类库。                                    
  3. 在“解决方案资源管理器”中右键单击项目名称 ,然后单击添加引用。
    1. 单击 COM 在 左侧面板,单击PDMWorks Enterprise 2019 Type Library,然后单击添加

    2. 如果需要,引入相关的程序集。
    3. 设置Interop.EdmLib的嵌入互操作类型为False。
  4. 在“解决方案资源管理器”中右击项目名称,然后单击“属性”。
    1. “应用程序>程序集信息”。                         
    2. 取消勾选“使程序集 COM 可见(M)”。                         
  5. 修改Class1.cs。这里修改类名为CallAddin.cs。
    1.  添加和创建GUID。
    2. 修改代码
using System;
using EdmLib;//添加
using System.Runtime.InteropServices;//添加namespace Calling_Add_ins
{[Guid("20637265-0AAC-4730-BA59-43C4395B2D2A"),ComVisible(true)]public class CallAddin : IEdmAddIn5{}
}

  1. 实现 IEdmAddIn5::GetAddInInfo 和IEdmAddIn5::OnCmd                                                                                                                                                       ​​
    using System;
    using EdmLib;//添加
    using System.Runtime.InteropServices;//添加namespace Calling_Add_ins
    {[Guid("20637265-0AAC-4730-BA59-43C4395B2D2A"),ComVisible(true)]public class CallAddin : IEdmAddIn5{public void GetAddInInfo(ref EdmAddInInfo poInfo, IEdmVault5 poVault, IEdmCmdMgr5 poCmdMgr){//Specify information to display in the add-in's Properties dialog boxpoInfo.mbsAddInName = "My Calling Add-ins";poInfo.mbsCompany = "JXEM";poInfo.mbsDescription = "JXEM Add-ins";poInfo.mlAddInVersion = 1;poInfo.mlRequiredVersionMajor = 5;poInfo.mlRequiredVersionMinor = 2;//Notify the add-in when a file data card button is clickedpoCmdMgr.AddHook(EdmCmdType.EdmCmd_CardButton);//按钮}public void OnCmd(ref EdmCmd poCmd, ref Array ppoData){//Respond only to a specific button command  仅响应特定按钮命令//The button command to respond to begins with "MyButton:" and ends with the name of the variable to update in the card //要响应的按钮命令以"MyButton:"开头,以要在卡中更新的变量的名称结尾            if (poCmd.mbsComment.Substring(0, 9) == "MyButton:")    //string mbsComment;Contains name specific to EdmCmd.meCmdType.  {//Get the name of the variable to update. string VarName = poCmd.mbsComment.Substring(9);//Let the user select the file whose path will be copied to the card variable//让用户选择路径将被复制到卡变量的文件//EdmVault5:PDM库  mpoVault:指向库的指针EdmVault5 vault = (EdmVault5)poCmd.mpoVault;//IEdmStrLst5:允许您访问任意字符串的列表。//BrowseForFile:显示“打开”或“另存为”对话框,用户可以在其中单击一个或多个文件。IEdmStrLst5 PathList = vault.BrowseForFile(poCmd.mlParentWnd, (int)EdmBrowseFlag.EdmBws_ForOpen + (int)EdmBrowseFlag.EdmBws_PermitVaultFiles, "", "", "", "", "Select File for " + VarName);if ((PathList != null)){//GetNext	Gets the next string in this list.  //GetHeadPosition	Starts an enumeration of the strings in this list.  string path = PathList.GetNext(PathList.GetHeadPosition());//Store the path in the card variable IEdmEnumeratorVariable5 vars = (IEdmEnumeratorVariable5)poCmd.mpoExtra; //mpoExtra:The type of interface returned depends on the type of command or hook. See EdmCmdData for more information.object VariantPath = path;vars.SetVar(VarName, "", VariantPath);}}return;}}
    }
    
  2. ​单击“生成”>“生成解决方案” ,生成Add-in。
  3. 安装生成的Add-in。
    1. 打开PDM 管理工作。
    2. 登录。
    3. 在插件中添加新插件。
  4. 卡 -> 文件卡 -> Text Card -> 添加按钮 -> 点击按钮 -> 命令类型:运行插件 -> 插件名称:MyButton:Title -> 保存 
  5.  在库中检出txt文件,浏览其数据卡,点击按钮

  6. 选择文件

     

    备注

    本例中,使用 IEdmEnumeratorVariable5::SetVar 设置变量值。你也可以使用IEdmEnumeratorVariable5::GetVar 读变量值.
    使用类似按钮处理程序,您还可以:

    通过检查包含 IEdmStrLst5 文件接口的 EdmCmdData::mpoExtra 变量来检索文件中配置(configurations)、布局(layouts)或两者的数量。

        切换活动配置.

        使用 EdmCmdData 的成员将焦点设置为某个控件。

        在按钮通过将 EdmCmdData::mlLongData1变量设置为 EdmCardFlag 常量后,自动关闭数据卡。

打包:https://download.csdn.net/download/hd51cc/87887323


http://www.ppmy.cn/news/300592.html

相关文章

ROS学习——通信机制(话题通信①—发布方实现)

2.1 话题通信 Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 040话题通信(C)1_发布方框架_Chapter2-ROS通信机制_哔哩哔哩_bilibili 一、ROS 中的基本通信机制主要有如下三种实现策略 话题通信(发布订阅模式服务通信(请求响应模式)参数服务器(参数共享模式) 二、…

UnityVR--组件9--视频组件VideoPlayer

目录 前言 参数解释 RenderMode渲染方式 VideoPlayer类中的API 前言 在之前的VR场景中已经使用过VideoPlayer播放视频(Unity.UI的交互(6)-播放视频),不过在VR中设置是有些不同的,这里更详细地说明一下V…

智汀智能家居知识普及篇——选择智能门锁该考虑什么?

随着科技的发展,智能化产品越来越普遍,智能化产品让我们的生活习惯发生了很大的变化。智能门锁因为其安全性及便捷性深受智能家居用户青睐,而生活中也越来越多人安装智能门锁,无论是刚刚安装的用户还是资深用户,都希望…

智能门锁能实现哪些生活场景?

智能门锁可设置感应开锁,取快递、出门购物更方便。 使用智能门锁后,出门无需再带钥匙 智能门锁可通过手机APP远程控制 智能家居行业近几年来的发展如火如荼。然而,对于大众消费者而言,大多数的智能家居仍然停留在“增加手机控制”这样不痛不痒功能层面上。 或许目前还未能实…

智能门锁--准备篇

现代生活充满了科技感,各行业大佬都在积极布局智能生活,相伴出现了智能机器人,智能语音助手,智能监控等等智能设备,智能时代悄然走进了大众的生活中,并将起到很重要的作用。 为了不落下时代的进步&#x…

目前智能门锁的发展,主要面临哪些挑战?

1、产品仍面临安全可靠性问题: 无论是传统机械锁还是智能锁,第一要务就是保证安全。智能门锁依赖移动互联网、机械制造技术、机械防盗技术、电子加密技术、认证技术的完美结合,许多性能的落地有待于技术开发与完善,这需要一定的时…

智能门锁真的靠谱吗?

智能门锁靠谱吗? 任何的吹嘘都比不上一组真实的客观数据来的有说服力。 1.智能门锁的渗透率 目前,欧美国家智能门锁的渗透率已超过35%,日韩60%的渗透率仍大有可为。而国内市场家庭智能门锁的渗透率(截止2018年6月底)仅在5%水平…

八爪鱼南都行|人工智能助力智能门锁行业研究

2018年8月4日,《南方都市报》旗下南都鉴定评测实验室于广州举办智能家居发展论坛暨南都评测智能门锁榜单发布会,发布《智能门锁评测试验报告》。报告评测了市场上20个主流智能门锁品牌,其中性能综合能力排名前十的智能门锁产品,获…