Официальный форум российского программного комплекса T-FLEX PLM


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Экспорт в формат STEP
 
Спасибо!
Экспорт в формат STEP
 
Добрый день!

Столкнулся с неожиданной проблемой экспорта документа в STEP.
Использую вот такую схему:

var exporter = new ExportToSTEP( doc );
if( exporter.Export( @”d:\work\123.stp” ) ) {}

однако, метод Export() всегда возвращает false.
Подскажите пожалуйста, что нужно сделать, чтобы экспорт всё таки успешно выполнялся?

P.S. ExportToU3D аналогично не работает.

Спасибо!
[ Закрыто] Превью изображение, Как получить изображение превьюшки модели/чертежа
 
Добрый день!

Появилась необходимость получать превьюшки (картинки) 3D моделей/чертежей.
В API я увидел классы типа ExportTo... Один из них позволяет в файл экспортнуть 3D битмапку в файл.
Вариант получается не очень удобный, потому что:
1. приходится открывать 3D вид документа,
2. создавать временный файл, а превьюшка нужна в режиме реального времени,
3. в картинке отображается именно текущая 3D сцена (т.е. модель может быть перевернута, а хочется именно чтобы в диметрии в определенном масштабе отображение было)

Я заметил, что у самого TFLEX CAD, в браузере "Меню документов" есть быстрый просмотр превьюшек документов (см. рис. ниже).
Никто не подскажет, а можно ли им каким-либо образом воспользоваться?
Изменено: SwnSerg - 15.06.2017 15:37:12
Конфигурации модели
 
[QUOTE]Vite написал:
[QUOTE] SwnSerg написал:
нужно ли после  вызова данного метода вызывать document.Regenerate(options)? или LoadConfigurationVariables(confName) достаточно?[/QUOTE]
я пробовал применить метод LoadConfigurationSolids, но возникает исключение, типа:
[CODE] An exception of type 'System.AccessViolationException' occurred in TFlexAPI.dll but was not handled in user code
Additional information: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
[/CODE]
если макрос запустить без отладчика, приложение T-FLEX CAD завершается с ошибкой. что именно вызывает ошибку, мне непонятно. незнаю зачем вам понадобилось использовать конфигурации модели. на мой взгляд, проще и эффективнее загрузить параметры из базы данных.[/QUOTE]
я, возможно, сужу по другим CAD'ам (типа компаса или инвентора), но LoadConfigurationSolids мне показалось должен перезагрузить документ с тем набором компонентов (3D фрагментов), которые сохранены в конкретной конфигурации.
я к чему - в разных конфигурациях ведь может быть разный набор фрагментов - ну, например, в одной конфигурации используются болты одного типа, а в другой - другого.
возможно такое делается как-то по другому?
Изменено: SwnSerg - 05.03.2017 16:13:02
Конфигурации модели
 
[QUOTE]Vite написал:
[QUOTE] SwnSerg написал:
такое возможно реализовать?[/QUOTE]
[CODE] using System.Windows.Forms;
using TFlex.Model;

namespace Test
{
   public class Class6
   {
       public static void Run()
       {
           Document document = TFlex.Application.ActiveDocument;
           RegenerateOptions options = new RegenerateOptions();

           options.Full = true;

           string confName = "";
           string confCurrent = document.ModelConfigurations.GetConfigurationWithCurrentValues();

           MessageBox.Show("Текущая конфигурация: " + confCurrent);

           for (int i = 0; i < document.ModelConfigurations.ConfigurationCount; i++)
           {
               confName = document.ModelConfigurations.GetConfigurationName(i);

               if (confName != confCurrent)
               {
                   MessageBox.Show("Следующая конфигурация: " + confName);

                   document.ModelConfigurations.LoadConfigurationVariables(confName);
                   document.Regenerate(options);
               }

               if (i == document.ModelConfigurations.ConfigurationCount - 1)
               {
                   MessageBox.Show("Возврат к исходной конфигурации");
                   document.ModelConfigurations.LoadConfigurationVariables(confCurrent);
                   document.Regenerate(options);
               }
           }
       }
   }
}
[/CODE][/QUOTE]
а вопрос такой тогда возникает:
если у меня в двух конфигурациях документа разный набор, например, 3D фрагментов. правильно ли я понимаю, что метод ModelConfigurations.LoadConfigurationSolids позволяет для конфигурации с определенным именем этот набор 3D фрагментов обновить?
нужно ли после  вызова данного метода вызывать document.Regenerate(options)? или LoadConfigurationVariables(confName) достаточно?
Конфигурации модели
 
