Master Model Part 4: Origins

When I worked with AutoCAD 15 years ago, working in 3D was tough. You always had to keep the UCS or WCS (user or world coordinate system) in your head.  When I switched to SolidWorks, I realized you rarely express anything in terms of XYZ, or even XY. In fact, you could work effectively in many areas of SolidWorks without paying attention to the coordinate system at all. In place of the coordinate system you have standard planes, which can be named anything you want, and the concepts of Horizontal and Vertical. That covers it for the most part.

To be fair there are some places where you need to be aware of XYZ directions, like sketch relations in 3D sketches, mass properties, and maybe a few other areas. The one area where I have had real difficulty with the origin is with scanned point clouds. The scan is often done however it is most convenient to hold the part or position the scanner. When the scan comes into Solidworks, it is often at some odd angle, which is never helpful, but it is something that you can work around by creating your own reference planes, or by using the tools in Scan To 3D to automatically orient the scan with respect to the origin and standard reference planes.

Keeping track of the origin when you are modeling a single part is one thing. But when you are modeling an assembly, you have an assembly origin, and origins for each of the parts. Depending on how you model, the part origins could wind up being where ever you want them, either in a convenient place for the part or in a convenient place for the assembly. Some people require part origins to be in specific places for downstream applications like rapid prototyping, analysis, machining, mold design, or even to assist in collaboration to remove ambiguity about a part’s location in an overall GA.

Then there are additional considerations, such as if a part is used in multiple places, what drives the origin location? Or what if a part moves with respect to other parts, where do you put its origin then? Or if you’re designing a tool to be used on the assembly, do the same rigid requirements still exist?

On top of this is the fact that SolidWorks software almost pretends that origins are useless aside from the orientation of the three standard reference planes. This is actually the way I work on most models because I’ve rarely run into situations in my own work that seemed to require a more rigid way of handling things. But if you had to reorient the origin, SolidWorks

doesn’t even give you a way to do it. Philosophically, SolidWorks believes that the origin cannot be moved. 0,0,0 is a fixed reference, and according to the SWview of things, it doesn’t make any sense to move a fixed reference. Kind of like instead of you moving to Kalamazoo, you’re asking the earth to rotate while you stand still, such that the earth places Kalamazoo at you.

When folks come from AutoCAD and maybe some other places too, the UCS can be moved where ever you want it. Yes, I do understand the convenience of that, but I also understand the “move the earth” argument against it. In the end, I think SolidWorks tends to the “not invented here” syndrome with some ideas. They copy stupid stuff like infinite lines (in a modeler that has a definitely finite working space), but refuse to allow users to move part origins. If you’ve ever had a part where you felt like you really needed to “move the origin”, and you were not extremely careful about how you modeled the part, you were probably in for a frustrating experience.

If you were to try to “move a part” because you were not able to “move the origin”, you would have to model the part with the first feature referencing the origin and coordinate system, but the rest of the model was built relative to the first feature. So after the first feature, you would have to sketch on faces or reference planes that were created without reference to the standard planes. Other wise you could find your self editing sketch planes for a lot of sketches, and with SolidWorks propensity to flip sketches when you change planes, it is very likely that you could get yourself into a “can’t get there from here” sort of situation.

There are two easy ways to move the part with respect to the origin, but I don’t think most folks who want to move the origin will like these answers. The first way is to use the Move/Copy Bodies feature, and simply move all the bodies where you want them. You can use translate/rotate by numbers or even basic mate functionality (that’s right, mate bodies within a part document). But that leaves a Move Bodies feature in the tree, and all of your sketches and reference geometry, and everything except solid and surface geometry after that point in the tree is still in its original position. So that definitely works, but most folks won’t like it.

The second way would be to create a reference coordinate system. The reference coordinate system doesn’t look anything like the origin, and you don’t automatically get planes with it. So if you were trying to use it like a regular origin and planes, you would not likely find it overly satisfying again.

So what’s left is avoiding the need to move and planning ahead a little by putting the part in the right place the first time. Well, that and submitting more enhancement requests for something surely almost every SW user has already submitted, but we’re talking about stuff you can do that is likely to yield a useful result here.

