Путь сохранения результата импорта SAT

Автор Тема: Путь сохранения результата импорта SAT  (Прочитано 2021 раз)

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

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

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Приветствую!
Выполняю такой код по импорту SAT-файла
Код - C# [Выбрать]
  1. //Производим импорт SAT-файла
  2.             String strCLSID = "";            
  3.             strCLSID = "{89162634-02B6-11D5-8E80-0010B541CD80}";                        
  4.            
  5.  
  6.             ApplicationAddIns oAddIns = m_Application.ApplicationAddIns;
  7.             TranslatorAddIn oTransAddIn = oAddIns.ItemById[strCLSID] as TranslatorAddIn;
  8.  
  9.             TransientObjects transientObj = m_Application.TransientObjects;
  10.  
  11.             DataMedium dataMedium = transientObj.CreateDataMedium();
  12.             dataMedium.FileName = fileName;
  13.  
  14.             //Prepare the second parameter for Open(), the open type.    
  15.             TranslationContext context = transientObj.CreateTranslationContext();
  16.             context.Type = IOMechanismEnum.kDataDropIOMechanism;
  17.  
  18.             //Prepare the 3rd parameter for Open(), the options.    
  19.             NameValueMap options = transientObj.CreateNameValueMap();
  20.             options.Value["SaveComponentDuringLoad"] = false;
  21.             options.Value["SaveLocationIndex"] = 0;
  22.             options.Value["ComponentDestFolder"] = "";
  23.             options.Value["ImportUnit"] = 1;
  24.             options.Value["ImportColor"] = true;
  25.             options.Value["ImportColorIndex"] = 0;
  26.  
  27.             // Prepare the fourth parameter for Open(), the final document.
  28.             Object sourceObj;
  29.  
  30.             //Open the SAT file.
  31.             oTransAddIn.Open(dataMedium, context, options, out sourceObj);
  32.  
  33.             //Получим текущий документ-сборку            
  34.             AssemblyDocument doc = m_Application.ActiveDocument as AssemblyDocument;
  35.             doc.DisplayName = objName;
  36.             doc.UnitsOfMeasure.LengthUnits = UnitsTypeEnum.kMillimeterLengthUnits;            
  37.            
  38.             doc.Save2();
  39.             doc.Close();
Импорт выполняется корректно.
Создается папка Imported Components. В неё сохраняется результат.
Но вот папка эта создается не там где мне нужно, а, например, в месте расположения последнего открытого документа.
Где можно указать адрес для папки Imported Components?
Спасибо.

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Но вот папка эта создается не там где мне нужно, а, например, в месте расположения последнего открытого документа.
Где можно указать адрес для папки Imported Components?
Моя интуиция подсказывает, что нужно заменить эту строку:
Код - C# [Выбрать]
  1. options.Value["ComponentDestFolder"] = "";
на
Код - C# [Выбрать]
  1. options.Value["ComponentDestFolder"] = "путь_к_папке_Imported Components";
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
К сожалению, не помогает...

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
К сожалению, не помогает...
Давайте так, "причёсанный" макрос на VBA и пример модели не шибко "толстый", я посмотрю по подробнее и если нужно отправлю запрос в техподдержку.

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

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Вот VBA-макрос
Код - Visual Basic [Выбрать]
  1. Sub ImportSATFunc()
  2.     ' Set SAT translator's CLSID and STL file name.
  3.    Dim strCLSID As String
  4.     Dim strFileName As String
  5.     strCLSld = "{89162634-02B6-11D5-8E80-0010B541CD80}"
  6.     strFileName = "C:\102.SAT"
  7.      
  8.     Dim oAddIns As ApplicationAddIns
  9.     Set oAddIns = ThisApplication.ApplicationAddIns
  10.    
  11.     ' Find the SAT translator, get the CLSID and activate it.
  12.    Dim oTransAddIn As TranslatorAddIn
  13.     Set oTransAddIn = oAddIns.ItemById(strCLSld)
  14.     'oTransAddIn.Activate
  15.    
  16.     ' Get the transient object and take it as a factory to produce other objects
  17.    Dim transientObj As TransientObjects
  18.     Set transientObj = ThisApplication.TransientObjects
  19.    
  20.     ' Prepare the first parameter for Open(), the file name
  21.    Dim file As DataMedium
  22.     Set file = transientObj.CreateDataMedium
  23.     file.FileName = strFileName
  24.    
  25.     ' Prepare the second parameter for Open(), the open type.
  26.    Dim context As TranslationContext
  27.     Set context = transientObj.CreateTranslationContext
  28.     context.Type = kDataDropIOMechanism
  29.    
  30.     ' Prepare the 3rd parameter for Open(), the options.
  31.    Dim options As NameValueMap
  32.     Set options = transientObj.CreateNameValueMap
  33.     options.Value("SaveComponentDuringLoad") = False
  34.     options.Value("SaveLocationIndex") = 0
  35.     options.Value("ComponentDestFolder") = ""
  36.     options.Value("ImportUnit") = 1
  37.     options.Value("ImportColor") = True
  38.     options.Value("ImportColorIndex") = 0
  39.    
  40.     ' Prepare the fourth parameter for Open(), the final document.
  41.    Dim sourceObj As Object
  42.    
  43.     ' Open the SAT file.
  44.    oTransAddIn.Open file, context, options, sourceObj
  45.    
  46.     ThisApplication.ActiveDocument.Save2
  47.    
  48. End Sub

