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


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Макрос для заполнения таблиц(ы), Есть надобность автоматизировать процесс заполнения таблиц выходными данными
 
Добрый день, коллеги!
Столкнулся с заполнением таблиц выходных значений. Руками. Пичаль-тоска(

Смысл такой:
У меня в изделие - Зонт для дымохода.
Определяющих параметров не много - диаметр дымохода (D), толщина стали (t), вид грибка зонта и вариант исполнения зонт/искрогаситель.

Интересует макрос, который бы перебирая диаметры от минимального (D=80 mm) до максимального (D=450mm) и толщины стали ( от t=0.5 до t=1mm ) - формировал бы таблицу значений, вида:

диаметр дымохода (D) диаметр грибка (De) толщина стали (t) масса грибка.
Хоть на лист Т-Флекса, хоть в таблицу экселя.

Во вложении рабочая модель.
Практика - критерий истины (с)
Страницы: Пред. 1 2 3 4 След.
Ответы
 
Цитата
Андрей Мальчук написал:
Как будет время - напишите комментарии, буду детальнее разбираться.
Для расширения возможностей макроса надо начинать работу по описанию параметров генерируемой таблицы.

Для этого надо, во-первых, согласовать список этих параметров, во-вторых, договориться о способе задания их значений.

Первый параметр, с которым уже мы сталкиваемся – это количество строк в таблице, после достижения которого происходит переход на таблицу продолжение. Задавать его значение можно двумя способами (сейчас это просто константа в макросе)
- сформировать окно диалога, в котором запрашивать ввод значения;
- в редакторе переменных создать переменную, с заранее оговоренным именем, значение которой в момент запуска плагина и будет определять это значение. (Возможен вариант, когда это значение хранится во внешнем файле, лежащем рядом с макросом или плагином)

Какой вариант вы видите более предпочтительным?
 
Цитата
Андрей Мальчук написал:
Есть еще просьба: макрос генерации таблицы с массами.
 
Osiris2000, спасибо!!!
По поводу количества строк в таблице: наверное всё же переменные стоит брать из редактора переменных.
Тогда все переменные будут в одном месте.
Имеет смысл создать как минимум 3 переменные, задающие количество строк в таблице, ширину столбца и точность округления (если это возможно)
Как вариант, при отсутствии этих переменных в редакторе - может генерироваться диалог с запросом значений.

З.Ы. мне вполне достаточно того, что уже есть)
Это экономит мне пол рабочего дня - что уже является достижением
Практика - критерий истины (с)
 
Экономия времени же начнется когда фрагменты будут готовы, сейчас несколько сложная часть - реализация мини-сапр. :)
 
SaprOnOff86, сформировать руками таблицы межосевых расстояний и масс занимает реально почти полдня работы.
А у меня у каждого элемента есть такие таблицы.
После эти таблицы перекочуют в печатный и электронный каталог продукции, в Доксы, да и еще много куда)) Производство знаете ли)
Ответы на самые сложные вопросы у меня уже есть) Будем делать)
Изменено: Андрей Мальчук - 05.04.2016 16:18:24
Практика - критерий истины (с)
 
Добрый день!
Такой вопрос: в коленях у меня переменные H и Е ( отвечающие за межосевые расстояния по осям Х и Y) получались измерением расстояний на 2Д построениях.
В тройнике у меня габарит Н - это переменная Hтела.
Она получается расчётным методом. Еще в тройнике появляется переменная Yh - определяющая высоту точки пересечения осей по оси Y.
Как мне добавить значения этих переменных в формируемую таблицу?
У стандартного (табличного) тройника Dотвода=Dтела
Еще вопрос: макрос который таблицу масс формирует нужно вставлять на новый модуль в файле?

Заранее извиняюсь за ламерские вопросы. Всё же я инженер, а не программист (
Изменено: Андрей Мальчук - 07.04.2016 11:53:26
Практика - критерий истины (с)
 
Цитата
Osiris2000 написал:
Цитата
Андрей Мальчук написал:
Есть еще просьба: макрос генерации таблицы с массами.
а этот макрос не генерирует таблицу масс)
слева - та таблица, что сформировал макрос. Справа - таблица, которую я делал руками.
2 пикча - таблица масс (сделанная вручную), зависимость массы от диаметра и углов, при толщине стали 0,5 мм AISI 304.

т.е. что я у вас просил:
1 макрос, который бы формировал таблицу значений межосевых размеров, в зависимости от диаметра и улов;
1 макрос, который бы формировал таблицу масс, в зависимости от диаметра и углов, при толщине стали 0,5 мм AISI 304.
Изменено: Андрей Мальчук - 07.04.2016 11:50:57 (Пояснения и добавка файла)
Практика - критерий истины (с)
 
Цитата
Андрей Мальчук написал:
а этот макрос не генерирует таблицу масс)
слева - та таблица, что сформировал макрос. Справа - таблица, которую я делал руками.
2 пикча - таблица масс (сделанная вручную), зависимость массы от диаметра и углов, при толщине стали 0,5 мм AISI 304.

