A GENERIC FRAMEWORK FOR DESIGN EVOLUTION: FROM
FUNCTION-TO-FORM MAPPING TO SYNTHESIS OF TOLERANCES
By
Nilmani Pramanik
B.E.(Mech), (Hons), Jadavpur University, India
M.E., Birla Institute of Technology and Science, India
DISSERTATION
Submitted in partial fulfillment of the requirements for the degree
of Doctor of Philosophy in Mechanical and Aerospace Engineering
in the graduate School of Syracuse University.
June 2003
Approved __________________
Professor Utpal Roy
Date __________________
Copyright 2003 Nilmani Pramanik
All rights Reserved
The Graduate School
Syracuse University
We, the members of the Oral Examination Committee, hereby approve the
Thesis/dissertation of
Nilmani Pramanik
Candidate’s Name
Whose oral examination was held on
May 30, 2003
Date
Dr. Alan J. Levy
Examiner (Please type)
(Please sign)
Dr. Chilukuri Mohan
Examiner (Please type)
(Please sign)
Dr. Frederick Easton
Examiner (Please type)
(Please sign)
Dr. Young B. Moon
Examiner (Please type)
(Please sign)
Dr. Utpal Roy
Thesis/dissertation Advisor (Please type)
(Please sign)
Dr. Eric M. Lui
Chair, Oral Examination Committee
(Please type)
(Please sign)
Abstract
Design of a new product (artifact) begins with a set of user specifications which are
functional requirements (FRs) that the artifact must satisfy. Initially, the set of FRs is
almost always incomplete because complete knowledge about the product is not known at
the conceptual design stage. In this work, two complementary schemes are presented: a
design synthesis scheme for conceptual design and a tolerance synthesis scheme for
manufactured parts. In the first phase, a function-to-form mapping process is presented to
arrive at a conceptual design that satisfies the FRs. This process is carried out in stages of
design evolution and at each stage the product specification (PS) is transformed using
FRs as constraints and variation of internal parameters of artifacts as navigator for the
mapping process. In the second phase, which starts after the nominal dimensions of the
parts of an artifact have been computed (using domain-specific design rules), a method
for synthesis of tolerances for manufactured parts is presented as an optimization process
for minimizing manufacturing cost subject to constraints of assemblability and functional
requirements. A generic deviation-based formulation has been used to represent the
variations of features and the entities in the tolerance synthesis process have been
modeled in UML using object-oriented representation. A new deviation-based model for
manufacturing cost has been introduced. The optimization scheme is used to find a set of
optimal deviation parameters, which are then transformed into standard tolerance
specifications as per ASME Y14.5M (1994) tolerancing schemes using a deviation-totolerance mapping system. The tolerance synthesis scheme is implemented to serve as a
tool that could be linked with standard CAD packages to give the designer a mechanism
for iterative solution for product development and tolerance synthesis.
Table of Contents
Abstract
…
i
Table of Contents
…
v
List of Illustrative Materials
…
viii
Acknowledgement
…
x
Nomenclature
…
xi
Chapter 1.
Introduction
…
1
1.1
Introduction and Motivation
…
1
1.2
Objectives of the Thesis
…
4
1.3
Organization of the Thesis
…
5
Review of Related Research
…
7
2.1
Design Synthesis
…
7
2.2
Tolerance Synthesis
…
10
Representation of Artifact and Associated Classes
…
13
3.1
Product Specifications
…
14
3.2
Artifact Representation
…
16
3.2.1
Artifact Classification
…
17
3.2.2
Generic Definition of Artifact
…
18
3.2.3
Representation of Internal Parameters of Artifacts
…
19
Chapter 2.
Chapter 3.
3.3
Representation of Functions
…
22
3.4
Representation of Behaviors
…
24
3.5
Artifact Library
…
25
3.6
Tolerance Representation
…
26
Design Synthesis: Function-to-Form Mapping
…
29
4.1
Transformations of Product Specification (PS)
…
32
4.2
Attribute Transformation
…
32
4.3
Constraint Transformation
…
33
Chapter 4.
v
4.4
Variation of Internal Parameters of Artifacts
…
35
4.5
Design Synthesis Process
…
39
4.6
Observations on the Design Synthesis Process
…
46
4.7
An Example of Design Synthesis
…
47
Tolerance Synthesis Scheme
…
56
Representation of Deviations of Features of a Part
…
57
5.1.1
Local Coordinate System on a Feature
…
59
5.1.2
Invariants of a Feature and Reduction of DOF
…
60
Chapter 5.
5.1
5.2
Tolerance Synthesis (TS) Scheme
…
62
5.3
Deviation of Features and Assembly of Mating Parts
…
63
5.3.1
Gap as a Control Element between Mating Features …
66
5.3.2
Shifting the Point of Interest
…
66
Generation of Constraints
…
67
5.4.1
Constraints Related to Functional Requirements
…
68
5.4.2
Constraints Related to Assemblability of Parts
…
69
Formulation of Cost Functions
…
73
5.5.1
Cost of Manufacturing
…
73
5.5.2
Deviation-based Model for Cost of Manufacturing …
75
5.4
5.5
5.6
Optimization Process
…
79
5.7
Mapping Deviation Parameters to Tolerance Specification …
80
5.7.1
Deviation-to-Tolerance Mapping Criteria
…
82
5.7.2
Mapping Relations for a Planar Feature
…
84
5.7.2.1
Rectangular Planar Feature
…
85
5.7.2.2
Circular Planar Feature
…
86
Implementation and Case Studies
…
88
6.1
Details of the Implementation
…
88
6.2
Example Tolerance Synthesis of a 3-block Artifact
…
92
6.3
Example Tolerance Synthesis of a Planetary Gearbox
…
100
Chapter 6.
vi
Chapter 7.
Conclusion
…
109
7.1
Contribution
…
109
7.2
Future Work
…
110
Appendix – 1 Class diagrams for various classes
…
114
Appendix – 2 Examples of artifact representation
…
118
Appendix – 3 Artifact Library
…
126
Appendix – 4 Interval Arithmetic
…
129
Appendix - 5 Transformation of Torsors
…
131
Appendix - 6 Example of Generation of Assemblability Constraints
…
136
Appendix – 7 Mapping of Deviation Parameters to Tolerance Parameters …
141
Appendix – 8 Implementation: Listing of major modules
…
150
Appendix – 9 Tolerance Synthesis Example –1: A three-block system
…
170
Bibliography
…
174
Vita (biographical data)
…
183
Appendices
vii
List of Illustrative Materials
Figure 4.5 Schematic diagram for transforming input functions to outputs …
40
Figure 4.7-1. Design Synthesis - some intermediate stages
…
52
Figure 4.7-2. Typical solutions from the Design Synthesis example
…
53
Figure 5.1.1. Local coordinate system on a feature
…
60
Figure 5.1.2. Deviation parameters of a circular-planar feature
…
61
Figure 5.3-1. A spur gear sub-assembly
….
64
Figure 5.3-2. Mating details of the gear sub-assembly
…
64
Figure 5.3-3. Assembly graph of the gear sub-assembly
…
65
Figure 5.3.2. Points of interest on features
…
67
Figure 5.4.2. Traversing Paths/Loops in an assembly graph
…
71
Figure 5.5.2-1. Cost as function of deviation parameters
…
78
Figure 5.5.2-2. Cost contour lines and the bounds
…
78
Figure 5.7.2.1. Rectangular planar feature
…
85
Figure 5.7.2.2. Circular planar feature with size tolerance
…
86
Figure 6.2-1. A 3-Block Artifact
…
93
Figure 6.2-2. 3-Block Artifact - Part #1- Nominal shape with LCS
…
94
Figure 6.2-3. 3-Block Artifact – Artifact tree
…
95
Figure 6.2-4. 3-Block Artifact - Feature to feature connectivity
…
96
Figure 6.2-5. 3-Block Artifact – Assembly graph
…
97
Figure 6.2-6. Sample cost of Manufacturing Function
…
97
Figure 6.2-7. Deviations imposed on nominal shape
…
98
Table 6.2-1. Optimal deviation parameters
…
98
Table 6.2-2. Tolerance values mapped from optimal deviation parameters …
99
Figure 6.2-8. Computed tolerance parameters for Part #1
…
99
Figure 6.3-1. A Planetary Gearbox
…
100
Figure 6.3-2. Exploded view of the gearbox
…
101
Figure 6.3-3. Gearbox modeled as a 5-part system
…
101
Figure 6.3-4. Mating of output housing with output shaft and ring gear
…
102
viii
Figure 6.3-5. Assembly graph (connectivity diagram) of the gearbox
…
102
Figure 6.3-6 Circular planar feature with tolerance parameters TU and TL …
106
Table 6.3-1 Tolerance zones/values for cylindrical features
…
107
Table 6.3-2 Tolerance zones/values for circular planar features
…
108
Figure A1.1 Artifact class diagram
…
114
Figure A1.2 Function Class
…
115
Figure A1.3 Behavior Class
…
115
Figure A1.4 Material Data Class
…
116
Figure A1.5 Feature Class
…
116
Figure A1.6 Tolerance Class
…
117
Figure A5-1 Interacting torsors at mating surfaces
…
132
Figure A5-2. Torsor transformation - shifting axes
…
133
Figure A6-1 Example artifact with three blocks
…
136
Figure A6-2 – 3-Block artifact with feature numbers and LCS
…
137
Figure A7.1-1 Cylindrical feature with tolerance modified to MMC
…
142
Figure A7.1-2 Cylindrical feature with LCS
…
142
Figure A7.2-1 Spherical feature with LCS
…
144
Figure A7.2-2 Spherical feature with tolerance specification
…
145
Figure A7.4-1 Size tolerance for a planar feature
…
148
Figure A7.4-2 Deviation space for size tolerance of a planar feature
…
149
ix
Acknowledgement
I would like to express my sincere gratitude to my academic advisor Prof. U. Roy for his
guidance, support, and encouragement throughout my program of study and research
work. It has been a pleasure to work with him.
I would take this opportunity to thank Dr. Alan J. Levy, Dr. C. K. Mohan, Dr. Y. B.
Moon, Dr. Eric M. Lui, and Dr. Fred Easton for consenting to serve as members of my
dissertation committee.
I would also like to thank my friends and colleagues at the Knowledge Based
Engineering Laboratory, specifically, Mr. Haoyu Wang and Mr. Saujesh Patel, for their
support and many meaningful discussions/interactions.
Finally, I would like to express my sincere appreciation and thanks to my wife
Shyamalsovana and daughter Ananya for their infinite patience, continued support, and
love without which it would have been impossible for me to complete my research work.
x
Nomenclature
Unless otherwise specified in the context, following nomenclature will be used
throughout the thesis. Also, mathematical variables are used in italics and non-scalar
quantities like vectors, matrices, torsors, classes, sets, etc., are used in bold typeface.
Symbol
Meaning
::=
|
<>
[]
…
∀
∃
∪, ∩
∅
⊃, ⊇
⊂, ⊆
⊄
∈
∉
:
=, EQ
≡
≈
!, NOT
&, AND
NE, !=, ≠
LT, <
LE, <=
GT, >
GE, >=
==
=>
∑
∏
R
R+
RRn
∞
-∞
defined as
alternatives (choices)
attribute | parameter | entity | token delimiter
optional item delimiter
use as subscript to indicate one or more repetitions
for all
there exists
union, intersection of sets
NULL set
super set of
subset of (belongs to)
not a subset of
element of
not an element of
such that
equal to (assignment operator)
equivalent to
approximately equal to
not
and
not equal to
less than
less than or equal to
greater than
greater than or equal to
equality comparator
implies
summation over a range
product over a range
1-d real space
1-d real positive half-space
1-d real negative half-space
n-d real space
infinity (a large positive number)
negative infinity (a large negative number)
xi
1
Everything is vague to a degree you do not realize till you have tried to make it precise.
-- Bertrand Russell
Chapter 1
Introduction
1.1
Introduction and Motivation
Design as a process to create new artifacts1 to meet the challenges of the society is a
complex task. It is motivated by many different factors including economic, sociopolitical and creative urges. In this thesis design and manufacturing of artifacts to meet
technological challenges are discussed. With the advancement of computers and
computing techniques, the focus of design has shifted from manual design computations
to automated design using powerful computational aids like artificial intelligent tools,
rule based expert systems, and use of domain-specific knowledge bases. However, the
process of product development requires interaction and exchange of ideas between
experts from various design domains. Since there is high degree of specialization in each
domain, to facilitate effective collaboration between these design experts, a common
framework for representing the entire design process is required so that all personnel
involved in the process could interact and exchange data, knowledge and ideas in a
consistent manner. Design of a new artifact could be grouped into three distinct phases,
namely, 1) conceptual design, 2) detail design for sizing the components/parts, and 3)
manufacturing and assembly (including inspection and quality control). The first phase
(conceptual design) involves conceiving physical shapes/structures from the functional
1
The term artifact has been used in this thesis in a generic sense to represent assembly and subassembly of parts, parts,
components, and other design objects/products.
2
requirements (FRs). The mechanism to transform a set of FRs into suitable form, called
function-to-form (F2F) mapping, is not well established and oftentimes the process is not
unique due to possibility of one-to-many mappings and variations. However, these oneto-many mappings give some creative space for the designer to explore alternative
solutions as will be seen in the design synthesis process in chapter 3. Even though there
have been many domain-specific approaches for F2F, there is no generic universal
system for F2F mapping. Whitney (1992) attributed this to “the lack of basic engineering
knowledge that can link form and function, the lack of a mature concept of a product data
model, and/or the lack of a mature concept of the product design process.” Most of the
function-to-form mapping systems (as discussed in chapter 2) are very domain-specific
and lookup domain-specific rules.
In this work a generalized framework has been
presented that could automate the design synthesis process for F2F mapping.
After a successful F2F mapping phase, the conceptual design is still not very ‘concrete’
in shape – only the basic functional requirements could be satisfied at this stage and
detailed design calculations are required to establish physical size of the components that
would deliver the desired outputs. Since this part is purely domain specific, an attempt to
generalize the process of detail design would be futile. For example, procedures for
designing the shape and size of gas turbine blades could be entirely different to those for
designing the teeth of a bevel gear. Attempt to generalize all such diverse design steps in
a single framework would defeat the purpose and computational overheads could go up.
Also, domain-specific detail design procedures are well established and there are national
and international standards and codes (like ANSI, DIN, ISO, JIS, etc.) that regulate and
guide the detail design process. In this work this phase of detail design has not been
3
treated. However, the generic artifact class presented here is flexible enough for adding
domain-dependent design procedures.
The third phase of design starts after nominal sizes and dimensions of each
part/component of the artifact has been computed in the previous stage of detailed design.
In this stage a new challenge emerges as the parts have to be manufactured and no part
could be manufactured with the nominal size and shapes (theoretical/exact sizes). Some
deviation or distortion from the ideal shape must be allowed and even then, the artifact
should satisfy the original functional requirements (as far as feasible), and the parts must
be assemblable (geometric compatibility). A third challenge comes from economic
considerations: the overall total cost associated with manufacturing, assembling,
inspection, quality control and other life-cycle costs should be minimized to make the
artifact economically viable/competitive. In this thesis, a generic tolerance synthesis
scheme has been established that could be used for synthesis of geometric tolerances for
manufactured parts and the synthesis process can take care of assemblability constraints,
functional requirements and minimizes suitable cost functions.
Since the two major tasks (conceptual design and tolerance synthesis) are part of the
same design process, a need for generalized treatment is necessary. With the development
of object-oriented design and development methodology as a powerful tool for
representation of entities in hierarchical class structures, the possibilities of representing
complex process and entities in a systematic manner is possible. Particularly, defining a
class as an abstract entity and subsequent instantiation of the same class to add specific
4
details (forms) of the abstract entities could be effectively used to represent design
entities that are either partially defined or vaguely defined at the conceptual design stage
and evolves gradually as the design proceeds towards detailed design with more concrete
shape/structure. An integrated approach to represent the artifact as an artifact class could
be used to drive a design synthesis process in a generic manner to explore new horizons
in design evolution in a multitude of design domains. The possibility of extending the
artifact class to represent and guide detail design processes like manufacturability,
assemblability, quality management and tolerance design could lead to a paradigm shift
in integrated design. This thesis presents a framework to integrate the design synthesis
process starting from the conceptual design stage and extending to the details design
stage.
1.2
Objectives of the thesis
The main objectives of the thesis are:
i)
Development of a generic artifact class to represent a product: Artifact class
is defined along with all other major classes (function, behavior, structural, etc.)
that are associated with an artifact and an artifact library is established for use in
the design synthesis.
ii)
Development of a design synthesis process:
A design synthesis (DS) is
established that uses the class structures defined above to drive a design evolution
based on a product specification (PS) and functional requirement (FR).
5
iii)
Development of a tolerance representation scheme:
A tolerance class is
defined to represent standard industrial tolerancing systems: size tolerance,
position tolerance, orientation tolerance, and form tolerance.
iv)
Development of a generic deviation-based tolerance synthesis scheme: A
tolerance synthesis scheme is developed to establish tolerance parameters based
on a minimization of cost of manufacturing function subject to constraints of
assemblability of parts (geometric compatibility) and constraints of functional
requirements.
v)
Development of a deviation-base cost of manufacturing formulation:
A
deviation-based cost of manufacturing formulation has been developed that could
be used for cost of manufacturing function in the cost optimization process.
vi)
Development of a system of mapping deviation parameters of features to
tolerance parameters as per ANSI tolerancing standards: The deviation based
optimization scheme is used to find a set of deviation parameters for the features,
which are then mapped to tolerance zones conforming to industrial standard
tolerancing schemes as per ANSI Y14.5.
1.3
Organization of the Thesis
Research in the areas of product design and tolerance synthesis is reviewed in chapter
two. All class structures that are required for the design synthesis and tolerance synthesis
process are defined with appropriate examples in chapter three. These include: Product
specification (PS), Artifact representation, Functional representation, Behavior
representation, Constraints representation, and Tolerance representation.
6
The design synthesis process is presented in chapter four. Various transformation rules
used to drive the design synthesis process are also defined and a primitive artifact library
(ARTL) is established. These chapter deals with: attribute transformation, constraint
management, variation of internal parameters of artifacts and design synthesis process.
Chapter five deals with representation of deviation of features and the tolerance synthesis
scheme. These include: representation of deviation of features, generation of
assemblability constraints, generation of constraints for functional requirements, cost of
manufacturing formulation, formulation of the tolerance synthesis scheme and deviationto-tolerance mapping.
Computer implementation of the design synthesis and tolerance synthesis schemes is
discussed in chapter six. Details of example case studies have been presented in this
chapter to elaborate the steps involved in the synthesis process. Computational aspects
like complexity, efficiency, convergence, and possibility of linking the methods with
existing commercial CAD software like SolidWorks, Pro/E, AutoCAD, etc. have been
discussed.
In the final chapter (chapter seven) contributions in the fields of design evolution and
tolerance synthesis are discussed and areas for future research work are earmarked.
7
Believe those who are seeking truth. Doubt those who find it.
--Andre Gide
Chapter 2
Review of Related Research
2.1
Design Synthesis
In the past, the research efforts involving part functions were mainly focused in four
major areas: i) development of standard vocabularies for part functions; ii) development
of ontologies for functions; iii) conceptual design with abstract part functions; and iv)
design with spatial relationships.
In order to fill up the gap between the concept design (from a given set of functional
descriptions) and actual geometry-based CAD, researchers were first trying to create a
computer-aided design system that would help designers explore non-geometric concepts
and to create rough realizations. Pahl and Beitz (1984) suggested a procedure for
deriving the overall functions of a design from the given design problem statements; and
then decomposing and recomposing individual sub-functions to a hierarchical functional
structure that could be mapped to appropriate physical elements. Though the method
provides useful suggestions regarding function decomposition process, it however, does
not relate the functions to design geometry.
Kota (1990) viewed mechanical designs as being synthesized from conceptual building
blocks that perform specific kinematic functions.
The motion synthesis approach
provides a method for recognizing a given behavior in terms of known primitive
8
behaviors. This is one of the first formalized ways of viewing design as the synthesis of
kinematic processes; however, the approach is limited to a fixed set of primitives. Hundal
and Byrne (1991) and Iyengar, Lee and Kota (1994) have developed Function Based
Design (FBD) Systems in which a configuration of parts is determined on the basis of the
user specified functions (input and output quantities of a part). The FBD systems are
only useful in the conceptual design stage and do not take into account the interaction
between the parts at the geometric level.
Schmekel (1989) has presented a formal
language which consists of a symbolic functional model to describe the functions of a
product. The functions of the product are decomposed into relationships, which are
mapped onto functions of standard components. It, however, only deals with standard
machine elements. Kannapan and Marshek (1991) have developed a design reasoning
system for developing design concepts based on functional and geometric requirements
of mechanical systems built using different machine elements.
Rinderle with Hoover (1989) and Finger (1989) have described a procedure in which
design specifications are transformed into an actual physical artifact using the bond graph
technique. This bond graph technique has also been adopted by a number of other
researchers because of its flexibility of modeling hybrid systems, such as electrohydraulic electro-mechanical, etc. using the same symbols and mathematics throughout.
However, bond graphs cannot be used for representing detailed part functions as they
abstract a number of functional details and do not account for spatial relationships.
Ulrich and Seering (1989) have used bond graph techniques to transform a graph of
design requirements into functionally independent physical components. Their technique
9
is useful in the domain of conceptual design but cannot be used for detailed part design.
Bracewell, et al (1995) has extended the bond graph based conceptual design scheme by
coupling it with a parametric 3D geometric modeler. Gui and Mantyla (1994) have
studied a behavior modeling technique for components in assemblies.
They have
developed a set of behavioral specifications, which can be used to specify the interrelationships between sub-components and have focused on the issue of representing
these relationships.
There are also several reported research programs [Baxter (1994), Henson (1994), Wong
(1993), Sriram (1991, 1992), Gorti (1996), Krause (1993), Pahl (1984), Reddy (1994),
Finger (1992), Finger (1990), Cutkosky (1993), Roy (1999a, 1999b), Szykman (1999),
Sharp (1998)] on the development of system frameworks for product modeling where
function, behavior and product modeling have been discussed. The MOSES research
program jointly undertaken by the Loughborough Institute of Technology and University
of Leeds [Baxter (1994), Henson (1994)] have explicitly focused on the development of
product models for representing different types of part attributes such as part function,
manufacturing details and assembly. Sriram (1991) and Wong (1993) have developed
the DICE (Distributed and Integrated environment for CAE) system with a view of
addressing the coordination and communication problem in the product design process.
Sriram's earlier work on the development of a flexible knowledge-based framework
(CONGEN, CONcept GENerator ) provides methods for generating concepts during the
initial stages of the design [Sriram (1991), Gorti (1996)]. CONGEN consists of a layered
knowledge base (including domain independent knowledge sources like, synthesizer,
10
geometric modeler, constraint manager, evaluator, etc.), a context mechanism, and a userfriendly interface. The architecture of CONGEN could be enhanced to address the lifecycle issues of a product and to consider the entire design/manufacturing processes of a
product that is still in the preliminary stages of design. Szykman, Racz, and Sriram
(1999) have proposed a generic scheme for representation of functions and associated
flows. The scheme provides a mechanism for mapping from function domain to physical
domain through references to artifacts. It supports both decomposition of functions into
sub-functions and functions with multiple inputs and output flows.
However, what is missing from the previous works is an integrated approach to the
modeling, representation and decomposition of part functions into an useful format which
can be used for conceptual design as well as for detailed design including addressing
issues involving tolerance synthesis, manufacturability and assemblability. In this work,
a generic design evolution method has been introduced that could be applied to a variety
of design domains.
2.2
Tolerance Synthesis
Tolerance synthesis (TS) essentially means determination of tolerance type and tolerance
value or tolerance zone as per industrial standards (in this thesis tolerances are used as
defined in ASME Y14.5 standard) for each component of an artifact. Tolerancing
concepts as used to be the practice in the industry (mainly plus-minus type size
tolerances) went through major changes with the introduction of geometric tolerancing
that are no more confined to the absolute size of a feature – its interaction and role in the
entire artifact (positional tolerance, orientation tolerance) became more and more
11
important. Many researchers have proposed different schemes for tolerance synthesis
based on various tolerance representation schemes and some form of cost minimization
schemes. Most of these deal with size tolerances, some deal with statistical tolerances and
some with analysis of geometric tolerances.
Requicha (1983) introduced a concept of variational class for representation of tolerances
in geometric modeling and proposed to treat tolerances as attributes of the features. Roy
and Liu (1988a, 1988b) proposed a hybrid CSG/B-Rep scheme for representation of
tolerances and a frame-based was used to store the attributes. Tsai (1993) presented a
frame based semantic network for tolerance representation. Jayraman and Srinivasan
(1989a, 1989b) proposed a virtual boundary method for representing tolerances.
Greenwood and Chase (1987) used a cost-tolerance model to solve the tolerance
optimization problem. Turner and Wonzy (1988) used variational geometry principles to
represent tolerances.
Although all the above methods are suitable for domain-specific usage, none of them
could be considered generic method for representation and treatment of threedimensional variation of features in a systematic manner. Also, these methods do not
provide a consistent mechanism for mapping the geometric tolerances to standard codes
(ANSI Y14.5) for industrial usage. Apart from individual researches that produced many
interesting results on tolerance representation and synthesis results, ANSI adopted
standards for geometric tolerances for industrial practice. Of particular interest is the
ASME Y14.5M, 1994 that defines the basis of mathematical representation and
12
interpretation of different geometric tolerances. Although, these tolerancing standards are
effective in industrial applications, it’s very difficult to treat them on a generic basis for
automated tolerancing computations.
Ballot and Bourdet (1998, 2002) used the small deviation torsor (SDT) scheme for
representing the deviation of geometric features in a very elegant way. They used the
torsor transformation rules for generating the geometric variations of parts in a product.
In their work, they have introduced schemes for generating the geometric compatibility
conditions and variation of features for different geometric configurations. Although the
procedure is very good in representing the small variations of geometric shapes, they
have not explicitly shown the possibility of using the SDT scheme for carrying out
tolerance synthesis work. Specifically, how the deviation parameters could be used to
represent cost of manufacturing and other cost factors associated with a part and how the
deviation parameters could be mapped from the deviation space to the tolerance space for
industrial applications.
In this work, the SDT scheme has been adopted for representation of deviation of features
and a generic scheme has been proposed for synthesis of tolerances that can be used for
modeling a wide variety of artifacts. The deviation parameters have been used to define a
new cost of manufacturing formulation for the tolerance synthesis process (minimizing of
cost of manufacturing). Also, in order to make the tolerance synthesis scheme suitable for
industrial tolerancing as per ASME Y14.5M, suitable deviation to tolerance mapping
schemes have been introduced and possibility of linking these schemes with standard
CAD packages has been discussed.
13
To define a thing is to substitute the definition for the thing itself.
-- Georges Braque
Chapter 3
Representation of Artifact and Associated Classes
In this chapter all the entities that would be required for the design synthesis and
tolerance synthesis work are defined using an object-oriented approach. For some classes
a BNF-like1 definition is used to capture the essence of the class. Here the strict
formalities of BNF are not used; instead a BNF-like structure is used to represent the
essential features of each entity using following notation:
Symbol
::=
<>
[...]
…
|
{ } and ( )
Meaning
defined as
delimiter for tokens / identifiers / parameters
optional components
used as subscript to denote one or more repetition of a component
for example, {x}… would mean {x} or {x}{x} or {x}{x}{x} …
delimiter for alternate choices, for example {red | blue | green}
grouping of entities
Actual classes diagrams have been developed in UML2 using standard UML notations
for association, aggregation and generalization links between classes. Some of the major
class diagrams are presented in Appendix-1. For some of the classes self-referential
aggregation is used to define dependency on itself in a recursive manner, for example, the
artifact class uses other artifacts (primitive and/or composite parts) to represent a
composite artifact.
1
BNF = Backus Normal Form or Backus-Naur Form is used for defining syntactic entities for production rules and
grammars.
2
Unified Modeling Language. The class diagrams have been generated using argoUML- an OpenSource
UML-based case tool developed in Java. (http://argouml.tigris.org)
14
3.1
Product Specification
Design synthesis is dependent product specification (PS) that could be established from
user-specified requirements. The PS can be established by converting various
requirements expressed in natural language into formal attributes (tokens). In this thesis,
we start with a formal product specification that could be generated by the designer from
the users’ requirement. Product specifications would be based on functional requirements
related
to
performance,
ergonomics,
cost,
size,
weight,
disposal/
recycling,
maintainability, power source, portability, manufacturability, etc. (not exhaustive).
Apart from the basic requirements, domain specific design knowledge would also to be
required for each product. A scheme for the representation of the PS is defined below
using a BNF-like notation.
A Product Specification (PS) Schema
<PS> ::= <attributes>…<global constraints>…<goals>…
<attributes> ::= <a_name><a_type> <a_rf> [<a_category>][<a_unit>][<a_value_range>]
<a_name> ::= literal name of the attribute
<a_type> ::= {function | artifact | input | output | internal}
<a_cat> ::= category of input or output type attributes
Category: physical or abstract measurable entities in the design domain like (mass, length, force,
torque, velocity, angular velocity, electric current, magnetic flux, area, volume, voltage, etc.)
Each category may have further sub-attributes to describe them.
<a_rf> ::= a specified relevance factor (relative importance) for the attribute; a
positive number.
<a_unit> ::=
unit of measurement ∈ (set of units), if any.
<a_value_range> ::= {quantitative <value_range>| qualitative <value_grade>}
<value_range> ::= <v1 v2> : v2 ≥ v1, v1 & v2 ∈ R
Above value range definition encompasses both a constant value (v1=v2) and an interval.
In general, intervals are used as closed intervals [v1, v2]. For practical usage, open
intervals could be taken as closed; alternatively, a small parameter ε could be added (ε>0)
and subsequently, limit εÆ0 could be taken. Value ranges like >10 would be represented
as [10, ∞] where ∞ will stand for infinity/a large number.
15
<value_grade> ::= qualitative grade ∈ (VH HI MO LO VL) with, for example,
membership values:
{VH/1 HI/0.75 MO/0.5 LO/0.25 VL/0.0)
possible grade
<global constraints> ::= a set of relations amongst the attributes
Constraints have been considered in three categories: relational, causal and spatial
<relational> ::= function(<attribute_name>[,<attribute_name>]…) EQ <value_range>
For example: in a rotary motion transformation, a global constraint requiring a speed
reduction of [5,6] could be represented by: PS.ωI.value/PS.ωO.value EQ (5,6), where ωI
is input and ωO is output rotary speed. If the values were specified as a range, the
arithmetic operators for working with intervals would be required. This has been
discussed in chapter 4 (section 4.3) where constraint transformations have been detailed.
<causal> ::= <attribute> {influences | depends_on} <attribute>[,<attribute>]…
Causal constraints indicate dependency of one attribute on other attributes but the exact functional
relation may not be known. These types of dependencies are useful for studying the qualitative
behavior of an artifact.
<spatial> ::= <attribute> <spacial_relationship> [<attribute>] [a_value]
This constraint is applicable for attributes that are of category ‘artifact’. This would represent
spatial (form) relationship between attributes having shape / size / orientation related properties.
<spatial_relationship> ::= <orientation><position><connection>
<orientation> ::= <direction cosine of attribute1 w.r.t. that of attribute2> .
Some examples of common orientations are: horizontal, vertical, perpendicular_to,
parallel_to, distance_from, etc. and some examples of spatial constraints (for a chair)
could be:
(‘arm’ parallel_to ‘seat’ )
(‘backrest’ perpendicular_to ‘seat’)
(‘seat’ horizontal)
(‘seat’ distance_from ‘base’ 2ft)
….
<position> ::= co-ordinate of center of attribute1 w.r.t. center of attribute2
<connection> ::= <connection_type><contact_details>
<connection_type> ::= <point2point | point2surface | surface2surface | others>
<contact_details> ::= set of points, surface, and common DOF of connection.
<global goals> ::= <objective function>[< constraints>]
<objective function> ::= global optimality evaluation functions.
As for example: minimize total_weight() or minimize cost(), etc.
16
It may be emphasized here that evaluation of global goals may not be feasible
immediately after a conceptual feasible solution has been arrived at. After a feasible
solution has been found that satisfy the input / output requirements and the constraints,
the solution has to be converted into a physical solution by a rough-cut detailed design
(sizing) to establish nominal dimensions of the parts (artifacts) and then the global goals
could be evaluated.
As an example, using above definition, a product specification for “an artifact that can
drill holes using standard drill bit” could be represented as an object:
product handheld_drill (
(fun to_drill ( (attr hole) (requires (art drillbit))
(requires (fun rotary_motion (art drillbit)))
(requires (fun axial_movement (art drillbit)))
(requires (fun to_hold (art drillbit))) )
(attr hole output 1.0 (attr (diameter length)))
(attr diam output 1.0 mm (0,10))
(attr leng output 1.0 mm (0,100))
(attr input power 1.0 watt (goal minimize))
(attr weight goal 0.5 kg (goal minimize))
(attr volume goal 0.5 mm3 (goal minimize))
(attr cost goal 0.4 dollar (goal minimize))
(attr handheld goal ? ?)
)
3.2
Artifact Representation
The term artifact is used here synonymously with physical object, device, component and
assembly (or sub-assembly) of components. In the object-oriented approach, all entities
like artifact, function, device, etc, are defined as classes. An artifact will have its
functional details, structural details and behavior model along with links to other artifacts
/ functions. The modeling of an artifact and its components for use in conceptual design
as well as in detailed design stage, including synthesis and analysis of geometric
tolerances, requires a high-level description which can be represented by a set of
17
attributes. This attribute/sub-attribute set forms a symbolic representation of the artifact
that can be manipulated by the design synthesis process as described in chapter 4.
3.2.1
Artifact Classification
Artifacts could be categorized according to their usage, generic shapes and functional
groups. This would facilitate efficient retrieval of artifacts from the artifact library. As for
example, following list could be used for parts having similar mechanical functionality
(Thornton’s list, Thornton (1994).
Group
Containers
Controllers
Fasteners
Load Bearers
Locators
Power Transmitters
Seals
Artifacts
Cover, Housing, Plate, Duct, Pipe
Valve, Gauge, Knob, Pointer, Nozzle
Clip, Bolt, Nut, Strap, Rivet Coupling, Pin
Bracket, Brace, Bearing, Web, Pillar, Rod, Spring
Joint, Spacer, Pivot, Pad, Key, Pin
Chain, Cable, Shaft, Pulley, Cam, Gear, Piston
Gasket, O-ring, Sleeve
The artifact representation model consists of three basic parts: a functional representation,
a structural (form) representation, and a behavioral representation. The form of an artifact
is expressed in terms of its constituent components and sub-components, and the
interactions between them. The form of each artifact representation consists of
information about
•
•
•
•
•
•
•
component/sub-component structure of the artifact
typical shape with the critical dimension outlined
rules for selecting and sizing the artifact
alternate shapes (and/or overall dimensions)
list of additional features and services which would be required to make the
artifact work in a real-life environment,
possible modes/situations in which the artifact might fail; and
material properties.
Components in a composite artifact (assembly) are also of type artifact and the assembly
contains references to these components. Components can be of two different varieties:
18
primitive or composite. Composite components are those whose internal substructure is
represented explicitly by a set of more detailed, lower-level sub-components, whereas
primitive components are simple.
The Artifact model contains artifact-specific information that not only helps in design
synthesis but also in studying its behavior in an assembly. Along with the key artifact
characteristics and component/sub-component structural description, the data model must
contain information on artifact tolerances and its kinematic variations. A detailed
definition of the artifact is presented below:
3.2.2
Generic Definition of Artifact
In order to capture the essential information of artifacts so that a general mapping
procedure could be adopted to evolve a design from a product specification, including
satisfaction of constraints, a generic definition of the artifact is presented below in a
BNF-like definition.
<artifact> ::=
{<aid> <purpose> <group><attr><requires> <structure>
<constraint> <goal> <art_tolerance> <art_behavior>}
<aid> ::=
literal identifier (name) of the artifact
<purpose> ::=
set of phrases to describe the functionality of the object
<group> ::=
artifact group
The group classifies the artifact into a category by the type of application it can perform.
<attr> ::=
list of attributes similar to those defined for a product
Attributes are of type (function, artifact, input, output, internal) and would have their own details
exactly as defined in product specification.
<requires>
::=
{<art><location><orientation>}|{<func>}
This is a link to other artifacts (<art>) or functions (<fun>) that are required by this artifact
<location>
::=
location of the component <art> w.r.t. l.c.s. of <artifact>
The location or position of the component in the main assembly where this part will fit with
respect to a local coordinate system on the main assembly.
<orientation>
::=
orientation of the <art> w.r.t. <artifact>
The orientation along with the location or position of the component in the main assembly will
define the structural links between the main assembly and the part.
<structure>
::= {<sid> <sketch> [<param>] [<s_behavior>] [<constraint>] [feature]
[<str_tolerance>]}…
19
Structure is defined here as a class which incorporates both abstract structure as well as physical
shapes of artifacts. The <sketch> entity in this structure is used to represent both structure types.
<sid> ::=
literal identifier (name) of the structure
<sketch> ::=
{<abst_sketch>[<cad_sketch>]}
<abst_sketch> ::= {<sk_node><k_behavior><sk_tol>}…
The abstract sketch is not a physical sketch. It’s a schematic representation of the bare minimal
structural information required during conceptual design. The <sk_node> entities are the nodes on
the structure where we focus our attention for input/ output/ other special features.
<sk_node> ::={<coord> <dof> [<ctrl_var>][<input_ref>][<output_ref>])
<coord> ::=
coordinates {<x_co> <y_co> <z_co>}
<dof> ::=
degree of freedom 6-tuple of (0|1)
This represents the six degrees of freedom associated with the particular node.
<ctrl_var> ::=
list of variables associated with <sk_node>
<cad_sketch> ::= CSG / B-Rep / Object representation of the artifact
It is a cad model file reference.
<constraint>
::=
as defined earlier in section 3.1
<goal> ::=
as defined in earlier in section 3.1
<art_behavior> ::=
method to represent overall behavior of the artifact
<s_behavior> ::= method to represent behavior of the structure
<k_behavior> ::= method to represent behavior of the individual sk_nodes
All the three behaviors are sub-classes to be inherited from a global behavior class.
<feature>
::=
structural features
<art_tolerance> ::=
tolerance class defined for the overall artifact
<str_tolerance> ::=
tolerance class defined for the structure
<sk_tolerance>::=
tolerance class defined for the individual sketch elements
All tolerance classes mentioned above are sub-classes to be inherited from a global (parent)
tolerance class define later in section 3.6
<input_ref>
::=
input parameter associated with the specific node (if any)
<output_ref>
::=
output parameter associated with the specific node (if any)
Class diagram of the artifact showing its relationship with other classes has been shown
in Appendix –1 (figure A1.1)
3.2.3
Representation of Internal Parameters of Artifacts
For purposes of the design synthesis, each artifact needs to be modeled with a set of
parameters that could effectively represent the behavior of the artifact in terms of the
input and output parameters. It is assumed that each artifact will have at least one
relational constraint of the form: C0(I, O, β) = 0, where O is the output, I is the input and
β is an n-vector internal parameter of the artifact. β = (β1, β2,… βn). The vector β is the
internal parameters defined in terms of physical attributes and laws governing the
performance of the system. It is also assumed that the input to an artifact as well as each
20
component of the parameter β will have a known feasible range of values. These limits
are the physical ranges within which the artifact can operate. Each component of β can be
expressed in parametric form as: βk = βk_Low + (βk_High - βk_Low) * θk :
θk ∈ (0,1) ,
k∈(1,n), where βk_Low is the lower limit and βk_High is the upper limit of value of βk .
Above relational constraint, C0(I,O,β) = 0, could be solved* for O, giving O = f (I, β).
This representation shows the main causal link between the input and the output of the
artifact.
As for example, a gearbox to reduce/increase the speed would have an internal parameter
µ which is the ratio of the number of teeth of the two gears and the main constraint is: C0
(Ni , N0 , µ) ≡ N0 - µ * Ni = 0 where Ni is the input speed, N0 is the output speed and µ is
the speed ratio. µ could have a range of, say, [0.25, 4], indicating that the gear box could
be used for reduction of speed of up to 1/4th as well as for increasing the input speed by 4
times. Depending on specific requirements dictated by the solution, suitable value of β
(here µ) will be selected.
Apart from the main causal link, C0, that links the input and the output, there could also
be several other constraints associated with an artifact which has the general form of:
Cj(I, O, β) <rel_opr> <val>, j >0
where <rel_opr> ∈ (LT LE EQ GE GT NE) is the relational operator and <val> ∈ R,
is a numeric value. In some cases, these relations would be converted to the standard
equality form Cj(I, O, β) = 0, by introducing additional auxiliary variables for the cases
*
In general, all constraint equations may not be solvable to express the output as an explicit function of the
inputs. In such cases, approximate numeric solutions could be attempted by linearizing the equations
around an operating point using small perturbations.
21
where the <rel_opr> is not “EQ”. As for example, Cj(I, O, β) ≡ β1 GE 12.00 would be
converted to: Cj(I,O,β) ≡ β1 – t – 12.00 = 0, where
t ∈ R+ is an auxiliary variable.
Along with all the information as described in the definition (section 3.2.2), each
component of an artifact needs to be modeled as being composed of a single material.
Materials are represented as members of material class.
The artifact definition should also have an attribute linked to a database of manufacturing
“know-how” (which has not been included in the present artifact definition). It should
also contain information on material-specific process capabilities and characteristics.
Two examples to represent an artifact using these definitions have been shown in
Appendix-2. There are two artifacts: the first one is a primitive (a spur gear) and the
second one is a compound artifact (a gearbox consisting of six primitive artifacts: two
spur gears, two shafts and two keys). While both the representations use the same artifact
definition given above, the second artifact uses the first artifact through the “requires”
parameter.
The representation for the spur gear (primitive artifact) begins with a list of physical
properties/attributes like material, diameters, thickness, etc. (we can add/modify as many
parameters as would be necessary to define the artifact). The 'input' and 'output' are
then listed. The 'requires, ‘constraints’, 'form / structure' and 'behavior' parameters then
follow. In this case, there was no constraint specified. The ‘behavior’ has been defined as
a set of state-space variables associated with the artifact.
22
For the gearbox (compound artifact), the representation follows a similar logic, however,
in this case, the ‘requires’ clause uses the spur gear primitive (defined earlier) along with
shaft and key elements. Also, in this case a constraint has been added as a relationship
between the output and the input. This forms the main constraint C0 defined earlier in this
section. The behavior also reflects the outcome of the combined elements.
3.3
Representation of Functions
In the early phase of design, most of the design decisions taken are concerned with the
desired characteristics and the overall functions of the assembly. By “Function” is meant
an abstract formulation (or definition) of a task that is independent of any particular
solution. In this phase, the abstract functional specification of an artifact is transformed
into a physical description. In the later phases of design, the physical decisions that are
made in the earlier phases, are elaborated to ensure that they satisfy the specified
functional requirements and life cycle evaluation criteria. In order to manipulate the
“function” information, a “functional data model” (that describes the functional
information throughout the design cycle) is needed so that appropriate reasoning modules
can interrogate and extract functional information during the decision-making processes
(as the geometric reasoning modules query data from the “product data model” (CAD
model) during the shape design process).
Depending on the design phase, different types of functions exist at different levels of
abstraction. In conceptual design phase, functions are usually independent of working
principle, whereas in later design phases, when the functions are detailed, they become
23
more and more dependent on the working principle that has been selected. Therefore, we
need to adopt such a formal function representational scheme that will be helpful when
modeling the overall function of the assembly in the conceptual design stage, and also be
useful to model smaller and smaller sub-assembly, particularly as the component and
feature levels are approached. The representation should also have unambiguous
semantics in order to perform analysis on (i.e. to manipulate) the functional description.
In this work, an attempt has been made to give a definition of a function, which captures
some of the basic features at abstract level, as well as detailed design level. Functions
defined here are also having a mechanism to incorporate functional equivalence classes
associated with a function. This means that a function will have references to other
functions that can collectively be considered equivalent to the function. The collective
equivalence could be of a combination of functions connected by ‘AND’ and ‘OR’ or
combinations thereof. Domain specific knowledge could be used to define such
equivalence classes. This will be a fundamental feature for functional decomposition
during the design process.
As for example:
function (‘rotary_motion to rotary_motion’) could be expressed as equivalent to:
function(‘rotary_motion to linear_motion’) AND
function(‘linear_motion to rotary_motion’)
A BNF-like definition for the function is given below:
<function> ::= {<fid> <input> [<art>…] <output> <constraint><eqv> <goal>}
<fid> ::= literal identifier (name) of the function
<input> ::=
set of <input_par>
<art> ::=
artifact through which functional requirements are achieved.
<output> ::=
set of <output_par>
<constraint> ::= set of <relationship> defined over the inputs, outputs and internal attributes of the
function
<eqv> ::= functional equivalence as discussed above
<goal> ::= {<optimality_measure_function>[<constraint>…]}…
<input_par> ::= {<iid><category><weight>[<unit>][<value_range>]}…
24
<iid>
::= literal identifier (name) of the input
<output_par>
::= {<oid><Category><Weight>[<unit>][<value_range>)…
<oid> ::=literal identifier (name) of the output
<weight> ::=
relative weigh of this parameter for this function
<unit> ::= unit of measurement ∈ (set of units)
<value_range> ::= as defined in section 3.1
A class diagram of the function class is shown in Appendix-1 (figure A1.2)
3.4
Representation of Behavior
The functional model as discussed in the earlier section is useful for conceptual design
where the design concept is evolved on the basis of the specified abstract functions.
However, the functional model is not sufficient to synthesize assembly/components
behavior. This is because of the fact that functional models do not adequately capture the
interactions of forces and kinematic motions between the part geometry. For instance, the
fit condition between a shaft and a bore cannot be expressed by a spatial relationship
since it does not provide functional design details such as contact pressure, contact force,
rotational torque, rotational speed, etc. at the shaft-bore interface. In order to synthesize
product/assembly behavior and geometric tolerances, full behavioral models of the
involved components in the assembly (including both the structural and kinematic
behavioral models) are required.
Behavior of a function is defined to be the set of values of parameters (which are related
causally) of the function either at a specified time or a series over a period of time
[Chandrasekaran (1996)]. Behavior of a function is context sensitive and as such,
behavior comes into play only in the context of a form. A function defined as an abstract
object often can be achieved through different forms / devices and the function will have
25
different behavior under each separate form / device context. A general behavior class is
defined using BNF-like structure as below:
<behavior>
::=
{<state_var> <causal_link><value_ref>}
<causal_link> ::= {[<depends_on>] [<affects_var>]}
<depends_on> ::=
set of variables that influences this variable
Represents input, if this set is null.
<affects_var> ::= set of variables that are influenced by this variable
Represents output, if this set is null.
<value_ref>
::=
{<tabulated>|<procedural>}
<tabulated> ::= set of (time, value), at discrete time ∈ R+, value ∈ R
<procedural>
::=procedure to return value of the variable at specified time.
The procedure could be in a closed form parametric function of time x = x(t) or an
implicit functional representation f(x, t) = 0 that can be solved for x, given t > 0 or some
procedural representation which has no closed form but x could be computed, given t.
As for example:
(flow_rate
(depends_on (area_of_flow) (pressure))
(affects_var pressure_drop)
(procedural
(if flow_is_turbulent() then flow_rate(t) := f1(t)
else flow_rate := f2(t)
)
)
Figure A1.3 in Appendix 1 gives a class diagram of the behavior class.
3.5
Artifact Library
The proposed design synthesis process (as detailed in chapter 4) is based on searching
artifact library containing artifacts that could meet specific functional requirements; in
other words, an artifact library (ARTL) is needed that contains artifacts with known
inputs, outputs and a set of variable internal parameters. This artifact library could be
thought of as a knowledge base for searching artifacts that meet specified input/output
patterns in specified design domains.
26
As mentioned in section 3.3, functions could have their equivalent classes and so also
could artifacts – the functionalities of an artifact could be met by combination of two or
more artifacts. The artifact library could contain this knowledge for ease of searching. In
order to illustrate the steps for the design evolution, a sample artifact library has been
developed (Appendix – 3) and the same has been used in the design synthesis example
shown in Chapter 4.
3.6
Tolerance representation
All five categories of tolerances specification, size, form, orientation, run out and location
tolerances (as per ASME Standard Y14.5M-1994), have to be represented in the tolerance
data structures. Tolerance specification involves the specification of a datum reference
frame (DRF) and the relationship among five kinds of tolerance shape elements: vertex,
edge, surface, axis and median plane [Roy (1998)]. Whenever a tolerance specification
requires a datum system to establish the position and orientation of features with respect
to other features, a datum reference frame is provided. It may be three-plane coordinate
system, axes, or an ordered set of features. Size tolerances provide limits for the size
(linear and angular) of a feature, the extent within which variations of geometric form as
well as size are permissible. The size data structure contains a record of the nominal
value and its maximum and minimum variations. Form tolerances (straightness, flatness,
roundness and cylindricity) are used on individual features (single surface, edge, axis or
median plane) and its data structures needs the description of the form tolerance type and
the specific tolerance value. Angularity, parallelism and perpendicularity are included in
orientation tolerance. The data record of the orientation tolerance includes types of
27
orientation tolerance, tolerance value, MMC (material) condition and a pointer to the
DRF record. Tolerances of location state the permissible variation in the specified
location of a feature in relation to some other feature(s) or datum(s). Its data structure
contains location tolerance type, type of tolerance shape element, tolerance value, MMC
conditions, and a pointer to the DRF record.
The incorporation of tolerance models within the artifacts solid model is fundamentally
based on applying tolerance as the design constraints to the solid objects. These
constraints are driven by the features parameters of the solid object as well as by its
geometry. Constraints are specified to both unevaluated (CSG) and evaluated (B-Rep)
forms of the solid model. The constraint descriptions are independent of the “set
operator” description of the solid model and they are specified and attached to the
tangible and intangible topographical entities only, apart from the CSG and B-Rep data
structure.
Tolerances are associated with features of components and as such the generic tolerance
definition would be used in the definition of artifacts, parts as well as features. A generic
BNF-type definition of tolerance representation is given below and the class diagram for
tolerance representation is given in Appendix –1 (figure A1.6).
tolerance ::= {<tol_category><tol_value>[[<modifier>]<datum_ref>]}
tol_category ::= { size_tol | form_tol | orientation_tol | location_tol | runout_tol }
tol_value ::= {<base_value>[ ± <range_value>]}
base_value ::= numeric value ∈ R+
range_value ::= numeric value ∈ R+
modifier ::= { MMC | LMC | RFS }
MMC ::= ‘Maximum material condition’
LMC ::= ‘Least Material Condition’
RFS ::= ‘Regardless of Feature Size’
datum ::= {<local_datum> | ∈ <global_datum_list>}
local_datum ::= {<datum_name><feature><feature>[<feature…}
global_datum_list ::= {<datum_name><feature>}…
28
feature ::= <feature_id><feature_type>
feature_id ::= a literal name of the feature like F1, F2, etc.
feature_type ::={planar | cylindrical | median plane | spherical | conical | others}
The class structures described in this chapter form the basis for the design and tolerance
synthesis schemes discussed in the subsequent chapters.
29
I never saw an ugly thing in my life: for let the form of an object be what it may,
- light, shade, and perspective will always make it beautiful.
--John Constable
Chapter 4
Design Synthesis: Function-to-Form Mapping
The design of an artifact to satisfy the product specification (PS) is a complicated
process. The design process is considered evolutionary in nature because we start with
incomplete knowledge about the final product and continue to evolve from a conceptual
design stage to a concrete form/shape. As more knowledge about the product and its
functional requirements are made available, the set of specifications/requirements change
to take into account this new knowledge. In the present approach, suitable functional
entities are searched in the corresponding artifact library to arrive at a starting point for
the conceptual design. At this stage, some of the attributes specified in PS could have
been found and some of the functional requirements may have been satisfied. In order to
proceed further, more knowledge is required to be injected into the system and the set of
specifications need to be transformed for subsequent enhancement of the initial solution.
The design of an artifact is represented as D ::= {<PS><Art_Tree>} where <PS> is
Product Specification and <Art_Tree> is the artifact tree1 (also called assembly graph
and can be treated as a linked list of artifacts).
1
The term ‘artifact tree’ is used here in a somewhat relaxed sense, as the artifact is not a tree in strict graph
theoretical definition because there could be loops in the assembly graph - more appropriate term would be
artifact graph.
30
The artifact tree is empty at the beginning. Subsequently, as suitable artifacts are mapped
to perform a desired functionality, these artifacts are added to the artifact tree. As the
artifacts in the artifact library (ARTL) has been considered as input-output systems,
outputs from an artifact that are not in the PS become inputs to the next artifacts that may
be added to the artifact during next stage of design evolution. Outputs that could be
mapped in the PS are terminals. Also, the designer may designate an output as terminal
so that further mapping of this output, as input to a new artifact, is not required. This
approach for design synthesis generates stages of (sequence of) partial solutions as shown
below.
D0 = {<PS0><Art_Tree0>}
D1 = {<PS1><Art_Tree1>}
D2 = {<PS2><Art_Tree2>}
…
Dn = {<PSn><Art_Treen>}
where <Art_Tree0> is NULL (at the beginning)
At each stages of evolution, the partial solutions are checked for convergence to the
desired output specified in the PS. This checking is performed using two basic criteria: a
constrained norm minimization process involving the relational constraints associated
with the product specification and the individual artifacts. The norm (defined later in this
section) is the ‘distance’ of the partial solution from the desired output. After the
minimization, spatial constraints are checked. Based on the above two process, the set of
candidate artifacts that have been identified, are graded from ‘best’ to ‘worst’ at that
particular stage. A design alternatives control parameter, Nalt as the number of artifacts
(that are most desirable in the graded list) to be considered for the next stage is used to
reduce the search space. This implies that, for example, if in a stage 10 artifacts are
31
mapped and Nalt has been set by the designer as 3, only the ‘best’ three of these 10 will be
used as possible candidates in this stage and searching would continue from those 3 only
for the next stage. It may be noted here that as Nalt increases, possibilities of more diverse
solutions increase. This is a desirable feature because more alternative design solutions
can be explored. However, there is a cost associated with the increase in Nalt in terms of
computation time and storage requirements. In the proposed system, this design control
parameter Nalt has been kept as a designer-selectable value so that the designer can
experiment with different values for Nalt to decide suitable values for specific design
domains.
The design synthesis process at some intermediate stage will have at most Nalt branches
from each of the artifacts in that particular stage. The process of expanding a particular
branch will terminate when one of the following conditions has been reached.
i)
A feasible solution satisfying the output specification, relational constraints as
well as spatial constraints have been satisfied. This means that the minimization
process discussed earlier has resulted in an acceptable distance between the
desired output in PS and the partial solution. We designate this acceptable
distance as a convergence criterion, ∈0. Thus d ≤ ∈0 is the termination criteria.
ii)
The search for a suitable artifact from the artifact library failed to map at least one
artifact and hence the design synthesis process cannot proceed further.
There are some basic considerations in the design evolution process depicted above that
need further investigations. These are: transformation of PSn to PSn+1, including attribute
transformation, constraint transformations, and variation of internal parameters of each
32
artifact for searching a solution as a minimization process. These have been discussed in
the following sections, before the design synthesis procedure is presented.
4.1
Transformations of Product Specification (PS)
The design evolution process depends on transformation of the Product Specification as
the design progress from one stage to another stage of the design synthesis process. The
PS transformations consist of Attribute Transformation, Constraint Transformation and
the Variation of Internal Parameters as detailed in the following sections
4.2
Attribute Transformation
The product specification PS0 contains the initial specification with PS0.Inp and PS0.Out
as sets of input and output specifications, respectively. Assuming that at stage j, a sub-set
of these sets of requirements have been satisfied, PSj
is transformed into PSj+1 as
described below.
Let us assume that an artifact, Artjk has been found in the design stage j with some
elements of Artjk.Inp are in PSj.Inp and some elements of Artjk.Out are in PSj. Out.
We can present this as a union of two mutually exclusive sets
Artjk.Inp = Artjk.Inp1 ∪ Artjk.Inp2
where Artjk.Inp1 ⊆ PSj.Inp and Artjk.Inp2 ⊄ PSj.Inp
Artjk.Out = Artjk.Out1 ∪ Artjk.Out2
where Artjk.Out1 ⊆ PSj.Out and Artjk.Out2 ⊄ PSj.Out
If Artjk.Inp2 is NULL then all input requirements of the artifact Artjk are in the product
specification PSj.Inp and this artifact needs no further artifacts whose output should be
33
mapped to inputs. Otherwise, we transform the inputs to a new set of outputs for some
artifact to be searched with:
PSj+1.Out = PSj.Inp ∪ Artjk.Inp2
If Artjk.Out2 is NULL then all outputs of the artifact Artjk are in the product
specification PSj.Out and the outputs of this artifact need not be mapped as input to some
other artifact. Otherwise, we transform these outputs to a new set of inputs for some
artifacts. Here, the designer can accept some of these outputs as by-products to the
environment and treat them as already satisfied. The remaining outputs are then
transformed into a set of new input specification as:
PSj+1.Inp = PSj. Out ∪ Artjk.Out2
4.3
Constraint Transformation
Constraints play a major role in any design by restricting the design search space from an
open-ended search to a more restrictive (and hopefully, of polynomial time) search. In
other words, constraints could be thought of as a guiding mechanism for evolving a
design along some restricted path.
In the present case, constraints have been categorized into three separate categories for
ease of treatment/management. These are: relational, causal and spatial.
Relational constraints are functions relating attributes (or parameters of attributes)
according to some physical law or some other restrictions.
<relational> ::= f(<attribute_name>[,<attribute_name>]…) EQ <value_range>
The function f could be of three types: explicit, implicit or parametric.
<explicit | implicit> ::= f(X) ∈ R, X ∈ Rn
34
<parametric> ::= f(X(t)) ∈ R, t ∈ Rn : tj ∈ (0,1) & Xj = Xj0 + tj* (Xj1 - Xj0)
If f is a vector valued function, it could be treated as a set (f1,f2,…fn) of n scalar functions
such that fj ∈ R , j∈(1,n).
For example, in a rotary motion transformation, a global constraint requiring a speed ratio
(assuming ωI as input and ωO as output rotary speed) could be:
PS.ωI.value/PS.ωO.value EQ (5,6) ; a reduction of 5 to 6 is desired
It has been mentioned earlier, during discussion on artifact representation, that range
(interval) will be accepted as possible values for any parameter. Since relational
constraints are functions involving such parameters, standard interval arithmetic [Moore
(1966)] has been used to treat these types of values. The interval arithmetic that would be
required to deal with ranges of values for attributes for this work has been given in
Appendix –4.
Transformation rule for four basic types of constraints:
Additive: ADD(x,y,z) ::= x + y = z
If x and y then z = x+y
If x and z then y=z-x
If y and z then x=z-y
Multiplicative: MULT(x,y,z) ::= x * y = z
If x and y then z=x*y
If z and x and x !=0 then y=z/x
If z and y and y !=0 then x=z/y
Subtractive: MINUS(x,y,z) ::= x - y = z
If x and y then z = x-y
If y and z then x=y+z
If x amd z then y=x-z
Functional: FUNC(x,y) ::= y = f(x) , f ∈ M+
35
We will also need another constraint DERIV(x,y) for studying the behavior of artifacts,
derivative: DERIV(x, y) ::= y = dx/dt , f ∈ M+
A constraint defined by f(y1,y2, y3, …yn) = 0 is converted to a set of n equations, by
solving for each yj in terms of the others.
y1 = f1(y2, y3, y4 …)
y2 = f2(y1, y3, y4 …)
y3 = f3(y1, y2, y4 …)
….
If such an explicit representation is not possible, the constraint may have to be
represented in a different way, either by linearizing about some operating point, or by
approximating into simpler forms.
If an attribute of an artifact is linked/related to another attribute in a linked artifact, two
possible cases occur: an output attribute goes as an input to the next artifact or an input
attribute comes out as an output. In either case, the corresponding component of the
constraint is used and it is solved for the new range for the parameter. This new range
accompanies the attribute as a constraint to the next artifact. In the next artifact, there
may be a priori knowledge about the range of an attribute within which that artifact
operates. In order that the incoming attribute value range is acceptable, intersection of the
two intervals are performed as: Pin ∩ Pallowable. If the intersection is NULL, there is a
contradiction and the constraints associated with the incoming attribute P makes the new
artifact unsuitable for a possible element of the artifact tree.
4.4
Variation of Internal Parameters of Artifacts
As it has been pointed out in earlier in this chapter, artifacts are searched from the artifact
library by matching input parameter types for possible candidates in the solution.
36
However, a suitable measuring and optimizing criteria would be required for guiding the
design solution. In other words, some criteria for selecting the ‘best’ possible candidate at
each stage from a possible set of artifacts have to be formulated.
A ‘distance’ type norm is defined for measuring the proximity between the desired output
(as specified in PS) and the partial solution reached at some stage j, as:
d(a,b) = ( (alow-blow)2 + (ahigh-bhigh)2 ) 1/2
where a and b are two variables representing closed intervals
a = [alow, ahigh] and b = [blow, bhigh]
Above definition satisfies properties of a norm:
d(a,b)=0 iff alow = blow and ahigh = bhigh
d(a,b)>0 for a != b
d(a,b) = d(b,a)
We would, sometimes, use a parametric form to represent intervals a and b.
As for example, a = alow+(ahigh-alow)*θ : θ ∈ [0,1]
While the range of feasible variations of the input will be used to check for suitability of
accepting an artifact, the variations allowed in the internal parameters of the artifact
would be used to minimize the ‘distance’ between the desired output as specified in PS
and the output (partial solution) at the present stage. The minimization scheme is
formulated as below:
Minimize: d(Oj, O0)
where, O0 is the output specified in the PS and Oj is the output from the artifact j in an
intermediate stage of the design.
37
The partial solution Oj is given by: Oj = fj (Ij, βj), which is derived from the main
constraint C0 (relationship between the input and the output of the artifact j, vide section
3.2.3), by solving for Oj from Cj0 (Ij, Oj , βj) = 0.
The parameter β (where βj = (βj1, βj2,… βjn) ) is the internal parameter of artifact j (vide
section 3.2.3).
The parameter β is expressed in parametric form as: βjk = βjk_Low
+(βjk_High - βjk_Low)* θjk : θjk ∈ (0,1), k ∈ (0, n). The subscripts Low and High indicate
the lower and upper bounds of the interval for βjk.
It is also possible that apart from the Co constraint, an artifact may have additional
relational constraints associated with it. These relational constraints are expressed as:
Ck(I, O, β) <rel_opr> <value> , where k>0 and <rel_opr> is the relational operator (one
of {LT LE EQ GE GT NE}), and <val> is a numeric value. For the optimization
scheme, these relationships are converted to the standard equality form Ck(I, O, β) = 0, by
introducing additional variables for the cases where the <rel_opr> is not “EQ”).
The input to the artifact j, Ij is equal to the output from the previous artifact j-1 and so on.
These give rise to the chain of linked equations and the optimization scheme becomes:
Minimize: d(Oj, O0)
subject to:
; constraints associated with artifact j
Cj0 (Ij, Oj , βj) = 0
Cj,1 (Ij, Oj, βj) = 0
…
Cj,c(j) (Ij, Oj, βj) = 0
Ij = Oj-1
; constraints associated with artifact j-1
Cj-1,0 (Ij-1, O j-1, βj-1) = 0
Cj-1,1 (I j-1, O j-1, β j-1) = 0
…
Cj-1,c(j-1) (Ij-1, Oj-1, βj-1) = 0
Ij-1 = Oj-2
38
; constraints associated with artifact j-2
Cj-2,0 (Ij-2, ,Oj-2 , βj-1) = 0
Cj-2,1 (Ij-2, Oj-2, βj-2) = 0
…
Cj-2,c(j-2) (Ij-2, Oj-2, βj-2) = 0
…
I2 = O1
; constraints associated with artifact 1
C1,0 (I1, O1, β1) = 0
C1,1 (I1, O1, βj) = 0
…
C1, c(1) (I1, O1, β1) = 0
Above minimization scheme could be solved using Lagrange multiplier scheme by
including the constraints into the main optimization function as:
dj = d(Oj , O0) + Σn∈ (1, j) Σk∈ (1, c(n)) (µn,k* Cn,k(In , On , βn)) + Σp∈ (1, j-1) (λp * (Ip+1 – Op))
where c(n) is the number of constraints associated with artifact n, and µ’s and λ‘s are
Lagrange multipliers.
The minimization of dj produces a set of parameters (β*n), for each artifact n ( n ∈ (1 , j)),
which makes the present solution closest to the desired solution. We denote by dj* and
Oj* the corresponding optimal distance and output. If the value of dj*(Oj*, O0) is within a
specified value ∈0 (convergence criterion), we can accept the current design solution
given by Dj = {<PSj><Art_Treej>} as a feasible solution. However, if the distance dj* is
not within acceptable limit, the solution at this stage represents a partial (an incomplete)
solution i.e. the desired output value has not yet been achieved yet.
The above minimization process deals with the relational constraints only. After the
minimization has been performed, (irrespective of the solution whether an acceptable
feasible solution or a partial solution), the spatial constraints are then checked. There can
arise four situations after the spatial constraints are applied.
39
i)
A feasible solution has been achieved and the spatial constraints are all satisfied.
ii)
A feasible solution has been achieved and all the spatial constraints are not
satisfied.
iii)
An incomplete solution has been achieved and the spatial constraints are all
satisfied.
iv)
An incomplete solution has been achieved and all the spatial constraints are not
satisfied.
The case i) represents a complete solution and the corresponding branch of the tree can
be terminated without further growth. The rest three cases are incomplete and the
branching / growth of the solution tree continues to the next stage.
4.5
Design Synthesis Process
Before the functional requirements could be transformed into suitable artifacts that could
perform the desired inputÆoutput transformation, the product specification is searched to
produce a linked list of functional elements that could perform the desired functional
requirements. This process can be represented in a pseudo-code as shown below:
for each functional attribute attrj ∈ Prod_Spec do:
{
if type(attrj) is input then
search function library to locate function fun k ,
∃n, ∃k :
funk .type(attrn ) == input AND
funk .Category(attrn ) == Prod_Spec.Category(attrj);
else if type(attrj) is output then
search function library to locate function fun m ,
∃p, ∃m :
funm .type(attrp ) == output AND
funm .Category(attrp ) == Prod_Spec.Category(attrj);
endif
}
40
At the end of this search, there will be two sets of functional elements, pFunIn and
pFunOut which will represent the terminals of the functional tree; pFunIn being the
starting point and pFunOut is the ending point.
Set of inputs of Prod_Spec ⊆ (∪ inputs(pFunIn)) and
Set of outputs of Prod_Spec ⊆ (∪ outputs(pFunOut))
The next task is to locate suitable intermediate functions (symbolically shown with dotted
rectangles in figure 4.5) to connect the pFunIn and pFunOut.
…
pFunIn
pFunOut
…
…
…
…
Figure 4.5 Schematic diagram for transforming input functions to outputs
Above task could be completed using the following algorithm:
level = 0;
iFunlevel = pFunIn
repeat
for each function ifunj in iFunlevel do: // j=1..no of functions in iFunlevel
if ∃k, ∃m : ifunj .Category(outputk) = pFunOut .Category(outputm) then
// a terminal for has been located for outputk of ifunj
mark outputm as found
else // new function required for outputk (ifunj)
// locate a suitable function ftemp
if ∃m : ifunj .Category(outputk) = ftemp .Category(inputm) then
put ftemp in the set iFunlevel+1
else
// a suitable function could not be located.
// needs new functions to be introduced
// in the function library. interaction with
// designer required to get such a function.
// terminate execution
endif
endif
// go for decomposition of next level functions
level = level +1
until all outputs of pFunOut has been marked as found.
// 2nd stage: function-to-artifact mapping
41
// In this stage, each of these functional elements would be mapped with a
// suitable artifact from the artifact library to achieve the desired functionality.
// The steps for the artifact library search is described in the design synthesis steps // below
The steps in the design synthesis process could be represented as below:
1.
Start with a product specification (PS) and a null design object D.
2.
Take an attribute from the PS (PS.Attrj) and locate a set of artifacts from the artifact library(ARTL) each having
the same category of attribute as in DP.Attrj.
For all artifacts in ARTL Do:
If PS.Attrj.type = ARTL.artk.attrm.type AND
PS.Attrj.category = ARTL.artk.attrm.category then
// an artifact is found, save the pointer in DTemp
endif
End Do
If Dtemp is NULL then no artifact could be found
If all attributes are checked then
Exit loop 2
else
Check with the next attribute PS.Attrj+1
endif
Else
Exit loop 2 // at least one artifact has been found!
Endif
3.
If Dtemp is NULL then
// consult a functional equivalence (FE) class library (which is defined based on the design domain- specific
knowledge) to try to replace a functional requirement with a set of functions that can collectively perform the
desired functionality. Modify the PS accordingly and continue with loop 1.
// if all such functional equivalences have been exhausted and even then
none of the attributes in PS could map a suitable artifact from the ARTL. The PS needs futher refinement,
addition of new attributes and / or addition of new artifacts in the ARTL.
Terminate.
Endif
Apply the constraints associated with PS.Attrj to all the artifacts in Dtemp.
If Dtemp contains more than one artifact then
Apply heuristics to select the ‘best’ N artifacts (N>=1, specified)
// note N>1 means we continue with more than one artifact that has been found.
/*
This would be a desirable feature from ‘getting variety of alternative designs’ point of view. Also, though the
constraints for the attribute may be ‘best’ satisfied for one artifact, other artifacts with partially satisfied
constraints may lead to better alternative designs. This is due to the fact that some global constrains and goals
which could not be checked / applied at this stage, may be better satisfied after all the functional requirements
have been found.
However, as N increases, the solution space expands rapidly, and may be restrictive from computational point
of view. This aspect has to be studied further to decide reasonably good upper bound on N.
*/
Endif
42
4.
Althouh N could be more than 1, henceforth we proceed with one alternative from the Dtemp. Identical procedure
will be applicable for all the alternatives.
Let D1 = Dtemp.Art1
Modify the attribute values with those in PS and percolate the constraints.
The design space D now contains one artifact. In general, this artifact will have other attributes and constraints
associated with it. Now, in order to consider this artifact as an element of the solution D, these are also to be
considered as part of the design specification. Thus we will now augment the design spec PS with the unsatisfied
attributes of this artifact.
Let DI = set of input parameters of D1.Atr1
DO= set of output parameters of D1.Atr1
If some of the elements of DI and DO are already in PS, we mark them as found otherwise, and remove them from
DI & DO. The remaining attributes need to be satisfied.
Since both the above two sets were not a desired requirement, we would put a negative weight to these attributes
(undesirable?) and augment the PS with these new sets of attributes along with associated constraints.
We will now search for artifacts from the ARTL by transforming the DI and DO as: Generate a temporary subdesign spec with input attributes = DO and output attributes = DI
// input DI to D1.art1 must come as output of some other artifact or from a terminal which we also consider as
artifact with no input and one output (like an electricity supply point as a terminal that supplies electric energy and
need no further input)
// output DO from D1.art1 must either be accepted as an undesireble by-product to the neighborhood and no
further exploration would be required or the output must be mapped as in input to some other artifact.
The solution D1 is now copied as D2 and next search proceeds. This search would be identical to the one carried
out in section 2 above.
Thus at each stage of evolution of design solution, further artifacts would come in the D’s and the solution will
grow in many directions. We will keep track of each stage of solution along with corresponding product spec in a
stack as:
{<D0,PS0>,<D1,PS1>,<D2,PS2>,…,<Dn,PSn>}
The process will terminate when one of the following is satisfied.
1. All the attributes in the PS has been found: In this case, a feasible solution has been found. Now, the solution
Dn the global constraints and goals could be evaluated.
2. Some of the attributes are yet to be found and no further artifact could be located in ARTL. In this case,
either the designer will provide some more domain specific knowledge in the PSn or some new artifacts
would be added to proceed further.
However, in order to explore other possible solutions, we may backtrack one step to <Dn-1, PSn-1> and
consider other less favorable possibilities.
Above procedure is described in the following steps:
0.
Develop design domain specific artifact library (ARTL), functional equivalence
library (FUNL) and domain-specific knowledge base (DK). For the time being,
we assume that the DK is specified in the form of constraints and relations in the
43
PS itself. However, these could be separated out for treating them in a generic
way.
1.
Start with a product specification PS.
2.
Locate suitable artifacts from the ARTL mapping the input parameters from the
product specification with those of the artifacts having same input type. If no
artifacts are found, go to step 8.
3.
Check whether the type of output from some of these artifacts matches the output
types specified in PS. Divide the artifacts into two sub-groups: one with artifacts
whose output matches the desired output (DM) and other where such a match is
not found (DNM).
4.
a) With DM
Generate the distance function between the output and the desired output in PS
and minimize the distance along with the constraints associated with the
attributes.
1. If the distance for some of the artifacts are within a specified acceptable value,
a possible solution has been found.
2. Apply the spatial constraints to these artifacts. If these constraints are
satisfied, go to step 10
3. If the distance is not within the acceptable value, only a partial solution has
been found. Take the top Nalt artifacts nearest to the solution. Go to step 5.
b) With DNM
44
In this case, the minimization criteria cannot be applied yet since the output type
did not match the desired output type in the PS. The minimization scheme can
only be applied when a match for the desired output has been found. Proceed to
step 5.
5.
Generate new sets of attributes and transform the constraints to augment the PS so
that additional attributes associated with the selected artifacts could be taken into
account.
6.
Repeat steps 2 to 5 with transformation of the product spec PS.
7.
Continue untill such time the entire attribute requirements are satisfied or some
attributes could not be mapped.
8.
At any stage, if some attributes could not be mapped, there would be three
alternatives: look for a possible functional equivalence class and modify the PS
accordingly and continue search. If such a functional equivalence class is not
found, consult with the designer to acquire new attributes, knowledge, constraints
and/or modify existing specification. Repeat steps 2-5 after such modifications. If
above steps still fail to map some attribute requirements, the designer needs to add
new artifacts in ARTL and/or add new functional equivalence classes in Function
Library. After this step, repeat the process again.
9.
In case all options have been exhausted at an intermediate stage, and a feasible
solution has not been found, consider the possibility of going back one step
(backtracking) and consider other less favorable paths with artifacts with lesser
matches.
45
10.
After a feasible solution has been found, a tentative sizing of the components of
the artifacts is carried out by using the attribute values specified and by applying
the physical laws governing the behavior of the artifact. If during this process,
some parts could not be sized within acceptable range of values, consider possible
change of the PS and go to step 7.
11.
Introduce tolerance models associated with each artifact in the artifact tree and
carry out tolerance analysis. If during this process, tolerance requirements for
some parts are not feasible, consider changing PS and go to step 7.
12.
Consider manufacturability of the artifacts in the design solution. Apply criteria
for manufacturability. If during this process, some manufacturing requirements
for some parts are not feasible, consider changing PS and go to step 7.
13.
Consider global goals and constraints associated with the product specification. If
the global constraints are satisfied, initiate global optimization processes and
consider changing the PS again to achieve some global goals and go to step 7.
14.
A feasible design has been found.
The iterative design synthesis process will terminate when one of the followings is
satisfied.
1. All the attributes in the PS have been found and the desired output value level has
been achieved. In this case, a feasible solution has been found. Now, the global
constraints and goals could be evaluated.
46
2. Some of the attributes are yet to be found and no further artifact could be located
in ARTL. In this case, either the designer will provide some more domain
specific knowledge in the PSn or some new artifacts would be added to proceed
further. However, in order to explore other possible solutions, we may backtrack
one step to Dn-1 and consider other less favorable possibilities.
4.6
Observations on the Design Synthesis Process
In general, an artifact may have more than one input and output attribute and constraints
associated with them. In order to consider the artifact as an element of the solution, these
attributes are also to be considered as part of the design specification. Thus, we need to
augment the design specification with the unsatisfied attributes of this artifact.
If some of the input and output attributes are already in PS, we mark them as found the
remaining attributes need to be satisfied. Since these inputs and outputs were not in the
original product specification, they are not desirable from the product specification
requirement. However, these must be mapped to other artifacts. We would put a negative
weight to these attributes (undesirable?) and augment the PS with these new sets of
attributes along with associated constraints.
With this augmented PS, we will now search for artifacts from the ARTL. The input
attributes must come as output from some other artifact or from a terminal that we also
consider as artifact with no input and one output (like an electricity supply point as a
terminal that supplies electric energy and need no further input)
47
The output attributes must either be accepted as an undesirable byproduct to the
environment and no further exploration would be required or the output must be mapped
as in input to some other artifact.
As an example, the above proposed design procedure has been applied to a simple design
problem and the steps have been elaborated in the next section.
4.7
An Example of Design Synthesis
Design problem statement: Design “a device to increase the rotational speed by a factor
of 10”. The product specification is as below:
PS = (
(function rotation to rotation)
(input wI rotary_motion rad/sec 0 wi0)
(output wo rotary_motion rad/sec 0 wo0)
(constraint relational wo = wi / 10)
(constraint spatial (axis(wI) parallel_to axis(wo))
// some other attributes, not essential for the example have been left out.
)
Let PS0 = PS. The design is started with PS defined above and solution
D0 = ({PS0}, {null})
To make the example easier to follow, we will use Ai,j to indicate artifact Ai as used in
stage j
The attribute PS0.wI is an ‘input’ and the type of the ‘input’ is ‘rotary_motion’. Searching
the artifact library ARTL, we find artifacts {A1, A2, A3, A4, A5, A6, A7, A8} all having
the same ‘input’ category with ‘rotary_motion’ as type. Hence D0 = ({PS0}, {A1, A2, A3,
A4, A5, A6, A7, A8}). The set of artifacts {A1, A2, A3, A4, A5, A6, A7, A8} can satisfy the
‘input’ requirement. Thus we set,
D0=({PS0}, {A1,0, A2,0, A3,0, A4,0, A5,0, A6,0, A7,0, A8,0})
48
There are no more ‘input’ category attributes. We now check whether the outputs of these
artifacts match the output specified in the PS. We find that artifacts {A4,0, A6,0, A7,0}
meets this requirement. Thus, at this stage, we have two distinct subsets of D0 , D01=
({DP0}, {A4,1, A6,1, A7,1}) and D02 = ({DP0} {A1,1, A2,1, A3,1, A5,1, A8,1}). While each
artifact in D01 can meet both input and output requirements of PS, those in D02 only meet
the input requirement.
The two sets D01 and D02 require different treatments and we split the design synthesis
into two segments.
Segment #1: With D01
Since both input and output requirements have been found, we apply the
constraints and see how far the constraints are satisfied:
For artifact A4,1:
Its internal relationship is: wO = wI * R, where R=[0.25,4.0]
In parametric form, it becomes R = 0.25+3.75*θ, where θ ∈ (0,1).
Minimization scheme: minimize d(PS0.wo, D1.A4.wo)
d = d(10*wI, (0.25+3.75*θ)*wI)= wI*(9.25-3.75*θ)
Î θ* = 1.0 for minimum d = 4*wI.
With this θ*, d is not yet zero, so the artifact A41 can only meet the output
requirement partially. We need to add some other artifacts to the artifact 4 to
reach the desired output. In this stage, with (θ*, wo*) = (1, 4.0 * wi )
Similar computations with artifact A6,1 and A7,1 also leads to incomplete
fulfillment of the desired output level, which are (θ*, wo*) = (1, 3.0 * wi ), (θ*, wo*)
= (1, 4*wI) respectively.
49
Now, applying the spatial constraints, we see that:
Art A4,1: axis(w1) parallel_to axis(w2) IS TRUE
Art A6,1: axis(w1) parallel_to axis(w2) IS TRUE
Art A7,1: axis(w1) parallel_to axis(w2) IS FALSE
Thus, at this stage, by considering above two constraints (both relational and
spatial) satisfaction criteria, we grade artifact A4,1 as the most appropriate artifact,
followed by artifact A6,1 and artifact A7,1.
For the next stage, in order to search for new artifacts that can take outputs from
the above 3 artifacts (artifacts {A4,1, A6,1, A7,1}), we transform their corresponding
outputs to the desired inputs for the new artifacts.
The spatial constraint has been satisfied for artifacts A4,1 and A6,1 and would need
no further transformation; however, the spatial constraints for artifact A7,1 has not
been satisfied and needs to be transformed as: axis(w1) perpendicular_to axis(w2).
This is because the current unsatisfied constraint axis(w1) parallel_to axis(w2) (an
angle of zero) could not be met. The constraint axis(w1) perpendicular_to axis(w2)
(an angle of 900 ) is converted to axis(w1) perpendicular_to axis(w2) (an angle of
900 ), so that the combined effect of another artifact which meets this requirement
would produce 0 or 180 as parallel, the final requirements.
With these modified specifications, we carry out the search again.
First we take the case of artifact A4,1 and find that all the artifacts A1 - A8 can
take the corresponding output as input.
50
Applying the same procedure as it was followed in the previous stage, we come
across artifacts D2= {A4,2, A6,2, A7,2} as possible candidates. Applying the norm
minimization criteria:
For Artifact A4,2:
Its internal relationship is: wO = wI * R, where R=[0.25,4.0]
In parametric form, this becomes R = 0.25+3.75*θ, where θ ∈ (0,1).
Minimization scheme: minimize d(PS0.wo, D2.A4.wo)
d = d(10*wI, (0.25+3.75*θ)*4*wI)= wI*(10-1-3.75*4*θ)
Î (θ*, wo*) = (0.6, 2.5 * wI) for minimum d=0.
Thus, D2 = ({{PS1}, {A4,1}}, {{PS2}, {A4,2}}) is a solution that meets the output
requirements.
Applying similar optimization criteria to the other two artifacts A6,1 & A7,1, we get
optimal solutions as: (θ*, wo*) = (1.0, 2.0 * wI) and (0.6, 2.5 * wI) respectively.
The corresponding distances are 2*wI and 0 respectively. Now applying the
spatial constraints,
Art A4,2: axis(w1) parallel_to axis(w2) IS TRUE
Art A6,2: axis(w1) parallel_to axis(w2) IS TRUE
Art A7,2: axis(w1) parallel_to axis(w2) IS FALSE
Thus after this stage, one feasible solutions (A4,1ÆA4,2) and a partial solution
(A4,1ÆA6,2) have been found. For the third combination (A4,1ÆA7,2), though the
distance is zero, the spatial constraints are not satisfied.
Same procedure with artifacts A6,1 and A7,1 from stage 1 leads to the following
situations: (A6,1ÆA4,2),
(A6,1ÆA6,2), (A6,1ÆA7,2) as partial solutions and
51
(A7,1ÆA7,2) as a feasible solution. The process could be continued till the desired
output criteria are met.
A part of the design process is shown in figure 4.7-1 where Anj indicates the
artifact number n in the ARTL as used in design stage j. Some of the solutions
found have been shown in figure 4.7-2
52
A1,1
A1,2
A2,1
A2,2
A3,1
A3,2
A4,2
<PS0, D0>
Å A solution (A41ÆA42)
A4,1
A5,2
A1,3
A2,3
A5,1
A6,2
A3,3
A7,2
A6,1
A7,1
A1,4
A2,4
A3,4
A4,3
A4 4
A1,2
A5,3
A5,4
A2,2
A6,3
<PS1, D1>
ÅA solution (A6,1ÆA4,2ÆA4,3ÆA4,4)
A6 4
A3,2
A7,3
A4,2
ÅA solution (A6,1ÆA4,2ÆA6,3)
A7,4
A5,2
<PS3,D3>
A6,2
A7 2
ÅA solution(A7,1 ÆA7,2)
<PS2, D2>
Figure 4.7-1 Design Synthesis Process- some intermediate stages from the example
53
Input
Output
Solution A4,1ÆA4,2
Input
Output
Solution A4,1ÆA6,2ÆA4,3
Input
Output
Solution A7,1ÆA7,2
Figure 4.7-2.
Typical Solutions from the Design Example
54
Segment #2: With D02
The next process is applied to D02, where the output is not the desired output specified in
PS. In our example, we have the set D02 = ({DP0} {A1,1, A2,1, A3,1, A5,1, A8,1}).
Since these artifacts do not produce the desired output type (i.e. rotary_motion) as
specified in PS, we cannot apply the relational constraints specified in the PS. However,
we can apply the spatial constraints as well as any local constraint associated with the
artifacts, to eliminate some of the artifacts or to assign lesser importance to the artifacts
of the set D02. After the constraints have been checked, we transform the outputs and the
spatial constraints to search for artifacts, which can take these outputs as input attributes.
If some artifacts could be found, we proceed as it has been stated in Segment #1.
However, if nothing could be found, we consult the functional equivalence knowledge
base library to check if suitable functional equivalence could be identified that can
decompose this output into a collective group of functions. If such functions are found,
we continue the search with the new set of inputs to locate some artifacts. If some
artifacts are found, we proceed as before. If no such function is found, the design process
stops at this stage and further input is required from the designer. There are three
possibilities: inject some more design specific domain knowledge either in the PS or in
the functional equivalence class library, or add new artifacts.
It may be noted here that the sample artifact library and the functional equivalence class
library developed for this design example have no such artifacts. And the design process
in this Segment ended here without any feasible solutions with D02.
55
It is postulated that after a finite number of steps, a set of artifact chains will be found, the
final element of which has the desired output type. Now, the relational constraints could
be applied and the internal parameters of the artifacts could be optimized to see if the
desired level of output has been reached. This problem then becomes a multivariate
minimization with constraints.
The minimization process assigns optimum values for the internal parameters of each
artifact. After the minimization, if the distance d is within a specified value of ∈0, the
solution has converged to a feasible solution. However, if d is still not within the range,
we continue to add another possible chain of artifacts, and optimize. The process is
repeated until the desired level has been reached.
56
He who wonders discovers that this in itself is wonderful.
-- M. C. Escher
Chapter 5
Tolerance Synthesis Scheme
Tolerance synthesis is the process of allocating tolerances among the geometric
parameters (dimensions) of the parts/components such that some costs associated with
the artifact is minimized and at the same time the functional, manufacturing, and
assembly requirements are satisfied. The generic tolerance model that has been defined in
chapter three is used in this chapter to represent tolerances associated with features of
parts of an artifact. However, as has been mentioned in chapter one, traditional tolerance
representation (per ASME Y14.5M,1994) schemes are not directly used in the tolerance
synthesis (TS) scheme as such representations are not suitable for uniform treatment in a
generic manner. For the TS scheme a detailed description of the “kinematic functions” of
the product assembly are required. These essentially mean functions defined by the
location, size and shape (form) of associated mating parts/features of the artifact. These
functional specifications are not directly provided by the customer or by the designer at
an early stage of design. They are slowly evolved with the assembly as the design takes
concrete shape and size in the later phases of the conceptual design. Tolerance synthesis
and analysis need an exhaustive functional analysis mechanism to make sure that the
identified functional requirements between the mating components of the assembly are
met and are suitably described in the form of critical toleranced dimensions / size / sizes /
forms. In this tolerance representation scheme the small deviation torsor (SDT) scheme
57
[Ballot (1998)] has been used to represent the variations associated with each feature of a
part in the assembly. In subsequent sections details of steps involved in the TS has been
elaborated.
5.1
Representation of Deviations of Features of a Part
The geometric variations of a feature are defined in terms of deviations of the
independent degrees of freedom of the feature.
In this approach, at the most six
independent parameters are required to represent a six-component vector corresponding
to the possible six degrees of freedom. In actual case, depending on the type of surface
(planar, cylindrical, etc) some of the degrees of freedom are ‘free’ (variations along
which keeps the surface invariant) and thus, in general, less than six deviation parameters
are required to represent the behavior of a feature. For example, for a planar surface,
rotation along the outward normal to the surface and movements along the two axes on
the surface keeps the feature invariant and hence a planar surface requires only three
deviation parameters (axial movement, two rotations along the two transverse axes).
In order to make the process of converting the functional requirements as well as
kinematic requirements into a set of constraints in a generic manner, a procedure is
needed to represent the variations associated with each part in terms of a set of
parameters of the mating features/surfaces. Assuming small displacements (deviations) of
these features due to manufacturing inaccuracies and/or other defects, the actual surface
of a feature deviates from the theoretical (nominal) surface slightly. Such variations could
be systematically treated by considering variation of six small parameters defined at a
58
point on the surface. The six parameters are: three linear translations and three rotations
along the three axes of a local orthogonal coordinate system corresponding to the six
degrees of freedom.
These six small displacement parameters are called screw
parameters or torsors.
In general a feature of a part embedded in 3-D space would have six degrees of freedom
(DOF): three linear, three rotational. In other words, six parameters could be used to
represent the deviation of a feature from its nominal position. In fact a tolerance specified
for a feature is nothing but some deviation of the nominal feature with reference to a
datum or it could be an intrinsic variation. These deviations are small compared to the
dimensions of the part and these deviations of a feature could be accurately described by
two vectors: a three-component displacement vector and a three-component rotation
vector defined at a convenient point on the feature. Each vector is assumed to have a very
small norm. These two components in a collective form are called a small displacement
torsor (SDT). Assuming the two vectors are represented by: small displacement d = (dx,
dy, dz)T and small rotation θ = (θx, θy, θz)T , the SDT can be written as: T=(θ, d)T = (θx,
θy, θz , dx, dy, dz)T. Although a torsor looks like a six component vector, its transformation
rules (Appendix 5) are different because the two 3-component vectors are not compatible
quantities. One represent linear displacement while the other is a rotation vector.
For representing the deviations of a feature, first a suitable point of interest is chosen on
the feature and the six components of the torsor is defined at that point as quantities in a
local coordinate system. Although there is no preferred point as any point on the feature
59
could serve as a reference point, from practical design point of view, often points are
chosen on specific locations on the feature for ease of coding and interpretation. For
example, a point at the center of a rectangular planar feature could be preferred. Apart
from choosing a point of interest, we also need to define a local coordinate system (LCS)
at that point. The process detailed below could be used to define the LCS.
5.1.1
Local Coordinate System on a Feature
For features defined by parametric surfaces of the form f(x) = 0, we assume f to be at
least piece-wise continuous and it’s gradient (∇f) could be computed at a point where we
would like to define the deviation parameters. Since the development of the
assemblability constraints doesn’t depend on the point where we define the deviations
(although the equation changes as the torsor transformations are dependent on the spatial
coordinate of the point), we can choose arbitrary point on the feature surface. However,
often it becomes reasonable to choose points that can be thought of as natural candidates
for ease of interpretation of results as well as manipulation of deviations at these points.
For example, if the feature is symmetric (for example, circular, rectangular, square
features), the geometric center could be taken as the ‘point of interest’. So the selection of
strategic points could be left to the designer/user without affecting the computational
complexity.
After a suitable point ‘P’ has been selected (figure 5.1.1), the LCS is defined as below:
Compute the gradient of the surface at P: ∇f=(∂f/∂x, ∂f/∂y, ∂f/∂z)
Normalize ∇f: ∇f=∇f/||∇f=||.
Compute the dot product of dX and ∇f: λ= dX.∇f, where dX is a vector from an interior point (material side of the part
to which the feature belongs) to the point P.
If λ is positive then
∇f is outwards (emanating from the material side, which is what we want)
else reverse the sign of ∇f
∇f = -∇f
60
endif
Take local-x = ∇f.
If the local-x = global-x then
local-y=global-y and local-z = global-z
else if local-x=global-y then
local-y=global-z and local-z=global-x
else if local x=global-z then
local-y=global-x and local-z=global-y
else
Generate local-y by taking a unit vector on a vertical plane containing the local-x and making it perpendicular
to local-x.
end if
Generate the local-z as cross product of local-x and local-y.
y
x
P
z
Figure 5.1.1 Local coordinate system on a feature
Above procedure generates the desired right-handed local coordinate system for defining
the deviation parameters at that point.
5.1.2
Invariants of a Feature and Reduction of DOF
Although we start with six components for each SDT, we can eliminate some of the
components depending upon the type/nature of the feature. This is possible because most
features used in engineering applications are regular. Because of this regularity there
could be some DOF that act as invariants for the feature. For example, for a cylindrical
feature, there are two such invariant parameters: axial rotation and axial movement. Both
of these deviations keep the cylindrical feature invariant. Thus these two parameters
could be eliminated. This leads to a four component deviation for a cylindrical feature
61
with an axis along the x-axis: ((0, θy, θz), (0, dy, dz))T. Similarly, for a planar feature, with
z-axis along the normal to the plain (the deviation parameters are defined at point P, at
the center of the feature, figure 5.1.2), θz, dx and dy are invariants, which makes it
possible to represent the deviations of a planar feature with three parameters: ((θx, θy, 0),
(0, 0, dz))T.
Y
Y
P
Z
DP = (θx, θy, θz , dx, dy, dz)T
P
X
DP = (θx, θy, - , -, -, dz)T
Figure 5.1.2 Deviation parameters of a circular-planar feature
Apart from the deviation parameters defined at the point of interest, another torsor is
required to represent the possible overall rigid body displacement of the part as a whole.
Thus in general two torsors are needed to completely define the position of a feature. One
for the displacement of the part on which the feature is defined – called displacement
torsor that we conveniently define at the center of a part, and the other to represent the
intrinsic (local) variation of the feature called intrinsic torsor.
5.2
Tolerance Synthesis (TS) Scheme
The TS scheme has been formulated as a constrained non-linear optimization process and
following steps are required to realize the TS scheme:
62
1.
For each component of the artifact, develop the kinematic DOF requirement
between the mating features and decide the intrinsic displacement and deviation
of the feature from the nominal surface as torsor components.
2.
For each pair of connected features, establish the gap between the features as a
gap torsor taking into account the indeterminate and/or blocked degrees of
freedoms.
3.
Generate assemblability constraints (geometric compatibility) by considering all
chain of connected components as a kinematic link (either closed loop or path
between two datum features) and aggregate the deviations (torsors) along the path
with reference to a global frame of reference. Each loop generates six equations
binding the deviation parameters associated with all the related features. These
sets of constraints would form a deviation hull for the possible geometric
variations of the connected components.
4.
Generate constraints for functional requirement based on the specified
functions/objectives to be fulfilled by the artifact. This will restrict the range of
values of the deviations within which a component must remain to fulfill specific
functional requirements.
5.
Generate manufacturing / production costs models for each component (based on
suitable knowledge base for manufacturing / production cost) for different
machining operations and formulate a minimization scheme by considering the
sum of costs for machining all the parts as the cost function subject to the
constraints defined in steps 3 & 4 above.
63
6.
Use standard mathematical tools to solve the above optimization scheme to find
the deviation parameters for each component.
7.
Convert the optimal deviation parameters associated with each feature into
appropriate tolerance zones through deviation-to-tolerance mapping.
Above steps are elaborated in the following section.
5.3
Deviation of Features and Assembly of Mating Parts
The TS process is based on generic deviation parameters that define the deviation of
features in the assembly of pats. The process of allocation/assignment of suitable torsors
for each mating feature is illustrated using an example. The example has been taken from
the design evolution example shown in chapter four where the design evolution process
was illustrated by taking an example of designing a device for transmitting torque with
changing rotational speed. One of the solutions is taken from the above design example
and for the following a tentative sizing of the components as assumed.
The gear-subassembly consists of three parts: a spur gear, a shaft with a keyhole and a
key. The geometric models of these three parts, including their feature-level mating
relationships are shown in figures 5.3-1, 5.3-2 and 5.3-3. The last figure is the assembly
graph of the gear sub-assembly showing logical connections between features. A typical
feature of a part is labeled <PnFn> where P stands for part, F stands for feature and n is
serial number of the part/feature. Thus P3F2 indicates the 2nd feature of part 3.
Key
Shaft
Gear
Figure 5.3-1 A spur gear sub-assembly
Figure 5.3-2 Mating details of the gear sub-assembly
64
65
Figure 5.3-3 Assembly graph of the gear sub-assembly
As it has been detailed earlier in section 5.1.1, a suitable point is chosen on each feature
and deviation torsor components are defined at that point to represent the deviation of the
feature in a local coordinate system defined at that point. Based on the type of feature,
torsor components suitable for that feature are selected for each of the mating features.
After this operation, the assembly graph of the artifact (Figure 5.3-3) is constructed by
connecting features/parts that are in mating. The assembly graph is then traversed to
generate all independent paths between two terminals* and closed loops by an exhaustive
search (details of the search procedure, special techniques to identify inner loops, and
procedure to eliminate duplicate reverse paths have been discussed in the implementation
section of chapter six). Each independent path is then used to generate one set of six
constraints for assemblability (geometric compatibility) by aggregating the torsors along
*
Terminals are datum features or features of a part with known deviations that could serve as an anchor.
66
the path using the torsor transformation and summation rules. This is similar to traversing
a vector loop. Union of all such constraints represents the configuration hull (various
possible geometric configurations) for the artifact. This procedure has been elaborated
further during development of assemblability constraints in section 5.4.2.
For computations in each loop, the local variations are to be converted to a global
coordinate system by transformation of the corresponding torsors in the local frame.
5.3.1
Gap as a Control Element between Mating Features
While traversing these paths, the gap between the two mating features is used as a control
element that could be effectively used in deciding the type of interface between the two
mating features. The gap between two features is modeled using a gap torsor and the
deviation parameters of the gap is used to generate constraints for the functional
requirements that is local to the two mating features (section 5.4.1).
5.3.2
Shifting the Point of Interest
The deviation parameters for a feature are conveniently defined at a suitable point for
ease of interpretation and understanding. However, there could also arise needs to assess
the possibility of any interference between the mating features at other different points.
This checking is done by transforming the torsor from one point to another by applying
the torsor transformation rules. This would require studying the torsor equations applied
at those strategic points. These points could also be conveniently used for inspection of
the features after manufacturing. The artifact class contains attributes for keeping track of
these points so new points could be added as required for specific surfaces/features. For
67
example, in case of a rectangular feature, four furthest points (corner points) could be
selected as the desired points and for circular features, eight points uniformly distributed
on the circumference could be kept (figure 5.3.2). It may be mentioned that additional
points as desired may be introduced at any stage to improve accuracy; however, the
number of equations & complexity of the problem would increase with each additional
point.
Rectangular: 4 points @ 4 corners
Circular: 8 points @ equal intervals
Figure 5.3.2 Points of interest on features.
After all the loops have been considered and corresponding equations have been formed,
we get a system of equations that will define the possible geometric variations of the
artifact configuration. Depending on the type of mating and functional requirements for
each mating pairs of surfaces, these sets of equations may be under or over constrained.
In other words, there may be too few equations connecting too many variables or viceversa. These will constitute the constraints of the optimization process for tolerance
synthesis.
5.4
Generation of Constraints
There are two different categories of constraints associated with the tolerance synthesis
process: a) constraints for meeting the functional requirements of the artifact and b)
68
constraints to meet geometric mating compatibility (assemblability). Since both the
constraints play crucial roles in the tolerance synthesis process, each process have been
elaborated separately in the following sub-sections.
5.4.1 Constraints Related to Functional Requirements
Functional requirements are design requirements specified explicitly as well as implicitly
by the user and designer to meet certain desired performance from the artifact. In terms of
tolerance and deviation parameters these functional requirements would translate into
constraint i.e. functions establishing some mathematical relationship between the
parameters.
Functional requirement can be described:
a)
Either, as a goal satisfaction to minimize a penalty cost for deviating from the
design specification
In this case a functional requirement defined by some function fj(x) ≤ f0j,
where x is the deviation parameter, could be added to the cost function as a
penalty cost using Lagrange multipliers, for example,
b)
λj * abs(fj(x)-f0j)
Or, as a set of constraints on the tolerance zone
In this case the functional requirements fj(x) ≤ f0j would be used as non-linear
constraints for the cost optimization.
Since the functional requirements are developed to represent customer’s specification and
designer’s technical requirements, it is desirable to satisfy these constraints as necessary
69
constraints rather than treating them as penalty costs. Thus, the functional requirements
have been treated as constraints (functions of deviation parameters of the mating features
of the components). The functional requirements generally translate into algebraic
inequalities representing constraints of the form: G(x) ≤ 0, x ∈ Rn
As mentioned earlier, functional requirements specified between two mating features
could be conveniently represented by using the deviation parameters of the gap between
the mating features. Although a generic transformation rule couldn’t be found because
these requirements are domain dependent, constraints of the general form as given above
could be treated as functions of the gap parameters only. For example, if a designer
specifies that a minimum gap of 0.0025 must be maintained between a rotating shaft and
the bearing to minimize friction, this requirement could be specified by using a constraint
using the gap element between the two cylindrical features (shaft and hole) as: Gijx ≥
0.0025, where Gijx is the local x-component of displacement (radial component) of the
gap element between the two mating features i and j. More complex requirements could
be represented with appropriate functions.
5.4.2 Constraints Related to Assemblability of Parts
Parts are assembled in an artifact to facilitate transmission of energy / force / motion /
fluent through the mating features. Sometimes parts are used to block some of the above
entities as well. These requirements could be treated as kinematic constraints on the DOF
between the mating features. These constraints represent geometric compatibility
(assemblability) because pair of parts must mate as per specified to serve the desired
function.
70
These assemblability constraints are established by considering sum of torsor components
along each independent paths/loops that exist between datum features. The torsor
summation is carried out using the torsor transformation rules by transferring the effect of
a torsor from a local point to another point on the datum. In the small displacement
assumption, the assemblability constraints become linear and can be put in the compact
form: Kx = b, where K = [kij]
is a m x n matrix, kij ∈ R, x ∈ Rn , b ∈ Rm (b is
formed from known deviations of the features), and m is the number of constraints.
In the derivation of the K matrix we assume without any loss of generality and without
any ambiguity that each loop/path in the assembly graph could be enumerated as a linked
list L defined by:
L = {(p, f), g, [(f, p, f), g]…, (f, p)}
…
(5.4.2-1)
where p denotes part, f denoted feature, g denotes gap between mating features and items
shown within [ ]… could be repeated zero or more times as required to traverse a
loop/path.
(p, f) is the starting point (from_part, from_feature)
(f, p) is the end point (to_feature, to_part)
[(f, p, f), g] are intermediate connections (to_feature, part, from_feature), gap) along the
path to the next part. This is elaborated in figure 5.4.2
71
Figure 5.4.2 Traversing Paths/Loops in an assembly graph.
In case of a closed loop, the last part would be the same as the first part. Both the starting
and the final parts for open loops should be terminals (datum). In case of closed loops,
the summation of the torsors would be null (0), whereas for an open path, the summation
would be equal to a torsor (possibly non-null) that has to be established from known
functional specifications between the two terminal parts. This quantity is designated as b.
T has been used to represent torsor with index p, f, g for parts, features and gaps
respectively. Let
Pj =
Part number j, j =1 to n, n = number of parts in the loop
Fk =
Feature k of part Pj , k = 1 to m, m = number of features of part Pj
Tp =
6-component displacement torsor of the part P, defined at a suitable point O
inside the part in a local coordinate system.
Tf =
6-component deviation torsor of the feature k, defined at a suitable point N on the
feature in a local coordinate system with x-axis along the outward (away from the
material) normal and y & z are the other two axes mutually perpendicular to the
x-axis.
Tg =
6-component gap torsor defined at a mating between two features of two parts.
72
With the above notation, we can write the desired equations for each loop, with implied
local to global transformations applied to each torsor as viewed from any convenient
point (typically, at the center of the first part where the loop begins), as:
(Tp + Tf ) + Tg [-Tf -Tp + Tf + Tg )]… (- Tf - Tp ) = b
… (5.4.2-2)
where the plus (+) sign indicates going out from a feature/part and negative (-) sign
indicates entering a feature/part.
Summing over the entire loop, and using the torsor transformation rules (Appendix 5),
the above equation could be converted to the following form:
∑K
* (δ j + ∆x j × θ j ) = bδ
… (5.4.2-3)
∑K
*θ j = bθ
… (5.4.2-4)
j
j ∈ EntireLoop
and
j
j ∈ EntireLoop
where, Kj is the local to global transformation matrix (Appendix 5, eqn.A5-3) for feature j
δj = [δx δy δz]Tj and θ j = [θ z θ y θ z]Tj are the two vectors formed from the linear &
rotational components respectively of the deviation torsor of the feature j. ∆xj =(∆x, ∆y,
∆z)T = (Xj-X0, Yj –Y0, Zj-Z0)T is the vector from the point j to the reference point.
Equations 5.4.2-3 and 5.4.2-4 could be combined as a single matrix equation: KX=B,
where X=[δ θ]T and B = [bδ bθ]T
Derivation of the constraint equations has been elaborated with an example artifact in
Appendix – 6.
73
5.5
Formulation of the Cost Function
The two sets of constraints defined in the previous sections for representing functional
requirements and assemblability of parts, form the constraints of the optimization
formulation. The cost function to be minimized subject to these constraints is needed to
define the optimization problem completely. In this section, formulation of cost functions
associated with products/artifacts is discussed. The cost function to be minimized could
be any function that contributes some cost in the entire life cycle of the artifact.
However, in this thesis, only the Cost of Manufacturing has been considered and a new
deviation-based cost of manufacturing model has been introduced. Many researchers
have introduced models for representing cost of manufacturing in different processdependent manufacturing contexts, some have taken process capabilities into
consideration while others have generated cost models using process sequences. Some
authors have done context specific work on the costs other than cost of manufacturing;
for example, Dong (1997) has considered the effect of tolerance on cost related to
product lifespan by constructing a functional performance index generated from the
effect of tolerance. However, the work is applicable to a very specific domain and cannot
be used universally. The cost model in this thesis has been defined in a generic manner
so that the designer could introduce any suitable cost functions associated with each part
in the artifact.
5.5.1 Cost of Manufacturing
The cost associated with manufacturing a part for a specified material, dimensions and
geometric shape, depends on the sequence of manufacturing operations and the process
74
capabilities. In general, cost of manufacturing is a function of all the above entities. Many
researchers have analyzed various issues associated with the cost of manufacturing in
relation to tolerances and the cost of manufacturing has been formulated as a decreasing
function of a single tolerance parameter. Various functional forms (like inverse power
law, exponential decay, etc.) have been used as cost models that are generally
monotonically decreasing functions of a single size tolerance. Effect of process
capabilities on cost of manufacturing has also been well studied by many researchers.
(Dong (1997).
Since, in general, more than one operation is required to transform the raw blank into the
final finished part, the cost of manufacturing is a function of the process sequence. The
cost is also affected by the setup error in each machining process. The total cost of
production thus becomes a sum of the costs associated with each process [Roy (1997)].
While none of these methods mentioned above could claim to be genric, there are several
limitations with the one-parameter (single tolerance) cost of manufacturing formulation.
In reality, a manufactured surface would rarely have a single tolerance value. Apart from
a (plus-minus) size tolerance, there would in general be geometric tolerances (form
tolerance, orientation tolerance, location tolerance, etc.) and it would be difficult to
formulate a single parameter representing all these tolerances, which could effectively be
used for representing the cost of manufacturing. In order to circumvent the above
problem, a new formulation for cost of manufacturing is proposed which could be called
deviation-based cost of manufacturing model.
75
5.5.2
Deviation-based Model for Cost of Manufacturing
In general, a part will have more than one feature, connecting to other features of other
parts and since each feature could possibly have up to six degrees of freedom, this cost
formulation uses six deviation parameters to represent the variations associated with each
feature. Since these deviation parameters could be mapped into a tolerance zone (see
section 5.7), the cost formulations could be mapped from the tolerance domain to the
deviation space. Thus, for example, the cost function g(δ) defined as a function of some
tolerance value δ, would become a function of the six parameters g(δ) = g( δ(θx θy θz δx
δy δz)) and then the cost functions could be treated as functions of the small deviation
parameters associated with the feature/part.
The cost of manufacturing a part is proposed as an explicit product of six positive
functions of the six deviation parameters in the form:
DCOM(d) = C1(d1)*C2(d2)*….C6(d6)
…. (5.5.2-1)
where d = (d1, d2, d3, d4, d5, d6) = (θx , θy , θz , δx , δy , δz) is a 6-componenet torsor
representing the six deviation parameters characteristic of the feature.
The form of the individual functions could be varying depending on specific surfaces and
manufacturing process. Sometimes, some of the functions could be of similar form. It is
to be mentioned here that, depending on the nature/type of the feature, some of the
functions will be constants and could be eliminated (i.e. for ∀x, f(x) ≡ 1). This will
correspond to the deviation parameters that are invariants of the surface.
As for an example, for a planar surface there are only three independent parameters given
by: d = (dx, 0, 0, 0, θy , θz ) that could affect the deviation of the surface from it’s nominal
76
shape and any change in the remaining three parameters keep the surface invariant. The
cost function can then be represented as:
DCOM(d) = Cx(dx)*Cθ(θy)*Cθ(θz)
…. (5.5.2-2)
Also, in this case, since the surface is symmetric about the y & z axes, the form the two
functions for rotational components of the deviation along these two directions are also
same, namely Cθ.
Since the tolerance specification as per standard codes of practice maps to a zone in the
deviation space the deviation parameters are restricted by the tolerance specification. In
other words, all the parameters in the cost formulation are not necessarily independent.
For example, for the planar feature this mapping forms a convex hull in the form of a
diamond in the 3-d space. For a rectangular planar section with cross-section (‘a’ x ‘b’),
(vide section 5.7), following are the restrictions:
TSL ≤ min(dX + a*θy + b* θz , dX + a*θy - b* θz , dX - a*θy + b* θz , dX - a*θy - b* θz )
TSU ≥ max(dX + a*θy + b* θz , dX + a*θy - b* θz , dX - a*θy + b* θz , dX - a*θy - b* θz )
where (TSL, TSU) are the lower & upper values of the tolerance parameter for the planar
surface. Thus the parameters dx θy θz are restricted. The above two would impose
restrictions on the cost function.
To illustrate the cost function, a generic function of the form: C(x) = a +b/|x| is assumed,
where x is the deviation parameter and a & b are constants. The basis for this type of
cost functions is that the cost of machining (apart from dependency on the machining
process itself), is assumed to be directly proportional to the area of the surface to be
77
machined and inversely proportional to the net amount of deviation of the feature from its
nominal shape and a constant deviation-independent cost (setup cost, etc.). Thus, the cost
function is assumed to be of the form C(x)=Kp*Area/Deviation, where Kp is some
constant.
For the planar case, the cost function becomes,
DCOM(d) = Cx(dx)*Cθ(θy)*Cθ(θz)=(a1+b1/|dx|) * (a2+b2/|θy|) * (a3+b3/|θz|)
Further simplification carried out (for illustrative purposed only) by assuming, a=b=1
and a2 = a3, b2 = b3 then leads to following:
DCOM(d) = (a1+b1/|dx|) * (a+b/|θy|) * (a+b/|θz|)
- TSL ≤ (dX + θy + θz ) ≤ TSU - TSL ≤ (dX + θy - θz) ≤ TSU
- TSL ≤ (dX - θy + θz ) ≤ TSU - TSL ≤ (dX - θy - θz ) ≤ TSU
Removing the z-parameter θz so that a visual representation of the cost function could be
given, we have:
DCOM(d) = (a1+b1/|d|) * (a+b/|θ|)
- TSL ≤ (d + θ ) ≤ TSU
and
- TSL ≤ (d - θ ) ≤ TSU
In the d-θ plane, this would look like a tent bounded by four vertical planes (by the
tolerance specification) approaching infinity along the two axes (figures 5.5.2-1, 2).
78
Cost
d
θ
Figure 5.5.2-1 Cost as function of deviation parameters
Cost contours, increasing towards the axes
d
- TSL ≤ (d - θ ) ≤ TSU
- TSL ≤ (d + θ ) ≤ TSU
θ
Figure 5.5.2-2 Cost contour lines and the bounds
79
It is to be noted that the actual form of the individual cost functions are yet to be
determined. Also, it is evident that since the deviation parameters limit the tolerance
values in some way or other, the cost functions of these deviation parameters should also
be monotone non-increasing in nature.
For practical application of the above cost of manufacturing formulation, extensive
experimental data would be required to establish the constants for different machining
processes.
5.6
Optimization Process
Based on the cost and constraint models described above, the optimization process could
be summarized as below:
Minimize:
Cost of production: C(x) = Σ(i ∈ all_parts)Σ(j∈ all_mating_features) C(xij)
Subject to:
Constraints for functional requirements: G(x) ≤ 0, x ∈ Rn
Assemblability Constraints: KX = B
where K = [kij] is a m x n matrix, kij∈ R, X ∈ Rn, b ∈ Rm , m is the number
of constraints.
In the above formulation the cost function and the constraints for functional requirements
are in general non-linear and the assemblability constraints are linear, which puts the
optimization in a non-linear programming (NLP) category. Implementation of the above
80
optimization problem and example of using the tolerance synthesis model has been
detailed in chapter six.
In the remaining section of this chapter a very important issue related to tolerance
synthesis is discussed. The deviation-based tolerance synthesis method generates a set of
optimal deviation parameters. However, these parameters cannot be directly used as
tolerance specification for the industry. The standard practice is to use tolerancing
schemes as defined in national and/or international standards. The optimal deviation
parameters need to be transformed into an equivalent set of specifications as per these
standards. In this thesis, tolerance specification as per ASME Y14.5M, 1994 standard has
been used. The mapping between the deviation parameters and the set of corresponding
ASME specifications are not one-to-one as the mapping of these parameters in most
cases generate tolerance zones. After the tolerance zones are identified for each feature,
the designer could then select suitable tolerance values from within that zone based on
different design criteria. In case of size tolerance, the mapping may generate unique
tolerance values. However, for positional and orientation tolerances, no such unique
value could be established by the mapping. The following section elaborates the mapping
procedure with two examples.
5.7
Mapping Deviation Parameters to Tolerance Specification
The relations arising from the mapping of the deviation parameters to the corresponding
tolerance values are generic non-linear inequalities and take the form: FDPk (x) ≤ FTolk
(t), where FDP is some function of the deviation parameters, x∈Rn, FTol is some function
of the tolerance parameters t, and k∈ N+ is an index. Exact forms of FDPk(x) and FTolk(t)
81
depend on the nature of the feature/surface and tolerance specifications. For a planar
surface the above relationship becomes a set of linear constraints. The interesting feature
in the above relationship is the separable nature of the equation in terms of the variables t
and x. The linear nature of the equations, however, vanishes for non-planar features.
In order to give a meaningful interpretation to the assemblability of an artifact in terms of
tolerance specifications as per standard codes and industrial practices (ASME Y14.5.1M1994), the relationship between the tolerance zones (or virtual condition boundaries) and
the deviation parameters of a feature need to be investigated. The relation between the
deviation parameters and the tolerance parameters are not one-to-one and can only be
represented as inequalities involving functions of the tolerance parameters and the
deviation parameters. For specific features, like the planar surface, the inequalities are
linear, and the inequalities represent a diamond shaped zone in the D x T (D: Deviation,
T: Tolerance) space.
There are four types of tolerances used in the industry: size tolerance, form tolerance,
orientation tolerance and location/position tolerance. There is also a run-out tolerance.
These tolerances are sometimes specified with material conditions as modifiers. There are
three such material conditions: MMC (Maximum Material Condition), LMC (Least
Material Condition) and RFS (Regardless of Feature’s Size). It is assumed that for small
deviations the shape of a toleranced feature remains similar to the nominal feature (for
example, a plane remains a plane, a cylinder remains a cylinder, etc.), and consequently
the variation of position and orientation due to form tolerance is very small [Gilbert
82
(1992)]. With this assumption, the mapping relations are generated for size tolerance,
orientation tolerance and positional tolerance.
5.7.1
Deviation-to-Tolerance Mapping Criteria
A geometric tolerance applied to a feature of size and modified to MMC will establish a
virtual condition boundary (VCB) † outside of the material space adjacent to the feature.
The feature may not cross this VCB. Likewise, a geometric tolerance applied to a feature
of size and modified to LMC establishes a VCB inside the material and the feature shall
not cross the VCB. These criteria could be written as following relationships [Drake
(1999)]:
Modified to MMC:
For an internal feature of size:
MMC virtual condition = MMC size limit – geometric tolerance
For an external feature of size:
MMC virtual condition = MMC size limit + geometric tolerance
Modified to LMC:
For an internal feature of size:
LMC virtual condition = LMC size limit + geometric tolerance
For an external feature of size:
LMC virtual condition = LMC size limit – geometric tolerance
If a geometric tolerance applied to a feature of size is neither modified to MMC nor
LMC, by definition (ASME Y14.5), it is modified to RFS. In this case, instead of VCB,
†
Virtual condition boundary: A constant boundary generated by the collective effects of a size feature’s
specified MMC or LMC material condition and the geometric tolerance for that material condition.
83
the tolerance specification generates a tolerance zone into which the derived element will
not interfere.
Since the deviation parameters of a feature could be used to define the deviation of all
points on the feature by using additional independent parameters (for example, all points
on a circular boundary could be traversed by x(θ) = r*cosθ, y = r*sinθ, θ ∈ [0, 2π)), the
tolerance specifications could be thought of as limits for the deviation parameters and
vice-versa. These deviation-to-tolerance relations could be used for tolerance synthesis as
well as for tolerance analysis including checking the assemblability in worst-case
scenario.
In the following sections the mapping for size tolerance of planar features are shown. For
the planar case, there is no material condition as it is a non-size feature. For the
cylindrical feature we have two cases: MMC and RFS and for the spherical feature we
have MMC and for conical feature we have size tolerance only.
Following are the basic steps to convert a tolerance specification into a set of inequalities
[Wang (2003)] in the deviation parameters:
1.
Generate deviation torsor parameters for the feature by eliminating the deviation
parameters that are invariant for the feature to reduce the degrees of freedom.
2.
Generate a VCB (or a tolerance zone) based on the tolerance specification.
Compute the size of the VCB or the tolerance zone for restricting the variation of
the feature or derived element respectively.
3.
In case of VCB, take an arbitrary point on its nominal surface of the feature in a
parametric form and transform it to a new position by applying the effect of the
deviation torsors. For example, for a cylindrical feature a point P on its nominal
84
surface is represented by two parameters (θ, z); P = (rcosθ , rsinθ, z), where
θ∈[0, 2π) and z ∈ (0, L), L=Length of the cylinder. In case of tolerance zones,
transform the whole derived element, such as center plane, center axis etc., to a
new position by applying the effect of the deviation torsor.
4.
Eliminate the free parameters, (such as the (θ, z) mentioned in step 3 above) by
applying the condition that the extreme points of the transformed position should
remain within the VCB or the derived element should remain within the tolerance
zone. This step generates a set of inequalities connecting the deviation parameters
with the tolerance specification.
Above four steps have been used to generate the mapping relations for planar features.
The symbols used in the following sections, unless otherwise specified, are defined as:
TU = Upper limit, size tolerance
TL = Lower limit, size tolerance
TP = Positional tolerance
TV = Perpendicularity tolerance
(∆θx, ∆θy, ∆θz, ∆x, ∆y, ∆z) = six components of the deviation torsor
5.7.2
Mapping Relations for a Planar Feature
For each surface/feature, a local coordinate system (LCS) is defined and the deviation
parameters are defined in that LCS. For a planar surface, the LCS is: z-axis outward
normal (emanating from the material side of the feature) and (x, y) are local orthogonal
coordinates on the plane, so that the equation for the nominal surface (plane) is given by z
85
= 0. For this plane the deviation parameters of the small deviation torsor (SDT) are:
(∆θx, ∆θy, 0, 0, 0, ∆z)T.
5.7.2.1 Rectangular Planar Feature
Rectangular (2a x 2b) planar surface. (Figure 5.7.2.1)
X
D
Datum
X
Z
Y
D - TL
2a
2b
D + TU
Figure 5.7.2.1 Rectangular planar feature
For the above feature, deviation parameters are (∆θx, ∆θy, 0, 0, 0, ∆z), and the tolerance
parameters are (TU, TL) and the SDT is Dd = {∆θ ∆d}T = {∆θx ∆θy 0 0 0 ∆z}T
Since this is a rectangular planar feature, the four corners with nominal coordinates
(±a,
±b, 0) will have the maximum deviation due to the effect if Dd. Transforming Dd on to
these four points we get, D’ = Dd + ((±a, ±b, 0) × (∆θx ∆θy 0)T which gives deviations
for the four points as:
D1
D2
D3
D4
= {∆θx
= {∆θx
= {∆θx
= {∆θx
∆θy
∆θy
∆θy
∆θy
0
0
0
0
0
0
0
0
0
0
0
0
∆z + a*∆θy - b*∆θx }T
∆z + a*∆θy + b*∆θx }T
∆z - a*∆θy + b*∆θx }T
∆z - a*∆θy - b*∆θx }T
Comparing the z-component with the specified tolerance value (TU, TU), we get
following four inequalities for the desired mapping:
86
-TL ≤ ∆z + a*∆θy - b*∆θx ≤ TU and -TL ≤ ∆z + a*∆θy + b*∆θx ≤ TU
-TL ≤ ∆z - a*∆θy + b*∆θx ≤ TU and -TL ≤ ∆z - a*∆θy - b*∆θx ≤ TU
5.7.2.2 Circular Planar Feature
Circular planar feature. (Figure 5.7.2.2)
X
X
P
Y
β
Datum
Z
D - TL
D + TU
Figure 5.7.2.2 Circular planar feature with size tolerance
For this case, the deviation parameters are
(0, 0, ∆z, ∆θx, ∆θy, 0) and
tolerance
parameters are (TU, TL). For an arbitrary point P on the circumference, at an angle β
with the y-axis, we have,
δz = ∆z -R∆θySin(β)+R∆θxCos(β)
Where δz is the pure position variation of a point in Z direction where size tolerance
control. The tolerance zone in this case is made up of two planes,
z = +TU and z = -TL. To ensure that δz remains within the above boundary for ∀β ∈ (0,
2π), δz could be treated as a function of β and the maximum value of δz could be
computed by putting ∂(δz)/ ∂β = 0, which gives,
δz
max/min =
∆z ± R√( ∆θx2 +∆θy2)
87
This leads to the following mapping relations:
(∆θx2 + ∆θy2) ≤ (TU + TL)2/(4R2)
In parametric form this could be written as:
TL ≤ ∆z + R∆θxSin(β) + R∆θyCos(β) ≤ TU , ∀β ∈ (0, 2π)
This inequality, using the value of δz
max/min
could be written, independent of β, as: TL ≤
(∆z - R√( ∆θx2 +∆θy2) ) and (∆z + R√( ∆θx2 +∆θy2) ) ≤ TU, which are the two mapping
relations for the circular planar feature.
Similar relations for other features (like cylindrical, spherical, conical, etc.) are required
for complete mapping of deviation parameters to tolerance zones. For completeness,
mapping details for cylindrical and spherical features are given in Appendix – 7.
88
If you have built castles in the air, your work need not be lost.
That is where they should be. Now put the foundation under them.
--Henry David Thoreau
Chapter 6
Implementation and Case Studies
6.1
Details of the Implementation
The object-oriented representation of various entities as described in chapter three are
used to create the class diagrams using UML (argoUML) and the class definitions are
used to develop and implement the module in MS Visual Basic. The VB module is the
main user interface for defining the artifact for carrying out the tolerance synthesis work
and this implementation carries out the following tasks:
a)
Artifact is defined based on user-specified information about the parts, features,
geometric configurations and mating criteria. Typical input data types have been
shown in the two examples given later in this chapter.
b)
Based on these inputs, the program generates the artifact tree and all paths and
loops are generated using an exhaustive search. Visual display of the assembly
graph is provided for validating the configuration.
The search procedure is enhanced with logic to detect inner loops and to eliminate
duplicate paths and identical reverse paths. A pseudo code for this operation is
given below:
89
For all parts do
If this Parts is a terminal then start from this part
For all features of this part do
Search the links to locate a connection to next part
If a valid connection found then
Keep track of the starting part number
GetLoops() ‘Generate all loops/paths from this feature
End If
Next feature
Next feature
End If
Next part
Sub getLoops generates the loops & paths in a recursively.
If this is not the first entry - check for termination of this branch
If we are back to the root. this loop is finished!
saveLoop ' & return
ElseIf this part isTerminal Then ' this part is a terminal;
saveLoop ' this path is done
ElseIf innerLoop() Then 'this part is already in pathNow
saveLoop 'an inner loop has been detected, save loop, go back
End If
End If
If Not savedHere Then ' go to the next part/level
For all features of this part do
locate links to other parts and generate all loops/paths from this feature
call self with new starting point
Next feature
End If
Major program modules have been listed in Appendix 8
c)
The user interface gives visual display of the artifact assembly including
elementary graphics manipulation facilities for viewing the artifact by 3-D
rotation. This is for a visual inspection of correctness of the model. More
sophisticated tools like elimination of hidden lines, 3-D rendering are not
implemented. This implementation has facilities to take input for the displaced
position (deviations) for imposing on the nominal shape. This gives a visual
representation of the distorted shape for the artifact at different configurations.
d)
Based on the model configuration, the assemblability constraints (K matrix) are
generated using a K-matrix tree structured list so that only the non-zero elements
90
of the K-matrix is stored. This greatly reduces the memory requirement and also it
helps generating the K-matrix in sparse matrix notation for subsequent use in the
optimization.
e)
In this implementation, the optimization problem has been solved using the
optimization package fmincon of Matlab.
f)
The VB implementation generates following Matlab files for the optimization run.
1. K-matrix coefficients as data file in sparse matrix format (kMatrix.dat)
2. B-vector as data file for the right hand side of the assemblability constraint
(bVector.dat)
3. The cost of manufacturing formulation is converted to a Matlab program file
(costFun.m)
4. Initial values of known/ specified deviations as data file the deviation
parameters (xZero.dat)
g)
Based on the data and program files generated in step f) above, the optimization is
carried out by running the Matlab macro file runOpt.m which has been
programmed to declare the global variables, initialize the optimization run control
parameters (optimset), read the data files into memory variables and trigger the
execution of fmincon.
The progress of execution is monitored by using intermediate printouts and after
convergence is reached (a set of optimum values has been found that satisfies the
constraints), the solution is saved in a text file (nodal_Disp.txt).
Following is a listing of the runOpt file for the gearbox example shown later in
this chapter.
91
% script file
global KMatrix;
global CC;
global Cd;
global bVector;
global xZero;
global nodes;
CC=0;
Cd=0;
myOptions = optimset('fmincon')
myOptions=optimset(myOptions,'Diagnostics','on','Display','iter','TolCon',1.0000e-3,
'TolFun',
1.0000e-1, 'TolPCG', 0.01000,'TolX', 1.0000e-4, 'LevenbergMarquardt', 'on', 'LineSearchType',
'cubicpoly', 'MaxIter', 5000, 'MaxPCGIter', 40)
nodes=51;
load kMatrixNov26.dat;
load bVectorNov26.dat;
load xZeroNov26.dat;
xZero=xZeroNov26;
xZero(nodes*6+1)=1;
bVector=bVectorNov26;
ep=0.1;
ep100=ep/1.0;
x=zeros(nodes*6+1,1);
% trying to use different ranges for angles and linear displacments
for i = 1:nodes
for j = 1:3
ub((i-1)*6+j)=ep100;
end
for j = 4:6,
ub((i-1)*6+j)=ep;
end
end
ub=0.1*ones(nodes*6+1,1);
lb=-1.0*ub;
% following two are for the Lagrange multipliers....
ub(nodes*6+1,1)=1000.0;
lb(nodes*6+1,1)=1.0;
KMatrix=spconvert(kMatrixNov26);
% extend KMatrix to include the lagrange multiplier
KMatrix(:,nodes*6+1)=0;
options = optimset('MaxFunEval',40000);
[x, fval, exitflag, output] = fmincon('costfunGearBox', xZero, [], [], [], [], lb, ub, [], myOptions)
% was [x, fval, exitflag, output] = fmincon('costfunGearBox', xZero, [], [], KMatrix, bVector, lb,
ub,...
if exitflag >= 0 % solution converged - save the results np/
fid = fopen('g:\program\tnp\matlab\nodal_dispGearBox.txt','W')
fprintf(fid,'run date:',date)
fprintf(fid,'eps:',ep,' ep100:',ep100)
fprintf(fid,'Cost function f(x) = %15.3f',costfunNov26(x))
fprintf(fid,'\nX-values by node are: (rx,ry,..dy,dz):\n')
for k=1:nodes
fprintf(fid, '%3d',k)
for j=1:6
fprintf(fid, ', %10.4f',x((k-1)*6+j))
92
end
fprintf(fid, '\n')
end
fprintf(fid,'\nX-values are:\n');
for k=1:6*nodes
fprintf(fid, '%3d, %15.9f \n',k,x(k));
end
fclose(fid)
end
h)
The solution from the Matlab is used for displaying the distorted shape of the
artifact due to the deviations and these deviation parameters are then used to map
them into corresponding tolerance zones for each feature. Actual mapping
operation is quite complex, as it requires the tolerance types for the features and
combination of effects of the datum features. This part of the computations is
carried out partly in the VB implementation and partly in Excel worksheets.
A partial listing of major program modules from the implementation is given in Appendix
8. In the following sections, details of two examples including part/feature details, input
data listings, generated data (partial list), generated MatLab input files, and output results
are given for ready reference.
6.2
Example Tolerance Synthesis of a Three-block Artifact
In this section an example artifact with three blocks (consisting of parts 1, 2, 3) as shown
in figure 6.2-1, is used and the tolerance synthesis process is elaborated. Input data and
the generated cost functions, and assemblability equation are shown in Appendix 9.
Input data for each assembly consists of an artifact tree definition, part definition, feature
and nodal dada and specification of known displacements and datum reference frames. In
order to enter this assembly in the software module, we use nodes 1 to N to number all
corners, and strategic locations on each surface/feature/face of each part. The nodal
93
coordinates are given in a global coordinate system. Each part is given a serial. We also
need to specify all mating features and connectivity data.
Based on the input data the system generates all local coordinate systems (LCS) at the
center of each feature with outward normal to the surface as local x-axis. Local y and zaxes are then generated as two mutually perpendicular lines on the tangent plane at the
center of the feature. This artifact as is represented in the program is shown along with
local coordinate systems for each feature in figure 6.2-2.
Figure 6.2–1. A 3-Block Artifact
94
Figure 6.2-2
3-Block Artifact - Part #1- Nominal shape with LCS
The program first generates the artifact tree from the input configuration (figure 6.2-3)
and then the feature-to-feature connectivity diagram is drawn (figure 6.2-4). The
assembly graph is then generated (figure 6.2-5) and all independent loops (paths) are then
generated using an exhaustive search. For this example there are six (6) independent
loops as listed below:
Path-001:(1,1,2,9)(2,10,1,2)
Path-002:(1,1,2,9)(2,11,3,13)(3,14,1,2)
Path-003:(1,1,2,9)(2,11,3,13)(3,15,1,3)
Path-004:(1,2,2,10)(2,11,3,13)(3,14,1,2)
Path-005:(1,2,2,10)(2,11,3,13)(3,15,1,3)
Path-006:(1,2,3,14)(3,15,1,3)
Each path consists of sequence of four numbers in parenthesis and they denote
<fromPart, fromFeature, toPart, toFeature> respectively. A typical link (corresponding to
path-002) is shown in figure 6.2-5 using dotted arrows.
95
The program first generates
the artifact
treeArtifact
from the
input configuration
(figure –$4.1
Figure 6.2-3
3-Block
– Artifact
tree
Each path/loop is used to generate assemblability constraints. These assemblability
constraints are in the form KX = B and the K-matrix has been represented using a sparse
matrix representation in Matlab. This implementation has a built-in procedure to generate
cost functions based on deviation parameters. Cost functions generated for this example
is shown in figure 6.2-6.
96
Figure 6.2-4 3-Block Artifact - Feature to feature connectivity
For solving the optimization (minimization) problem as formulated in this program, the
“fmincon” nonlinear constrained optimization solver in Matlab has been used. The
Matlab macro file for running this example is similar to the one shown in sub-section g)
of 6.1. Optimal deviation values from the optimization run are shown in Table 6.2-1 and
corresponding deformed shape of the blocks are shown in figure 6.2-7.
The optimal deviation parameters are used for computing the tolerance values/ranges
using the mapping relations as shown in chapter five. Results of the computation is
shown in Table 6.2-2 and corresponding tolerance values for part #1 are shown in figure
6.2-8
97
Figure 6.2-5 3-Block Artifact – Assembly graph
Figure 6.2-6 Sample cost of Manufacturing Function
98
Figure 6.2-7 Deviation imposed on nominal shape
Table 6.2-1 Optimal deviation parameters
99
Table 6.2-2 Tolerance values mapped from optimal deviation parameters
Figure 6.2-8 Computed tolerance parameters for Part #1
100
6.3
Example Tolerance Synthesis of a Planetary Gearbox
In this example, a typical planetary gearbox (figure 6.3-1) has been used to carry out the
tolerance synthesis operation. Although operations of the tolerance synthesis module for
both the examples are similar, this model has following additional features:
a)
This model is more complex with planar and cylindrical features
b)
It has more elements and complex connectivity
c)
It corresponds to a real-world gearbox
Figure 6.3-1 A Planetary Gearbox
An exploded view of the gearbox is shown in figure 6.3-2. The gearbox has been
modeled as a 5-part system (figure 6.3-3). In order to carry out the tolerance synthesis
work, a detailed model suitable for input to the tolerance synthesis software is first
developed. In this case, the gearbox has been modeled using two feature elements:
cylindrical feature and circular planar features. The model presented here is a simplified
one (the bearings have been eliminated and mating between gear teeth is represented as a
line contact between two cylindrical features at the pitch circle). The gearbox has been
101
represented using five distinct parts. Numbered nodes are used to identify points on the
features where suitable deviation parameters are defined to represent the variation of the
feature. The nominal dimensions of the gearbox parts have been taken from a real model.
However, the synthesis method and applicability is not dependent on specific dimensions.
Figure 6.3-2 Exploded view of the gearbox
Output Housing
Input Shaft
with Sun Gear
Ring Gear
Output shaft
with Planetary Gears
Figure 6.3-3 Gearbox modeled as a 5-part system
Output Housing
102
A typical mating between two parts have been shown in figure 6.3-4 and the assembly graph is
shown in figure 6.3-5
Figure 6.3-4. Mating of output housing with output shaft and ring gear
Figure 6.3-5 Assembly graph (connectivity diagram) of the gearbox
103
The assemblability constraints have been generated using the standard procedure
elaborated earlier. The cost of manufacturing formulation is detailed below for the
specific features.
The cost of manufacturing is computed as a function of the deviation parameters.
Deviation parameters are used to compute a maximum deviation from the nominal
position by taking the extreme points of a virtual condition boundary (VCB). The VCB is
constructed taking into account the datum reference frames and the material condition
modifiers (MMC/LMC/RFC).
For the circular planar features used in this example (figure-6.3-3, nodes: 3, 5, 8, 14, 16,
20, 23 and 25), net deviation of the displaced plane from the nominal position (figure6.3-6, node 5) is computed using the results of section 5.7.2.2:
δ = δ x + R (θ y2 + θ z2 )
where R is the outer radius of the circular planar disc. This δ is used to compute the cost
of manufacturing using the procedure detailed in 5.3.2 as:
C Planar =
K Pπ ( R 2 − r 2 )
(ε 0 + δ x + R (θ y2 + θ z2 ) )
where, KP is a process-dependent proportionality constant, the absolute value of which
can be established by fitting experimental data. For our purpose of using in this example
KP=1 has been assumed. ε0 is an arbitrary small parameter that has been used to eliminate
singularity at zero deviation.
104
For cylindrical features, using the expression for deviation of an arbitrary point on the
surface of the feature (Appendix 7), we can arrive at the maximum deviation for the
cylindrical feature as,
δ max = δ r + max⎛⎜ δ x 2 + δ y 2 , ( Lθ y + δ x ) 2 + (− Lθ x + δ y ) 2 ⎞⎟
⎝
⎠
where L is the length of the cylinder.
Using above δmax, the cost function is computed as:
CCylindrical =
ε0 +δr + max
(δ
2
x
2π KPrL
+δy2 , (Lθy +δx )2 +(−Lθx +δy )2
)
where, KP is the proportionality constant as described for the planar case. For this
example, KP = 1 has been assumed. ε0 is a small parameter used to eliminate singularity
at zero deviation/tolerance and δr is the independent radial deviation of the cylindrical
element.
Based on the above cost functions, the total cost for the entire product is computed as
sum of these cost functions for all the features. The generated cost function as Matlab file
is listed below:
function yy = costfun (x)
% deviation dependent cost of manufacturing formulation
% generated from tnp3. Nilmani Pramanik / Nov 26, 2002 14:43:50
global CC;
yy = 0;
yy = yy + 1600.90 /( .001 + max((x(10)^2 + x(11)^2)^0.5,(( x(10) +17.83 * x(8) )^2 + ( x(11) + 17.83 * x(7) )^2)^0.5
));
yy = yy + 823.32 /( .001 + abs(x(16)+(x(14)^2 + 21.60 * x(15)^2 )^0.5 ));
yy = yy + 1423.01 /( .001 + max((x(22)^2 + x(23)^2)^0.5,(( x(22) +10.49 * x(20) )^2 + ( x(23) + 10.49 * x(19)
)^2)^0.5 ));
yy = yy + 1103.96 /( .001 + abs(x(28)+(x(26)^2 + 28.60 * x(27)^2 )^0.5 ));
yy = yy + 1600.90 /( .001 + max((x(40)^2 + x(41)^2)^0.5,(( x(40) +17.83 * x(38) )^2 + ( x(41) + 17.83 * x(37)
)^2)^0.5 ));
yy = yy + 823.32 /( .001 + abs(x(46)+(x(44)^2 + 21.60 * x(45)^2 )^0.5 ));
yy = yy + 1423.01 /( .001 + max((x(52)^2 + x(53)^2)^0.5,(( x(52) +10.49 * x(50) )^2 + ( x(53) + 10.49 * x(49)
)^2)^0.5 ));
yy = yy + 405.37 /( .001 + max((x(58)^2 + x(59)^2)^0.5,(( x(58) +12.70 * x(56) )^2 + ( x(59) + 12.70 * x(55) )^2)^0.5
));
105
yy = yy + 938.71 /( .001 + max((x(64)^2 + x(65)^2)^0.5,(( x(64) +12.70 * x(62) )^2 + ( x(65) + 12.70 * x(61) )^2)^0.5
));
yy = yy + 3623.63 /( .001 + max((x(70)^2 + x(71)^2)^0.5,(( x(70) +12.70 * x(68) )^2 + ( x(71) + 12.70 * x(67)
)^2)^0.5) );
yy = yy + 1103.96 /( .001 + abs(x(82)+(x(80)^2 + 28.60 * x(81)^2 )^0.5 ));
yy = yy + 2067.37 /( .001 + max((x(88)^2 + x(89)^2)^0.5,(( x(88) +15.24 * x(86) )^2 + ( x(89) + 15.24 * x(85)
)^2)^0.5 ));
yy = yy + 1103.96 /( .001 + abs(x(94)+(x(92)^2 + 28.60 * x(93)^2 )^0.5 ));
yy = yy + 1216.10 /( .001 + max((x(106)^2 + x(107)^2)^0.5,(( x(106) +15.24 * x(104) )^2 + ( x(107) + 15.24 * x(103)
)^2)^0.5 ));
yy = yy + 1853.20 /( .001 + max((x(112)^2 + x(113)^2)^0.5,(( x(112) +28.58 * x(110) )^2 + ( x(113) + 28.58 * x(109)
)^2)^0.5 ));
yy = yy + 137.22 /( .001 + abs(x(118)+(x(116)^2 + 10.30 * x(117)^2 )^0.5 ));
yy = yy + 277.38 /( .001 + max((x(124)^2 + x(125)^2)^0.5,(( x(124) +5.56 * x(122) )^2 + ( x(125) + 5.56 * x(121)
)^2)^0.5 ));
yy = yy + 2236.41 /( .001 + abs(x(136)+(x(134)^2 + 28.60 * x(135)^2 )^0.5 ));
yy = yy + 1853.20 /( .001 + max((x(142)^2 + x(143)^2)^0.5,(( x(142) +28.58 * x(140) )^2 + ( x(143) + 28.58 * x(139)
)^2)^0.5 ));
yy = yy + 137.22 /( .001 + abs(0+(x(146)^2 + 10.30 * x(147)^2 )^0.5 ));
yy = yy + 277.38 /( .001 + max((x(154)^2 + x(155)^2)^0.5,(( x(154) +5.56 * x(152) )^2 + ( x(155) + 5.56 * x(151)
)^2)^0.5 ));
CC=CC+1; if mod(CC,100) == 0
CC
yy
end
This gearbox optimization problem (with the 5-part configuration) has 306 deviation
parameters (variables), 672 linear equality constraints and an 18-component non-linear
cost function. A typical Matlab execution (minimization run) for this example on a 1GHz
Dell OptiPlex GX110 system with 256MB RAM takes about 25 minutes.
The optimization run as described above produces a set of optimal deviation parameters.
These parameters, however, do not have any one-to-one equivalence with standard
tolerance specification as per ANSI Y14.5 and hence these deviation parameters could
not be used directly for arriving at tolerance values. However, it has been shown [Wang
(2003)] that these deviation parameters could be mapped to traditional tolerance
parameters as per ANSI Y14.5. Thus we need to transform the optimal deviation values
to suitable tolerance values or tolerance zones in terms of the traditional tolerance
specifications. In order to do this we need two steps:
106
a)
Decide tolerance types that could be assigned/prescribed for individual features,
and
b)
Use the deviation-to-tolerance mapping relations to generate a series of
inequalities connecting the tolerance parameters.
The last step b) generates the tolerance zones for each feature. In our example we have
two different types of features: circular planar feature and cylindrical feature and the
deviation to tolerance mapping relations for these two cases are given here from [Wang
(2003)]. For example, for circular planar feature of the output housing (figure 6.3-6, node
5), the mapping relations are:
TL ≤ (∆z - R√( ∆θx2 +∆θy2) ) and (∆z + R√( ∆θx2 +∆θy2) ) ≤ TU , where (0, 0, ∆z, ∆θx,
∆θy, 0) are deviation parameters and (TU, TL) are the tolerance parameters.
Figure 6.3-6 Circular planar feature with tolerance parameters TU and TL.
Similarly for the inner cylindrical feature (figure 6.3-3, node 4) of the outer housing, we
can derive following relationships:
107
dr ±
(∆θ y ∆y − ∆x∆θ x )
∆θ
2
x
+ ∆θ
2
y
≥(
TU − Tp
)
2
− TL ≤ dr ≤ TU
When the solved optimal deviation parameters are put in these inequalities, they generate
a set of linear inequalities. These inequalities define a tolerance zone for that feature in
the (TU TL Tp) space. In this example, tolerance zones for each feature are computed
(tables 6.3-1 and 6.3-2) by taking tolerance types from the possible tolerances that could
be prescribed for these features. Since the deviation to tolerance mapping is one-to-many,
we have to select one possible (suitable) tolerance type
Table 6.3-1 Tolerance zones/values for cylindrical features
Part Feature
Outer Cylinder fMin
1 Output Housing
Radius Length
Feature node 2
14.29 17.83 -0.10
Feature node 3
21.59 10.49 -0.14
2 Output Shaft
Feature node 5
14.29 17.83 -0.02
Feature node 7
21.59 10.49 -0.14
3 Ring Gear
Feature node 15
21.59 15.24 -0.13
4 Input Shaft and Sun Gear
Feature node 18
12.70 15.24 -0.14
Feature node 19
10.32 28.58 -0.14
Feature node 21
7.94
6.35
-0.14
5 Input Housing
Feature node 24
10.32 28.58 -0.14
Feature node 26
7.94
6.35
-0.14
fMax
0.10
0.14
0.02
0.14
0.13
0.14
0.14
0.14
0.14
0.14
The last two columns of Table 6.3-1 shows the computed values of the limits for the right
hand side of the deviation-to-tolerance parameter mapping relations for the cylindrical
features. This gives the possible range of the values TU, TL and Tp constrained by the
108
mapping relations. These inequalities are planes in the TU, TL, Tp space and all such
inequalities for each feature define the tolerance zone. Designer would select suitable
values of these parameters from the defined zone by applying various criteria as per
design requirements.
In table 6.3-2, the last two columns list the upper and lower limits of the tolerance
parameters (TU, TL). It was possible to directly compute the limits for the planar features
because the mapping relations are separate for the two limits of the plus-minus type size
tolerance
Table 6.3-2 Tolerance zones/values for circular planar features
1 Output Housing
Feature node 3
Feature node 5
2 Output Shaft
Feature node 8
3 Ring Gear
Feature node 14
Feature node 16
4 Input Shaft and Sun
Feature node 20
5 Input Housing
Feature node 23
Feature node 25
Radius
21.59
28.58
TL
-0.51
-0.57
TU
0.21
0.19
21.59
-0.44
0.20
28.58
28.58
-0.47
-0.64
0.18
0.20
10.32
-0.19
0.19
7.94
10.32
-0.12
-0.19
0.21
0.07
109
How beautiful it is to do nothing, and then rest afterward.
– Spanish Proverb
Chapter 7
Conclusion
The objective of this research has been to develop a generic object-oriented framework
that could be used as a common platform for design of products both in the conceptual
design stage as well as in detailed design. In the conceptual design stage, a procedure for
converting the product specification/functional requirements into a physical form
(function-to-form mapping) using transformation of product specifications along with
variation of internal parameters of artifacts in a multi-stage design evolution has been
presented. In the detailed design phase, the focus has been on the development of a
generic scheme for the synthesis of tolerances for manufactured parts and in this
endeavor, a scheme for tolerance synthesis has been presented based on minimization of
manufacturing cost subject to assemblability constraints and constraints due to functional
requirements. The proposed schemes have been implemented and example problems
have been solved to establish effectiveness of the schemes.
7.1
Contribution
The following are the contributions of this thesis:
i)
A new approach for design synthesis / design evolution has been presented which
operates on a knowledge-based artifact library search and variation of internal
110
parameters of the artifact for selection of best candidate at intermediate stages of
the design evolution.
ii)
A new scheme for synthesis of tolerances has been presented which is formulated
as a non-linear constrained optimization (cost minimization) scheme. It is based
on a generic deviation-based formulation.
iii)
A new deviation-based cost of manufacturing model has been presented which
can represent the cost of manufacturing as a multi-variate function of deviation
parameters that could be mapped to the tolerance specifications as per ASME
Y14.5M standard.
iv)
A new scheme for mapping the generic deviation parameters of features from the
deviation space to tolerance space (tolerance zone) has been introduced.
7.2
Future Work
Major issues of the proposed work have been completed, however, there are some open
issues that could be pursued further for extending the work. These are as listed below:
i)
It has been assumed that a product specification is available in a structured format
for carrying out the design synthesis process. However, in general customers’
requirements are generally presented in the form of verbose natural languages. It
would be worth exploring if suitable natural language processing modules
(Natural Language Modeling) could be used to automatically generate tokens that
could be directly used as product specification in standardized form. There are
some works available for converting specifications from natural languages to
111
<attribute, value> tokens. This aspect could be pursued further so that a
generalized routine could be added as a preprocessor to the design synthesis
process.
ii)
In the design synthesis, a sample artifact library has been created for a particular
design domain. The library could be extended to encompass widely varying
domain-specific artifacts and knowledge base to ascertain the versatility of the
design evolution process.
iii)
The mapping of deviation-to-tolerance has been completed for rectangular-planar,
circular-planar, cylindrical, spherical and conical features. Further work is needed
to develop mapping relations for remaining regular shapes like toroidal, helical
screw, and sculptured features to bring the mapping task to a closure. However,
due to complex non-linear nature of the relationship between the deviation
parameters and the features surface geometry, it may not be possible to generate
the mapping relations in compact form.
iv)
The tolerance synthesis method generates constrained non-linear optimization
problem. There is no known theoretical method to ascertain if a global minimum
exists or not. Traditional methods used for solving the problem may not be a
global solution and evolutionary algorithms could be used to explore for
improving the search for global.
v)
The advantage that is inherent due to the linear form (KX=B) of the
assemblability constraints, gets somewhat reduced because of the large number of
equations (six for each path or loop in 3-dimensional artifacts) and it would be
112
worth exploring if suitable tools could be developed to eliminate non-critical
constraints from these equations prior to the optimization or after some initial
passes of the optimization run.
vi)
For practical use of the new deviation-based cost of manufacturing model,
extensive experimental data needs to be collected and correlated to establish the
constants of the cost of manufacturing formulation for various manufacturing
methods. The author plans to continue this task so that standardized results could
be made available to the designers.
vii)
Even though the cost model is generic, only cost of manufacturing has been
formulated. It would be worth exploring to introduce generic deviation-based cost
functions for other costs, like assembly process cost, cost of inspection, cost of
maintenance/repair, etc.
viii)
The tolerance synthesis model has been implemented and preliminary studies
have been carried out to link these modules with commercial CAD packages. It
would be worth exploring further as to how this module could dynamically
interact with CAD packages to give the designer a more versatile design
environment.
ix)
Convergence criteria for the proposed design synthesis process and complexity of
the proposed algorithms needs evaluation for various artifact configurations in
different design domains.
x)
A generic criteria for assemblability of toleranced parts could be studied by
considering the property of a set formed by the intersection of three polytopes
representing: a) assemblability constraints, b) constraints for satisfying the
113
functional requirements and c) tolerancing constraints (tolerance to deviation
mappings). It would depend on whether the constraints indicated in b) and c),
could be converted to polytopes (set of linear inequalities) in the deviation space.
■
114
Appendices
Appendix –1 Class diagrams for various classes
Figure A1.1 Artifact class diagram
115
Figure A1.2 Function Class
Figure A1.3 Behavior Class
116
Figure A1.4 Material Data Class
Figure A1.5 Feature Class
117
Figure A1.6 Tolerance CLass
118
Appendix – 2 Examples of artifact representation
Representation of artifacts as per the scheme given in section 1.5 is illustrated with two
examples. First the representation of a ‘solid_shaft’ as an artifact is presented and then
representation of a composite artifact (gearbox) is illustrated.
Artifact solid_shaft( // defined as a multi-purpose artifact with 3 purposes
(aid ‘shaft’)
(attr dia ) // diameter
(attr leng) // length
(attr sb_max) // max allowable bending stress
(attr sc_max) // maximum allowable compressive stress
(attr st_max) // max allowable torsional stress
(attr E) // material property: mod of elasticity
(attr G) // material property: mod of rigidity
(attr rho) // material property: density
….
// solid shaft used to transmit torque (rotational motion)
//
//
1
2
//
//
(purpose transmit_torque
(input torque_in torque 1.0 kgm)
(input omega_in angular_velocity 1.0 rad/sec)
(output torque_out torque 1.0 kgm)
(output omega_out angular_velocity 1.0 rad/sec)
(constraints
(fun hold laterally)
(fun allow axial_movement)
)
(goal NONE) // no goals defined yet!
(structure
(sid ‘solid_shaft’)
(ctrl_var (dia leng torque_in torque_out omega_in omega_out)
(sketch (abst_sketch
(node 1
(coord (-1,0,0)
(dof (1,0,0,1,0,0)
(input torque_in)
(output NONE)
)
(node 2
(coord (1,0,0)
(dof (1,0,0,1,0,0)
(input NONE)
(output torque_out)
)
(cad_sketch (file “solid_shaft_01.dwg”))
(constranits
( stress_ok := (16*toqr_in/(PI*dia^3) LE st_max))
)
119
(behavior //
(state_var torque_in
(depends_on NONE)
(affects torque_out)
(val_ref INPUT))
(state_var omega_in
(depends_on NONE)
(affects omega_out)
(val_ref INPUT))
(state_var torque_out
(depends_on torque_in)
(affects NONE)
(val_ref procedural (EQ torque_in)))
(state_var omega_out
(depends_on omega_in)
(affects NONE)
(val_ref procedural (EQ omega_in)))
(state_var angular_twist
(depends_on NONE)
(affects NONE)
(val_ref procedural
(EQ 32*torque_in*leng/(PI*dia^4)))
(state_var torsional_Stress
(depends_on NONE)
(affects NONE)
(val_ref procedural
(EQ (16*toqr_in/(PI*dia^3))))
)
// solid shaft used to axial force (axial linear motion)
//
//
1
2
//
//
(purpose transmit_axial_force
(input force_in force 1.0 kg)
(output force_out force 1.0 kg)
(constraints
(fun hold laterally)
(fun allow axial_movement)
)
(goal NONE) // no goals defined yet!
(structure
(sid ‘solid_shaft’)
(ctrl_var (dia leng force_in force_out)
(sketch (abst_sketch
(node 1
(coord (-1,0,0)
(dof (1,0,0,1,0,0)
(input force_in)
(output NONE)
)
(node 2
(coord (1,0,0)
(dof (1,0,0,1,0,0)
(input NONE)
(output force_out)
)
120
(cad_sketch (file “solid_shaft_01.dwg”))
(constranits
( stress_ok := (4*force_in/(PI*dia^2) LE sc_max))
)
(behavior // as per definition in section 5
(state_var force_in
(depends_on NONE)
(affects force_out)
(val_ref INPUT))
(state_var force_out
(depends_on force_in)
(affects NONE)
(val_ref procedural (EQ force_in)))
(state_var axial_compression
(depends_on NONE)
(affects NONE)
(val_ref procedural
(EQ 4*force_in*leng/(E*PI*dia^2)))
(state_var compressive_Stress
(depends_on NONE)
(affects NONE)
(val_ref procedural
(EQ (4*force_in/(PI*dia^2)))))
)
// solid shaft used to carry lateral force as a cantelever beam
//
//
1
2
//
//
(purpose carry_lateral_load
(input force_in force 1.0 kg)
(output NONE)
(constraints
(fun hold laterally)
)
(goal NONE) // no goals defined yet!
(structure
(sid ‘solid_shaft’)
(ctrl_var (dia leng force_in)
(sketch (abst_sketch
(node 1
(coord (-1,0,0)
(dof (0,0,0,0,0,0)
(input NONE)
(output NONE)
)
(node 2
(coord (1,0,0)
(dof (0,1,0,0,0,0)
(input force_in)
(output NONE)
)
(cad_sketch (file “solid_shaft_02.dwg”))
(constranits
( stress_ok := (4*force_in/(PI*dia^2) LE sc_max))
(deflection := (force_in*leng^3/(3EI)) LT deltamax)
121
)
(behavior // as per definition in section 5
(state_var force_in
(depends_on NONE)
(affects NONE)
(val_ref INPUT))
(state_var laterall_deflection
(depends_on NONE)
(affects NONE)
(val_ref procedural
(EQ force_in*leng^3/(3EI))))
(state_var bending_Stress
(depends_on NONE)
(affects NONE)
(val_ref procedural
(EQ (32*force_in*leng/(PI*dia^3)))))
)
The behavior of the shaft shown in the three cases can be represented as a method in object-oriented
definition. For example, the behavior of in the first case would be represented by following method:
void behavior (double torque_in, double omega_in)
{ // computes behavioral parameters at time ‘t’ of the shaft for specified torque and
// angular velocity.
torque_out = torque_in ;
omega_out = omega_in;
angular_twist = 32*torque_in*leng/(PI*dia^4);
torsional_stress = 16*toqr_in/(PI*dia^3)
power = torque_in*omega_in // power transmitted by the shaft
}
Above example was for a primitive artifact with single component. We will now consider a ‘gear box’ as a
composite artifact with two primitive ‘gear’ artifacts.
Before defining the ‘gear box’, we first define a ‘gear’ as follows:
//
//
//
//
//
//
//
//
//
//
//
Artifact gear (
(aid gear)
(attr shaft_dia ) // diameter
(attr width) // length
(attr pitch_dia) // pitch diameter
(attr n_teeth) // number of teeth
(attr sb_max) // max allowable bending stress
(attr sc_max) // maximum allowable compressive stress
(attr st_max) // max allowable torsional stress
(attr E) // material property: mod of elasticity
(attr G) // material property: mod of rigidity
(attr rho) // material property: density
….
122
(purpose transmit_torque)
(purpose transmit_rotation)
(purpose change_speed)
(requires (art shaft))
(requires (art key))
(requires (art housing))
(input torque_in torque 1.0 kgm)
(input omega_in angular_velocity 1.0 rad/sec)
(output torque_out torque 1.0 kgm)
(output omega_out angular_velocity 1.0 rad/sec)
(constraints
(goal NONE) // no goals defined yet!
(structure
(sid spur_gear’)
(ctrl_var (dia leng torque_in torque_out omega_in omega_out)
(sketch (abst_sketch
(node 1
(point)
(coord (0,0,0) // center of gear
(dof (0,0,0,1,0,0)
(input omega_in)
(output NONE)
)
(node 2
(circle) // pitch circle
(center (coord (0,0,0))
(dia pitch_dia)
(input NONE)
(output torque_out)
(output omega_out)
)
(node 3
(circle) // outer circle
(center (coord (0,0,0))
(dia outer_dia)
(input NONE)
(output NONEt)
)
(cad_sketch (file “spur_gear_01.dwg”))
(constranits
( stress_ok := <contact stress <= allowable stress>))
)
(behavior // as per definition in section 5
(state_var torque_in
(depends_on NONE)
(affects torque_out)
(val_ref INPUT))
(state_var omega_in
(depends_on NONE)
(affects omega_out)
(val_ref INPUT))
(state_var torque_out
(depends_on torque_in)
(affects NONE)
(val_ref procedural (EQ torque_in)))
(state_var omega_out
(depends_on omega_in)
(affects NONE)
123
(val_ref procedural (EQ omega_in)))
(state_var angular_twist
(depends_on NONE)
(affects NONE)
(val_ref procedural
(EQ <appropriate eqn>)))
(state_var torsional_Stress
(depends_on NONE)
(affects NONE)
(val_ref procedural
(EQ (<appropriate eqn>)))
)
Now we define the artifact ‘gear_box’ to change rotational speed:
//
//
//
//
//
//
//
//
//
//
//
//
//
//
Artifact gear_box (
(aid gear_box)
(attr shaft_dia_in ) // input gear diameter
(attr shaft_dia_out ) // output gear diameter
(attr pitch_dia_in) // input gear pitch diameter
(attr n_teeth_in) // number of teeth input gear
(attr n_teeth_out) // number of teeth output gear
(attr trans_ratio) // speed ration (output_speed/input_speed)
// EQ n_teeth_in/n_teeth_out
(attr sb_max) // max allowable bending stress
(attr sc_max) // maximum allowable compressive stress
(attr st_max) // max allowable torsional stress
(attr E) // material property: mod of elasticity
(attr G) // material property: mod of rigidity
(attr rho) // material property: density
….
(purpose transmit_torque)
(purpose change_rotational_speed)
(requires
(art gear)
(location (coord (node 1)))
(orientation (direction_cosine (cx,cy,cz))
)
(requires
(art gear)
(location (coord (node 2))
(orientation (direction_cosine (cx,cy,cz))
)
124
(requires
(art shaft)
(location (coord (node 1)))
(orientation (direction_cosine (cx,cy,cz))
)
(requires
(art shaft)
(location (coord (node 2)))
(orientation (direction_cosine (cx,cy,cz))
)
(requires
(art key)
(location (coord (node 4)))
(orientation (direction_cosine (cx,cy,cz))
)
(requires
(art key)
(location (coord (node 5)))
(orientation (direction_cosine (cx,cy,cz))
)
(requires
(art housing)
(location (coord (node 1)))
(orientation (direction_cosine (cx,cy,cz))
)
(input torque_in torque 1.0 kgm)
(input omega_in angular_velocity 1.0 rad/sec)
(output torque_out torque 1.0 kgm)
(output omega_out angular_velocity 1.0 rad/sec)
(constraints
// pcd of two gears should meet
// others
)
(goal NONE) // no goals defined yet!
(structure
(sid gear_box)
(ctrl_var (torque_in torque_out omega_in omega_out)
(sketch (abst_sketch
(node 1
(point)
(coord (0,0,0) // center of gear in-gear
(dof (0,0,0,1,0,0)
(input omega_in)
(output NONE)
)
(node 2
(point // contact point on pcd of both
(coord (0,0,0)))
(input NONE)
(output torque_out)
(output omega_out)
)
(node 3
(point // center of out-gear
(coord (0,0,0)))
(input NONE)
(output omega_out)
(output torque_out)
)
(node 4
125
(point // key hole location
(coord (0,0,0)))
(input NONE)
(output omega_out)
(output torque_out)
)
(node 5
(point // key hole location
(coord (0,0,0)))
(input NONE)
(output omega_out)
(output torque_out)
)
(cad_sketch (file “spur_gear_01.dwg”))
(constranits
( stress_ok := <contact stress <= allowable stress>))
)
(behavior // of combined gears
(state_var torque_in
(depends_on NONE)
(affects torque_out)
(val_ref INPUT))
(state_var omega_in
(depends_on NONE)
(affects omega_out)
(val_ref INPUT))
(state_var torque_out
(depends_on torque_in)
(affects NONE)
(val_ref procedural (EQ torque_in)))
(state_var omega_out
(depends_on omega_in)
(affects NONE)
(val_ref procedural
(EQ omega_in*trans_ratio)))
(state_var angular_twist
(depends_on NONE)
(affects NONE)
(val_ref procedural
(EQ <appropriate eqn>)))
(state_var torsional_Stress
(depends_on NONE)
(affects NONE)
(val_ref procedural
(EQ (<appropriate eqn>)))
)
126
Appendix – 3 Artifact Library
Artifact
id
figure ref
Function
purpose
type
equivalence
Input
category
weight
unit
from val
to val
Internal Par
category
weight
unit
from val
to val
Output
category
weight
unit
from val
to val
Constraint
type
expression
Constraint
Type
Expression
Artifact Ref
Artifact Ref
Behavior
Cam Follower (Lin)
A1
figure 1-2
rotary_to_linear
rotary to linear oscilating
Cam Follower(Osc)
A2
figure 1-1
rotary_to_rotary
rotary to rotary oscilatory
Rack & Pinion
A3
figure 1-4
rotary_to_linear
rotary to linear
Spur Gear Box
A4
figure 1-6
rotary_to_rotary
rotary to rotary
w_In
rotary_motion
1
rpm
100
300
E (eccentricity)
1
mm
0
?
x(x_range)
linear_oscilatory
1
mm
unknown
w_In
rotary_motion
1
rpm
100
300
R (range_angle)
1
degree
0
60
w_Out
rotary_oscilatory
1
cpm
w_In
rotary_motion
1
rpm
100
300
R (pinion radius)
1
?
?
x_vel
linear_motion
1
mm/sec
w_In
rotary_motion
1
rpm
100
300
R (speed_ratio)
1
0.25
4
w_Out
rotary_motion
1
rpm
C0
relational
x = 2*E
C1
spatial
axis(w_in) _|_ axis(x)
cam
follower
x(t)=2*E*cos(w_in*t)
C0
relational
w_out = w_in
C1
spatial
axis(w_in) || axis(w_out)
cam
follower
w_out(t)=w_in(t)
C0
relational
x_vel=w_in*R
C1
spatial
axis(w_in) _|_ dir(x_vel)
rack
pinion
x_vel(t)=w_in(t)*R
C0
relational
w_out = w_in*R
C1
spatial
axis(w_in) || axis(w_out)
spur_gear
spur_gear
w_out(t)=w_in(t)*R
127
Artifact
id
figure ref
Function
purpose
type
equivalence
Input
category
weight
unit
from val
to val
Internal Par
category
weight
unit
from val
to val
Output
category
weight
unit
from val
to val
Constraint
type
expression
Constraint
type
expression
Artifact Ref
Artifact Ref
Behavior
4-Bar Linkage
A5
rotary_to_rotary
to trasmit rotary motion
Belt Pulley
A6
rotary_to_rotary
rotary to rotary
Bevel Gear Box
A7
figure 1-5
rotary_to_rotary
rotary to rotary motion
Nut & Bolt
A8
figure 1-3
rotary_to_linear
rotary to linear
w_In
rotary_motion
1
rpm
100
300
Lengths of the bars
1
mm
?
?
w_Out
rotary_motion
1
rpm
w_In
rotary_motion
1
rpm
100
300
R(speed_ratio)
1
0.5
2
w_Out
rotary_motion
1
rpm
w_In
rotary_motion
1
rpm
100
300
R(speed_ratio)
1
0.25
4
w_Out
rotary_motion
1
rpm
w_In
rotary_motion
1
rpm
100
300
P (pitch)
1
mm
1
5
x_vel
linear_motion
1
mm/sec
C0
relational
w_out = w_in*R
C1
spatial
axis(w_in) || axis(w_out)
spur_gear
spur_gear
w_out(t)=w_in(t)*R
C0
relational
w_out = w_in*R
C1
spatial
axis(w_in) || axis(w_out)
belt
pulley, pulley
w_out(t)=w_in(t)*R
C0
relational
w_out = w_in*R
C1
spatial
axis(w_in) _|_ axis(w_out)
bevel_gear
bevel_gear
w_out(t)=w_in(t)*R
C0
relational
x_vel = w_in*P
C1
spatial
axis(w_in) || dir(x_vel)
nut
bolt
x_vel(t)=w_in(t)*P
Note: This table is a simplified version of the actual artifact representation as objects.
Only the basic features required to follow the design synthesis example given in
this paper have been shown here.
128
lever
Follower
Pivot
Cam
Driving
Shaft
Key
Cam
Cam and Follower (Oscillating)
Cam and Follower (Linear)
Bolt
Rack
Nut
Pinion
Nut and Bolt
Bevel Gear Box
Rack and Pinion
Spur Gear Box
129
Appendix – 4 Interval Arithmetic
The interval arithmetic that would be required to deal with ranges of values for attributes
are elaborated below. In general, we will consider the range from evaluating an
expression as the smallest closed interval including all values of the expression, wherever
is defined, for any values in the ranges of the variables in the expression. We will
interpret each interval as describing the set of possible values of an incompletely known,
but constant, real number or range that is an attribute of an individual physical system.
Thus, a variable with incompletely known value will be described by a closed interval on
the real line: x = [xlb, xub] = {x ∈ R : xlb ≤ xub}, where xlb is the lower bound and xub the
upper bound of x. We will accept and use ∝ and -∝ as possible upper and lower bound,
respectively, for an interval.
Following arithmetic operations are defined for evaluating expressions on intervals. x, y
are expressions evaluating to intervals x=[ xlb, xub], y=[ xlb, xub]
x + y = [xlb +ylb, xub+yub]
x-y
= [xlb-yub, xub-ylb]
x * y = [xlb*ylb, xub*yub] , (xlb ≥ 0 and ylb ≥0) or (xub ≤0 and yub ≤0)
= [xlb*yub, xub*ylb] , xub≤0 and ylb≥0
= [xub*ylb, xlb*yub] , xlb ≥0 and yub ≤0
= [xlb*yub, xub*yub] , xlb ≤0 and xub ≥0 and ylb >=0
= [xub*yub, xlb*ylb] , xlb ≤0 and xub ≥ 0 and yub ≤0
= [ylb*xub, yub*xub] , ylb ≤0 and yub ≥ 0 and xlb ≥ 0
= [yub*xub, ylb*xlb] , ylb ≤0 and yub ≥ 0 and xub ≤0
= [min(xlb*yub, xub*ylb), max(xlb*ylb, xub*yub)]
xlb ≤0 and xub ≥ 0 and ylb ≤0 and yub ≥ 0
1/x
= [1/xub, 1/xlb] , xlb >0
130
= [1/xub, ∞]
, xlb≥0
= [1/xlb, 1/xub] , xub <0
= [-∞, 1/xlb] , xub≤0
= [-∞,∞]
, xlb≤0 and xub ≥0
= [∅]
, xlb=xub=0 (undefined)
x / y = x * (1/y)
|x|
= [xlb, xub]
, xlb≥0
= [-xub, -xlb]
, xub≤0
= [0, max(xub,-xlb)] otherwise
mean(x) = (|xlb|+|xub|)/2 , a single valued quantity.
Evaluating functions:
For monotonically increasing functions, f ∈ M+, where M+ is the class of monotonically
increasing functions, f(x) = [flo(xlb), fup(xub)] and f -1(x) = [fup -1(xlb), flo-1(xub)]. where
flo and fup are the lower and upper bounds (envelopes) of the function f such that ∀x, flo(x)
≤ f(x) ≤ fup(x).
131
Appendix - 5 Transformation of Torsors
A torsor is a tensor-type representation of small displacements and rotations
(corresponding to the six degrees of freedom associated with a space point on a surface
embedded in R3).
If we introduce three small displacements along the three local
principal axes at a point A on a surface, as δ = [δx δy δz]T and three rotations θ = [θx θy
θz ]T then the torsor TA/R at A with reference to a datum R can be represented as: TA/R =
[θA δA ]T = [θx θy θz δx δy δz ]T
Torsors transform according to standard rotation & translation rules of axes. However,
the components are small in comparison to the dimension of the components.
The small-displacement torsor mentioned above is used to represent three types of
deviations associated with mating of components in an assembly. Two torsors associated
with each component and a gap torsor at the mating. The two torsors associated with each
feature are: a displacement torsor and a deviation torsor as shown in figure A5-1. The
displacement torsor is an intrinsic variation torsor, which is specific to the element (as for
example, displacement arising out of the variation of the radius of a cylindrical surface).
The displacement torsor represents the deviation of the real surface from the nominal
surface. The gap torsor between two mating features represents possible geometric
variations between the mating features.
132
Part B
Nominal Surface
Displacement torsor
Deviation torsor
Deviation torsor
Part A
Real Surface
Displacement torsor
Gap
Figure A5-1 Interacting torsors at mating surfaces
In order to add the torsors in a loop to form equations connecting the components of the
torsors, a mechanism would be necessary to transform the torsors defined in local
coordinate systems of the individual components into a global reference frame. Since a
torsor is represented by a 1x6 vector, the transformations required would be 6x6
transformation matrices. The rules for transformation of torsors are described below
133
z
Y
y
z
y
N
x
X
M
Z
x
Figure A5-2 Torsor transformation - shifting axes
A small deviation torsor (SDT) TN defined at a point N in the local coordinate system (x,
y, z) with six components (θx, θy, θz, δx, δy , δz) (where θ denotes rotational and δ
denotes linear components of movements) transforms to (TN)ML (where L denotes local
coordinate system) in the same local coordinate system shifted to a new point M is be
given by:
(TN)ML = (θx, θy, θz, δx + (θy*∆z - θz *∆z), δy + (θz *∆x – θx *∆z), δz + (θx *∆y – θy *∆x))
This equation could be written in compact notation as:
…
(A5-1)
(TN)ML = DTN where D is the
6x6 transformation matrix given by
⎡ 1
⎢ 0
⎢
⎢ 0
D=⎢
⎢ 0
⎢ ∆z
⎢
⎣ − ∆y
0
1
0
0
0
0
0
0
0
1
0
0
− ∆z
∆y
1
0
0
− ∆x
0
1
∆x
0
0
0
0 ⎤
0 ⎥
⎥
0 ⎥
⎥
0 ⎥
0 ⎥
⎥
1 ⎦
… (A5-2)
where ∆ =(∆x, ∆y, ∆z)T = (XN-XM, YN -YM, ZN-ZM)T is the vector from point M to N in
global coordinate system (X, Y, Z).
134
The above transformation given by TM = DTN can also be explicitly written as:
T
M
⎡
⎢
⎢
⎢
= ⎢
⎢δ
⎢δ
⎢
⎢⎣ δ
x
y
z
θ
θ
θ
+ (∆ yθ
+ (∆ zθ
+ (∆ xθ
where MN is he vector
x
y
z
x
− ∆ zθ
− ∆ xθ
y
− ∆ yθ
z
y
z
x
⎤
⎥
⎥
⎡
⎥
⎢
⎥ = ⎢
)⎥
⎢⎣ δ
)⎥
⎥
) ⎥⎦
θ
N
N
+ MN
× θ
N
⎤
⎥
⎥
⎥⎦
(∆x ∆y ∆z)T from point M to N and X is the vector cross
product.
After the above transformation, the components of torsor (TN)ML are still in the local
coordinate system (x,y,z). Let the local coordinate system (x,y,z) be defined by the three
unit vectors x = (kxX, kxY, kxZ), y = (kyX, kyY,kyZ) and z = (kzX, kzY, kzZ) in the global
coordinate system, in other words, the local coordinate system could be represented by
the [K] matrix given by:
⎡k xX
[K ] = ⎢⎢ k xY
⎢ k xZ
⎣
k yX
k yY
k yZ
k zX ⎤
⎥
k zY ⎥
k zZ ⎥⎦
(A5-3)
The components of (TN)ML could then be converted to the global system by the following
transformation (applicable for both the linear movement and the small rotations in the
sense of SDT) :
135
θ X = θx * kxX + θy * kyX + θz * kzX
θY = θx * kxY + θy * kyY + θ z* kzY
θZ = θx * kxZ + θy * kyZ + θz* kzZ
θG = [θ X θ Y θ Z]T = [K][ θx θy θz]T
θG = [K] θ L
where the subscripts G and
…
L
(A5-4)
refer to global and local coordinate systems respectively.
δX = [δx + (θy *∆z - θz*∆y)]* kxX + [δy+ (θz*∆x – θx*∆z)]* kyX + [δz+ (θx*∆y – θy *∆x)]* kzX
δY = [δx + (θy *∆z - θz*∆y)]* kxY + [δy+ (θz*∆x – θx*∆z)]* kyY + [δz + (θx*∆y – θy*∆x)]* kzY
δZ = [δx + (θy *∆z - θz*∆y)]* kxZ + [δy+ (θz*∆x – θx*∆z)]* kyZ + [δz + (θx*∆y – θy*∆x)]* kzZ
δG = [δX δY δZ]T = [K] ( [δx δy δz]T + [∆x ∆y ∆z]T × [θ z θ y θ z]T)
where × is the vector cross product.
δG = [K] ( δL + ∆ × θ L )
…
(A5-5)
where δL = [δx δy δz]T , ∆ =(∆x, ∆y, ∆z)T, θ L = [ θx θy θz]T
Combining the two transformations, we can write the final result as: (where subscript G
refers to global):
(TN)MG = (θG, δG )
(TN)MG = ([K][ θx θy θz]T , [K] ( [δx δy δz]T + [∆x ∆y ∆z]T × [θ x θ y θ z]T )
Above relation could be written as: (TN)MG = K2 (TN)ML
where K2 is generated using A5-2 and A5-3).
…
(A5-6)
…
(A5-7)
136
Appendix – 6 Example of Generation of Assemblability
Constraints
The torsor scheme for the modeling of the small geometric variations of mating features
of an artifact to generate assemblability constraints has been elaborated with a simple
example of a rectangular block (Part-3) enclosed within two channels (Part-1 & Part-2)
(figures A6-1 & A6-2). Apart from the simplified configuration, further simplification
has been done as detailed below so that the relevant transformations and preliminary
computations could be checked manually.
Part - 2
Loop –4
Loop –3
Part - 3
Loop –2
Loop –5
Loop –1
Part - 1
Loop –6
Figure A6-1 Example artifact with three blocks
137
y
y
z
Part - 2
x
22
23
24
21
25
33
y
32
z 34
Part - 3
31
11
15
12
y
13
Part - 1
Figure A6-2
14
x
y
x
3-Block artifact with feature numbers and LCS.
The simplifications are:
a)
All variations take place along the vertical plane only (with 3 possible
variations: x-rotation, y-displacement and z-displacement) to keep the
formulation simple.
b)
There is no displacement torsor for each part. Only the feature deviation
torsors and the gap torsors have been taken into consideration.
c)
The bottom surface of Part 1 has been assumed to be a fixed datum
d)
Only a few paths/loops have been shown.
138
The three parts 1,2, & 3, local axes and contact surfaces have also been shown in the
same sketch. Surfaces have been designated as <part_number><serial_number> such that
surfaces on part 1 are numbered as 11, 12, 13, 14, etc. For generating equations
connecting the variations of the mating surfaces, six loops have been considered.
With the above simplifications, we are left with following configuration:
Number of mating surfaces
Number of gaps between mating surfaces
Number of surface parameters
Number of gap parameters
Total number of parameters
Number of loops
Number of equations from the loops
: 14 (all planer)
:8
: 14 x 3 = 42
: 8 x 3 = 24
: 42 + 24 = 66
:6
: 6 x 3 = 18
The six loops are as follows:
Loop-1: 12Æ32Æ31Æ13
Loop-2: 11Æ21Æ22Æ32Æ32Æ12
Loop-3: 22Æ32Æ33Æ23
Loop-4: 24Æ34Æ33Æ23
Loop-5: 15Æ25Æ24Æ34Æ34Æ14
Loop-6: 14Æ34Æ31Æ13
The associated torsors in their local coordinate systems are:
T11 , T12, T13, T14, T15, T21, T22, T23, T24, T25, T31, T32, T33, T34
Typically, each of these torsors would have similar 6-component forms like:
T11 = [θ11 δ11 ]T = [θx11 0 0
T12 = [θ12 δ12 ]T = [θx12 0 0
0 δy11 δz11 ]T ,
0 δy12 δz12 ]T
The gap torsors are:
G11/21, G12/32, G13/31, G14/34, G15/25, G22/32, G23/33, G24/34 with typical forms given by:
G11/21 = [θg11/21 δg11/21 ]T = [θgx11/21 0 0
0 δgy11/21 δgz11/21 ]T
139
We now consider the Loop - 1 (12Æ32Æ31Æ13) and write the torsor equation for the
loop as:
T12 + G12/32 + (-T32 ) + T31 + (-G13/31 ) + (-T13 ) = 0
Transforming all the terms in the above equation in Part–1’s frame of reference, the
equation becomes,
T12 + (D12/23)12 G12/32 + (D32)12 (-T32 ) +(D31)12 T31 +(D13/31)12 G13/31 + (D13)12 (-T13 ) = 0
where the D’s are the corresponding transformations with respect to the Part - 1.
Writing the D’s in full, and carrying out the operations, the above equation becomes,
[θx12
[θgx12/32
[θx32
[θx31
[θgx13/31
[θx13
=[0 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 0 0 ]T
δy12
δz12 ]T +
δgy12/32
δgz12/32 ]T δy32 + θx32 (z32 - z12)
δz32 + θx32 (y32 - y12) ]T +
δy31 + θx31 (z31 - z12)
δz31 + θx31 (y31 - y12) ]T +
δgy13/31 + θgx13/31 (z31 - z12) δgz13/31 + θgx13/31 (y31 - y12)]T δy13 + θx13 (z13 - z12)
δz13 + θx13 (y12 - y12)]T
Equating each component to zero gives 6 equations. In this present case there are only 3
equations due to the restricted space of the example.
θx12 + θgx12/32 - θx32 + θx31 + θgx13/31 - θx13 = 0
δy12 + δgy12/32 - δy32 - θx32 (z32 - z12) + δy31 + θx31 (z31 - z12) + δgy13/31 +
θgx13/31 (z31 - z12) - δy13 + θx13 (z13 - z12) = 0
δz12 + δgz12/32 - δz32 - θx32 (y32 - y12) + δz31 + θx31 (y31 - y12) + δgz13/31 +
θgx13/31 (y31 - y12) - δz13 + θx13 (y12 - y12) = 0
Each of the six loops will give 3 similar equations. Altogether 18 equations would be
formed connecting the 66 parameters.
Let us repeat the procedure of forming the equations for Loop – 2
(11Æ21Æ22Æ32Æ32Æ12)
The torsor equation for the Loop - 2 is:
T11 + G11/21 + (-T21 ) + T22 + (G22/32 ) + (-T32 ) + T32 + (G32/12 ) + (-T12 ) = 0
i.e. T11 + G11/21 + (-T21 ) + T22 + (G22/32 ) + (G32/12 ) + (-T12 ) = 0
140
Transforming all the terms in the above equation in Part–1’s frame of reference, the
equation becomes,
T11 + (D11/21)11 G11/21 + (D21)11 (-T21 ) +(D22)11 T22 +(D22/32)11 G22/32 +
+ (D32/12)11 G22/12 + (D12)11 (-T12 ) = 0
where the D’s are the corresponding transformations with respect to the Part - 1.
Writing the D’s in full, and carrying out the operations, the above equation becomes,
[θx11
[θgx11/21
[θx21
[θx22
[θgx22/32
[θgx32/12
[θx12
=[0 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 0
0
0
0
0
0
0
0
0 ]T
δy11
δz11 ]T +
δgy11/21
δgz11/21 ]T δy21 + θx21 (z21 - z11)
δz21 + θx21 (y21 - y11) ]T +
δy22 + θx22 (z22 - z11)
δz22 + θx22 (y22 - y11) ]T +
δgy22/32 + θgx22/32 (z22 - z11) δgz22/32 + θgx22/32 (y22 - y11)]T +
δgy32/12 + θgx32/12 (z32 - z11) δgz32/12 + θgx32/12 (y32 - y11)]T δy12 + θx12 (z12 - z11)
δz12 + θx12 (y12 - y11)]T
Equating each component to zero gives following 3 equations:
θx11 + θgx11/21 - θx21 + θx22 + θgx22/32 + θgx32/12 - θx12 = 0
δy11 + δgy11/21 - δy21 - θx21 (z21 - z11) + δy22 + θx22 (z22 - z11) + δgy22/32 +
+ θgx22/32 (z22 - z11) +δgy32/12 + θgx32/12 (z32 - z11) - δy12 - θx12 (z12 - z11) = 0
δz11 + δgz11/21 - δz21 - θx21 (y21 - y11) + δz22 + θx22 (y22 - y11) + δgz22/32 +
θgx22/32 (y22 - y11) + δgz32/12 + θgx32/12 (y32 - y11) - δz12 - θx12 (y12 - y11) = 0
Similar procedures would yield the rest of the equations for the remaining four loops.
141
Appendix – 7 Mapping of Deviation Parameters to Tolerance
Parameters
For completeness, following is included here from [Wang (2003)] on the mapping of
deviation parameters to tolerance zones.
A7.1
Cylindrical Feature - Modified to MMC
A cylindrical feature with a given tolerance specification is taken as shown in Figure
A7.1-1 and the local coordinate system (LCS) for defining the deviation parameters is
shown in Figure A7.1.-2. The VCB of the cylindrical surface is constructed by using the
rules in 3.6.1 and the VCB has the following properties:
•
A perfect shape as that of the nominal cylindrical feature
•
A size (diameter) of max size plus geometric tolerance, because its external feature
and the positional tolerance is modified to MMC
•
A perfect orientation as that of the nominal cylindrical feature (vertical to C)
•
A perfect location as that of the nominal cylindrical feature
For the cylindrical surface, the LCS is: z-axis along the axis of the cylinder and (x, y) are
local orthogonal co-ordinates on the middle of the axis. For this surface, the deviation
parameters are: (∆x, ∆y, 0, ∆θx, ∆θy, 0) and dr. Based on this notation, mapping relations
are derived as detailed below.
For a point P (r*cosθ, r*sinθ, z), on the nominal
cylindrical surface:
Deviation parameters = (∆x, ∆y, 0, ∆θx, ∆θy, 0)
Tolerance parameters = (TU, TL, TP )
SDT are:
Dd = {∆θ ∆d} = {∆θx ∆θy 0 ∆x ∆y 0}T
142
Di = {∆θ ∆d} = {0 0 0 dr*cosθ dr*sinθ 0}T
where Dd is displacement torsor5 and Di is intrinsic torsor6.
Figure A7.1-1 Cylindrical feature with tolerance modified to MMC
P
z
P
y
P’
x
Figure A7.1-2 Cylindrical feature with LCS
After transformation due to the effect of the two SDTs, the new position of transformed
point P’ can be calculated from:
5
6
Displacement torsor for the deviation of the feature from the nominal position.
Intrinsic torsor represents the intrinsic variation of size of the feature.
143
⎡ 1
⎢ 0
⎢
⎢ − ∆θ y
⎢
⎣ 0
0
1
∆θ x
0
∆θ y
− ∆θ x
1
0
∆x ⎤ ⎡( r + dr ) cos θ ⎤ ⎡
( r + dr ) cos θ + ∆θ y z + ∆x
⎤
⎥
⎢
⎥
⎢
⎥
∆y ( r + dr ) sin θ
( r + dr ) sin θ − ∆θ x z + ∆y
⎥=⎢
⎥
⎥⎢
z
0 ⎥⎢
⎥ ⎢ z − ∆θ y ( r + dr ) cos θ + ∆θ x ( r + dr ) sin θ ⎥
⎥⎢
⎥ ⎢
⎥
1 ⎦⎣
1
1
⎦ ⎣
⎦
The 4 by 4 matrix on left hand side of the equation is the transformation matrix for point
P following the assumed transformation sequence ∆xÆ∆yÆ∆θxÆ∆θy by displacement
torsor. The 4 by 1 matrix (vector) on the left hand side of the equation represent the
changed position of point P by intrinsic torsor. Thus the new position P’ is given by
((r + dr) cosθ + ∆θ y z + ∆x, (r + dr) sinθ − ∆θ x z + ∆y, z − ∆θ y (r + dr) cosθ + ∆θ x (r + dr) sinθ )
Hence, the constraint equation will be:
((r + dr ) cosθ + ∆θ y z + ∆x) 2 + ((r + dr ) sin θ − ∆θ x z + ∆y ) 2 ≤ (2r + TU + Tp) 2 / 4
where θ ∈ (0, 2π). The left hand side (LHS) is a function of two independent parameters
θ and z. The inequality should be valid for ∀θ ∈ (0, 2π) and ∀z ∈ (0, L). This is done by
finding the maximum of the LHS with respect to θ and z. Writing the LHS of the above
equation as: f(θ,z) = (a*cosθ+b*z+c)2 + (a*sinθ+d*z+e)2, where a = r+dr, b = ∆θy , c =
∆x, d=-∆θx, and e=∆y , and minimizing f with respect to θ and z,
the
maximum/minimum value of f is found. After some reduction of the resulting algebraic
expressions using Matlab, the final set of mapping relations are established as:
dr ±
(be − cd )
d +b
2
2
≤(
TU + Tp
)
2
− TL ≤ dr ≤ TU
144
and
dr ±
(be − cd )
d +b
2
2
≥(
TU − Tp
)
2
− TL ≤ dr ≤ TU
for external and internal cylindrical features respectively.
A7.2
Spherical Feature
For the spherical surface, a LCS is defined as: z-axis along radius of the sphere and (x, y)
are local orthogonal co-ordinates at the center of the sphere (Figures A7.2-1 & 2). For
this feature the deviation parameters of the SDT are: (∆x, ∆y, ∆z, 0, 0, 0 ) and dr. Based
on this notation, mapping relations are derived connecting these parameters with the
specified tolerance values as detailed below.
z
x
y
Figure A7.2-1 Spherical feature with LCS
145
Figure A7.2-2 Spherical feature with tolerance specification
The VCB of the spherical surface is constructed with the following properties:
•
A perfect shape as that of the nominal spherical feature
•
A size (diameter) of 2r+TU+Tp, because it’s external feature and the positional
tolerance is modified to MMC
•
A perfect location as that of the nominal cylindrical feature
By applying the same procedures as was followed for the cylindrical case, we have:
Dd = {∆θ ∆d} = {0 0 0 ∆x ∆y ∆z}T
Di = {∆θ ∆d} = {0 0 0 dr*sinφ*cos ψ
⎡1
⎢0
⎢
⎢0
⎢
⎣0
0
1
0
0
dr*sinφ*sinψ
dr*cosφ}T
0 ∆x ⎤ ⎡(r + dr ) sin φ cosψ ⎤ ⎡∆x + (r + dr ) sin φ cosψ ⎤
0 ∆y ⎥⎥ ⎢⎢ (r + dr ) sin φ sin ψ ⎥⎥ ⎢⎢ ∆y + (r + dr ) sin φ sin ψ ⎥⎥
=
1 ∆z ⎥ ⎢ (r + dr ) cosψ ⎥ ⎢ ∆z + (r + dr ) cosψ ⎥
⎥⎢
⎥ ⎢
⎥
0 1 ⎦⎣
1
1
⎦ ⎣
⎦
146
The 4 x 4 matrix on the left hand side of the above equation is the transformation matrix
for any point on the spherical surface due to displacement torsor assuming the
transformation sequence ∆xÆ∆yÆ∆z. The 4 x 1 matrix (vector) on left hand side of the
equation represents the changed position of the point due to the intrinsic torsor. The
constraints ont eh VCB is expressed as::
(∆x + (r + dr ) sin φ cosψ ) 2 + (∆y + (r + dr ) sin φ sinψ ) 2 + (∆z + (r + dr ) cosψ ) 2
≤ (2r + TU + TP) 2 / 4
The above inequality should be valid for ∀Φ ∈ (0, 2π) and ∀Ψ ∈ (0, 2π) and hence the
parameters Φ and Ψ needs to be eliminated by maximizing the following function.
f (φ ,ψ ) = a sin 2 φ + a cos 2 ψ + 2∆x sin φ cosψ + 2∆y sin φ sinψ + 2∆z cosψ
where a = r + dr
∂f / ∂φ = 0 ⇒ 2 cos φ ( a sin φ + ∆x cosψ + ∆y sinψ ) = 0
∂f / ∂ψ = 0 ⇒ − 2a cosψ sinψ − 2 ∆x sin φ sinψ + 2 ∆y sin φ cosψ − 2∆z sinψ = 0
Here, we have two sets of solutions (Maple V has been used to get the solutions in
symbolic form):
1)
aβ − ∆y
2
∆x + ∆z
4 2
β = Rootof ( _ z a − 2 _ z 3a∆y + ( ∆z 2 + ∆y 2 + 2∆x∆z − a 2 + ∆x 2 ) _ z 2 + 2a _ z∆y − ∆y 2 )
φ = ( 2n + 1)
where
π
, ψ = −tg −1
147
2)
∆x ( −γ 2 a 2 + γ 2 ∆x 2 + γ 2 ∆y 2 − γ∆za − ∆y 2 )
∆y∆x ( 2γ 2 − 1)
−1
),ψ = tg ( 2 2
)
φ = − sin (
( −γa 2 + γ∆x 2 − γ∆y 2 − ∆za )a
− γ a + γ 2 ∆x 2 − γ 2 ∆y 2 − γ∆za
−1
where
γ = Rootof (( a 4 − 2a 2 ∆x 2 + 2a 2 ∆y 2 + ∆x 4 + ∆y 4 + 2∆y 2 ∆x 2 ) _ z 4 + ( 2∆za 3 − 2a∆z∆x 2 +
2a∆z∆y 2 ) _ z 3 + ( − a 4 − 2∆y 2 ∆x 2 − 2a 2 ∆y 2 − ∆y 4 − ∆x 4 + 2a 2 ∆x 2 + ∆z 2 a 2 ) _ z 2 + ( 2a∆z∆x 2 − 2∆za 3 −
2a∆z∆y 2 ) _ z − ∆z 2 a 2 + ∆y 2 ∆x 2 )
The final set of mapping relations are:
f max ≤ (
2r + TU + Tp 2
)
2
− TL ≤ dr ≤ TU
When toleranced feature is internal, (for example a hole), the relation becomes:
f min ≥ (
2r + TU − Tp 2
)
2
− TL ≤ dr ≤ TU
If the external feature is modified to LMC, the relations are:
f min ≥ (
2r − TL − Tp 2
)
2
− TL ≤ dr ≤ TU
If the internal feature is modified to LMC, the relations are:
f max ≤ (
2r − TL + Tp 2
)
2
− TL ≤ dr ≤ TU
148
A7.3
Other Cases of Mapping
There are other possible features like conical features, torroidal features, helical screw
feature, composite tolerance specifications, MMC specification on datum, etc. Mapping
for the conical case, composite tolerance specification for a cylindrical feature and MMC
specification on datum have been discussed in detailed in [Wang (2003)].
A7.4
Example of Mappings
An example of applying the mapping relations on a planar feature is shown here (figure
A7.4-1)
Figure A7.4-1 Size tolerance for a planar feature
Using the mapping relations for planar features, following are established by considering
the deviation at the four extreme points (corners) of the plane that are nominally at (1.5,
2, 0), (1.5, -2, 0), (-1.5, 2, 0) and (-1.5, -2, 0).
-0.08 ≤ ∆z + 1.5*∆θy - 2*∆θx ≤ 0.08
149
-0.08 ≤ ∆z + 1.5*∆θy + 2*∆θx ≤ 0.08
-0.08 ≤ ∆z – 1.5*∆θy + 2*∆θx ≤ 0.08
-0.08 ≤ ∆z – 1.5*∆θy - 2*∆θx ≤ 0.08
The above inequalities result in a diamond shape in deviation space as shown in figure
A7.4-2.
z
0.08
-0.04
0.053
-0.053
∆θy
0.04
-0.08
∆θx
Figure A7.4-2 Deviation space for size tolerance of a planar feature
150
Appendix – 8 Implementation: Listing of major modules
Program Listing - Main module
Attribute VB_Name = "tnp3Main"
'Option Explicit
Global Const maxNodes = 999
Global Const maxParts = 999
Global Const x0StartD = 0.001 ' mm
Global Const x0StartR = 0.0001 ' rad
Global Const nonSingularEps = 0.00001
Type aArtifact
id As String
aType As String
nextArt As Object
End Type
Type aGap
n As Integer 'node
f1 As Integer 'from
f2 As Integer 'to
End Type
Type aTorsor
rX(3) As Double
dX(3) As Double
End Type
Type xLink
fromArt As Integer
fromFeature As Integer
gap As Integer ' gap node
toArt As Integer
toFeature As Integer
End Type
Type myLoop
nLoop As Integer
fromArt As Integer
fromFeature As Integer
gap As Integer ' gap node
toArt As Integer
toFeature As Integer
End Type
Type xFeature
id As String ' Feature id
typ As String 'Feature type
ref As Integer ' a reference point, generally the center but could be any other point
center As Integer ' node number of the center of the Feature
LCS(3, 3) As Double ' x=outward normal, y & z on plane DCs
nod(10) As Integer ' nodes to define the feature
part As Integer
tol As tolerance ' tolerance class
isDatum As Boolean
Ly As Double 'Ly and Lz are lengths of edges along local Y & Z for rectangles
Lz As Double 'Ly and Lz are Outer and inner radii for circular-planar
End Type
Type parts
id As String
name As String
151
center As Integer 'center node#
LCS(3, 3) As Double ' local x, y & z DCs
isTerminal As Boolean
Features(9) As Integer
End Type
Type aNode
x(3) As Double 'x,y,z coordinates
dof(6) As Integer 'degrees of freedom 1=specifed, 0=unspecified
knownDeviation As Boolean
tor As aTorsor
End Type
Type xloop
typ As String ' typ= 'P'art, 'F'ace, 'G'ap
fromArt As Integer
fromFeature As Integer
gap As Integer
toFeature As Integer
toArt As Integer
End Type
Type xCircle
x As Single
y As Single
r As Single
End Type
Type kMat
i As Integer
j As Integer
id As String
End Type
Type Vector
x(3) As Double
End Type
Public getFileOked As Boolean
Public dofName(6) As String, nCons As Integer
Public xFile, eqStr As String, eqNum As Integer
Public x0(maxNodes * 6) As Double 'x0 holds the initial value of X
Public b0(maxNodes * 6) As Double 'b0 holds the value of b of KX = b
Public nCircle As Boolean
Public Circles(99) As xCircle
Public nParts As Integer
Public nNodes As Integer
Public nLinks As Integer
Public nFeatures As Integer
Public LoopCount As Integer
Public nPathElements As Integer
Public artNow As String
Public aParts(maxParts) As parts
Public aNodes(maxNodes) As aNode
Public aLink(maxParts) As xLink
Public aFeatures(maxNodes) As xFeature
Public gap(99) As aGap
Public nGaps As Integer
Public allPaths() As myLoop
Public PathList() As String
Public UltoPath() As String
Public rootArt As Integer
Public partSelected As Integer 'used in drawing loopForm
Public tTran(6, 6) As Double ' torsor transformation matrix
Public kMat() As Double
Public KTree As biTree
Public dumpTree2File As String
152
Public dumpFile As Integer
Public artWindow As artDraw ' was loopForm
Public fMainForm As frmMain
Sub Main()
Dim fLogin As New frmLogin
fLogin.Show vbModal
If Not fLogin.OK Then
'Login Failed so exit app
End
End If
Unload fLogin
Randomize
Set fMainForm = New frmMain
Set KTree = New biTree
nCircle = False
fMainForm.Show
End Sub
Sub processArt(sFile As String)
Dim nF As Integer, sLine As String, sx As String, sY As String
Dim j As Integer, k As Integer, tnod As Node, Tokens(20) As String
Dim i As Integer, ii As Integer
nF = FreeFile
j = InStr(sFile, ".")
sx = Left(sFile, j - 1)
sY = StrReverse(sx)
'Get the artifact name from the file name
artNow = UCase(Mid(sx, Len(sx) - InStr(sY, "\") + 2))
Open sFile For Input As #nF
'Input #nf, sLine
Line Input #nF, sx 'title of the artifact one line
fMainForm.ArtName.Caption = sx
fMainForm.Caption = sFile
fMainForm.Show
' set up the Artifact tree root
Set tnod = fMainForm.ArtTree.Nodes.Add(, , "Root", artNow, 1, 2)
tnod.EnsureVisible
fMainForm.ArtTree.Visible = True
fMainForm.ArtName.Visible = True
fMainForm.nodeList.Visible = True
'now get the actual artifact definition data
nParts = 0
nNodes = 0
nLinks = 0
nFeatures = 0
fMainForm.nodeList.Clear
While Not EOF(nF)
Line Input #nF, sLine
j = getTokens(sLine, Tokens)
sx = Tokens(1) 'first token, the controller
Select Case sx
Case "PART:" ' part definitions
nParts = nParts + 1
j = Val(Tokens(2))
aParts(j).id = "P" + Tokens(2)
aParts(j).name = Tokens(3)
aParts(j).center = Val(Tokens(4))
aParts(j).isTerminal = Val(Tokens(5)) <> 0
'store the LCS of center of each part
For i = 1 To 3
For k = 1 To 3
aParts(j).LCS(k, i) = Val(Tokens(5 + (i - 1) * 3 + k))
153
Next
Next
Set tnod = fMainForm.ArtTree.Nodes.Add("Root", tvwChild, aParts(j).id, aParts(j).name, 1, 2)
tnod.EnsureVisible
Case "FEATURE:" 'feature definions
nFeatures = nFeatures + 1
i = Val(Tokens(2))
aFeatures(i).id = "F" + Tokens(2)
aFeatures(i).typ = Tokens(4)
'if feature type is CYL, then 3 points are reqd.
'p1 , p2 two ends of the axis and f the point where torsor is defined.
aFeatures(i).center = Val(Tokens(5)) ' feature center
aFeatures(i).ref = Val(Tokens(6)) ' feature reference point for outward normal
k = Val(Tokens(3)) 'part number where used
aFeatures(i).part = k
aParts(k).Features(0) = aParts(k).Features(0) + 1 'one more Feature
aParts(k).Features(aParts(k).Features(0)) = i
sY = aParts(k).id
Set tnod = fMainForm.ArtTree.Nodes.Add(sY, tvwChild, _
sY + aFeatures(i).id, sY + aFeatures(i).id + Tokens(4), 1, 2)
tnod.EnsureVisible
jj = 0
sY = sY + aFeatures(i).id
If Tokens(4) = "PLANE2" Then 'circular-planar feature, get two radii
aFeatures(i).Ly = Val(Tokens(7))
aFeatures(i).Lz = Val(Tokens(8))
jj = 2
End If
j = j - 6 - jj ' rest of the nodes
For ii = 7 + jj To 7 + j + jj - 1 'add the nodes in the tree as well as Featurelist
aFeatures(i).nod(0) = aFeatures(i).nod(0) + 1 'increment node count
aFeatures(i).nod(aFeatures(i).nod(0)) = Tokens(ii)
Set tnod = fMainForm.ArtTree.Nodes.Add(sY, tvwChild, _
sY + "N" + Tokens(ii), "Node:" + Tokens(ii), 3, 4)
tnod.EnsureVisible
Next
Case "LINK:" ' link between part/features
nLinks = nLinks + 1
aLink(nLinks).fromArt = aFeatures(Val(Tokens(2))).part
aLink(nLinks).fromFeature = Val(Tokens(2))
aLink(nLinks).toFeature = Val(Tokens(3))
aLink(nLinks).gap = Val(Tokens(4))
aLink(nLinks).toArt = aFeatures(Val(Tokens(3))).part
' keep the reverse path as well!
nLinks = nLinks + 1
aLink(nLinks).fromArt = aFeatures(Val(Tokens(3))).part
aLink(nLinks).fromFeature = Val(Tokens(3))
aLink(nLinks).gap = Val(Tokens(4))
aLink(nLinks).toFeature = Val(Tokens(2))
aLink(nLinks).toArt = aFeatures(Val(Tokens(2))).part
'store the gap definitions
nGaps = nGaps + 1
gap(nGaps).n = Val(Tokens(4))
gap(nGaps).f1 = Val(Tokens(2))
gap(nGaps).f2 = Val(Tokens(3))
Case "NODE:" 'nodal data
nNodes = nNodes + 1
j = Val(Tokens(2))
aNodes(j).x(1) = Val(Tokens(3))
aNodes(j).x(2) = Val(Tokens(4))
aNodes(j).x(3) = Val(Tokens(5))
'
'dof(ii)='1' if known/specified disp else 0
For ii = 1 To 6
aNodes(j).dof(ii) = IIf(Trim(Tokens(5 + ii)) = "", 0, 1)
154
Next
'
With aNodes(j).tor
.rX(1) = Val(Tokens(6))
.rX(2) = Val(Tokens(7))
.rX(3) = Val(Tokens(8))
.dX(1) = Val(Tokens(9))
.dX(2) = Val(Tokens(10))
.dX(3) = Val(Tokens(11))
End With
sx = Format(Tokens(2), "0000") + " "
For i = 3 To 11
sx = sx + Format(Tokens(i), " 0000.00")
Next
fMainForm.nodeList.AddItem (sx)
Case "MISC:" 'other data - for future use
Case "DISP:" 'nodal displacements from prev run/from known sources
'node, rx, ry, rz, dx, dy, dz
j = Val(Tokens(2))
For ii = 1 To 6
If aNodes(j).dof(ii) = 1 Then 'known/specified and do nothing
Else 'add it
If ii < 4 Then ' first 3 rotx
aNodes(j).tor.rX(ii) = Val(Tokens(2 + ii))
Else 'last three deltax
aNodes(j).tor.dX(ii - 3) = Val(Tokens(2 + ii))
End If
End If
Next
'
Case Else
'for the time being ignore others...
End Select
Wend
'
'
generateLCS ' generate local coordinate system 3 X 3 marix
'
for each Feature/features of each part
'
'generate nodal displacements from known values at feature center
'must be called AFTER generateLCS
center2Nodes ""
'
fMainForm.nodeList.Visible = True
fMainForm.NodalButton.Visible = True
Close nF
End Sub
Sub generateLCS()
' Generates LCS of each Feature/feature
' by assuming local X=Outward normal (away from material)
'
Y= Vertically up if X is horizontal, else Y= one of the edges
'
Z= (X x Y)
Dim i, j, k, m, nP, fTyp
Dim xLam As Double
Dim ve(5) As Vector
For nP = 1 To nParts
For j = 1 To aParts(nP).Features(0) 'all Features
k = aParts(nP).Features(j)
fTyp = aFeatures(k).typ
If fTyp = "PLANE" Or fTyp = "PLANE2" Then
'
' ve(1)=local-x, ve(2)=local-y, ve(3)=local-z
' ve(0) is the vector from he ref point (generally, center
'
of the part) to Feature center
' ve2 = edge 1, ve3=edge 2
'
For m = 1 To 3
155
ve(0).x(m) = aNodes(aFeatures(k).center).x(m) - aNodes(aFeatures(k).ref).x(m)
ve(2).x(m) = aNodes(aFeatures(k).nod(1)).x(m) - aNodes(aFeatures(k).nod(2)).x(m)
ve(3).x(m) = aNodes(aFeatures(k).nod(2)).x(m) - aNodes(aFeatures(k).nod(3)).x(m)
Next
If fTyp = "PLANE" Then
aFeatures(k).Ly = VNorm(ve(2)) 'length along local y
aFeatures(k).Lz = VNorm(ve(3)) 'length along local z
End If
'local x as cross product of ve2, ve3 normalized
ve(1) = VNormalize(VCross(ve(2), ve(3)))
' check if ve1 is outward or inward
If VDot(ve(0), ve(1)) < 0 Then ' angle >90, inward normal, reverse ve(1)
ve(1) = VScale(ve(1), -1#)
End If
'
' check if x is horizontal, then put y as vertical and z accordingly
' no need - for generic LCS
'If Abs(ve(1).x(1)) = 1 Then ' it's horizontal
' ve(2).x(1) = 0
' ve(2).x(2) = 1
' ve(2).x(3) = 0
'Else
ve(2) = VNormalize(ve(2)) 'local y
'End If
ve(3) = VNormalize(VCross(ve(1), ve(2)))
ElseIf fTyp = "CYL" Then 'CYLINDRICAL case
'
' ve(1)=local-x, ve(2)=local-y, ve(3)=local-z
' ve(0)=F-P1, vector from start to the Feature center
' ve(2)=P2-P1, the axis of the cylinder
' aFeatures(k).center = F, Feature-center where torsor is to be defined
' aFeatures(k).nod(1) = P1, cylinder start point on the axis
' aFeatures(k).nod(2) = P2. cylinder end point on the axis
' first find lambda xLam and local X-axis at F
' xLamda is found to make P (=P1+xLam(P2-P1)) such that
' (F-P) _|_ to P2-P1
'
'store length L=|P2-P1| in LZ and radius R=|F-P| in LY
'
For m = 1 To 3
ve(3).x(m) = aNodes(aFeatures(k).center).x(m) 'F
ve(4).x(m) = aNodes(aFeatures(k).nod(1)).x(m) 'P1
ve(0).x(m) = ve(3).x(m) - ve(4).x(m) 'F-P1
ve(2).x(m) = aNodes(aFeatures(k).nod(2)).x(m) - ve(4).x(m) 'P2-P1
Next
aFeatures(k).Ly = VNorm(ve(2)) ' store length in LY
xLam = VDot(ve(0), ve(2)) / VNorm(ve(2)) ^ 2
ve(4) = VAdd(ve(4), VScale(ve(2), xLam)) 've(4) is now P
aFeatures(k).Lz = VNorm(VDiff(ve(3), ve(4))) 'store radius in LZ
ve(1).x(1) = aNodes(aFeatures(k).center).x(1) - aNodes(aFeatures(k).nod(2)).x(1) - xLam * ve(2).x(1)
ve(1).x(2) = aNodes(aFeatures(k).center).x(2) - aNodes(aFeatures(k).nod(2)).x(2) - xLam * ve(2).x(2)
ve(1).x(3) = aNodes(aFeatures(k).center).x(3) - aNodes(aFeatures(k).nod(2)).x(3) - xLam * ve(2).x(3)
ve(1) = VNormalize(ve(1)) 'local X radially out(in)ward
If aFeatures(k).ref = 1 Then 'hole else shaft
ve(1) = VScale(ve(1), -1#) ' inward normal for hole
End If
ve(3) = VNormalize(ve(2)) 'local Z along axis of cylinder
ve(2) = VCross(ve(3), ve(1)) 'local Y
156
End If
'Now store the LCS in the Featuredata
With aFeatures(k)
For i = 1 To 3
For m = 1 To 3
'was .LCS(i, m) = ve(i).x(m) changed to below nilmani 6/20/02
.LCS(m, i) = ve(i).x(m)
Next
Next
End With
Next 'Feature
Next 'part
End Sub
Public Sub genCostFun()
Dim cost As String, i As Integer, j As Integer, k As Integer, m As String
Dim xL As Vector, xW As Vector, xTem As Vector, w1 As Double, w2 As Double
Dim vt1 As Vector, vt2 As Vector, kc As Integer
Dim CrLf As String, ks As String
CrLf = Chr(13) + Chr(10)
cost = " yy = 0;" + CrLf
For i = 1 To nParts 'all parts
For j = 1 To aParts(i).Features(0) ' take all features of this part
k = aParts(i).Features(j) 'take next feature
m = aFeatures(k).typ
kc = aFeatures(k).center 'center of the Feature at which the deviations are defined
Select Case m
Case "PLANE" 'rectangular planar
'we need delx, thetay, thetaz and the
'corresponding length of the two sides
'deltax is x(6*k1) +4
'thetay is x(6*k1) +2
'thetaz is x(6*k1) +3
vt1.x(1) = aNodes(aFeatures(k).nod(1)).x(1)
vt1.x(2) = aNodes(aFeatures(k).nod(1)).x(2)
vt1.x(3) = aNodes(aFeatures(k).nod(1)).x(3)
vt2.x(1) = aNodes(aFeatures(k).nod(2)).x(1)
vt2.x(2) = aNodes(aFeatures(k).nod(2)).x(2)
vt2.x(3) = aNodes(aFeatures(k).nod(2)).x(3)
xL = VDiff(vt1, vt2)
vt1.x(1) = aNodes(aFeatures(k).nod(3)).x(1)
vt1.x(2) = aNodes(aFeatures(k).nod(3)).x(2)
vt1.x(3) = aNodes(aFeatures(k).nod(3)).x(3)
xW = VDiff(vt1, vt2)
w1 = VNorm(xL)
w2 = VNorm(xW)
'use transpose - nilmani 6/20/02
xTem.x(1) = aFeatures(k).LCS(1, 2) ' xTem is the local y-axis
xTem.x(2) = aFeatures(k).LCS(2, 2)
xTem.x(3) = aFeatures(k).LCS(3, 2)
If VDot(xTem, xL) = 0 Then 'this side is perpendicular to y-axis
' keep w1 and w2 as it it
Else ' reverse the w values
w1 = w2
w2 = VNorm(xL)
End If
'use w1 with theta-y and w2 with theta-z
'check if the values of x are known
If aNodes(kc).dof(4) = 1 Then 'known delta-x
ks = Format(aNodes(kc).tor.dX(1))
Else
157
ks = "x(" + Format(kc * 6 + 4 - 6, "0") + ")"
End If
cost = cost + " yy = yy + " + Str(w1 * w2) + " /(" + Str(nonSingularEps) + " + abs(" + ks
If aNodes(kc).dof(2) = 1 Then 'known theta-y
ks = Format(aNodes(kc).tor.rX(2))
Else
ks = "x(" + Format(kc * 6 + 2 - 6, "0") + ")"
End If
If w1 > 0 Then
cost = cost + "+" + Str(w1) + "*" + ks
End If
If aNodes(kc).dof(3) = 1 Then 'known theta-z
ks = Format(aNodes(kc).tor.rX(3))
Else
ks = "x(" + Format(kc * 6 + 3 - 6, "0") + ")"
End If
If w2 > 0 Then
cost = cost + "+" + Str(w2) + "*" + ks
End If
cost = cost + " ));" + CrLf
Case "PLANE2" 'Circular Planar
'Using the formula: Pi(R1^2-R2^2)/(e0+deltaX+R1*sqrt(thetaY^2+thetaZ^2))
'needs R1=LY , R2=LZ as input
'deltax is x(6*k1) +4
'thetay is x(6*k1) +2
'thetaz is x(6*k1) +3
'compute w1
w1 = 3.14159265 * (aFeatures(k).Ly ^ 2 - aFeatures(k).Lz ^ 2)
'check if the values of deltas are known
If aNodes(kc).dof(4) = 1 Then 'known delta-x
ks = Format(aNodes(kc).tor.dX(1))
Else
ks = "x(" + Format(kc * 6 + 4 - 6, "0") + ")"
End If
cost = cost + " yy = yy + " + Format(w1, "0.00") + " /(" + Str(nonSingularEps) + " + abs(" + ks
If aNodes(kc).dof(2) = 1 Then 'known theta-y
ks = Format(aNodes(kc).tor.rX(2))
Else
ks = "x(" + Format(kc * 6 + 2 - 6, "0") + ")"
End If
cost = cost + "+(" + ks + "^2"
If aNodes(kc).dof(3) = 1 Then 'known theta-z
ks = Format(aNodes(kc).tor.rX(3))
Else
ks = "x(" + Format(kc * 6 + 3 - 6, "0") + ")"
End If
cost = cost + " + " + Format(aFeatures(k).Ly, "0.00") + " * " + ks + "^2 )^0.5"
cost = cost + " ));" + CrLf
Case "CYL"
'using the formula
' 2PiRL/[e0 + delR + max((delY^2+delZ^2)^0.5, ((L*tY+delZ)^2+(-L*tZ+delY)^2)^0.5)
w1 = 2 * 3.14159265 * aFeatures(k).Ly * aFeatures(k).Lz
'check if the values of deltas are known
'delta-x and theta-y
ks = "x(" + Format(kc * 6 + 4 - 6, "0") + ")^2"
ks2 = "( x(" + Format(kc * 6 + 4 - 6, "0") + ") +" + Format(aFeatures(k).Ly, "0.00") + " * " + "x(" + Format(kc * 6 + 2 - 6,
"0") + ") )^2"
'delta-y and theta-x
ks = ks + " + x(" + Format(kc * 6 + 5 - 6, "0") + ")^2"
ks2 = ks2 + " + ( x(" + Format(kc * 6 + 5 - 6, "0") + ") + " + Format(aFeatures(k).Ly, "0.00") + " * " + "x(" + Format(kc * 6
+ 1 - 6, "0") + ") )^2"
ks = "(" + ks + ")^0.5"
ks2 = "(" + ks2 + ")^0.5"
cost = cost + " yy = yy + " + Format(w1, "0.00") + " /(" + Str(nonSingularEps) + " + max(" + ks + "," + ks2
158
cost = cost + " );" + CrLf
Case 3 'spherical
Case Else 'to be defined
End Select
Next j
Next i
'MsgBox cost, vbOKCancel, "Your Cost Function Defined..."
i = FreeFile
sf = getFiles.sFiles(3).Text
Open sf For Output As #i
'xFile = "C:\tmp\costfun" + Format(Date, "mmmdd") + ".m"
'xf = InputBox("Save Cost Function as", , xFile)
'Open xFile For Output As #i
Print #i, "function yy = costfun (x)"
Print #i, "% deviation dependent cost of manufacturing formulation"
Print #i, "% generated from tnp3. Nilmani Pramanik / "; Format(Now, "MMM DD, YYYY HH:MM:SS")
Print #1, "% for tracing function execution, remove the % signs from following and the last lines."
Print #i, " global CC;"
Print #i, cost
Print #i, " CC=CC+1;";
Print #i, " if mod(CC,100) == 0"
Print #i, " CC"
Print #i, " yy"
Print #i, " end"
Print #i, ""
Close #i
End Sub
Function getTokens(sx As String, Tokens) As Integer
Dim sY As String, j As Integer, k As Integer
'Convert a line input into tokens
For k = 1 To 20: Tokens(k) = "": Next
k=1
sY = sx
j = InStr(sY, ",")
If j > 0 Then
While j > 0
Tokens(k) = Trim(Left(sY, j - 1))
sY = Mid(sY, j + 1)
j = InStr(sY, ",")
k=k+1
Wend
End If
Tokens(k) = Trim(sY)
getTokens = k
End Function
Sub generateLoops(dummy As String)
Dim i, j, k, m As Integer
Dim ii, jj, kk As Integer
ReDim Preserve PathList(1)
ReDim Preserve UltoPath(1)
ReDim Preserve allPaths(1)
LoopCount = 0
nPathElements = 0
PathList(0) = ""
UltoPath(0) = ""
fMainForm.LoopList.Clear
For i = 1 To nParts 'all parts
If aParts(i).isTerminal Then ' start from this part
For j = 1 To aParts(i).Features(0) ' take all features of this part
k = aParts(i).Features(j) 'next feature(Feature)
For m = 1 To nLinks 'search the links to locate a connection
If aLink(m).fromArt = i And aLink(m).fromFeature = k And aLink(m).toFeature > 0 And aLink(m).toArt > 0 Then ' a
valid connection found
'MsgBox "generate path: P" & i & " F" & k & " to F" & aLink(m).toFeature & " P" & aLink(m).toArt
rootArt = i 'keep track of the starting part number ...
'now generate all loops/paths from this feature
159
getLoops i, k, aLink(m).toArt, aLink(m).toFeature, "(" + Trim(i) + "," + _
Trim(k) + "," + Trim(aLink(m).toArt) + "," + Trim(aLink(m).toFeature) + ")"
End If
Next
Next
End If
Next
'MsgBox Str(LoopCount) + " Total Paths/Loops have been generated."
For i = 1 To nPathElements
With allPaths(i)
Debug.Print "El:"; i, "Loop:"; .nLoop, .fromArt, .fromFeature, .gap, .toArt, .toFeature
End With
Next
Debug.Print
For i = 1 To LoopCount
Debug.Print "Path:"; i, PathList(i)
Debug.Print "Ulto:"; i, UltoPath(i)
Debug.Print
Next
i=1
End Sub
'*
'* GetLoops(): recursively generates all paths/loop
'*
Sub getLoops(m1art, m1Feature, m2art, m2Feature, oldPath)
' called with: from_art, from_Feature, to_art, to_Feature, old_path
Dim pathNow As String, j As Integer, k As Integer, m As Integer
Dim savedHere As Boolean, ii As Integer
pathNow = oldPath
'MsgBox oldPath
'check after entry
savedHere = False
If pathNow <> "" Then 'not the first entry - check for termination of this branch
If m2art = rootArt Then ' we are back to the root. this loop is finished!
saveLoop 0, pathNow, m2art + 0 ' & return
savedHere = True
ElseIf aParts(m2art).isTerminal Then ' this part is a terminal;
saveLoop 0, pathNow, m2art + 0 ' this path is done
savedHere = True
ElseIf innerLoop(pathNow, m2art + 0) Then 'this part is already in pathNow
saveLoop 1, pathNow, m2art + 0 'an inner loop has been detected, save loop, go back
savedHere = True
End If
End If
If Not savedHere Then ' go to the next part/level
For j = 1 To aParts(m2art).Features(0) ' take all features of this part
k = aParts(m2art).Features(j) 'next feature
For m = 1 To nLinks 'search the links to locate a connection
If aLink(m).fromArt = m2art And aLink(m).fromFeature = k Then
If aLink(m).toArt = m1art And aLink(m).toFeature = m1Feature Then 'ignore entry path
Else ' got a new path; try it
'MsgBox "generate path: P" & m2art & " F" & k & " to F" & aLink(m).toFeature & " P" & aLink(m).toArt
'now generate all loops/paths from this feature
getLoops m2art, k, aLink(m).toArt, aLink(m).toFeature, pathNow + "(" + Trim(m2art) + "," + Trim(k) + "," +
Trim(aLink(m).toArt) + "," + Trim(aLink(m).toFeature) + ")"
End If
End If
Next
Next
End If
End Sub
'*
Sub removeLoop()
ReDim Preserve PathList(1)
ReDim Preserve UltoPath(1)
PathList(0) = ""
160
UltoPath(0) = ""
LoopCount = 0
End Sub
'
'*******************
'
Sub saveLoop(ac As Integer, pp As String, aa As Integer)
Dim nP As String, nC As Integer, nx As String
Dim xpath As String, i As Integer, xx(4) As Integer, noPath As Boolean
xpath = pp
If ac = 0 Then
'MsgBox "Saving external loop! " + pp
Else
i = InStr(pp, "(" + Trim(Str(aa)) + ",") 'only a part of the path....
xpath = Mid(xpath, i)
'MsgBox "Saving inner loop in " + xpath
End If
noPath = True
If LoopCount > 0 Then ' there are some elements, check for duplicacy
For i = 1 To LoopCount
If xpath = PathList(i) Then ' found a duplicate path
noPath = False 'don't add
Exit For
End If
If xpath = UltoPath(i) Then ' found a duplicate in the reverse path
noPath = False 'don't add
Exit For
End If
Next
End If
If noPath Then 'add it
LoopCount = LoopCount + 1
ReDim Preserve PathList(LoopCount + 1)
'MsgBox "Saving Loop:" + Str(LoopCount) + ":" + xpath
PathList(LoopCount) = xpath
' add this loop to the display element LoopList
fMainForm.LoopList.AddItem ("Path-" + Format(LoopCount, "000") + ":" + xpath)
'
' save all elements in this path to allPath and generate the reverse path
'
'********* add to allPaths and the reverse path.
'
ypath = Mid(xpath, 2) 'n1,n2,n3,n4)(n1,n2,n3,n4)....
xpath = "" 'it will hold ultopath
While ypath <> ""
i = InStr(ypath, ")")
zpath = Left(ypath, i - 1) 'n1,n2,n3,n4
ypath = Mid(ypath, i + 2) ' next lot n1,n2,n3,n4)....
i = InStr(zpath, ",")
xx(1) = Val(Left(zpath, i - 1)) 'n1 from p
zpath = Mid(zpath, i + 1)
i = InStr(zpath, ",")
xx(2) = Val(Left(zpath, i - 1)) 'n2 from f
zpath = Mid(zpath, i + 1)
i = InStr(zpath, ",")
xx(3) = Val(Left(zpath, i - 1)) 'n3 to p
zpath = Mid(zpath, i + 1)
xx(4) = Val(zpath) 'n4 to f
nPathElements = nPathElements + 1
ReDim Preserve allPaths(nPathElements + 1)
With allPaths(nPathElements)
.nLoop = LoopCount
.fromArt = xx(1)
.fromFeature = xx(2)
.toArt = xx(3)
.toFeature = xx(4)
For ii = 1 To nGaps
161
If (gap(ii).f1 = xx(2) And gap(ii).f2 = xx(4) Or _
(gap(ii).f2 = xx(2) And gap(ii).f1 = xx(4))) Then
.gap = gap(ii).n
End If
Next
End With
xpath = "(" + Trim(xx(3)) + "," + Trim(xx(4)) + "," + _
Trim(xx(1)) + "," + Trim(xx(2)) + ")" + xpath
Wend
ReDim Preserve UltoPath(LoopCount + 1)
UltoPath(LoopCount) = xpath
End If
End Sub
Function innerLoop(mpath As String, mart As Integer) As Boolean
innerLoop = InStr(mpath, "(" + Trim(mart)) > 0
End Function
Sub generateEquations()
Dim nPath As Integer, nn As Integer
Dim partZero As Integer, jj As Integer
Dim n As Integer, m As Integer
If KTree.nCount > 0 Then
If MsgBox("Remove existing matrix and generate new?", vbYesNoCancel) = vbYes Then
Set KTree = Nothing 'remove all data and start fresh
Set KTree = New biTree
KTree.nCount = 0
KTree.root = 0
Else
Beep
Exit Sub
End If
End If
fMainForm.MousePointer = vbHourglass
'
'add some random nodes in the tree to make it grow both ways ...
'addRandNodes 1000 - no need anymore
'
KTree.addNode LoopCount * 6, nNodes * 6, "R" + Format(LoopCount * 6, "0000") + "C" + Format(nNodes * 6, "0000"), 0
'
'now do the real stuff: use allPaths() & loopCount and nPathElements
'
nPath = 0
partZero = 0
nn = nPathElements
'For nn = nPathElements To 1 Step -1 'do in reverse to make the tree balanced
While nn > 0
If nPath <> allPaths(nn).nLoop Then 'start computing for a new path/loop
nPath = allPaths(nn).nLoop
'first locate the begining of the loop
n=0
While (nn > n) And (allPaths(nn - n).nLoop = nPath)
n=n+1
Wend
n=n-1
nn = nn - n
'note down the starting part so that rest of the torsors
'could be transformed to the center of that part
partZero = allPaths(nn).fromArt
End If
For m = 0 To n
'part disp torsor to global
TorTransform "P1", allPaths(nn + m).fromArt, nPath, partZero
'feature1 torsor to center
TorTransform "F1", allPaths(nn + m).fromFeature, nPath, partZero
162
'gap torsor to part1's center
TorTransform "G", allPaths(nn + m).gap, nPath, partZero
'feature2 torsor to center
TorTransform "F2", allPaths(nn + m).toFeature, nPath, partZero
'part2 torsor to center
TorTransform "P2", allPaths(nn + m).toArt, nPath, partZero
Next
nn = nn - 1
Wend
'Next
'
' now generate the geometric continuity constraints
'
' GenerateGeoConstraints
'
' first initialize x0 & b0
'
For n = 1 To nNodes
For m = 1 To 6
jj = (n - 1) * 6 + m
If aNodes(n).dof(m) = 1 Then 'known value
If m < 4 Then 'rot else disp
x0(jj) = aNodes(n).tor.rX(m)
Else
x0(jj) = aNodes(n).tor.dX(m - 3)
End If
Else
x0(jj) = IIf(m < 4, x0StartR, x0StartD)
End If
Next
Next
'
For n = 1 To LoopCount
For m = 1 To 6
b0((n - 1) * 6 + m) = 0
Next
Next
'
'nCons keeps trac of additional constraints for the known values
'in the form KMatrix(ncons,j)=1
nCons = LoopCount * 6
'now eliminate the known x's
'Print #dumpFile, "Nodal DOF eliminated: For use in KMatrix"
Print #dumpFile, "Temporarily eliminate known x routine being bypassed"
'KTree.EliminateKnownX 1
'trying without eliminating the k values for knwn x's
' later adding x=c type constraints
'dump the adjusted K matrix
xFile = FreeFile
sf = getFiles.sFiles(0).Text
Open sf For Output As #xFile
'Open "g:\program\tmp\matlab\kMatrix.dat" For Output As #xFile
KTree.listTree 1 'write the K matrix in a file for debugging
If eqStr <> "" Then
Print #dumpFile, eqStr
eqStr = ""
End If
'augment KMatrix with the known x-es
nCons = LoopCount * 6
For n = 1 To nNodes
163
For m = 1 To 6
If aNodes(n).dof(m) = 1 Then ' there is a known value
nCons = nCons + 1
Print #xFile, nCons, (n - 1) * 6 + m, 1#
End If
Next
Next
Close xFile
' next print x0
' first the nodal data
xFile = FreeFile
sf = getFiles.sFiles(1).Text
Open sf For Output As #xFile
For n = 1 To nNodes
For m = 1 To 6
Print #xFile, x0((n - 1) * 6 + m) ' write only the values
Next
Next
Close xFile
'
' now print b0
xFile = FreeFile
sf = getFiles.sFiles(2).Text
Open sf For Output As #xFile
For n = 1 To LoopCount
For m = 1 To 6
Print #xFile, b0((n - 1) * 6 + m) ' write only the values
Next
Next
For n = 1 To nCons
Print #xFile, b0(n) ' write only the values
Next
Close xFile
'done
fMainForm.MousePointer = vbArrow
End Sub
Function Local2Global(Cat As String, nPF As Integer, dX As Vector) As Vector
'cat="P(art)"/"F(eature)" for LCS reference, nPF=part/feature number
Dim xTem As Vector, j As Integer, k As Integer
For j = 1 To 3
xTem.x(j) = 0
For k = 1 To 3
xTem.x(j) = xTem.x(j) + dX.x(k) * IIf(Cat = "P", aParts(nPF).LCS(j, k), aFeatures(nPF).LCS(j, k))
Next
Next
' add details as reqd.
Local2Global = xTem
End Function
Sub TorTransform(Cat As String, nPF As Integer, nPa As Integer, pZero As Integer)
Dim nRow As Integer, nCol As Integer, nFac As Integer
Dim kie As String, nR As Integer, nC As Integer, nodNow As Integer
Dim delx As Vector, nZero As Integer, xLCS(3, 3) As Double
Dim kTemp(6, 6) As Double, nGap As Integer, Required As Boolean
'
delx.x(1) = 0
delx.x(2) = 0
delx.x(3) = 0
Required = True
nRow = nPa 'current loop# forms 6 rows: (nPa-1)*6+1,+2,...nPa*6-1, nPa*6
nZero = aParts(pZero).center ' reference point on the base part
nFac = 1#
Select Case Cat
Case "P1" 'from part
If nPF <> pZero Then 'no need - already taken in prev P2
164
Required = False
Else
'local to global conversion
nCol = aParts(nPF).center
For nR = 1 To 3
For nC = 1 To 3
xLCS(nR, nC) = aParts(nPF).LCS(nR, nC) '3x3 local coordinate system
Next
Next
End If
Case "F1" 'from feature/Feature
nCol = aFeatures(nPF).center
For nR = 1 To 3
For nC = 1 To 3
xLCS(nR, nC) = aFeatures(nPF).LCS(nR, nC) '3x3 local coordinate system
Next
Next
Case "G"
nCol = nPF 'the gap node itself
'first locate the gap number
nGap = 0
For i = 1 To nGaps
If nCol = gap(i).n Then
nGap = i
Exit For
End If
Next
If nGap = 0 Then
MsgBox "Gap node:" & nCol & " not found in Gap array!"
Stop
End If
'take the LCS of Feature1 as LCS of the gap
For nR = 1 To 3
For nC = 1 To 3
xLCS(nR, nC) = aFeatures(gap(nGap).f1).LCS(nR, nC) '3x3 local coordinate system
Next
Next
Case "F2"
nCol = aFeatures(nPF).center
For nR = 1 To 3
For nC = 1 To 3
xLCS(nR, nC) = aFeatures(nPF).LCS(nR, nC) '3x3 local coordinate system
Next
Next
nFac = -1
Case "P2"
If nPF <> pZero Then 'needs transformation to partZero
'form trans matrix
End If
'next local to global conversion
'test matrix formation
nCol = aParts(nPF).center
For nR = 1 To 3
For nC = 1 To 3
xLCS(nR, nC) = aParts(nPF).LCS(nR, nC) '3x3 local coordinate system
Next
Next
nFac = -1
End Select
If Cat <> "P1" Then
delx.x(1) = aNodes(nCol).x(1) - aNodes(nZero).x(1)
delx.x(2) = aNodes(nCol).x(2) - aNodes(nZero).x(2)
delx.x(3) = aNodes(nCol).x(3) - aNodes(nZero).x(3)
End If
Debug.Print "Cat, npf, row, col", Cat, nPF, nRow, nCol
165
If Required Then 'do actual posting else ingore
'
' transform to the origin and rotate the local values
' to global system and add to the corresponding cells in the global KMatrix
'
' First 3 rows - theta/rotational componenets
'
For nR = 1 To 3
For nC = 1 To 3
kTemp(nR, nC) = xLCS(nR, nC)
kTemp(nR, nC + 3) = 0
Next
Next
'
' Last 3 rows - delta/linear components
'
For nR = 1 To 3
kTemp(3 + nR, 1) = -delx.x(3) * xLCS(nR, 2) + delx.x(2) * xLCS(nR, 3)
kTemp(3 + nR, 2) = -delx.x(1) * xLCS(nR, 3) + delx.x(3) * xLCS(nR, 1)
kTemp(3 + nR, 3) = -delx.x(2) * xLCS(nR, 1) + delx.x(1) * xLCS(nR, 2)
kTemp(3 + nR, 4) = kTemp(nR, 1)
kTemp(3 + nR, 5) = kTemp(nR, 2)
kTemp(3 + nR, 6) = kTemp(nR, 3)
Next
'
' Put the 36 elements in their proper home in KMatrix
'
For nR = 1 To 6
For nC = 1 To 6
kie = "R" + Format((nRow - 1) * 6 + nR, "0000") + "C" + Format((nCol - 1) * 6 + nC, "0000")
'kie = "R" + Format(nRow, "0000") + "C" + Format(nCol, "0000") + Format((nRow - 1) * 6 + nC, "00000") + Format((nCol 1) * 6 + nR, "00000")
'Debug.Print nC; nR; kie
KTree.addNode (nRow - 1) * 6 + nR, (nCol - 1) * 6 + nC, kie, kTemp(nR, nC) * nFac
Next
Next
End If
End Sub
Function torTran(told As aTorsor, delx As Vector) As aTorsor
Dim tempt As aTorsor
tempt.rX(1) = told.rX(1)
tempt.rX(2) = told.rX(2)
tempt.rX(3) = told.rX(3)
tempt.dX(1) = told.dX(1) + delx.x(2) * told.rX(3) - delx.x(3) * told.rX(2)
tempt.dX(2) = told.dX(2) + delx.x(3) * told.rX(1) - delx.x(1) * told.rX(3)
tempt.dX(3) = told.dX(3) + delx.x(1) * told.rX(2) - delx.x(2) * told.rX(1)
torTran = tempt
End Function
'**************
Sub center2Nodes(xf As String)
'this sub converts the deviation torsors from the center of a Feature/feature node
'where the torsor is defined to the nodal points that define the edges
'save after converting to global frame
'
Dim nFile As Integer
If xf <> "" Then
nFile = FreeFile
Open xf For Output As nFile
Print #nFile, "
Values are in local coordinates"
Print #nFile, "Feature Node dx
dy
dz"
166
End If
Dim i, j, k, m, n
Dim delx As aTorsor, dX As Vector
'try this these selected features first then generalize
Dim xFeature(10) As Integer
xFeature(1) = 1: xFeature(2) = 2: xFeature(3) = 3: xFeature(4) = 9: xFeature(5) = 10:
xFeature(6) = 11: xFeature(7) = 13: xFeature(8) = 14: xFeature(9) = 15
Print #dumpFile, "Center to nodes disp:"
Print #dumpFile, "Feature Node dx
dy
dz"
For j = 1 To 9 'nFeatures
k = aFeatures(j).center
k = aFeatures(xFeature(j)).center
delx = aNodes(k).tor
For i = 1 To aFeatures(xFeature(j)).nod(0) 'all nodes
n = aFeatures(xFeature(j)).nod(i)
If aNodes(n).knownDeviation Then 'no need to calculate
' keep specified deviations
Else ' convert the deviation at center to this node along local-x
dX.x(1) = aNodes(n).x(1) - aNodes(k).x(1)
dX.x(2) = aNodes(n).x(2) - aNodes(k).x(2)
dX.x(3) = aNodes(n).x(3) - aNodes(k).x(3)
delx = aNodes(k).tor
delx.dX(2) = 0 ' keep only dx, ry, rz
delx.dX(3) = 0
delx.rX(1) = 0
delx = torTran(delx, dX)
If xf <> "" Then
Print #nFile, xFeature(j), n, delx.dX(1), delx.dX(2), delx.dX(3)
End If
'convert the dx'es into global coordinates
dX.x(1) = delx.dX(1)
dX.x(2) = delx.dX(2)
dX.x(3) = delx.dX(3)
dX = Local2Global("F", xFeature(j), dX)
With aNodes(n).tor
.dX(1) = .dX(1) + dX.x(1)
.dX(2) = .dX(2) + dX.x(2)
.dX(3) = .dX(3) + dX.x(3)
End With
Print #dumpFile, Format(j, "### "); Format(n, "### "); Format(dX.x(1), "##.### "); Format(dX.x(2), "##.### ");
Format(dX.x(3), "##.###")
End If
Next ' node of this feature
Next 'feature
Print #dumpFile, "End of Center to nodes disp:"
If xf <> "" Then
Close #nFile
End If
End Sub
'
Sub mapDev2Tol()
'convert deviations into corresponding tolerance zones
'
Dim n As Integer, m As Integer, tx As String
For n = 1 To nFeatures
tx = aFeatures(n).tol.tolType
Select Case tx
Case "Size" 'find the upper and lower limits plus-minus sizes
m = aFeatures(n).center
a = aFeatures(n).Ly
b = aFeatures(n).Lz
With aNodes(m).tor
delx(1) = .dX(1) + .rX(3) * b + .rX(2) * a
delx(2) = .dX(1) + .rX(3) * b - .rX(2) * a
delx(3) = .dX(1) - .rX(3) * b + .rX(2) * a
delx(4) = .dX(1) - .rX(3) * b - .rX(2) * a
167
End With
xmi = Abs(Min(delx(1), delx(2), delx(3), delx(4)))
xma = Abs(Max(delx(1), delx(2), delx(3), delx(4)))
aFeatures(n).tol.tolValue(1) = xma
aFeatures(n).tol.tolValue(2) = xmi
Case "Form"
Case "Location"
Case "Orientation"
Case "Runout"
Case "Profiel"
Case Else
End Select
Next
End Sub
'---------------Sub GenerateGeoConstraints()
'
' Modified from sub TorTransform to generates geometric continuity constraints for
' nodes commom to features of a part. Nilmani/June 20, 2002
'
Dim nRow As Integer, nCol As Integer, nFac As Integer, nP As Integer
Dim kie As String, nR As Integer, nC As Integer, nodNow As Integer, nn As Integer
Dim delx As Vector, nZero As Integer, nZero2 As Integer, xLink(3, 3) As Double
Dim kTemp(6, 6) As Double, kTemp2(6, 6) As Double, nF As Integer, nF2 As Integer
Dim xLCS(3, 3) As Double, nNod As Integer, nNod2 As Integer
Dim nFeature As Integer, nFeature2 As Integer, actF(99) As Boolean
'
' use these temporary list to check the routine, generalize later
actF(1) = True: actF(2) = True: actF(3) = True: actF(9) = True: actF(10) = True
actF(11) = True: actF(13) = True: actF(14) = True: actF(15) = True
'
delx.x(1) = 0: delx.x(2) = 0: delx.x(3) = 0
'
' put these constraints after the asm constraints.
nRow = LoopCount * 6 ' there are loopcount*6 equations
'
'Generate 3 equations for rows: nRow, nRow+1, nRow+2
'
For nP = 1 To nParts ' do for all parts
For nF = 1 To aParts(nP).Features(0) ' for all Features of this part
nFeature = aParts(nP).Features(nF) 'next Feature
If actF(nFeature) Then 'remove later
nZero = aFeatures(nFeature).center
For nn = 1 To aFeatures(nFeature).nod(0) 'all nodes defining this feature
nNod = aFeatures(nFeature).nod(nn) 'next node
For nF2 = 1 To aParts(nP).Features(0) 'check other features
If nF <> nF2 Then 'it's a different feature, check it
nFeature2 = aParts(nP).Features(nF2)
If actF(nFeature2) Then 'remove later
nZero2 = aFeatures(nFeature2).center
For nn2 = 1 To aFeatures(nFeature2).nod(0) 'all nodes of this feature
nNod2 = aFeatures(nFeature2).nod(nn2)
If nNod2 = nNod Then ' a nn is a node common to nF and nF2
'increment the row number
'nRow = nRow + 1
'MsgBox "nRow Part Feature Node Feature:" & nRow & ", " & nP & ", " & nF & ", " & nn & ", " & nF2 Debug.Print
"nRow Part Feature Node Feature:" & nRow & ", " & nP & ", " & nFeature & ", " & nNod & ", " & nFeature2
nCol = nn 'columns for these
' first transform t at nZero to nn
For nR = 1 To 3
For nC = 1 To 3
xLCS(nR, nC) = aFeatures(nFeature).LCS(nR, nC) '3x3 local coordinate system
Next
Next nR
delx.x(1) = aNodes(nNod).x(1) - aNodes(nZero).x(1)
delx.x(2) = aNodes(nNod).x(2) - aNodes(nZero).x(2)
168
delx.x(3) = aNodes(nNod).x(3) - aNodes(nZero).x(3)
'Debug.Print "Cat, npf, row, col", Cat, npf, nRow, nCol
' transform and rotate the local values to global system
' and add to the corresponding cells in the global KMatrix
' First 3 rows - theta/rotational componenets
'
For nR = 1 To 3
For nC = 1 To 3
kTemp(nR, nC) = xLCS(nR, nC)
kTemp(nR, nC + 3) = 0
Next
Next nR
' Last 3 rows - delta/linear components
'
For nR = 1 To 3
kTemp(3 + nR, 1) = -delx.x(3) * xLCS(nR, 2) + delx.x(2) * xLCS(nR, 3)
kTemp(3 + nR, 2) = -delx.x(1) * xLCS(nR, 3) + delx.x(3) * xLCS(nR, 1)
kTemp(3 + nR, 3) = -delx.x(2) * xLCS(nR, 1) + delx.x(1) * xLCS(nR, 2)
kTemp(3 + nR, 4) = kTemp(nR, 1)
kTemp(3 + nR, 5) = kTemp(nR, 2)
kTemp(3 + nR, 6) = kTemp(nR, 3)
Next nR
'
' then transform t at nZero2 to nn2
'
For nR = 1 To 3
For nC = 1 To 3
xLCS(nR, nC) = aFeatures(nFeature2).LCS(nR, nC) '3x3 local coordinate system
Next
Next nR
delx.x(1) = aNodes(nNod2).x(1) - aNodes(nZero2).x(1)
delx.x(2) = aNodes(nNod2).x(2) - aNodes(nZero2).x(2)
delx.x(3) = aNodes(nNod2).x(3) - aNodes(nZero2).x(3)
'
For nR = 1 To 3
For nC = 1 To 3
kTemp2(nR, nC) = xLCS(nR, nC)
kTemp2(nR, nC + 3) = 0
Next nC
Next nR
' Last 3 rows - delta/linear components
'
For nR = 1 To 3
kTemp2(3 + nR, 1) = -delx.x(3) * xLCS(nR, 2) + delx.x(2) * xLCS(nR, 3)
kTemp2(3 + nR, 2) = -delx.x(1) * xLCS(nR, 3) + delx.x(3) * xLCS(nR, 1)
kTemp2(3 + nR, 3) = -delx.x(2) * xLCS(nR, 1) + delx.x(1) * xLCS(nR, 2)
kTemp2(3 + nR, 4) = kTemp2(nR, 1)
kTemp2(3 + nR, 5) = kTemp2(nR, 2)
kTemp2(3 + nR, 6) = kTemp2(nR, 3)
Next nR
' finally post these terms in KTree
'
' 3 rows corresponding to nZero
For nR = 1 To 3
For nC = 1 To 6
kie = "R" + Format(nRow + nR, "0000") + "C" + Format((nZero - 1) * 6 + nC, "0000")
KTree.addNode nRow + nR, (nZero - 1) * 6 + nC, kie, kTemp(nR, nC)
Next nC
Next nR
' next same 3 rows corresponding to columns for nZero2 with negative values
For nR = 1 To 3
For nC = 1 To 6
kie = "R" + Format(nRow + nR, "0000") + "C" + Format((nZero2 - 1) * 6 + nC, "0000")
KTree.addNode nRow + nR, (nZero2 - 1) * 6 + nC, kie, -kTemp2(nR, nC)
Next nC
Next nR
nRow = nRow + 3
169
'
End If
Next nn2
End If
End If ' active features
Next nF2
Next nn
End If 'active features
Next nF
Next nP
nC = 1
End Sub
170
Appendix - 9 Tolerance Synthesis Example –1:
A 3-block system
1. Input data listing: (file: Art3M2-Oct22.art)
!A PLANAR 3-BLOCK ARTIFACT (3D) Model - 2
!
!Part #, Description, Center Node, Terminal?, LCS 9 values(11,12,13,....32,33)
PART:, 1, MAIN BLOCK, 1, 1, 1,0,0,0,1,0,0,0,1
PART:, 2, LEFT BLOCK, 5, 0, 1,0,0,0,1,0,0,0,1
PART:, 3, RIGHT BLOCK, 12, 0, 1,0,0,0,1,0,0,0,1
!
! FACE PART TYPE CENTER REF
NODES/vertices
FEATURE:, 1, 1,
PLANE, 2, 20,
19,21,35,34
FEATURE:, 2, 1,
PLANE, 8, 1,
32,33,35,34
FEATURE:, 3, 1,
PLANE, 17, 27,
30,31,33,32
FEATURE:, 4, 1,
PLANE, 29, 1,
30,31,28,27
FEATURE:, 5, 1,
PLANE, 53, 1,
27,28,26,25
FEATURE:, 6, 1,
PLANE, 24, 1,
25,26,23,22
FEATURE:, 7, 1,
PLANE, 54, 1,
22,23,20,18
FEATURE:, 8, 1,
PLANE, 55, 1,
18,20,21,19
FEATURE:, 9, 2,
PLANE, 4, 5,
36,37,52,51
FEATURE:, 10, 2,
PLANE, 6, 5,
41,42,52,51
FEATURE:, 11, 2,
PLANE, 9, 5,
41,42,40,39
FEATURE:, 12, 2,
PLANE, 38, 5,
39,40,37,36
FEATURE:, 13, 3,
PLANE, 11, 12,
45,46,44,43
FEATURE:, 14, 3,
PLANE, 13, 12,
45,46,48,47
FEATURE:, 15, 3,
PLANE, 15, 12,
47,48,50,49
FEATURE:, 16, 3,
PLANE, 56, 12,
43,44,50,49
!
!LINK: FROM FEATURE, TO FEATURE, GAP NODE, DOF, OTHER POINTS OF INTEREST
LINK:,1, 9,3
LINK:,2,10,7
LINK:,2,14,14
LINK:,3,15,16
LINK:,11,13,10
!
!NODE X Y Z RX RY RZ DX DY DX (0=known/specified, ""=unknown)
NODE:,1,0,10,0,0,0,0,0,0,0
NODE:,2,-60,45,0, 0,,,,0,0
NODE:,3,-60,45,0, 0,,,,0,0
NODE:,4,-60,45,0, 0,,,,0,0
NODE:,5,-30,45,0, ,,,,0,0
NODE:,6,-30,25,0, 0,,,,0,0
NODE:,7,-30,25,0, 0,,,,0,0
NODE:,8,0,25,0, 0,,,,0,0
NODE:,9,0,45,0, 0,,,,0,0
NODE:,10,0,45,0, 0,,,,0,0
NODE:,11,0,45,0, 0,,,,0,0
NODE:,12,20,45,0, ,,,,0,0
NODE:,13,20,25,0, 0,,,,0,0
NODE:,14,20,25,0, 0,,,,0,0
NODE:,15,40,45,0, 0,,,,0,0
NODE:,16,40,45,0, 0,,,,0,0
NODE:,17,40,45,0, 0,,,,0,0
NODE:,18,-90,80,20,0,0,0,0,0,0,0
NODE:,19,-60,80,20,0,0,0,0,0,0,0
NODE:,20,-90,80,-20,0,0,0,0,0,0,0
171
NODE:,21,-60,80,-20,0,0,0,0,0,0,0
NODE:,22,-90,0,20,0,0,0,0,0,0,0
NODE:,23,-90,0,-20,0,0,0,0,0,0,0
NODE:,24,0,0,0,0,0,0,0,0,0,0
NODE:,25,70,0,20,0,0,0,0,0,0,0
NODE:,26,70,0,-20,0,0,0,0,0,0,0
NODE:,27,70,80,20,0,0,0,0,0,0,0
NODE:,28,70,80,-20,0,0,0,0,0,0,0
NODE:,29,55,80,0,0,0,0,0,0,0,0
NODE:,30,40,80,20,0,0,0,0,0,0,0
NODE:,31,40,80,-20,0,0,0,0,0,0,0
NODE:,32,40,25,20,0,0,0,0,0,0,0
NODE:,33,40,25,-20,0,0,0,0,0,0,0
NODE:,34,-60,25,20,0,0,0,0,0,0,0
NODE:,35,-60,25,-20,0,0,0,0,0,0,0
NODE:,36,-60,65,20,0,0,0,0,0,0,0
NODE:,37,-60,65,-20,0,0,0,0,0,0,0
NODE:,38,-30,65,0,0,0,0,0,0,0,0
NODE:,39,0,65,20,0,0,0,0,0,0,0
NODE:,40,0,65,-20,0,0,0,0,0,0,0
NODE:,41,0,25,20,0,0,0,0,0,0,0
NODE:,42,0,25,-20,0,0,0,0,0,0,0
NODE:,43,0,65,20,0,0,0,0,0,0,0
NODE:,44,0,65,-20,0,0,0,0,0,0,0
NODE:,45,0,25,20,0,0,0,0,0,0,0
NODE:,46,0,25,-20,0,0,0,0,0,0,0
NODE:,47,40,25,20,0,0,0,0,0,0,0
NODE:,48,40,25,-20,0,0,0,0,0,0,0
NODE:,49,40,65,20,0,0,0,0,0,0,0
NODE:,50,40,65,-20,0,0,0,0,0,0,0
NODE:,51,-60,25,20,0,0,0,0,0,0,0
NODE:,52,-60,25,-20,0,0,0,0,0,0,0
NODE:,53,70,40,0,0,0,0,0,0,0,0
NODE:,54,-90,40,0,0,0,0,0,0,0,0
NODE:,55,-75,80,0,0,0,0,0,0,0,0
NODE:,56,20,65,0,0,0,0,0,0,0,0
!
! following DISP data is used for computations involving the deviations from Matlab optimuzation run.
DISP:, 2, 0.0000, 0.0100, 0.0100, 0.0100, -0.0000, 0.0000
DISP:, 3, 0.0000, -0.0054, -0.0100, 0.0100, 0.0000, 0.0000
DISP:, 4, -0.0000, -0.0047, 0.0000, 0.0063, -0.0000, 0.0000
DISP:, 6, -0.0000, 0.0008, -0.0000, 0.0010, 0.0000, 0.0000
DISP:, 7, 0.0000, 0.0001, 0.0000, -0.0023, -0.0000, 0.0000
DISP:, 8, -0.0000, 0.0100, -0.0000, 0.0100, 0.0000, 0.0000
DISP:, 9, 0.0000, 0.0100, 0.0050, -0.0100, -0.0000, -0.0000
DISP:, 10, 0.0000, -0.0002, -0.0100, -0.0100, -0.0000, 0.0000
DISP:, 11, 0.0000, 0.0100, 0.0050, -0.0100, 0.0000, 0.0000
DISP:, 13, 0.0000, 0.0008, -0.0000, 0.0100, 0.0000, 0.0000
DISP:, 14, 0.0000, -0.0003, -0.0000, -0.0067, 0.0000, 0.0000
DISP:, 15, 0.0000, -0.0051, 0.0000, 0.0017, 0.0000, 0.0000
DISP:, 16, 0.0000, 0.0055, 0.0100, -0.0100, 0.0000, 0.0000
DISP:, 17, 0.0000, 0.0100, 0.0100, 0.0100, 0.0000, 0.0000
2. Generated Cost Functions
function yy = costfunJun25R1 (x)
% deviation dependent cost of manufacturing formulation
% generated from tnp3. Nilmani Pramanik / Jun 25, 2002
global CC;
yy = 0;
yy = yy + 2200 /( .00001 + abs(x(10)+ 55*x(8)+ 40*x(9) ));
172
yy = yy + 4000 /( .00001 + abs(x(46)+ 100*x(44)+ 40*x(45) ));
yy = yy + 2200 /( .00001 + abs(x(100)+ 55*x(98)+ 40*x(99) ));
yy = yy + 1600 /( .00001 + abs(x(22)+ 40*x(20)+ 40*x(21) ));
yy = yy + 2400 /( .00001 + abs(x(34)+ 60*x(32)+ 40*x(33) ));
yy = yy + 1600 /( .00001 + abs(x(52)+ 40*x(50)+ 40*x(51) ));
yy = yy + 1600 /( .00001 + abs(x(64)+ 40*x(62)+ 40*x(63) ));
yy = yy + 1600 /( .00001 + abs(x(76)+ 40*x(74)+ 40*x(75) ));
yy = yy + 1600 /( .00001 + abs(x(88)+ 40*x(86)+ 40*x(87) ));
CC=CC+1; if mod(CC,100) == 0
CC
yy
end
3. Assemblability Equations
Each equation shown below as Eqn# is generated from the assemblability constraint
Kx=b for the example problem. Each term on the left hand side of an equation is of the
form: <r|d><X|Y|Z><N>, where r stands for rotation and d for displacement. X, Y, and Z
are the local axes, and N is the node number. For example rX(4) indicates rotational
component of the deviation at node 4 in local X direction.
Eqn# 1: rX(2)+ rX(3)+ rX(4)- rX(5)- rZ(6)+ rZ(7)- rZ(8) = 0
Eqn# 2: rZ(2)- rZ(3)- rZ(4)- rY(5)- rX(6)+ rX(7)- rX(8) = 0
Eqn# 3: rY(2)+ rY(3)- rY(4)- rZ(5)+ rY(6)+ rY(7)- rY(8) = 0
Eqn# 4: -35. *rZ(2)+ dX(2)- 35. *rZ(3)+ dX(3)- 35. *rZ(4)+ dX(4)+35. *rZ(5)- dX(5)- 15. *rX(6)- 30. *rY(6)dZ(6)+15. *rX(7)+30. *rY(7)+ dZ(7)- 15. *rX(8)- dZ(8) = 0
Eqn# 5: -35. *rX(2)- 60. *rY(2)- dZ(2)- 35. *rX(3)- 60. *rY(3)- dZ(3)- 35. *rX(4)- 60. *rY(4)- dZ(4)+30. *rZ(5)dY(5)+15. *rZ(6)- dX(6)- 15. *rZ(7)+ dX(7)+15. *rZ(8)- dX(8) = 0
Eqn# 6: -60. *rZ(2)+ dY(2)- 60. *rZ(3)+ dY(3)+60. *rZ(4)- dY(4)- 35. *rX(5)- 30. *rY(5)- dZ(5)- 30. *rZ(6)+ dY(6)30. *rZ(7)+ dY(7)- dY(8) = 0
Eqn# 7: rX(2)+ rX(3)+ rX(4)- rX(5)- rZ(8)+ rX(9)+ rX(10)+ rX(11)- rX(12)- rZ(13)+ rZ(14) = 0
Eqn# 8: rZ(2)- rZ(3)- rZ(4)- rY(5)- rX(8)- rZ(9)- rZ(10)- rZ(11)- rY(12)- rX(13)+ rX(14) = 0
Eqn# 9: rY(2)+ rY(3)- rY(4)- rZ(5)- rY(8)+ rY(9)+ rY(10)- rY(11)- rZ(12)+ rY(13)+ rY(14) = 0
Eqn# 10: -35. *rZ(2)+ dX(2)- 35. *rZ(3)+ dX(3)- 35. *rZ(4)+ dX(4)+35. *rZ(5)- dX(5)- 15. *rX(8)- dZ(8)- 35. *rZ(9)+
dX(9)- 35. *rZ(10)+ dX(10)- 35. *rZ(11)+ dX(11)+35. *rZ(12)- dX(12)- 15. *rX(13)+20. *rY(13)- dZ(13)+15.
*rX(14)- 20. *rY(14)+ dZ(14) = 0
Eqn# 11: -35. *rX(2)- 60. *rY(2)- dZ(2)- 35. *rX(3)- 60. *rY(3)- dZ(3)- 35. *rX(4)- 60. *rY(4)- dZ(4)+30. *rZ(5)dY(5)+15. *rZ(8)- dX(8)- 35. *rX(9)- dZ(9)- 35. *rX(10)- dZ(10)- 35. *rX(11)- dZ(11)- 20. *rZ(12)- dY(12)+15.
*rZ(13)- dX(13)- 15. *rZ(14)+ dX(14) = 0
Eqn# 12: -60. *rZ(2)+ dY(2)- 60. *rZ(3)+ dY(3)+60. *rZ(4)- dY(4)- 35. *rX(5)- 30. *rY(5)- dZ(5)- dY(8)+ dY(9)+
dY(10)- dY(11)- 35. *rX(12)+20. *rY(12)- dZ(12)+20. *rZ(13)+ dY(13)+20. *rZ(14)+ dY(14) = 0
Eqn# 13: rX(2)+ rX(3)+ rX(4)- rX(5)+ rX(9)+ rX(10)+ rX(11)- rX(12)+ rX(15)- rX(16)+ rX(17) = 0
Eqn# 14: rZ(2)- rZ(3)- rZ(4)- rY(5)- rZ(9)- rZ(10)- rZ(11)- rY(12)- rZ(15)+ rZ(16)- rZ(17) = 0
173
Eqn# 15: rY(2)+ rY(3)- rY(4)- rZ(5)+ rY(9)+ rY(10)- rY(11)- rZ(12)+ rY(15)+ rY(16)- rY(17) = 0
Eqn# 16: -35. *rZ(2)+ dX(2)- 35. *rZ(3)+ dX(3)- 35. *rZ(4)+ dX(4)+35. *rZ(5)- dX(5)- 35. *rZ(9)+ dX(9)- 35.
*rZ(10)+ dX(10)- 35. *rZ(11)+ dX(11)+35. *rZ(12)- dX(12)- 35. *rZ(15)+ dX(15)+35. *rZ(16)- dX(16)- 35. *rZ(17)+
dX(17) = 0
Eqn# 17: -35. *rX(2)- 60. *rY(2)- dZ(2)- 35. *rX(3)- 60. *rY(3)- dZ(3)- 35. *rX(4)- 60. *rY(4)- dZ(4)+30. *rZ(5)dY(5)- 35. *rX(9)- dZ(9)- 35. *rX(10)- dZ(10)- 35. *rX(11)- dZ(11)- 20. *rZ(12)- dY(12)- 35. *rX(15)+40. *rY(15)dZ(15)+35. *rX(16)- 40. *rY(16)+ dZ(16)- 35. *rX(17)+40. *rY(17)- dZ(17) = 0
Eqn# 18: -60. *rZ(2)+ dY(2)- 60. *rZ(3)+ dY(3)+60. *rZ(4)- dY(4)- 35. *rX(5)- 30. *rY(5)- dZ(5)+ dY(9)+ dY(10)dY(11)- 35. *rX(12)+20. *rY(12)- dZ(12)+40. *rZ(15)+ dY(15)+40. *rZ(16)+ dY(16)- 40. *rZ(17)- dY(17) = 0
Eqn# 19: rX(5)+ rZ(6)+ rZ(7)+ rX(9)+ rX(10)+ rX(11)- rX(12)- rZ(13)+ rZ(14) = 0
Eqn# 20: rY(5)+ rX(6)+ rX(7)- rZ(9)- rZ(10)- rZ(11)- rY(12)- rX(13)+ rX(14) = 0
Eqn# 21: rZ(5)- rY(6)+ rY(7)+ rY(9)+ rY(10)- rY(11)- rZ(12)+ rY(13)+ rY(14) = 0
Eqn# 22: 35. *rZ(5)- dX(5)+15. *rX(6)+30. *rY(6)+ dZ(6)+15. *rX(7)+30. *rY(7)+ dZ(7)- 35. *rZ(9)+ dX(9)- 35.
*rZ(10)+ dX(10)- 35. *rZ(11)+ dX(11)+35. *rZ(12)- dX(12)- 15. *rX(13)+20. *rY(13)- dZ(13)+15. *rX(14)- 20.
*rY(14)+ dZ(14) = 0
Eqn# 23: 30. *rZ(5)- dY(5)- 15. *rZ(6)+ dX(6)- 15. *rZ(7)+ dX(7)- 35. *rX(9)- dZ(9)- 35. *rX(10)- dZ(10)- 35.
*rX(11)- dZ(11)- 20. *rZ(12)- dY(12)+15. *rZ(13)- dX(13)- 15. *rZ(14)+ dX(14) = 0
Eqn# 24: -35. *rX(5)- 30. *rY(5)- dZ(5)+30. *rZ(6)- dY(6)- 30. *rZ(7)+ dY(7)+ dY(9)+ dY(10)- dY(11)- 35.
*rX(12)+20. *rY(12)- dZ(12)+20. *rZ(13)+ dY(13)+20. *rZ(14)+ dY(14) = 0
Eqn# 25: rX(5)+ rZ(6)+ rZ(7)+ rZ(8)+ rX(9)+ rX(10)+ rX(11)- rX(12)+ rX(15)- rX(16)+ rX(17) = 0
Eqn# 26: rY(5)+ rX(6)+ rX(7)+ rX(8)- rZ(9)- rZ(10)- rZ(11)- rY(12)- rZ(15)+ rZ(16)- rZ(17) = 0
Eqn# 27: rZ(5)- rY(6)+ rY(7)+ rY(8)+ rY(9)+ rY(10)- rY(11)- rZ(12)+ rY(15)+ rY(16)- rY(17) = 0
Eqn# 28: 35. *rZ(5)- dX(5)+15. *rX(6)+30. *rY(6)+ dZ(6)+15. *rX(7)+30. *rY(7)+ dZ(7)+15. *rX(8)+ dZ(8)- 35.
*rZ(9)+ dX(9)- 35. *rZ(10)+ dX(10)- 35. *rZ(11)+ dX(11)+35. *rZ(12)- dX(12)- 35. *rZ(15)+ dX(15)+35. *rZ(16)dX(16)- 35. *rZ(17)+ dX(17) = 0
Eqn# 29: 30. *rZ(5)- dY(5)- 15. *rZ(6)+ dX(6)- 15. *rZ(7)+ dX(7)- 15. *rZ(8)+ dX(8)- 35. *rX(9)- dZ(9)- 35. *rX(10)dZ(10)- 35. *rX(11)- dZ(11)- 20. *rZ(12)- dY(12)- 35. *rX(15)+40. *rY(15)- dZ(15)+35. *rX(16)- 40. *rY(16)+
dZ(16)- 35. *rX(17)+40. *rY(17)- dZ(17) = 0
Eqn# 30: -35. *rX(5)- 30. *rY(5)- dZ(5)+30. *rZ(6)- dY(6)- 30. *rZ(7)+ dY(7)+ dY(8)+ dY(9)+ dY(10)- dY(11)- 35.
*rX(12)+20. *rY(12)- dZ(12)+40. *rZ(15)+ dY(15)+40. *rZ(16)+ dY(16)- 40. *rZ(17)- dY(17) = 0
Eqn# 31: rZ(8)- rX(12)+ rZ(13)+ rZ(14)+ rX(15)- rX(16)+ rX(17) = 0
Eqn# 32: rX(8)- rY(12)+ rX(13)+ rX(14)- rZ(15)+ rZ(16)- rZ(17) = 0
Eqn# 33: rY(8)- rZ(12)- rY(13)+ rY(14)+ rY(15)+ rY(16)- rY(17) = 0
Eqn# 34: 15. *rX(8)+ dZ(8)+35. *rZ(12)- dX(12)+15. *rX(13)- 20. *rY(13)+ dZ(13)+15. *rX(14)- 20. *rY(14)+
dZ(14)- 35. *rZ(15)+ dX(15)+35. *rZ(16)- dX(16)- 35. *rZ(17)+ dX(17) = 0
Eqn# 35: -15. *rZ(8)+ dX(8)- 20. *rZ(12)- dY(12)- 15. *rZ(13)+ dX(13)- 15. *rZ(14)+ dX(14)- 35. *rX(15)+40.
*rY(15)- dZ(15)+35. *rX(16)- 40. *rY(16)+ dZ(16)- 35. *rX(17)+40. *rY(17)- dZ(17) = 0
Eqn# 36: dY(8)- 35. *rX(12)+20. *rY(12)- dZ(12)- 20. *rZ(13)- dY(13)+20. *rZ(14)+ dY(14)+40.
*rZ(15)+ dY(15)+40. *rZ(16)+ dY(16)- 40. *rZ(17)- dY(17) = 0
174
Bibliography
ASME (1994) ASME Dimensioning and Tolerancing. ASME Standard Y14.5M,
American Society of Mechanical Engineering, New York, 1994.
Ballot, E., Bourdet, P., (1998) A Computation Method for the Consequences of
Geometric Errors in Mechanisms. Geometric Design Tolerancing: Theories,
Standards and Applications, Hoda A. Elmaraghy (Editor), Chapman & Hall, pp
197-207, 1998.
Ballot, E., Bourdet, P., (2000) A Mathematical Model of Geometric Errors in the case of
Specification and 3D Control of Mechanical Parts. Advanced Mathematical and
Computational Tools in Metrology IV, 2000 World Scientific Publishing
Baxter, J. E., Juster, N. P. and Pennington, A. de. (1994) Verification of Product
Design Specifications Using a Functional Data Model. MOSES Project Research
Report 25, University of Leeds, April 1994.
Bharadwaj, B. (1995) A Framework for Tolerance Synthesis of Mechanical
Components. Master's Thesis. Syracuse University, Syracuse, NY, 1995.
Billo, R. E. (1989) An Object-Oriented Modeling Methodology Utilizing Conceptual
Graphs for Form Feature Definition, Ph.D. Thesis, Arizona State University,
1989.
Bracewell, R. H., Chaplin, R. V. , Langdon, P. M. , Li, M., Oh, V. K. , Sharpe, J. E. E.
and Yan, X. T. (1995) Integrated Platform for AI Support of Complex Design. In
AI System Support for Conceptual Design (Editor: J. E. E. Sharpe), SpringerVerlag, 1995.
Broman, V. and Shensa, M. J. (1990) A Compact Algorithm for the Intersection and
Approximation of N-Dimensional Polytopes. Mathematics and Computers in
Simulation, vol. 32, pp. 469-480, 1990.
Chandrasekaran, B. , Goel, A. K. and Iwasaki, Y. (1993) Functional Representation of
Design Rationale. Computer, pp. 48-6, January 1993.
Chandrasekaran, B. and Josephson, J. R. (1996) An explication of Function. Laboratory
for AI Research, The Ohio State University, Columbus, OH, January 1996.
Chase, K. W., Greenwood, W.H.,Loosli, B.G. and Hauglund, L.F. (1990) Least cost
tolerance allocation for mechanical assemblies with automated process selection.
Manufacturing Review, vol. 3(1) pp. 49-59, 1990.
175
Chase, K. W. and Magleby, Spencer P. (1997) A Comprehensive System for ComputerAided Tolerance Analysis of 2-D and 3-D Mechanical Assemblies. Proceedings
of the 5th International Seminar on Computer-Aided Tolerancing Toronto,
Canada, April 27-29, 1997.
Chen, Mu-Chen. (2001) Tolerance synthesis by neural learning and nonlinear
programming, International Journal of Production Economics, vol. 70, no.1, pp.
55-65, Mar 2001.
Ciarallo, Frank W., Yang, C.C. (1997) Optimization of propagation in interval constraint
networks for tolerance design. Proceedings of the IEEE International Conference
on Systems, Man and Cybernetics, vol. 2, pp. 1924-1929, 1997.
Cutkosky, M. R., Engelmore, R. S., et al. (1993) PACT: An Experiment in Integrating
Concurrent Engineering Systems. IEEE Computer, pp. 28-37, 1993.
Dasgupta, D. , Michalewicz, Z. (1997)
Applications, Springer-Verlag, 1997.
Evolutionary Algorithms in Engineering
Deng, J. ,Deng, S. (2002) The adaptive branch and bound method of tolerance synthesis
based on the reliability index, International Journal of Advanced Manufacturing
Technology, vol. 20, no. 3, pp. 190-200, 2002.
Ding, Y. , Jin, J., Ceglarek, D. andShi, J. (2000) Process-Oriented Tolerance Synthesis
for Multistage Manufacturing Processes, presented on the ASME International
Mechanical Engineering Congress and Exposition’2000.
Dong, Z. Hu, W. and Xue, D. (1994) New Production Cost-Tolerance Models for
Tolerance Synthesis, Journal of Engineering for Industry, Transaction of ASME,
Vol. 116, pp. 199-206, 1994.
Dong, Z. (1997) Chapter 9: Tolerance Synthesis by Manufacturing Cost Modeling and
Design Optimization. Advanced Tolerancing Techniques, H. C. Zhang (Ed.), John
Wiley & Sons, pp. 233-260, 1997.
Dong, Z., Wang, G. (1998) Automated Cost Modeling for Tolerance Synthesis Using
Manufacturing Process Data, Knowledge Reasoning and Optimization. Geometric
Design Tolerancing, Kluwer Academic, H. A. ElMaraghy (Ed.), pp. 282-293,
1998.
Drake, Paul (1999) Dimensioning and Tolerancing Handbook, McGraw-Hill, 1999
Du, R., Ji, Shuping; Li, Xiaoli (2000) Tolerance synthesis using second-order fuzzy
comprehensive evaluation and genetic algorithm. International Journal of
Production Research, vol. 38, no. 15, pp. 3471-3483, 2000.
176
Due, Mark J. , Constantin, Chassapis (1996) Tolerance design synthesis in a concurrent
engineering environment. Proceedings of the 1996 ASME International
Mechanical Engineering Congress and Exposition, Nov 17-22 1996, Atlanta, GA,
USA.
Feng, C-X., Kusiak, A. (2000) Robust Tolerance Design with the Design of Experiments
Approach. Transactions of the ASME, Journal of Manufacturing Science and
Engineering, vol. 122(3), pp. 520-528, 2000.
Finger, S. and Rinderle, J. R. (1989) A Transformational Approach to Mechanical
Design Using Bond Graph Grammer. In Proc. of 1st ASME Design Theory and
Methodology Conference, pp. 197-216, 1989.
Finger, S., Fox, M. S., Navinchandra, D. , Prinz, F. B. and Rinderle, J. R. (1990)
Design Fusion: A Product Life-cycle View for Engineering Designs. Technical
Report EDRC 24-28-90, EDRC, CMU, 1990.
Finger, S., Fox, M. S., Prinz, F. B. and Rinderle, J. R. (1992) Concurrent Design.
Applied Artificial Intelligence, vol. 6, pp. 257-283, 1992.
Gilbert, Olivier L., (1992) Representation of Geometric Variations Using Matrix
Transforms for Statistical Tolerance Analysis in Assemblies. Master thesis, MIT,
1992.
Gorti, S. R. and Sriram, Ram D. (1996) From Symbol to Form: A Framework for
Conceptual Design. Computer-Aided Design, vol. 28, no. 11, pp. 853-870, 1996.
Greenwood, W. H., Chase, K.W. (1987) A new tolerance analysis method for designers
and manufacturers. Journal of Engineering for Industry, 109:112-116, 1987
Gui, J. K. and Mantyla, M. (1994) Functional Understanding of Assembly Modelling.
Computer_Aided Design, vol. 26, no. 6, pp. 435-451, 1994.
Henson, B., Juster, N. P. and Pennington, A. de. (1994) Towards an Integrated
Representation of Function, Behavior and Form. MOSES Project Research Report
16, University of Leeds, April 1994.
Hoover, S. P. and Rinderle, J. R. 1989) A Synthesis Strategy for Mechanical Devices.
Research in Engineering Design, Vol. 1, No. 2, pp 87-103, 1989.
Hundal, M. S. and Byrne, J. F. (1991) Computer-Aided Generation of Function Block
Diagrams in a Methodical Design Procedure. In Proc. of Design Theory and
Methodology- DTM'91 Conference, Volume DE-Vol.27, pp. 251-257, 1991.
177
Iannuzzi, Mark (1998) Variation simulation for tolerance analysis and synthesis.
Proceedings of the 1998 ASQ's 52nd Annual Quality Congress, May 4-6 1998,
Philadelphia, PA, USA.
Iwasaki, Y. and Simon, H. A. (1986) Causality
Intelligence, vol. 29(1), pp. 3-32, 1986.
in
Device
Behavior.
Artificial
Iyengar, G., Lee, C-L and Kota, S. (1994) Towards an Objective Evaluation of Alternate
Designs. ASME Journal of Mechanical Design, vol. 116, pp. 487-492, 1994.
Jayaraman, R., Srinivasan, V. (1989) Geometric Tolerancing Part I: Virtual Boundary
requirements. IBM Journal of Research and Development, vol. 33(2), 1989.
Jayaraman, R., Srinivasan, V. (1989) Geometric Tolerancing Part II: Cinditional
Tolerances. IBM Journal of Research and Development, vol. 33(2), 1989.
Johnson, A. L. (1990) Functional Modeling: A New Development in Computer-Aided
Design. Intelligent CAD (Editors: H. Yoshikawa and T. Holden), Vol. II, pp. 203212. Elsevier Science Publishers B. V., North Holland, Amsterdam, 1990.
Kannapan, S. M. and Marshek, K. M. (1991) Design Synthesis Reasoning: A
Methodology for Mechanical Design. Research in Engineering Design, vol. 2, No.
4, pp 221-238, 1991.
Kapur, K. C., Raman, S. and Pulat, P.S. (1990) Methodology for tolerance design using
quality loss function. Computers and Industrial Engineering, vol. 19, pp. 254-257,
1990.
Kota, S. (1990) A Qualitative Matrix Representation Scheme for the Conceptual Design
of Mechanisms. In Proc. of ASME Design Automation Conference (21st Biannual
ASME Mechanisms Conference), pp. 217-230, 1990.
Krause, F. L.., Kimura, F., Kjellberg, T. and Lu, S. C-Yu. (1993) Product Modelling.
Annals of CIRP, vol. 42, no. 2, pp. 695-706, 1993.
Krishnaswami, M. and Mayne, R.W. (1994) Optimizing tolerance allocation for
minimum cost and maximum quality. Proc. ASME Design Automation
Conference, 20th Design Automation Conference, number DE-vol.69-1, pp. 211217, 1994.
Lai, K. and Wilson, W. R. D. (1989) FDL - A Language for Function Description and
Realization in Mechanical Design. Journal of Mechanisms, Transmissions, and
Automation in Design. Transactions of the ASME, vol. 111, pp. 117-123, 1989.
178
Laperriere, L., ElMaraghy, Hoda A. (2000) Tolerance analysis and synthesis using
Jacobian transforms, CIRP Annals - Manufacturing Technology, vol. 49, no. 1,
pp. 359-362, 2000.
Lee, Woo-Jong, Woo, Tony C.; Chou, Shuo-Yan, (1993) Tolerance synthesis for
nonlinear systems based on nonlinear programming, IIE Transactions, vol. 25,
no. 1, pp. 51-61, 1993.
Lin, Shui-Shun, Wang, Hsu-Pin (Ben) and Zhang, Chun (Chuc) (1997) Optimal
Tolerance Design for Integrated Design, Manufacturing, and Inspection with
Genetic Algorithms. Advanced Tolerancing Techniques, Hong-Chao Zhang
(Editor), John Wiley & Sons, Inc, pp 261-281, 1997.
Mantripragada, R. and Whitney, D. E. (1998) The Datum Flow Chain: A Systematic
Approach to Assembly Design and Modeling. Research in Engineering Design,
vol 10, pp. 150-165, 1998.
Mathieu, L., Clement, A. and Bourdet, P. (1998) Modeling,
Representation
and
Processing of Tolerances, Tolerance Inspection: A Survey of Current Hypothesis.
Geometric Design Tolerancing: Theories, Standards and Applications, Hoda A.
Elmaraghy (Editor), Chapman & Hall, pp 1-33, 1998.
Moore, R.E. (1966) Interval Analysis, Prentice-Hall, Englewood Cliffs, N.J.
Moskowitz, H., Plante, R. , Duffy, J. (2001) Multivariate tolerance design using quality
loss, Source: IIE Transactions, vol. 33, no. 6, pp. 437-448, 2001.
Nagarwala, M.Y. , Pulat, P.S. and Raman, S.R. (1994) Process selection and tolerance
allocation for minimum cost assembly. Manufacturing Science and Engineering,
116, 1994.
Nurre, J. H., Vedati, K. (1998) Cost optimization of a process plan's tolerance
assignments for manufacturing, nternational Journal of Modelling & Simulation,
vol. 18, no. 3, pp. 196-200, 1998.
Pahl, G. and Beitz, W. (1984) Engineering Design. Springer-Verlag, 1984.
Pramanik, N., Roy, U., Wang, H., Sudarsan, R., Sriram, R. D., Lyons, K. W. (2003a)
Tolerance Synthesis Scheme. NIST IR 6836, (2003), National Institute of
Standards and Technology, Gaithersburg, Maryland.
Pramanik, N., Roy, U., Sudarsan, R., Sriram, R. D., Lyons, K. W. (2003b) Syntheis of
Geometric Tolerances of a Gearbox using a Deviation-based Tolerance
Synthesis Scheme, DETC2003/CIE-48192 Proceedings of ASME 2003 Design
Engineering Technical Conferences, Chicago, Illinois USA, September 2-6, 2003
179
Pramanik, N., Roy, U., Sudarsan, R., Sriram, R. D., Lyons, K. W. (2003c) A Generic
Deviation-based Approach for Synthesis of Tolerances. Accepted for publication
in IEEE Transactions on Robotics and Automation
Quipers, Benjamin (1994) Qualitative Reasoning. Modeling and Simulation with
Incomplete Knowledge, The MIT Press, 1994.
Rajagopalan,S. and Cutkoswky, M. R. (1998) “Tolerance Representation for
Mechanism Assemblies in Layered manufacturing”, DETC98/DFM-5726, Proc.
of ASME Design Engineering Technical Conferences, Atlanta, Ga, 1998.
Rajan, Venkat N. , Lyons, K. W. and Sreerngam, Raj (1997) Assembly Representations
for Capturing Mating Constraints and Component Kinematics. Proceedings of the
1997 IEEE Int. Sym. on Assembly and Task Planning, Marina del Rey, CA, pp.
206-211, 1997.
Reddy, S. Y. (1994) Hierarchical and Interactive Parameter Refinement for Early-Stage
System Design. PhD Thesis, University of Illinois at Urbana-Champaign, 1994.
Requicha, A. A. (1983) Towards a theory of gemetric tolerancing, International Journal
of Robotics Research, vol. 2(4), pp. 45-60, 1983.
Roy, U. and Liu,C.R. (1988a) Feature-Based Representational Scheme of a Solid
Modeler for Providing Dimensioning and Tolerancing Information, Robotics &
Computer-Integrated Manufacturing, vol. 4, no. 3-4, pp. 335-345, 1988.
Roy, U. and Liu,C.R.. (1988b) Establishment of Functional Relationships between the
Product Components in Assembly Data Base. J. Computer-Aided Design, vol. 20,
no. 10, pp. 570-580, 1988.
Roy, U. , Pollard, M.C., Mantooth, K. and Liu, C.R. (1989) Tolerance Representation
Scheme in Solid Modeling: Part I & II, ASME Advances in Design Automation
Conference, , pp. 1-17, Montreal, 1989.
Roy, U., Banerjee, P. and Liu, C. R. (1990) Design of an Automated Assembly
Environment. Computer-Aided Design, vol. 21 no. 9, pp. 561-569, 1989. (also
published in Robotics, Automation and Management in Manufacturing Bulletin,
vol. 7, issue 1, 1990).
Roy, U., Liu, C.R. and Woo, T.C. (1991) Review of Dimensioning and Tolerancing:
Representation and Processing, Computer-Aided Design, vol. 23, no. 7, pp. 466483, 1991.
Roy, U., Bharadwaj, B., Chavan, A. and Mohan, C. K. (1995) Development of a
Feature Based Expert Manufacturing Process Planner. Proc. of the 7th IEEE
International Conference on Tools with Artificial Intelligence, pp. 65-73, 1995.
180
Roy, U. and Bharadwaj, B. (1996) Tolerance Synthesis in a Product Design System.
Technical Paper# MS96-146. North American Manufacturing Research
Institution. Society of Manufacturing Engineers, Dearborn, MI, 1996.
Roy,U. and Fang, Ying-Che (1997) Optimal Tolerance Re-allocation for the Generative
Process Sequence. IIE Transactions, vol 29, pp 37-44, 1997.
Roy, U., Li, Bing (1997) Tolerance Synthesis by Manufacturing Cost Modeling and
Design Optimization, Advanced Tolerancing Techniques, Edited by Hong-Chao
Zhang, John Wiley & Sons, Inc, pp 233-260, 1997.
Roy, U., Li, Bing. (1998) Representation and Interpretation of Geometric Tolerances for
Polyhedral Objects - I. Form Tolerances. J. Computer-Aided Design, vol. 30,
no.2, pp. 151-161, 1998.
Roy, U., Sudarsan, R., Sriram, R. D. , Lyons, K. W. and Duffey, M. R. (1999a)
Information Architecture for Design Tolerancing: from Conceptual to the Detail
Design, accepted for presentation and publication in the Proc. of DETC'99, 1999
ASME International Design Engineering Technical Conferences, September 1215, 1999, Nevada, Las Vegas, USA.
Roy, U. and Li, B. (1999b) Representation and Interpretation of Geometric Tolerances
for Polyhedral Objects - II. Size, Orientation and Positional Tolerances. J. of
Computer Aided Design, vol. 31, no. 4, pp. 273-285, 1999.
Roy, U. and Li. B. (1999c) Representation and interpretation of geometric tolerances for
polyhedral objects-II. Size, orientation and position tolerances. Computer-Aided
Design, vol. 31, pp 273-285, 1999.
Roy, U., Sudarsan, R., Narahari, Y., Sriram, R. D., Lyons, K. W., Duffey, M. R. and
Pramanik, N. (2000) Information Models for Design Tolerancing: From
Conceptual to the Detail Design. Technical Report, National Institute of Standards
and Technology, NIST IR 6524, 2000.
Roy, U., Pramanik, N., Sudarsan, R. , Sriram, R. D. and Lyons, K. W., (2001)
Function-to-Form Mapping: Model, Representation and Applications in Design
Synthesis. Computer-Aided Design vol. 33, no. 10, pp 699-720, 2001.
Schmekel, H . (1989) Functional Models and Design Solutions. Annals of CIRP, vol. 38,
pp. 129-132, 1989.
Shan, A. , Roth, R. N., Wilson, R. J. (1999) A new approach to statistical geometrical
tolerance analysis. International Journal of Advanced Manufacturing Technology,
vol. 15, no. 3, p 222-30, 1999.
181
Shaw, N. K., Bloor, M. S. and Pennington, A. de (1989) Product Data Models. Research
in Engineering Design, vol. 1, pp. 43-50, 1989.
Skowronski, V. J., Turner, J. U. (1997) Using Monte-Carlo variance reduction in
statistical tolerance synthesis. Computer Aided Design, vol. 29, no. 1, pp. 63-69,
1997.
Sriram, D., Logcher, R. , Wong, A. and Ahmed, S.
(1991) An Object-Oriented
Framework for Collaborative Engineering Design. Computer-Aided Cooperative
Product Development (Editors: D. Sriram, R. Logeher and S. Fukuda), SpringerVerlag, New York, 1991.
Sriram, D. , Cheong, K. and Lalith Kumar, M. (1992) Engineering Design Cycle: A
Case Study and Implications for CAE. Chapter 5, Knowledge Aided Design,
Knowledge-Based Systems, vol. 10 (Editor: Marc Green), Academic Press, New
York, pp. 117-156, 1992.
Szykman, S.,Racz, J. W. and Sriram, R. D. (1999) The Representation of Function in
Computer-based Design, Proceedings of the 1999 ASME Design Engineering
Technical Conferences (11th International Conference on Design Theory and
Methodology), Paper No. DETC99/DTM-8742, Las Vegas, NV, September, 1999
Takeda, H., Veerkamp, P. , Tomiyama, T. and Yoshikawa, H. (1990) Modeling Design
Process, AI Magazine, vol. 11(4), pp. 37-48, 1990.
Thornton, A. C. (1994) Genetic Algorithms Versus Simulated Annealing: Satisfaction
of Large Sets of Algebraic Mechanical Design Constraints. Artificial Intelligence
in Design'94, (Editors: J. S. Gero and F. Sudweeks), Kluwer Academic
Publishers, The Netherlands, 1994.
Tsai, Jhy-Cherng (1993) Tolerance reasoning for Concurrent CAD/CAM systems, PhD
thesis, Stanford Univ, 1993.
Turner, J. U. and Wozny, M. J. (1988) A mathematical theory of tolerances. In M. J.
Wozny, H. W. McLaughlin,and J. L. Encarncao, editors, Geometric Modeling for
CAS applications. Elsevier Science Publishers, 1988
Ulrich, K. T., Seering, W. P. (1989) Synthesis of Schematic Descriptions. Research in
Engineering Design, vol. 1, pp. 3-18, 1989.
Vasseur, H., Kurfess, T. and Cagan, J. (1993) Optimal tolerance allocation for improved
productivity. In Proc. NSF Design and Manufacturing Systems Conference,
pages 715-719, Charlotte, NC, 1993.
Wang, H., Pramanik, N., Roy, U., Sudarsan, R., Sriram, R. D., Lyons, K. W. (2002)
A Scheme for Transformation of Tolerance Specification to Generalized
182
Deviation Space for Use in Tolerance Synthesis and Analysis. DETC2002 / DAC34146, ASME Design Engineering Conference, Montreal, Sept 2002.
Wang, H., Pramanik, N., Roy, U., Sudarsan, R., Sriram, R. D., Lyons, K. W. (2003)
A Scheme for Mapping Tolerance Specifications to Generalized Deviation Space
for Use in Tolerance Synthesis and Analysis. Accepted for publication in IEEE
Transaction on Robotics and Automations.
Whitney, Daniel E. (1992) Electro-mechanical Design in Europe: University Research
and Industrial Practice. The Charles Stark Draper Laboratory, Inc. Cambridge,
MA 02139, October, 1992.
Wong, A. and Sriram, D. (1993) SHARED: An Information Model for Cooperative
Product Development. Research in Engineering Design, 1993.
Wu, Z., ElMaraghy, W. H. and ElMaraghy, H.A. (1988) Evaluation of cost-tolerance
algorithms for design tolerance analysis and synthesis. Manufacturing Review,
vol. 1(3), pp. 168-179, 1988.
Xue, D., Rousseau, J.H. and Dong, Z. (1995) Joint optimization of functional
performance and production cost based upon mechanical features and tolerances.
In Proc. ASME Design Engineering Technical Conferences, number DE-vol.83,
1995.
Xue, D., Dong, Z. (1996) Joint Optimization of Performance and Cost in Integrated
Concurrent Design: The Tolerance Synthesis Part. Journal of Engineering Design
and Automation, vol. 2, no. 1, pp. 73-89, 1996.
Yang, C. C., Marefat, M. M., Ciarallo, F. W. (2000) Interval constraint networks for
tolerance analysis and synthesis, Artificial Intelligence for Engineering Design,
Analysis and Manufacturing: AIEDAM, vol. 14, no. 4, pp. 271-287, 2000.
Zhang, C., Wang, H. P. (1993) Tolerance analysis and synthesis for cam mechanisms
International Journal of Production Research, vol. 31, no. 5, pp. 1229-1245, 1993.
Zhang, C., Luo, J., Wang, B. (1999) Statistical tolerance synthesis using distribution
function zones, International Journal of Production Research, vol. 37, no. 17, pp.
3995-4006, 1999.