The model you’re working on and the bad rice you had last night are sucking the will to live right out of your kabuto wearing head.
Circular references are some of the most heinous problems to crop up in assemblies this side of ancient feudal Japan. The two worst things about these type of problems is that they’re not shown as errors and you have to dig them out of the miry clay of SolidWorks features. Two items no amount of Katana swordplay will work against. However, there are ways to slice up assembly issue and destroy Circular References.
AssemblyXpert: When to use it
The SolidWorks AssemblyXpert is a great idea in theory. It’s suppose to diagnose your model and tell you where and how your sly modeling practices could be improved. However, I find it provides too little information when you really need to grind down assembly problems. It also gives different results at different times. This image is the result right after the assembly was open.
I knew there were circular references and other problems. After I hit rebuild, I got an all clear – Diagnostic Test Past. In fact, each time I performed a Rebuild (Ctrl-B) or Complete Rebuild (Ctrl-Q), different results were shown. The information provided by the AssemblyXpert is basic. It will go as far as to tell you which components have problems, but not down to what level.
This isn’t a review or critique of the AssemblyXpert, so, all this to say, run the AssemblyXpert after you first open the assembly, rebuild it and run it again. This can help pinpoint components that have issues, but beyond that you’re on your own when you need to find out where the conflict is actually happening.
Finding the Circular Reference
How do you know it’s circular reference?
You’ll usually know you have a circular reference when geometry is moving that should not be moving, or vice versa. After you get a few errors popping up and a sense of panic, you’ll quickly want to know…
How to find a Circular Reference
The most evident way of finding where the Circular Reference may be is the Rebuild symbol appearing on a feature in the FeatureManager. This is the only way you’re really going to know where to start making changes. If you rebuild and still see this symbol, there is most likely circular reference.
The Master ‘Try This Before You Kill Someone’ List
These are the steps I go through, before getting really fed up and throwing printer cartridges at doors and fake plants.
Before You Kill SomeOne
___ Run AssemblyXpert when you first open the Assembly
___ Hit rebuild
___ Look for a rebuild symbol in the Feature Manager
___ Look at the relations in that feature
___ Suppress relations and rebuild to see if symbol disappears
___ Close model. DO NOT SAVE.
___ Open model and delete/fix relation causing the issue
This is the fastest way I’ve found to diagnose and repair assembly issues, especially ones that involve unknown circular references. Sometime with simple sketches, I’ll blow away all the relations and re-relate them or add dimensions to make sure that nothing is referencing something it shouldn’t.
This is nothing New
It’s really easy to over-simplify solving these types of issues. You usually need an intimate relationship with the model to know exactly where all the interaction is taking place. Solving the issue is easier if you know each feature, but if you’re working on another person’s model, you’ll wish for tools which tell you exactly where conflicts are occurring. Here’s hoping those tools appear in the future.
As I’ve gone through this, I’ve found there’s not much new to tell about how to deal with Circular References or assembly issues in general. There are tools that can get you closer, but it’s still digging down to (where you think) the problem area is.
Are there better ways? How do you slice up assembly issues and circular references?





SolidSmack is a very small behemoth of an online community about 3D CAD, technology, design, robots, and ninjas… Ok, maybe not ninjas so much, but those guys are COOL so there just might be something about some dang ninjas.
{ 10 comments }
Circular Reference in pro/e that's even more fun, it is hard to get one in pro/e but when it is in there your pretty much screwed.
I thought Pro/E could export a file that broke down features and show circular references?
There's some things in SolidWorks that trigger a 'You have circular references' message. Sometimes you'll see it when doing a File, Find references. I think an 'Advanced' Tab on the AssemblyXpert would be a good way to show it, although not the most direct.
It's definitely a context-based issue with parametric feature based modeling, and usually something more common with inexperienced users, but even if you know about them and you're working on someone else;s model, you could slap a reference in that creates a conflict.
Yeah, But it isn't fool proof…. and the error handler is a pain to work with it is build so you can't screw things up but it get working on your nerves because it threads you like your some noob. And a simple screw this I will go with my backup isn't really the option, no you stay here and fix this first, says pro/e. Until you crtl-alt-del and kill it.
I learned quickly in-context relationships are fast and maddening. Use relationships to place a feature, then as soon as possible reference to an in part feature. Avoid the circular logic bugaboo and save yourself.
Tracking circular refs in Pro E is actually quite easy.
The real trick is not to create them in the first place. Solidworks has limited tools available for top down design in comparison to pro-E (which has special skeleton parts, copy geometry etc).
It also quite happily lets the user create crazy circular references.For example, I had an assembly (done by someone else) where a part had been extruded to the face of another part. The end face created, had also been mated to the part. Dragging the part would simply change it's size!
My rules for top down design in Solidworks:
1. Create a skeleton part which will be used for ALL references.
This can be made up of sketches, planes and surfaces.
2. NO references to any other parts (the “isolate” command is useful to ensure this).
3.Create a special skeleton assy with the skeleton part.
4. Add parts at the default location ie all mates fixed origin to origin.
5. Create a “real” seperate working assembly which will be used for drawings etc.
The advantage of this method are:
1. reduced mating overhead, since most parts will be mated fixed.
2. All references are in a seperate assy, so the working assy can be copied, made into sub assys etc, without screwing them up.
I have used this method for several large (100s -1000s of parts) assys and it works perfectly.
Ian, that is a GREAT guideline. I tend to use sketches and the 'skeleton' – actually working on a post to explain turning a bottom-up assembly into a top-down assembly. I think SolidWorks needs better tools to prevent sloppy modeling. I guess ideally, circular references wouldn't matter, but if they do and they jack stuff up, there needs to be ways to prevent them. Thanks for the comment.
We have a macro that our Technical Director wrote which checks any assembly for Circular Refs. You run it, it comes back and tells you exactly where they are. It's really quick to run and you can even copy out the result into a text file. Want it??
There's a new tool from KollabNet shipping by end of month which helps, check out the video: http://www.youtube.com/watch?v=eRpjAu_E-Ig
Josh and all, we're shipping SolidMap which will help you stomp out circular references, please check us out at http://www.SolidMap.com, try the free eval and we'd appreciate your input.
Josh and all, we're shipping SolidMap which will help you stomp out circular references, please check us out at http://www.SolidMap.com, try the free eval and we'd appreciate your input.
Comments on this entry are closed.
{ 1 trackback }