[QUOTE]zobza написал:
[QUOTE] SwnSerg написал:
Добрый день!
Подскажите, пожалуйста, каким образом можно узнать какая конфигурация модели является текущей (активной)?[/QUOTE]
О какой конфигурации речь?[/QUOTE]
речь идет о конфигурациях, которые можно посмотреть по команде "Конфигурации и исполнения".
хочется по очереди загружать переменные конфигурации через API, но в итоге вернуть документ в первоначальное состояние (т.е. к той конфигурации,которая была до перебора конфигураций в цикле активна).
такое возможно реализовать?
Конфигурации модели
 
Добрый день!

Подскажите, пожалуйста, каким образом можно узнать какая конфигурация модели является текущей (активной)?
[ Закрыто] Обновление всех открытых документов, Как сделать полный пересчёт всех открытых документов.
 
[QUOTE]Vite написал:
[QUOTE] SwnSerg написал:
Подскажите, пожалуйста, каким образом можно обновить все открытые документы в сессии T-Flex CAD?
[/QUOTE]
макрос регенерации открытых документов:
[CODE] using System.Collections.Generic;
using System.Windows.Forms;
using TFlex.Model;

namespace Test
{
   public class Class5
   {
       static List<Document> documents = new List<Document>();

       public static void Run()
       {
           Document activedocument = TFlex.Application.ActiveDocument;

           if (activedocument != null)
           {
               RegenerateOptions options = new RegenerateOptions();

               options.Full = true;
               options.UpdateAllLinks = true;
               options.UpdateBillOfMaterials = true;

               foreach (var doc in GetDocuments())
               {
                   doc.BeginChanges("Регенерация документа " + doc.FileName);
                   doc.Regenerate(options);
                   doc.EndChanges();
               }

               activedocument.Activate();

               documents.Clear();
           }
           else
           {
               MessageBox.Show("Не обнаружен активный документ.",
                   "T-FLEX CAD", MessageBoxButtons.OK, MessageBoxIcon.Question);
           }
       }

       static List<Document> GetDocuments()
       {
           foreach (Document d in TFlex.Application.Documents)
           {
               if (d.ActiveView != null)
               {
                   documents.Add(d);
               }
           }

           return documents;
       }
   }
}
[/CODE][/QUOTE]
спасибо!
[ Закрыто] Обновление всех открытых документов, Как сделать полный пересчёт всех открытых документов.
 
Добрый день!
Подскажите, пожалуйста, каким образом можно обновить все открытые документы в сессии T-Flex CAD?
В API что-то не удалось найти...
[ Закрыто] Наименование и обозначение документа, Как получить значения наименования и обозначения документа через API?
 
[QUOTE]zobza написал:
[QUOTE] SwnSerg написал:
[QUOTE] Vite написал:
[QUOTE] SwnSerg написал:
Подскажите, пожалуйста, каким образом можно получить значения наименования и обозначения документа?
[/QUOTE]
[CODE] Document document = TFlex.Application.ActiveDocument;

string Name = document.FindVariable("$Наименование").TextValue;
string Designation = document.FindVariable("$Обозначение").TextValue;
  [/CODE][/QUOTE]
