Obecnie modyfikuję makro (pdf_des_comosants_de_lassemblage.swp), które znalazłem na forum, aby mogło generować DWG mepa i SAT części składających się na zespół. (Nie wiem, czy jest to możliwe, ale czy jest możliwe, aby makro zrobiło to samo dla wszystkich zespołów składających się na zespół głowicy?) Chcę również, aby te dokumenty były zapisane w folderach " PDF", " DWG " i " SAT ", które znajdują się w folderze " CAD ", który sam znajduje się w tej samej ścieżce co montaż.
Niestety nie jestem super dobry z VBA, więc zwracam się do Ciebie z nadzieją, że możesz mi w tym pomóc!
Czy mógłbyś edytować (skopiować) swoje makro tutaj, zamiast udostępniać je do pobrania? (za pomocą tagów...) Nie jestem wielkim fanem makr do bezpośredniego pobierania.
Po drugie, brakuje nam kontekstu, który mógłby Ci pomóc: Czy Twoje rysunki mają taką samą nazwę jak pliki 3D i czy znajdują się w tym samym katalogu? Czy konieczne będzie dodanie pojęcia indeksu do nazwy plików PDF i/lub DWG? Kiedy mówisz o swoich podzespołach, to czy są one również w tym samym repertuarze, co ten na górze? Przydałby się przykład hierarchii katalogów.
Poniżej znajduje się makro do zapisywania plików pdf w moim "C:":
Sub ShowAllOpenFiles()
Dim swDoc As SldWorks.ModelDoc2
Dim swAllDocs As EnumDocuments2
Dim FirstDoc As SldWorks.ModelDoc2
Dim dummy As Boolean
Dim NumDocsReturned As Long
Dim DocCount As Long
Dim i As Long
Dim sMsg As String
Dim swApp As SldWorks.SldWorks
Dim bDocWasVisible As Boolean
Dim OpenWarnings As Long
Dim OpenErrors As Long
Dim DwgPath As String
Dim myDwgDoc As SldWorks.ModelDoc2
Dim drwPathName As String
Dim pdfPathName As String
Dim pdfFolderName As String
Dim swExportPDFData As SldWorks.ExportPdfData
Dim lErrors As Long
Dim lWarnings As Long
Dim boolstatus As Boolean
Set swApp = Application.SldWorks
Set swAllDocs = swApp.EnumDocuments2
Set FirstDoc = swApp.ActiveDoc
DocCount = 0
swAllDocs.Reset
swAllDocs.Next 1, swDoc, NumDocsReturned
While NumDocsReturned <> 0
bDocWasVisible = swDoc.Visible
'swApp.ActivateDoc swDoc.GetPathName'
DwgPath = swDoc.GetPathName
If (LCase(Right(DwgPath, 3)) <> "drw") And (DwgPath <> "") Then
DwgPath = Left(DwgPath, Len(DwgPath) - 3) & "drw"
Set myDwgDoc = swApp.OpenDoc6(DwgPath, swDocDRAWING, swOpenDocOptions_Silent, "", OpenErrors, OpenWarnings)
If Not myDwgDoc Is Nothing Then
swApp.ActivateDoc myDwgDoc.GetPathName
pdfFolderName = "C:\pdf files\"
Dim fso As Scripting.FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
If (Not fso.FolderExists(pdfFolderName)) Then
MkDir pdfFolderName
'MsgBox (pdfFolderName + " does not exist")
'Exit Sub
End If
Dim Part As ModelDoc2
Set Part = swApp.ActiveDoc()
'You have a drawing active
drwPathName = Part.GetPathName()
If ("" = drwPathName) Then
' GetPathName() was empty
MsgBox ("This drawing has not been saved yet")
Exit Sub
End If
pdfPathName = fso.BuildPath(pdfFolderName, fso.GetBaseName(drwPathName) + ".pdf")
Debug.Print pdfPathName
Set swExportPDFData = swApp.GetExportFileData(1)
swExportPDFData.ViewPdfAfterSaving = False
Part.Extension.SaveAs pdfPathName, 0, 0, swExportPDFData, lErrors, lWarnings
'MsgBox ("PDF file was created")
swApp.QuitDoc (Part.GetTitle)
Set myDwgDoc = Nothing
End If
End If
swAllDocs.Next 1, swDoc, NumDocsReturned
DocCount = DocCount + 1
Wend
swApp.ActivateDoc FirstDoc.GetPathName
End Sub
Wszystkie instalacje mają taką samą nazwę jak część/złożenie. We właściwościach jest pojęcie wskazówki, którą chciałbym, aby pojawiła się po nazwie części dla plików PDF, DWG I SAT.
Czy twoje pojęcie " indeksu " istnieje na twoich 3D-ach? (PDM?) Jeśli tak nie jest, nie będzie łatwo przywrócić to pojęcie do formatów SAT (przynajmniej bez oszukiwania z informacjami o pośle...)…
Nie, nie mam PDM, wpisuję pojęcie indeksu w moich właściwościach osobistych, a indeks jest wyświetlany na moim europsie. Czy nie byłoby możliwe, aby makro pobrało indeks we właściwościach, a następnie w momencie zapisywania było podświetlone jako: "Nazwa-Indeks-Tytuł-Opis", jak dla plików PDF i DWG?