т.е. что я у вас просил:
1 макрос, который бы формировал таблицу значений межосевых размеров, в зависимости от диаметра и улов;
1 макрос, который бы формировал таблицу масс, в зависимости от диаметра и углов, при толщине стали 0,5 мм AISI 304.

Вот следующий вариант макроса.
Обращаю внимание на то, что лучше этот файл положить в папку Program\Macros. Тогда можно будет его просто заменять на новый после доработки. Мне кажется, что так будет проще, чем каждый раз редактировать макросы внутри вашей модели.

Далее несколько комментариев по поводу нового макроса.

Состоит из двух частей:
- Создание управляющих параметров
- Генерация таблицы
(Следующим действием добавим еще один пункт в этот же макрос – генерация таблицы масс)

В первой части создается набор переменных для управления работой макроса.
Расположены в группе "Параметры для генерации таблицы"
Назначение должно быть понятно из комментариев

После этого можно запускать генерацию таблицы
Важно правильно задать ссылку:
C:\Program Files (x86)\Microsoft Office\Office15\DCF\Microsoft.Office.Interop.Excel
Чтобы работал экспорт в таблицу Excel
 
Osiris2000, плохо что редактор макросов не понимает ссылки на COM объекты...
T-FLEX CAD 17.0.21.0
 
Цитата
Vite написал:
плохо что редактор макросов не понимает ссылки на COM объекты...
Поясните, пожалуйста, зачем вам нужны COM объекты ))
 
Цитата
Osiris2000 написал:
Поясните, пожалуйста, зачем вам нужны COM объекты ))

а вы и так используете объекты COM ссылаясь на сборку, которая зарегистрирована в системе. Просто в редакторе макро-команд не определяются ссылки на объекты COM, как это реализовано в IDE.
T-FLEX CAD 17.0.21.0
 
Макрос я скопировал в папку назначения.
Ссылку поправил, с учётом того, что у меня 16 офис)
Проект скомпилировал, запустил...
Появилось окно с предложением задать отладочный метод и пр.

Я дико извиняюсь) А что дальше делать?
Практика - критерий истины (с)
 
Выкладываю тут рабочий макрос, который по входным данным, задаваемым пользователем, - формирует сводную таблицу значений.
У меня есть список стандартных диаметров, углов наклона оси.
Макрос в цикле текущего значения диаметра проходит все углы, полностью пересчитывает модель, и формирует таблицу значений.
Поддерживается экспорт в Эксель.
Автор макроса - Андрей Ефремов.

Макрос положить в c:\Program Files\T-FLEX CAD 14 x64\Program\Macros\ ( или по пути, куда у вас установлен флекс)
Важно правильно задать ссылку:
C:\Program Files (x86)\Microsoft Office\Office15\DCF\Microsoft.Office.Interop.Excel - это путь к 2013 офису, в х86 варианте.
В х64 варианте - вариант пути указан на картинке.
Чтобы работал экспорт в таблицу Excel

далее, макрос нужно скомпилировать:


Состоит из двух частей:
- Создание управляющих параметров
- Генерация таблицы



Запуск генерации таблицы - создаст таблицу исполнений, где для каждого диаметра и всех доступных углов наклона оси будет создана таблица габаритных размеров.


Запуск генерации таблицы масс - создаст таблицу масс ( в моём случаи - заготовок) для каждого диаметра и угла наклона оси.


Возможно кому-то будет полезно посмотреть, как и что сделано и что-то переделать под себя.
Но главное не это: если генерация таблиц исполнения нужна (для создания КД, каталогов) - то есть возможность создания полноценного плагина для флекса, который по любым входным данным пользователя будет создавать любые таблицы вариантов исполнения и т.п.
Вопрос в том, нужно ли это кому нибудь, кроме меня.
Если интерес и надобность есть - то работы над плагином будут вестись, если это никому не нужно, кроме меня - то макрос останется макросом.
От нас всех зависит, будет ли флекс обрастать полезным и востребованным функционалом.
Изменено: Андрей Мальчук - 20.06.2016 19:03:11
Практика - критерий истины (с)
 
Лучше бы был макрос создания исполнений по бд, а там уже и таблицу исполнений можно сделать, где массы будут к примеру)
Толком не остыл...
 
Просмотрел данную тему и пришёл к выводу, что напрашивается достаточно интересная функциональность. Попытался подвести обобщающий итог, плюс добавил свои мысли.

1. Конечно хотелось бы иметь такую функциональность в штатных средствах T-FLEX CAD или хотя бы в виде плагина.
2. Несколько расширенный список возможностей:
- генерация таблиц по заданному набору переменных и экспорт в эксел
- генерация исполнений по БД или по заданному набору переменных (по определённому правилу)
- пересчёт геометрии 2D/3D и экспорт её в файлы на выбор пользователя. Для каждого исполнения свой файл. Желательно что б имя файла отражало те значения переменных для которых он сгенерирован.
- Что ещё?

