1 Introduction
2 Previous work critical review
2.1 Syntactic pattern recognition
2.2 Rule based
2.3 Attributed adjacency graph based
2.4 Hint based
2.5 Artificial neural network
2.6 Hybrid AFR systems
3 Extracting geometrical and topological data from STEP files
3.1 Structure of a STEP (AP-203) file
3.1.1 Bound
3.1.2 Surface
3.2 Developing a parser for a STEP file
3.3 Algorithms to manipulate the STEP before moving on to feature recognition
3.3.1 Find convexity or concavity of a toroidal face
-
A toroidal face has four “ORIENTED_EDGE”, only two of which can inform whether it is concave or convex. This can be seen in Fig. 5a and b, which show concave and convex toroidal faces, respectively.
-
The proposed system starts with scanning the parser and reading all the “ORIENTED_EDGE” entities that form the toroidal face in order to check their Boolean flags. If the “ORIENTE_EDGE” line ends with the letter “.T.”, this is an indication that the start and end points of the curve are in their natural orientation. In contrast, the letter “.F.” refers that the start and the end points are in reversed positions.
-
The centre point information of the two related edges are extracted since it is also required in this algorithm.
-
The importance of knowing the right place of the curve’s start, end, and centre points relates to the fact that the direction of the rotation from the start to the end point is always counter clockwise. Figure 6a and b show the effect of swapping positions between the start and the end points when forming concave or convex shapes.
-
Finally, the algorithm takes into consideration the first direction of the two edges that form the concavity and convexity of the toroidal face. This is to distinguish between the inward-pointing and outer-pointing normal to the edge’s plane, since those of different edges in the same toroidal face might take different directions.
3.3.2 Merging symmetrical faces
3.3.3 Merging adjacent toroidal faces
3.3.4 Sorting faces
3.3.5 Split external features from internal features and holes
-
Step 1: finding the indicators of holesThe first algorithm receives the sorted faces node of the previous step and scans all the faces to find which share the same MaxZ value. If there are three or more faces that have the same MaxZ, they are grouped together to be analysed. In this example, one group of faces is found, which includes faces k, j, h, and l. Analysis of this group reveals the following: (1) there are three 3D faces, which are j, h, and l, and one plane face k, having the same MaxZ value; (2) faces k and l share the same “face outer bound”; (3) faces j and h share a “face outer bound” with a “face bound” of face k; and (4) based on face k, the three faces j, h, and l have the same direction. Such an analysis leads the system logically to select the cylindrical face j and the conical face h, flagging them as indicators of either holes or internal features.
-
Step 2: find and isolate related facesAfter flagging the indicators, each indicator is isolated and used for establishing an individual internal node of faces. The second algorithm examines the remaining faces to find which of them is connected to the indicator face. This is achieved by taking the edge data of the indicator face and scanning the edges of all the other faces. If a match is found, that face is evaluated as an internal face and moved to the same node of the indicator. The same action is repeated again by holding the edges of the new added face and matching them with the edges of the other faces. For example, the cylindrical face j, which is classified as a hole’s indicator, has only one combined edge with the plan face i. The face i is moved to join the indicator j in its node. Then, the action recurs, with this time, the matching being found between the “face bound” of the plane i and the “face outer bound” of the cylindrical face c. The scanning process is continued under specific matching conditions until all the related faces are found. In this example, the result of the second step is two nodes of internal faces (j, i, c, and b) and (h, g, and f ), which are virtually subtracted from the original whole shape.
-
Step 3: checking for other possibilitiesAfter the virtual subtracting of the previous internal nodes has been completed, the remaining shape appears as in Fig. 13. It takes a mere glance to distinguish that there is another hole in the shape, which requires being recognised and isolated in an individual node, exactly like the preceding two. This is started by repeating step 1 with one adjustment, whereby instead of scanning the faces based on their MaxZ value, the algorithm uses the faces’ MinZ. The faces that share the same MinZ are n, a, and d. Next, the system repeats the whole procedure of step 2, which results in a node of internal faces e and d. The final result of this example is as follows:
-
External faces node (k, l, m, n, and a);
-
Internal faces node (j, i, c, and b);
-
Internal faces node (h, g, and f );
-
Internal faces node (e and d).
-
4 Smart interactive automatic feature recognition (SI-AFR)
4.1 Recognition of predefined features
Feature name | Square groove with two round corners in the base | |
---|---|---|
No. of related faces | Five faces= Fn + Fn + 1 + Fn + 2 + Fn + 3 + Fn + 4 | |
No. of total faces | Seven faces= Fgb + Fn + Fn + 1 + Fn + 2 + Fn + 3 + Fn + 4 + Fga | |
Faces description | Fgb | Guide face before the feature |
Cylindrical, Conical, or Toroidal Surface. | ||
Fn | Plane surface | |
Has face outer bound and face bound. | ||
Fn + 1 | Toroidal surface | |
Concave | ||
Fn + 2 | Cylindrical surface | |
Fn + 3 | Toroidal surface | |
Concave | ||
Fn + 4 | Plane surface | |
Has face outer bound and face bound. | ||
Fga | Guide face after the feature | |
Cylindrical, Conical, or Toroidal Surface. | ||
Extracting data | Fn | Linear, start point, and end point. |
Fn + 1 | Circler, CW, toroidal centre, toroidal radius, start point, and end point. | |
Fn + 2 | Linear, start point, and end point. | |
Fn + 3 | Circler, CW, toroidal centre, toroidal radius, start point, and end point. | |
Fn + 4 | Linear, start point, and end point. | |
Max width | Fn (MaxZ) − Fn + 4 (MaxZ) | |
Max depth | (Fn (MaxX) or Fn + 4 (MaxX)) − Fn + 2 (MaxX) |
-
the loop is eliminated;
-
five faces (from Fn to Fn + 4) of the bundle are declared as a feature;
-
all the essential information is extracted from this feature’s entities;
-
the next loop is started.
4.2 Interactive feature recognition
4.2.1 Extracting the new feature information
-
The number of faces that form the feature;
-
The geometrical information of each face in the feature, such as the start and end point values of linear faces, as well as centre point and radius in the case of toroidal faces;
-
The topological information of each face in the feature based on the face type. This information can include the type of the surface, the number and the type of bounds, the concavity and convexity in the case of a toroidal face, and a taper direction (left or right);
-
The surface type of Fgb and Fga.
Feature name: | “As the user suggested” |
---|---|
Number of related faces | Three |
F1 | Type of surface: conical (left). |
F1sz = value. | |
F1sx = value. | |
F1ez = value. | |
F1ex = value. | |
F1s-to-F1e: linear. | |
F2 | Type of surface: toroidal (concave). |
F2sz = value. | |
F2sx = value. | |
F2ez = value. | |
F2ex = value. | |
F2cz = value. | |
F2cx = value. | |
Major radius. | |
Manor radius. | |
F2s-to-F2e: circler. | |
Direction: CW. | |
F3 | Type of surface: conical (right). |
F3sz = value. | |
F3sx = value. | |
F3ez = value. | |
F3ex = value. | |
F3s-to-F3e: linear. | |
Fgb and Fga | Type of surface: “As they appear in the design”. |
4.2.2 Processing the new feature information
-
F1sz >F2sz;
-
F1sx >F2sx;
-
F2sz >F3sz;
-
F2sx = F3sx;
-
F3sz >F3ez;
-
F3sx <F3ex;
4.2.3 Saving the new feature information
5 Case study
5.1 Case study 1
External shape | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Feature No. | Feature name | Face No. | Xsp | Zsp | Xep | Zep | Start-to-end | Xcc | CR | Dir. | W | D |
1 | Facing | 1 | 17 | 100 | 36 | 100 | Linear | 0 | 19 | |||
2 | Left convex corner | 1 | 36 | 100 | 40 | 96 | Circler | 36 | 4 | CCW | 4 | 4 |
3 | Cylindrical | 1 | 40 | 96 | 40 | 88 | Linear | 8 | 0 | |||
4 | Radial square groove | 1 | 40 | 88 | 27.5 | 88 | Linear | 10 | 12.5 | |||
2 | 27.5 | 88 | 27.5 | 78 | Linear | |||||||
3 | 27.5 | 78 | 40 | 78 | Linear | |||||||
5 | Cylindrical | 1 | 40 | 78 | 40 | 64 | Linear | 14 | 0 | |||
6 | Right taper | 1 | 40 | 64 | 43 | 58 | Linear | 6 | 3 | |||
7 | Facing | 1 | 43 | 58 | 80 | 58 | Linear | 0 | 37 | |||
8 | Cylindrical | 1 | 80 | 58 | 80 | 54 | Linear | 4 | 0 | |||
9 | Convex | 1 | 80 | 54 | 80 | 39 | Circler | 80 | 7.5 | CCW | 15 | 7.5 |
10 | Cylindrical | 1 | 80 | 39 | 80 | 35 | Linear | 4 | 0 | |||
11 | Radial groove two rounded corners | 1 | 80 | 35 | 45 | 35 | Linear | 15 | 40 | |||
2 | 45 | 35 | 40 | 30 | Circler | 45 | 5 | CW | ||||
3 | 40 | 30 | 40 | 25 | Linear | |||||||
4 | 40 | 25 | 45 | 20 | Circler | 45 | 5 | CW | ||||
5 | 45 | 20 | 80 | 20 | Linear | |||||||
12 | Cylindrical | 1 | 80 | 20 | 80 | 15.5 | Linear | 4.5 | 0 | |||
13 | Two sides tapered groove | 1 | 80 | 15.5 | 75 | 12 | Linear | 11 | 5 | |||
2 | 75 | 12 | 75 | 8 | Linear | |||||||
3 | 75 | 8 | 80 | 4.5 | Linear | |||||||
14 | Cylindrical | 1 | 80 | 4.5 | 80 | 0 | Linear | 4.5 | 0 | |||
15 | Facing | 1 | 80 | 0 | 12 | 0 | Linear | 0 | 68 |
Internal shapes | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Feature No. | Feature name | Face No. | Xc | Yc | Zcs | RZcs | Zce | RZce | Start-to-end | Xcc | CR | Direction |
Through internal shape | ||||||||||||
1 | Right axial groove | 1 | 0 | 0 | 100 | 17 | 88 | 17 | Linear | |||
2 | 0 | 0 | 88 | 17 | 88 | 12 | Linear | |||||
2 | Cylindrical | 1 | 0 | 0 | 88 | 12 | 15.5 | 12 | Linear | |||
3 | Two sides tapered groove | 1 | 0 | 0 | 15.5 | 12 | 12 | 17 | Linear | |||
2 | 0 | 0 | 12 | 17 | 8 | 17 | Linear | |||||
3 | 0 | 0 | 8 | 17 | 4.5 | 12 | Linear | |||||
4 | Cylindrical | 1 | 0 | 0 | 4.5 | 12 | 0 | 12 | Linear | |||
Front internal shape | ||||||||||||
1 | Right axial groove | 1 | 0 | 60 | 58 | 12 | 51 | 12 | Linear | |||
2 | 0 | 60 | 51 | 12 | 51 | 6 | Linear | |||||
2 | Right axial groove | 1 | 0 | 60 | 51 | 6 | 46 | 6 | Linear | |||
2 | 0 | 60 | 46 | 6 | 46 | 0 | Linear | |||||
Back internal shape | ||||||||||||
1 | Left axial groove | 1 | 0 | − 40 | 10 | 5 | 10 | 0 | Linear | |||
2 | 0 | − 40 | 10 | 5 | 5 | 5 | Linear | |||||
2 | Left axial groove | 1 | 0 | − 40 | 5 | 10 | 5 | 5 | Linear | |||
2 | 0 | − 40 | 5 | 10 | 0 | 10 | Linear |