A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the...

25
A C++ Library for the Automatic Interpretation of Geometrical and Dimensional Tolerances Remy Dionne, Luc Baron, Ph.D. and Christian Mascle, Ph.D. Department of Mechanical Engineering École Polytechnique de Montréal C.P. 6079, succ. CV, Montreal, Quebec, Canada Communicating author: Remy Dionne Email: [email protected] Telephone: (514) 940-2949 ext. 5158 Fax: (514) 940-1399 1

Transcript of A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the...

Page 1: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

A C++ Library for the Automatic Interpretation of Geometrical and Dimensional Tolerances Remy Dionne, Luc Baron, Ph.D. and Christian Mascle, Ph.D. Department of Mechanical Engineering

École Polytechnique de Montréal

C.P. 6079, succ. CV, Montreal, Quebec, Canada Communicating author:

Remy Dionne

Email: [email protected]

Telephone: (514) 940-2949 ext. 5158

Fax: (514) 940-1399

1

Page 2: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

Abstract The first step of a geometrical and dimensional tolerance analysis is to determine kinematic loops that affect the functional requirements, and the tolerances that influence the relative positioning between two topological elements of a part. This process is called the interpretation of geometric and dimensional tolerances. The second step is a solution procedure to verify if the functional requirements will be met with the current tolerances. This paper presents the first step of the tolerance analysis process which is the implementation of a C++ library for the interpretation of geometric and dimensional tolerances. First, the data structures that allow storing the tolerances, the toleranced part data model and the assembly graph model are introduced. This is followed by the description of the algorithms used to retrieve the relevant kinematic loops from the assembly graph and the list of tolerances that affect the relative positioning between any two topological elements. Finally, an example demonstrates how to use the interpretation data to verify the functional requirements.

Key words

Geometrical and dimensional tolerances; analysis; interpretation; ASME Y14.5M; kinematic loops; assembly

1. Introduction CAD software has contributed considerably in reducing the development time and cost of products over the past thirty years. From a master model of the product, it is now possible to perform many different kinds of analyses such as stress, kinematics, ergonomic, simulation of assembly and so on. However, in all these analyses, parts are assumed at nominal dimensions and of perfect geometry. In reality, manufacturing imprecision introduce uncertainties in the dimension and geometry of each individual part. Therefore, tolerances must be applied in order to specify the domain of validity of the parts. Obviously, there is a high cost associated to allowing tight tolerances due to the high precision requirements. Conversely, if the tolerances are too slack, it may not be possible to satisfy the functional requirements, and it may not be possible to assemble the product with those imprecise parts. In tolerance analysis, the control function is the measurement of the resulting dimension and tolerance accumulation between two features of an assembly. Tolerance analysis is a way to reach an optimum cost to quality ratio by validating the functional requirements of a product against a control function, and modifying the tolerances if necessary. When tolerances are modified, the analyst must verify that the control function remains within the functional requirements. Tolerance analysis can be divided into two phases: the interpretation of the tolerances and the resolution of the control function. This article presents the implementation of a tolerance interpretation library whose purpose is to capture the significance of geometric and dimensional tolerances and make it easily interpretable. The output of the interpretation library can be adapted to work with different resolution methods (1D, 2D or 3D). The slider bolted on rail assembly is presented and the results of the tolerance interpretation are demonstrated with a 1D resolution method.

2

Page 3: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

