Showing results for 
Search instead for 
Did you mean: 
Showing results for 
Search instead for 
Did you mean: 

Community Tip - Need to share some code when posting a question or reply? Make sure to use the "Insert code sample" menu option. Learn more! X

Default Assembly Feature Attributes


Default Assembly Feature Attributes

Is there a way to set up an assembly that will automatically create feature(component) attributes as I bring them into an assembly?


For example I want an attribute called "Reference_Model"  These models are used for reference only.  I can then use the attribute in a repeat region and can be easily filter out of BOM table or have their own BOM table.


I don't think so - but it would be a nice UI addition if component parameters could be added at the time of placement. 


You can maybe find a mapkey useful?  I have made one which adds a component parameter "FINDNUMBER" to the last placed component in an assembly.  I use FINDNUMBER to fix the index in repeat-regions and BOM balloons, etc...  Sounds like this mapkey could maybe be adapted to help your workflow.


Creo 4 mapkey code here:

mapkey _add_param_FINDNUMBER \
~ Activate `relation_dlg` `PBCreatePar`;\
~ Activate `relation_dlg` `PBProperties`;\
~ Select `parameter_properties` `Type_OptionMenu` 1 `string`;\
~ Update `parameter_properties` `Name_InputPanel` `FINDNUMBER`;\
~ FocusOut `parameter_properties` `Name_InputPanel`;\
~ Update `parameter_properties` `Value_InputPanel` `UNLABELLED`;\
~ FocusOut `parameter_properties` `Value_InputPanel`;\
~ Activate `parameter_properties` `DesignateChkBtn` 1;\
~ Update `parameter_properties` `Descr_InputPanel` `For BOM`;\
~ FocusOut `parameter_properties` `Descr_InputPanel`;\
~ Activate `parameter_properties` `Ok_StdButton`;


mapkey FF @MAPKEY_NAMEAdd FINDNUMBER parameter to last placed component;\
~ Command `ProCmdMmParams` ;\
~ Select `relation_dlg` `OMContext` 1 `component`;\
~ Command `ProCmdQueryModeNopreh` ;\
~ Command `ProCmdMdlTreeSearch` ;\
~ Select `selspecdlg0` `RuleTab` 1 `Misc`;\
~ Select `selspecdlg0` `RuleTypes` 1 `Last Feat`;\
~ Activate `selspecdlg0` `EvaluateBtn`;\
~ Activate `selspecdlg0` `ApplyBtn`;\
~ Activate `selspecdlg0` `CancelButton`;\
~ Activate `relation_dlg` `PB_OK`;


Usage: assemble a component, hit the green check-mark, then type "FF".



I thought about a mapkey, but didn't know exactly how to start the process.  I will take yours as a starting point and modify as needed.  However this is a band aide to my issue.  It would be nice to have these parameters built in to start parts.  I may have to request a new feature.


I will let you know if this helps once I have time to implement and test.

Parameters can be built into start parts; that's Creo-101 basics...  

I suppose I assumed that you looked into having a parameter in your start parts called "PART_TYPE" with default value "STANDARD_MODEL".  And establishing a convention that if one assigned it the value "REFERENCE_MODEL", then such part would be filtered out of your BOM tables.

Those would be part parameters.  I want component parameters in an assembly.  A standard part can be used as reference in a sub-assembly so the part parameters wouldn't work.

Yeah, I thought so.  I think you should submit a product enhancement idea.

Creo Parametric Ideas 


Do you have many customers that use component parameters? I haven't seen them used except for a handful of times and really never on a large scale, maybe due to the extra work to create them, hence your request and idea



If I was you, I would definitely work on the mapkey concepts. If you look at the product ideas, there are 1000's of good ideas and little progress on implementing them. Don't wait on PTC to solve the problem.


You can add a "Component" parameter at, say, a top level assembly that is comprised of several sub-assemblies and several separate parts.  This "Component" Parameter will ONLY show up at that top assembly level for the components (not parts) you've added them to, and not in the sub-assemblies or parts you've added the parameter too.  Think of it as like an assembly "cut", that only intersects assemblies/parts at the level that the cut is created at, not the individual parts.  I thought this was interesting, and the difference between "Components" and "Parts" at the assembly level had always been murky for me, so, this experiment cleared that up for me, and I was able to clarify things via the test I just did.


