Upon creating adaptive fragments (the Detail > Create command the Create Adaptive Fragment option) may be a recursion if the constructions "pulled" from the assembly depends on each other. Let's explain this with a simple example.
Let's say you have two boxes. Construct circle profiles on one of the faces of each of the boxes. It turns out that one profile is a child of the first box, and the second is a child of the second.
Extrude the profiles, and then subtract the resulting cylinders from parallelepipeds using Boolean operation. You should subtract the cylinder, created by the extrusion profile, which belongs to the first box, from the second box. And the cylinder, created on the profile of the second parallelepiped (box) should be subtracted from the first box. As a result, it turns out that each of the parallelepipeds has another parallelepiped as its parent and its child.
Call the context menu for the first parallelepiped and choose the command Detail > Create. In the command dialog, specify the Create Adaptive Fragment option.
Click "OK". A dialog box with a message about recursion appears.
Four variants of recursion elimination are proposed.
1) Do not create adaptive parameters. That is, it is proposed not to place reference elements in geometric parameters. Reference elements, unlike geometric parameters, are themselves recursive. Recalculation of fragment begins with updates of the borrowed geometry, then the rest of the constructions tree of the fragment is recalculated. After the fragment is recalculated, the changes appears in the Assembly. Changes in the geometry of a fragment causes a change in the source geometry of the reference element of the fragment in an assembly, . But this change will only be passed to the fragment the next time it is recalculated. This eliminates looping recalculations on themselves.
In this case, the fragment will be non-adaptive.
2) Break recursion in assembly element. In this case, an internal reference to the profile will be created inside the assembly file, the parent of which is the body in the assembly (the second parallelepiped). Therefore, for a fragment reference element, the source geometry will not be a profile in the assembly, but an internal reference to that profile in the assembly. Since the source geometry, for the internal reference, which is the source geometry for the reference element of the fragment, is in the assembly, the method itself is called "Break recursion in assembly". An internal reference that is updated only manually breaks the recursion. Since the reference is not updated when recalculating, the geometry of the reference element is fixed, and does not depend on the change of the parent element, and there is no recursion when recalculating the geometry of the adaptive fragments. For the body of the second parallelepiped, a reference element is also created. The source geometry of the reference element is the profile of the first parallelepiped derived from the fragment. For the first parallelepiped such element is called derived.
The fragment will be adaptive in this case: there will be a reference element in its geometric parameters.
The internal reference that breaks the recursion is updated only manually. You cannot update it from the Assembly Structure window.
You can find out that the internal link is fixed and is not automatically updated by its icon with the image of a pushbutton button. To update a link, open its context menu and select Update geometry.
3) Break recursion in reference element. In this case, an internal reference to the reference element will be created inside the assembly file. The source geometry of the reference element is the profile of the fragment of the first parallelepiped. For the fragment, such element is called derived. Since the source geometry of the reference element to which the internal reference is created, is in the fragment, the method itself is called Break recursion in detail. An internal reference that is updated only manually breaks the recursion. At the same time, the fragment itself also has a reference element. The source geometry for the reference element is a profile, whose parent element is the second parallelepiped. The body of the parallelepiped is in the assembly.
As in the previous version of the recursion elimination, the created fragment will be adaptive: there will be a reference element in its geometric parameters.
4) Add depended object to the detail. In this case, the generated fragment will contain both bodies and will be non-adaptive (an assembly unit will be created).
The user himself can eliminate recursions with the help of internal reference elements. To create an internal reference element, you need to call the Reference Element command while in the edited file (not in the context of any assembly) and select the model element from the 3D scene or model tree in the 3D Model window.