2. State of the Art Traditionally, with 1D tolerance charting approaches, the analyst has to study the assembly and the parts, identify the kinematic chains implied in the control function, determine the worst case assembly configurations, interpret the significance of the dimensions and tolerances and then solve the problem. This process is prone to error and it is time consuming. Several tolerance analysis tools were developed in order to automate this process. Schlatter [1] describes how an early version of the VSA-3D software was used for the tolerance analysis of an IBM disk drive. In this approach, toleranced parameters define the size dimensions of the models and special measurements represent the control functions. Running the tolerance analysis tool generates a population of instances of the assembly with each one having slightly different parameter values. The control function is obtained by performing a statistical analysis with the values obtained. 3DCS is another commercial application. One of the differences with the previous approach is that an abstract model is built from the master CAD geometry in which the features of the master model are represented by basic geometries such as points, lines, planes, circles, etc. The geometric dimensioning and tolerancing (GD&T) annotations are also considered and define constraints between elements of the abstract model. The older version of the CETol Six Sigma software was based on a vector loop approach [2]. It generally involves constructing an assembly graph from which vector loops are extracted and analyzed. This application was developed through the ADCATS program and based on the work of Dr. Chase [3, 4]. The control function is resolved with a matrix-based direct linearization method. This shows that many different techniques were commercialized and they all have their pros and cons. The various applications prove useful in identifying the sources of variation in assemblies. A general drawback that is pointed out is that the support of the ASME Y14.5 standard is partial [5]. Some dimensional and geometric tolerance types, bonus tolerances, datum precedence and complex datum reference frames are not all properly handled. Another comment is that it is not clear what algorithms are used and what underlying assumptions are made. In the literature, assembly graphs are used to model the relative movement between the parts and to detect the vector loops between the control functions. The nodes of the graph represent the parts and the edges represent the connections between the parts. Desrochers used the assembly graph to for the purpose of tolerance synthesis [6]. Based on graph theory, a set of loops are defined to serve as a basis to represent any other loop. This basis set of loop allowed defining Technologically and Topologically Related Surfaces (TTRS) and then the tolerance specifications. Later works by Desrochers, Laperrière and Ghie are aimed

3

Page 4: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

at the synthesis and analysis of tolerances in 3D. Assembly graphs are still used but the loops are assumed to be known, specifying that they can be obtained from the graph. A variation twist and jacobian approach is used for tolerance synthesis and also for the analysis in determining the contribution of the tolerances on the control function. It is not clear how this method for tolerance analysis applies to assemblies with multiple closed loops since the example assemblies contain only one. Chase also used assembly graph for the tolerance analysis of 2D and 3D assemblies [4]. A number of closed loops are identified on the assembly graph and also open loops where there is a control function. A set of equations is formulated from the loops and allow solving for the control function. In this case, some insight is required in order to obtain the appropriate vector loops [2]. Wang [7] proposes to generate the vector loops by testing each dimension individually and verifying their individual effect on the control function. If a change in the dimension also changes the control function, then this dimension is part of a vector loop. One drawback of this approach is that the calculation time increases in function with the number of control functions and the number of dimensions in the assembly. This method is designed to work with toleranced vectors. It is not specified how geometric tolerances are taken into account. There have been attempts to automate the 1D tolerance chart process. Ngoi [8] introduced the noded graph model in which the nodes of the graph represent the edges and axes of the part and the edges represent the dimensional and geometric tolerances. This model aided in visualizing the loops for tolerance transfer calculations within a part. Special assembly links could be defined between the mating faces of parts in order to extend the use to tolerance analysis. This model is adapted to 1D analysis only. There is no consideration of the angular errors. Also, an assembly link can be created only if the faces of two parts are in contact. There should be a clear distinction between the part graph and assembly graph. Others have presented part graph structures to for various purposes other than tolerance analysis. Moroni and Requicha [9] developed a data structure which represents features, surfaces, datums and tolerances inside a hierarchical graph called the VGraph. The purpose was to store the tolerance information. Shah [10] proposed that a dimension and tolerance graph be created for each control direction (x, y and z). In this graph, the nodes represent the geometric entities and the arcs represent geometric tolerances and dimensions. It was later refined by Kandikjan, Shah and Davidson [11] who combined the three graphs into one and defined clusters to group the constrained entities. This structure was used to perform validation checks on the GD&T and verify the consistency with the dimensioning and tolerancing practices. Although these researches have solid mathematical foundation for solving the tolerance analysis problem, they do not provide a complete solution on how to interpret the tolerance language. In the literature, the interpretation work is often assumed and only the tolerance analysis is presented. The

4

Page 5: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

ASME Y14.5M-1994 standards [12-13] describe that toleranced surfaces can be dependent upon datum surfaces. Because the datum surfaces can be toleranced, they also contribute to the error on the Degrees of Freedom (DOF) that they block. Precedence of constraints, material modifiers and form tolerances are some of the long lasting issues that still have to be resolved by commercial software.

