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ę
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
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.
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.
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).
Witam;
Rzeczywiście, to odniesienie jest konieczne, dziękuję Cyril.f za tę korektę.
Poprawiam listę z mojego poprzedniego postu.
Pozdrowienia.