Связи и уравнения в SolidWorks

Цель данной заметки – дать общие представления по применению уравнений и связей в SW.

В качестве примера опишу создание эскиза профиля крыла с применением сплайнов по опорным точкам.

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

Для примера я выбрал произвольный несимметричный S-образный профиль из справочника авиационных профилей
В приведенном примере это Clark-YH-20% (на 131 станице). Процент утолщения мы впоследствии зададим как глобальную переменную.

Рис.1

Для более простых, например симметричных профилей, построение упрощается.

Итак, приступим:

Создаем деталь, нарекаем ее, к примеру, «шаблон крыла».
Задаем глобальные переменные, В нашем случае это хорда и утолщение. Они задаются как уравнения, читаем хелп, а именно:
_-----------------------------------
Чтобы отредактировать уравнения:

  1. Выполните одно из следующих действий.
    • Нажмите кнопку Уравнения на панели инструментов Инструменты…
    • Выберите Инструменты, Уравнения.
    • Нажмите правой кнопкой мыши на папку Уравнения в дереве конструирования FeatureManager и выберите Редактировать уравнение.
  2. В диалоговом окне Уравнения выберите параметр Редактировать все.
  3. В диалоговом окне Редактировать уравнения отредактируйте текст одного или нескольких уравнений. При редактировании помните следующее:
    • Каждое уравнение должно располагаться на отдельной строчке.
    • Имена размеров должны быть заключены в кавычки.
    • Расчет уравнений выполняется слева направо (то есть размер слева управляется значением справа).
    • Уравнения решаются в порядке их появления в списке уравнений. Можно также копировать и вставлять уравнения в этом диалоговом окне для изменения их последовательности, если необходимо.
    • Можно добавить комментарии к уравнениям для записи замысла проекта.
    ------------------------------------_
    Добавлю еще, что дробные числа пишутся через десятичную точку, а не запятую! Следите за этим, иначе (не зная) придется долго ломать голову, где ошибка в уравнении!..

    Рис.2

Значения можно задать любые, но для удобства хорду задал 100, т.к. ассоциируется со 100%, а утолщение как в выбранном шаблоне 20%.
Обратите внимание, что получились безразмерные переменные, значения которых можно использовать далее как глобальные параметры.

Теперь, собственно, сам эскиз:
В плоскости «Справа» создаем эскиз «Профиль корневой». В нем из начала координат рисуем горизонтальную вспомогательную прямую (хорду) произвольной длины. Задаем ей размер. В окне изменения размера в выпадающем списке выбираем «Значение связи».

Рис.3

Далее из выпадающего списка имен выбираем хорду.

Рис.4

Тычем ОК. Все! Теперь этот размер связан с нашей глобальной переменной. Красный значок перед значением размера указывает на эту связь.

В нашем профиле 23 пары опорных точек (не считая точки носика). Поэтому рисуем 23 вертикальных (пока никак не привязанных) вспомогательных отрезка. Конечно же рисуем один, а остальные просто копируем. Концы этих отрезков будут опорными точками (верхние – Yв, нижние - Yн). Так как в нашем случае ни верхняя ни нижняя граница контура не пересекают линию хорды, то все отрезки должны пересечь ее. Если бы мы, к примеру, выбрали профиль FX60-100/126/, то часть отрезков пересекала бы линию хорды, а часть располагалась бы выше. Это обусловлено тем, что размер – строго неотрицательная величина!

Т.к. в нашем профиле при X=1 Yв и Yн не равны, то для замыкания контура профиля у последнего отрезка снимаем галочку вспомогательной геометрии. Это будет задняя кромка профиля.

Рис. 5

Теперь определяем эти отрезки по горизонтали, просто указывая размер от начала координат (носик будущего профиля) до них. Т.к. мы располагали их наугад, то и значения размеров будут хаотичными, но это не важно! Не тратьте время на красивое ручное указание этих значений!

Рис. 6

На данном этапе, важным являются имена размеров, а не их значения, поэтому размеры проставляем строго по очереди от первого отрезка до последнего. В этом случае автоматически присвоенные имена будут такие:
Расстояние до первого отрезка - D1@Профиль корневой
.
.
.
Расстояние до последнего (23-го) отрезка - D23@Профиль корневой.

Данные размеры будут ни чем иным, как Х опорных точек.

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

Рис.7

Все необходимые размеры мы задали. Получили:
Х координаты - это D1…D23
Yв координаты – это D24…D46
Yн координаты – это D47…D69

Это только кажется, что их так много, поэтому долго и мучительно их создавать. На самом деле все очень быстро (реальные значения ведь не задаешь). Я например, все размеры наскоро навтыкал просто указанием мышки, при этом в другой руке держа чашку чая…

Теперь нужно их связать уравнением. Делать это можно вручную, например двойным кликом по размеру D1 вызываем окно изменения размера. В нем в выпадающем списке выбираем «Добавить уравнение».

Рис. 8

В появившемся окне «добавить уравнение» в поле ввода можно задать любую формулу с любыми переменными/константами. Причем имена размеров можно не набирать, а просто кликать по нужному размеру, будь он на этом эскизе или в любом другом месте…

