|
Creating a Rectangular Fill Pattern for Regular Hexagonal Cutouts
(continued)
Using Fill Pattern to Create Hexagonal Cutouts with Flats Along the Vertical
1. Pick a sketch plane.
2. Go to Insert, Model Datum, Sketch or use the Sketch Tool icon.
3. Sketch the rectangle as shown in Figure 1, then click the check icon.

Figure 1. Sketched rectangle.
4. Right-click on the sketched rectangle and click Edit. Right-click on the width dimension. Click Properties, Dimension Text and enter width01 for Name. Rename the height dimension to height01.
5. Go to Info, Switch Dimensions to verify as in Figure 2.

Figure 2. Sketched rectangle named dimensions.
6. Pick the sketch plane used for the sketched rectangle and click on the Extrude tool. Sketch the regular hexagonal section with the flats along the vertical on the lower left portion of the rectangle as in Figure 3.
Note: You can go Sketch, Data from File and use a previously created section. This section should have the lines constrained to equal lengths. The sketch can be saved for reuse. In Wildfire 3.0, the Sketcher Palette provides a hexagon.

Figure 3. Sketched hexagon with flats along the vertical.
7. Finish the cut by picking on the Extrude to intersect with all surface icon and Remove Material icon. Change the depth direction if necessary, then click on the check mark.
8. Select the extruded cut, right-click and pick Edit. Rename the dimensions as shown in Figure 4.

Figure 4. Renamed dimensions for regular hexagonal cutout.
9. Select Tools, Relations and add the following relations:
Nw01=floor((((width01-2*clearance01)-waf01)*2/(waf01+webthk01))+1)
Nh01=floor(((height01-2*clearance01-waf01/sin(60))/sin(60))/(waf01+webthk01)+1)
width01a=waf01+(Nw01-1)*(waf01+webthk01)/2
height01a=waf01/sin(60)+((Nh01-1)*(waf01+webthk01))*sin(60)
if Nh01==1 & (ceil(Nw01/2)-Nw01/2)==0
width01a=waf01+(Nw01-2)*(waf01+webthk01)/2
endif
Ov01=(width01-width01a)/2+waf01/2
Oh01=(height01-height01a)/2+(waf01/(2*sin(60)))
10. Click OK. Select Edit, Regenerate or CTRL+G. This will correctly locate the lead pattern member observing the minimum clearance requirement from the edges of the sketched rectangle.
11. Select the extruded cut, right-click and select Pattern.
12. Choose Fill, pick the sketched rectangle, and select the Triangle grid template. For spacing , enter waf01+webthk01. Click Yes when prompted to add as a feature relation. For the minimum distance of the pattern members’ center to the sketched border , enter the smaller value between Oh01 and Ov01 and subtract 0.01. You can later add a feature relation to avoid manually hiding pattern members or having less than the number of pattern members.
For the rotation of the grid template , accept the default value of 0. Click on the check button. The desired output will be as in Figure 5. Note that the pattern members are centered on the sketched rectangle.

Figure 5. Fill pattern of hexagonal vents with flats along vertical.
13. Select Tools, Relations and add the following:
if Ov01>Oh01
ptncl01=Oh01-0.01
else
ptncl01=Ov01-0.01
endif
14. Select the Pattern feature, right-click and choose Edit Definition. Enter ptncl01 for the minimum distance of the pattern members’ center to the sketched border . Click Yes when prompted to add as a feature relation. Click the check icon.
15. Now verify that this will be parametric. Figure 6 shows some variations.
 |
height01=25
width01=56
waf01=4
webthk01=1.5
clearance01=1
|
|
 |
height01=30
width01=40
waf01=3
webthk01=1
clearance01=1
|
|
 |
height01=30
width01=40
waf01=4
webthk01=1.5
clearance01=1
|
|
Figure 6. Variations of the fill pattern.
Note: Although the user interface and steps in Wildfire 2.0 discussed here are different from pre-Wildfire versions of Pro/ENGINEER, pre-Wildfire versions have the Pattern By Relations functionality. There are equivalent clicks in pre-Wildfire versions that are not discussed in this tip. For assistance, please contact the author.
Using Pattern Relations to Create Hexagonal Cutouts with Flats Along the Vertical
1. Pick a sketch plane.
2. Go to Insert, Model Datum, Sketch or use the Sketch Tool icon.
3. Sketch the rectangle as shown in Figure 1, then click the check icon.

