Альманах научных работ молодых ученых
XLVII научной и учебно-методической конференции Университета ИТМО. Том 1
114
В рамках работы была поставлена задача разработать программное обеспечение,
способное импортировать, визуализировать трехмерные модели различных форматов, а
также преобразовывать их в команды на языке G-code, для дальнейшего запуска программ на
разрабатываемом станке с числовым управлением.
В качестве импортируемых программой данных были выбраны следующие,
популярные в системах автоматизированного проектирования, форматы:
– STEP – формат данных, определенный международным стандартом ISO 10303, для
описания и обмена данными в САПР;
– IGES – формат векторной 2D/3D-графики, основанный на спецификации Initial Graphics
Exchange. Используется многими программами автоматизированного
проектирования в
качестве стандартного, основанного на тексте ASCII-формата, предназначенного для
хранения и экспорта векторных данных. Может хранить модели каркаса, поверхности
представляемых твердых объектов, диаграммы и другие объекты;
– IDF – содержит информацию о форме платы, положении и
размере отверстий с
металлизацией и отверстий без металлизации, а также о размещении и основной форме
компонентов;
– STL – формат 3D-графики, хранящий информацию об объекте как список треугольных
граней, которые описывают его поверхность, и их нормалей. STL-файл может быть
текстовым (ASCII) или двоичным.
Таким образом, первоочередной задачей являлось исследование методов импорта
данных форматов.
В качестве основы для реализации задач по импорту и визуализации 3D-объектов была
выбрана библиотека OpenCASCADE, являющаяся одной из
самых популярных библиотек
для реализации систем автоматизированного проектирования. Исходный код библиотеки
Open CASCADE доступен и распространяется бесплатно по лицензии Open CASCADE
Technology Public License [1], являющейся производной от GNU LGPl. Сторонние
разработчики могут использовать код Open CASCADE в своих продуктах (в том числе
коммерческих), однако обязаны, в соответствии с LGPL, отсылать любые изменения в
исходных текстах Open CASCADE ее оригинальному разработчику – Open CASCADE S.A.S
[2].
Реализация библиотеки Open CASCADE основана на
принципах объектно-
ориентированного программирования и уже содержит готовые реализации импорта и
обработки форматов STEP, IGES и STL. Для этого были использованы экземпляры
соответствующих классов: STEPControl_Reader, IGESControl_Reader и StlAPI_Reader.
Для импорта из формата STEP (IGES) во внутренний объект фигуры класса
TopoDS_Shape требуется реализовать следующий алгоритм:
1. иинициализировать экземпляр reader класса STEPControl_Reader для формата STEP (или
IGESControl_Reader для формата IGES);
2. вызвать метод ReadFile объекта reader с переданной в качестве аргумента строкой,
содержащей путь до открываемого файла соответствующего формата;
3. проверить – возвратил ли метод в предыдущем шаге значение IFSelect_RetDone; если
возвращено отличное значение, то
можно считать, что импорт завершился с ошибкой,
иначе следует переходить к следующему шагу;
4. вызвать метод TransferRoots у объекта reader для получения всех сущностей модели;
5. последним шагом является вызов метода OneShape, который должен возвратить
экземпляр объекта TopoDS_Shape, содержащий 3D-модель.
STL-формат можно импортировать следующим образом: объявить экземпляр reader
класса StlAPI_Reader и вызвать метод Read у объекта reader с аргументами экземпляра класса
TopoDS_Shape и строкой, содержащей адрес файла.
В результате изучения возможностей библиотеки Open CASCADE было обнаружено
отсутствие возможности импорта объекта в формате IDF. В
данном случае было принято
Альманах научных работ молодых ученых
XLVII научной и учебно-методической конференции Университета ИТМО. Том 1
115
решение о реализации собственного алгоритма импорта подложки модели печатной платы на
основе спецификации IDF версии 3.0. В результате анализа стандарта были выявлены
следующие особенности формата:
– формат разделен на несколько блоков информации;
– некоторые блоки информации не несут информации для решения поставленной задачи,
поэтому могут быть проигнорированы во время чтения файла;
– согласно спецификации формат описывается в виде последовательности символов ASCII.
Для импортирования подложки печатной платы были использованы следующие секции
данных:
– секция заголовка – HEADER, несущая в себе помимо метаинформации, важные данные о
единицах (миллиметры или мил – тысячные доли дюйма), измерениями в которых
описаны параметры модели;
– секция внешней границы – BOARD_OUTLINE, в первой строке которой указана толщина
подложки, а каждая последующая строка описывается согласно таблице.
– секция дриллирования – DRILLED_HOLES, описывающая диаметр отверстия и
координаты его расположения [3].
Таблица. Формат данных секции BOARD_OUTLINE
№
Описание
Тип
Значение
1
Метка цикла
Целый int
0 – означает
внешнюю границу
1 – означает вырез
n – означает дополнительный вырез
2
X координата
Дробный float
Любое значение
3
Y координата
Дробный float
Любое значение
4
Угол
Дробный float
0 – означает прямую линию между точками
≠ 0 – означает дугу между точками.
При положительном значении дуга против
часовой стрелки.
360 – означает окружность с центром в
предыдущей точке
Таким образом, был разработан на языке C++ класс CPIdf_Reader, осуществляющий
чтение файла, обработку вышеописанных секций и построение конечной трехмерной модели
подложки печатной платы на основе примитивов, предусмотренных библиотекой Open
CASCADE. Конечным результатом работы методов класса
является трехмерная модель
объекта в качестве экземпляра класса TopoDS_Shape.
Do'stlaringiz bilan baham: