Skip to main content
1-Visitor
July 5, 2019
Question

Replacing components in assembly by using layout (notebook)

  • July 5, 2019
  • 3 replies
  • 4226 views

There is an assembly with 2 components. 1st component is default constraint placed. Assembly and both the components are declared to the common notebook file. Three planes in both the parts are also declared to the notebook file. 2nd component is placed in the assembly automatically through notebook global declaration of those three planes.

When I replace 1st component, 2nd component fails. But after that, if I just "Edit Definition" the 2nd component and select "Automatic", it no longer fails.
Can I somehow avoid this unnecessary failure of 2nd component placement?

Please see attached zip file which contains dummy creo assembly and some instructions to feel my problem.

3 replies

17-Peridot
July 5, 2019

There are so many ways to get to the result you are looking for.

 

I typically try to avoid Layouts/Notebooks for this type of situation - mainly because Layouts/Notebooks create baggage later-on.  Instead, you might want to look at an Interchange Assembly for more easily mapping the references.... or even Component Interfaces (would be best in the end I think)

 

The attached is an example using an Interchange Assembly to facilitate the interfaces.  If I had a high number of items that I wanted to dynamically place, I would consider a skeleton and CSYS instead - to keep things more robust and less dependent on specific planes being defined in every model.

 

You are right to look at Pro/PROGRAM to replace the component using a variable - that is a very good way to plan for new components as options.  Here is the View in Nitro-PROGRAM of the variable definition for the first component placement:

pro-program.png

 

The Variable reference in the Pro/PROGRAM does give you a lot of flexibility for dynamic placement of components, but assumes some common references be defined for them to properly be placed and regenerated.  Kudos for this approach!

 

pro-program-workflow.png

Attached is an updated version of your model using an Interchange assembly to reliably constrain the assembled component - based on your variable placement using Pro/PROGRAM.  I removed the Layout/Notebook declarations.

 

Hope this helps.

 

Dave

1-Visitor
July 8, 2019

Hi, I am not able to retrieve your models. It is because of difference in Creo version. If possible, can you please supply the models so that they open in Creo 3.0?

Thanks in advance.

Regards,

Jaykishan

tbraxton
22-Sapphire II
22-Sapphire II
July 5, 2019

Dummy_child_2.prt is dependent on Dummy_child_1.prt for placement. That is the root of the problem you are describing. If you want to avoid this dependency you need to insure that Dummy_child_2.prt can be placed without referencing Dummy_child_1.prt.

 

One method would be to use relations in the layout to calculate the linear transform needed to offset a csys from the default csys in the assembly. So you would use the layout to calculate the orientation and position of a csys offset from the assembly def csys to locate Dummy_child_2.prt. This approach could be used to drive a skeleton model with all of the csys required to assemble as many parts as you need and can also enable automatic assembly of the part through the layout.

 

If you prefer to use the 3 planes you could put a placeholder part (devoid of solid geom) in the assembly containing the planes P1-P3 in your layout and auto assemble Dummy_child_2.prt to the placeholder which would not ever be deleted from the assembly. You could then place all Dummy_child_N.prt relative to this placeholder.

 

While either would work it may not be the most straightforward way to solve your real problem. Without a full understanding of the design intent or utility needed in the assembly it is difficult to suggest the "best" method to deal with it.

 

I will mention that am a proponent of using layouts and have seen them put to good use on some very complex designs to great effect. Having said that, like all tools they have advantages and limitations which need to be considered when employing them. Just remember than you can undeclare the layout at any time and thus eliminate it being a parent to an object.

12-Amethyst
January 31, 2020
Spoiler
You can solve this using Interfaces. If you define the correct interface on all three parts, it will work without needing the notebook for this and without using interface assemblies. Make sure the interface names are equal, the references are correct (mate, align). You can also narrow down the placement options by selecting the correct interface type (placing, receiving or both).
Last but not least, don't forget to add the config.pro option "replace_unrelated_automatic yes".
This works really wel.

I use notebook mostly to deploy common knowledge rules to various parts, I switched to the interface definitions for placement because they don't create dependencies. I don't use interface assemblies. They introduce a lot of unwanted dependencies and in order to interchange components, Creo requires to bring the complete interchange assembly into session. 

I attached an example based on your models, using the interfaces. The files are created in Creo 6.0. If that's a problem, I can send you the example in creo 3.0 format.


17-Peridot
January 31, 2020

Nice solution!  I admittedly need to learn more about this and the implications of it relative to automation.  Sounds like it opens a few doors.  All about the structure and dataflow. 🙂


Dave