Сообщество программистов Autodesk в СНГ

ADN Club => Inventor API => Тема начата: Сергей SSS от 01-04-2016, 12:16:51

Название: Как кодом вывести чертеж на экспорт файла в формат PDF
Отправлено: Сергей SSS от 01-04-2016, 12:16:51
Решил заняться программированием в инвенторе. Нужно перевезти в pdf. Причем имя файла pdf бралось автоматом из обозначения проекта в свойствах сборки.iam
Название: Re: Как кодом вывести чертеж на экспорт файла в формат PDF
Отправлено: mikazakov от 01-04-2016, 13:59:21
Нужно перевезти в pdf. Причем имя файла pdf бралось автоматом из обозначения проекта в свойствах сборки.iam
что перевести? модель или чертеж? Язык какой?
Если это чертеж, то можно решить эту потребность другим способом, без программирования.

1. Изначально файлы инвентора должны иметь одинаковое название файла и обозначение.
2.Устанавливаем пдф-криатор для печати чертежа в пдф-файл:
http://pdfcreator.ru/
в нем можно настраивать имена выходных файлов.
3.запускаем планировщик задач (таск шедулер) и создаем пакетную печать чертежей в папке в пдф при помощи пдф-криатора.

и все готово, можно идти пить чай, за 15 мин планировщик задач может 500 чертежей перекатать в пдф.
Название: Re: Как кодом вывести чертеж на экспорт файла в формат PDF
Отправлено: Сергей SSS от 01-04-2016, 15:33:48
Спасибо, но первоначально обозначение чертежа назначать смысла нет. Неизвестно каким оно будет потом. А язык ilogic. Сложности в том чтобы находясь в чертеже вытащить из свойства модели обозначение (не из свойства чертежа)
Название: Re: Как кодом вывести чертеж на экспорт файла в формат PDF
Отправлено: mikazakov от 01-04-2016, 17:24:22
А язык ilogic.
Эта тема видимо популярная, yourtube рулит:



Собственно строка в илоджике:
Код - Visual Basic [Выбрать]
  1. ThisDoc.Document.SaveAs("D:\test.pdf", true)
уже будет сохранять в пдф.
Все остальное, что они в видео делают, просто назначают путь куда сохранять.

но первоначально обозначение чертежа назначать смысла нет.
Это точно, если используешь для переименования файлов дизайн ассистент или ваульт, то там Обозначение задается автоматически по имени файла при переименовании.

Название: Re: Как кодом вывести чертеж на экспорт файла в формат PDF
Отправлено: Сергей SSS от 04-04-2016, 09:50:03
modelName = IO.Path.GetFileName(ThisDrawing.ModelDocument.FullFileName)
это получение имя модели документа. А как получить обозначение из модели документа, чтобы им уже манипулировать в среде чертежа. В данном конкретном случае печать в пдф уже с измененным именем, в котором присутствует обозначение
Название: Re: Как кодом вывести чертеж на экспорт файла в формат PDF
Отправлено: Сергей SSS от 04-04-2016, 12:37:25
Разобрался
Код - Visual Basic [Выбрать]
  1. modelName = IO.Path.GetFileName(ThisDrawing.ModelDocument.FullFileName)
  2. iProperties.Value("Project", "Part Number")=iProperties.Value(modelName, "Project", "Part Number")
  3. iProperties.Value("Project", "Description")=iProperties.Value(modelName, "Project", "Description")
  4. MName=iProperties.Value("Project", "Part Number")& " " & iProperties.Value("Project", "Description")
  5. ThisDoc.Document.SaveAs("\\To1\обмен\_НА ПЕЧАТЬ\" & MName & ".pdf", True)
  6.  
Название: Re: Как кодом вывести чертеж на экспорт файла в формат PDF
Отправлено: Сергей SSS от 04-04-2016, 13:31:40
Тут появился следующий вопрос. Как это правило сделать правилом для всех вновь создающихся деталей. Хотел к шаблону подшить это правило- не получилось
Название: Re: Как кодом вывести чертеж на экспорт файла в формат PDF
Отправлено: Александр Ривилис от 04-04-2016, 13:33:04
На форуме действует своё правило: "Один вопрос - одна тема". Так что создай отдельную тему.
Название: Re: Как кодом вывести чертеж на экспорт файла в формат PDF
Отправлено: Сергей SSS от 05-04-2016, 13:55:19
Лучший код:
Код - vb.net [Выбрать]
  1. ' Get the PDF translator Add-In.
  2. Dim PDFAddIn As TranslatorAddIn
  3. PDFAddIn = ThisApplication.ApplicationAddIns.ItemById("{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}")
  4. 'Set a reference to the active document (the document to be published).
  5. Dim oDocument As Document
  6. oDocument = ThisApplication.ActiveDocument
  7. Dim oContext As TranslationContext
  8. oContext = ThisApplication.TransientObjects.CreateTranslationContext
  9. oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism
  10. ' Create a NameValueMap object
  11. Dim oOptions As NameValueMap
  12. oOptions = ThisApplication.TransientObjects.CreateNameValueMap
  13. ' Create a DataMedium object
  14. Dim oDataMedium As DataMedium
  15. oDataMedium = ThisApplication.TransientObjects.CreateDataMedium
  16.  
  17. ' Check whether the translator has 'SaveCopyAs' options
  18. If PDFAddIn.HasSaveCopyAsOptions(oDataMedium, oContext, oOptions) Then
  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. 'oOptions.Value("Custom_Begin_Sheet") = 2
  24. 'oOptions.Value("Custom_End_Sheet") = 4
  25. End If
  26.  
  27. PDFDirectory = ThisDoc.Path
  28. oFileName = ThisDoc.FileName(False) 'without extension
  29.  
  30. modelName = IO.Path.GetFileName(ThisDrawing.ModelDocument.FullFileName)
  31. iProperties.Value("Project", "Part Number")=iProperties.Value(modelName, "Project", "Part Number")
  32. iProperties.Value("Project", "Description")=iProperties.Value(modelName, "Project", "Description")
  33. MName=iProperties.Value("Project", "Part Number")& " " & iProperties.Value("Project", "Description")
  34.  
  35. oDataMedium.FileName = "D:\PRINT\" & "\" & MName & ".PDF"
  36.  
  37. 'Publish document.
  38. PDFAddIn.SaveCopyAs(oDocument, oContext, oOptions, oDataMedium)
  39. 'Launch the PDF file in whatever application Windows is set to open this document type with
  40. i = MessageBox.Show("Открыть?", "PDF Preview",MessageBoxButtons.YesNo,MessageBoxIcon.Question)
  41. If i = vbYes Then ThisDoc.Launch(oDataMedium.FileName)
  42.  
  43.  


В этом случае печать многостраничная возможна