Veralteter VBA-Code aktualisiert

  Hallo ihr alle

Ich habe ein Solidworks-Makro, das in VBA codiert ist und mehrere Jahre alt ist.

Seitdem habe ich gesehen, dass einige Funktionen veraltet sind und daher ersetzt werden müssen.

Ich möchte dieses Makro unter Version Sw2020 und höher verwenden. 

Wenn ich mir die APi Solidworks Hilfe anschaue, kann ich die veralteten Funktionen sehen, die durch ihre neuen Namen ersetzt werden müssen.

Auf der anderen Seite kann ich diesen Code immer noch nicht zum Laufen bringen ...

Ich fühle mich mit der VBA überhaupt nicht wohl und deshalb bitte ich Sie um Ihre Hilfe.

Es ist ein Thema, das sich schon seit geraumer Zeit hinzieht, aber ich habe mir nicht die Zeit genommen, mich damit auseinanderzusetzen.

Wenn eine freundliche Seele einen Blick darauf werfen und mir sagen könnte, wie ich den Code aktualisieren kann.

Ich habe bereits damit begonnen, den Code mit den neuen Funktionen zu aktualisieren, aber ich blockiere ...

Um es in groben Zügen zu erklären: Das Makro soll:

- Exportieren Sie die abgewickelte Version jeder Konfiguration eines Blechteils in dxf oder dwg mit einem im Code definierten Variablennamen.

Ich hänge das Makro an, im Moment habe ich einen Fehler auf swModel.GetConfigurationNames

Vielen Dank im Voraus für Ihre Hilfe! =)

 


oldvba.txt

Hallo;
Hier ist mein Vorschlag:
-Hinweis: Versuchen Sie, Ihren Code in der Nachricht und nicht als Anhang zu veröffentlichen, es ist beruhigender, einen Code zu "sehen", anstatt ihn herunterzuladen.
-Hinweis 2: Vermeiden Sie Akzente im VB (Visual Basic) Code um jeden Preis
 

Dim swApp As Object
Option Explicit

'Enumeration des Option Choisies pour les Exports en DXF (A plat)
' Voir https://help.solidworks.com/2020/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.ipartdoc~exporttodwg2.html

Enum SheetMetalOptions_e
    ExportFlatPatternGeometry = 1
    IncludeHiddenEdges = 2
    ExportBendLines = 4
    IncludeSketches = 8
    MergeCoplanarFaces = 16
    ExportLibraryFeatures = 32
    ExportFormingTools = 64
    ExportBoundingBox = 2048
End Enum

Sub main()
' Declaration:
Dim swApp                   As SldWorks.SldWorks
Dim swModel                 As SldWorks.ModelDoc2
Dim config                  As SldWorks.Configuration
Dim vConfNameArr            As Variant
Dim sConfigName             As String
Dim i                       As Long
Dim bShowConfig             As Boolean
Dim bRebuild                As Boolean
Dim bRet                    As Boolean
Dim FilePath                As String
Dim PathSize                As Long
Dim PathNoExtension         As String
Dim NewFilePath             As String
Dim Value_T                 As String
Dim ResolvedValOut          As String
Dim cusPropMgr              As SldWorks.CustomPropertyManager
Dim wasResolved             As Boolean
Dim Error                   As Long


    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc

vConfNameArr = swModel.GetConfigurationNames 'Creation de la liste des configurations

For i = 0 To UBound(vConfNameArr) 'Boucle la liste : de l'element 0 jusqu'au nombre d'element dans la liste (Ubound)
    Set config = swModel.GetActiveConfiguration
    Set cusPropMgr = config.CustomPropertyManager
    sConfigName = vConfNameArr(i) 'Recupere l'elementt Numero i de la liste
    bShowConfig = swModel.ShowConfiguration2(sConfigName) 'Affiche la configuration
    
    Error = cusPropMgr.Get5("TYPE", True, Value_T, ResolvedValOut, wasResolved) 'Recupere la valeur de la proriete "T" dans la variable "Value_T"
    bRebuild = swModel.ForceRebuild3(False) 'Reconstruction du modèle
    
    FilePath = swModel.GetPathName 'Recupere le chemin du fichier SW
    PathSize = Strings.Len(FilePath) 'Compte le nombre de caracteres du chemin
    
        PathNoExtension = Strings.Left(FilePath, PathSize - 6) 'Recupere le nom de la piecece en enlevant .Sldrt
        NewFilePath = Left(FilePath, InStrRev(FilePath, "\")) & sConfigName & ".DXF" 'Remplace le nom par Type + Lg + Nom de la config (sans Flat pattern).dxf

    If False = swModel.ExportToDWG2(NewFilePath, FilePath,  swExportToDWG_e.swExportToDWG_ExportSheetMetal, True, Empty, False, False, SheetMetalOptions_e.ExportFlatPatternGeometry + SheetMetalOptions_e.ExportBendLines, Empty) Then
        Err.Raise vbError, "", "Failed to export flat pattern"
    End If
    
Next i 'Passe a la prochaine config

bShowConfig = swModel.ShowConfiguration2(vConfNameArr(0)) 'Retour sur la Configuration Principale
End Sub

 

Herzliche Grüße.

3 „Gefällt mir“

Ich habe gerade das Makro getestet!

Sie macht keine Fehler und das ist cool!

Alles, was übrig bleibt, ist, den Speicherstand bei jeder Konfiguration zu entfernen, da ich jedes Mal auf "Speichern" klicken und ihm sagen muss, dass die Biegelinien nicht exportiert werden sollen.

Also denke ich, ich ändere die Zeile ExportBendLines=4 in ExportBendLines=0 oder einen anderen Hinweis^^

Wenn ich dann die Aufzeichnung entfernen möchte, sehe ich nicht, welche Zeile ich ändern muss. Vielleicht nur eine Option in Sw zum Ändern.

 

Auf jeden Fall ein großes Dankeschön, denn der Code ist wirklich toll! =)