If you’re designing an exhaust pipe or other formed tube product, you generally must create your Pro/ENGINEER model in its final state, ready for assembly. Wouldn’t it be nice though if you could easily generate the original straight tube stock from the bent model?
This tip uses family tables, relations and user-defined parameters to create a straight tube instance from a formed tube. Because a tube stretches as it is bent, the relation equations use a stretch factor for determining the actual length needed. Using the steps outlined in this tip, holes in the tube also can be correctly positioned on the straight tube based upon their intended locations on the bent tube.
The generic model for this application is created from straight datum curves set at specific angles to each other. For each bend that is not coplanar with the previous bend, you must create a pair of datum planes, one normal to the existing straight curve and the other for sketching the new curve. A pipe feature with a constant radius is created through the endpoints of the datum curves to form the bent tube. Holes can be placed anywhere along the tube as long as their references stay relevant as the tube becomes straight. Holes between bends are dimensioned from one of the ends of the datum curve defining that portion of the tube.
User-defined parameters are created to represent the segment lengths, the internal bend angles, and the hole placement dimensions. A Yes/No parameter (BENT) is set in the family table and is used through a conditional statement in the relations table to control the lengths and angles for the bent and straight instances. Its value either sets the dimensions to their bent values for the bent instance or makes length adjustments and sets the internal bend angles to 180 degrees for the straight instance.
In order to make this all work properly, we have to make a couple of assumptions:
1. The bend radius remains the same throughout the formed tube. It is possible to use different radii but my application uses a common radius for each tube. Different bend radii would require multiple RAD parameters and likely different bend stretch factors (BSF parameters) because tube stretch can vary with the size of the bend radius.
2. Tube stretch is a linear function of bend angle.
The stretch factor is determined empirically. Straight tubes are measured prior to bending and measured again with CMM equipment after forming. The difference between the centerline length of the bent tube and the length of the straight pre-bent tube is the amount the tube stretched. Divide that amount by the sum of the bend angles to get the bend stretch factor in millimeters per degree.
It can be useful to blank the pipe’s centerline by putting the pipe feature on a layer and blanking that layer. The solid will continue to display but the centerline will disappear.
In the following diagram, you will see how we arrive at the length adjustment for the stretch formula.