Рис. 9

В нашем случае нам надо, чтобы выбранный размер “D1@Профиль корневой” был равен 0,0025 от Хорды. Так и пишем, 0.0025* и кликаем в «Хорда корневая» в глобальных переменных. Жмем два раза ОК и все! Уравнение задано!

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

Т.к. мы хотим иметь возможность управлять утолщением, то для размеров Yв и Yн уравнения будут другого типа. Мы используем исходную таблицу для профиля с утолщением в 20%, поэтому вводим масштабирующий коэффициент (наше утолщение/20).
Получим, к примеру для D24:
“D24@Профиль корневой” = 0.0142*“Хорда корневая”*“Утолщение корневой”/20

Так и дальше можно задать уравнения всех размеров, если не лень, конечно же!.. Но мне лень! Поэтому делаем проще и удобнее!

Выходим из эскиза. В дереве конструирования правой кнопкой кликаем на «Уравнения»->Редактировать уравнения. В появившемся окне жмем «Редактировать все».
Появится окно:

Рис. 10

Правила задания уравнений описаны в приведенной выше цитате из хелпа.
Это простой текст, каждая строчка которого – отдельное уравнение.

Как видите, в нем уже присутствует заданное нами вручную уравнение расстояния первого отрезка от носика (“D1@Профиль корневой” = 0.0025*“Хорда корневая”).

Все остальные необходимые нам уравнения формируются по такому же правилу с данными из таблицы профиля. Раз таблица – значит, вспоминаем о вездесущем Excel.

Сворачиваем на некоторое время SolidWorks.

Создаем экселевский файл. Вставляем в него данные из выбранной нами таблицы справочника. Эту процедуру описывать не буду – все умеем пользоваться офисом и такие операции как вставка данных и «заменить все» (дабы сменить запятые на точки и избавиться от отрицательных значений) занимают в сумме не больше минуты…

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

Рис. 11

Копируем их. Возвращаемся в покинутое нами ранее окно SW «Редактировать все». Вставляем (Ctrl+V).

Рис. 12

Дважды жмем ОК. Все заданные нами уравнения вступают в силу, соответственно все опорные точки определены на своих местах:

Рис. 13

Ну и последний штрих. По нашим точкам строим сплайн.

Рис. 14

Вот, в общем-то и все готово!

Что же мы получили?! Меняя всего на всего два параметра

Рис. 15
получаем эскиз профиля с заданным значением хорды и утолщения.

К примеру:

Рис. 16


Рис. 17

Ради самопроверки, попробуйте задать значения утолщений соответствующие приведенным вариантам из справочника и убедитесь, что все параметры будут соответствовать табличным! )))

Ну и напоследок приведу пример того, что еще можно сделать с получившимся шаблоном:

Ну, например, изменим профиль?! Я умышленно изначально выбрал из вышеозвученного справочника профиль с максимальным количеством опорных точек (23 пары), т.к. что-то удалить всегда легче и быстрее чем добавить.

Например, мне нужен профиль СУ-26 из того же справочника.

Засекаю время (19:58).

Делаю:
Дублирую файл детали, обзываю экземпляр «шаблон СУ-26»
В нем, удаляю все уравнения, кроме первых двух.
Т.к. в таблице профиля СУ-26 (я взял 18% на стр. 81) 20 пар опорных точек, то в эскизе удаляю сплайн и 21,22,23 отрезки (соглашаюсь удалить связные с ними размеры). У 20-го (последнего) отрезка снимаю галочку «вспомогательная геометрия».
Копирую из справочника таблицу в текстовый документ «СУ-26-18». В нем делаю заменить все запятые на точки и минусы на ничего.
В нашем экселевском файле копирую все уравнения на другой лист «СУ-26-18». Вставляю в него данные из подготовленного на предыдущем этапе текстового файла. Удаляю девять лишних строк. В двух ячейках меняю «20» на «18» (табличное утолщение).
Копирую получившийся столбец G в уравнения.
Строю сплайн по обновленным точкам.
Все! Профиль СУ-26 готов!..
Текущее время 20:02. (конечно же, сначала перестроил и засек время, а потом описал действия:))

Итого за четыре минуты (без предварительной тренировки, да еще и на тормозящем ноутбуке) наш шаблон профиля превратился в шаблон СУ-26!


Рис. 18.


Рис. 19

Еще раз упомяну, что я не сторонник использования сплайнов, да и построение симметричного профиля проще, чем в приведенном примере с СУ-26. Так же, раздувать как тут количество уравнений в проекте не рекомендую. Данная заметка написана исключительно для демонстрации работы со связями и уравнениями!

Искренне надеюсь , что изложенные принципы будут полезны для читателей!

P.S. Все необходимые исходники во вложении. Кому интересно - смотрите…

Уравнения и связи.rar

  • 25474
Comments
LehaBarnaul

Еканый бабай, столько информации за один заход не осилить 😁
Спасибо! Очень интересно.😋

RC-CLUB

