Problem z konwersją makr do formatu PDF

Witam

Próbowałem użyć makra .PL (http://www.lynkoa.com/tutos/solidworks-creer-tous-les-pdf-pour-un-dossier-0), które pozwala na konwersję wszystkich planów w folderze do PDF, ale mam problem podczas uruchamiania.

Otrzymuję komunikat "Błąd kompilacji: niezdefiniowany podelement lub funkcja" w wierszu Path = BrowseFolder("Wybierz ścieżkę/folder")

Poszperałem trochę na forum i zobaczyłem, że inni ludzie mieli ten sam problem, ale nie mogłem znaleźć rozwiązania.

Ktoś ma pomysł?

Z góry dziękuję :)

 

 

Witam

Przede wszystkim chcę powiedzieć tak jak @max59 w poprzednim poście

 Dlaczego nie skorzystać z Harmonogramu zadań.

http://www.lynkoa.com/forum/solidworks/macro-de-conversion-de-toutes-les-pi%C3%A8ces-dun-assemblage-au-format-step-ap214

Niech Moc będzie z wami.

 

2 polubienia

Witaj Obi Wan,

Mam standardową wersję solidworks i w tej wersji harmonogram nie konwertuje planów do plików PDF.

 

Witam

O ile się nie pomylę, w makrze brakuje jakiegoś elementu. BrowseFolder jest podfunkcją, więc moim zdaniem jej brakuje, stąd komunikat o błędzie.

To musi być rzeczywiście to.

Będąc trochę (bardzo) kiepskim w makro, czy ktoś ma już tę podfunkcję?

Widziałem, że to zadziałało z niektórymi użytkownikami forum

 

Zobacz tę stronę

http://www.lynkoa.com/forum/import-export-formats-neutres/macro-export-pdf-dwg

@+ ;-)

1 polubienie

Witam

Dodaje "Microsoft Shell Controls And Automation" do narzędzi/odwołań.

Pozdrowienia

2 polubienia

Dobra robota d.roger. Miałem wątpliwości i nie mogłem znaleźć odniesienia.

Dziękuję za odpowiedzi.

@d.roger, nadal otrzymuję ten sam błąd po dodaniu "Microsoft Shell Controls And Automation". Porównałem i mam włączone te same referencje co na twoim zrzucie ekranu.

 

Witam

Właśnie zmieniłem sposób otwierania okna wyboru folderu. Nie przetestowano ogólnego zachowania ocm.

Option Explicit
  
