Устранение рекурсий при использовании ссылочных элементов

Предыдущая страницаВ началоСледующая страница

При создании адаптивных фрагментов (команда Деталь > Создать с вариантом Создать адаптивный фрагмент) может возникнуть рекурсия если «вытягиваемые» из сборки построения зависят друг от друга. Поясним это на простом примере.

Пусть у нас есть два параллелепипеда. На одной из граней каждого параллелепипеда построим профили, представляющие собой окружность. Получается, что один профиль является потомком первого параллелепипеда, а второй – второго.

21Assembly3DReferenceElement1S

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

Вызовем контекстное меню для первого параллелепипеда и выберем команду Деталь > Создать. В диалоге команды укажем Создать адаптивный фрагмент.

Нажимаем «ОК», после чего появляется диалоговое окно с сообщением о рекурсии.

Recursion2

Предлагается четыре варианта устранения рекурсии.

1) Не создавать адаптивные параметры. Т.е. предлагается не помещать ссылочные элементы в геометрические параметры. Ссылочные элементы, в отличие от геометрических параметров, сами по себе являются защитой от рекурсии. Пересчёт фрагмента начинается с обновления заимствованной геометрии, далее пересчитывается всё остальное дерево построений фрагмента. После пересчёта фрагмента изменения приходят в сборку. В сборке изменение геометрии фрагмента вызывает изменение геометрии-источника ссылочного элемента фрагмента. Но это изменение будет передано во фрагмент только при его следующем пересчёте. Таким образом устраняется зацикливание пересчётов самих на себя.

В этом случае фрагмент будет неадаптивным.

2) Разрывать рекурсию со стороны сборки. В этом случае внутри файла сборки будет создана внутренняя ссылка на профиль, родительский элемент которого – тело в сборке (второй параллелепипед). Поэтому для ссылочного элемента фрагмента, геометрия-источник будет не профиль в сборке, а внутренняя ссылка на этот профиль в сборке. Т.к. геометрия-источник, для внутренней ссылки, которая является геометрией-источником для ссылочного элемента фрагмента, находится в сборке, то сам способ называется «Разрывать рекурсию со стороны сборки». Внутренняя ссылка, которая обновляется только вручную, разрывает рекурсию. Т.к. ссылка при пересчёте не обновляется, то геометрия ссылочного элемента зафиксирована, и не зависит от изменения родительского элемента, и при пересчёте геометрии адаптивного фрагментов не возникает рекурсия. Для тела второго параллелепипеда также создаётся ссылочный элемент, геометрия-источник которого – профиль первого параллелепипеда, поднятого из фрагмента (для первого параллелепипеда такой элемент называется поднятым).

В этом случае фрагмент будет адаптивным: в его геометрических параметрах будет ссылочный элемент.

Recursion3Recursion4

Recursion5

Recursion6

Внутренняя ссылка, разрывающая рекурсию, обновляется только вручную. Из окна Структура сборки её обновить нельзя.

Что внутренняя ссылка зафиксирована и автоматически не обновляется – можно понять по её пиктограмме с изображением канцелярской кнопки. Чтобы обновить ссылку нужно вызвать её контекстное меню и выбрать команду Обновить геометрию.

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

Recursion7Recursion8

Как и в предыдущем варианте разрыва рекурсии, созданный фрагмент будет адаптивным: в его геометрических параметрах будет ссылочный элемент.

Recursion9

4) Захватить зависимые объекты в деталь. В этом случае создаваемый фрагмент будет содержать оба тела и будет неадаптивным.

Пользователь сам может устранять возможные рекурсии при помощи внутренних ссылочных элементов. Для создания внутреннего ссылочного элемента нужно находясь в редактируемом файле (не в контексте какой-либо сборки) вызвать команду создания ссылочного элемента Ссылочный элемент и выбрать элемент модели из 3D сцены или дерева модели в окне 3D Модель.