Makro 3D pdf

Cze wszystkim

Tutaj szukam trochę makra, aby z jednej strony zautomatyzować nagrywanie w 3D pdf. Problem polega na tym, że w tej samej części mam kilka configów. Mam już makro do niezależnego zapisywania wszystkich arkuszy planu w formacie pdf, ale nie mogę przepisać tego kodu dla konfiguracji. Może ktoś zna linię/linie, które musiałyby zostać zmienione, aby to zadziałało. Wyślę ci mój kod.

Dla mnie wszystkie funkcje arkusza powinny zostać zastąpione funkcjami konfiguracyjnymi, ale nie znam na to linii. Jeśli dobra dobroczynna dusza się nudzi, a może mi pomóc, jestem biorcą ;)

 

Dziękuję

Pozdrowienia


eksport makr-pdf-zpf.swp
1 polubienie

Witam;

Spróbuj czegoś takiego.

'Option Explicit

Sub main()

'Sauvegarde en PDF3D toutes les configurations.

    Dim swApp                       As SldWorks.SldWorks
    Dim swModel                     As SldWorks.ModelDoc2
    Dim swConfigMgr                 As SldWorks.ConfigurationManager
    Dim swConfig                    As SldWorks.Configuration
    Dim vConfigName                 As Variant
    Dim stnameConfig                As String
    Dim vConfigNameArr              As Variant
    Dim ConfCount                   As Variant
    Dim X                           As Variant
    Dim i                           As Integer
    Dim Chemin                      As String
    Dim PDF3dPath                   As String
    Dim status                      As Boolean
    Dim swExportPDFData             As SldWorks.ExportPdfData
    Dim ExportAs3D                  As Boolean
    Dim lErrors                     As Long
    Dim lWarnings                   As Long
   
    Set swApp = Application.SldWorks
    'on récupére le document actif
    Set swModel = swApp.ActiveDoc
    
    Set swConfigMgr = swModel.ConfigurationManager
    'on récupére la configuration active
    Set swConfig = swConfigMgr.ActiveConfiguration
    'on récupére de nom de la configation active
    stnameConfig = swConfig.Name
    'on récupére le nom de toutes les configurations
    vConfigNameArr = swModel.GetConfigurationNames
    
    ConfCount = UBound(vConfigNameArr)

    If ConfCount = 0 Then Exit Sub

    If ConfCount > 0 Then
       
        i = 1
        'on boucle
        For Each vConfigName In vConfigNameArr
    
            'on affiche la configuration
            swModel.ShowConfiguration2 vConfigName
        
            swModel.ShowNamedView2 "*Isometric", -1
            swModel.ViewZoomtofit2
        
            'on force la reconstruction
            swModel.ForceRebuild3 False
                
            'Creation du Chemin et du Nom des fichiers PDF3D
            Chemin = swModel.GetPathName
            X = Split(Chemin, ".")
            Chemin = X(LBound(X))
            PDF3dPath = UCase(Chemin & "Config_" & i) & ".PDF"
            
            'Sauvegarde en PDF 3D de cette configuration
            
            'Verouillage de l'option Saveas PDF 3D
            ExportAs3D = True
            Set swExportPDFData = swApp.GetExportFileData(1)
            swExportPDFData.ExportAs3D = True

            'Sauvegarde du document en PDF 3D
            Dim swModelDocExt      As SldWorks.ModelDocExtension
            Set swModelDocExt = swModel.Extension
            status = swModelDocExt.SaveAs(PDF3dPath, 0, 2, swExportPDFData, lErrors, lWarnings)
 
            i = i + 1
        Next vConfigName
        
    End If
        
    'on Retourne sur la configuration active avant le traitement
    swModel.ShowConfiguration2 stnameConfig
    swModel.ShowNamedView2 "*Isometric", -1
    swModel.ViewZoomtofit2
    
    'on force la reconstruction
    swModel.ForceRebuild3 False
    'on sauvegarde le document
    swModel.Save3 swSaveAsOptions_e.swSaveAsOptions_Silent, 0, 0

End Sub

 

Pliki PDF3D są zapisywane w tym samym katalogu co plik Solidworks (pod nazwą: "NomdufichierSolidworks_NumeroDeLaConfiguration.PDF")
Od Ciebie zależy, czy zmodyfikujesz te wartości zgodnie ze swoimi pragnieniami.

Pozdrowienia

 

 

3 polubienia

Dzięki za ramkę, niestety kod nie nagrywa się w 3D, zapisuje się w prostym pdfie. Ktoś ma pomysł??

Pozdrowienia

Tak, zauważyłem to... Miałem problem z zablokowaniem pola wyboru "PDF3D" w opcji "Zapisz jako".... (Przepraszam)
Zaktualizowałem mój poprzedni post, teraz powinno działać. Cóż, normalnie.
Pozdrowienia

Nie, nadal nie, nadal nagrywa w pdf a nie w 3D, ale myślę, że to już niedaleko, testuję też jakąś modyfikację po swojej stronie. Dziękuję za szybką odpowiedź ;)

Dobranoc

Pozdrowienia

  Witaj quentin.fouillouse;

Dziwne, najnowsza wersja mojego makra działa bardzo dobrze na moim komputerze (nawet po ponownym uruchomieniu komputera).
Czekam na efekty Waszych zmian.

Pozdrowienia.

Czy Twój kod wymaga Menedżera dokumentów? Bo jeśli tak, to może to mój problem

Pozdrowienia

 

Edit: Wszystko dobrze, że działa, dziękuję, tylko ja nie usunąłem ani jednej linijki starego kodu (głupi błąd ^^'). Dziękuję za pomoc w każdym razie 

Miłego dnia

Pozdrowienia

2 polubienia

Witam;

Otóż nie, to makro w ogóle nie ma nic wspólnego z "Menedżerem dokumentów". Ale cieszę się, że to dla ciebie odpowiednie.
Pamiętaj, aby zamknąć tę dyskusję, jeśli jesteś zadowolony z udzielonych odpowiedzi.

Pozdrowienia.

3 polubienia

Witam 

Pozwoliłem sobie pobrać pierwszy kod, który zapisuje każdy arkusz w formacie PDF, ale nie powtarza operacji, po prostu tworzy plik PDF bieżącej strony, czy mógłbyś mnie poprowadzić, moje umiejętności w VBA są bardzo ograniczone. 

Z góry dziękuję.

Aktualizacja: po ponownym uruchomieniu komputera program działa poprawnie, dziękujemy!