Dim swApp        As SldWorks.SldWorks
Dim swModel      As SldWorks.ModelDoc
Dim sFileName    As String
Dim vFileName    As String
Dim Path         As String
Dim nPath        As String
Dim nErrors      As Long
Dim nWarnings    As Long
Dim swDraw       As SldWorks.DrawingDoc
Dim swCustProp   As CustomPropertyManager
Dim swView       As SldWorks.View
Dim ConfigName   As String
Dim i            As Long
Dim valOut1      As String
Dim valOut2      As String
Dim resolvedValOut1 As String
Dim resolvedValOut2 As String
Dim PartNo      As String
Dim nFileName      As String
Dim swDocs As Variant
Dim PDFpath As String
Dim currpath As String
Dim PartNoDes As String
Dim objShell   As Shell
Dim objFolder  As Folder

    
Sub main()
    Set swApp = Application.SldWorks
    Dim swExportPDFData     As SldWorks.ExportPdfData
    Set swExportPDFData = swApp.GetExportFileData(1)
    swExportPDFData.ViewPdfAfterSaving = False
    
    Set objShell = New Shell
        Set objFolder = objShell.BrowseForFolder(0, "Example", 0, 0)
            If (Not objFolder Is Nothing) Then
                Path = objFolder.Self.Path
                Path = Path + "\"
                PDFpath = Path & "PDF"
                
                If Dir(PDFpath, vbDirectory) = "" Then MkDir PDFpath
                    sFileName = Dir(Path & "*.slddrw")
      
                    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
                        Set swView = swDraw.GetFirstView
                        Set swView = swView.GetNextView
                        Set swModel = swView.ReferencedDocument
  
  

                            PDFpath = currpath & "PDF"
      
                            If Dir(PDFpath, vbDirectory) = "" Then MkDir PDFpath
       
            
                                If swModel.GetType = swDocPART Then
                                    PartNoDes = Mid(swDraw.GetPathName, InStrRev(swDraw.GetPathName, "\") + 1)
                                    PartNoDes = Right(PartNoDes, Len(PartNoDes) - 14)
                                    PartNoDes = Left(PartNoDes, Len(PartNoDes) - 7)
                                    PartNo = Mid(swModel.GetPathName, InStrRev(swModel.GetPathName, "\") + 1)
                                    PartNo = Left(PartNo, Len(PartNo) - 7)
                                    Set swCustProp = swModel.Extension.CustomPropertyManager(swView.ReferencedConfiguration)
                                    ConfigName = swView.ReferencedConfiguration
                                    swCustProp.Get2 "Description", valOut1, resolvedValOut1
                                    swCustProp.Get2 "Revision", valOut2, resolvedValOut2
                                    nFileName = PDFpath & "\" & PartNo & "-" & ConfigName & "-" & resolvedValOut2 & " " & PartNoDes
                                    swDraw.SaveAs3 nFileName & ".PDF", 0, 0
                      
                                ElseIf swModel.GetType = swDocASSEMBLY Then
                                    PartNoDes = Mid(swDraw.GetPathName, InStrRev(swDraw.GetPathName, "\") + 1)
                                    PartNoDes = Right(PartNoDes, Len(PartNoDes) - 11)
                                    PartNoDes = Left(PartNoDes, Len(PartNoDes) - 7)
                                    PartNo = Mid(swModel.GetPathName, InStrRev(swModel.GetPathName, "\") + 1)
                                    PartNo = Left(PartNo, Len(PartNo) - 7)
                                    Set swCustProp = swModel.Extension.CustomPropertyManager("")
                                    swCustProp.Get2 "Description", valOut1, resolvedValOut1
                                    swCustProp.Get2 "Revision", valOut2, resolvedValOut2
                                    nFileName = PDFpath & "\" & PartNo & "-" & resolvedValOut2 & " " & PartNoDes
                                    swDraw.SaveAs3 nFileName & ".PDF", 0, 0
                   
                                End If
      
                                swApp.QuitDoc swDraw.GetPathName
                                Set swDraw = Nothing
       
                                Set swModel = Nothing
       
                            sFileName = Dir
     
                        Loop

                End If
                    
        Set objFolder = Nothing
    Set objShell = Nothing
  
MsgBox "All Done"
  
  
End Sub

 

Dziękuję Cyril.f :)

Teraz mogę wybrać mój folder, ale mam inny problem w pozostałej części makra w wierszu: Set swModel = swView.ReferencedDocument

Błąd wykonania 91: Zmienna obiektu lub bloku nie została zdefiniowana

 

 

Nie wiem dlaczego, ale po ponownym uruchomieniu solidworks ta linia przeszła.

Mam jednak nowy problem na linii: 

WęzłyCzęści = Lewo(PartNoDes, Len(PartNoDes) - 7)

"Nieprawidłowa argumentacja lub odwołanie proceduralne"

 

 

 

Witam

Czy rozszerzenia plików nie byłyby ukryte w opcjach wyświetlania eksploratora Windows?

Pozdrowienia

Rzeczywiście, były ukryte, ale nadal mam błąd

Nawet po ponownym uruchomieniu Solidworks?

Tak, zrestartowałem PC + Solidworks na wszelki wypadek

Właśnie próbowałem zapisać plany z innego folderu.

Działa, ale:

- konwertuje tylko jeden plan

- Tworzy folder PDF we właściwej lokalizacji, ale zapisuje plan w innym miejscu

 

Udało mi się sprawić, aby plik został zapisany w odpowiednim miejscu, dodając Path & do linii definiujących zmienną nFileName

Z drugiej strony makro nadal nie konwertuje innych płaszczyzn w folderze

Oto makro, które otrzymuję po wprowadzeniu kilku innych zmian, ponieważ nazwa pliku PDF nie pasowała do tego, czego chciałem

 

 


pdf.zip

Ponownie

Obejrzę to, jeśli będę miał czas wieczorem, w przeciwnym razie będzie to w styczniu, chyba że d.roger będzie miał czas na patrzenie.

Witam

Zobaczmy, czy załączona wersja działa tak, jak chcesz.

Pozdrowienia


savealldrwaspdf.swp
1 polubienie