SolidWorks seems to have grown less adamant about their philosophy over the years. Things like Windows standard, preselect/postselect, and to whatever standard they held enforcing best practices have all slid perceptibly in the direction of ease of use. I see no reason why SolidWorks should not implement this kind of functionality. SolidWorks shouldn’t necessarily be playing “best practice nanny”, but at the same time, they have an obligation to new users to avoid making it easy for them to hang themselves with all of the rope they are given, if that makes any sense. Multi-body modeling can cause real parent-child difficulties even for seasoned users. Imagine what it might do in the hands of an over enthusiastic noob.

I want to add one more thing, just for reference. If you have an imported part, or don’t care about losing the features on a part (yeah, I know, that’s a lot of conditions that are hard to swallow, but hey, it could happen…), then there is a technique that you can use to put a part on the origin. First create the reference coordinate system, then save the model as a Parasolid or some other translated type, and as you are doing so, click the Options button at the bottom. This takes you to the Export Options dialog, which is rather hidden itself, but then at the very bottom of the Export Options is the Output Coordinate System selection box. You can select a coordinate system that is in the tree of your model. Look below at the screen shot to find the option. I panicked and thought they had removed it. It took me 5 minutes of looking through a couple versions until I found where the option was placed:

Just a touch out of the way, don’t you think? Anyway, that’s just an interesting fact if you ever need to use it.

Anyway. How do you place the origin for a new part within an assembly in the correct place right up front? I’ve got three methods to help you take care of your origins. Unfortunately, none of these work after the part is already built.

  1. In-context
  2. Multi-body
  3. Master Model

In-context modeling gets a bit of a bad reputation for being sloppy. In all honestly, that’s usually due to a user who just accepts whatever the software gives him by default. The tools are there to make sure that parts modeled in-context have the origins placed where you want them. The secret is not to create the part inside the assembly. Create the part in its own window, save it, then put the blank part in the assembly and position it. The alternative is to create it in the assembly, exit the part remaining in the assembly, delete the InPlace mate, position the part with respect to the assembly, then go ahead and model in-context features. These take a little more work than the default method, but if you are particular about origin placement and you need to model in-context, you’ve got to put in some extra effort.

Multi-body modeling by default puts split out body origins at the part origin. When you reassemble the bodies into an assembly, the origins should all line up, unless you have done something like move/copy bodies or scale. So this is one way to work that does stuff automatically for you.

If you make a master model (a part with reference sketches and/or surfaces in it that you can place in other parts, and the master model represents the assembly) the master model origin can be positioned at the origin of the part it is inserted into. Using this technique, all parts made from that master model could be placed into an assembly with their origins on top of one another, and they would  be automatically positioned correctly.

As with other things that sound too good to be true, these techniques that automatically position parts just by lining up part origins in an assembly may be requiring you to give up some things. Such as mates. If you use these techniques to build parts relative to a given origin position, you will not have to (in fact, you won’t be able to) use mates to position those parts. This means you give up dynamic assembly motion. If you don’t need motion, the three techniques above are certainly more stable ways to position parts, especially given the wild unpredictability of assembly mates sometimes.

Of these methods, I like the master model method best. You can use it to share all of the items in the list in the Insert Part PropertyManager above and to the right. In particular, are sketches, planes and surface bodies.

Mirror Part creates a special Insert Part command

 

Note: When you use the menu command Insert>Mirror Part, it actually starts up the Insert Part PropertyManager with two important differences. First, the bottom option is Break Link To Original Part, which is cool, and the second is a Move/Copy feature added to the Feature Manager, but the Move/Copy actually mirrors the part, which the regular Move/Copy cannot do. I’ll bet there’s a key in the Registry that would unlock the mirror function in the Move/Copy command and the Break Link functionality in the Insert part command. Just little stuff I wonder about sometimes.

As a really weird note, you cannot do a Mirror Part with broken link on a part that uses Insert Part to insert a master model. Don’t know why, it just gives you an error and says it won’t do it. Don’t ask me how I know that, other than yes, I did try it.

 
 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.