DXF-macro-export blad voor vel

Hallo,

Bedankt voor de feedback, sorry dat ik geen forumgebruiker ben, ik weet niet welke regels ik moet volgen. :sweat_smile:

Hieronder volgt mijn macro:

Option Explicit
Dim swApp       As SldWorks.SldWorks
Dim swModel     As SldWorks.ModelDoc2
Dim swDraw      As SldWorks.DrawingDoc
Dim swCustProp  As CustomPropertyManager
Dim valOut1     As String
Dim resolvedValOut1 As String
Dim sPathname   As String
Dim vSheetName  As Variant
Dim nErrors     As Long
Dim nWarnings   As Long
Dim i           As Long
Dim bRet        As Boolean
Dim lParam      As Long

Sub main()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swDraw = swModel
    
    lParam = swApp.GetUserPreferenceIntegerValue(swDxfMultiSheetOption)
    
    'Changement paramétrage export dxf si différent de feuille active
    If lParam <> 0 Then
        bRet = swApp.SetUserPreferenceIntegerValue(swUserPreferenceIntegerValue_e.swDxfMultiSheetOption, swDxfMultisheet_e.swDxfActiveSheetOnly)
    End If
    
    ' On récupère la date du jour et on la met dans un format pouvant se mettre dans le nom d'un fichier
    Dim dateNow As String
    dateNow = Replace(Date, "/", ".")
    
    ' On récupère les valeurs qui nous intéresse dans les propriétés personnalisées du plan
    Set swCustProp = swModel.Extension.CustomPropertyManager("")
    swCustProp.Get2 "Révision", valOut1, resolvedValOut1

    sPathname = Replace(swModel.GetPathName, ".SLDDRW", "")
    vSheetName = swDraw.GetSheetNames
    For i = 0 To UBound(vSheetName)
        bRet = swDraw.ActivateSheet(vSheetName(i))
        bRet = swModel.SaveAs4(sPathname & " - " & resolvedValOut1 & " - " & dateNow & "_" & vSheetName(i) & ".dxf", swSaveAsCurrentVersion, swSaveAsOptions_Silent, nErrors, nWarnings)
    Next i
    
    ' Retour à la Feuille 1
    bRet = swDraw.ActivateSheet(vSheetName(0))
    
    ' Remise en place du paramétrage initial
    bRet = swApp.SetUserPreferenceIntegerValue(swUserPreferenceIntegerValue_e.swDxfMultiSheetOption, lParam)
End Sub

Hoe dan ook, ik dank jullie allemaal hartelijk. :grin:
Manu

Hallo;

Over het algemeen zie ik niet veel inconsistenties in de code, om te zien wat meer professionals dan ik erover :sweat_smile: zeggen.
Ik zou gewoon een variabele voor de eigenschap " Revisie " hebben gebruikt
Stijl:

Dim MyRevision as string
dan
MyRevision = swCustProp.Get2 "Révision", valOut1, resolvedValOut1

En om het paginanummer toe te voegen, waarom niet (i+1) gebruiken?
Dit geeft het volgende:

bRet = swModel.SaveAs4(sPathname & " - " & MyRevision & " - " & dateNow & "_" & vSheetName(i) & i+1 & ".dxf", swSaveAsCurrentVersion, swSaveAsOptions_Silent, nErrors, nWarnings)

Ook ben ik geen grote fan van het gebruik van " ." stippen in de bestandsnaam,
Dus (maar het is optioneel): dateNow = Vervangen(Datum, " / ", " _ ")

En tot slot voeg ik een vinkje toe om te controleren of MyRevision niet " Leeg" is:

If MyRevision ="" then
 msgbox ("La propriété Révision n’existe pas.")
exit sub
end if

Om wat tijd te besparen, is het mogelijk om grafische updates van Solidworks tijdens de verwerking uit te schakelen:

swModel.FeatureManager.EnableFeatureTree = False 'Désactivation de la mise à  jour treeManager
modView.EnableGraphicsUpdate = False 'Désactivation de la mise à  jour graphique
EnableFeatureTreeWindow = False 'Désactivation de la mise à  jour de la fenetre

Maar ze moeten aan het einde van de behandeling opnieuw worden geactiveerd:

swModel.FeatureManager.EnableFeatureTree = True 'Activation de la mise à  jour treeManager
modView.EnableGraphicsUpdate = True 'Activation de la mise à  jour graphique
EnableFeatureTreeWindow = True 'Activation de la mise à  jour de la fenetre

Hallo,
Het hangt allemaal af van de " zwaarte" van elk blad.
Het is mogelijk dat SW op dit niveau hapert (ik heb ongeveer hetzelfde gedrag bij sommige macro's die alleen een eenvoudige PDF-export uitvoeren)

Tegelijkertijd meer dan 100 vellen, helemaal niet verbaasd dat het achterloopt!

En dit versterkt mijn manier van doen:
1 stuk = één bestand = 1 plan, daarna assemblage (behalve bij meerlichaams buisgelaste constructie)

Oké, bedankt voor je feedback.
Ik probeer dit aan te passen en ik probeer mijn volgende generatie DXF.

Ter informatie: ik werk in gelaste constructie voor meubelmodellering, dus afhankelijk van het meubilair kunnen er veel onderdelen zijn om te plannen. En ik word gevraagd zoveel mogelijk bladeren te zuiveren, dus veel bladeren voor één en hetzelfde stuk.

Hoe dan ook, ik dank jullie allemaal heel erg voor de tijd die jullie hebben genomen om mij te antwoorden.