3. Implementation of the C++ Library The library has the functions to build and manipulate a toleranced model and then query for the tolerance interpretation data. The tolerance model is built separately from the CAD system and defines an application layer on top of topological data, such that the tolerance model created by the library references the native CAD model. The library is used in the following manner: a global method provides an entry point by creating an empty toleranced assembly model. Toleranced parts are added and assembly constraints are defined. The tolerance relationships between the topological elements are stored in the part container. One or more control functions are defined by the user. The kinematic loops, or paths, that close the control function, are extracted from the assembly graph. Each path is described by a sequence of the topological elements and assembly constraints that connect the two elements of the control function. Finally, the tolerance dependencies for each topological element of the path are extracted from the part objects. This section describes the containers and the methods that make up the library. There are seven important data structures in our GD&T library: the Tolerance class, the Modifier class, the Datum_System class, the Topology class, the Part class, the Constraint class (to define assembly joints) and the Assembly class. The UML diagram in Fig. 1 illustrates the relationship between the classes.

3.1. Tolerances

Fig. 2 illustrates the components of a geometrical tolerance. The arrow points to the element on which the tolerance applies. In the first box from the left, the symbol represents the type of the tolerance. The second box indicates the tolerance value which may be accompanied by one or more modifiers (it is for MMC in this case). The remaining boxes define the datum system. In this example, datums “A”, “B at MMC” and “C” make up the datum system. Not all tolerances have a datum system and if they do, the number of datums can vary from one to three. When there is more than one datum, the order of the datum affects how the degrees of freedom are constrained. Several classes were defined in order to model the tolerances: Tolerance, Modifier, DatumSystem and ToleranceDOF. The Tolerance class has data members to specify the type of the tolerance, the nominal value (for dimensional tolerance), the tolerance value, a list of modifiers and a datum system. ToleranceDOF inherits from the Tolerance class specifies the datum priority (datum A is priority 1, B is priority 2 and C is priority 3), and the DOF allowed by the tolerance. The

5

Page 6: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

Modifier class has two attributes which are the type of modifier and a value. The Datum_System class is made up of an identification number, an attribute to specify the number of datums in the datum system, a list of topology object ids, and a list of modifier. In the example above, there are three datums. Datums A, B and C refer to topological elements. A and C do not have any modifiers but B has a MMC modifier.

3.2. Part Class

As shown in Fig. 1, the Part class has three data members which are an identification number, a name and a directed graph. The Topology and the ToleranceDOF objects are the nodes and the edges of the directed graph. The purpose of the Part class is to store the tolerance data of a part and provide a mechanism to determine the tolerance dependencies of any topological element. This mechanism is explained in section 4.2. The directed graph is instantiated using the Boost Graph Library [14]. This library provides the means to manipulate the graph data in manner similar to what the Standard Template Library (STL) does for C++ lists and vectors. Methods allow scanning through the list of nodes, the list of edges, the neighbors of a node, the out edges or in edges of a node and so on. Furthermore, it is a template library so the nodes and edges of the graph can be of any user defined type. In this directed graph, the nodes are Topology objects and the edges are ToleranceDOF objects. The Part class provides methods to define and manipulate the nodes (topology) and the edges (tolerances) of the graph. The Topology object is required to provide a reference to the master CAD data model. A topology node is created for each toleranced topological element of the part. The tolerance information is stored in the edges of the part object’s directed graph as ToleranceDOF objects. An edge is created between the topology node on which the tolerance applies (starting node) and each datum (target node). In case the tolerance is independent, the edge is a special case that starts and ends on the same node. Dimensional tolerances are also stored in the ToleranceDOF object, but the edge is created as bi-directional and the worst case distribution of the tolerances on the surfaces is evaluated at the resolution of the control function.

3.3. Assembly Class

The relationship between parts is described by the Assembly object. The Assembly class has three data members: a name, an identification number and an undirected graph object created using the Boost Graph library. Instances of the Part class make up the nodes of the undirected assembly graph. The edges are kinematic joints (Constraint type objects) that model the relative movement between two topological elements on different parts. Three types of assembly constraint are defined in this article (in Fig. 3), for the purpose of demonstration, but there are others.

6

Page 7: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

The axis-to-axis constraint is used when the axes of two parts must be perfectly aligned. Only the translation and rotation along the axis are free. The cylinder-to-cylinder constraint is used if a peg enters in a hole of equal or larger diameter. The link is made between the two cylindrical surfaces rather than between the axes. The peg is free to move in the axial direction but is limited in its translation and rotation movement about directions that are normal to the hole's axis. The amplitude of movement depends on the diameters and lengths of the hole and the peg. Finally the plane-to-plane constraint is when the normals of two mating surfaces are aligned. However, the parts are free to move in translation in the plane and in rotation around the plane's normal. The reader may refer to [15-18] for other torsor-based assembly constraint definitions. The assembly graph is necessary in order to extract the kinematic loops, or paths, of the control function. A kinematic loop is the sequence of surfaces and assembly constraints that connects the two surfaces of the control function in the assembly graph. This process is explained in section 4.1

