Macro Opslaan als PDF/DWG/STEP

Hallo

Omdat ik niets weet over coderen, heb ik hulp nodig bij het ontwikkelen van een macro op solidworks waarmee ik via een tekening een PDF-, DXF- en een step-bestand kan maken.
Ik zou ook graag pdf's met de naam van het onderdeel willen kunnen opslaan zonder wijzigingen aan te brengen.

Bedankt dat je me hebt geholpen

Misschien wordt dit type macro gepresenteerd in het antwoord op een soortgelijke vraag

http://www.lynkoa.com/forum/cao/macro-d-enregistrement-en-pdf-et-dxf-dans-un-dossier-externe

 

4 likes

Hallo

Na wat onderzoek vond ik een macro-opdracht waarmee ik een PDF- en DXF-bestand van de tekening kon maken.

Ik moet aan dit commando een code toevoegen om een stap ficier uit de kamer te maken, het enige probleem is dat ik geen idee heb wat ik moet toevoegen.

Een beetje hulp zou welkom zijn.

Hallo

Maak de macro beschikbaar, wij vertellen je wat er ontbreekt.

1 like

Dankzij deze macro-opdracht ben ik erin geslaagd om op te slaan in PDF en DXF

Dim swApp als SldWorks.SldWorks
Dim swModel als ModelDoc2
Dim lErrors zo lang
Dim lWaarschuwingen zo lang mogelijk

Sub hoofd()

Stel swApp = Toepassing.SldWorks in
Stel swModel = swApp.ActiveDoc in
swModel.Extension.SaveAs GetFilename(swModel.GetPathName) & " " & swModel.GetCustomInfoValue("", "Review") & ".pdf", swSaveAsCurrentVersion, swSaveAsOptions_Silent, Nothing, lErrors, lWarnings
swModel.Extension.SaveAs GetFilename(swModel.GetPathName) & " " & swModel.GetCustomInfoValue("", "Revisie") & ".dxf", swSaveAsCurrentVersion, swSaveAsOptions_Silent, Nothing, lErrors, lWarnings
Einde Sub

