Continue to Site

Welcome to MCAD Central

Join our MCAD Central community forums, the largest resource for MCAD (Mechanical Computer-Aided Design) professionals, including files, forums, jobs, articles, calendar, and more.

Relations in Assembly


New member
Hi everyone:

My scenario:

I have a top assembly composed of parts and subassemblies.

I want to drive a dimension of a subassembly by a dimension of the top one.

I setup a relation in the top assembly d2:3=d4:5


d2 is a dimension of a subassembly part

3 is a session ID as it is displayed by

Switch Dimensions

d4 is a dimension of a top assembly part

5 is a session ID as it is displayed by

Switch Dimensions

The relation works fine but for this model only.

When I retrieve an instance of the top assembly relation does not work properly.

ProTABLE shows that ProE has updated session ID's of parts of the top assembly instance only. Those of subassembly istance are same as they have been setup.

I appreciate any help


New member
your qurrey is not very clear

if u have a subassembly and a assembly when u replace a model the session id will be up dated in the assembly but the session id in the sub assembly will not change since teh parts are same

so there may be a clash of session ids between the main assembly part and sub assembly part

so in these cases u can create dimensional relation by giving reference from one part to other so that the problem can be overcome.

give relation in between sketches of the part by sketch reference

any qurries mail me
I guess you have family table for top assembly.

Do you have family tabled sub-assembly and/or family tabled top assemlby part?

If so, session ID's are different from instance to instance.

Please provide more detail.


New member
Thanks guys for your answers. I will give some more details.

I have family tabled top assembly containing family tabled parts and family tabled sub-assembly. I want to set up a dimensional relation between part of the top assembly and part of an sub-assembly.

I set up the relation in the top assembly.



d2--dimension of a sub-assembly part

d4--dimension of the top assembly part

3--session ID of the sub-assembly part

5--session ID of the top assembly part

When I retrieve an instance of the top assembly with another sub-assembly instance ProE updates session ID's of top assembly istance only.



Session ID 15 corresponds to an instance of part of the top assembly

Session ID 3 remains same, although I have another instance in the sub-assembly with session ID 13

I hope this will clarify my query.


Have you tried using internal component IDs?

This is taken from a PTC tip:

...You can write assembly relations using internal component IDs (cid). Every component in an assembly has a unique component ID, even if two components have the same component name (and same Session ID). To determine the component ID of a component in the assembly:

Select Info > Component > Select a component

Click Apply to see the component ID

In an assembly, the Model Tree displays the FeatID (feature ID) of each assembly component. Remember that in assemblies, component ID = feature ID because components are features of an assembly.

Using your example:


- where cid_4 & cid_8 refer to the generic components

If one of the generic components is replaced with one of its instances, the relation will properly be updated to reflect this change and the total_length will equal the summation of the lengths of the generic component and the instance component.

Note: The proper syntax is:

d#:cid_(component ID #)


New member
Is it possible to use an if within an if ? And how do i realize this:

d1 must be between 1200 and 1500 ? i tried this but it wasn't accepted: 1200<d1<1500.

thx for help



New member
Hi guys:

I have tried to use component ID's following Proed's idea but it did not work. I guess component ID's can be used within an assembly only.

Using my example:

d2:cid_4=d4:cid_8 -- was not accepted by ProE


d2:cid_4 is a dimension of a generic part with component ID=4, assembled in a generic sub-assembly

d4:cid_8 is a dimension of a generic part with component ID=8, assembled in the generic top assembly

What could you advise me!!


New member

You can use comparison statements in relations. You want



You can also use an if statement. For and\or, use &\| (ampersand symbol\pipe symbol) like this:

if (d1>=1200 & d1<=1500)

/* Do something here.


or this:

if (d1>=1200 | d1<=1500)

/* Do something here.


Some other relations options are discussed in the following PTC Tech Support document.


Articles From 3DCAD World