I am modifying a current assembly to update its parts automatically when a certain dimension is changed. In this case, my model is a table. I set a relation to lock the length and want to change the thickness (user input/driving dimension) and have creo calculate the width (driven dimension) all while keeping a constant weight. I have achieved all of this except for keeping a constant weight. The weight will not stay the same because the legs change length based on the thickness of the table and the length of the rails under the table (there are 4 rails under the table which are for positioning the legs. My main question is how do I keep a constant weight while only changing the thickness of the table and how do I set my model to keep a constant weight? I have been lead to believe that to achieve this I would need to set a relation in the leg which would subtract (total table weight-table top-all four rails/4). This gives the weight of each individual leg and would change the length based on the other dimensions. The code that I have been trying to use is the mp_mass relation but it keeps giving me very strange errors. For example, the relation I would think to use for this is:
Weight=MP_MASS("TABLE_TOP.ASM : TABLE_ASSEMBLY.PRT")-MP_MASS("TABLE_TOP.ASM : TABLE_TOP.PRT")-MP_MASS("TABLE_TOP.ASM : SIDE_RAIL.PRT")-MP_MASS("TABLE_TOP.ASM : SIDE_RAIL.PRT")-MP_MASS("TABLE_TOP.ASM : FRONT_RAIL.PRT")-MP_MASS("TABLE_TOP.ASM : BACK_RAIL.PRT")
Creo gives me errors when I use this, it says that it is an invalid argument. I'm not sure what other code I am supposed to use nor do I know how else to solve for the weight of each individual leg in a relation. I could very well be using MP_MASS wrong. Can someone please try to explain to me how to keep a constant weight while changing the length of the legs, possibly set my model to have constant weight, and how to use MP_MASS correctly?
Note: We are assuming that WEIGHT=MASS here even though are actually different.
Thank you very much.
You might not need to do so much work. You know what the total weight limit is and, I presume, the length and thickness and density of the table top. MP_MASS("") at the assembly level is the total weight.
width = width - ((target weight - mp_mass("") )/ (Length*thickness*density))
This might require 2 regenerations to satisfy the relation and not change the value of width.
I see that after WF2 there is another parameter, PRO_MP_MASS, that would be used with the session ID to get the mass value. They also have pro_mp_density, which should also accept a session ID.
I did not see any example with any part or assembly name in the quotes of the older mp_mass("") version.
Thank you very much for your response. Would your relation regarding width be able to be used in the LEG.prt level to calculate the length of the leg? Because ultimately, I'm trying to change the height of the legs by subtracting the weight of the table top, side rails, and front and back rails to justify what the weight of the legs have to be to keep a constant weight of the whole entire table. I have a working relation which does calculate the width of the table top, but the side rails underneath, and the legs, throw off the weight plus or minus two pounds.
How many variables are there and what is the relation between them?
There is the height, width, depth, and weight of the leg. I'm trying to use these variables to calculate the leg's weight which will change the height of the leg whenever the width of the table top changes to keep a constant weight.
I was expecting the following:
Inputs:
Output
Since the table top thickness and table top height are known, the leg length is calculated directly and is not driven from the total weight. The weight of the leg is recorded in the PRO_MP_MASS parameter in the leg part.
I will guess that the Table top height parameter is in the Table assembly. The leg relation will be
leg_length = table_top_height:assy_session_ID - table_top_thickness:table_top_thickness_session_ID.
Look at MCAD Central at the last response to find the session ID.
Okay, I see what you are saying. I used top-down modeling for the table so the table top height never changes, it's the thickness, width, and leg length (eventually) that changes. I have a relation that drives the width of the table top where creo calculates it but the weight is determined by the density that I have set. I was thinking the mass relation subtracting the ((total_table_weight - table_top - rails)/4) would work because it includes the rails which would result in a mass for each leg. The side rails are a big factor in the weight changing. I'll definitely give your relation a try and see if it works but do you think that subtracting the weights in a relation would work to establish a leg length? I would use the weight that the equation comes up with and find the leg length from it.
I also might try a more simplified version of this too. I think I might try and suppress all the parts and just leave the table top and one leg not suppressed. I believe this would be a simpler approach and would hopefully result in the table changing thickness and width, along with the leg changing length to keep a constant weight. I'll also give your relation a try with this method and see how it works.