Ведомость материалов через переменные для компонентов и свойства для тел: Python

Автор Вират Лакх, 27.07.19, 10:54:39

« предыдущая - следующая »

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

Вират Лакх

Приветствую, коллеги.
Изучаю спрос на программу для формирования ведомости материалов и покупных изделий. Типа за вознаграждение :shu:

Краткий обзор форума выдает пару-тройку наиболее подходящих тем для данной программы:
https://forum.ascon.ru/index.php/topic,22393.0.html
https://forum.ascon.ru/index.php/topic,18446.0.html
https://forum.ascon.ru/index.php/topic,4287.0.html

На сегодняшний день программа выглядит следующим образом (см. вложение).
В центре скриншота мы видим маленькое окошко программы с кнопками, у которых названия - это вид проката. Под этими кнопками еще пара кнопок: удаление своих переменных из компонента (детали) и запуск сбора информации - непосредственно ведомости материалов. Далее расположена галочка, которая включает чтение материалов-заменителей у объекта (тех свойств, которые можно задать из библиотеки дополнительных свойств \sys\properties.lpt). Питон с компасом работает медленно, поэтому, если нет заменителей, то лучше эту галочку не включать. И строка (строки) вывода сообщений.

Программа работает только в 3D.
Кнопки видов проката создают в документе-детали m3d переменные, необходимые для расчета массы заготовки и просто для получения размеров заготовки для отчета. Для локальных деталей и просто для удобства, чтобы не открывать-закрывать компонент, создать переменные в детальке можно и в режиме редактирования на месте.
Первая переменная называется Tz. У нее в комментарии указано, чем является деталь. Отсюда по соответствующей формуле будет расчет массы.
Переменные к коде программы при необходимости можно легко назвать по-другому.
В остальные создаваемые переменные пользователь задает размеры заготовки. На скриншоте мы видим пример для конуса. Это отдельное достижение программы - расчет размеров и площади заготовки для конуса. В зависимости от конфигурации конуса, пользователь может задать его через размеры (внутренний малый диаметр, толщина листа, длина или высота конуса, угол раскрытия) или просто через измеренную площадь кнопкой Листовой 2.
Кнопки видов проката друг друга "понимают", т. е. при повторном создании в документе переменных другого вида проката значения у одинаковых переменных стираться не будут. Например, решил пользователь сделать деталь не из круга, а из трубы. Он, естественно, меняет свойство Материал и нажимает кнопку Труба. Значения переменных диаметра и длины останутся ранее заданные, и добавится переменная толщины.

Кроме компонентов, программа читает тела сборок. С телами работаем через свойства. Эти же кнопки в сборке создают тот же набор свойств, только вместо Tz будет "Вид проката". Свойства создаются для документа-сборки, а задаются для каждого тела, в т.ч. есть возможность задать для нескольких тел скопом. Свойство "Вид проката" позволяет выбрать только из списка. Остальные имеют тип строки, чтобы можно было вставлять ссылки. Удалять созданные программой свойства можно пока только вручную через Управление свойствами. У новых свойств установлен комментарий "ВМ".
Программа распознает тела библиотеки трубопроводов, т.е. считывает длину, диаметр и толщину стенки труб и считает массу заготовок. Особенно это полезно для случая построения труб без тонкой стенки, когда масса тела не равна массе трубы.
Программа распознает простые тела библиотеки металлоконструкций (сортовой прокат), у которых можно рассчитать площадь сечения и массу заготовки: листы и полосы, круглые трубы, круги, квадраты и кривые асконовские шестигранники. Т.е. самостоятельно определяет вид проката (если он не задан в том новом свойстве), без него масса заготовки не считается.
Для фасонного проката и прямоугольных труб есть возможность, нажав на кнопку Фасонный, создать и потом задать свойства Вид проката и Сечение, об которые программа подсчитает массу, используя свойство Длина профиля.

