Hallo ihr alle
Ich brauche ein wenig Hilfe mit einem meiner Makros! Normalerweise schaffe ich das, aber diesmal nicht.
Ich möchte alle Funktionen eines Teils oder einer Baugruppe durchsuchen
In vba, mit einem in SolidWorks integrierten Makro, komme ich mit dem folgenden Code dorthin.
Aber ich würde es gerne in Vb.net tun können , ohne Solidworks öffnen zu müssen.
Ich habe einen Fehler in der letzten Zeile. Ich habe den Eindruck, dass Sie nicht auf swFeat zugreifen können, ohne SolidWorks zu öffnen?
Wenn mir jemand helfen kann, wäre das cool!
Vielen Dank
VBA-Code:
Dim swApp As SldWorks.SldWorks
Set swApp = Application.SldWorks
Dim swModel As SldWorks.ModelDoc2
Set swModel = swApp.ActiveDoc
If Not swModel Is Nothing Then
Dim swFeat As SldWorks.Feature
Set swFeat = swModel.FirstFeature
While Not swFeat Is Nothing
Debug.Print " " & swFeat.Name & " [" & swFeat.GetTypeName & "]"
Set swFeat = swFeat.GetNextFeature
Wend
End If
Vb.net Code:
Dim sDocFileName = "W:\...."
Dim swClassFact As SwDMClassFactory
Dim swDocMgr As SwDMApplication
Dim swDoc As SwDMDocument17
Dim nDocType As Integer
Dim nRetVal As Integer
Dim swCfgMgr As SwDMConfigurationMgr
If InStr(LCase(sDocFileName), "sldasm") > 0 Then
nDocType = SwDmDocumentType.swDmDocumentAssembly
Else
nDocType = SwDmDocumentType.swDmDocumentUnknown
Exit Sub
End If
If (nDocType = SwDmDocumentType.swDmDocumentAssembly) Then
swClassFact = CreateObject("SwDocumentMgr.SwDMClassFactory") 'si bug :Frameworks cible = .NET Framework 4
swDocMgr = swClassFact.GetApplication(sLicenseKey)
swDoc = swDocMgr.GetDocument(sDocFileName, nDocType, True, nRetVal)
swCfgMgr = swDoc.ConfigurationManager
Select Case nRetVal
Case 0
Debug.Print("File successfully opened : ")
End Select
End If
Debug.Print("File = " & swDoc.FullName)
Debug.Print("Active Configuration Name = " & swCfgMgr.GetActiveConfigurationName)
Dim swSelMgr As SelectionMgr
Dim swFeat As Feature
swSelMgr = swDoc.SelectionManager
swFeat = swCfgMgr.GetSelectedObject6(1, -1)