P.S. любые мысли и предложения по этой теме приветствуются.
 
Цитата
DenStudy написал:
1. Конечно хотелось бы иметь такую функциональность в штатных средствах T-FLEX CAD или хотя бы в виде плагина.
главное, чтобы за это отдельно денег не просили)
Забавно другое: всего 3м участникам форума эта тема оказалась интересной)
прям как в анекдоте: "никому и ни@#$ - пишеться слитно или раздельно?))))"
Изменено: Андрей Мальчук - 28.07.2016 08:53:37
Практика - критерий истины (с)
 
Ну почему же только трем? Просто не все вступают в переписку. Тема интересная и нужная. Сам подобные макросы пишу время от времени. По поводу плагина по исполнениям с использованием внутренней БД и автоматическим формированием конфигураций, думаю совместными усилиями он появится в недалеком будущем :), о чем дам знать.
Изменено: Сергей Максимов - 07.07.2017 16:01:57
 
Давно не заходил в это ветку)

вот последний вариант макроса, генерирующего таблицы выходных данных. В моём случае: таблицы габаритных размеров и масс заготовок/изделий
стоит сделать немного пояснений:
для генерации таблиц в экселе потребуется Microsoft.Office.Interop.Excel.dll. Эта библиотека входит в состав 2013-2016 офиса. Для более ранних офисов ее придётся скачать с сайта мелкомягких. Тут гугл в помощь)


основные настройки макрос создаёт в редакторе переменных

тут всё просто и по русски)

а вот тут уже нет:
Макрос перебирает значение цикла в цикле, делая каждый раз полный пересчёт модели

Вот эти куски кода отвечают за входные и выходные данные:

public static void Генерация_таблицы()
{
Document doc = TFlex.Application.ActiveDocument;
if (doc == null)
return;

varData [] varIN = new varData[2]; //- входные данные. 2 - количество переменных
varIN[0] = new varData("D","D"); //- это входная переменная, отвечающая за диаметр ( в моём случае - от 80 до 1200 мм) . Формат - список.
varIN[1] = new varData("b", "b="); //- это входная переменная, отвечающая за угол наклона оси. Формат - список.

varData[] varOUT = new varData[2]; // - выходные данные, 2 - количество переменных
varOUT[0] = new varData("H", "H, мм"); // - это переменная с данными расчёта высоты колена
varOUT[1] = new varData("E", "E, мм"); // - это переменная с данными расчёта ширины колена

CreateTable_1(doc, "Габариты", varIN, varOUT); // "Габариты" - это название страницы, на которой будет генерироваться таблица

return;
}

public static void Генерация_таблицы_Масс()
{
Document doc = TFlex.Application.ActiveDocument;
if (doc == null)
return;

varData [] varIN = new varData[2]; // входные данные. 2 - количество переменных
varIN[0] = new varData("D","D"); //- это входная переменная, отвечающая за диаметр ( в моём случае - от 80 до 1200 мм) . Формат - список.
varIN[1] = new varData("b", "b="); // - это входная переменная, отвечающая за угол наклона оси. Формат - список.

varData[] varOUT = new varData[2]; // - выходные данные, 2 - количество переменных
varOUT[0] = new varData("МассаЗаготовки", "Заготовка, кг");
varOUT[1] = new varData("МассаДетали", "Деталь, кг");
//varOUT[1] = new varData("МассаБШГ", "Крепёж, кг");
// varOUT[2] = new varData("Масса", "Масса, кг");

CreateTable_1(doc, "Массы", varIN, varOUT); // "Массы" - это название страницы, на которой будет генерироваться таблица



заменив входные переменные на свои - вы можете получить таблицы значений. Может кому пригодиться)
Изменено: Андрей Мальчук - 10.07.2017 19:01:53
Практика - критерий истины (с)
 
Сергей Максимов, Вы обратили внимание, что ответили на мое сообщение годичной давности?) Тема интересная и нужная, но все шифруются)
Первое правило Общества Макроколдунов - никому не говорить об обществе макроколдунов)
Изменено: Андрей Мальчук - 10.07.2017 19:11:41
Практика - критерий истины (с)
 
Впечатляет Андрей! Область конечно узкая. Делал нечто подобное, но проще в разы для элементов вентиляции проектируемого судна: стаканы переборочные, подвески для горячих трубопроводов. Эксель не использовал, все делал на внутренней БД. Коллега пользуется, вроде как доволен. До этого групповые чертежи он делал в голом автокаде :). Напрашивается, конечно плагин - не хватает графического интерфейса. Но пока круг пользователей ограничен, может и не стоит заморачиваться. Хороший плагин писать несколько месяцев.
Страницы: Пред. 1 2 3 4 След.