Результатом чтения текущей сборки на всю глубину являются два файла типа csv, которые открываются экселем или другой программой электронных таблиц: ВМ - ведомость материалов суммарная и ВМД - ведомость материалов детальная. Детальный отчет создается для обзора и контроля. Сразу после открытия рекомендуется выделить всё и вызвать команду автоподбора ширины колонок.
В обоих файлах сначала идут материалы, затем прочие и стандартные изделия, у которых также считывается обозначение, например, на случай изготовления их самостоятельно на предприятии.
Исключенные из расчета и компоновочная геометрия игнорируются.
Чтобы не загромождать таблицы, материалы-заменители указываются в виде сносок через звездочку. В суммарной ведомости материал имеющий и не имеющий заменитель не складывается в одну строку.
В детальной ведомости указывается количество вхождений детали в конкретную сборку с указанием наименования этой сборки в колонке "Сборка". Если эта же деталь находится в другой подсборке, то она пропишется отдельной строкой с указанием наименования сборки-родителя. Затем всё суммируется в ВМ-отчете.
Есть колонка "Тип", которая сообщает, что это за деталь - тело или компонент.
Есть колонка "Ист." (Источник), которая предупреждает пользователя о том, что: а) у компонента материал, плотность для расчета массы и сама масса не синхронизированы с источником; б) у тела, наоборот, синхронизировано с родительской сборкой.
С конусом есть исключение. Его длина/высота из Lz переходит в колонку Hz, а длину Lz занимает длина развертки конуса.
У конуса изначально нет высоты Hz, так так обечайка длиной Lz может быть цилиндрической или конической.
В суммарном отчете единицы измерения преобразуются из мм в метры.
В коде программы есть константы kl, ks = 1.0, 1.0 # Коэффициенты запаса по длине и площади соответственно.
Считается, что они более-менее постоянные для предприятия, поэтому не вынесены на окно программы.
В детальном отчете размеры и массы стоят без умножения на данные коэффициенты, чтобы не путать пользователя, а в ВМ-файле суммы умножаются на свои коэффициенты.
В суммарной ведомости масса указывается/складывается заготовки в том случае, если она была подсчитана в ВМД-файле. Если ячейка Mz пустая, то берется масса детали M. Это сделано для того, чтобы была возможность не тратить время на задание переменных или свойств для деталей, которые имеют массу заготовки, равную конечной массе (гнутая труба или кусок швеллера без отверстий и прочих вырезов).
У покупных изделий указано количество, масса единицы и масса всех штук. Суммарная масса полезна, например, для закупа крепежа в кг.
При всех заданных Mz можно прикинуть коэффициент использования материала и массу отходов.

При необходимости есть возможность легко скопировать данные из excel в компас по методике Sprinter500:
https://forum.ascon.ru/index.php/topic,30590.msg241222.html#msg241222 или
https://forum.ascon.ru/index.php/topic,15079.msg99224.html#msg99224

Теперь навскидку о преимуществах и недостатках, или почему не штатный отчет компаса.
+ не нужно настраивать всякие стили отчетов, колонки и свойства, файлы библиотек дополнительных свойств;
+ легко добавлять дополнительные переменные или свойства в документы-модели, в одно нажатие;
+ удобное расположение материалов-заменителей, читаются все 10 заменителей;
+ старые компасы не отображают многострочные наименования в таблице отчета, а у данной программы с этим все нормально;
+ работать с переменными проще, чем со свойствами, особенно у локальных деталей;
+ применение ссылок на переменные в свойствах для тел и использование самих переменных для компонентов дает автоматическое изменение параметров заготовки, если не разрушать или не удалять ссылки/переменные (удобно при создании нового изделия на базе старого);
* Разработчик в отчете не сделал так, чтобы ссылки, которые в свойствах, суммировались как числа. Хотя это довольно просто.
- отсутствие гибкости программы, только через изменение кода;
- если среди переменных есть внешняя, то новые переменные от данной программы могут не прочитаться из-за ошибки компаса или API, должно решаться сначала созданием переменных для заготовки, а потом уже созданием внешних переменных;
- на данном этапе развития программы оформление компасной таблицы осуществляется ручным копированием через буфер обмена;
- отсутствие ассоциативности отчета со сборкой;
- медлительность чтения сборки питоном.

Toptotal

А я бесплатно могу дать инструмент. Только сами настраивайте шаблон ведомости.
Данные из файлов хватаются из самих файлов и перебрасываются в EXEl.
Данные берутся с помощью Kompas.wdx плагина для Totalcommander . Сортировка и показ столбцов формирует пользователь как ему нужно и
там есть и количество, масса и материал. Расчет в основном на массу и количество.Кто то напишет плагин что выводить будет больше значений. Если кто напишет программу чтоб вписывала значения габаритные в фаил Компаса, то будет более мощный инструмент. Расчет габаритов детали, площадь внешняя для окраски и тд.