Tuesday, May 13, 2008

STS#2d - Blocks

Due to the sheer number of posts on this subject, here's a handy guide to all of them.
#1 - Associative Copy/I-DEAS Baseline
#2 - Derive Component Part
#3 - Top-Down Design
#4 - Blocks
#5 - Design Library
#6 - Assembly Cut
#7 - Part Configurations

I probably would not have arrived at the use of blocks on my own. This was suggested by my SolidWorks-savvy coworker. I guess I associate blocks with old AutoCAD 2D behaviors. Closest equivalent in I-DEAS would be drafting symbols, and those have no use in 3D. I know that SolidWorks uses blocks to accomplish some very powerful assembly mechanism behaviors (more on that later), but I would not have guessed there would be an application here with part-to-part relationships.

This is the first method I'm exploring that does not involve the use of an assembly. The block itself is an external file, and any parts that use that block simply reference the file. So it's a very different approach compared to anything I've done before, and is very interesting. However, it is somewhat awkwardly implemented, with tons of room for improvement.


Before I dive in to what I think the workflow would be for this, I need to demonstrate why I'm doing what I'm doing. As far as I know, there is no way to start sketching a block. You have to start with a sketch, and then convert that sketch into a block. Not a big deal, but I have seen cases where the conversion process does not bring all dimensions and constraints with it. Let's take a look. Here's a fully constrained sketch:

Hit the Make Block command...

You are prompted to select entities for the block.

You can window-select the entire thing, but notice the result. The highlighting shows that the dimensions and constraints are not selected. Even the listing of entities shows only the sketch entities. If you edit the block...

Note that I lost a couple of dimensions. Even worse:

I lost constraints, too. Now I have done some examples where I didn't lose anything, so this may be specific to curves generated by Offset Entities. Regardless, it is a risk I'm not willing to take. So in order to avoid the chance of losing something important, I think I will use blocks in the following way.

Create a new part, open up a sketch, and draw something simple. Anything. A line, a circle, doesn't matter. The purpose of this entity is purely to give me something to select in order to create a block. Then, create a block.

Now edit the block. Draw the geometry that you actually want. If you can use the sacrificial entity, by all means do so. Otherwise, blow it away. Once you are editing the block - as far as I know! - there shouldn't be any occasion to lose dimensions or constraints inadvertently. This is a little convoluted, but I'll take convoluted over broken any day.

Here's the sketch I would like to use:

Blocks don't seem to see the rest of the world, so you can't nail them down to anything in particular. That's why the sketch is blue, indicating not fully constrained. You can anchor something if that's a concern. Oops, sorry..."Fix". Anchor is the I-DEAS term, and even the SolidWorks icon, but it is called Fix. Totally my bad. I chose to anchor the insertion blue (blue dot in the middle), and constrained everything around that.

Next we need to save this block out to its own file.

I don't believe I have any further use for the part file, so I'll close it without saving.

Now that the block file exists, I can use it in other parts. So I'll fire up a new file, start a sketch, and then insert the block.

Browse for the appropriate file, and be sure to hit the toggle to Link to file.

The block can be placed wherever you want, and you can place as many as you want. From there, it's just a matter of extruding.

I'll save and close this part. I want to make a change to the block and watch it propagate. For some reason, the open file dialog box does not have a filter for the *.SLDBLK files, so you have to set for All Files and find it that way. Once it is open, you edit the block just like before.

Finish editing, save and close the file. Open up the target part, and see what we have.

Hmm. Didn't change, no apparent notifications of pending changes. Maybe it needs a rebuild.

Ah, there we go. And again, it's worth repeating that there is no assembly owning this relationship. One part file is directly related to another. I could make the cut-to-length part the same way, and the relationship would still work.

Speaking of relationships, let's take a look at what we can find. So far, this seems to be SolidWorks' Achilles' heel. Find References on the target part:

Well how 'bout dem apples? Hey SolidWorks people, it would be really nice to be able to open the other file from here somehow. Maybe double-clicking the line item, or hey since you guys don't seem to be afraid of extra buttons, add one for opening the file. So far so good, now let's find out what the block knows...

Ow, my ankle! Bummer.


Although the initial setup is a little awkward, I think this is my favorite method so far. At minimum, there are fewer entities involved. The source sketch is an extra item, but otherwise you only have the parts you want to make. With all of the assembly-involved methods, you basically have twice as many entities as you need.

But, just like all of these methods so far, the means of tracking down the relationship (that I'm currently aware of) are not so good. Updates can get missed, or worse, the relationship can be broken inadvertently.

No comments: