DXF-macro-export blad voor vel

Ik weet niets van macro's en ik zou graag willen weten of het mogelijk is om een DXF-exportmacro te maken die alle vellen van een tekening in aparte bestanden exporteert met behoud van de namen van de vellen.

Na het zoeken op het forum vond ik dit onderwerp met de macro bijgevoegd, dat is wat ik in principe zoek, alleen doet het PDF's en niet DXF's:

https://www.lynkoa.com/forum/solidworks/export-diff%C3%A9renci%C3%A9-en-pdf-et-dxf-des-onglets-de-mise-en-plan-par-une-macro

Kan een goede ziel van het forum deze macro voor mij wijzigen om de PDF te vervangen door de DXF.
Behoudt de macro de SolidWorks-opties voor "opslaan als" die ik gebruik wanneer ik dit handmatig doe, zoals het gebruik van een projectiebestand?

 

Bedankt


pdf_page_par_page.swp

Hallo

Ik heb ".pdf" vervangen door ".dxf" in de macro

Probeer het, het zou moeten werken


dxf_page_par_page.swp

Bedankt
Maar het werkt niet goed, 

Mijn tekening heeft een weergave met afmetingen voor de fab ("Blad 1" tabblad) en een uitgevouwen plaatwerk voor lasersnijden (tabblad "Rep A")

De PDF-macro doet het volgende:

een bestand: "naam van de fichier_Feuille 1.PDF"

een "naam van de fichier_Rep A.PDF"-bestand

De DXF-macro doet:

een bestand:"00_nom van fichier_Feuille1.dxf"

een bestand: "00_nom van de A.dxf fichier_Rep"

een bestand: "01_nom van fichier_Feuille1.dxf"

een bestand:"01_nom van de A.dxf fichier_Rep"

Hallo

Ik weet niet zeker of ik het vorige bericht begrijp.

Is dit de PDF-macro gedaan en de DXF-macro zou moeten doen die we moeten begrijpen?

Ik heb de macro niet geopend, maar als er gewoon een wijziging van de bestandsextensie op de hele code was, wordt deze logischerwijs alleen in een ander formaat opgeslagen.

 

Dat klopt

De macro "pdf_page_par_page.swp" maakt 1 bestand per tekenblad aan en bevat in de PDF-bestandsnaam de naam van het tekeningbestand + de naam van het blad

Als het tekeningbestand bijvoorbeeld "TOTO" heet en 2 vellen heeft, "PLAN"  en "Rep A", doet de PDF-macro het volgende:

1 "TOTO_PLAN" bestand met alleen het "PLAN" blad

1 "TOTO_Rep A" bestand met alleen het "Rep A" blad

Dat is wat ik graag zou willen doen met DXF.

Met de "dxf_page_par_page.swp" macro zijn er 4 bestanden

"00_TOTO_PLAN" met alleen het blad "PLAN"

"00_TOTO_Rep a" met alleen het blad "Rep A"

"01_TOTO_PLAN" met alleen het blad "PLAN"

"01_TOTO_Rep a" met alleen het blad "Rep A"

Hallo

Met de gebruikte macro moet je de exportopties van de dxf/dwg-formaten wijzigen in de solidworks-opties:

Vriendelijke groeten

Hallo

Het resultaat is hetzelfde, ik heb nog steeds 4 bestanden op de leugen van 2

In tegenstelling tot PDF's

Hallo

Van mijn kant ben ik ingesteld op "Exporteer alle bladen in een bestand" en ik heb geen probleem.

Alleen als de instelling "Exporteer alle bladen in afzonderlijke bestanden" is, genereert de export 4 bestanden.

Wat me ook is opgevallen, is dat je de wijziging van instellingen twee keer moet forceren om er correct rekening mee te houden (waarschijnlijk SW2020-bug).

SW had geen rekening gehouden met de instelling "Exporteer alle vellen naar een bestand"

Ik heb wel 2 bestanden met de juiste syntaxis , maar het is hetzelfde blad in de 2, degene die "actief" is op het scherm.

Als we naar de macro kijken, zijn er verschillende keren "swExpPdfData" en "SldWorks.ExportPdfData"

en een regel  outFile = outFile & IIf(INCLUDE_DRAWING_NAME, drawName & "_", "") & sheetName & ".dxf" of het is ".pdf" in de PDF-macro die werkt

Is het de  ..... ExpPdfData die moet worden vervangen door het equivalent voor DXF's?

Oeps, ik kijk in meer detail, ik heb de bestanden niet geopend.

Re

Normaal gesproken voldoet de onderstaande code aan de behoefte

Option Explicit
Dim swApp       As SldWorks.SldWorks
Dim swModel     As SldWorks.ModelDoc2
Dim swDraw      As SldWorks.DrawingDoc
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
    
    sPathname = swModel.GetPathName
    sPathname = Left(sPathname, Len(sPathname) - 7)
    vSheetName = swDraw.GetSheetNames
    For i = 0 To UBound(vSheetName)
        bRet = swDraw.ActivateSheet(vSheetName(i))
        bRet = swModel.SaveAs4(sPathname & "_" & 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

 

3 likes

Bedankt
Het werkt perfect ;-)