СПАСИБО!!!)))))))

XASAN

Спасибо! Очень полезная статья!😃

Max_SL

Отлично написано!

Как ЧПУ-практик, получил много интересной информации. Теперь знаю, куда давать ссылку всем тем, кто про проектирование спрашивает.

techbeer

Кирилл спасибо! Статья отличная. Приятно что есть такая возможность в SW автоматизировать свой труд. Соответственно появились и вопросы:
1.Сплайн в итоге строится вручную или можно также завести через уравнение кривой по созданным точкам? Тогда как это уравнение кривой оформить? - Привязать к координатам точек профиля, которые считают описываемые вами уравнения и создаются автоматически в эскизе?- возможно такое?
2. Файлы -примеры в каком SW? Что-то 10-й не открывает:(

P.S. следующая заметка наверное будет работа с таблицами конфигураций применительно например, к созданию простых составляющих деталей крыла;)

Llirik

В данном примере сплайн строил вручную по точкам.
SW-2011. Солид на сохраняет проекты в более старых версиях (такая уж политика обновлений у них). у меня есть и 2010, но придется все заново делать. Т.ч. попробуйте сами создать по описанию, уравнения есть в текстовых файлах, да и экселевский вложил также. Если не получится, сообщите - сделаю в 2010…

techbeer

В данном примере сплайн строил вручную по точкам.

…и все-таки возможно нарисовать сплайн по точкам выставленными как описанно в данной заметке, но не в ручную, а за счет параметризации с использованием уравнений? Если да, то хотелось бы посмотреть пример.

Delirium

Сплайн можно сразу построить, по точкам, а лучше два сплайна - верхний и нижний. Задать параметрические связи соответствующим точкам верхней и нижней кривой - вертикальность, и записать теже самые уравнения, только для точек этих кивых.

techbeer
Delirium;bt72539

Сплайн можно сразу построить, по точкам, а лучше два сплайна - верхний и нижний. Задать параметрические связи соответствующим точкам верхней и нижней кривой - вертикальность, и записать теже самые уравнения, только для точек этих кивых.

А развернутый комментарий с алгоритмом действий и с приложением примера файла стиле Кирила можете выложить?

Llirik

Кирилл пишется с двумя “л”!.. А строил с помощью отрезков, дабы не делать лишних действий. Если строить по точкам то лишние действия (связь вертикальность), а с учетом 23 пар - 22 лишних действия!.. А я ленивый!.. 😃

Delirium
techbeer;bt72616

А развернутый комментарий с алгоритмом действий и с приложением примера файла стиле Кирила можете выложить?

Да куда подробнее. Все тоже самое, только сразу строим верхний сплайн по начальной, 22-м промежуточным и конечной точкам. Так жеж нижний.

…дабы не делать лишних действий.

Делать их и не надо, не надо строить отрезки, задавать их вспомогательными прямыми, строить сплайн затем по получившимся точкам… Только задать вертикальность соответствующим парам точек на двух кривых. Но кому больше нравиться, конечно.😉 С заданой вертикальностью и уравнениями.

“Голый” эскиз

Единственное у меня D2-D23 координаты по ох, D25-D46 - координаты Ув, D48-D69 - Ун, соответственно. “Лишние точки поставил, пришлось удалить”
В solid 2010: skabinsky.ru/wp-content/…/Solid-пример.rar

techbeer

Юра, спасибо!

Llirik

Юрий, у Вас при таком построении носик профиля угловатый получается, соответственно и кривизна носика “уходит” от табличных… Но это уже другая тема…

Delirium
Llirik;bt72663

Юрий, у Вас при таком построении носик профиля угловатый получается, соответственно и кривизна носика “уходит” от табличных… Но это уже другая тема…

Ок. Делим количество сплайнов на два и строим одну кривую. Все остальное тоже.
Единственное, для задней кромки, которое по таблице острая аки лезвие, нужно задать радиус кривизны сплайна (в этой точке) близким к нулю, иначе будет местное “взбухание”.
Кстати, а у Вас одним сплайном потом все обрисовано? У меня к сожалению не открывается пример…
Если да, то что в задней точке профиля? Сплайн замкнутый, или нет?
А отличие от “таблицы” при толщине профиля 35%, в мм:

При этом строить профиль по точкам - это уже в какой-то мере ошибка, которая никак на практике не сказывается. При аппроксимации сплайном Вы не влияете на кривизну в точках, солид расставляет ее, исходя из собственных алгоритмов, но она вряд ли соответствует кривизне конкретного профиля. Если описать кривую функцией, соответствующей нужному clark’у, то было бы самое то. Однако не для всех профилей они есть.😃

Llirik

При этом строить профиль по точкам - это уже в какой-то мере ошибка,

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

Ответ в тексте:

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

Еще раз упомяну, что я не сторонник использования сплайнов, да и построение симметричного профиля проще, чем в приведенном примере с СУ-26. Так же, раздувать как тут количество уравнений в проекте не рекомендую. Данная заметка написана исключительно для демонстрации работы со связями и уравнениями!