4. Interpretation of the Tolerances Fig. 4 illustrates the steps of the tolerance analysis process. The first step, building the tolerance model, is done as annotations, tolerances and assembly constraints are defined on the parts. This functionality is supported by the data structure of the library. Then the control functions are defined by the user. Next, the interpretation of the tolerances is done in two steps: First, the assembly graph is used to identify the paths that define the control function. Then, the tolerance dependencies are obtained for each element of the path using the part graphs. Finally, the interpretation of the tolerances is followed by a resolution method which solves the control function. This section presents a use case and explains how the interpretation of the tolerances is achieved. The interpretation data is then applied to a 1D tolerance analysis in section 5.

4.1. Identification of the Paths

Consider the slider on rail example illustrated in Fig. 5. A block with two holes in it, called the slider, is bolted on a rail by means of two screws. Fig. 5 also shows the identification for each toleranced topological element. The toleranced model is built from the detail drawings of each part and the assembly constraints that are defined between them. Fig. 6 shows a detail drawing of (a) the rail and (b) the slider, in which all the tolerances have been identified from Tol1 to Tol16. The assembly is modeled as illustrated in Fig. 7. An assembly joint has been defined between the bottom face of the slider (face G6) and the top of the rail (on face R8). Also, an assembly joint of type cylinder to cylinder was defined between each hole of the slider and the screws because there is a clearance between them (G8 of the slider and V1 on the first screw and between G7 on the slider and V1 on the second screw). Finally, since the threads on the screw are “grabbed” by the threads on the rail which tends to auto-center the screw, and because tolerances are applied so that this is considered as a fixed fastener assembly, the hypothesis made is that

7

Page 8: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

the screw’s axis will coincide with the threaded hole’s axis. The screws are considered to be mounted into the rail. This is why an axis to axis constraint is defined between Axis1 of the first screw and Axis13 on the rail and between Axis1 of the second screw and Axis12 on the rail. A control function between faces R7 on the rail and G4 on the slider will allow verifying the functional requirement that there must be a clearance between the sides of the slider and the inner sides of the rail. This example was worked out in [20] using a traditional 1D analysis. The same result must be obtained with the proposed approach. At this point, the data structures and a control function are defined. The next step is the interpretation of the tolerances. The kinematics loops can be extracted using the «CalculatePaths()» method of the assembly class. This method takes two connectors as input parameters. A connector is a reference to a topological element on a part. The two connectors define the start and end of the control function. In the slider on rail example, the first connector is surface R7 on the rail and the second connector is surface G4 on the slider. The «CalculatePaths()» method creates a list of all possible paths that start on the assembly node of the first connector. Each path is a sequence of the nodes and the edges that connect the first node to the end node. The paths that do not contain the second assembly node (ie: the slider) are filtered out. The algorithm that accomplishes this task is the following: a path with only the first node is created. A copy of the current path is added to a list of paths for each out edges of the current node whose target node does not exist in the current path. One at a time the target nodes are added to the path and then their out nodes are examined. This process is done recursively. If the path passes through the target node, then that path is tagged to be kept. If the target node is not the last element of a path, then everything in the path that comes after the target node is truncated. The paths are then rewritten in terms of connectors. The three paths that bridge the connectors for R7 and G4 are illustrated in Fig. 7. Path 1 closes the control function by passing through the plane-to-plane connection and paths 2 and 3 close the control function by passing through the screws. Each segment of the path is associated to a transformation matrix between two toleranced topological elements. The transformations involved in each path are summarized in Table 1. The paths obtained for a control function depend only on the assembly constraints.

4.2. Retrieving the Tolerance Dependencies of a Topological Element

In order to determine how the tolerances affect each topological element of the path, a tree structure of the tolerance dependencies is built by recursively scanning through the out edges of the nodes of the part graph. The tolerance dependencies are needed to model the tolerance zone and determine the relative positioning between two elements on the same part.

8

Page 9: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

