Hallo
Ik wil een macro maken voor Solidworks die tekenbladen omzet in PDF's of DXF's.
PDF-bestanden krijgen de naam "bestandsnaam+bladnaam"
DXF-bestanden krijgen op dezelfde manier een naam.
De macro moet onderscheid maken tussen de bladen die als PDF of DXF moeten worden opgeslagen, afhankelijk van de aan- of afwezigheid van het woord DXF in de naam van het blad.
Hieronder ziet u de macro die is gemaakt. Helaas krijg ik de foutmelding "compilatiefout: door de gebruiker gedefinieerd type niet gedefinieerd".
Met "swExportDXFData As SldWorks.ExportDxfData" gemarkeerd in blauw.
Ik denk dat ik begrijp dat er een stukje gegevens ontbreekt in de referenties, maar ik ben verdwaald.
Ik ben op SolidWorks 2022.
Kan iemand mij helpen?
Option Explicit
Sub ExportPDFandDXF()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDraw As SldWorks.DrawingDoc
Dim swSheet As SldWorks.Sheet
Dim swExportData As SldWorks.ExportPdfData
Dim swExportDXFData As SldWorks.ExportDxfData
Dim sheetName As String
Dim fileName As String
Dim filePath As String
Dim numSheets As Integer
Dim i As Integer
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
If swModel Is Nothing Then
MsgBox "Aucun document ouvert dans SolidWorks."
Exit Sub
End If
If Not swModel.GetType = swDocumentTypes_e.swDocDRAWING Then
MsgBox "Ce n'est pas un document de mise en plan."
Exit Sub
End If
Set swDraw = swModel
numSheets = swDraw.GetSheetCount
fileName = Left(swModel.GetPathName, InStrRev(swModel.GetPathName, ".") - 1)
filePath = Left(swModel.GetPathName, InStrRev(swModel.GetPathName, "\"))
For i = 1 To numSheets
Set swSheet = swDraw.Sheet(i)
sheetName = swSheet.GetName
If InStr(sheetName, "DXF") > 0 Then
Set swExportDXFData = swApp.GetExportFileData(1)
swExportDXFData.fileName = fileName & sheetName & ".dxf"
swExportDXFData.SetSheets swSheet.GetName
swModel.Extension.ExportToDWGDXF swExportDXFData
Else
Set swExportData = swApp.GetExportFileData(swExportPdfData)
swExportData.fileName = fileName & sheetName & ".pdf"
swExportData.SetSheets swSheet.GetName
swModel.Extension.SaveAs swExportData
End If
Next i
MsgBox "Exportation terminée."
End Sub