Официальный форум российского программного комплекса 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
Конфигурации модели
 
Цитата
Vite написал:
Цитата
SwnSerg написал:
нужно ли после вызова данного метода вызывать document.Regenerate(options)? или LoadConfigurationVariables(confName) достаточно?
я пробовал применить метод LoadConfigurationSolids, но возникает исключение, типа:
Код
 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.
 

если макрос запустить без отладчика, приложение T-FLEX CAD завершается с ошибкой. что именно вызывает ошибку, мне непонятно. незнаю зачем вам понадобилось использовать конфигурации модели. на мой взгляд, проще и эффективнее загрузить параметры из базы данных.
я, возможно, сужу по другим CAD'ам (типа компаса или инвентора), но LoadConfigurationSolids мне показалось должен перезагрузить документ с тем набором компонентов (3D фрагментов), которые сохранены в конкретной конфигурации.
я к чему - в разных конфигурациях ведь может быть разный набор фрагментов - ну, например, в одной конфигурации используются болты одного типа, а в другой - другого.
возможно такое делается как-то по другому?
Изменено: SwnSerg - 05.03.2017 16:13:02
Конфигурации модели
 
Цитата
Vite написал:
Цитата
SwnSerg написал:
такое возможно реализовать?
Код
 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);
                }
            }
        }
    }
}
 
а вопрос такой тогда возникает:
если у меня в двух конфигурациях документа разный набор, например, 3D фрагментов. правильно ли я понимаю, что метод ModelConfigurations.LoadConfigurationSolids позволяет для конфигурации с определенным именем этот набор 3D фрагментов обновить?
нужно ли после вызова данного метода вызывать document.Regenerate(options)? или LoadConfigurationVariables(confName) достаточно?
Конфигурации модели
 
Цитата
zobza написал:
Цитата
SwnSerg написал:
Добрый день!
Подскажите, пожалуйста, каким образом можно узнать какая конфигурация модели является текущей (активной)?
О какой конфигурации речь?
речь идет о конфигурациях, которые можно посмотреть по команде "Конфигурации и исполнения".
хочется по очереди загружать переменные конфигурации через API, но в итоге вернуть документ в первоначальное состояние (т.е. к той конфигурации,которая была до перебора конфигураций в цикле активна).
такое возможно реализовать?
Конфигурации модели
 
Добрый день!

Подскажите, пожалуйста, каким образом можно узнать какая конфигурация модели является текущей (активной)?
[ Закрыто] Обновление всех открытых документов, Как сделать полный пересчёт всех открытых документов.
 
Цитата
Vite написал:
Цитата
SwnSerg написал:
Подскажите, пожалуйста, каким образом можно обновить все открытые документы в сессии T-Flex CAD?
макрос регенерации открытых документов:
Код
 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;
        }
    }
}
 
спасибо!
[ Закрыто] Обновление всех открытых документов, Как сделать полный пересчёт всех открытых документов.
 
Добрый день!
Подскажите, пожалуйста, каким образом можно обновить все открытые документы в сессии T-Flex CAD?
В API что-то не удалось найти...
[ Закрыто] Наименование и обозначение документа, Как получить значения наименования и обозначения документа через API?
 
Цитата
zobza написал:
Цитата
SwnSerg написал:
Цитата
Vite написал:
Цитата
SwnSerg написал:
Подскажите, пожалуйста, каким образом можно получить значения наименования и обозначения документа?
Код
   Document document = TFlex.Application.ActiveDocument;

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

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

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

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

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

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

пути для команд создания документа из прототипа определены в настройках приложения (см. вложение)
Ага, спасибо!
А можно ли у класса Document каким-либо образом узнать по какому прототипу он был создан?
Определить тип документа
 
Цитата
Vite написал:
Цитата
tucha.te написал:
Можно ли каким-нибудь образом получить тип используемого документа?
возможно вы имели ввиду определить прототип документа (шаблон), из которого создается новый документ. Нужно смотреть различие в прототипах.
Думаю, что это то, что мне и нужно! Не могли бы Вы, пожалуйста, подсказать, какими образом у документа узнать шаблон/прототип, по которому он был создан?

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

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

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

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

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