(Click diagram to enlarge)
I have included the relations file that I use to create my bent and straight tube instances. You can copy this file and then edit the appropriate values for your application.
/* START OF RELATIONS FILE
/* The dimensions must be renamed prior to installing this relations file
/* - bend angle dimensions should be named D_BENDn
/* and linear dimensions should be named D_SEGn and D_CUTn
/* where n represents a number.
/* ANGn defined to simplify adjustment calculations:
/* Delete unused ANG’s or add additional ANG's as needed.
ANG1=(180-BEND1)/2
ANG2=(180-BEND2)/2
ANG3=(180-BEND3)/2
ANG4=(180-BEND4)/2
ANG5=(180-BEND5)/2
/* Adjustments to lengths per bend:
/* Delete unused BD's or add additional BD's as needed.
BD1=ANG1*RAD*PI/180-RAD*TAN(ANG1)-BSF*ANG1
BD2=ANG2*RAD*PI/180-RAD*TAN(ANG2)-BSF*ANG2
BD3=ANG3*RAD*PI/180-RAD*TAN(ANG3)-BSF*ANG3
BD4=ANG4*RAD*PI/180-RAD*TAN(ANG4)-BSF*ANG4
BD5=ANG5*RAD*PI/180-RAD*TAN(ANG5)-BSF*ANG5
/*************************************************/
/* Delete unused D_SEG, D_CUT and D_BEND lines. */
/*************************************************/
IF BENT == YES
/* Segment lengths:
D_SEG1=SEG1
D_SEG2=SEG2
D_SEG3=SEG3
D_SEG4=SEG4
D_SEG5=SEG5
D_SEG6=SEG6
/* Cut dimensions to TSC:
D_CUT1=CUT1
D_CUT2=CUT2
D_CUT3=CUT3
D_CUT4=CUT4
/* Bend angles:
D_BEND1=BEND1
D_BEND2=BEND2
D_BEND3=BEND3
D_BEND4=BEND4
D_BEND5=BEND5
ELSE
/* Segment lengths adjusted for stretch:
D_SEG1=SEG1+BD1
D_SEG2=SEG2+BD1+BD2
D_SEG3=SEG3+BD2+BD3
D_SEG4=SEG4+BD3+BD4
D_SEG5=SEG5+BD4+BD5
/* Last segment should reference only one bend.
D_SEG6=SEG6+BD5
/* Cut dimensions to TSC:
/* Check for reference to the appropriate bend
/* and replace 'n' with correct bend number.
D_CUT1=CUT1+BDn
D_CUT2=CUT2+BDn
D_CUT3=CUT3+BDn
D_CUT4=CUT4+BDn
/* Bend angles:
D_BEND1=180
D_BEND2=180
D_BEND3=180
D_BEND4=180
D_BEND5=180
ENDIF
/* END OF RELATIONS FILE
1. Create the following parameters: BENT (Yes/No), RAD (common bend radius), BSF (bend stretch factor), CUT1 through CUTn (cut dimensions), SEG1 through SEGn (straight segment lengths), and BEND1 through BENDn (inside bend angles). These parameters can also be preset in a tube “startpart”. Enter the values for the tube being designed.
2. Create a bent tube model using datum curves with bend dimensions referencing inside angles and straight segment lengths between ends and Theoretical Sharp Corners (TSCs). The Pipe feature will be created through the endpoints of the curves. Holes between bends should be dimensioned to one of the TSCs. Use the RAD parameter when defining the Pipe feature’s bend radius.
a. In this example, the first two straight segments are sketched on the FRONT datum plane (see figure 1).

Figure 1.
b. The second bend is not coplanar with the first bend so the third straight segment must be sketched on a datum plane (DTM1 in this example) set at an angle to the previous sketch plane (see figure 2).

Figure 2.
c. For sketching references, select the previous curve and its endpoint (see figure 3). Dimension it with the appropriate length and angle. See figure 4 for the completed three curve segments.

Figure 3.

Figure 4.
d. Create a Pipe feature with constant radii through the endpoints of the curves (see figure 5). When prompted for the bend radius, type RAD.

Figure 5.
e. IF there are cuts in the tube, create them now, dimensioning them to segment endpoints.
3. Rename the varying dims (Modify|DimCosmetics|Symbol): D_SEG1 through D_SEGn for the segment lengths, D_CUT1 through D_CUTn for the cut dimensions, and D_BEND1 through D_BENDn for the internal bend angles. The pipe feature has been suppressed for clarity (see figure 6).

Figure 6.
4. Test the tube construction by changing the internal bend angles to 180° to ensure it forms a straight tube and the cuts don’t fail.
5. Open an Edit Relations window and paste the contents of Tube_Bending_Relations_File.txt
6. Edit the relations:
a. Delete unused (or add more) ANGn, BDn, CUTn, SEGn, and BENDn statements.
b. Check that the bend angle reference in the cut dimension adjustment statements refers to the correct bend (ex: D_CUT1=CUT1+BD1).
c. Edit the last SEG statement in the ELSE section to include only one BDn variable.
7. Close the editor and check the text message area for an indication of an error. Re-edit the file if necessary. Pro/E will add a comment line explaining the error found in the file.
8. Create a Family Table with two instances: PARTNO_BENT & PARTNO_STRAIGHT (see figure 7).

Figure 7.
a. Add the BENT parameter and set its value to NO for the straight instance and to YES for the bent instance. It should be set to YES in the generic.
b. Add any other parameters unique to either the bent or straight instances.
c. Verify the instances by selecting the Verify icon and clicking on the VERIFY button.
Now you're all done! 
Dan Moran is a designer at Lang-MEKRA in Ridgeway, SC and he can be reached via email at dmoran_mechengr@yahoo.com.
|