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.

Modifying Family Tables with Pro/PROGRAM

polakse

New member
I have a cylindrical part with about 30 family table instances. Each instance has the same, generic diameter, but the length of each instance is controlled by the family table.

The relationship between family table instances is simple... If the generic cylinder length is, say, 10cm, then the first family table instance would have a length of 11 (10*1.1); the second family table instance would have a length of 12 (10*1.2); the third family table instance would have a length of 13 (10*1.3); and so on...

I am creating an assembly of these 30 part instances, and I am using Pro/PROGRAM to drive the dimensioning. Using Pro/PROGRAM, I can modify the assembly-level spacing and arrangement of each part, and I can even modify the generic feature dimensions of the family-table part. However, where I am having a problem is using Pro/PROGRAM to modify the individual lengths of each part instance. The relationship between family table instances (generic_length*1.1, 1.2, 1.3...) is not changing, but the generic length will change through the program.

So, is there any way to modify a part's family-table values through Pro/Program? Or, is it possible to specify family table values using a relation? Or, is there another solution?

Any help is GREATLY appreciated. Thanks!
 
One option may be to make the part flexible, rather than use Pro/Program.


Edit -> Setup -> Flexibility


Choose the dimension you want to change. This will enable you to set different lengths even in the same assembly.
 
Family tables support relations.


Flexible parts can pose problems in drawing generation as it is not supported in Wildfire 2.0


Israr
 
I would do it with a few parameters and part relations, not Pro/Program although that would probably work too.

Create a parameter INDEX and another INCREMENT. Add INDEX parameter and LENGTH dimension to your family table. Fill in the INDEX parameter in the family table (1 through 30)

Create relation:

LENGTH=10+(INDEX*INCREMENT)

Pro/E will calculate and fill in the LENGTH values in the family table.
 
Yes I think that the best method is what dr_gallup suggested, but here is one more to add:


First add length to your family table
Second in assembly you must write relation for every instances length; select feature with length from your first assembled instance, edit that feature to show you dimensions, go to relations in assembly, select your dimension for length and write relation using dimension for diameter from that same instance. You should have something like this:
d0:2=d1:2*1.1 (where d0:2 is dimension for length, d1:2 is dimension for diameter).
Note: when you add dimensions from parts, instances in assembly they have component id (like in example above where 2 is component id).


Important note: do not add relation for length within your generic part, because then it wont work.
 
First of all, thanks for all your quick replies!

Using the method suggested by dr_gallup, I was able to solve the problem I described in my original post/question.

However, the scope of the problem has changed a little bit in the past couple hours...
smiley5.gif


Now, what I want to do is have 30 input variables/parameters come down into the part from the assembly/subassembly level. Instead of controlling the lengths of each family table instance at the part level, with a simple relation, I want to set the length of each family table instance based on the length of the corresponding input variable/parameter. For example, family table instance 1 will have a length that is equal to the parameter LENGTH_1; family table instance 2 will have a length that is equal to the parameter LENGTH_2; and so on...

I thought maybe I could create a parameter called LENGTH_INDEX (string), and for each instance in the family table, set the value of LENGTH_INDEX to the name of the length parameter for that instance (ie. LENGTH_1, LENGTH_2,...). Then, add a relation like LENGTH = (LENGTH_INDEX), but that does not appear to evaluate - apparently Pro/E won't recognize the value of LENGTH_INDEX as being a parameter. Any suggestions?

Also, does anyone know of a good reference for Pro/PROGRAM? Something like a syntax reference, with a list of all available functions/data-structures/expressions/etc? I have the "Automating Design..." book from OnWard press. It's a simple/into into the functionality of Pro/PROGRAM, but it's not a very thorough code-reference for the language of Pro/PROGRAM.

Once again, thank you all for your help. This is my first time visiting this forum, but I will definitely be hanging out here more in the future! (Hopefully, along the way, I'll be able to answer some questions too
smiley1.gif
)
 
I think I may have found a solution to my new problem...

I created a parameter LENGTH_INDEX, and assigned values to each instance in the family table (ie. 1, 2, 3,...). In the INPUT section of my Pro/PROGRAM, there are individual length variables that come down from an assembly: LENGTH_1, LENGTH_2, LENGTH_3,... Then, I just define an If...Else block in the RELATIONS section to do the following:

IF ROW_INDEX==1
LENGTH = LENGTH_1
ELSE
IF ROW_INDEX==2
LENGTH = LENGTH_2
ELSE
IF ROW_INDEX==3
LENGTH = LENGTH_3
ENDIF
ENDIF
ENDIF

Seems to work like a charm! Let me know if you have any other/better solutions. Thanks.
 
As for reference to Pro/Program I don't know if there is any good books, I used help (Help > Help Center > Global Search) for list of functions. Although there isn't much for Pro/Program anywhere (It seams to me that they didn't change a little bit from when first came out), this few functions you have are everything and with them you must do all other work.


BTW good practice is to use Layout for input parameters, main relations etc.
 

Sponsor

Back
Top