а еще вопросик вдогонку... подскажите, пожалуйста, вот есть такой метод у Document - GetAttributes(). В самом приложении TFlex CAD я могу посмотреть эти же самые атрибуты?
и где лучше хранить вспомогательные данные для плагина - в атрибутах документа или в переменных?[/QUOTE]
В app.config[/QUOTE]
тут всё же речь о данных о документе (пользовательских свойствах, как например у Word'a)
[ Закрыто] Наименование и обозначение документа, Как получить значения наименования и обозначения документа через API?
 
[QUOTE]Vite написал:
[QUOTE] SwnSerg написал:
В самом приложении TFlex CAD я могу посмотреть эти же самые атрибуты?
[/QUOTE]
если я не ошибаюсь, контейнер атрибутов документа используется для хранения метаданных.
[QUOTE] SwnSerg написал:
и где лучше хранить вспомогательные данные для плагина - в атрибутах документа или в переменных?[/QUOTE]
что вы подразумеваете под определением "вспомогательные данные" для плагина?[/QUOTE]

тут идет речь о пользовательских свойствах документа
[ Закрыто] Наименование и обозначение документа, Как получить значения наименования и обозначения документа через API?
 
[QUOTE]Vite написал:
[QUOTE] SwnSerg написал:
Подскажите, пожалуйста, каким образом можно получить значения наименования и обозначения документа?
[/QUOTE]
[CODE] Document document = TFlex.Application.ActiveDocument;

string Name = document.FindVariable("$Наименование").TextValue;
string Designation = document.FindVariable("$Обозначение").TextValue;
[/CODE][/QUOTE]
а еще вопросик вдогонку... подскажите, пожалуйста, вот есть такой метод у Document - GetAttributes(). В самом приложении TFlex CAD я могу посмотреть эти же самые атрибуты?
и где лучше хранить вспомогательные данные для плагина - в атрибутах документа или в переменных?
[ Закрыто] Наименование и обозначение документа, Как получить значения наименования и обозначения документа через API?
 
[QUOTE]Vite написал:
[QUOTE] SwnSerg написал:
Подскажите, пожалуйста, каким образом можно получить значения наименования и обозначения документа?
[/QUOTE]
[CODE] Document document = TFlex.Application.ActiveDocument;

string Name = document.FindVariable("$Наименование").TextValue;
string Designation = document.FindVariable("$Обозначение").TextValue;
[/CODE][/QUOTE]
спасибо!
[ Закрыто] Наименование и обозначение документа, Как получить значения наименования и обозначения документа через API?
 
Добрый день!

Подскажите, пожалуйста, каким образом можно получить значения наименования и обозначения документа?

Спасибо!
Определить тип документа
 
[QUOTE]Sila Musli написал:
Хз как там в АПИ, но сам тип документа у Флекса один и тот же. Если есть 3Д, и нет форматок, то это просто Деталь, если есть форматки, то это чертёж и деталь, если есть фрагменты в 3Д, то это сборка, прототипы тут не при чём. Самый прикол, что и это не факт! Я иногда делаю деталь, а потом решаю, что будет сборка. Бывает в сборке все чертежи всех деталей. Бывает 3Д отдельно от 2Д, но правда редко. Бывает деталь, но с фрагментами. Нужно ввести переменную, которая будет чётко давать понять, что именно перед нами. Но задача не ясна, решения не будет, по началу мне показалось, что нужно просто чтоб плагин различал 3Д и 2Д, а тут ещё и сборки...сборки кстати бывают и 2Д....[/QUOTE]
если у вас получится мне написать, каким образом со 100% вероятностью определить - 3D модель представляет документ или чертеж - я буду очень благодарен! :)
Определить тип документа
 
