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


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
Восстановление из STEP (*.stp) в TFLEX DOC 2012, Восстановление из STEP (*.stp) в TFLEX DOC 2012
 
Всем хорошего дня!
Вопрос в следующем,
Стоит задача из файла STEP (*.stp), который был генерированный ЭСИ из объекта номенклатуры в TFLEX DOC 2012, восстановить дерево со всеми свойствами.
Принцип, как вернуть назад, примерно ясен, но вопрос в том, чтобы не городить велосипед (пока я вижу только такой вариант). Может есть какие либо уже наработки или скрипты

Спасибо!
 
Я не знаю как, но мне интересно и хочу заполнить пробел в знаниях:
1. STEP - это про 3Д геометрию
2. DOCs - это про дерево изделия и структуру

Как вы получили из DOCs STEP и что в этом файле?
Изменено: zobza - 14.09.2021 16:58:51
 
zobza,
Рекурсивно грузил все объекты и записывал в файл
А теперь задача, обратного хода :)

Файл stp по выводу из себя представляет:

ISO-10303-21;
HEADER;
/* Exchange file generated using APL SDAI v0.1 */
FILE_DESCRIPTION(
/* description */ ('This is an APL SDAI to STEP file in Part 21 Format'),
/* implementation_level */ '1');
FILE_NAME(
/* name */ 'Портфель_Тест ',
/* time_stamp */ '2021-09-14T14:30:09',
/* author */ ('АВтор'),
/* organization */ ('Company'),
/* preprocessor_version */ '',
/* originating_system */ 'SYSTEM',
/* authorisation */ '');
FILE_SCHEMA (('CONFIG_CONTROL_DESIGN'));
ENDSEC;
DATA;
#0=PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS( $, $, #1, $, ());
#1=PRODUCT_DEFINITION_FORMATION( '', '', #2);
#2=PRODUCT( '', 'Портфель_Тест ', '', $);
#3=NEXT_ASSEMBLY_USAGE_OCCURRENCE( '1', '', '', #0, #4, $);
#4=PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS( $, $, #5, $, ());
#5=PRODUCT_DEFINITION_FORMATION( '', '', #6);
#6=PRODUCT( '', 'ИЗО_1', '', $);
ENDSEC;
END-ISO-10303-21;
 
Маленько разобрался касаемо одной карточки, но не достаточно.
Требуется больше информации по объектам, где какое свойство описывается и что за пустые параметры, но тут что-то...
ГОСТ тоже не особо в помощь
Ищу дальше

