AnsweredAssumed Answered

Bottom-Up / Top-Down hybrid

Question asked by Richard K. on May 9, 2014
Latest reply on Jul 30, 2019 by R. Hawkins

Short question:


Can I insert multiple copies of a part, perhaps across several unrelated assemblies, but dimension them differently or use different "master" skeleton sketches to drive them?  Can all the different instances / assemblies share a single part file?


Long version:


I'm new to assemblies and looking for some advice on design methodology.  I'm trying to create a set of generic, reusable components that can be adjusted when placed in another part or assembly.


Here's how I'm picturing it should work in my head:


Let's say I design a "parametric" cabinet part where the width, height and depth are adjustable.  Accomplishing this seems straightforward; I can a) simply leave those three dimensions undefined in my sketch[es], b) mark them as "driven", or c) attach them to global variables.  The sketches are set up such that I can drag around the undefined entities (or play with the variables) and the part responds intelligently - i.e. as the overall cabinet width grows, the thickness of its sides remains constant.


Next I want to drop the part into an assembly (or another part), and do one or more of the following:


1) Dimension the sides of the cabinet as a whole

2) Set up mates to define its dimensions (e.g. mate the sides of the cabinet to two fixed, adjacent walls)

3) Define relations between the part and entities in a "skeleton sketch" in my assembly (i.e. "top-down" approach where a master sketch drives the placed part)

4) Fuse variables in the part to variables / equations in the assembly (a more mathematical top-down approach).


After any of these operations, the placed "instance" of the part becomes fully defined and should react accordingly.  e.g. In #2 above, the width of the cabinet would grow to meet the two walls.  (I dream of being able to define "handles" or external attachment points in the part, and expose them for this purpose; sort of a geometric kin to using global variables as parameters).


I'd like to place several of these cabinets, of varying sizes, perhaps across multiple unrelated assemblies.  The sizes are not known beforehand and they are infinitely variable, which rules out using configurations to define a set of standard sizes. (And in any case I'd rather leave that feature for genuine differences in configuration, e.g. butt vs. mitered joinery, and avoid needlessly ballooning the number of permutations).


I seem to be able to do at least some of #1-4 after placing the part in an assembly, but as soon as I change the size of one instance (e.g. by editing its sketch in the context of the assembly), it changes for all of them.  I haven't figured out how to get this to work without making several copies of the original part file, which gets ugly.


Later on I may want to tweak the internals of the part - say, fillet the edges - and I want the change to be reflected in all the assemblies that use it (without having to tweak a ton of different files).


I understand this entails a need to be careful how I "bind" part instances to other items.  e.g. Let's say in the assembly I defined a mate or relation between something (e.g. a wall) and the edge of the cabinet.  I believe it would now break down after my tweak, since that edge has been absorbed into the fillet.  To work around this, I'm considering putting a skeleton sketch in the part itself, and a corresponding skeleton sketch in the assembly.  The skeleton inside my part deals with the stuff the part designer wants to expose externally (i.e. entities which can be adjusted, exposed attachment points - essentially this sketch creates the "handles" I was dreaming about earlier) and the one in the assembly is the "puppetmaster" that actually drives a placed instance of the part.  (And when I say "sketch" I guess I'm really talking about a pair of sketches or more, to handle the X, Y and Z dimensions, unless I go down the 3D sketch path).


My questions are:

i. Does the general approach I've outlined make sense, and can it be accomplished?  Or is it unorthodox and should I do this differently?

ii. Can / should I do this through geometry (i.e. a & b above), or by somehow fusing global variables between files (c above).  Is the latter even possible? (e.g. maybe using Excel files as glue...)

iii. Is there a way to avoid creating a new part file for each instance, while still allowing those instances to differ in size?

iv. Do I need to read more about the "layout" or "block" features?

v. Are there best practices out there to help me avoid any other common pitfalls as the complexity of my assemblies grows?

vi. Do other popular modeling programs deal with this notably different from Solidworks?

vii. When I place a part, it seems everything is fair game for attachments, mates, etc.  Is there any way to suppress the internal sketches from being available for this?  (e.g. hide the part's internal sketches and just show its skeleton sketch?)

viii. When designing a part in the manner described by (a) or (b) above, Solidworks always tells me the sketch is under defined.  Is there a way to mark some dimensions as "parameters" (or "intentionally missing") to ignore them for this purpose and regain the useful indicator of whether my sketch is "defined enough"?  Right now I'm using placeholder dimensions which I change to Driven before saving the file.


It's worth nothing that while I've used overall size as the parameters in my example (width/height/depth), in practice the things I want to set up as parametric may not correspond to the "bounding box" of my part.  I also intend to propogate things like cut lists, sensors, etc. from my part into the parent assemblies.


Any help you can offer to point me in the right direction is much appreciated!