Inventor iLogic 批量导出pdf文件程序设计

JUMU实名认证 发表于 2025-12-12 17:26 | 显示全部楼层 | 复制链接分享      上一主题  翻页  下一主题
本规则将会为当前文档和所有下层工程图创建 PDF文档,运行本规则需保证工程图与三维文档存在同一文件夹。
  1. '定义当前文档为顶层文档
  2. Dim oAsmDoc As Document
  3. oAsmDoc = ThisApplication.ActiveDocument
  4. oAsmName = ThisDoc.FileName(False) 'without extension

  5. Dim drawingformat As String
  6. drawingformat = "idw"

  7. '- - - - - - - - - - - - -PDF setup - - - - - - - - - - - -
  8. oPath = ThisDoc.Path
  9. PDFAddIn = ThisApplication.ApplicationAddIns.ItemById("{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}")
  10. DXFAddIn = ThisApplication.ApplicationAddIns.ItemById("{C24E3AC4-122E-11D5-8E91-0010B541CD80}")
  11. DWFAddIn = ThisApplication.ApplicationAddIns.ItemById("{0AC6FD95-2F4D-42CE-8BE0-8AEA580399E4}")
  12. oContext = ThisApplication.TransientObjects.CreateTranslationContext
  13. oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism
  14. oOptions = ThisApplication.TransientObjects.CreateNameValueMap

  15. xOptions = ThisApplication.TransientObjects.CreateNameValueMap
  16. oDataMedium = ThisApplication.TransientObjects.CreateDataMedium
  17. oDocument = ThisApplication.ActiveDocument

  18. '定义PDF导出属性
  19. oOptions.Value("All_Color_AS_Black") = 1
  20. oOptions.Value("Remove_Line_Weights") = 0
  21. oOptions.Value("Vector_Resolution") = 400
  22. oOptions.Value("Sheet_Range") = Inventor.PrintRangeEnum.kPrintAllSheets


  23. '定义导出文档路径
  24. oFolder = "C:\Downloads\export"

  25. '根据检测结果创建导出文件夹
  26. If Not System.IO.Directory.Exists(oFolder) Then
  27. System.IO.Directory.CreateDirectory(oFolder)
  28. End If
  29. '- - - - - - - - - - - - -

  30. '- - - - - - - - - - - - -下层工程图 - - - - - - - - - - - -
  31. '循环引用当前文档所有下层零件
  32. Dim oRefDocs As DocumentsEnumerator
  33. oRefDocs = oAsmDoc.AllReferencedDocuments
  34. Dim oRefDoc As Document

  35. '打开与零件存在同一路径的工程图
  36. For Each oRefDoc In oRefDocs
  37. idwPathName = Left(oRefDoc.FullDocumentName, Len(oRefDoc.FullDocumentName) - 3) & drawingformat
  38. '检测当前下层零件是否有工程图
  39. If(System.IO.File.Exists(idwPathName)) Then
  40. Dim oDrawDoc As DrawingDocument
  41. oDrawDoc = ThisApplication.Documents.Open(idwPathName, True)
  42. oFileName = IO.Path.GetFileNameWithoutExtension(oRefDoc.FullDocumentName)

  43. On Error Resume Next ' 如果目标PDF已存在并被打开或处于只读属性,跳过当前文档
  44. '设置PDF名字与保存路径
  45. oDataMedium.FileName = oFolder & "" & oFileName & ".pdf"
  46. '创建PDF
  47. Call PDFAddIn.SaveCopyAs(oDrawDoc, oContext, oOptions, oDataMedium)

  48. '关闭工程图
  49. oDrawDoc.Close
  50. Else
  51. '无操作,如同一文件夹不存在相应工程图
  52. End If
  53. Next
  54. '- - - - - - - - - - - - -

  55. '- - - - - - - - - - - - -顶层工程图 - - - - - - - - - - - -
  56. oAsmDrawing = ThisDoc.ChangeExtension(drawingformat)
  57. oAsmDrawingDoc = ThisApplication.Documents.Open(oAsmDrawing, True)
  58. oAsmDrawingName = ThisDoc.FileName(False) 'Without extension

  59. On Error Resume Next ' 如果目标PDF已存在并被打开或处于只读属性,跳过当前文档
  60. '设置PDF名字与保存路径
  61. oDataMedium.FileName = oFolder & "" & oAsmDrawingName & ".pdf"
  62. '创建PDF
  63. Call PDFAddIn.SaveCopyAs(oAsmDrawingDoc, oContext, oOptions, oDataMedium)

复制代码


  距米网  

找到您想要的设计

工程师、学生在线交流学习平台
关注我们

手机版- 距米网 |苏公网安备32041102000587号

©2017-2025 苏ICP备18040927号-1