Fig. 8 shows the part graph for (a) the rail, (b) the slider and (c) the screws. These graphs are constructed from the specifications of the detail drawings of Fig. 6. Fig. 9 shows the dependencies for topological elements Axis13, R7, G7 and G4 which are listed in path 2. The tolerance dependency trees of Axis13 and R7 (in Fig. 9a) have been combined to show their common datum reference frames. The same has been done for the dependency trees of G7 and G4 in Fig. 9b. There are cases in which it is not clear if a tolerance has an effect on the relative positioning between two topological elements. In that case, the sensitivity of the tolerance on the control function should be tested. Wang [7] proposed to calculate the sensitivity of all the tolerances to know if they have an effect on the control function. The problem with that method is that the algorithm is not very efficient in the case that there are many annotations to consider. We propose to test only the annotations common to the spanning tree of the two topological elements. In this case, the sensitivity of the tolerances should be tested on each degree of freedom. The details of this process are outside the scope of this article, however, Desrochers, Laperrière and Ghie [15-19] discussed a way to calculate the effect of tolerances on the control function using a jacobian, a projection matrix and interval mathematics.

5. Method of Resolution

The result of the tolerance interpretation library is the information about the paths as illustrated in Fig. 7, and the tolerance dependencies for any topological element as shown in Fig. 9. The control function can be solved for using a variety of methods. At this stage of the research, the tolerance interpretation results will be demonstrated with a 1D analysis procedure that was adapted to this interpretation of the tolerances, but extensions could be made for 2D or 3D analysis. Only two of the three loops obtained are relevant for a 1D analysis method of this example. The first loop has no effect because the degrees of freedom remaining on path 1 do not limit the movement of the slider in the direction of the control function. Paths 2 and 3 will obtain the same result in a 1D analysis. Therefore, only the analysis for loop 2 will be elaborated. It is necessary to clarify how the values for transformations C1, L1, C2, L2 and C3, in table 1, were obtained. These transformations are illustrated in Fig. 10. For C1, the dependency tree in Fig. 9a shows that Axis13 and R7 are both positioned relative to Datum B. This means that subsequent positioning of Datum B does not affect the relative positioning of Axis 13 to R7, but it is still important to control its orientation tolerance zone. The orientation is controlled by the perpendicularity tolerance of Datum B towards R8 (Tol11). From Fig. 11a, the nominal distance is 0.753-0.0 and the relevant tolerances are Tol4, Tol14 and Tol11 (0.001+0.001+0.007). Tolerances do not apply on assembly constraints because they are already considered on the part. The axis-to-axis constraint is a perfect connection used to represent the screw and its hole. Transformation L1

9

Page 10: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

implies that there can be no lateral displacement between Axis13 and Axis1 of screw 1. Likewise, transformation L2 is a cylinder-to-cylinder constraint between the cylindrical surface of the screw (V1), and the inner surface of the hole on the slider (G7). The difference in nominal diameter defines the allowable mobility in the joint. The tolerances are already considered in transformations C1, C2 and C3 so only the nominal dimensions apply on L2. Transformation C2 corresponds to the radius of the screw (0.1227±0.0023). Transformation C3 represents the relative positioning between G7 and G4. The material modifier gives a characteristic to the hole by allocating a position tolerance bonus depending on the actual radius of the hole. This maintains the virtual state of the hole at 0.1430±0.0025. In this case, the position tolerance bonus at nominal is ±0.0025. The configurations that generate the minimum and maximum clearance on the control function are illustrated in Fig. 11b and 11c. With these transformations, it is possible to calculate the result of the controls function. The sum of the tolerances in the loop (∑tol) is: ∑tol = 0.0090 + 0.0023 + 0.0095 = 0.0208 (1) Therefore the clearance gap is: Gap = C1 + L1 - C2 - L2 - C3 ± ∑tol (2) Min_gap = 0.7530 + 0.0000 - 0.1227 - 0.0356 - 0.5820 - 0.0208 (3) Min_gap = -0.0081 (4) Max_gap = 0.7530 + 0.0000 - 0.1227 - 0.0000 - 0.5770 + 0.0208 (5) Max_gap = 0.0741 (6) The same results were obtained with the traditional uniaxial method in [20]. The difference is that with the traditional method, the analyst must determine the assembly configurations that generate the worst case assembly conditions. This analysis is avoided with the automatic interpretation of the tolerances because it re-uses the assembly constraint definitions and the loops are not generated in the same way. With the traditional method, the loops can cross from one part to another at the contact between two faces. With the automatic interpretation of tolerances, the loops can cross from one part to the other if there is an assembly joint defined between the two parts. The worst case assembly configurations can be determined by analyzing the DOF at each assembly constraint. Another difference is that the tolerance dependencies are obtained from the part graphs whereas with the traditional approach, the analyst must carefully determine them from the detail drawings. Future works include developing a 3D tolerance analysis solver in order to automate the entire process and take into consideration the data that is

