Вопрос 44: Алгоритм модификация областей штриховки чертежей, заданных описанием элементов контуров, при использовании сеточной параметрической модели
Успешное решение задачи модификации штриховки этого типа предполагает разработку алгоритмов нахождения точек пересечения для всех возможных вариантов сочетания пар графических примитивов, образующих ломаную линию контура (отрезков, окружностей, дуг, эллиптических дуг и сплайнов).
В соответствии с рассмотренными особенностями обобщенный алгоритм модификации штриховки включает следующие этапы:
1. Из ранее сформированного для чертежа списка примитивов HATCH в цикле выбирается первая запись и анализируется ее структура.
2. В соответствии с групповым кодом 91 выявляется количество контуров, образующих анализируемую область штриховки.
3. По записи группового кода 98 и значению координат каждой точки (код 10) определяется, сколько точек затравки указывалось при первоначальном формировании этой штриховки и их координаты.
4. Если ни одна точка затравки не использовалась, то значение кода 98 равно 1, а значения координат такой точки (код 1руппы координат равен 10), записанных в dxf-файле для этой группы, будут тождественно равны нулю. Такое нулевое значение координат соответствует непосредственному заданию примитивов контуров. Иначе, если задавались точки затравки, то значение для 1руппы с кодом 98 определяет количество введенных пользователем точек, и затем для всех этих точек приводятся значения их координат (но коду 10). При выявлении такого варианта задания (при использовании точек затравки) осуществляется переход к п. 6 алгоритма. {Начало обработки контуров, состоящих из базовых графических примитивов)
5. В цикле обработки контуров, в соответствии с ранее выявленным их количеством (см. и. 2), для каждого контура, входящего в описание (код группы - 91), выполняются следующие действия:
5.1. Определяется количество базовых графических примитивов, образующих текущий контур (код этой группы - 93).
5.2. В цикле но базовым примитивам текущего контура для каждого графического примитива (код примитива - 72) выявляются его исходные (до модификации) параметры, а затем внутреннее, присвоенное системой, имя этого примитива (код имени - 330). В частности, но коду примитива (72) выявляются следующие параметры:
- отрезка (значение кода отрезка равно 1) - координаты точки начала (код группы - 10) и конца (код группы -11);
- полилинии (код примитива - 0) - координаты каждой точки (код группы - 10) и кривизна в ней для последующего сегмента (код группы - 42);
- дуги и окружности (код примитива - 2) - координаты центра (код 10), значения радиуса (код 40), начального (код группы - 50) и конечного (код группы - 51) углов в радианах и направление обхода (код группы - 73). При этом 1 соответствует обходу против, а 0 - по часовой стрелке;
- эллиптической дуги (код примитива - 3) - координаты центра (код 10), координаты точки большой полуоси (код 11), длина малой полуоси в долях от большой (код 40), значение начального (50) и конечного (51) углов в радианах, направление обхода (код 73) со значением 1 - против, а 0 - но часовой стрелке;
- сплайна (4) - порядок сплайна (код 94), признак рациональности (код 73), признак периодичности (код 74), количество узлов (код 95), количество управляющих точек (код 96), а также данные узла (код 40) и координаты управляющих точек (код 10), которые повторяются в соответствии с количеством узлов.
5.3. Используя сеточную параметрическую модель, выявленные старые параметры графических примитивов в описании контура заменяются на новые.
5.4. Модифицируется (перерисовывается) область текущего контура в соответствии со скорректированными значениями параметров графических примитивов.
5.5. Переход на начало цикла (п. 5) для обработки следующего контура, если обработанный контур не последний в списке. (Начало обработки контуров с точками затравки)
6. В цикле для каждого контура по коду группы 93 определяется количество образующих сегментов ломаной.
7. Последовательно выявляются и сохраняются в отдельном списке или массиве исходные координаты (код группы - 10) всех точек ломаной контура и кривизну линии в каждой точке (код группы - 42).
8. Последовательно выявляются внутренние имена базовых примитивов (код группы - 330), пересечение которых определяет ранее выявленные координаты для каждой точки ломаной.
9. В цикле по сегментам ломаной последовательно вычисляются новые (модифицированные) координаты точек пересечения и значение кривизны кривой в этой точке. Для этого:
9.1. Вызывается процедура нахождения точки пересечения двух графических примитивов, для которой входными параметрами выступают внутренние имена этих примитивов, а выходными координаты точки пересечения и кривизна кривой в ней.
9.2. Процедура расчета точки пересечения на основе переданных ей имен в структуре чертежа выявляет по каждому примитиву его тип и его новые (модифицированные) геометрические параметры.
9.3. В соответствии с выявленными типами осуществляется обращение к соответствующей функции поиска координат точки пересечения графических примитивов (двух отрезков, двух дуг, отрезка и дуги, отрезка и окружности и т. д.) с уже известными для них параметрами. Эта же программа обеспечивает определение значения кривизны в рассчитанной точке, если оно не равно нулю (если последующий сегмент не отрезок).
9.4. В структуре описания HATCH старые значения координат и значение кривизны (если оно отлично от нуля) заменяются на новые.
9.5. Если сегмент последний, осуществляется модификация обработанного контура и переход к обработке следующего, т. е. на и. 6 (на начало цикла).
10. После завершения цикла обработки контуров выполняется процедура определения координат внутренней точки для каждого модифицируемого контура.
11. В конце работы алгоритма старые координаты внутренних точек (точек затравки) заменяются на вновь вычисленные и модифицируется область штриховки (графического примитива HATCH).
Обобщенный алгоритм штриховки расширяет возможности сеточной параметрической модели чертежа, так как обеспечивает вместе с автоматической перерисовкой образа детали автоматическое преобразование областей сечений и разрезов. Это исключает ручной труд и повышает производительность труда конструкторов при модификации конструкторских документов. В заключение необходимо отметить:
1. Наиболее эффективно модификация чертежей с областями штриховки может быть выполнена на базе системы AutoCAD. Это обусловлено тем, что данная САПР корректно отображает на экране компьютера исходные dxf- файлы чертежей, созданные в других системах, относительно просто обеспечивает задание конструктором новых размерных обозначений, имеет широкий спектр программных средств разработки пользовательских приложений [31] и после модификации обеспечивает сохранение новой версии чертежа в dxf-файле.
2. Параметризация (установление связей между всеми старыми и новыми, измененными, значениями координат (элементами базовых сеток) по представленному в 6.3 алгоритму может быть реализована не только в численном виде, как это достаточно подробно представлено в разд. 6, но и в функциональном представлении.