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

ADN Club => Inventor API => Тема начата: Vladislav от 16-05-2019, 12:17:02

Название: Работа с чертежами
Отправлено: Vladislav от 16-05-2019, 12:17:02
Добрый день. Возникло несколько вопросов по работе с чертежами в Inventor API.
1) Можно ли сохранять чертежи из Inventor в формате dwg, используя API. Если да, то как?
2) Как получить доступ к отдельным листам в документе InventorDWG, используя коневой DrawingDocument?

Спасибо за информацию.
Название: Re: Работа с чертежами
Отправлено: Александр Ривилис от 16-05-2019, 12:25:19
Vladislav,
На будущее: "Один вопрос - одна тема".
Название: Re: Работа с чертежами
Отправлено: Vladislav от 16-05-2019, 12:27:54
Хорошо. Тогда пусть это будет первый вопрос). Можно ли сохранять листы в dwg?
Название: Re: Работа с чертежами
Отправлено: mikazakov от 16-05-2019, 12:29:34
1) Можно ли сохранять чертежи из Inventor в формате dwg, используя API. Если да, то как?
Посмотрите примеры в хэлпе там есть две программки, вот одна из них:
Код - Visual Basic [Выбрать]
  1. Public Sub PublishDWG()
  2.     ' Get the DWG translator Add-In.
  3.    Dim DWGAddIn As TranslatorAddIn
  4.     Set DWGAddIn = ThisApplication.ApplicationAddIns.ItemById("{C24E3AC2-122E-11D5-8E91-0010B541CD80}")
  5.  
  6.     'Set a reference to the active document (the document to be published).
  7.    Dim oDocument As Document
  8.     Set oDocument = ThisApplication.ActiveDocument
  9.  
  10.     Dim oContext As TranslationContext
  11.     Set oContext = ThisApplication.TransientObjects.CreateTranslationContext
  12.     oContext.Type = kFileBrowseIOMechanism
  13.  
  14.     ' Create a NameValueMap object
  15.    Dim oOptions As NameValueMap
  16.     Set oOptions = ThisApplication.TransientObjects.CreateNameValueMap
  17.  
  18.     ' Create a DataMedium object
  19.    Dim oDataMedium As DataMedium
  20.     Set oDataMedium = ThisApplication.TransientObjects.CreateDataMedium
  21.  
  22.     ' Check whether the translator has 'SaveCopyAs' options
  23.    If DWGAddIn.HasSaveCopyAsOptions(oDocument, oContext, oOptions) Then
  24.  
  25.         Dim strIniFile As String
  26.         strIniFile = "C:\tempDWGOut.ini"
  27.         ' Create the name-value that specifies the ini file to use.
  28.        oOptions.Value("Export_Acad_IniFile") = strIniFile
  29.     End If
  30.  
  31.     'Set the destination file name
  32.    oDataMedium.FileName = "c:\tempdwgout.dwg"
  33.  
  34.     'Publish document.
  35.    Call DWGAddIn.SaveCopyAs(oDocument, oContext, oOptions, oDataMedium)
  36. End Sub
  37.  
Название: Re: Работа с чертежами
Отправлено: mikazakov от 16-05-2019, 12:31:19

Как получить доступ к отдельным листам в документе InventorDWG, используя коневой DrawingDocument?
Коллекция: DrawingDocument.Sheets
Название: Re: Работа с чертежами
Отправлено: Vladislav от 16-05-2019, 12:45:40
Спасибо.
Вы имеете в виду примеры, идущие вместе с Inventor SDK?
В частности Translator, в папке Samples\VC++\Translator?
Название: Re: Работа с чертежами
Отправлено: mikazakov от 16-05-2019, 13:02:05
Вы имеете в виду примеры, идущие вместе с Inventor SDK?
Нет, сама справка по API, там есть примеры. Ну и в SDK скорее всего есть, но зачем вам VC++?
Название: Re: Работа с чертежами
Отправлено: Vladislav от 16-05-2019, 13:05:18
Я просто сначала не понял, какие именно примеры Вы имеете в виду.
В коде есть ссылка на Translator AddIn, а единственный Translator, который я нашел в примерах - на VC++.
Не туда посмотрел.
Название: Re: Работа с чертежами
Отправлено: mikazakov от 16-05-2019, 13:10:39
Translator AddIn
Ну трансляторы уже по умолчанию подключены к инвентору
Название: Re: Работа с чертежами
Отправлено: Vladislav от 17-05-2019, 14:43:01
Добрый день.
При попытке вызвать метод SaveAs у объекта типа DrawingDocument получаю ошибку (скриншот в приложении).
Вызываю для корневого объекта (он содержит три чертежа). Аналогичную ошибку получаю при попытке
выполнения кода примера(того, что приведен выше) по конвертированию в DWG. Ошибка возникает в методе
TranslatorAddIn.SaveCopyAs().
Благодарю за ответы.

Название: Re: Работа с чертежами
Отправлено: xzenter от 17-05-2019, 16:59:16
Добрый день.
При попытке вызвать метод SaveAs у объекта типа DrawingDocument получаю ошибку (скриншот в приложении).
Вызываю для корневого объекта (он содержит три чертежа). Аналогичную ошибку получаю при попытке
выполнения кода примера(того, что приведен выше) по конвертированию в DWG. Ошибка возникает в методе
TranslatorAddIn.SaveCopyAs().
Благодарю за ответы.

На диск C может не сохранять в некоторых случаях. Только один чертеж(лист) можно сделать данным правилом.
Название: Re: Работа с чертежами
Отправлено: Vladislav от 17-05-2019, 17:19:09
А как сохранить один лист, если у класса Sheet нет методов для сохранения?
Или я ошибаюсь?
Название: Re: Работа с чертежами
Отправлено: xzenter от 17-05-2019, 19:25:20
Я ошибся, сохраняет все листы, которые есть в файле чертежа, как отдельные файлы dwg. Правило из справки, которое предоставил mikazakov выше, полностью рабочее. Необходимо его запустить через ilogic. Но самое странное то, что правило сразу не сработало (свежая установка Inventor 2020), пока вручную не сохранил чертеж как Autocad DWG. Возможно, связано с запуском транслятора. И на диск C не сохраняет файлы, видимо, связано с политиками безопасности системы.  Из вашего вопроса не понятно, вы хотите сохранять Autocad dwg или Inventor dwg. Это разные механизмы.
Название: Re: Работа с чертежами
Отправлено: mikazakov от 17-05-2019, 20:23:33
Ошибка возникает в методе
TranslatorAddIn.SaveCopyAs().
код на VBA работает? Да и поподробнее надо хотя бы файл тестируемый и результат желаемый описать
Название: Re: Работа с чертежами
Отправлено: Vladislav от 21-05-2019, 11:24:41
Вроде, заработало. Спасибо. Пока проверял только в Inventor 2019.