[Inventor] iLogic编程自动将工程图图纸导出pdf格式文件到某文件夹

JUMU实名认证 发表于 2026-01-07 17:37 | 显示全部楼层 | 复制链接分享      上一主题  翻页  下一主题
iLogic编程自动将工程图图纸导出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:\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)


  64. drawingformat = "dwg"

  65. '- - - - - - - - - - - - -PDF setup - - - - - - - - - - - -
  66. oPath = ThisDoc.Path
  67. PDFAddIn = ThisApplication.ApplicationAddIns.ItemById("{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}")
  68. DXFAddIn = ThisApplication.ApplicationAddIns.ItemById("{C24E3AC4-122E-11D5-8E91-0010B541CD80}")
  69. DWFAddIn = ThisApplication.ApplicationAddIns.ItemById("{0AC6FD95-2F4D-42CE-8BE0-8AEA580399E4}")
  70. oContext = ThisApplication.TransientObjects.CreateTranslationContext
  71. oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism
  72. oOptions = ThisApplication.TransientObjects.CreateNameValueMap

  73. xOptions = ThisApplication.TransientObjects.CreateNameValueMap
  74. oDataMedium = ThisApplication.TransientObjects.CreateDataMedium
  75. oDocument = ThisApplication.ActiveDocument

  76. '定义PDF导出属性
  77. oOptions.Value("All_Color_AS_Black") = 1
  78. oOptions.Value("Remove_Line_Weights") = 0
  79. oOptions.Value("Vector_Resolution") = 400
  80. oOptions.Value("Sheet_Range") = Inventor.PrintRangeEnum.kPrintAllSheets


  81. '定义导出文档路径
  82. oFolder = "C:\export"

  83. '根据检测结果创建导出文件夹
  84. If Not System.IO.Directory.Exists(oFolder) Then
  85. System.IO.Directory.CreateDirectory(oFolder)
  86. End If
  87. '- - - - - - - - - - - - -

  88. '- - - - - - - - - - - - -下层工程图 - - - - - - - - - - - -
  89. '循环引用当前文档所有下层零件

  90. oRefDocs = oAsmDoc.AllReferencedDocuments


  91. '打开与零件存在同一路径的工程图
  92. For Each oRefDoc In oRefDocs
  93. idwPathName = Left(oRefDoc.FullDocumentName, Len(oRefDoc.FullDocumentName) - 3) & drawingformat
  94. '检测当前下层零件是否有工程图
  95. If(System.IO.File.Exists(idwPathName)) Then
  96. Dim oDrawDoc As DrawingDocument
  97. oDrawDoc = ThisApplication.Documents.Open(idwPathName, True)
  98. oFileName = IO.Path.GetFileNameWithoutExtension(oRefDoc.FullDocumentName)

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

  104. '关闭工程图
  105. oDrawDoc.Close
  106. Else
  107. '无操作,如同一文件夹不存在相应工程图
  108. End If
  109. Next
  110. '- - - - - - - - - - - - -

  111. '- - - - - - - - - - - - -顶层工程图 - - - - - - - - - - - -
  112. oAsmDrawing = ThisDoc.ChangeExtension(drawingformat)
  113. oAsmDrawingDoc = ThisApplication.Documents.Open(oAsmDrawing, True)
  114. oAsmDrawingName = ThisDoc.FileName(False) 'Without extension

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


  距米网  

找到您想要的设计

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

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

©2017-2025 苏ICP备18040927号-1