So, I don't know of a way offhand to automatically add that "Component" parameter to any or all components in an assembly, but I tried adding the column to the Model Tree, a trick I've used in the past to add parameters quickly to multiple assemblies/parts, but the only option for showing parameters like that are showing "Model Params" (i.e. "Part" parameters), there IS no "Component Params" option(!!!), so you can't even do that.  Adding it to the Model Tree like that would have been the second best thing to what you want, but you can't even do that.  The caveat to that is that you need to be careful in that using the Model Tree like that it IS easy to add the correct parameter name...but the wrong parameter TYPE (i.e. "Integer" instead of "Real Number" or "String".  Then it's kinda a pain to delete it.  Or so I've been told...  LOL


Now, I think THAT is a worthwhile enhancement request to PTC, I'd sign that one.


For now, it looks like you'll have to add it manually.  Bummer.


If nothing else, thanks, it prompted me to learn a couple new things!

To add component level parameters to the assembly model tree display, you have to manually type in their name under "Feature parameters"


It makes logical sense because a component placed in an assembly is an assembly "feature".




I am not looking for a parameter specific to a part/component.  I just want a generic parameter automatically created.  I can then modify it to what I want.  For example a parameter called BOM_No so I can manipulate the BOM how I want or one called Ref so I can note what parts are reference.


I currently have to put the parameter in the model tree and format it every time.  Then you have to make sure you get the right component.  It is very time consuming and can have errors.

There isn't one that will be automatically created.  PTC will never make this happen, there are many other more pressing improvements they need to make....and haven't.


You realize that you can (and very much SHOULD) do a "Fix Index" on the BOM at the dwg level, aither by "Region" or "Index"?  This makes sure that EXISTING items ("components") keep their item number so they always match the dwg notes referencing them.  Any NEW items (components added at assembly) need to be fixed.


There is no way to do what you want (and you're the only one who's ever asked in the 20+ years I've been here - see above for your chances of it happening), but the flexible parameter method I suggested is the closest solution, as then the value for the parameter can remain blank at it's base level, or any OTHER assembly in which it's assembled, and ONLY be filled in at the assembly at which it's inserted IF you choose to change it.  That's what the "Flexibility" does.  AND, if it's installed in a bunch of different upper-level assemblies, it can have a different value based on the assembly into which it's inserted.

Well, the advantage of component-level FINDNUMBER parameter being used to encode the component "index" and then displaying it in the repeat region is that you can use them in parametric notes, and also they will be the same across multiple simplified representations of the assembly.

Disadvantage is that you have to number everything...  Every single component, even its identical instances.

There is some integration with Windchill - see Windchill "Find Numbers" and "Line Numbers" or find number - for example.



Good case can be made that it is probably just easier to use a typical start-part parameter PART_NUMBER to make balloons and parametric notes instead of the RPT.index.


So anyway, @MYR_Industries, part level parameters might be the best way to go.  If a standard part is used in an assembly "for reference" and on that drawing it should not be reported on the BOM, then have a filter in the repeat region that excludes components which have the parameter "PART_TYPE" == "FOR_REFERENCE" and in that assembly, make  this part flexible and change that instance's parameter value from "STANDARD_MODEL" to "FOR_REFERENCE"...


I couldn't help but EMPHATICALLY deny that you "SHOULD" do a "Fix Index"... in the BOM ...!!!


THIS SHOULD BE AN ASSEMBLY parameter such as @MYR_Industries has suggested.

This also should be the "Out Of The Box" functionality.


All my assemblies have a "BOM" feature parameter that I can manipulate in the assy or drawing.

When I place a "simplified rep" of the assembly it will have the correct BOM sequence ALWAYS!!! no need for fix / unfix pointlessness!


Well, if you add it to your start models (assemblies, parts), you can then call it up as a column in your model tree, and easily and quickly enter the data you want there.  The caveat being that this data will carry along WITH the assemblies/parts into whatever OTHER upper-level assemblies they go into.  Not what you want.


BUT, I think there is a cure for that and would work the way you want.  When creating or modifying the start models, create the parameter but leave value blank (probably best), or "XXX" or something in the value for the start models themselves and at the start model level, make that parameter "Flexible", so that at EACH INDIVIDUAL upper assembly into which it's inserted Creo will prompt you if you want to use the flexibility or not, and if you do, at that point you can add the data you want, or you could leave it blank, and then you "should" be able to modify them all one after another.  Might be easiest to simply change the value every time you add an assembly or part to the upper-level assembly.


Try that and see if it works for you.

23-Emerald IV

The parameters are not needed at the part level, they are only needed at the component level.  Making each part flexible would add considerable overhead as well since each model would effectively have a hidden family table created behind the scenes.


Probably the better approach is to create a restricted value parameter definition file.  By predefining the parameter names and types (and any restrictions on the allowed values), creating them becomes much simpler.  Simply add the column for each component parameter to the model tree and then click wherever a new value is needed.  Since the type is already predefined, the value can be directly entered and no other selections are required.  See video below for an example of this.


Top Tags