A Circular reference occurs when two or more components, in an assembly, share external references in a way that a rebuild of one component necessitates a rebuild of another component(s). If PDM is involved, circular references will prevent the check-ins.
A circular reference can manifest itself by the presence of reoccurring rebuild symbols. Rebuilding the assembly will cause the rebuild symbol to move from one component to another, further rebuilds of the assembly may cause the rebuild symbol to appear on other components or cycle back to original component. With each reach rebuild the rebuild symbol will loop through all affected components, but the rebuild symbol will not be present if one of these parts is opened in a separate window.
Another way that a circular reference can make its presence known is by the appearance of rebuild errors in the components affected by the circular reference. When one part is edited in context of the assembly, the rebuild errors will appear in some or all other affected components. These rebuild errors will disappear after exiting to Edit Assembly. Performance Evaluation from the Evaluate tab of the Command Manager or from Tools>Evaluate, can also identify potential Circular References.
Eliminating circular references can be tricky and often involves “Locking” external references for each affected component then rebuilding the assembly to isolate the component(s) that are involved in the cyclic reference. Once the affected components have been identified, the features and sketches of each affected component will need to be edited in order eliminate the cyclic reference. Quiet often each relationship of a sketch, that has an external reference, will have to be suppressed in order to determine which relationship(s) is responsible for the cyclic reference.
Since determining the source of the cyclic reference can be difficult and time consuming, it is best to avoid circular references.
- Layout sketches and blocks can be the hub for all external references. Changes are initiated from these sketches and blocks and propagate out to all referencing features. Further, by the use of Assembly “Layouts” we can use simple blocks to test motion in our assemblies, before we commit extensive modeling time.
- If external references need to be added to components in an assembly, attach these external references to key components such as a frame. These key components should not contain features with external references as this may introduce cyclic references. As with layout sketches and blocks, changes made to these key components will propagate out to referencing components.
- Avoid adding relations from a top level component to a component in a subassembly.
- Avoid adding an external reference to a feature that already contains an external reference.
- Avoid adding external references to time dependent assembly features such as “Hole Wizard/Series” holes, “Component Patterns” and assembly cuts (extrudes, revolves, lofts).