Figure 1. Sketched rectangle.
4. Right-click on the sketched rectangle and click Edit. Right-click on the width dimension. Click Properties, Dimension Text and enter width01 for Name. Rename the height dimension to height01.
5. Go to Info, Switch Dimensions to verify as in Figure 2.

Figure 2. Sketched rectangle named dimensions.
6. Pick the sketch plane used for the sketched rectangle and click on the Extrude tool. Sketch the regular hexagonal section with the flats along the horizontal on the lower left portion of the rectangle as in Figure 3.
Note: You can also go to Sketch, Data from File and use a previously created section. This section should have the lines constrained to equal lengths. The sketch can be saved for reuse. In Wildfire 3.0, the Sketcher Palette provides a hexagon.

Figure 3. Sketched hexagon with flats along the vertical.
7. Finish the cut by picking on the Extrude to intersect with all surface icon and Remove Material icon. Change the depth direction if necessary, then click on the check mark.
8. Select the extruded cut, right-click and pick Edit. Using clicks similar to Step 4, rename the dimensions as shown in Figure 4.

Figure 4. Renamed dimensions for regular hexagonal cutout.
The dimension names are as follows:
· waf## = width across flats
· Ov## = pattern member center offset from the vertical
· Oh## = pattern member center offset from the horizontal
9. Select Tools, Relations and add the following relations:
Nh01=floor(((height01-2*clearance01-waf01/sin(60))/sin(60))/(waf01+webthk01)+1)
width01a=waf01+(Nw01-1)*(waf01+webthk01)/2
height01a=waf01/sin(60)+((Nh01-1)*(waf01+webthk01))*sin(60)
if Nh01==1 & (ceil(Nw01/2)-Nw01/2)==0
width01a=waf01+(Nw01-2)*(waf01+webthk01)/2
endif
Ov01=(width01-width01a)/2+waf01/2
Oh01=(height01-height01a)/2+(waf01/(2*sin(60)))
ph01=(waf01+webthk01)*sin(60)
pv01=(waf01+webthk01)/2
total01=ceil(Nw01/2)*ceil(Nh01/2)+floor(Nw01/2)*floor(Nh01/2)
initf01=ceil(Nw01/2)
inits01=Nw01
ntuple01=Nw01
10. Select the extruded cut, right-click and select Pattern.
11. Click the Dimensions button. For the first direction, choose the dimension named Oh01. Tick on the check box Define increment by relation. Click Edit and add the following relations:
f01hi=ceil((idx1-initf01)/ntuple01)
f01lo=(idx1-initf01)/ntuple01
n01hi=ceil((idx1-inits01)/ntuple01)
n01lo=(idx1-inits01)/ntuple01
if (f01hi-f01lo)==0 | (n01hi-n01lo)==0
memb_i=ph01
else
memb_i=0
endif
if Nw01==1
memb_i=2*ph01
endif
12. With the Dimensions dialog box still open, click and hold the CTRL button and pick the dimension named Ov01. Verify that this is added to the Direction 1. Tick the check box Define increment by relation. Click Edit and add the following relations:
f01hi=ceil((idx1-initf01)/ntuple01)
f01lo=(idx1-initf01)/ntuple01
n01hi=ceil((idx1-inits01)/ntuple01)
n01lo=(idx1-inits01)/ntuple01
odd01hi=ceil(Nw01/2)
odd01lo=Nw01/2
if odd01hi-odd01lo==0
t01=0
else
t01=1
endif
memb_i=2*pv01
if ((f01hi-f01lo)==0 )
memb_i=(3-2*initf01)*pv01
else
if ((n01hi-n01lo)==0)
memb_i=(3-2*initf01-2*(1-t01))*pv01
endif
endif
if Nw01==1
memb_i=0
endif
if Nw01==2
memb_i=(-1)^(idx1+1)*pv01
endif
13. Accept the default number of pattern members in the first direction (i.e., 2), then click the check icon.
14. Select the Pattern feature, right-click and choose Edit. Go Info, Switch Dimensions and note the number of extrudes, p##.
15. Go Tools, Relations and add the following part relations:
p##=total01
where ## is taken from the previous step.
16. Select Edit, Regenerate or CTRL+G. Verify the hexagonal pattern as shown in Figure 5 by selecting the Pattern feature and right-clicking on Edit Definition.