Также прилагаю SAT-файл.
Интересует установка пути, по которому будет создаваться папка Imported Components с результатами импорта.
Спасибо за ответы.

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Vladislav,
А если поменять:
Код - Visual Basic [Выбрать]
  1. options.Value("SaveComponentDuringLoad") = False
на
Код - Visual Basic [Выбрать]
  1. options.Value("SaveComponentDuringLoad") = True
и задать нормальный путь в options.Value("ComponentDestFolder")

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Нужно разрешить сохранение в другую папку (не в папку проекта)
options.Value("SaveLocationIndex") = 1
и тогда сохранятся будет по прописанному пути
  options.Value("ComponentDestFolder") = "D:\3"

Код - Visual Basic [Выбрать]
  1. Sub ImportSATFunc()
  2.     ' Set SAT translator's CLSID and STL file name.
  3.    Dim strCLSID As String
  4.     Dim strFileName As String
  5.     strCLSld = "{89162634-02B6-11D5-8E80-0010B541CD80}"
  6.     strFileName = "D:\2\102.SAT"
  7.      
  8.     Dim oAddIns As ApplicationAddIns
  9.     Set oAddIns = ThisApplication.ApplicationAddIns
  10.    
  11.     ' Find the SAT translator, get the CLSID and activate it.
  12.    Dim oTransAddIn As TranslatorAddIn
  13.     Set oTransAddIn = oAddIns.ItemById(strCLSld)
  14.     'oTransAddIn.Activate
  15.    
  16.     ' Get the transient object and take it as a factory to produce other objects
  17.    Dim transientObj As TransientObjects
  18.     Set transientObj = ThisApplication.TransientObjects
  19.    
  20.     ' Prepare the first parameter for Open(), the file name
  21.    Dim file As DataMedium
  22.     Set file = transientObj.CreateDataMedium
  23.     file.FileName = strFileName
  24.    
  25.     ' Prepare the second parameter for Open(), the open type.
  26.    Dim context As TranslationContext
  27.     Set context = transientObj.CreateTranslationContext
  28.     context.Type = kDataDropIOMechanism
  29.    
  30.     ' Prepare the 3rd parameter for Open(), the options.
  31.    Dim options As NameValueMap
  32.     Set options = transientObj.CreateNameValueMap
  33.     options.Value("SaveComponentDuringLoad") = False
  34.     options.Value("SaveLocationIndex") = 0
  35.     'options.Value("ComponentDestFolder") = ""
  36.    options.Value("ImportUnit") = 1
  37.     options.Value("ImportColor") = True
  38.     options.Value("ImportColorIndex") = 0
  39.    
  40.     options.Value("ComponentDestFolder") = "D:\3"
  41.     options.Value("SaveLocationIndex") = 1
  42.    
  43.  
  44.     ' Prepare the fourth parameter for Open(), the final document.
  45.    Dim sourceObj As Object
  46.    
  47.     ' Open the SAT file.
  48.    oTransAddIn.Open file, context, options, sourceObj
  49.    
  50.     ThisApplication.ActiveDocument.Save2
  51.    
  52. End Sub
  53.