Macro die de tekeningen van de delen van een assemblage opent

Hallo allemaal,

Ik ben op zoek naar een macro waarmee je de plannen van elk onderdeel van een bepaalde assemblage (het lopende bestand) kunt openen en vervolgens pdf's kunt maken (het doel is om een productiebestand te maken voor mijn onderaannemers zonder iets te vergeten). De conversie naar PDF is geen probleem, maar ik weet niet hoe ik naar elk onderdeel van de assemblageboom moet zoeken en vervolgens het bijbehorende plan (indien aanwezig) moet openen.

Enig idee?

Ik ben op SW 2021, zonder PDM of myCAD.

Bij voorbaat dank voor uw antwoorden. :slight_smile: 0

2 likes

Hallo

Welkom op het forum :ok_hand: :ok_hand: :ok_hand:

Bijgevoegd is een bestaande macro

CitationSub ShowAllOpenFiles()
Dim swDoc als SldWorks.ModelDoc2
Dim swAllDocs als EnumDocuments2
Dim FirstDoc als SldWorks.ModelDoc2
Dim dummy als Booleaanse
Dim NumDocsKeerde zo lang terug
Dim DocCount zo lang
Zon i Zo lang
Dim sMsg als snaar
Dim swApp als SldWorks.SldWorks
Dim bDocWasZichtbaar als Booleaanse
Dim OpenWarnings zo lang mogelijk
Dim OpenErrors zo lang mogelijk
Dim DwgPath als snaar
Dim myDwgDoc als SldWorks.ModelDoc2
Dim drwPathName als tekenreeks
Dim pdfPathName als tekenreeks
Dim pdfFolderName als tekenreeks
Dim swExportPDFData As SldWorks.ExportPdfData
Dim lErrors zo lang
Dim lWaarschuwingen zo lang mogelijk
Dim boolstatus als Booleaanse

Stel swApp = Toepassing.SldWorks in
Stel swAllDocs = swApp.EnumDocuments2 in
Stel FirstDoc in = swApp.ActiveDoc

DocCount = 0
swAllDocs.Resetten
swAllDocs.Next 1, swDoc, NumDocsReturned
Terwijl NumDocsReturned <> 0
bDocWasVisible = swDoc.Zichtbaar
 ‹ swApp.ActivateDoc swDoc.GetPathName ›
DwgPath = swDoc.GetPathName
Als (LCase(Right(DwgPath, 3)) <> " drw ") en (DwgPath <> ")  dan
DwgPath = Links(DwgPath, Len(DwgPath) - 3) & " drw "
Stel myDwgDoc in = swApp.OpenDoc6(DwgPath, swDocDRAWING, swOpenDocOptions_Silent, "  ", OpenErrors, OpenWarnings)
Zo niet, dan is myDwgDoc niets
swApp.ActivateDoc myDwgDoc.GetPathName

pdfFolderName = "C:\pdf bestanden"

Dim fso als Scripting.FileSystemObject
Stel fso in = CreateObject(" Scripting.FileSystemObject ")

Als (Niet fso. FolderExists(pdfFolderName)) dan
MkDir pdfFolderName
'MsgBox (pdfFolderName + " bestaat niet")
'Uitgang Sub
Einde als

Dim deel als ModelDoc2
Deel instellen = swApp.ActiveDoc()

'Je hebt een tekening actief
drwPathName = Deel.GetPathName()

Als ("  " = drwPathName) Dan
' GetPathName() was leeg
MsgBox ("Deze tekening is nog niet opgeslagen")
Sub afsluiten
Einde als

pdfPathName = fso. BuildPath(pdfFolderName, fso. GetBaseName(drwPathName) + " .pdf ")
Fouten opsporen.Print pdfPathName
Stel swExportPDFData = swApp.GetExportFileData(1) in
swExportPDFData.ViewPdfAfterSaving = Onwaar
Part.Extension.SaveAs pdfPathName, 0, 0, swExportPDFData, lErrors, lWarnings

'MsgBox (" PDF-bestand is gemaakt ")
swApp.QuitDoc (Part.GetTitle)
Stel myDwgDoc in = Niets
Einde als
Einde als
swAllDocs.Next 1, swDoc, NumDocsReturned
DocCount = DocCount + 1
Gaan

swApp.ActivateDoc FirstDoc.GetPathName

Einde Sub

pdf_des_composants_de_lassemblage.swp (54 kB)

6 likes

Hallo

Geweldig, dat is precies wat ik nodig had.

Dank u voor uw hulp.

1 like

Geen dank :wink: :wink:

1 like