引入DLL
1.引用软件安装目录下的文件"SolidWorks.Interop.sldworks.dll"、“SolidWorks.Interop.swconst.dll”;
注:我的软件安装目录"C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS"
Imports System.Runtime.InteropServices
Imports SolidWorks.Interop.sldworks
Imports SolidWorks.Interop.swconst
主要功能实现
Private Declare Function GetActiveObject Lib "oleaut32.dll" (ByRef rclsid As Guid, ByVal pvReserved As IntPtr,
<MarshalAs(UnmanagedType.IUnknown)> ByRef ppunk As Object) As Integer
Public Function ConnectToSolidWorks(Optional version As Integer = -1) As SldWorks
'Return GetSolidWorks()
Dim app As SldWorks = Nothing
Dim myGuid As Guid = Nothing
If version = -1 Then
myGuid = Type.GetTypeFromProgID("SldWorks.Application").GUID
Else
myGuid = Type.GetTypeFromProgID("SldWorks.Application." + version.ToString()).GUID
End If
GetActiveObject(myGuid, IntPtr.Zero, app)
Return app
End Function
Public Function GetSolidWorks(Optional version As Integer = -1) As SldWorks
Dim app As SldWorks = Nothing
Dim myGuid As Guid = Nothing
If version = -1 Then
myGuid = Type.GetTypeFromProgID("SldWorks.Application").GUID
Else
myGuid = Type.GetTypeFromProgID("SldWorks.Application." & version.ToString()).GUID
End If
GetActiveObject(myGuid, IntPtr.Zero, app)
Return app
End Function
测试是否成功
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim swApp As SldWorks = ConnectToSolidWorks()
If swApp IsNot Nothing Then
Debug.Print("Solidworks已启动:" & swApp.RevisionNumber())
Else
Debug.Print("Solidworks未启动!")
End If
End Sub