NEXT_ASSEMBLY_USAGE_OCCURRENCE( 'Кол-во вхождений', '', '', #Родитель, #Ссылка на PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS , $);
PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS( $, $, #Ссылка на PRODUCT_DEFINITION_FORMATION, $, ());
PRODUCT_DEFINITION_FORMATION( '', '', #Ссылка на PRODUCT );
PRODUCT( 'Обозначение', 'Наименование ', '', $);
Изменено: student92 student92 - 15.09.2021 16:39:49
 
Цитата
zobza написал:
STEP - это про 3Д геометрию
Не совсем так. STEP может содержать и структуру изделия. Просто эти возможности мало кем используются.

student92 student92, а как Вы генерировали STEP в DOCs 2012? Предполагаю, что это какой-то самописный макрос. Т.е. код-то есть, значит можно и обратное преобразование сделать.
Главное - спокойствие!
 
Не уверен что любая CAD система при экспорте в STEP пишет атрибуты (наименование\обозначение), имя файла - да, и если в имени файла содержится Наименование^Обозначение, то можно что-то распарсить для ЭСИ DOCs.
 
Ещё раз, ребята... STEP - это не только в конструкторских САПР и не только геометрия.
Главное - спокойствие!
 
Валерий Степаненко, с этим никто не спорит, а дальше начинаются технические подробности и нюансы:)
попробуй из любой КАД выгрузить сборку в СТЕП и открыть блокнотом - будет там информация о сборке\ЭСИ\атрибутах\переменных? о вхождениях - да, о имени файла - да.. даже заголовок будет, из какой КАД, когда и кем этот файл был получен:

Код
/* File generated by T-FLEX CAD Version 17.0.50.0 */

FILE_DESCRIPTION(('TFLEX Exchange Step'),'2;1');

FILE_NAME('X2\0410041104130414\X0\.1234.00 \X2\04210431043E0440043A0430\X0\.stp',                                  
'2021-09-16T11:46:08+03:00',
('Sapronov'),
('Unknown organisation'),
'TFLEX Exchange 2021.2',
'T-FLEX CAD',


Но для ДОКс, как для PDM нужна атрибутика - наименование\обозначение\масса\и т.п. Если задача построить в ЭСИ дерево из "лясек-мосясек" - то задача не очень сложная, парсить сейчас многие умеют:)
Изменено: SaprOnOff - 16.09.2021 14:10:35
 
Смотрим суть исходного вопроса:
Есть STEP файл, сгенерированный в T-FLEX DOCs 2012 !!! Причём здесь CAD???

Судя по всему, student92 student92, уже ещё больше разобрался, если не спрашивает ничего...
Главное - спокойствие!
 
Цитата
Валерий Степаненко написал:
Причём здесь CAD???
наверное при том, что я до сих пор не могу смирится, что STEP-файлы генерят или КАД, или отдельные конверторы. :oops:

Цитата
Валерий Степаненко написал:
Есть STEP файл, сгенерированный в T-FLEX DOCs 2012 !
Валерий Степаненко, как ты думаешь - как DOCs 2012 получил STEP? из которого ещё надо "восстановить дерево со всеми свойствами". Я вот только не очень понял ТС ("Рекурсивно грузил все объекты и записывал в файл"), получается он сам "обогатил" атрибутами из ЭСИ ДОКс файл STEPа не нарушая синтаксиса?
 
SaprOnOff, Валерий Степаненко, спасибо за активность! Видать есть ещё живые)
Задача изменилась и данный подход более не актуален. Разбираться дальше не требовалось

Кому интересно ниже привожу код, которым генерился *.step. Да по сути его элементарно парсить и восстановить структуру, но атрибуты/свойства/связи теряются
Код
 private string STEPText;

        public override void Run()
        {
            STEPText=String.Empty;
            var progrDialog = new ProgressDialog(bwRun);
            progrDialog.ShowDialog();

            var saveFileDialog = new SaveFileDialog { Filter = "STEP Файл| *.stp|Все файлы|*.*" };

            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
                var file = new StreamWriter(saveFileDialog.FileName, false, Encoding.GetEncoding(1251));
                file.Write(STEPText);
                file.Close();
            }

        }

        private bool bwRun(BackgroundWorker bw)
        {

            var root = Context.ReferenceObject as NomenclatureObject;
            if (root == null) return false;

            var prod = new STEPLib.STEPFile(root.SystemFields.Id, root.Name, ClientView.Current.UserName, "Компания", "SYSTEM");
            prod.AddDoc(root.SystemFields.Id, root.Name, root.Denotation, 0, 0, 0, 1);
            var links = root.Children.RecursiveLoadHierarchy().Cast<NomenclatureHierarchyLink>();

            bw.ReportProgress(links.Count(),"set");
            int curent = 1;
            foreach (var link in links)
            {
               
                var childrenId = link.ChildObjectId;
                var name = link.ChildObject.Name;
                var denotation = ((NomenclatureObject)link.ChildObject).Denotation;
                var parentId = link.ParentObjectId;
                bw.ReportProgress(curent, string.Format("{0} [{1}]",name,denotation));
                if (!prod.ChToDup(childrenId)) prod.AddDoc(childrenId, name, denotation, parentId, -1, link.Amount.GetInt32());
                curent++;
            }

            STEPText = prod.GenStep();

            return true;
        }
 
Цитата
student92 student92 написал:
Задача изменилась и данный подход более не актуален. Разбираться дальше не требовалось
За пример спасибо, но всё же :)
Раз библиотека пишет в step то и читать может.
Судя по данным у вас есть параметры Наименования, Обозначения и Количества и связи: Родительская запись и Дочерняя.
Значит по обратной задаче нужно сначала провести поиск по справочнику, если есть - подключить объект к нему, если нет - создать и подключить.
Про код не спрашивайте :)
Изменено: zobza - 23.09.2021 17:14:45
 
zobza, Абсолютно верно)
Восстановить структуру не составляет труда. Но чтобы она была создана со всеми атрибутами и свойствами для объектов и файлов этого недостаточно и требуется допиливать,
А если задачи такой нет, то вполне достаточно такого формата
Страницы: 1