Работа с чертежами

Автор Тема: Работа с чертежами  (Прочитано 3587 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Работа с чертежами
« : 16-05-2019, 12:17:02 »
Добрый день. Возникло несколько вопросов по работе с чертежами в Inventor API.
1) Можно ли сохранять чертежи из Inventor в формате dwg, используя API. Если да, то как?
2) Как получить доступ к отдельным листам в документе InventorDWG, используя коневой DrawingDocument?

Спасибо за информацию.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Работа с чертежами
« Ответ #1 : 16-05-2019, 12:25:19 »
Vladislav,
На будущее: "Один вопрос - одна тема".
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Re: Работа с чертежами
« Ответ #2 : 16-05-2019, 12:27:54 »
Хорошо. Тогда пусть это будет первый вопрос). Можно ли сохранять листы в dwg?

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Работа с чертежами
« Ответ #3 : 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.  

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Работа с чертежами
« Ответ #4 : 16-05-2019, 12:31:19 »

Как получить доступ к отдельным листам в документе InventorDWG, используя коневой DrawingDocument?
Коллекция: DrawingDocument.Sheets

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Re: Работа с чертежами
« Ответ #5 : 16-05-2019, 12:45:40 »
Спасибо.
Вы имеете в виду примеры, идущие вместе с Inventor SDK?
В частности Translator, в папке Samples\VC++\Translator?

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Работа с чертежами
« Ответ #6 : 16-05-2019, 13:02:05 »
Вы имеете в виду примеры, идущие вместе с Inventor SDK?
Нет, сама справка по API, там есть примеры. Ну и в SDK скорее всего есть, но зачем вам VC++?

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Re: Работа с чертежами
« Ответ #7 : 16-05-2019, 13:05:18 »
Я просто сначала не понял, какие именно примеры Вы имеете в виду.
В коде есть ссылка на Translator AddIn, а единственный Translator, который я нашел в примерах - на VC++.
Не туда посмотрел.

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Работа с чертежами
« Ответ #8 : 16-05-2019, 13:10:39 »
Translator AddIn
Ну трансляторы уже по умолчанию подключены к инвентору

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Re: Работа с чертежами
« Ответ #9 : 17-05-2019, 14:43:01 »
Добрый день.
При попытке вызвать метод SaveAs у объекта типа DrawingDocument получаю ошибку (скриншот в приложении).
Вызываю для корневого объекта (он содержит три чертежа). Аналогичную ошибку получаю при попытке
выполнения кода примера(того, что приведен выше) по конвертированию в DWG. Ошибка возникает в методе
TranslatorAddIn.SaveCopyAs().
Благодарю за ответы.


Оффлайн xzenter

  • ADN OPEN
  • Сообщений: 29
  • Карма: 1
    • xzenter.com
  • Skype: xzenter
Re: Работа с чертежами
« Ответ #10 : 17-05-2019, 16:59:16 »
Добрый день.
При попытке вызвать метод SaveAs у объекта типа DrawingDocument получаю ошибку (скриншот в приложении).
Вызываю для корневого объекта (он содержит три чертежа). Аналогичную ошибку получаю при попытке
выполнения кода примера(того, что приведен выше) по конвертированию в DWG. Ошибка возникает в методе
TranslatorAddIn.SaveCopyAs().
Благодарю за ответы.

На диск C может не сохранять в некоторых случаях. Только один чертеж(лист) можно сделать данным правилом.

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Re: Работа с чертежами
« Ответ #11 : 17-05-2019, 17:19:09 »
А как сохранить один лист, если у класса Sheet нет методов для сохранения?
Или я ошибаюсь?

Оффлайн xzenter

  • ADN OPEN
  • Сообщений: 29
  • Карма: 1
    • xzenter.com
  • Skype: xzenter
Re: Работа с чертежами
« Ответ #12 : 17-05-2019, 19:25:20 »
Я ошибся, сохраняет все листы, которые есть в файле чертежа, как отдельные файлы dwg. Правило из справки, которое предоставил mikazakov выше, полностью рабочее. Необходимо его запустить через ilogic. Но самое странное то, что правило сразу не сработало (свежая установка Inventor 2020), пока вручную не сохранил чертеж как Autocad DWG. Возможно, связано с запуском транслятора. И на диск C не сохраняет файлы, видимо, связано с политиками безопасности системы.  Из вашего вопроса не понятно, вы хотите сохранять Autocad dwg или Inventor dwg. Это разные механизмы.

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Работа с чертежами
« Ответ #13 : 17-05-2019, 20:23:33 »
Ошибка возникает в методе
TranslatorAddIn.SaveCopyAs().
код на VBA работает? Да и поподробнее надо хотя бы файл тестируемый и результат желаемый описать

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Re: Работа с чертежами
« Ответ #14 : 21-05-2019, 11:24:41 »
Вроде, заработало. Спасибо. Пока проверял только в Inventor 2019.