Functie GetFilename(strPath As String) Als String
Dim strTemp als snaar
strTemp = Mid$(strPath, InStrRev(strPath, "\") + 1)
GetFilename = Left$(strTemp, InStrRev(strTemp, ".") - 1)
Functie beëindigen

Hallo

Bijgevoegd is de bijbehorende code

Option Explicit

Public Enum swDocumentTypes_e
    swDocNONE = 0       ' Used to be TYPE_NONE

    swDocPART = 1       ' Used to be TYPE_PART

    swDocASSEMBLY = 2   ' Used to be TYPE_ASSEMBLY

    swDocDRAWING = 3    ' Used to be TYPE_DRAWING
End Enum
 
Dim swApp                       As SldWorks.SldWorks
Dim swModel                     As SldWorks.ModelDoc2
Dim swDraw                      As SldWorks.DrawingDoc
Dim swView                      As SldWorks.View
Dim swConfig                    As SldWorks.Configuration

Dim vSheetNameArr               As Variant
Dim vSheetName                  As Variant

Dim I                           As Long
Dim nDocType                    As Long
Dim op                          As Long
Dim suppr                       As Long
Dim lErrors                     As Long
Dim lWarnings                   As Long

Dim boolstatus                  As Boolean
Dim bRet                        As Boolean
Dim FileConnu                   As Boolean

Dim nbConnu                     As Integer

Dim sModelName                  As String
Dim sPathName                   As String
Dim TabConnu(10000)             As String
Dim sConfigName                 As String

Sub Main()



Set swApp = Application.SldWorks

boolstatus = swApp.SetUserPreferenceIntegerValue(swStepAP, 214) 'Force la version AP214
boolstatus = swApp.SetUserPreferenceIntegerValue(swStepExportPreference, swAcisOutputGeometryPreference_e.swAcisOutputAsSolidAndSurface) 'Force l'export en format Solid/Surface Geometry

Set swModel = swApp.ActiveDoc
swModel.Extension.SaveAs GetFilename(swModel.GetPathName) & " " & swModel.GetCustomInfoValue("", "Révision") & ".pdf", swSaveAsCurrentVersion, swSaveAsOptions_Silent, Nothing, lErrors, lWarnings
swModel.Extension.SaveAs GetFilename(swModel.GetPathName) & " " & swModel.GetCustomInfoValue("", "Révision") & ".dxf", swSaveAsCurrentVersion, swSaveAsOptions_Silent, Nothing, lErrors, lWarnings

Call ExportStep

End Sub

Function GetFilename(strPath As String) As String
Dim strTemp As String
strTemp = Mid$(strPath, InStrRev(strPath, "\") + 1)
GetFilename = Left$(strTemp, InStrRev(strTemp, ".") - 1)


End Function
Sub ExportStep()
Set swDraw = swModel
vSheetName = swDraw.GetSheetNames
vSheetNameArr = swDraw.GetSheetNames

For Each vSheetName In vSheetNameArr
        
    bRet = swDraw.ActivateSheet(vSheetName): Debug.Assert bRet
    Set swView = swDraw.GetFirstView 'Sélectionne le fond de plan
    Set swView = swView.GetNextView  'Passe à la vue suivante pour exclure le fond de plan
                
    While Not swView Is Nothing
           
        ' Determine if this is a view of a part or assembly

        sModelName = swView.GetReferencedModelName

        sModelName = LCase(sModelName)
                        
        sConfigName = swView.ReferencedConfiguration
        
        FileConnu = False
        
        If InStr(sModelName, "sldprt") > 0 Then
            nDocType = swDocPART
        ElseIf InStr(sModelName, "slasm") > 0 Then
            nDocType = swDocASSEMBLY
        Else
            nDocType = swDocNONE
            Exit Sub
        End If
                       
        If nDocType = 1 Then
            For I = 1 To nbConnu
                If UCase(sModelName) & " - " & UCase(sConfigName) = TabConnu(I) Then
                    FileConnu = True
                End If
            Next
            If Not FileConnu Then
                nbConnu = nbConnu + 1
                TabConnu(nbConnu) = UCase(sModelName) & " - " & UCase(sConfigName)
                Call Export
            End If
        End If
        
        Set swView = swView.GetNextView
    Wend

Next vSheetName



End Sub
Sub Export()
Set swModel = swApp.ActivateDoc3(sModelName, True, swOpenDocOptions_Silent, lErrors)
Set swModel = swApp.ActiveDoc
boolstatus = swModel.ShowConfiguration2(sConfigName)
Set swConfig = swModel.GetActiveConfiguration
sPathName = swModel.GetPathName & ".step"
If Dir(sPathName, vbHidden) <> "" Then              'Test l'existence du fichier
    suppr = MsgBox("Le fichier " & sPathName & " existe déjà, voulez vous le supprimer?", vbYesNo) 'Message utilisateur confirmation de suppression oui/non
        If suppr = vbYes Then                       'Réponse Oui
            Kill (sPathName) 'Suppression du fichier existant
            swModel.SaveAs2 sPathName, 0, True, False  'Enregistrement du fichier
            op = MsgBox("Le fichier a été enregistré sous " & sPathName & vbNewLine)
            Else                                    'Réponse NON
        MsgBox ("Fichier conservé")                 'Message utilisateur
        End If
        Else
        swModel.SaveAs2 sPathName, 0, True, False      'Enregistrement du fichier
        op = MsgBox("Le fichier a été enregistré sous " & sPathName) 'Message utilisateur
    End If
swApp.CloseDoc (sModelName)
Set swModel = swApp.ActiveDoc
End Sub

 

Het heeft alleen betrekking op sldprt-bestanden. Om te sldasm moet je de code een beetje aanpassen. Er zijn enkele opmerkingen die indien nodig zouden moeten helpen bij de hervatting.

1 like

Heel erg bedankt voor je hulp

Graag gedaan, dat is het doel van het forum

1 like