10

Page 11: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

discarded through a uniaxial analysis. We believe Ghie, Laperrière and Desrochers’ unified jacobian approach [15-19] is a viable way to implement such a solver, but further study is still required. Our current research interest is also in developing a 3D graphical method that uses the tolerance interpretation information in order to generate the swept volume where a face could exist. A preview of this graphical method is shown in Fig. 12. The umbrella shaped volume on top of the third block represents the space where the top face of the third prism could exist given the tolerance stack-up in the assembly. These approach will allow to visualize the volume of existence of a specific face, perform tolerance analysis on toleranced assemblies (for example, by calculating the minimum clearance between two volumes of existence with a collision detection algorithm), and it will also be interesting to visualize the volume of existence of faces in a manufactured assembly to see how much slack would exist in the assembly (for example, the precision of a mechanical tool).

6. Conclusion This paper presented a C++ library that implements a geometric and dimensional tolerance interpretation method. The library automates the tolerance interpretation process and is to be used in conjunction with a tolerance solver. The main data structures, the part graph and the assembly graph, render the tolerance information easily interpretable. The assembly graph makes it possible to automatically extract the kinematic loops that define the control function. The part graphs are used in an innovative approach to determine the tolerance dependencies of elements that are part of the loops. The purpose of this module is to extract the information necessary for downstream applications to model the effect of the tolerances. The tolerance interpretation process can be used as a stand alone to provide a view of tolerance stack-ups on a topological element, as a tool to identify the kinematic loops, or as a filter on the tolerances and their precedence that should be considered in a tolerance analysis. However, future plans are to integrate our tolerance analysis solver. Although its application was demonstrated with a 1D tolerance solver in this article, the intent is to apply it to a 3D solver process in the near future, and as a tool to determine the amplitude of the sweep for volumes of existence.

7. References [1] Schlatter B (1996) Computer-aided 3D tolerance analysis of disk drives, IBM Journal of Research and Development, 40(5): 537-542. [2] Shen Z, Ameta G, Shah J, Davidson J (2005) A Comparative Study of Tolerance Analysis Methods. Journal of Computing and Information Science in Engineering. 5: 247-256. [3] Merkley, K (1998) Tolerance Analysis of Compliant Assemblies, Doctoral Thesis, Department of Mechanical Engineering, Brigham Young University. [4] Chase, K (1999) Tolerance Analysis of 2-D and 3-D Assemblies, ADCATS Report No. 99-4

11

Page 12: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

[5] Shah J, Ameta G, Shen Z, Davidson J (2007) Navigating the Tolerance Analysis Maze. Computer-Aided Design & Applications. 4(5): 705-718. [6] Desrochers A (1991) Modèle conceptuel du dimensionnement et du tolérancement des mécanismes. Représentation dans les systèmes CFAO, Doctoral Thesis, Laboratoire de mécatronique de l’Institut Supérieur des Matériaux et de la Construction Mécanique, École Centrale de Paris. [7] Wang H, Ning R, Yan Y (2005) Simulated Tolerance CAD Geometrical Model and Automatic Generation of 3D Dimension Chains, The International Journal of Advanced Manufacturing Technology, DOI 10.1007/s00170-005-2617-x [8] B.K.A. Ngoi, M. Agarwal, C.S. Chua. The Noded Graph Approach to Stack Analysis. The International Journal of Advanced Manufacturing Technology. 1998, 14: 343-349. [9] Moroni G, Requicha A (1996) Tolerance Modeling and Application Programming Interfaces, In Proc. Workshop on Concurrent Engineering (Budapest, Hungary), 13-17. [10] Shah J, Yan Y, Zhang B-C (1998) Dimension and Tolerance Modeling and Transformations in Feature Based Design and Manufacturing, The Journal of Intelligent Manufacturing Technology, 9: 475-488.

