Zbiorczy eksport makr do formatu PDF

Cze wszystkim

Szukam makra, które pozwoliłoby mi zbiorczo eksportować wiele wersji roboczych do plików PDF.

Chciałbym od razu zaznaczyć, że mam na biurku tylko wersję podstawową, więc nie mam możliwości zaplanowania tego typu zadań.

Dziękuję

Najwyraźniej możesz to zrobić za pomocą Task Sheduler:

https://www.youtube.com/watch?v=WgjajdK6CEc

 

W przeciwnym razie za pomocą specjalnych narzędzi, takich jak Cad+ (nie testowane):

https://cadplus.xarial.com/

 

Ze swojej strony korzystam z narzędzi MyCADservices, a w szczególności Integration lub BatchConverters (bardzo szybko amortyzowane dla powtarzających się potrzeb):

Integracja: https://help.visiativ.com/mycadtools/2020/fr/Integration.html

BatchConverter: https://help.visiativ.com/mycadtools/2020/fr/BatchConverter.html

 

 

1 polubienie

Witam;

W przeciwnym razie proponuję to makro.
Otwiera wszystkie pliki *.slddrw w katalogu i zapisuje je pod tą samą nazwą, co plik PDF.

Option Explicit

Private Const BIF_RETURNONLYFSDIRS As Long = &H1
Private Const BIF_DONTGOBELOWDOMAIN As Long = &H2
Private Const BIF_RETURNFSANCESTORS As Long = &H8
Private Const BIF_BROWSEFORCOMPUTER As Long = &H1000
Private Const BIF_BROWSEFORPRINTER As Long = &H2000
Private Const BIF_BROWSEINCLUDEFILES As Long = &H4000
Private Const MAX_PATH As Long = 260

Function BrowseFolder(Optional Caption As String, Optional InitialFolder As String) As String

Dim SH As Shell32.Shell
Dim F As Shell32.Folder

Set SH = New Shell32.Shell
Set F = SH.BrowseforFolder(0&, Caption, BIF_RETURNONLYFSDIRS, InitialFolder)
If Not F Is Nothing Then
    If F = "Desktop" Then
        BrowseFolder = Environ("USERPROFILE") & "\Desktop"
    Else
        BrowseFolder = F.Items.Item.Path
    End If
End If

End Function

Sub Main()
Dim swApp        As SldWorks.SldWorks
Dim swModel      As SldWorks.ModelDoc
Dim sFileName    As String
Dim Path         As String
Dim nErrors      As Long
Dim nWarnings    As Long
Dim swDraw       As SldWorks.DrawingDoc
Dim PartNoDes    As String
Dim swExportPDFData As SldWorks.ExportPdfData


    Set swApp = Application.SldWorks
    Set swExportPDFData = swApp.GetExportFileData(1)
    swExportPDFData.ViewPdfAfterSaving = False
    
    Path = BrowseFolder("Selectionner le Repertoire à Traiter.")
    If Path = "" Then
        MsgBox "Erreur, Selectionnez le repertoire à nouveau."
        End
    Else
    Path = Path + "\"
    End If
         
    sFileName = Dir(Path & "*.slddrw")
    Do Until sFileName = ""
        Set swModel = swApp.OpenDoc6(Path + sFileName, swDocDRAWING, swOpenDocOptions_Silent, "", nErrors, nWarnings)
        Set swModel = swApp.ActiveDoc
        Set swDraw = swApp.ActiveDoc
            PartNoDes = Mid(swDraw.GetPathName, InStrRev(swDraw.GetPathName, "\") + 1)
            PartNoDes = Left(PartNoDes, Len(PartNoDes) - 7)
            swDraw.SaveAs3 Path & PartNoDes & ".PDF", 0, 0
        swApp.QuitDoc swDraw.GetPathName
        Set swDraw = Nothing
        Set swModel = Nothing
        sFileName = Dir
    Loop

MsgBox "Le Traitement est terminé."
End Sub

 

Pozdrowienia.

2 polubienia

Dziękuję

W jaki sposób należy wykonać to makro? Czy musisz wcześniej otworzyć wszystkie wersje robocze?

Witam;

Otóż nie, poprosiłeś o leczenie wsadowe....
Najprostszym sposobem jest utworzenie przycisku/makra bezpośrednio w Solidworks.
Odesłanie: https://www.lynkoa.com/forum/2d/creer-un-bouton-macro


Po uruchomieniu moje makro poprosi Cię o wybranie katalogu zawierającego rysunki do przetworzenia, a następnie otwarcie ich jeden po drugim, aby zapisać je w formacie PDF.
 

Pozdrowienia.

OK

Dlatego po uruchomieniu makra pojawia się komunikat o następującej treści:

Błąd kompilacji:

Typ zdefiniowany przez użytkownika nie został zdefiniowany. 

Witam;

Czy mógłbyś podać mi jeszcze mniej informacji? (Bebug = Na której linii zatrzymuje się program?)

Podejrzewam, że nie załadowałeś niezbędnych odniesień w interfejsie:
W Edytorze makr przejdź do opcji i kliknij Referencje...
Przeszukaj listę: (I zaznacz pola)
- Visual Basic dla aplikacji
- Biblioteka typów rozszerzeń Solidworks 20xx (20xx=Twoja wersja Solidworks, jeśli kilka z nich wybierze najnowszą)
- Ole Automatyzacja
- Biblioteka typów sldWorks 20xx (20xx=twoja wersja Solidworks, jeśli kilka z nich wybierze najnowszą)
- Biblioteka typów stałych SOLIDWORKS 20xx (20xx=Twoja wersja Solidworks, jeśli kilka z nich wybierze najnowszą)
- Biblioteka typów SOLIDWORKS 20xx Comands (20xx=Twoja wersja Solidworks, jeśli kilka z nich wybierze najnowszą)
- Biblioteka obiektów Microsoft Exel 16.0
- Microsoft Shell, kontrolki Microsoft Shell i aplikacja.

Następnie potwierdź swój wybór. (Celowo zmuszam Cię do załadowania większej liczby Księgarni niż jest to konieczne dla tego makra, ale kiedyś Ci się przydadzą)
Uruchom ponownie makro.

Uwaga: Następnym razem, gdy zażądasz makra, określ wersję (rok) swojego Solidworks, a także poziom makra....

Pozdrowienia.
 

1 polubienie

Przepraszam, jestem nowicjuszem w makro, więc nie jest łatwo jasno wyjaśnić, gdzie krzyczy.

Wypróbuję tę sztuczkę i będę Cię informować na bieżąco.

Dziękuję

Przepraszam za tę spóźnioną odpowiedź, ale oto nazwa linii, w której zatrzymuje się makro:

Funkcja BrowseFolder(opcjonalny podpis jako ciąg, opcjonalny folder początkowy jako ciąg) jako ciąg

I zaznaczam, że wszystko jest dobrze sprawdzone.

Witam

W przypadku funkcji powłoki potrzebne jest również odniesienie "Kontrolki i aplikacja powłoki firmy Microsoft", w przeciwnym razie kompilacja kodu jest błędna.

Myślę, że problem bierze się stamtąd (sprawdzone w moim poście).

1 polubienie

Witam;

Rzeczywiście, to odniesienie jest konieczne, dziękuję Cyril.f za tę korektę.
Poprawiam listę z mojego poprzedniego postu.

Pozdrowienia.