本文作者:溪风博客

SolidWorks二次开发api插件模板代码浅析

SolidWorks二次开发api插件模板代码浅析摘要: 前面的文章分享了SolidWorks二次开发的api安装和vs2019软件里面的创建项目,今天分享SolidWorks api项目模板的代码浅析,因为溪风二次开发水平有限只能浅析,...

前面的文章分享了SolidWorks二次开发的api安装和vs2019软件里面的创建项目,今天分享SolidWorks api项目模板的代码浅析,因为溪风二次开发水平有限只能浅析,如有错误,欢迎指正。

官方代码我分为7个部分分享,如图所示。

SolidWorks二次开发api插件模板代码浅析  第1张


Region "Local Variables"

这个翻译过来就是本地局部变量,也就是这个代码段,全部声明变量用的。

Dim WithEvents iSwApp As SldWorks
    Dim iCmdMgr As ICommandManager
     ' 比如这个用来声明commandmanger命令区上面的命令
    Dim addinID As Integer
    Dim openDocs As Hashtable
    Dim SwEventPtr As SldWorks
    Dim ppage As UserPMPage
    Dim iBmp As BitmapHandler
    ’这个是命令图标用的
    Dim frame As IFrame
    Dim bRet As Boolean
    Dim registerID As Integer

    Public Const mainCmdGroupID As Integer = 0
    Public Const mainItemID1 As Integer = 0
    Public Const mainItemID2 As Integer = 1
    Public Const flyoutGroupID As Integer = 91

    ' Public Properties
    ReadOnly Property SwApp() As SldWorks
        Get
            Return iSwApp
        End Get
    End Property

    ReadOnly Property CmdMgr() As ICommandManager
        Get
            Return iCmdMgr
        End Get
    End Property

    ReadOnly Property OpenDocumentsTable() As Hashtable
        Get
            Return openDocs
        End Get
    End Property

#Region "SolidWorks Registration"

这个代码是SolidWorks插件注册,也就是我们的插件写好了,要加载到SolidWorks里面,官方写好了,那么我就没动

#Region "ISwAddin Implementation"

这个还是比较重要的,引入SolidWorks插件,包括SolidWorks连接和断开。

Function ConnectToSW(ByVal ThisSW As Object, ByVal Cookie As Integer) As Boolean Implements SolidWorks.Interop.swpublished.SwAddin.ConnectToSW
'连接SolidWorks之后执行的函数
        iSwApp = ThisSW
        addinID = Cookie

        ' Setup callbacks
        iSwApp.SetAddinCallbackInfo(0, Me, addinID)

        ' Setup the Command Manager
        iCmdMgr = iSwApp.GetCommandManager(Cookie)
        AddCommandMgr()
'加载commandmanger函数,比如增加命令图标文字函数
        'Setup the Event Handlers
        SwEventPtr = iSwApp
        openDocs = New Hashtable
        AttachEventHandlers()

        'Setup Sample Property Manager
        AddPMP()
'这都是勾选插件之后自动执行的函数
        ConnectToSW = True
    End Function

    Function DisconnectFromSW() As Boolean Implements SolidWorks.Interop.swpublished.SwAddin.DisconnectFromSW
'断开SolidWorks,也就是SolidWorks插件取消勾选之后要执行的函数
        RemoveCommandMgr()
        RemovePMP()
        DetachEventHandlers()
’取消勾选插件之后要执行,SolidWorks界面移除命令区移除插件菜单
        System.Runtime.InteropServices.Marshal.ReleaseComObject(iCmdMgr)
        iCmdMgr = Nothing
        System.Runtime.InteropServices.Marshal.ReleaseComObject(iSwApp)
        iSwApp = Nothing
        'The addin _must_ call GC.Collect() here in order to retrieve all managed code pointers 
        GC.Collect()
        GC.WaitForPendingFinalizers()

        GC.Collect()
        GC.WaitForPendingFinalizers()

        DisconnectFromSW = True
    End Function

#Region "UI Methods"

这个也非常的重要,翻译过来就是UI方法,也就是SolidWorks插件界面实现的方法。非常重要,仔细比对一遍。

SolidWorks二次开发api插件模板代码浅析  第2张

比如添加SolidWorks菜单,添加commandmanger菜单等,然后到api帮助文档里面查方法的使用,比如AddCommandItem2这个方法,然后去搜

SolidWorks二次开发api插件模板代码浅析  第3张

这里也有解释,添加标题,名字,注释,图标,执行的函数等等,传进去。

SolidWorks二次开发api插件模板代码浅析  第4张

#Region "Event Methods"

下面这些就是上面调用函数的本体了,你调用的函数,就这 里面写要实现干嘛!

#Region "UI Callbacks"

比如这个里面放的是UI调用的函数,比如第一个就是创建立方体,其实这里开始就考验大家的函数学习情况了,比如C#如何写,vb如何写

SolidWorks二次开发api插件模板代码浅析  第5张

以上就是溪风自己整理的SolidWorks二次开发学习文档,记录自己学习,也分享大家交流。

本站声明

除特殊说明外,本站软件及资料取自网络,仅供交流学习下载测试使用,请24小时删除,请勿用于商业用途,版权归原作者所有。

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享

发表评论

快捷回复:

验证码

评论列表 (暂无评论,338人围观)参与讨论

还没有评论,来说两句吧...