As a CAD assembly increases in size, load time and model performance become increasingly important factors. In one of our earlier posts (see here), we covered ways to manage assemblies and how their components interact with the top-level model in Creo. This series will cover best practices so that you and your colleagues working in the same large assemblies will have an easier (and more fun) time modeling!
As CAD models begin to approach a vast amount of assembly components, there are very powerful features within Creo that can help users improve their model performance, decrease loading times, and ultimately master the chaos of a large assembly. This post will deal with a small but very important aspect of assembly management: why (and how) to avoid creating external references.
Assemblies & References – Background
To start, it may be helpful to answer the question “what is an external reference”? An external reference is when a feature or definition to is dependent on a component outside of its current assembly context.
For example, let’s imagine that we have a top-level assembly, called “A.ASM”, as shown in the graphic below. Inside of that, we create two other assemblies, “B.ASM” and “E.ASM”. Inside of “B.ASM”, we have part models “C.PRT” and “D.PRT”, and inside of “E.ASM”, we place “F.PRT”:
When the PRT models are constrained, often times they use references from other PRT models to help place them in the correct position and orientation in the assembly. In this example, if the position and orientation of “D.PRT” directly referenced a feature, surface, edge, or other detail from “F.PRT” – that would be considered an external reference.
In this case, depending on your configuration settings, when loading “B.ASM” on its own, Creo can sometimes load the ENTIRE “E.ASM” into memory as well in order to properly load the correct reference. This is generally not a problem for small assemblies like this example, but it can become a major performance issue for larger assemblies.
Performance of External References
Many mechanical designers can spend their entire CAD career generating assemblies without needing to think twice about external references. When working with smaller assemblies, Creo can typically perform well enough that many users may not feel the need for proper referencing between parts of the assemblies. However, as the number of components in an assembly begins to increase its complexity and size, load times very quickly became longer and choppy visuals became more common.
When dealing with more complicated assemblies (large machinery, automotive models, satellites, etc.) containing thousands or even hundreds of thousands of individual parts in Creo, these issues grow exponentially and the system-level assembly management of the components becomes critical. In instances that are all too commonplace, load times can average well over an hour and engineers/designers can’t even do their job properly due to their difficulty to interact with the model.
In these types of large assemblies, designs tend to change frequently, components are added and removed by multiple users across the entire design, and it becomes increasingly difficult to ensure that models stay clean and correct. Even a single external reference can significantly slow down regeneration times, cause model failures, and even create problems for downstream tools such as Creo View – which lead to wasted time for you and your design team.
Avoid External References
The best way to show the challenges with external references is through an example. The “Reference Viewer” tool is the best way to visualize these (shown below). We will first focus on a component that contains an external reference, SWITCH_COAX_H28S_HORIZ_PINNED.PRT (in red) inside SHELF_1_EQUIP.ASM inside INTERNAL_COMPONENTS.ASM.
We will now show what the reference path looks like with the external reference: in the Reference Viewer, there is a Parent path of 87799995.PRT (below in blue). The full path display (below in red) shows just how much chaos is involved in the reference journey to SHELF_1_EQUIP.ASM. Whenever Creo loads this assembly into reference, it needs to load the very top-most RF_SWITCHING_CABINET.ASM into memory, working its way down through ENCLOSURE_STRUCTURE.ASM loading every assembly until it finds the correct reference. This is much costlier for your computer processor and will lead to longer load time and slower model performance.
Because the references are not self-contained within the most immediate SHELF_1_EQUIP.ASM assembly, they are very difficult to keep track of, which can easily lead to missing references later in the design process as other assemblies change. Below is an example of when an originally unaccounted change in the external reference leads to a missing reference in the SHELF_1_EQUIP.ASM, take note of the missing feature/reference in the full path display.
Below is a picture of how SWITCH_COAX_H28S_HORIZ_PINNED.PRT is currently constrained in the assembly. You can see the that this 87799995.PRT surface constraint is not only outside SHELF_1_EQUIP.ASM but outside the next highest assembly INTERNAL_COMPONENTS.ASM.
We will correct this by removed the external reference and replacing it so that the SWITCH_COAX_H28S_HORIZ_PINNED.PRT is constrained to the “DEFAULT_Y” plane of the SHELF_1_EQUIP_SKEL.PRT.
Now, the SWITCH component is constrained with all references being inside SHELF_1_EQUIP.ASM. See the full path of the references below, all of which are contained within the most immediate assembly, AKA properly constrained. Having all the references contained within the same assembly will not only lead to much better model performance and quicker load times, but greatly decrease the change of having a missing external reference.
External references are a common issue for novice CAD users. One wrong click can drastically affect how you and your colleagues interact with a large assembly. It is easily prevented by proper training and constant vigilance. In our next part of this series on assembly management, we will go into detail and make the case for using skeleton models.