[11] Kandikjan T, Shah J, Davidson J (2001) A Mechanism for Validating Dimensioning and Tolerancing Schemes in CAD Systems, Computer-Aided Design, 33(10): 721-737. [12] The American Society of Mechanical Engineers (1994) Dimensioning and Tolerancing. ASME Y14.5M-1994, An American National Standard Engineering Drawing and Related Documentation Practices. [13] The American Society of Mechanical Engineers (1994) Mathematical Definition of Dimensioning and Tolerancing Principles, ASME Y14.5.1M-1994, 1994. An American National Standard Engineering Drawing and Related Documentation Practices, New York. [14] Siek J, Lee L, Lumsdaine A (2001) The Boost Graph Library: User Guide and Reference Manual, Addison-Wesley Professional, Boston. [15] Laperrière L, Desrochers A (2001) Modeling Assembly Quality Requirements Using Jacobian or Screw Transforms: A Comparison. Proceedings of the 4th IEEE International Symposium on Assembly and Task Planning, 330-336. [16] Desrochers A, Laperrière L (2003) Spécification et analyse de tolérance assistée par ordinateur : Rétrospective des travaux. 3e journée d’étude interinstitutionnelle de fabrication haute performance, Bécancour, Canada, 21-22 novembre 2003. [17] Desrochers A, Ghie W, Laperrière L (2003) Application of a Unified Jacobian – Torsor Model for Tolerance Analysis, Journal of Computing and Information Science in Engineering. 3: 2-14. [18] Ghie W (2004) Modèle unifié Jacobien-Torseur pour le tolérancement assisté par ordinateur, Doctoral Thesis, Université de Sherbrooke. [19] Ghie W, Laperrière L, Nadeau D, Desrochers A (2007) Allocation Tolerance by Jacobian-Torsor Model, Proceedings of the 18th IASTED International Conference Modelling and Simulation. 191-196. [20] Meadows, J (2001) Tolerance Stack-up Analysis, James D. Meadows & Associates Inc, Hendersonville.

12

Page 13: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

Path 1 Path 2 Path 3 - C1: R7→R8 - L1 : Plane-to-plane (R8→G6) - C2: G6→G4

- C1: R7→Axis13 (0.7530±0.0090) - L1 : Axis-to-axis (0.0000) (Axis13→Axis1 on Screw1) - C2: Axis1→V1 (0.1227±0.0023) - L2 : Cylinder-to-cylinder (V1→G7) (GMin=0.0356, GMax=0.0000) - C3: G7→G4 (GMin=0.5820±0.0095, GMax=0.5770±0.0095 )

- C1: R7→Axis12 - L1 : Axis-to-axis (Axis12→Axis1 on Screw2) - C2: Axis1→V1 - L2 : Cylinder-to-cylinder (V1→G8) - C3: G8→G4

Table 1. The transformations for the three paths of the slider on rail assembly

1

Page 14: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

Fig.1. UML diagram representing the main classes of the tolerance library

1

Page 15: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

Fig. 2. Components of a geometrical tolerance

2

Page 16: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

Fig. 3. Kinematics joints defined in the library. A solid arrow indicates a DOF that is free or blocked. A dashed arrow indicates a partially blocked DOF.

3

Page 17: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

Fig. 4. The interpretation of the tolerances in the tolerance analysis process

4

Page 18: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

Fig. 5. Identification of the topological elements of the slider bolted on rail assembly

5

Page 19: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

Fig. 6. (a) Detail drawing of the rail with identification of the tolerances. (b) Detail drawing of the slider with identification of the tolerances (adapted and modified from [16])

6

Page 20: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

Fig. 7. Representation of the three paths that close the control function between R7 and G4 on the slider bolted on rail assembly

7

Page 21: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

Fig. 8. (a) Representation of the part graph for (a) the rail, (b) the slider, (c) a screw

8

Page 22: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

Fig. 9. (a) Dependencies common to Axis13 and R7. (b) Dependencies common to G4 and G7

9

Page 23: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

Fig. 10. The transformations of path 2

10

Page 24: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

Fig. 11. (a) Calculation of the relative positioning between R7 and Axis13. (b) Minimum gap calculation of the relative positioning between G7 and G4 (used in the maximum gap calculation of the control function). (c) Maximum gap calculation of the relative positioning between G7 and G4 (used in the minimum gap calculation of the control function).

11

Page 25: A C++ Library for the Automatic Interpretation of ... · PDF fileA C++ Library for the Automatic Interpretation of Geometrical and Dimensional ... describes how an early version of

Fig. 12. Volume obtained using a prototype 3D graphical analysis method.

12