Inventor iLogic 批量导出pdf文件程序设计
2025/12/12 17:26:15
本规则将会为当前文档和所有下层工程图创建 PDF文档,运行本规则需保证工程图与三维文档存在同一文件夹。
- '定义当前文档为顶层文档
- Dim oAsmDoc As Document
- oAsmDoc = ThisApplication.ActiveDocument
- oAsmName = ThisDoc.FileName(False) 'without extension
- Dim drawingformat As String
- drawingformat = "idw"
- '- - - - - - - - - - - - -PDF setup - - - - - - - - - - - -
- oPath = ThisDoc.Path
- PDFAddIn = ThisApplication.ApplicationAddIns.ItemById("{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}")
- DXFAddIn = ThisApplication.ApplicationAddIns.ItemById("{C24E3AC4-122E-11D5-8E91-0010B541CD80}")
- DWFAddIn = ThisApplication.ApplicationAddIns.ItemById("{0AC6FD95-2F4D-42CE-8BE0-8AEA580399E4}")
- oContext = ThisApplication.TransientObjects.CreateTranslationContext
- oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism
- oOptions = ThisApplication.TransientObjects.CreateNameValueMap
- xOptions = ThisApplication.TransientObjects.CreateNameValueMap
- oDataMedium = ThisApplication.TransientObjects.CreateDataMedium
- oDocument = ThisApplication.ActiveDocument
- '定义PDF导出属性
- oOptions.Value("All_Color_AS_Black") = 1
- oOptions.Value("Remove_Line_Weights") = 0
- oOptions.Value("Vector_Resolution") = 400
- oOptions.Value("Sheet_Range") = Inventor.PrintRangeEnum.kPrintAllSheets
- '定义导出文档路径
- oFolder = "C:\Downloads\export"
- '根据检测结果创建导出文件夹
- If Not System.IO.Directory.Exists(oFolder) Then
- System.IO.Directory.CreateDirectory(oFolder)
- End If
- '- - - - - - - - - - - - -
- '- - - - - - - - - - - - -下层工程图 - - - - - - - - - - - -
- '循环引用当前文档所有下层零件
- Dim oRefDocs As DocumentsEnumerator
- oRefDocs = oAsmDoc.AllReferencedDocuments
- Dim oRefDoc As Document
- '打开与零件存在同一路径的工程图
- For Each oRefDoc In oRefDocs
- idwPathName = Left(oRefDoc.FullDocumentName, Len(oRefDoc.FullDocumentName) - 3) & drawingformat
- '检测当前下层零件是否有工程图
- If(System.IO.File.Exists(idwPathName)) Then
- Dim oDrawDoc As DrawingDocument
- oDrawDoc = ThisApplication.Documents.Open(idwPathName, True)
- oFileName = IO.Path.GetFileNameWithoutExtension(oRefDoc.FullDocumentName)
- On Error Resume Next ' 如果目标PDF已存在并被打开或处于只读属性,跳过当前文档
- '设置PDF名字与保存路径
- oDataMedium.FileName = oFolder & "" & oFileName & ".pdf"
- '创建PDF
- Call PDFAddIn.SaveCopyAs(oDrawDoc, oContext, oOptions, oDataMedium)
- '关闭工程图
- oDrawDoc.Close
- Else
- '无操作,如同一文件夹不存在相应工程图
- End If
- Next
- '- - - - - - - - - - - - -
- '- - - - - - - - - - - - -顶层工程图 - - - - - - - - - - - -
- oAsmDrawing = ThisDoc.ChangeExtension(drawingformat)
- oAsmDrawingDoc = ThisApplication.Documents.Open(oAsmDrawing, True)
- oAsmDrawingName = ThisDoc.FileName(False) 'Without extension
- On Error Resume Next ' 如果目标PDF已存在并被打开或处于只读属性,跳过当前文档
- '设置PDF名字与保存路径
- oDataMedium.FileName = oFolder & "" & oAsmDrawingName & ".pdf"
- '创建PDF
- Call PDFAddIn.SaveCopyAs(oAsmDrawingDoc, oContext, oOptions, oDataMedium)