Eksport makr DXF arkusz po arkuszu

Nie znam się na makrach i chciałbym wiedzieć, czy możliwe jest utworzenie makra eksportu DXF , które eksportuje wszystkie arkusze rysunku w osobnych plikach z zachowaniem nazw arkuszy.

Po poszukiwaniach na forum znalazłem ten temat z załączonym makrem, czyli tego czego w zasadzie szukam, tylko że robi PDF-y a nie DXF-y:

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

Czy dobra dusza forum mogłaby zmodyfikować to makro dla mnie, aby zastąpić PDF DXF.
Czy makro zachowa opcje "zapisz jako" SolidWorks, których używam, gdy robię to ręcznie, na przykład przy użyciu pliku projekcji?

 

Dziękuję


pdf_page_par_page.swp

Witam

W makrze zamieniłem ".pdf" na ".dxf"

Spróbuj, powinno zadziałać


dxf_page_par_page.swp

Dziękuję
Ale to nie działa poprawnie, 

Mój rysunek ma widok z wymiarami dla fabryki (zakładka "Arkusz 1") oraz rozłożoną blachą do cięcia laserowego (zakładka "Rep A")

Makro PDF wykonuje:

Plik: "nazwa fichier_Feuille 1.PDF"

Plik "nazwa fichier_Rep A.PDF"

Makro DXF wykonuje:

plik:" 00_nom z fichier_Feuille1.dxf"

plik: "00_nom fichier_Rep A.dxf"

Plik: "01_nom z fichier_Feuille1.dxf"

plik:"01_nom fichier_Rep A.dxf"

Witam

Nie jestem pewien, czy dobrze rozumiem poprzednią wiadomość.

Czy to jest makro PDF, czy makro DXF powinno zrobić, co musimy zrozumieć?

Nie otwierałem makra, ale jeśli nastąpiła po prostu zmiana rozszerzenia pliku w całym kodzie, logicznie rzecz biorąc, zapisuje się tylko w innym formacie.

 

Zgadza się

Makro "pdf_page_par_page.swp" tworzy 1 plik na arkusz rysunku i zawiera w nazwie pliku PDF nazwę pliku rysunku + nazwę arkusza

Na przykład, jeśli plik rysunku nazywa się "TOTO" i składa się z 2 arkuszy: "PLAN"  i "Rep A", makro PDF wykonuje:

1 plik "TOTO_PLAN" zawierający tylko arkusz "PLAN"

1 plik "TOTO_Rep A" zawierający tylko arkusz "Rep A"

To jest to, co chciałbym zrobić z DXF.

Z makrem "dxf_page_par_page.swp" znajdują się 4 pliki

"00_TOTO_PLAN" tylko z arkuszem "PLAN"

"00_TOTO_Rep a" tylko z arkuszem "Rep A"

"01_TOTO_PLAN" tylko z arkuszem "PLAN"

"01_TOTO_Rep a" tylko z arkuszem "Rep A"

Witam

Za pomocą użytego makra należy zmodyfikować opcje eksportu formatów dxf/dwg w opcjach solidworks:

Pozdrowienia

Witam

Wynik jest taki sam, nadal mam 4 pliki w kłamstwie 2

W przeciwieństwie do plików PDF

Witam

Ze swojej strony jestem ustawiony na "Eksportuj wszystkie arkusze w pliku" i nie mam problemu.

Tylko jeśli ustawienie to "Eksportuj wszystkie arkusze w osobnych plikach", eksport generuje 4 pliki.

Zauważyłem również, że trzeba dwukrotnie wymusić zmianę ustawień, aby została ona poprawnie uwzględniona (prawdopodobnie błąd SW2020).

SW nie uwzględnił ustawienia "Eksportuj wszystkie arkusze do pliku"

Mam 2 pliki z odpowiednią składnią , ale jest to ten sam arkusz w 2, ten, który jest "aktywny" na ekranie.

Patrząc na makro, kilka razy pojawiają się "swExpPdfData" i "SldWorks.ExportPdfData"

i linia  outFile = outFile & IIf(INCLUDE_DRAWING_NAME, drawName & "_", "") & sheetName & ".dxf" lub to ".pdf" w makrze PDF, które działa

Czy to .....  ExpPdfData, które powinny zostać zastąpione odpowiednikiem dla DXF-ów?

Ups, szukam bardziej szczegółowo, nie otworzyłem plików.

Ponownie

Zwykle poniższy kod spełnia potrzebę

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 polubienia

Dziękuję
Działa idealnie ;-)