Figure 5. Pattern of hexagonal vents with flats along the vertical.
17. Option: Go to Tool, Relations and add the following:
far01 = total01*1.5*waf01^2*tan(30)/(height01a*width01a)
18. Now verify if this will be parametric. Figure 6 shows some variations.
 |
height01=30
width01=40
waf01=3
webthk01=1
clearance01=1
|
|
 |
height01=20
width01=60
waf01=4
webthk01=1.5
clearance01=0
|
|
 |
height01=32
width01=46
waf01=4
webthk01=1.5
clearance01=4
|
|
Figure 6. Variations of the fill pattern.
Explanation of Relations
Allow me to explain first the relations common to both techniques. These are the relations that center the pattern within the sketched rectangle boundary. To do this, you need to know the number of rows and the number of columns of the pattern members. The number of rows depends on the available height, while the number of columns depends on the available width. This suggests you need to relate the number of rows, Nh, and the number of columns, Nw, to the height and width.
Let’s consider hexagonal cutouts with flats along the horizontal. From Figure 1 with both, it can be verified that:
height = waf + (waf+webthk)/2
width = waf/sin(60) + (waf+webthk)*sin(60)

Figure 1. Diagram with Nw=2, Nh=2
From Figure 2, with Nw=3 and Nh=3, it can be observed that:
height = waf + 2*(waf+webthk)/2
width = waf/sin(60) + 2*(waf+webthk)*sin(60)