[QUOTE]zobza написал:
[QUOTE] SwnSerg написал:
[QUOTE] zobza написал:
Не поможет, прототип - это готовый шаблон.
Не до конца сформулирована задача. Если чертеж на деталь оформлен в одном файле с многотельной 3D моделью это что? Чертеж? Деталь? Или Сборка?
Лучше опиши какую задачу решаешь.[/QUOTE]
Можно ли по созданному документу определить 3D модель это или чертеж?
В зависимости от этого признака меняется набор команд плагина[/QUOTE]
Это не или, это 2 разные задачи.
И пример Vite это наглядно показывает.
Может тебе нужно в зависимости от контекста работы кнопки менять? Что хоть плагин делает? Для чего он?[/QUOTE]
Немного не понял про то, что это две разные задачи...
Приведу пример - в API Solidworks есть такое свойство у документа - DocumentType, по которому я могу чётко определить с чем я работаю - деталью, сборкой или чертежом.
Судя по всему, в TFlex так просто тип документа не получить, потому что сама объектная модель сильно отличается.
Определить тип документа
 
[QUOTE]zobza написал:
Не поможет, прототип - это готовый шаблон.
Не до конца сформулирована задача. Если чертеж на деталь оформлен в одном файле с многотельной 3D моделью это что? Чертеж? Деталь? Или Сборка?
Лучше опиши какую задачу решаешь.[/QUOTE]
Можно ли по созданному документу определить 3D модель это или чертеж?
В зависимости от этого признака меняется набор команд плагина
Изменено: SwnSerg - 12.02.2017 13:24:52
Определить тип документа
 
[QUOTE]Vite написал:
[QUOTE] SwnSerg написал:
какими образом у документа узнать шаблон/прототип, по которому он был создан?
[/QUOTE]
я думаю все имеющиеся прототипы были созданы в рамках единой объектной модели документа. отличие возможно в конфигурации прототипа, да и сам прототип это тот же документ. фактически, система создает копию из прототипа как новый документ.
[QUOTE] SwnSerg написал:
Может ли пользователь создавать свои шаблоны?[/QUOTE]
может
[QUOTE] SwnSerg написал:
Путь к этим шаблонам всегда схож?
[/QUOTE]
по-умолчанию корневая директория прототипов:[CODE] C:\Program Files\T-FLEX CAD 15 x64\Program\Прототипы [/CODE]
пути для команд создания документа из прототипа определены в настройках приложения (см. вложение)[/QUOTE]
Ага, спасибо!
А можно ли у класса Document каким-либо образом узнать по какому прототипу он был создан?
Определить тип документа
 
[QUOTE]Vite написал:
[QUOTE] tucha.te написал:
Можно ли каким-нибудь образом получить тип используемого документа?
[/QUOTE]
возможно вы имели ввиду определить прототип документа (шаблон), из которого создается новый документ. Нужно смотреть различие в прототипах.[/QUOTE]
Думаю, что это то, что мне и нужно! Не могли бы Вы, пожалуйста, подсказать, какими образом у документа узнать шаблон/прототип, по которому он был создан?

Может ли пользователь создавать свои шаблоны? Путь к этим шаблонам всегда схож?

Что-то в API не удалось найти...
Изменено: SwnSerg - 11.02.2017 02:02:35
Определить тип документа
 
Доброго дня!

Можно ли каким-нибудь образом получить тип используемого документа?
Под типом понимается - чертеж, деталь, сборка.
Судя по API, объектной модели документа и однотипному расширению файлов документов (.grb) создаётся ощущение, что это совсем не просто сделать...
Или, возможно, это закрытое свойство/метод документа (может его реально через рефлекшн получить?)

Заметил вот такое:
[LIST]
[*]когда создаёшь новую деталь, открывается вкладка "3D модель",
[*]когда создаешь чертеж/спецификацию/2D деталь/3D деталь. открывается вкладка "Чертеж",
[*]когда создаешь сборку, открывается вкладка "Сборка".
[/LIST]Вероятно, "под капотом" всё же TFlex знает, что за тип документа выбран?
Или по нажатию определенной команды (например "Создать->Деталь") активируется определенная вкладка ленты?

Заранее, спасибо!
Изменено: SwnSerg - 10.02.2017 18:39:50
Страницы: 1