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.

Pro/Program help needed

otman73

New member
Hi all! New to the forum and need your help. I'm new to PROE but have been given the task of trying to automate the design. Read a lot on pro/program so I know the basics. I've been scratching my head on this one for couple of days already. I'll keep this short as possible.
I have sub assembly called "inboard_housing"
another sub assembly called "rotor"
Than I have a assembly called "seal" which consist of the two previous subassembly.

What I need to do is pass a parameter from the assembly to the subassembly.

This is just some of the parameter I need.
INPUT
MOUNT_TYPE NUMBER
"MOUNTING FASTENER TYPE (1=STUDS, 2=HEX_BOLT, 3=SOCKET_CAP)"
PURGE_NUM NUMBER
"NUMBER OF PURGE (2=TWO, 3=THREE, 4=FOUR)"
SHAFT_OD NUMBER
"Shaft dia?"
END INPUT

RELATIONS
END RELATIONS

EXECUTE PART INBOARD_HOUSING
MOUNT_TYPE = MOUNT_TYPE
PURGE_NUM = PURGE_NUM
SHAFT_OD = SHAFT_OD
END EXECUTE



I needed to pass those parameter to both subassembly. I'm not exactly sure what i need to put in the subassembly, part or Assembly. I can make it work if I put the parameter in the subassembly but when I regenerated at the assmebly it prompt me for inboard_housing parameter than it promt me for rotor asking for the same parameter for both subassembly. I just want it to prompt me once since they are the same parameter. Thank You for Your assistance.
 
The inputs must exist in all three subassemblies.

The execute statements will be in your top level assembly. (inboard_housing)

Also, if you are doing assemblies the execute statment should read "EXECUTE ASSEMBLY INBOARD_HOUSING"

Hope that helps. Let me know if you need more info.
 
Thank you for your reply. This is what I did

Inboard_housing.prt
INPUT
MOUNT_TYPE NUMBER
PURGE_NUM NUMBER
SHAFT_OD NUMBER
END INPUT

RELATIONS
INBOARD_ID = SHAFT_OD + 0.25
END RELATIONS

Inboard_housing_ass.asm (include Inboard_housing.prt and misc screws)
INPUT

MOUNT_TYPE NUMBER

PURGE_NUM NUMBER

SHAFT_OD NUMBER

END INPUT

seal.asm-TOP level assembly (include Inboard_housing.asm and rotor.asm)
INPUT
MOUNT_TYPE NUMBER
PURGE_NUM NUMBER
SHAFT_OD NUMBER
END INPUT

RELATIONS
END RELATIONS

EXECUTE PART INBOARD_HOUSING
MOUNT_TYPE = MOUNT_TYPE
PURGE_NUM = PURGE_NUM
SHAFT_OD = SHAFT_OD
END EXECUTE

I have the same thing setup for rotor.prt and rotor.asm

I am still being prompted three times (inboard_housing.prt , inboard_housing.asm and seal.asm)
I only want to be prompted once. What am I doing wrong?
 
If I understand your structure correctly:

Inboard_housing.prt
INPUT
MOUNT_TYPE NUMBER
PURGE_NUM NUMBER
SHAFT_OD NUMBER
END INPUT

RELATIONS
INBOARD_ID = SHAFT_OD + 0.25
END RELATIONS



Inboard_housing_ass.asm (include Inboard_housing.prt and misc screws)
INPUT
MOUNT_TYPE NUMBER
PURGE_NUM NUMBER
SHAFT_OD NUMBER
END INPUT

EXECUTE PART INBOARD_HOUSING
MOUNT_TYPE = MOUNT_TYPE
PURGE_NUM = PURGE_NUM
SHAFT_OD = SHAFT_OD
END EXECUTE

seal.asm-TOP level assembly (include Inboard_housing.asm and rotor.asm)
INPUT
MOUNT_TYPE NUMBER
PURGE_NUM NUMBER
SHAFT_OD NUMBER
END INPUT

RELATIONS
END RELATIONS

EXECUTE SUBASSEMBLY Inboard_housing_ass
MOUNT_TYPE = MOUNT_TYPE
PURGE_NUM = PURGE_NUM
SHAFT_OD = SHAFT_OD
END EXECUTE

Also, I would add the execute statements prior to the add part/assembly statements.
 
Thanks a lot spidernate. That work like a charm! I knew I was missing something silly. I always add the execute statement right after the relation, Is this the proper way?
 
That should be fine.

I usually put them right in front of the add part statement, for the convienience of being able to copy & paste the add statement and turning it into an execute.

You would likely run into problems if you put them after the "add part" statements.
 
Thanks for the info. I have another question if I may. Once I run the program and I have my model. I want to change one of the dimension and it tells me I cannot because is driven by a relation. Any way around this because we have our standard part and the request of "can you make it just a little bit bigger or smaller". I would like to have that part generated through the program with standard dimension but than have the option of changing some of those dimension if need be. Possible?

We should of stayed with Autocad since I've written all of these program already
smiley36.gif
 
Just off the top of my head:

You could add a parameter that controls the relation. Call the parameter "Standard" or whatever. Then write the relation like so:

IF STANDARD=="YES"
RELATION HERE
ENDIF

Then in your part, if the program calls the parameter w/ STANDARD as "NO", then there is no relation driving your dimension and is modifiable.

Also, you can add a condition in your program to determine if you are prompted for that dimensional input or not. (Example below.)

INPUT
IF STANDARD=="NO"
SHAFT_OD NUMBER
ENDIF
MOUNT_TYPE NUMBER
PURGE_NUM NUMBER
END INPUT

Make sense? Try it out and let me know if that worked.
 
Dam that was quick. Thanks again Spidernate. That does make sense. I was thinking along that line as well but it would be nice to have the program spit out the standard dim first so it can be tweak. We normally adjust the standard dimension slightly (1/16 to 1/8").
 
I'm trying to do something very similar to the above posts. I have a subassembly that I want to change a dimension in the top level assembly. It works fine in the subassembly, however it doesn't work every time in the top level assembly when i regenerate. It detects and error and is hard to explain when it doesn't work. When it doesn't work it sends you back to the get input screen with (current vals, enter, read file) once you then again select what you want it will work then. I can't figure out what I'm doing wrong, any suggestions???
 
It sounds like you are missing an execute statement somewhere... (Assembly or subassembly, etc.)

Go thru your program carefully, sometimes it helps to map it out or make a checklist.
 
This what I have:

Subassembly Program file:

INPUT
WHEELS YES_NO
"WHEELS EMPLACED?"
END INPUT

RELATIONS

IF WHEELS == YES
HANDLE=100
ELSE
HANDLE=0


ENDIF
END RELATIONS

Top level Assembly Program File:
INPUT
WHEELS YES_NO
"WHEELS EMPLACED?"
END INPUT

RELATIONS
END RELATIONS

EXECUTE SUBASSEMBLY WHEEL_ARM
WHEELS=WHEELS
END EXECUTE
 
I found the ERR message, it was trying to add a subassembly that I dont need. I ended up just deleting that statement that it was having a problem with and it works great now. thanks for the help!
 

Sponsor

Back
Top