Community Tip - Did you get called away in the middle of writing a post? Don't worry you can find your unfinished post later in the Drafts section of your profile page. X
Hi there,
is there a way to enable assembly layers with the option "include submodels" and actually get a result for the assembled components?
I mean, the "Preview Results" window shows results, but when hiding this rule based layer (associative, rules enabled, independent) nothing happens. The message reads "Rules cannot be evaluated for submodels of a Layer model."
We have been working with default layers instead of rules until now. However, we've started experiencing problems in assemblies with wrongly set layer options in assembled sub models, since these are "released" in our pdm system and cannot be changed without further ado.
So, I would like to set the layers by rules in an assembly discounting the submodels.
I found the ppt "Take time to obey the rules" here and started experimenting with rule driven layers. But the problem remains: When enabling "include submodels" all I get is "Rules cannot be evaluated for submodels of a Layer model."
I have to "expand" them, but then each model has to be changed, which is exactly what I am trying to avoid.
Any suggestions?
TIA
Andreas
Not sure, but maybe using the config.pro option: save_display_status_in_submodel set to NO would allow you to override and save the display status of sub-components in the top-level assembly.
Thanks for your input. I gave it a try, but unfortunately it doesn't work. When "propagating the status" without "save status in submodels" (btw there is a checkbox for that in the layer settings), the rule driven layers still get written into the submodels totally ignorant of whether they are set to show or hide.
Wow this is stupid: Even if I change the setting within the submodel, nothing changes in the assembly. The stuff has to be expanded, otherwise no use.
What I've done is suppress all the models in the assembly, then you can insert that in a temp assy, and propagate the rules to that assembly, then exit out of that temp assy, and save the lower assy, then resume the parts..
Thanks for the tip, I tried it as you suggested (hope so).
The temp assy already had the rule based layers, so this is what I did:
- suppressed the components
- inserted the assy in the temp assy
- "extended rules"
- saved the assy, erased the temp,
- resumed components.
This is a way to copy the rule based layers to another assembly, but hiding those created assy layers has no impact on the visiblity of the features of components since there is no submodel information to hide or show in these layers.
How do you actually "propagate" if not by "extending"? Am I missing something?
I think if it's really not possible to manage the visiblity of features within an assembly without changing released sub components, this is a major defect in the software based on pre-pdm-philosophy.
Extending the rules is the only way I know. I haven't found a way yet to simply "copy" the rules.
Did I answer the question?
Hi Andreas,
I see how you get the message "Rules cannot be evaluated for submodels of a Layer model". I think I can see what you are trying to do, but I don't think you can collect items from sub-components onto an assembly layer...
If what you are trying to do is hide some datums/features from released (hence "read-only") sub-components, then change the config option "save_display_status_in_submodel" to NO; then, hide the sub-component items of interest (in the top assembly context); then save the top assembly layer status...
The system will save the display status of the sub-components with the top assembly, leaving the sub-component's status intact...
With CTRL+F, you can use the same search tool that you were trying to use from within the layer ui to "collect" the items.
FYI, Another way to copy rule-based layers between parts/assemblies:
1) Select the layers in the "template part/assembly" - CTRL+C to copy them
2) Open the target part/assembly - CTRL+V to paste them. Rules will be transferred.
Sorry, you lost me in your second paragraph. The problem is, that there are no sub model items to hide in the top assembly context since the layers are empty unless I extend them and thus change the sub models.
The copy & paste is a nice tip, thanks for that. I wouldn't have expected that this might work in this context.
Yeah, I am only talking about "Hiding" the items directly. This places the items on the system-driven "Hidden Items" layer.
Follow this procedure to "hide" all datum planes in the top-level assembly and all its sub-components:
1. Set the option "save_display_status_in_submodel" to NO with the File->Options->Configuration Editor
2. Open the top-level sub-assembly.
3. Press CTRL+F
4. Look for "Datum Plane", by "Datum Plane" such that Name = "*"; Check "Include submodels"; Click "Find Now" and transfer the items found to the items selected list (use CTRL+A to select all the items).
5. Close the search tool; the selected datums are highlighted; Right click on the empty space in the graphics area and select "Hide"
6. Save the layer status, and save the top-level assembly.
What will happen is that the items you selected will end up on a bunch of "Hidden Items" layers and this status will be saved with the top level assembly and it will not be saved in the sub-components layer status.
What can go wrong:
If you already have some datum planes that are "hidden" (that is, they are on the "Hidden Items" layer), then it will not be possible to hide "all datum planes selected" as per procedure above because Creo will not allow the "Hide"(or "Unhide") operation on a selection that contains both hidden and shown items.
This is one of the work-arounds:
Insert these steps after step 2. above:
2b Select the "Hidden Items" layer group.
2c Right-click and "Select Items"
2d Right-click on an empty area in the layer tree and "Remove Item"; say yes to the warning prompt.
and go on to step 3.
Do I understand that you want to control the visibility of component level items at the assembly level? In other words, add datum planes, points, curves, etc. from a component to an assy layer and hide them inside that assy without adding them to a layer in the component (part or assy). This is not possible, that's not how layers work. You can only add items native to that assy to an assy layer. To control items at the component level, they must be on a component level layer.
Yes, that is exactly what I'd like to do.
On the one hand I understand it when you say it's not possible, for I have come to the same conclusion so far and I guess it might be a performance issue as well, if the components don't report their layers and features to the assembly but the assembly has to regather it everytime.
On the other hand, I ask myself
Do you think a product idea regarding this would be of use, or is ptc's reaction most likely to be: "Yeah, well, no, sorry no way."
I was sure there was a product idea on this already but I couldn't find it. I hate to say it but layer control has always been this way. You can not control the visibility of sub-models layers without changing the sub-model.
I believe a product idea is your only option.
What is exactly the reason you want to control your sub-model layers from within a top level assembly? I can think of a few, but not too many. Maybe there is another solution to your specific problem.