Figure 2. Diagram with Nw=3, Nh=3
By induction, we have:
height = waf + (Nh-1)*(waf+webthk)/2
width = waf/sin(60) + (Nw-1)*(waf+webthk)*sin(60)
Solving for Nw, Nh:
Nw=((width-waf01/sin(60))/sin(60))/(waf+webthk)+1
Nh=((height-waf01)*2/(waf01+webthk01))+1
Considering the minimum clearance throughout the sketched rectangle border and that Nw, Nh have to be integer values, the relations are refined to:
Nw=floor(((width-2*clearance01-waf/sin(60))/sin(60))/(waf01+webthk01)+1)
Nh=floor((((height-2*clearance01)-waf)*2/(waf01+webthk01))+1)
The solved Nw, Nh values are plugged into the height and width relations to calculate the distance from the outermost edges of the pattern member. This is necessary to calculate the proper offsets of the lead pattern member center from the edges of the sketched rectangle.
width##a=waf/sin(60)+((Nw-1)*(waf+webthk))*sin(60)
height##a=waf+(Nh-1)*(waf+webthk)/2
Ov=(width-width##a)/2+waf/(2*sin(60))
Oh=(height-height##a)/2+waf/2
The exception to this case is when Nw is 1 and Nh is even. The height should only consider the pattern members in one column so the topmost row is disregarded as in Figure 3.
if Nw==1 & (ceil(Nh/2)-Nh/2)==0
height##a=waf+(Nh-2)*(waf+webthk)/2
endif

Figure 3. Exceptional case for height
Since the Fill Pattern functionality by template has a defined distance from the center of the pattern member center to the boundary of the sketch as an input, this is then taken to be the lower value between Oh and Ov. The 0.01 subtracted from the lower value is the correction for rounding off values.
if Ov01>Oh01
ptncl01=Oh01-0.01
else
ptncl01=Ov01-0.01
endif
In the case of Pattern by Relations, you first need to know the total number of pattern members. Figure 4 shows how this is derived by mathematical induction.
|
Nw
|
Nh
|
Image
|
total
|
Remarks
|
|
2
|
2
|

|
2
|
=[1*1+1*1]
|
|
3
|
2
|

|
3
|
=[2*1+1*1]
|
|
2
|
3
|

|
3
|
=[1*2+1*1]
|
|
3
|
3
|

|
5
|
=[2*2+1*1]
|
|
4
|
3
|

|
6
|
=[2*2+1*2]
|
|
3
|
4
|

|
6
|
=[2*2+2*1]
|
|
4
|
4
|

|
8
|
=[2*2+2*2]
|
|
5
|
4
|

|
10
|
=[3*2+2*2]
|
|
5
|
5
|

|
13
|
=[3*3+2*2]
|
|
.
.
.
|
.
.
.
|
.
.
.
|
|
|
|
Nw
|
Nh
|
.
|
=ceil(Nw/2)*ceil(Nh/2)+
floor(Nw/2)*floor(Nh/2)
|
|
Figure 4. Derivation of total pattern members.
Referring to Figure 1 for the increment relations, the Oh dimension increment, when not transitioning from one row to the next, is:
ph=(waf+webthk)/2
The Ov increment is zero when going from column to column, but when transitioning from one row to the next is:
pv=(waf+webthk)*sin(60)
So what needs to be determined are the idx1 values for which the pattern member moves from one row to the next. Note the idx1 values for Nw=5, Nh=5 (Figure 5) and for Nw=4, Nh=4 (Figure 6) for which the pattern member transitions from one row to the next. Also note the pattern member increment for the Ov dimension as the pattern member transitions to the next row. Figure 8 generalizes this to derive the necessary relations for memb_i.

Figure 5. idx1 values for Nw=5; Nh=5

Figure 6. idx1 values for Nw=4; Nh=4
|
Nw
|
memb_i (as a factor of ph)
|
idx1 values when transitioning from one row to the next
|
|
1
|
0
|
all
|
|
|
2
|
+1 when the idx1 value is odd
|
all
|
|
|
|
-1 when the idx1 value is even
|
|
ntuple
|
|
3
|
-1
|
2,3,5,6,8…
|
3
|
|
4
|
-1; idx1=2,6,10,…
|
2,4,6,8,10,…
|
4
|
|
|
-3; idx1=4,8,12…
|
|
|
|
5
|
-3
|
3,5,8,13,…
|
5
|
|
6
|
-3; idx1=3,9,15,…
|
3,6,9,12,15,…
|
6
|
|
|
-5; idx1=6,12,18…
|
|
|
|
7
|
-5
|
4,7,11,14,…
|
7
|
|
8
|
-3; idx1=3,9,15,…
|
4,8,12,16,…
|
8
|
|
|
-5; idx1=6,12,18…
|
|
|
|
.
.
.
|
.
.
.
|
.
.
.
|
.
.
.
|
|
Nw - odd
|
3-2*initf
|
initf,inits,initf+1*ntuple,
inits+1*ntuple,…
initf=ceil(Nw/2)
inits=Nw
|
ntuple=Nw
|
|
Nw -even
|
3-2*initf; idx1=initf, initf+k*Nw where k=1,2,3…
|
|
|
|
|
1-2*initf; idx1=inits, inits+j*Nw where j=1,2,3…
|
|
|
Figure 7. Derivation of relations for memb_i for Ov.
From the generalization of relations in Figure 7, the lines below comprise the relations to capture both the idx1 values when the pattern member moves to the next row and the corresponding increment for Ov.
f01hi=ceil((idx1-initf01)/ntuple01)
f01lo=(idx1-initf01)/ntuple01
n01hi=ceil((idx1-inits01)/ntuple01)
n01lo=(idx1-inits01)/ntuple01
odd01hi=ceil(Nw01/2)
odd01lo=Nw01/2
if odd01hi-odd01lo==0
t01=0
else
t01=1
endif
memb_i=2*pv01
if ((f01hi-f01lo)==0 )
memb_i=(3-2*initf01)*pv01
else
if ((n01hi-n01lo)==0)
memb_i=(3-2*initf01-2*(1-t01))*pv01
endif
endif
The lines below are for the exceptions to the general case.
if Nw01==1
memb_i=0
endif
if Nw01==2
memb_i=(-1)^(idx1+1)*pv01
endif
For pattern members with flats along the vertical, the relations for ph and pv are swapped or:
ph=(waf+webthk)*sin(60)
pv=(waf+webthk)/2
The exception for the centering offset value is for Nh=1 instead of Nw=1 with the checking for even or odd is for Nw instead of Nh.
if Nh==1 & (ceil(Nw/2)-Nw/2)==0
widtha=waf+(Nw-2)*(waf+webthk)/2
endif
The rest of the relations for the pattern dimensions remain the same. 
Ceferino Sanchez is a lead engineer, thermal engineer and Pro/ENGINEER administrator at ASTEC Power, a division of Emerson Network Power in Quezon City, Philippines. He can be reached by email at ceferinosanchez@astec-power.com.
|