Генератор перечней элементов по ГОСТ из отчетов BOM Altium Designer

Добрый вечер!
Некоторое время назад имел удовольствие заниматься разработкой документации на печатную плату по ГОСТ. В процессе у меня возникла мысль, что неплохо бы было автоматизировать генерацию перечней, а не перелопачивать при любом изменении существенную часть документа.
Так как в большинстве случаев работа (в моей конторе) сейчас идет с применением Altium Designer, то необходимо лишь было сделать конвертер BOM Альтиума в ГОСТовский перечень.

Так, потихоньку, зимними вечерами ковырял свою программу. В итоге получилось нечто полумонструозное с точки зрения красоты кода, но, по крайней мере, рабочее.
Для получения перечня требуется выполнить ряд действий:
  1. В Альтиуме выбираем меню Reports->Bill of Materials. Всплывает окно следующего вида:
    Делаем сортировку по Description (в своих проектах я указываю название и тип элемента в данном поле, хотя, может, это не совсем верно), отображение Designator и Description. Остальные поля можно добавлять по желанию — подсчет компонентов и вывод их ведется по этим двум полям. Вывод в формате XML.
  2. Запускаем программу GostBomCreator.exe:

    Жмем «Открыть файл Altium», выбираем нужный, жмем открыть.
  3. Получаем в результате такой вот перечень:

    Смотрим, что все устраивает, жмем «Сохранить результат в Excel».
  4. Ждем… (Приложение однопоточное, пока создается файл, в строке состояния будет написано «Выполняю»).
    Создание файла идет через библиотеку Office Excel, то есть, фактически, запускается приложение, создает книгу, создает страницы, рисует таблицы, заполняет. А потом спрашивает, можно ли перезаписать файл, если таковой имеется, повторно (основное сборище магических чисел как раз здесь, кстати).
  5. Дождались, в новом файле формата Excel 1997-2003 видим сформированные листы (первый, последующие), с нумерацией, разметкой и т.п.

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

Можно вводить соответствия вручную, можно загрузить из файла (так же через .xml). Естественно, можно сохранить соответствия. Да, в первой закладке есть кнопка «обновить», выполняет перераспределение строк с учетом новых соответствий. Есть возможность группировки различных элементов под одним общим заголовком (DD и DA как микросхемы, например).

Писал программу на C#, для работы требуется .NET 4.0.
Да, еще нужен шрифт «GOST type B», они используется при заполнении полей.

Выкладываю скомпилированный исполняемый файл.
Так же ссылка на гитхаб. Желающие могут посодействовать в допиливании программы до более удобоваримого состояния)
  • +2
  • 04 января 2013, 21:06
  • Egoist

Комментарии (15)

RSS свернуть / развернуть
По Вашему выходит, что надо создавать отдельный элемент под каждый номинал (резистор например). Мне кажется это не совсем удобно, есть же поле Value, которое для этого предназначено. Ну и что то мне подсказывает, что можно создать форму в экселе и альтиум будет экспортировать отчет по этому шаблону (правда самому в этом было разбираться лень).
+1
Поле то есть такое. Но на производстве каждый номинал будет числиться отдельной позицией на складе, и поэтому в проект стоит пихать отдельный элемент. Так проще считать будет, особенно девочкам в логистике\бухгалтерии.
0
В поле Description каждого элемента просто указывать =Value для резисторов, конденсаторов и =Model для микросхем.
Форму в экселе сколько не пытался, ничего хорошего не вышло.
0
Ах, проверил, к сожалению, не работает с полем Description, но работает с полем Comment. Может переделать генератор именно под это поле?
0
Да, вполне возможно. Можно сделать выбор поля, из которого берутся данные. Займусь на неделе.
0
я делаю так:

компонент один, разные номиналы в разных строчках.
0
Это реклама .NET4
-2
Скорее реклама моих кривых рук и лени) Можно и до более ранней версии при желании доработать.
0
Ни в коем случае не хочу обидеть автора, но на electronix.ru кажется уже давно публиковался инструмент подобного назначения. Я не пользуюсь, так как нет пока надобности, поэтому не буду даже пытаться сравнивать.
0
  • avatar
  • DVF
  • 05 января 2013, 13:50
Да, видел, что есть, года 2009.
0
Автору спасибо! Давно искал что-то подобное, а самому писать лень. Поковыряю исходники на досуге. Не против, если я портирую на WPF?
0
Делайте что угодно)
0
Хм… А я сделал скрипт на VBA в шаблоне экселевском для BOM (шаблон в котором можно прописать какие позиции в какой столбец пихать). Не для ГОСТ, а для формата PSELECTRO (заказываем у них автоматический монтаж иногда).
Работает вполне, то есть альтиум шаблон дополняет в итоге, и не калечит скрипты прикрепленные.
0
в 15-й версии появилась своя спецификация, правда головоломка еще та… Не могу никак разобраться что к чему в ней
wiki.altium.com/pages/viewpage.action?pageId=52864505
0
Помогите пожалуйста. Что-то не могу скачать программу. И ссылка на гитхабе не рабочая.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.