пятница, 19 декабря 2014 г.

Формирование контура лекала.

О том как создавать контура лекал я уже ранее показывал в заметке Создание деталей. Сегодня же мы поговорим о нововведении которое понадобилось нам для подготовки продолжения статьи о создании корсета. Для тех кто не читал - Чертеж белья для похудания. Часть 1.


После успешного преодоления первых трудностей, о них я говорил в статье, этот чертеж не захотел так просто сдаваться. Наша система формирования контура лекала не была готова к таким задачам и подготовка продолжения статьи затянулась. Недавно мной были сделаны необходимые изменения которые мы и рассмотрим в этой статье. Они уже доступны на странице загрузки.


Для примера возьмем вот такой чертеж. На что сразу стоит обратить внимание? Как вы возможно уже знаете формирование контура происходит по часовой стрелке. Это очень важный параметр, о котором не стоит забывать. Мной специально было сделано выделение кривой для того что бы показать направление движения точек.



Наша старая система формирования контура позволяла выбирать только кривые целиком. Для некоторых лекал этого хватало сполна, но не для этого. Первой попыткой исправить подобные ситуации было создание инструментов разрезания кривых. После их применения у вас появлялась точка и две новых кривых поверх одной старой. И продержалась эта система до момента когда было добавлено инструмент пересечения оси и кривой, точки А3 и А4 на первом рисунке находятся как раз с применением такого инструмента.

Оказалось, что нам нужны не просто точки, а сегменты кривой. Старая система как я уже говорил дает выбирать только целые участки. Я попытался использовать и тут старую схему с разбиением кривой, но слава Богу не сумел, и нашел более легкое и правильное решение.

Стоит сказать, что при формировании контура все объекты переводятся в наборы точек. По этому, новое решение заключается в формировании сегментов кривых по двух точках, что лежат на ней.


Как это работает? Результат работы нового подхода можно видеть на рисунке выше. Вообщем то на первый взгляд ничего не изменилось. Потому что тут так оно и есть, но процесс в середине происходить совсем другой.

Первой в списке значиться точка А которая просто добавляется в контур. Дальше у нас в списке значится сложная кривая. Раньше мы бы просто добавили весь набор точек кривой, а сейчас действуем по другому. Вместе с кривой анализируются также предыдущий и последующий объект в списке контура. В нашем случаи это точки А и А2. Их координаты сохраняются и начинается процесс создания сегмента.

Берется первая точка и если она находится на кривой считается началом сегмента. Все что находится до нее отбрасывается. Если вторая точка находится на кривой, то она считается точкой завершения сегмента. И для отрезка полученного на первом этапе откидываться точки, что находятся после нее.

Поскольку точки А и А2 лежат на кривой и указывают на начало и конец отрезка, результат у нас вышел такой же как и раньше.


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

Новый механизм чем то напоминает вырезание ножницами. Как видно, было указано два сегмента на кривой А, А3 и А4, А2. Это позволяет нам создавать контуры достаточно сложной формы.

Я не зря упомянул направление кривой на первом рисунке. Поскольку очень часто кривые могу иметь обратное направление, формирование контура будет проходить не правильно. Раньше я пытался решить эту проблему автоматически, без участия человека. Но введение сегментов поставило на этом крест. И теперь для каждой кривой доступна опция "Реверс", что позволяет включать кривую в контур с обратным порядком точек. Не достатком такого похода является необходимость проверки пользователем корректности кривой. Часто сегментное вырезание приводит к тому что кривая и вовсе исчезает с контура или прибавка на швы перестает отображаться.

Комментариев нет:

Отправить комментарий