Community Tip - Did you get an answer that solved your problem? Please mark it as an Accepted Solution so others with the same problem can find the answer easily. X
Hello,
I have been wrestling with this problem for a while now. I am designing an assembly that uses multiple different plates of various materials and thicknesses, but there are many common features between the. I would like to be able to change these attributes on the fly or at assembly level, and I understand that is the point of Top-Down Design. I saw examples of using Skeleton Models, but when I tried that I could not constrain each part together to assemble them, the option simply wasn't there. I have also tried the parameter approach, where each part has the same list of parameters, and changing one in the parameters dialog affects the part. The only issue is, when I assemble each part and add the same list of parameters to the assembly file, changing the assembly parameters doesn't do anything. I then read that the parameters must be set at assembly level using a session ID, but when I tried this I would get errors stating that the part driven value can not be changed. Can anyone offer any insight or advice on the right way to go about this?
For example, each plate has a hole and some bolt holes, and once assembled I would like to be able to change those parameters at assembly level.
Thank you all,
Michael Gedies
Solved! Go to Solution.
Here's the technique I've adopted after trying a lot of different things. I start off with an assembly file that I call the "master". In that assembly, I start with a set of datum planes (X, Y, and Z, for example). Then, I build a sketches to define the overall design. I'll have sketches of the interfaces for the stuff I'm making, maybe environmental walls and floors, etc. The trick is to have lots of simple sketches, each covering one particular aspect of the design. Don't learn the horrible hard way like I did that complex sketches can become irreparably unstable.
I use the sketches to define the overall design geometry in the different views where it's important. I can modify them and check out how things fit together and where I can make simplifications, etc. It's an easy thing to do "what if" discussions with colleagues to see what can be improved.
Once I have all my design pretty well defined, I build all the components. I use the geometry defined by the sketches to make the features of the parts that will be used in the various design assemblies. The parts are created inside the master assembly, by the way.
The nice thing about this method is that:
(1) I can make changes to the sketches in the master and they are reflected in changes to the parts. I.e. change a thickness on a wall and the part wall thickness increases, too.
(2) I can define relations that govern the dimensions of the parts within the master assembly, so I can have global design parameters that apply to the parts throughout. For example "thicknessBase" could be set to 4mm at the start of the design but later be increased to 6mm in all the pertinent parts by changing the parameter once in the master assembly.
(3) I can set the drawing parameters (i.e. "Title", "Designer") that will fill out the tables on a drawing, all in the master assembly, so I don't have to open up every part and set them.
You'll have to use the Session IDs of the parts to set the parameters and such, but that's all taken care of by Creo, anyway, and I've not had any difficulty with it.
Using this method I've been able to streamline designs a lot, particularly when dealing with indecisive clients who change things back and forth repeatedly.
On smaller assemblies, I usually use the default cs to constrain all the parts. On larger ones, I'll put CS's where it makes sense to in the skeleton or any driving curves in the assembly itself. I tend to not use skeletons, but simply put all the driving curves, surfaces, etc., in the assembly itself.
The assembly parameters will NOT drive part parameters unless you put relations in at the assembly level, and then it will change the part parameters ONLY if both the part and assembly are in session, and will rewuire a regen (maybe 2) to change. I.E. PART1_PARAMETER1 = ASSY_PARAMETER1
Layouts created using Notebook functionality are capable of driving design from a top level data set in the .lay file. You can declare the layout to parts and then use the parameters and relations from the layout to drive multiple children. The layout will allow for the creation of global parameters that can then be passed to multiple children to control common design intent across models. Once the layout exists you can declare it to a model and then all design intent in the layout is available for use in the model(s) you declare it to.
PTC has not really added much to this tool since it was first offered and I think they intend to use Mathcad to replace the layout tool in Creo. It is very useful but the interface/setup has not evolved. You will need to import graphical data as DXF and then create the parameters and relations needed in the layout to control your part models as intended. You can at any time decide to undeclare the layout so that it is not driving a model if you need to.
As long as you can write equations that capture your design intent then the layout should work for you but it will require up front planning and development.
The enclosed picture is an example of a layout used to design and control the geometry of the individual components of a 2 stroke internal combustion engine. The input parameters are entered in the layout and relations are used to compute the correct values needed to create the geometry that will realize the desired parameters in the individual parts.
The trouble with notebook and advanced assembly is that we don't have those particular modules. Probably won't ever have them for that matter. We already get lots of complaints about the cost of the licenses we do have.
That's why I use assemblies to handle this type of functionality. It's not a specific tool designed for the job, like part skeletons and the like, but it's available in even the most rudimentary of installations.
Michael,
You may wish to look at the use of a Notebook to control the model parameters. The notebooks parameters function as "global" parameters for all the models associated (declared) to the notebook. You can also use a notebook to control/automate the assembly of components.
See https://support.ptc.com/help/archive/creo40/creo_pma/usascii/index.html#page/assembly%2Fasm%2Fasm_three_sub%2FAbout_Notebooks.html for additional information.
Regards,
Dan N.
I remember the whole notebook thing from....what, the late '90's? I think that also requires an advanced license beyond assy defined top-down models? Also, I've never used it and can't think of a single person who had. I think that technique might have died on the vine.
Here's the technique I've adopted after trying a lot of different things. I start off with an assembly file that I call the "master". In that assembly, I start with a set of datum planes (X, Y, and Z, for example). Then, I build a sketches to define the overall design. I'll have sketches of the interfaces for the stuff I'm making, maybe environmental walls and floors, etc. The trick is to have lots of simple sketches, each covering one particular aspect of the design. Don't learn the horrible hard way like I did that complex sketches can become irreparably unstable.
I use the sketches to define the overall design geometry in the different views where it's important. I can modify them and check out how things fit together and where I can make simplifications, etc. It's an easy thing to do "what if" discussions with colleagues to see what can be improved.
Once I have all my design pretty well defined, I build all the components. I use the geometry defined by the sketches to make the features of the parts that will be used in the various design assemblies. The parts are created inside the master assembly, by the way.
The nice thing about this method is that:
(1) I can make changes to the sketches in the master and they are reflected in changes to the parts. I.e. change a thickness on a wall and the part wall thickness increases, too.
(2) I can define relations that govern the dimensions of the parts within the master assembly, so I can have global design parameters that apply to the parts throughout. For example "thicknessBase" could be set to 4mm at the start of the design but later be increased to 6mm in all the pertinent parts by changing the parameter once in the master assembly.
(3) I can set the drawing parameters (i.e. "Title", "Designer") that will fill out the tables on a drawing, all in the master assembly, so I don't have to open up every part and set them.
You'll have to use the Session IDs of the parts to set the parameters and such, but that's all taken care of by Creo, anyway, and I've not had any difficulty with it.
Using this method I've been able to streamline designs a lot, particularly when dealing with indecisive clients who change things back and forth repeatedly.
Wow, this seems like the way to go. As far as I can tell, you are saying that you create individual sketches while the assembly is activated, possibly using make datums where needed, and then create parts using references to those sketches. If that is correct, then how does this method accommodate parts that move? When the part moves in relation to the base sketch, do the references stay intact? Or do you have to define them in such a way that they are at the part level and move with the part? Not sure if that makes sense but that's another issue I was running into.
The master assembly is basically a "factory" where I make the parts I need. The parts in this assembly will usually be a pile of overlapping and intersecting parts. I'm just using this assembly as the top level of the design that is driving the configuration of all the parts that I need. It's not a working assembly, I just use that particular file type because it lets me have multiple parts controlled in one place.
I then build the actual part assemblies, the ones that contain all the parts, in a standard assembly file. Mates, alignments, offsets and all that stuff, consisting of the parts that were built within the master assembly.
Ok, so I went ahead and started a new "Master" assembly. I created several simple sketches using the assembly datum planes as sketch references. With these sketches I have all the pertinent information to create all of my parts.
What I am wondering is, if I were you, what would you do next? Do I:
Create part > Empty > Extrude using sketch plane on assembly datums > project geometry from necessary Master sketches?
In the master I do Model -> Create and start with an empty part (or use one of your template parts as a start)
Then activate that part and start building features, like extrudes, revolves, etc. Use master datums as sketch planes, etc.
When you're done with the part you're working on, make the activate the assembly and go on to the next part.
Be careful when building parts, that you do not use any edges or such from the other parts. You always want to define everything using the master geometry. I usually hide parts as I go along to avoid this mistake.
Hi,
please see attached data_set.zip.
I added following relations into g5_100_100_000.asm
/* endplatesuply.prt ENDPLATE_THICKNESS:0=1 /* gasket_ports_supply.prt GASKET_THICKNESS:2=2 /* ptfe_ports_supply.prt INSL_THICKNESS:4=3 /* ptfe_fchnl_supply.prt GASKET_THICKNESS:6=4 /* gasket_fchnl_supply.prt GASKET_THICKNESS:8=5
Regenerated assembly is shown in following picture.
Command Show > Session ID enables you to get IDs of individual parts.
Thank you for your reply Martin. I see now how you are able to drive part parameters from assembly level using the relation command
/* XXXX.prt
That works well, but is it possible to call on several files before issuing their parameter? What I mean is that while this works well for changing plate thicknesses, what if I wanted to changed all of the plates widths or heights at the same time? Would it be something like:
/* endplatesuply.prt /* gasket_ports_supply.prt /* ptfe_ports_supply.prt /* ptfe_fchnl_supply.prt /* gasket_fchnl_supply.prt
PLATE_WIDTH=xx
I am worried that it is not possible without specifying the command over and over using the respective session ID's. Something like this:
/* endplatesuply.prt PLATE_WIDTH:0=xx /* gasket_ports_supply.prt PLATE_WIDTH:2=xx /* ptfe_ports_supply.prt PLATE_WIDTH:4=xx
/* ptfe_fchnl_supply.prt PLATE_WIDTH:6=xx
/* gasket_fchnl_supply.prt PLATE_WIDTH:8=xx
If this is true then I guess I could do this:
x=5.75
/* endplatesuply.prt PLATE_WIDTH:0=x /* gasket_ports_supply.prt PLATE_WIDTH:2=x /* ptfe_ports_supply.prt PLATE_WIDTH:4=x
/* ptfe_fchnl_supply.prt PLATE_WIDTH:6=x
/* gasket_fchnl_supply.prt PLATE_WIDTH:8=x
@mgedies wrote:
Thank you for your reply Martin. I see now how you are able to drive part parameters from assembly level using the relation command
/* XXXX.prtThat works well, but is it possible to call on several files before issuing their parameter? What I mean is that while this works well for changing plate thicknesses, what if I wanted to changed all of the plates widths or heights at the same time? Would it be something like:
/* endplatesuply.prt /* gasket_ports_supply.prt /* ptfe_ports_supply.prt /* ptfe_fchnl_supply.prt /* gasket_fchnl_supply.prt
PLATE_WIDTH=xxI am worried that it is not possible without specifying the command over and over using the respective session ID's. Something like this:
/* endplatesuply.prt PLATE_WIDTH:0=xx /* gasket_ports_supply.prt PLATE_WIDTH:2=xx /* ptfe_ports_supply.prt PLATE_WIDTH:4=xx
/* ptfe_fchnl_supply.prt PLATE_WIDTH:6=xx
/* gasket_fchnl_supply.prt PLATE_WIDTH:8=xxIf this is true then I guess I could do this:
x=5.75
/* endplatesuply.prt PLATE_WIDTH:0=x /* gasket_ports_supply.prt PLATE_WIDTH:2=x /* ptfe_ports_supply.prt PLATE_WIDTH:4=x
/* ptfe_fchnl_supply.prt PLATE_WIDTH:6=x
/* gasket_fchnl_supply.prt PLATE_WIDTH:8=x
Hi,
YES, you have to specify the command over and over using the respective session ID's in case that you want to drive component thickness using top assembly relations.