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:
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?
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.
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
Witam Przepraszam, że odkurzam temat, ale próbowałem tego makra na SW2025 i nie działa. To jest dokładnie to, co również chcę robić, wykonuję rysowanie części z wieloma spawanymi korpusami. Dziękuję bardzo Manu
Mówisz, że makro nie działa pod Sw2025, co i komunikat o błędzie? Czy posiadana wersja oprogramowania Solidworks jest wersją lokalną czy 3Dexperience? Czy zastanawiałeś się nad załadowaniem odniesień Solidworks do edytora VBA?
Nuta: Funkcja " SaveAs4 " jest uważana za przestarzałą w Pomocy API Solidworks. dziwnym trafem jest on zastąpiony przez " SaveAs3 " A ich wypowiedzi są nieco inne: wartość = wystąpienie. SaveAs4(Nazwa, wersja, opcje, błędy, ostrzeżenia) i wartość = wystąpienie. SaveAs3(Nazwa, wersja, opcje, ExportData, AdvancedSaveAsOptions, błędy, ostrzeżenia)
To powiedziawszy, " przestarzała " funkcja niekoniecznie jest bezużyteczna...
Ale tutaj atakujemy temat, który zależy od twojego poziomu w programowaniu VBA. W twoim przypadku myślę bardziej o odwołaniach VBA, aby dodać...
Witam Dziękuję za opinię, kiedy poszedłem sprawdzić referencje, wszystkie pola SW były już zaznaczone. Właśnie dodałem Microsoft Scripting Runtime, ponownie uruchomiłem makro, aby spróbować i wydaje się, że działa idealnie. Nie wiem, czy to był problem, ale w każdym razie jestem zadowolony. Dziękuję bardzo Manu
Nie jest dziwnie zastąpiony przez SaveAs3, po prostu nie korzysta z tych samych metod, SaveAs4 jest częścią metod ModelDoc2 i SaveAs3 ModelDocExtension. W odpowiedzi na @Emmanuel_SERVEL odwołanie do środowiska uruchomieniowego skryptów firmy Microsoft zwykle nie jest potrzebne dla podanego przeze mnie fragmentu kodu. Błąd może pochodzić z funkcji Left, która czasami nie jest rozpoznawana, musisz użyć VBA jako zamiennika. Lewy.
Dziękuję @Cyril_f ... Wzbogacenie mojej kultury osobistej: (i nie ma nawet sarkazmu)
Dokument ModelDoc2 : Reprezentuje główny dokument w SolidWorks (część, złożenie lub rysunek)
Umożliwia dostęp do podstawowych operacji na dokumencie: otwieranie, zapisywanie, przebudowywanie, pobieranie typu dokumentu, dostęp do konfiguracji, zarządzanie widokami itp So => ModelDoc2:p wszystkie podstawowe operacje na dokumencie SolidWorks*.
Rozszerzenie ModelDoc:
Jest rozszerzeniem ModelDoc2, do którego dostęp uzyskuje się za pośrednictwem właściwości .Extension obiektu ModelDoc2*.
Został utworzony w celu dodania dodatkowych metod i właściwości, gdy ModelDoc2 osiągnął limit pojemności pod względem liczby metod.
Zapewnia dostęp do zaawansowanych lub mniej popularnych funkcji, takich jak: zarządzanie właściwościami niestandardowymi, obliczenia właściwości masowych, zarządzanie tabelami zestawień materiałów (BOM), operacje konwersji, zaawansowane zarządzanie rekordami (np. SaveAs2) Więc: ModelDocExtension :p zaawansowane lub wyspecjalizowane operacje, które nie są dostępne bezpośrednio w ModelDoc2, dostępne za pośrednictwem właściwości .Extension obiektu ModelDoc2
Podsumowując, ModelDocExtension uzupełnia ModelDoc2 i zapewnia dostęp do dodatkowych funkcji potrzebnych do makr lub zaawansowanych automatyzacji w SolidWorks