Qif Part1 Draft Foransi Comment
Qif Part1 Draft Foransi Comment
www.QIFStandards.org
No part of this publication may be reproduced or transmitted in any form or by any means
without permission in writing from the copyright owner
Contents
Contents ..................................................................................................................................... ii
Foreword.................................................................................................................................... 1
Introduction ................................................................................................................................ 3
1 Scope ................................................................................................................................. 4
2 Conformance ...................................................................................................................... 6
4.3 Terms Defined in XML Schema Part 0: Primer Second Edition, W3C Recommendation
28 October 2004..................................................................................................................... 9
4.4 Definitions from XML Schema Part 1: Structures Second Edition, W3C
Recommendation 28 October 2004 ........................................................................................ 9
Bibliography ............................................................................................................................130
Table of Figures
Figure 1 – QIF version 1.0 architecture with QMPlans and QMResults ...................................... 5
Figure 2 – QIF Model-Based Quality Workflow..........................................................................20
Figure 3 – The reference connections among feature data objects in a QIF XML instance file.
Solid lines show required references, dashed lines show optional references. ..........................25
Figure 4 – A plate with four holes ..............................................................................................25
Figure 5 – A plate with four holes and GD&T ............................................................................26
Figure 6 – A plate with four holes with names. ..........................................................................29
Figure 7 – The reference connections among characteristic data objects in a QIF XML instance
file. ............................................................................................................................................32
Figure 8 – A plate with ballooned tolerances. ............................................................................33
Figure 9 – Transformation matrix example. ...............................................................................50
Figure 10 – An opposite lines feature with round closed ends. ..................................................64
Figure 11 – An opposite planes feature with flat closed ends. ...................................................65
Figure 12 – A slot with non-tangent round ends. .......................................................................66
Figure 13 – A flat-ended slot with rounded corners.. .................................................................67
Figure 14 – Opposite planes features with open ends. ..............................................................68
Figure 15 – A tapered slot. ........................................................................................................68
Figure 16 – A slot with draft.......................................................................................................69
Figure 17 – Threaded features. .................................................................................................70
Foreword
The Dimensional Metrology Standards Consortium (DMSC, Inc.) is an American National
Standards Institute (ANSI) accredited standards developing organization, as well as an A-
Liaison to the International Organization for Standardization (ISO). The mission of the DMSC is
to identify urgently needed standards in the field of dimensional metrology, and to promote,
foster, and encourage the development and interoperability of these standards, along with
related and supporting standards that will benefit the industry as a whole. More information
about the DMSC can be found at www.dmsc-inc.org.
The Quality Information Framework (QIF) was developed by domain experts from the
manufacturing quality community representing a wide variety of industries and quality
measurement needs. Contributors to this first version of the QIF standard include:
Main:
Honeywell Federal Manufacturing and Technology
Mitutoyo America
National Institute of Standards and Technology
Origin International Inc
Validation Technologies.
Support:
Capvidia
DISCUS Software
Hexagon Metrology
IPI Solutions
Lockheed Martin Missiles and Fire Systems,
Metrosage
PAS Technology
Renishaw pfc
Rolls-Royce.
This document was written jointly by the Quality Measurement Results (QMResults) Working
Group and Quality Measurement Plans (QMPlans) Working Group, approved and revised as
needed by the Quality Information Framework Working Group, and given final approval for ANSI
balloting by the DMSC’s Quality Measurement Standards (QMS) Committee.
This document is the first ever publicly balloted edition of a QIF standard. This version is solely
a product of the DMSC and its committees and working groups.
QIF consists of the following parts, under the general title Quality Information Framework (QIF)
— An Integrated Model for Manufacturing Quality Information:
Part 2: QIF Library Information Model and XML Schema Files Version 1.0
Part 3: Quality Measurement Plans (QMPlans) Information Model and XML Schema
Version 1.0
Part 4: Quality Measurement Results (QMResults) Information Model and XML Schema
Version 1.0
Additional QIF specification Parts and updated versions will be developed in future QIF phases
by the DMSC to complete the coverage of quality data application areas.
DMSC will make available html-file based data dictionaries for the QMPlans schema and the
QMResults schema as aids to understanding QIF. These data dictionaries are non-normative
materials, but describe the normative content of the QIF data model. The html files facilitate
viewing of each complete data model, including Library content, using pictures and text. A user
has the ability, through an internet browser, to follow navigation links forward and backward
through the data model description using mouse clicks.
Introduction
This Quality Information Framework (QIF) standard defines an integrated set of information
models which enable the effective exchange of metrology data throughout the entire
manufacturing quality measurement process – from product design to inspection planning to
execution to analysis. This part of the QIF standard introduces the purpose and design
approach behind QIF, as well as its content. The QIF information models are contained in files
written in the XML Schema Definition Language (XSDL). The models, for version 1.0, consist of
two application schema files plus a library of schema files containing information items used by
both applications. The Library is described in Part 2 of this standard. Part 3 of this standard
describes the Quality Measurement Plans (QMPlans) application model, which deals with plans
for quality measurement. The Quality Measurement Results (QMResults) application model
deals with the results of measurements and is described in Part 4.
The QIF models include quality characteristics and measurement features as defined in the
ASME Y14.5 specification and the Dimensional Measuring Interface Standard (DMIS). The QIF
standard covers a wide variety of use cases including dimensional metrology inspection, first
article inspection, reverse engineering, and discrete quality measurement.
1 Scope
1.1 Contents of this document
This document describes the design approach used for implementing version 1.0 of the Quality
Information Framework (QIF) information model, including implementation practices for the
Extensible Markup Language (XML) Schema Definition Language (XSDL) schemas that define
the model. This document also describes the rules for reading and writing QIF instance files that
conform to the model.
The purpose of this Part is to orient potential users of QIF to the organization of the information
model to make their study of the details more rewarding and efficient. It should also help
solution providers and users to evaluate QIF for their uses, without needing to go to the lowest
technical details of the XML schemas. The information model narrative focuses on the approach
to modeling the core data structures of QIF, which model the content of ANSI/ASME Y14.5M-
1994, and the plans and results data elements defined in Dimensional Measuring Interface
Standard (DMIS) 5.2. The material on XML practices describes consistent design practices to
be used by QIF working groups who will be designing new schemas. It should also help data
processing experts to write code that writes and reads manufacturing quality data using the
XML schemas.
Other QIF documents describe all details of QIF information models, including data types, data
structures and semantics related to dimensional metrology and quality information workflow,
and embodiment of the model in XML schema definition language.
2 Conformance
Software programs that implement this specification to write QIF XML instance files must:
follow the rules of XML when writing QMPlans and QMResults instance files
generate instance files that validate against the QMPlans schema or the QMResults
schema
employ semantics of the information written that complies with the referenced standards
and with the QIF data dictionary in this specification.
Software programs that implement this specification to read QIF instance files must:
be able to read any valid QIF XML instance file and extract all numerical and semantic
data correctly.
3 Normative References
The following referenced documents are indispensable for the application of this document. For
dated references, only the edition cited applies. For undated references, the latest edition of the
referenced document (including any amendments) applies.
ANSI/DMIS 105.2, Part 1-2009, Dimensional Measuring Interface Standard, DMIS 5.2 Standard,
Part 1. Also available as ISO 22093:2011 Industrial automation systems and integration --
Physical device control -- Dimensional Measuring Interface Standard (DMIS)
ASME B1.7 - 2006, Screw Threads: Nomenclature, Definitions, and Letter Symbols
Extensible Markup Language (XML) 1.0 (Fifth Edition), W3C Recommendation 26 November
2008
ISO/IEC Guide 99:2007 (E/F) – International vocabulary of metrology – Basic and general
concepts and associated terms (VIM)
XML Schema Part 1: Structures Second Edition, W3C Recommendation 28 October 2004
XML Schema Part 2: Datatypes Second Edition, W3C Recommendation 28 October 2004
4.1.2
datum target
the designated points, lines, or areas that are used in establishing a datum. Datum targets are
used in establishing a datum reference frame.
4.2.2
dimensional measuring equipment (DME)
a class of equipment used to inspect parts and evaluate dimensions and tolerances. DME
includes, but is not limited to, coordinate measuring machines, video inspection equipment,
optical comparators, robotic measuring devices, theodolites, photogrammetry, and laser-based
measuring devices.
4.2.3
nominal
referring to a feature or tolerance, this is the "as-designed" value defined in the product
definition of the part. The nominal is known prior to measurement and is the value to which the
actuals are compared for computing out of tolerance conditions.
4.2.4
part coordinate system (PCS)
a datum reference frame associated with the part to be measured.
4.3 Terms Defined in XML Schema Part 0: Primer Second Edition, W3C
Recommendation 28 October 2004
4.3.1
attribute
information represented as an XML attribute in an instance file, usually conforming to an
attribute declaration in an XML schema.
4.3.2
complexType
a value type that has elements or attributes.
4.3.3
element
information represented as an XML element in an instance file, usually conforming to an
element declaration in an XML schema.
4.3.4
instance file
a file containing an information set intended to conform to an XML schema.
4.4 Definitions from XML Schema Part 1: Structures Second Edition, W3C
Recommendation 28 October 2004
4.4.1
attribute information item (often shortened to "attribute")
information modeled using an attribute declaration in an XML schema.
4.4.2
element information item (often shortened to "element")
information modeled using an element declaration in an XML schema.
4.4.3
enumeration
a term indicating that a single indivisible value follows.
4.4.4
extension
a term in a complexType definition indicating that the type being defined is derived from a more
general type. Extension is the XSDL mechanism used in QIF for building hierarchies of complex
types. XSDL also provides for restrictions of complex types, but that is not used in QIF.
4.4.5
key
a constraint requiring that selected data fields exist and be unique.
In XSDL, a key may require that a combination of data fields be unique, but QIF never uses
more than a single data field.
4.4.6
keyref
a constraint requiring that there is a match between two sets of values in an instance file.
4.4.7
schema (or XML schema)
a complete information model in the XML schema definition language. A schema is defined by
one or more schema files.
4.4.8
schema document (or schema file)
a file containing a well-formed XML schema declaration. Such a file does not necessarily
contain a complete information model; it may reference other schema files needed to make the
model complete.
4.4.9
simple type
a value type that is indivisible.
number example: 10
string example: 10 Downing Street in XSDL, list and union type are also simple, but they are
not used in QIF.
4.4.10
string
a data type that is a sequence of Unicode characters.
4.4.11
token
a string in which there is no leading or trailing white space, and the only white space occurring
between visible characters is a single space character.
4.5.2
action group
a plan element that organizes sets of actions. An action group can be an ordered group,
unordered group, one-of group, partially ordered group, or pick-some group.
4.5.3
action method
a prescription of how an action is to be performed. Actions with action methods form the core of
a measurement plan.
4.5.4
application area
one of the QIF workflow interface types, e.g., Plans, Results, and in the future, Statistics,
Resources, and Rules.
4.5.5
aspect
a particular quality of a characteristic, feature, or product. In QIF there are four aspects of
characteristics and features: definition, nominal, actual, and instance. Products have two
aspects: definition and instance.
4.5.6
assembly
a number of parts or combination thereof that are joined together to perform a specific function
and subject to disassembly without degradation of any of the parts.
4.5.7
attribute data
a result from a characteristic or property that is appraised only as to whether it does or does not
conform to a given requirement (for example, go/no-go, accept/reject, pass/fail, etc.).
[AS9102a]
4.5.8
attribute characteristic
a characteristic described using attribute data, or using data that do not have numerical values,
e.g., color, malleability.
4.5.9
bill of characteristics (BOC)
a list of all the characteristics applied to a product.
4.5.10
characteristic
a control placed on an element of a feature such as its size, location or form and may be a
specification limit, a nominal with tolerance, a feature control frame, or some other numerical or
non-numerical control.
4.5.11
characteristic instance
a tolerance or specification applied to a feature or product that needs verification.
4.5.12
checked
refers to an actual feature or characteristic being measured directly or being constructed from
previously measured or constructed data.
4.5.13
composite feature
a feature composed of two or more sub-features which act as a functional group and to which
shared characteristics may be applied.
4.5.14
constructed feature
a feature that is computed from other features. Contrast to a measured feature, which is
computed from measured point data.
4.5.15
datum definition
definition of a datum label and optionally, its association with datum targets or feature instances.
4.5.16
evaluation
refers to the process by which the status of a characteristic actual is determined from nominal,
actual and specification limit information.
4.5.17
event
an occurrence, usually unplanned, which may have an effect on the outcome of a measurement
or inspection operation and which should be recorded.
4.5.18
generic feature
a feature which can be referenced by a user-defined characteristic. Usually, this is a portion of
the surface of a part that is not correctly described by any other feature type.
4.5.19
geometric characteristic
a concept characterizing the size, form, orientation or location of a feature or of a component of
a feature. Examples: diameter, flatness, parallelism, or position.
4.5.20
inspection
a measurement of characteristics on a physical part to determine whether the features are
within allowed tolerance, commonly in order to accept or reject the part.
4.5.21
key characteristic
a characteristic of a feature, material, process, or part whose variation has a significant
influence on product fit/function, safety/compliance, performance, service life, or
manufacturability. A key characteristic can be identified by a designator and have a criticality
class.
4.5.22
measurand
an object, quantity, property, or condition to be measured for a specific purpose. Two examples
of a measurand are the measurement of a shape feature to evaluate a specified characteristic
(for example tolerance) and the measurement of a shape feature to establish a datum (for
example primary datum) within the context of a datum reference frame. One could measure the
same feature differently or apply a different substitute feature data fitting algorithm
4.5.23
measure feature method
an action method for measuring a feature
4.5.24
measurement
an estimate of a dimension associated with a feature or features on a physical part generated
using a physical device.
4.5.25
measurement device
a hardware element that performs a measurement, or is used by an operator to perform a
measurement. A measurement device will typically have an accuracy statement as well as
calibration information. Measurement devices include CMMs and calipers.
4.5.26
measurement plan
a complete plan that contains information on for what and how to measure
4.5.27
measurement resource
a class of things that facilitate or perform measurements. Things that facilitate measurement
include fixtures, sensors, tooling, rotary tables, software, jo-plugs, chemical solutions, ovens,
environmentally controlled rooms, etc.
4.5.28
non-dimensional quality data
data expressed as either attributes or variables, e.g., number of non-conformities like burrs or
dents, color of paint, etc.
4.5.29
notable event
a description of a planned or unplanned event that inspection processes should monitor and
should record if it occurs during inspection.
4.5.30
note
an explanatory or descriptive statement in natural language. In QIF, notes provide information in
addition to that which is formally modeled.
4.5.31
noted event
an event occurring and reported during inspection.
4.5.32
part
one item, or two or more items joined together, that is not normally subject to disassembly
without destruction or impairment of designed use.
4.5.33
plan element
an action or an action group. A combination of actions and action groups can be structured in a
directed hierarchical tree of actions.
4.5.34
plan note
descriptive information that applies to an entire measurement plan.
4.5.35
plan root
the top level plan element (an action or action group) of a measurement plan.
4.5.36
product
4.5.37
product and manufacturing information (PMI)
non-geometric attributes in 3D Computer Aided Design/Manufacturing/Inspection/Engineering
(CAD/CAM/CAI/CAE) systems necessary for manufacturing product components or
subsystems. PMI may include geometric dimensions & tolerances (GD&T), 3D annotation (text)
and dimensions, surface finish, and material specifications.
4.5.38
qualification
a check on or the refinement of the calibration of a measurement device performed using a
known artifact such as a tooling ball or gage block.
4.5.39
set
refers to an actual feature or characteristic being set to its nominal without any measurement
taking place.
4.5.40
traceability
meta information, classified in QIF as either measurement traceability, or manufacturing process
traceability. QIF instance files can include measurement traceability data directly. QIF uses
pointers in instance files to identify manufacturing processes that the measurements relate to.
The method of tracking the manufacturing processes is outside the scope of QIF.
4.5.41
work instruction
information that provides instructions about actions or action methods to be used in executing a
measurement plan.
STEP Standard for the Exchange of Product model data (ISO 10303)
System wide interoperability is achieved by partitioning the information model between a QIF
Library of common, reusable components, and several information models for unique
application areas such as measurement plans (QMPlans) and measurement results
(QMResults). The reusable library components are referenced throughout the comprehensive
quality information model thereby ensuring interoperability and extensibility between any data
producer and consumer that implements the QIF formats in their software. A design principle of
schema file allocation is: data elements used in only one application area will be defined in that
area’s XML schema file. If a data element can be used in two or more applications areas, it will
be defined in the XML library schema files.
It is the goal of DMSC to write the QIF specifications such that conformity of commercial
software products can be assessed by a manufacturer or supplier (first party), a user or
purchaser (second party), or an independent body (third party). The ability of developers to test
against conformance criteria, and of users to evaluate products for conformance, are key to
establishing widespread interoperability of COTS software solutions.
The total scope of QIF is inspection information required to assess product quality, and also to
improve manufacturing processes and product design. The details of the QIF information model
are evolving as working groups move forward and incorporate more requirements.
Figure 2 shows a Model-Based Quality Workflow activity diagram flowing from a product
definition as the primary input to the reporting and analysis of measurement results. The work
flow activities for a Quality Metrology Enterprise are contained in the light blue box and consists
of four major Quality Metrology Enterprise activities:
Determine Measurement Requirements
Define Measurement Process
Execute Measurement Process
Analyze & Report Quality Data
Between each pair of work activities there exists an interface in which information must be
exchanged.
From Figure 2, assuming that the activity of “Define Product” has already been performed, the
metrology work activity of “Determine Measurement Requirements” receives product definition
with PMI and key characteristic criticalities as input. Then based upon known quality
requirements and/or manufacturing process knowledge, measurement requirements are
determined as a set of measurement criteria also known as a bill of characteristic instances
(BOC). A characteristic instance is typically a tolerance or specification applied to a feature or
product that needs verification. This BOC constitutes a high level quality plan of “what” needs to
be inspected or verified. Next, given metrology resources and metrology knowledge, the
“Define Measurement Process” activity augments the set of measurement criteria by defining an
inspection plan on “how” to inspect or verify the bill of characteristic instances. This inspection
plan will then drive the activity of “Execute Measurement Process” via various measurement
resources which produces measurement results. Finally, the measurement results are
collected, analyzed, and reported via the activity of “Analyze & Report Quality Data”.
Because the interface between each pair of work activities requires information exchange, the
DMSC, with the QIF, have identified each work activity interface as a candidate for a digital
interoperability standard. QIF Version 1.0 addresses three digital interoperability interfaces:
The QMPlans information model satisfies the data exchange needs from “Determine
Measurement Requirements” by generating a measurement scope that lists all of the features
and their characteristics and the actions required to measure/validate them. Furthermore the
QMPlan information model satisfies the data exchange needs from “Define Measurement
Process” by generating an inspection plan that describes the methods on how to
measure/validate the actions contained in the measurement scope.
The digital interface between Execute Measurement Process and the DME (dimensional
measurement equipment) has been satisfied by the Dimensional Measuring Interface Standard
(DMIS), ANSI/DMIS 105.2 Part 1-2009. DMIS can also be used as a numerical control part
program for DMEs such as coordinate measuring machine (CMM). For a more complete review
of the current and future roadmap of the data exchange needs and their planned QIF
Applications refer to Annex C for next design phase of QIF.
Quality information generated in QIF format can be used as input by many other quality and
manufacturing management components including, but not limited to, first article inspection plan
and report generation, statistical process control (SPC), materials resource planning (MRP),
measurement systems analysis (MSA), manufacturing execution systems (MES), and computer
aided manufacturing (CAM). Additional data flows are not shown because it is a design goal of
QIF to not constrain the architecture of systems that will exchange QIF data. The QIF
specification only describes the content of the QIF library, and information models of each
application area. Users of QIF data may generate it, or consume it, in any manner that is useful.
Business case functional requirements. The design of the QIF information model is
driven by the functional requirements of activities that import, process, and export
manufacturing quality data. Requirements are expressed via natural language rules,
scenarios, use case notation, identification of specifications and/or standards, and
examples. The DMSC began with a baseline requirement to model ANSI/ASME Y14.5-
1994, and the plans and results information in DMIS 5.2. The requirements list is
evolving as the members of the quality community identify more workflow requirements.
Functional requirements involve engineering data and workflow details, as well as
business case justifications and requirements.
Computational requirements. These are good practices of computer science that lead
to efficient code and efficient use of computation resources. Examples include the use
of class inheritance, and schema design practices that minimize size of instance files.
QIF V1.0 encompasses all planning and results information defined in DMIS 5.2. QIF V1.0
also includes a small amount of tool and sensor data. DMIS data describing tools and
sensors in detail will be considered by a working group that will develop a model for quality
measurement resources in the future.
QIF V1.0 instance files support all information defined for first article inspection reports as
defined in the standard AS9102a [1].
The neutral data format specifications are accompanied by fully defined semantics derived
where applicable from other standards like DMIS 5.2, and AS9102a. The semantics
ensure that data cannot be misinterpreted between sender and receiver of QIF instance
files.
Inspection results data (QMResults), can be used for both a reverse engineering process
where actual measurement data is stored without the presence of nominal information,
and for a conventional measurement process where inspection is planned using nominal
part feature data.
QIF data supports quality systems based on model-based design, as well as systems that
implement 2D drawing-based processes.
purely hierarchical design, and may lead to better data integrity because the risk of duplicating
errors is reduced.
The QIF models represent measurement feature and characteristic objects with four aspects:
instance, definition, nominal, and actual. The relationships between data objects of each aspect
type in an instance file are implemented using a relationship scheme described in more detail in
section 6.7. Because the scope of QIF covers the entire lifecycle of quality systems, the
aspects allow QIF instance files to describe nominal and measured GD&T quality data, as well
as express the relationships and other data generated during the workflow of planning,
execution, reporting, and analysis.
We will use the terms “data object” and “object” to mean a grouping of information in a QIF XML
instance file, defined by elements of the QIF information model.
QMPlans and QMResults are each a complete application schema. Their top-level schema files
are QMPlans.xsd and QMResults.xsd, respectively. Those files both include (directly or
indirectly) eight subordinate files collected in the QIF Library. The file hierarchy of QIF is as
follows:
QIFWorkingFiles (directory)
applications (directory)
QMPlans.xsd
QMResults.xsd
QIFLibrary (directory)
CharacteristicTypes.xsd
FeatureTypes.xsd
MeasurementResources.xsd
PrimitiveTypes.xsd
ProductTypes.xsd
QIFTypes.xsd
Traceability.xsd
Units.xsd
The QIF Library is modularized by grouping related type and element definitions together in a
schema file.
23 QIF v1.0 – Proposed (ANSI/QIF Part 1 – 2013)
QIFTypes.xsd covers miscellaneous information items required in QIF but not likely to be found
outside of QIF. This includes, for example: QIFIdType, QIFReferenceType,
FeatureInstanceIdsType, and CompoundDatumType.
The other five schema files in the QIF Library each focus on a specific type of quality
information.
Traceability.xsd defines types that describe the circumstances of a quality measurement, such
as InspectionTraceabilityType, InspectionSoftwareItemsType, and EnvironmentType.
3. These four library data types were designed to express quality information beyond the scope
of solely inspection results reporting. The instance aspect, in particular, includes information
related to part design as well as information generated by planning activities.
Figure 3 – The reference connections among feature data objects in a QIF XML instance
file. Solid lines show required references, dashed lines show optional references.
The four aspects of feature data will be illustrated with the simple example of a plate with four
holes.
This plate with holes can exist in several contexts: it may be a 2D drawing, it may be a 3D CAD
model, it may be a CMM inspection plan or program, it may be an actual physical part, it may be
a CMM results report, or it may exist as all of the above. Regardless, in QIF the four holes
would be considered as cylinder features. In the CAD or drawing contexts, nominal information
for these cylinders will exist. In the physical part context actual information about the cylinders
can exist if they are measured. So naturally, one would assume that QIF would only need to
contain objects that define feature nominal and feature actual information. Such a simple
approach can result in the redundant expression of data and may not mirror the design intent.
The design of the plate shown in Figure 5 illustrates that some nominal information about the
holes is shared and some is not. Each cylinder has a unique nominal location defined by basic
dimensions but all have a shared nominal diameter. QIF therefore splits the nominal information
between a shareable feature definition and a non-shareable feature nominal.
A feature definition data object is intended to be reusable, in that it includes information (e.g.,
cylinder: diameter), that is independent of a specific instance of the feature (e.g., a specific hole
in our example). A single feature definition can be referenced by many nominal feature objects.
Only nominal feature objects may reference feature definition objects.
In the example, the cylinder definition with the shared diameter of the holes might look like this
in a QIF XML instance file:
<CylinderFeatureDefinition id=”22”>
<Diameter>10</Diameter>
</CylinderFeatureDefinition>
A feature nominal data object adds additional feature information to the feature definition by
defining information unique to a particular instance of a feature. For example, an instance of the
CylinderFeatureDefinitionType provides the diameter for a cylinder, while an instance of the
CylinderFeatureNominalType references the CylinderFeatureDefinitionType, and gives the
location point and the axis vector and optional target points on a specific cylinder on a part to be
measured.
If a part is measured then each cylinder will have unique location and size information. No
feature actual data can be shared among feature instances.
The four holes in the example would have four feature nominals in a QIF XML file:
<CylinderFeatureNominal id="23">
<FeatureDefinitionId>22</FeatureDefinitionId>
<Axis>
<AxisPoint> <X>40</X> <Y>40</Y> <Z>0</Z> </AxisPoint >
<Direction> <I>0</I> <J>0</J> <K>1</K> </Direction>
</Axis>
</CylinderFeatureNominal>
<CylinderFeatureNominal id="24">
<FeatureDefinitionId>22</FeatureDefinitionId>
<Axis>
<AxisPoint> <X>40</X> <Y>10</Y> <Z>0</Z> </AxisPoint >
<Direction> <I>0</I> <J>0</J> <K>1</K> </Direction>
</Axis>
</CylinderFeatureNominal>
<CylinderFeatureNominal id="25">
<FeatureDefinitionId>22</FeatureDefinitionId>
<Axis>
<AxisPoint> <X>10</X> <Y>10</Y> <Z>0</Z> </AxisPoint >
<Direction> <I>0</I> <J>0</J> <K>1</K> </Direction>
</Axis>
</CylinderFeatureNominal>
<CylinderFeatureNominal id="26">
<FeatureDefinitionId>22</FeatureDefinitionId>
<Axis>
<AxisPoint> <X>10</X> <Y>40</Y> <Z>0</Z> </AxisPoint >
<Direction> <I>0</I> <J>0</J> <K>1</K> </Direction>
</Axis>
</CylinderFeatureNominal>
Each has a unique id and specifies a unique location but each references the same feature
definition.
A feature actual data object provides feature information that has been measured or
constructed. For example, a CylinderFeatureActualType will contain the actual location,
orientation, and size of a cylinder. For an inspection that has been programmed from CAD data,
QIF instance files may also include a related nominal feature object (which in turn, has a related
feature definition object), with a reference linking the two. For feature actual data generated
during a reverse engineering process, a QIF XML instance file may not contain nominal feature
data. Thus, feature actual objects might reference a feature nominal object but do not
necessarily have to do so.
The four holes when measured might look like this in a QIF XML instance file:
<CylinderFeatureActual id="27">
<FeatureNominalId>23</FeatureNominalId>
<Axis>
<AxisPoint> <X>40.002</X> <Y>39.994</Y> <Z>0</Z> </AxisPoint >
27 QIF v1.0 – Proposed (ANSI/QIF Part 1 – 2013)
Each references the corresponding cylinder nominal and each has a unique measurement
result.
A feature instance data object represents an instance of a feature at any stage of the
metrology process - before or after a feature has been measured. The feature instance data
object provides: the name assigned to the feature (as in Figure 6), optional links to upstream
CAD data, reference to a part definition object ID, and a reference to either a nominal feature
object or an actual feature object. If an actual feature is referenced, the corresponding nominal
feature (if there is one) may be found through the actual feature object.
If a feature is measured several times, it is expected that a feature instance data object will be
defined for each measurement, and will reference a different actual feature data object for each
measurement. Some other examples of workflow that cause instantiation of a feature instance
object include: any process at any time that requires a named feature, planning inspection of a
part, free-form measurement of a part for reverse engineering purposes, bringing a legacy CMM
report into QIF, or mining a legacy CMM program for nominal features and characteristics.
A QIF XML instance file with measured results might have feature instances like:
<CylinderFeatureInstance id="31">
<FeatureActualId>27</FeatureActualId>
<FeatureName>Hole_1</FeatureName>
<QPId>53CD7B18-CACF-4735-8053-BC032824E51F</QPId>
…
</CylinderFeatureInstance>
<CylinderFeatureInstance id="32">
<FeatureActualId>28</FeatureActualId>
<FeatureName>Hole_2</FeatureName>
<QPId>EF4BE48A-5502-4c95-BBF5-504F76ACEA58</QPId>
…
</CylinderFeatureInstance>
29 QIF v1.0 – Proposed (ANSI/QIF Part 1 – 2013)
<CylinderFeatureInstance id="33">
<FeatureActualId>29</FeatureActualId>
<FeatureName>Hole_3</FeatureName>
<QPId>CB5BB3B3-03C9-4fba-A87A-A22890FB1C94</QPId>
…
</CylinderFeatureInstance>
<CylinderFeatureInstance id="34">
<FeatureActualId>30</FeatureActualId>
<FeatureName>Hole_4</FeatureName>
<QPId>F92F5E0C-E1C3-41b7-9143-4DEF996A7D79</QPId>
…
</CylinderFeatureInstance>
Each instance references a single actual and assigns a feature name (the ellipses … indicate
extra required elements outside the scope of this simple example).
As with features, characteristics have four aspects defined in the QIF library: definition, nominal,
actual, and instance. Data objects of each aspect type can be linked in a QIF XML instance file
to express the semantics of GD&T and quality workflow using the scheme described in section
6.5. As with features, the aspects cover a quality workflow scope wider than solely results
reporting.
The characteristic definition is the part of a characteristic that can be shared among different
characteristics. An example would be a standard diameter tolerance; one manufacturer, for
instance, has a standard diameter tolerance for sheet metal parts of (+.25/-.04) mm regardless
of the diameter. As another example, one often sees tolerances specified for dimensions based
on the number of decimal places: dimensions to one decimal place are ±.2 mm, those to two
decimal places are ±.05 mm, etc. Such tolerances can be called “box tolerances” because they
often appear in a box at the corner of a print and often take the form:
Unless otherwise
specified
X.X ±.2 mm
X.XX ±.05 mm
X.XXX ±.005 mm
In the example shown in Figure 5, a QIF XML instance file representation of the diameter
tolerance as a characteristic definition might look like:
<DiameterCharacteristicDefinition id="40">
<Tolerance>
<MaxValue>0.005</MaxValue>
<MinValue>-0.005</MinValue>
<DefinedAsLimit>false</DefinedAsLimit>
</Tolerance>
</DiameterCharacteristicDefinition>
The characteristic nominal is that part of a characteristic that is not shared among different
characteristics, not to be confused with sharing a characteristic among several features. An
example would be a diameter tolerance for a set of holes in a pattern all with the same
diameter. That shared diameter becomes the target value in the nominal characteristic. Very
often, each characteristic definition will only be referenced by a single characteristic nominal,
the pair together representing one call-out on a print such as the diameter with tolerance in
Figure 5.
In the example, an instance file containing the diameter characteristic nominal might look like:
<DiameterCharacteristicNominal id="41">
<CharacteristicDefinitionId>40</CharacteristicDefinitionId>
<TargetValue>10</TargetValue>
</DiameterCharacteristicNominal>
This single diameter characteristic nominal can be shared among the four holes.
The characteristic actual is the evaluation of the characteristic based on feature measurement
data. There will be one characteristic actual for each measured characteristic. Just as with
feature actual information, there is no shareable information among characteristic actuals.
For the example, an instance file with actuals might look like:
<DiameterCharacteristicActual id="42">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicNominalId>40</CharacteristicNominalId>
<Value>10.003</Value>
</DiameterCharacteristicActual>
<DiameterCharacteristicActual id="43">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicNominalId>40</CharacteristicNominalId>
31 QIF v1.0 – Proposed (ANSI/QIF Part 1 – 2013)
<Value>10.005</Value>
</DiameterCharacteristicActual>
<DiameterCharacteristicActual id="44">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicNominalId>40</CharacteristicNominalId>
<Value>9.996</Value>
</DiameterCharacteristicActual>
<DiameterCharacteristicActual id="45">
<Status>
<CharacteristicStatusEnum>FAIL</CharacteristicStatusEnum>
</Status>
<CharacteristicNominalId>40</CharacteristicNominalId>
<Value>10.007</Value>
</DiameterCharacteristicActual>
Figure 7 – The reference connections among characteristic data objects in a QIF XML
instance file.
Before measurement, each instance would reference the single shared characteristic nominal,
and in turn that characteristic nominal would reference a single characteristic definition which
may or may not be referenced by other characteristic nominals. After measurement, each
instance would reference a unique characteristic actual which in turn references the shared
characteristic nominal which references the characteristic definition.
The idea of a characteristic instance may at first seem a bit redundant but it allows for a unique
identifying name, or key characteristic identifier to be assigned on a per-feature basis. Our
diameter tolerance might be “ballooned” on the print (as in Figure 8) as key characteristic
number 1, then each characteristic instance could be labeled with key characteristics of 1A, 1B,
1C or 1_1, 1_2, 1_3 depending on company standards.
From the example, here is what a QIF XML instance file with key characteristics might look like:
<DiameterCharacteristicNominal id="41">
<CharacteristicDefinitionId>40</CharacteristicDefinitionId>
<TargetValue>10</TargetValue>
<KeyCharacteristic>
<Designator>1</Designator>
</KeyCharacteristic>
</DiameterCharacteristicNominal>
…
<DiameterCharacteristicInstance id="70">
<Name>Hole_1_diam</Name>
<QPId>11F781AF-543C-44c6-B8FB-87503DA19C8A</QPId>
<KeyCharacteristic>
<Designator>1_1</Designator>
</KeyCharacteristic>
<CharacteristicActualId>42</CharacteristicActualId>
</DiameterCharacteristicInstance>
<DiameterCharacteristicInstance id="71">
<Name>Hole_2_diam</Name>
<QPId>AFA7218B-1134-475f-97B6-1BCEB1DB5AEB</QPId>
<KeyCharacteristic>
<Designator>1_2</Designator>
</KeyCharacteristic>
<CharacteristicActualId>43</CharacteristicActualId>
33 QIF v1.0 – Proposed (ANSI/QIF Part 1 – 2013)
</DiameterCharacteristicInstance>
<DiameterCharacteristicInstance id="72">
<Name>Hole_3_diam</Name>
<QPId>983A78C0-6F38-4414-B472-2DC12FD6CD8A</QPId>
<KeyCharacteristic>
<Designator>1_3</Designator>
</KeyCharacteristic>
<CharacteristicActualId>44</CharacteristicActualId>
</DiameterCharacteristicInstance>
<DiameterCharacteristicInstance id="73">
<Name>Hole_4_diam</Name>
<QPId>8C777387-838A-42d6-9EEE-99555DED6683</QPId>
<KeyCharacteristic>
<Designator>1_4</Designator>
</KeyCharacteristic>
<CharacteristicActualId>45</CharacteristicActualId>
</DiameterCharacteristicInstance>
The optional KeyCharacteristic element on the characteristic nominal defines the shared key
characteristic designator (balloon number) from the call-out and the KeyCharacteristic
elements on each characteristic instance define the individual key characteristic designators for
the diameter of the four individual holes.
To traverse all characteristics in a QIF XML instance file, the starting point would be the
CharacteristicInstances sub-element of the Characteristics element.
The four aspects of features are similarly instantiated in the global Features element of type
FeatureAspectsListsType. This type has an element for listing instances of each aspect:
FeatureDefinitions, FeatureNominals, FeatureActuals and FeatureInstances. Of the four,
only the FeatureInstances element is not optional. Measured data does not exist until after
measurement and only measured data may exist in a reverse-engineering use case.
To traverse all features in a QIF XML instance file, the starting point would be the
FeatureInstances sub-element of the Features element.
nominal or an actual, the actual references a nominal, and the nominal references the definition.
The connection between characteristics and features is accomplished with the
FeatureInstanceIds element on the CharacteristicInstanceBaseType from which all
characteristic instance types are derived.
From the example, in a QIF XML instance file containing both characteristics and features, the
connections between characteristics and features might look like this:
<DiameterCharacteristicInstance id="70">
<Name>Hole_1_diam</Name>
<QPId>11F781AF-543C-44c6-B8FB-87503DA19C8A</QPId>
<FeatureInstanceIds>
<FeatureInstanceId>31</FeatureInstanceId>
</FeatureInstanceIds>
<CharacteristicActualId>42</CharacteristicActualId>
</DiameterCharacteristicInstance>
<DiameterCharacteristicInstance id="71">
<Name>Hole_2_diam</Name>
<QPId>AFA7218B-1134-475f-97B6-1BCEB1DB5AEB</QPId>
<FeatureInstanceIds>
<FeatureInstanceId>32</FeatureInstanceId>
</FeatureInstanceIds>
<CharacteristicActualId>43</CharacteristicActualId>
</DiameterCharacteristicInstance>
<DiameterCharacteristicInstance id="72">
<Name>Hole_3_diam</Name>
<QPId>983A78C0-6F38-4414-B472-2DC12FD6CD8A</QPId>
<FeatureInstanceIds>
<FeatureInstanceId>33</FeatureInstanceId>
</FeatureInstanceIds>
<CharacteristicActualId>44</CharacteristicActualId>
</DiameterCharacteristicInstance>
<DiameterCharacteristicInstance id="73">
<Name>Hole_4_diam</Name>
<QPId>8C777387-838A-42d6-9EEE-99555DED6683</QPId>
<FeatureInstanceIds>
<FeatureInstanceId>34</FeatureInstanceId>
</FeatureInstanceIds>
<CharacteristicActualId>45</CharacteristicActualId>
</DiameterCharacteristicInstance>
There are situations where different use cases require that all data elements of a QIF type be
optional. A caliper can measure the size of a hole but not the location or orientation, and a
manual CMM with a conical hard probe can measure the location and orientation but not the
size of a hole. Therefore, the location, orientation and size are all optional elements of the actual
cylinder in QIF. The presence of such optional data in the QIF information model in no way
indicates that the optional data is unimportant.
Wherever possible, data elements in QIF that are co-requisite are placed together in a data type
so that all the data that is required is mandatory. An element of that data type may be optional.
The result is that either all or none of the data is present. The QIF feature and characteristic
aspects which isolate sharable information like size from non-sharable information like location
sometimes result in co-requisite information appearing in two different data types. In such cases
the annotation describing the data type will make reference to any co-requisite data elements.
The hierarchies of required information for various aspects of the QIF information model are
discussed in the individual sections pertaining to those aspects.
Common to the examples where a diameter is specified with a tolerance are the characteristic
nominal and definition. Consider the diameter specification from Figure 8: . The
tolerance is contained in the characteristic definition:
<DiameterCharacteristicDefinition id="40">
<Tolerance>
<MaxValue>0.005</MaxValue>
<MinValue>-0.005</MinValue>
<DefinedAsLimit>false</DefinedAsLimit>
</Tolerance>
</DiameterCharacteristicDefinition>
<DiameterCharacteristicNominal id="41">
<CharacteristicDefinitionId>40</CharacteristicDefinitionId>
<TargetValue>10</TargetValue>
</DiameterCharacteristicNominal>
as described in section 6.7.2.
The actual results of the measurement might appear as follows in a QIF XML instance file:
<DiameterCharacteristicActual id="42">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicNominalId>40</CharacteristicNominalId>
</DiameterCharacteristicActual>
The actual diameter is not known and the optional Value element does not appear in the
instance file.
The actual results of the measurement might appear as follows in a QIF XML instance file:
<DiameterCharacteristicActual id="42">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicNominalId>40</CharacteristicNominalId>
<Value>10.003</Value>
</DiameterCharacteristicActual>
The actual results of the measurement might appear as follows in a QIF XML instance file:
<DiameterCharacteristicActual id="42">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicNominalId>40</CharacteristicNominalId>
<Value>10.003</Value>
<MaxValue>10.004</MaxValue>
<MinValue>10.001</MinValue>
</DiameterCharacteristicActual>
The actual results of the measurement might appear as follows in a QIF XML instance file:
<CylinderFeatureActual id="27">
<Diameter>10.003</Diameter>
</CylinderFeatureActual>
<DiameterCharacteristicDefinition id="40">
<Tolerance>
<MaxValue>10.005</MaxValue>
<MinValue>9.995</MinValue>
<DefinedAsLimit>true</DefinedAsLimit>
</Tolerance>
</DiameterCharacteristicDefinition>
Because the size is defined by the limits, the target nominal diameter need not be specified, in
which case the example diameter characteristic nominal might appear as follows in a QIF XML
instance file:
<DiameterCharacteristicNominal id="41">
<CharacteristicDefinitionId>40</CharacteristicDefinitionId>
</DiameterCharacteristicNominal>
<DiameterCharacteristicDefinition id="40">
<NonTolerance>MEASURED</NonTolerance>
</DiameterCharacteristicDefinition>
The diameter characteristic nominal target value would specify the basic dimension:
<DiameterCharacteristicNominal id="41">
<CharacteristicDefinitionId>40</CharacteristicDefinitionId>
<TargetValue>10</TargetValue>
</DiameterCharacteristicNominal>
The diameter might be measured with a caliper but with no specification limits, no tolerance
evalution can be performed. The results of a measurement of a basic diameter might appear as
follows in a QIF XML instance file:
<DiameterCharacteristicActual id="42">
<Status>
<CharacteristicStatusEnum>BASIC</CharacteristicStatusEnum>
</Status>
<CharacteristicNominalId>40</CharacteristicNominalId>
<Value>10.003</Value>
</DiameterCharacteristicActual>
Parts and assemblies are grouped together in the Products element of the QMPlans and
QMResults models. The Products element has two sub-elements, Parts and Assemblies.
They, in turn, each have sub-elements for two aspects, definition and instance, with the obvious
names PartDefinitions, PartInstances, AssemblyDefinitions, and AssemblyInstances.
A PartDefinition element describes a nominal part. Its elements are Name, QPId,
ModelNumber, Description, Notes, Version, Material(s), FeatureNominalIds,
SecurityClassification, ExportControlClassification, and PartGeometryDefinitionsId (a
reference to a set of representations of the part that may include items such as drawings and
CAD files).
39 QIF v1.0 – Proposed (ANSI/QIF Part 1 – 2013)
A PartInstance element describes an actual part. Its elements are SerialNumber, QPId,
Notes, AdditionalChanges, Transform, FeatureInstanceIds, Status (e.g., pass, fail, rework,
etc.), Traceability, and PartDefinitionId.
In a QIF XML instance file, the reference contains the same symbol as the identifier of the
object being referenced. For example, if the value of the id attribute of an instance of
CylinderFeatureActualType is 53 then the value of the FeatureActualId element of an
instance of CylinderFeatureInstanceType that uses that feature actual is also 53.
QIF seeks to ensure that connections made using identifiers and references join the correct
types of objects. For example, a reference from a cylinder feature instance to its actual must
identify a cylinder feature actual, not any other type of object such as a transformation or a cone
feature definition.
To ensure that identifier/reference pairs make matches between objects of the correct types, the
QIF schemas contain several hundred key/keyref pairs, one for each identifier/reference pair.
Key and keyref are standard parts of the XML schema definition language. Readily available
XML instance file checkers will check whether or not key/keyref constraints are satisfied in an
instance file governed by an XML schema. A detailed description of how key and keyref work
may be found in books about the XML schema language such as [2]. In simplistic terms, a
key/keyref pair locates two places in an (upside down) tree of objects that must contain identical
information items. The two places are identified by describing the two paths that go downward
to them from a common starting point. The key/keyref pair is located in a schema file at the
common starting point.
The CylinderFeatureActualKey:
is also located in the Features element (the common starting point)
has the xpath FeatureActuals/CylinderFeatureActual, and
has the field @id (the @ sign means the field is an attribute rather than an element).
This sounds complex, but if we look at an instance file, it's fairly straightforward. Here is a
snippet from an abbreviated QMResults instance file.
<MeasurementResults ...>
...
<Features>
<FeatureActuals>
...
<CylinderFeatureActual id="53">
<FeatureNominalId>26</FeatureNominalId>
<Axis> ... </Axis>
<Diameter>2.5</Diameter>
</CylinderFeatureActual>
<CylinderFeatureActual id="54">
41 QIF v1.0 – Proposed (ANSI/QIF Part 1 – 2013)
<FeatureNominalId>27</FeatureNominalId>
<Axis> ... </Axis>
<Diameter>2.0</Diameter>
</CylinderFeatureActual>
...
</FeatureActuals>
<FeatureInstances>
<CylinderFeatureInstance id="31">
<FeatureActualId>53</FeatureActualId>
<FeatureName>top inner cylinder</FeatureName>
...
</CylinderFeatureInstance>
<CylinderFeatureInstance id="32">
<FeatureActualId>54</FeatureActualId>
<FeatureName>'dial' outer cylinder</FeatureName>
...
</CylinderFeatureInstance>
</FeatureInstances>
</Features>
...
<MeasurementResults ...>
When a key/keyref checking system reads this instance file and comes to the <Features>
part, it knows it needs to check the CylinderFeatureActualKey and the
CylinderFeatureInstanceToActualKeyref (since they are located in the Features element). To
check the key, the checker follows every FeatureActuals/CylinderFeatureActual path down to
the id attribute. In the snippet above, there are two such paths, one ending in “53”, the other
ending in “54”. The checker puts the two ids into a collection of ids of CylinderFeatureActuals,
checking to make sure that each of these is different from those already in the collection. To
check the keyref, the checker follows every FeatureInstances/CylinderFeatureInstance path
down to the FeatureActualId element. In the snippet above, there are two such paths with
elements, one with the value 53, the other with value 54. The checker checks that each of the
values is in its collection of ids of CylinderFeatureActuals. The snippet above passes these
checks.
The key/keyref pair mechanism is very good at catching errors in matching identifiers and
references, but it is not foolproof. In all cases, when there are many objects of the same type,
no automated check (such as key/keyref) will know which one is intended. For example, if an
instance file has several instances of CylinderFeatureActualType and several instances of
CylinderFeatureInstanceType (as in the snippet above), only the builder of the instance file
will know which actual (53 or 54 in the snippet) is supposed to go with which instance. In other
cases, there is no way to define a key that discriminates between similar types of object
because they are mixed together at the same location (in a set of transformations containing
both actual transformations and nominal transformations, for example).
Using UUIDs, non-communicating systems can identify information uniquely. That information
can be combined later into a single application or database without needing to resolve identifier
conflicts.
As a number, a UUID is a 128 bit unsigned integer. As a text string in an instance file, a UUID is
represented by 32 hexadecimal digits displayed in five groups separated by hyphens in the form
8-4-4-4-12 for a total of 36 characters (32 alphanumeric characters and four hyphens). An
example of a UUID string is 550e8400-e29b-0518-a716-445664449c0b. The letters a through e
are hexadecimal digits representing the numbers 10 through 15. Either lower case letters or
upper case letters may be used in QIF for those digits.
The null UUID, which is equivalent in practice to no UUID since it is not unique, is one that has
all 128 bits set to zero. In text form, that is written 00000000-0000-0000-0000-000000000000.
UUIDS used in QIF are called QPIds (pronounced “cupids”), a short form of QIF Persistent
Identifier. Where a QPId is used to identify a file or element, its data type is QPIdType, and it
must be created by a well known UUID generator. Where a QPId is used to reference a file or
element, its data type is QPIdReferenceType, and it must match an existing QPId.
The following items may normally be transcribed directly from a QMPlans file to a corresponding
QMResults file:
file units.
measurement resources (to the extent the resources in the plan were used).
feature definitions, nominals, and instances. The pointer in each feature instance to the
corresponding feature nominal will generally need to be reset to point at the feature
actual which is added in the QMResults file.
To help in tracking information from a QMPlans file to a QMResults file, a QPId element has
been placed in the FeatureInstanceBaseType, the CharacteristicInstanceBaseType, and the
ProductInstanceBaseType. Of course the derived types of those base types inherit the QPId
element, so all 29 instantiable feature instance types have it, all 37 instantiable characteristic
instance types have it, PartInstanceType has it, and AssemblyInstanceType has it.
When an application is creating a QMResults file related to a QMPlans file and wants to
maintain a correspondence between the two, each characteristic instance in the results file
should be given the same QPId as the corresponding characteristic instance in the plans file –
and similarly for feature instances, part instances, and assembly instances. Since
corresponding instances can be tracked using the QPId, other corresponding items the instance
points to, such as a nominal characteristic can be matched up using the ids in the files.
The use of QPIds has been minimized in QIF so as to avoid making files large and to avoid
putting a burden on QIF users. If experience shows that QPId elements are needed in more
places, more may be added in future versions of QIF.
Each part and assembly in a QIF instance file may correspond to multiple external models, for
example, a CAD file and two drawings.
In the case of CAD models, the identifiers in the model must be at least minimally persistent in
the sense that each time a given file is loaded into a system that can handle it, the same
identifier should be attached to each information item as is attached any other time the file is
loaded. For other types of model, this sort of minimal persistence is automatic.
QIF supports the following types of external models for parts and assemblies:
Parts
PrintedPartDrawingType
DigitalPartDrawingType
SimpleDigitalPartDesignModelType
AdvancedDigitalPartDesignModelType
PhysicalPartModelType
Assemblies
PrintedPartDrawingType
DigitalPartDrawingType
SimpleDigitalPartDesignModelType
AdvancedDigitalPartDesignModelType
PhysicalPartModelType
PrintedAssemblyDrawingType
DigitalAssemblyDrawingType
DigitalAssemblyDesignModelType
PhysicalAssemblyModelType
Assembly model types include the part model types since once an assembly is assembled, it
may be regarded as a part with features and characteristics that are not features or
characteristics of any individual component of the assembly.
To connect CAD entities to QIF features and characteristics, the CAD entities must be identified,
45 QIF v1.0 – Proposed (ANSI/QIF Part 1 – 2013)
and the association from a feature or characteristic to one or more CAD entities must be made.
<ProductGeometriesDefinitions>
<PartGeometriesDefinitions>
<PartGeometryDefinitions id="51">
...
<AdvancedDigitalPartDesignModel id="64">
<FileName>ANC101CAD</FileName>
<ModelEntities>
<ModelAndEntity id="68">
<ModelEntityId>TopDistanceRightPlane</ModelEntityId>
</ModelAndEntity>
<ModelAndEntity id="69">
<ModelEntityId>TopDistanceLeftPlane</ModelEntityId>
</ModelAndEntity>
</ModelEntities>
<Format>
<OtherDigitalModelFormat>xxx</OtherDigitalModelFormat>
</Format>
</AdvancedDigitalPartDesignModel>
<PartDefinitionId>12</PartDefinitionId>
</PartGeometryDefinitions>
QIF v1.0 – Proposed (ANSI/QIF Part 1 – 2013) 46
</PartGeometriesDefinitions>
</ProductGeometriesDefinitions>
The association from a feature to one or more CAD entities is made in the Features section of a
QIF instance file (and similarly for characteristics). This is done by listing the
ModelAndEntityIds that correspond to each feature instance. Here is a snippet from a QIF
instance file in which a single opposite planes feature references the planes in the preceding
snippet.
<Features>
...
<FeatureInstances>
...
<OppositePlanesFeatureInstance id="34">
<FeatureActualId>56</FeatureActualId>
<ModelAndEntityIds>
<ModelAndEntityId>68</ModelAndEntityId>
<ModelAndEntityId>69</ModelAndEntityId>
</ModelAndEntityIds>
<FeatureName>upper body width parallel planes</FeatureName>
...
</OppositePlanesFeatureInstance>
...
</FeatureInstances>
</Features>
From each ModelAndEntityId, a ModelAndEntity may be found, and from that the model may
be found, and the entity inside that model may be identified. To do anything further with the
information, the CAD model must be available.
triplets representing the orientation and origin of the local space defined in terms of the common
coordinate space axis system.
XDirection: a unit vector defining the IJK direction of the local X-axis direction in the
common space.
YDirection: a unit vector defining the IJK direction of the local Y-axis direction in the
common space.
ZDirection: a unit vector defining the IJK direction of the local Z-axis direction in the
common space.
Origin: a point defining the local origin in the common space.
The three vectors defined by the XDirection, YDirection and ZDirection elements are
orthonormal: each is of unit length and each is perpendicular to the other two. Furthermore they
are right-handed in the sense that the right-hand vector cross product of the vector defined by
the XDirection element with the vector defined by the YDirection element is equal to the vector
defined by ZDirection element, the right-hand vector cross product of the vector defined by the
YDirection element with the vector defined by the ZDirection element is equal to the vector
defined by XDirection element, and the right-hand vector cross product of the vector defined by
the ZDirection element with the vector defined by the XDirection element is equal to the vector
defined by YDirection element. Or in short:
|XDirection| = 1
|YDirection| = 1
|ZDirection| = 1
XDirection . YDirection = 0
YDirection . ZDirection = 0
ZDirection . XDirection = 0
This results in a transformation which can translate and rotate but neither skew nor scale axis
systems. The first three rows of the 4x3 matrix represent a 3x3 rotation matrix and the last row
of the 4x3 matrix represents a vector offset.
To map (or transform) a point in a local space with coordinates (x, y, z) to a point in the common
space with coordinates (X, Y, Z) where the local space is defined by the transformation matrix:
Xi Xj Xk
Yi Yj Yk
Zi Zj Zk
Ox Oy Oz
The mapping of vectors between common and local spaces is similar. To map the vector with
components (i, j, k) in local space to the vector with components (I, J, K) in common space the
following calculations are used:
Conversely, to map points from common space into local space the inverse transformation is
used. To map the point (X, Y, Z) in common space to the point (x, y, z) in local space the
following calculations are used:
And to map the vector (I, J, K) in common space to the vector (i, j, k) in local space the following
calculations are used:
The origin of the local space in common space coordinates is (Ox = 5.5179, Oy = 0.5000, Oz =
3.0000). The X-axis of the local space in terms of common space is (Xi = 0.8660, Xj = 0.0000, Xk
= -0.5000), the Y-axis of the local space in terms of common space is (Yi = 0.0000, Yj = 1.0000,
Yk = 0.0000), and the Z-axis of the local space in terms of common space is (Zi = 0.5000, Zj =
0.0000, Zk = 0.8660) giving the 4x3 transformation matrix:
To transform the hole center in local coordinates (2.000, 2.000, 1.000) to coordinates in the
common space the formula set (1) is used:
To transform the hole axis vector in local coordinates (0.000, 0.000, 1.000) to coordinates in the
common space the formula set (2) is used:
The transform of the hole center from common space coordinates (7.7500, 2.500, 2.8660) to
local coordinates uses formula set (3):
And the transform of the hole axis vector from common space coordinates (0.5000, 0.0000,
0.8660) to local coordinates uses formula set (4):
The example transformation matrix might appear as follows in a QIF XML instance file:
<XDirection>
<I>0.8660254037844</I>
<J>0</J>
<K>-0.5</K>
</XDirection>
<YDirection>
<I>0</I>
<J>1</J>
<K>0</K>
51 QIF v1.0 – Proposed (ANSI/QIF Part 1 – 2013)
</YDirection>
<ZDirection>
<I>0.5</I>
<J>0</J>
<K>0.8660254037844</K>
</ZDirection>
<Origin>
<X>5.5179491924311</X>
<Y>0.5</Y>
<Z>3</Z>
</Origin>
6.14.3 Transforms
The TransformType is derived from the TransformMatrixType and so contains the 4x3
transformation matrix information but in addition has an id attribute, and Name, Notes and
ModelAndEntityIds elements.
The id attribute allows the transform to be referenced and therefore allows a single
transformation matrix to be shared by several objects.
The optional Name, Notes and ModelAndEntityIds elements allow for the transform to be
identified, have arbitrary text information added, and to be associated with a transform or
coordinate system in a CAD model respectively.
system on the nominal part with respect to the common space, and one which defines the axis
system on the actual part with respect to the common space.
A single coordinate system can coincide with the common space. This coordinate system can
be identified with the optional CommonCoordinateSystemId element of the
CoordinateSystemListType.
The example in Figure 9 shows two Cartesian axis systems. In the context of QIF, if these two
axis systems are established by aligning to actual features, they can become coordinate
systems. The coordinate system labelled “common” is established by a set of actual part
features and coincides with the common space. Both the nominal and actual transformation
matrices for this coordinate system will be the identity rotation matrix with a (0, 0, 0) origin
offset:
<NominalTransform>
<XDirection> <I>1</I> <J>0</J> <K>0</K> </XDirection>
<YDirection> <I>0</I> <J>1</J> <K>0</K> </YDirection>
<ZDirection> <I>0</I> <J>0</J> <K>1</K> </ZDirection>
<Origin> <X>0</X> <Y>0</Y> <Z>0</Z> </Origin>
</NominalTransform>
<ActualTransform>
<XDirection> <I>1</I> <J>0</J> <K>0</K> </XDirection>
<YDirection> <I>0</I> <J>1</J> <K>0</K> </YDirection>
<ZDirection> <I>0</I> <J>0</J> <K>1</K> </ZDirection>
<Origin> <X>0</X> <Y>0</Y> <Z>0</Z> </Origin>
</ActualTransform>
If the coordinate system labelled “local” is established by a different set of actual features from
that used to establish the coordinate system labelled “common” then (unless the actual part is a
perfect representation of the nominal part) the actual transformation will not exactly match the
nominal transformation:
<NominalTransform>
<XDirection> <I>0.866025</I> <J>0</J> <K>-0.5</K> </XDirection>
<YDirection> <I>0</I> <J>1</J> <K>0</K> </YDirection>
<ZDirection> <I>0.5</I> <J>0</J> <K>0.866025</K> </ZDirection>
<Origin> <X>5.517949</X> <Y>0.5</Y> <Z>3</Z> </Origin>
</NominalTransform>
<ActualTransform>
Any number of alignment operations can exist in a coordinate system. Only the transformation
matrices (nominal and actual) of the accumulated effect of all alignment operations is stored on
the coordinate system. If the transformation matrix information is required for the individual
steps in a real alignment process, then a QIF coordinate system instance must be generated for
each step.
Form characteristics:
CircularityCharacteristicXXXType
CylindricityCharacteristicXXXType
FlatnessCharacteristicXXXType
StraightnessCharacteristicXXXType
Location characteristics:
ConcentricityCharacteristicXXXType
PositionCharacteristicXXXType
SymmetryCharacteristicXXXType
Orientation characteristics:
AngularityCharacteristicXXXType
ParallelismCharacteristicXXXType
PerpendicularityCharacteristicXXXType
Profile charactertistics:
LineProfileCharacteristicXXXType
SurfaceProfileCharacteristicXXXType
Runout charactertistics:
CircularRunoutCharacteristicXXXType
TotalRunoutCharacteristicXXXType
Depending on the characteristic type, the size of the tolerance zone may be subject to a bonus
tolerance. This is indicated in the feature control frame by the use of a material condition
modifier symbol which indicates the material condition at which the tolerance zone applies.
When a particular characteristic type allows for the use of a material condition modifier, the
required MaterialCondition element must be used. The MaterialCondition element can have
one of four values:
In the case of orientation characteristics, the amount of bonus applied to the tolerance zone
may be limited by defining the maximum tolerance size in the feature control frame. For
example the size of the perpendicularity tolerance zone in is limited to
.075 regardless of the available bonus. In QIF the optional MaximumToleranceValue is used to
indicate the maximum size of an orientation characteristic tolerance zone.
QIF v1.0 – Proposed (ANSI/QIF Part 1 – 2013) 56
A tolerance zone which varies in size must use the optional ZoneLimit element to define the
limiting points for the variable tolerance zone. The tolerance zone starts with a value of
ToleranceValue at the FromPoint and changes linearly in size to the value of
ToPointToleranceValue at the ToPoint.
Spherical
Non-diametrical
The orientation of a tolerance zone implied by the orientation of the feature to which a feature
control frame is applied, or by the placement of a feature control frame on a drawing, or by a
combination of the two, can be explicitly defined by the optional ZoneOrientationVector
element.
The application of a position characteristic diametrical zone to an elongated feature like the
round ends of a slot is indicated with the optional ElongatedZone element.
a note like and point identifiers on the drawing, using other standard notes, or using a
leader line modifier like .
The use of a projected tolerance zone indicated by the symbol in a feature control frame, is
defined by the optional ProjectedToleranceZone element. Regardless of whether the length of
the projected tolerance zone is defined numerically in the feature control frame or as a
dimension on the drawing, the ProjectedToleranceZone element defines the length of the
projected tolerance zone.
A profile characteristic tolerance zone is by default centered on the nominal feature to which it is
applied. This behavior may be modified by chain lines on the drawing or by using the upper
disposition symbol in the feature control frame. Both these methods are defined by the
optional OuterDisposition element which defines the size of the tolerance zone outside the
material which can vary from zero to the whole tolerance zone.
Zone limits defined by chain lines or by identified points used in notes like are both
implemented in QIF with the optional ZoneLimit element. This element contains two sub-
elements: FromPoint and ToPoint which together define the extents of the tolerance zone. The
plane in which the zone limits are defined is given by the NormalDirection element which is the
vector normal to the drawing view. Any ambiguity about the path to follow between the from-
point and to-point around the part is removed by the StartDirection element. When the from-
point and to-point are identified by labels on a drawing for use in a style note the optional
Name sub-element on the FromPoint and ToPoint elements is used.
Standard feature control frame notes or leader line modifiers which control the zone extents are
handled by various optional elements in QIF:
The datum reference frame which the DatumReferenceFrameId element references contains a
hierarchy of information to define datum labels, material condition or boundary modifiers and
datum precedence. In cases where a non-form geometric tolerance characteristic has no datum
reference frame, the DatumReferenceFrameId element must still be present but the datum
reference frame it references will be empty.
The datum label is defined by the DatumLabel element. This is typically meant to be a single
datum identifier like used to identify a datum feature on a part. Compound datums like
that use two or more datum identifiers are only found in feature control frames and are
handled in QIF with the CompoundDatumType. In practice, a compound datum may be
handled with the CompoundFeatureXXXType or as a constructed feature, in which case a
datum label like may be assigned to the compound feature.
The optional FeatureInstanceIds element is used to reference the feature or features which
comprise the datum. The optional DatumTargetIds element is used to reference the datum
target or targets associated with the datum.
The DatumWithPrecedenceType has the required Precedence element which is used to order
datums, simple or compound, or datum features into a datum reference frame. The first datum
in a datum reference frame will use the PrecedenceEnum element with a value set to
PRIMARY, the second datum will used SECONDARY, the third TERTIARY, etc.
59 QIF v1.0 – Proposed (ANSI/QIF Part 1 – 2013)
If a simple datum like is used, then the SimpleDatum element of DatumType is chosen
which references the QIF id of a datum definition with the DatumDefinitionId element. The
MaterialModifier element is used to apply a material condition or material boundary modifier to
the datum. And the ReferencedComponent defines whether it is the actual or nominal
component of the datum feature associated with the datum that is used.
The DatumWithPrecedenceType also supports a datum feature without a datum definition and
therefore no datum label. Such a construct will never be seen in a feature control frame. It is
included in QIF to handle DMIS and other languages which allow a reference directly to a datum
feature. For example, in DMIS:
T(PERP1)=TOL/PERP,0.05,FA(PLANE1)
As opposed to:
DATDEF/DAT(A),FA(PLANE1)
T(PERP1)=TOL/PERP,0.05,DAT(A)
When using a feature actual as a datum feature, the ActualDatumFeature element is chosen.
When using a feature nominal as a datum feature the NominalDatumFeature element is
chosen. Both reference the QIF id of a feature instance but only the ActualDatumFeature
allows for a material condition modifier.
The case where zero Datum elements are present corresponds to a feature control frame with
no datum reference frame, like .
attribute giving the name of the unit. Alternate units can be assigned to individual quantities by
including an attribute giving the name of the unit. All unit names must be unique for a given unit
type.
Primary and alternate units are specified in a QIF instance file, such as a QMResults instance
file, by using the FileUnits element defined in Units.xsd. The FileUnits element specifies a
primary unit for each of the unit types used in the instance file, and optional alternate units. The
three primary units types used in QMResults are angle, length, and temperature. Quantities
expressed in the primary units can be written in an instance file without any explicit mention of a
unit. If any quantity of a given unit type appears in an instance file, the corresponding unit type
must appear in the PrimaryUnits or the OtherUnits of the FileUnits. Common XML file
checkers will signal an error if this rule is violated.
<Diameter>7.5</Diameter>
If the LengthUnit in the PrimaryUnits is millimeter, the line above would mean that the
diameter is 7.5 millimeters. This association occurs because the Diameter element is of
LengthValueType in the schema.
The default unit for all unit types is the SI unit (meter, radian, kelvin, etc.). If it is desired to have
a primary unit type not be a SI unit, a UnitConversion element must be included in the
declaration of the primary unit. The UnitConversion element gives an Offset and a
multiplication Factor that may be used to convert values of the primary unit type to values in
terms of SI units.
For example, the meter is the SI unit for length. If a user wants to use the millimeter as the
primary length unit in an instance file, the user puts the following lines into the FileUnits portion
of the instance file:
<PrimaryUnits>
<LengthUnit>
<SIUnitName>meter</SIUnitName>
<UnitName>millimeter</UnitName>
<UnitConversion>
<Factor>0.001</Factor>
<Offset>0</Offset>
</UnitConversion>
</LengthUnit>
...
</PrimaryUnits>
In the FileUnits portion of the instance file, wherever a unit is declared, the name of the SI unit
may be given regardless of whether it is the primary unit or not. If the UnitConversion is not
61 QIF v1.0 – Proposed (ANSI/QIF Part 1 – 2013)
included in the instance file, the UnitName just serves as an alias for the SI unit. For example if
the unit type is LengthUnit, the SIUnitName must be meter if it is used, but the UnitName
might be meter or m, or anything else the user likes. If the UnitConversion is included in the
instance file, naming the SI unit makes it clear what units result from applying the conversion.
The conversion is always accomplished using the equation:
The FileUnits element also includes an OtherUnits sub-element for specifying alternate units.
For example, a LengthUnit named inch could be defined in the OtherUnits element as follows:
<OtherUnits>
<LengthUnit>
<SIUnitName>meter</SIUnitName>
<UnitName>inch</UnitName>
<UnitConversion>
<Factor>0.0254</Factor>
<Offset>0</Offset>
</UnitConversion>
</LengthUnit>
...
</OtherUnits>
If a quantity in an instance file is represented using an alternate unit, the name of the unit type
must be given. If the definition for inch just given is used in an instance file, a diameter of 5
inches in an instance file would be expressed as follows:
<Diameter lengthUnit=”inch”>5</Diameter>
If the sides of a real feature are not flat, then the extruded cross section feature defined by the
ExtrudedCrossSectionFeatureXXXType would be a more appropriate QIF feature for
representing the real feature. The opposite lines feature might still be a suitable representation
of a planar section of such a feature provided the criterion of symmetrically opposed straight
sides is met.
The relationship between the opposite lines feature and the opposite planes feature is much like
the relationship between a circle and a cylinder: the opposite lines feature is a two-dimensional
planar section of a real feature and the opposite planes feature is a three-dimensional
representation of a real feature.
Figure 10 shows the relationship between the CenterLine element which defines both the
location and the orientation of the axis of the round-ended slot, and the Normal element which
defines the plane in which the feature lies.
The location and orientation of an opposite planes feature is defined by the center-plane defined
by a center-point and the center-plane’s normal unit vector given by the Point and Normal
elements of the required CenterPlane element. The size of the opposite planes feature is
defined by the required Width element which applies in the direction along the center-plane
normal vector. The feature may also have a length defined by the optional Length element
which applies in the direction of the co-requisite LengthVector element. Furthermore, the
feature may have a depth defined by the optional Depth element which applies in the direction
of the co-requisite DepthVector element.
Figure 11 shows the relationship of the CenterPlane element with sub-elements Point and
Normal which define the orientation of the main sides of a flat-ended slot. In order to define the
orientation of the ends of the slot, the optional LengthVector element must be specified (not
shown in Figure 11). The LengthVector element would have the same orientation as the
CenterLine in Figure 10.
For both opposite lines and opposite planes features with closed ends the length is from the
material boundary at one end to the material boundary at the other end measured along the
center-line vector or along the length vector in the center-plane. The length is not between
radius centers when a feature has rounded ends. When a feature has one or two open ends
then the length can be the distance to a virtual material boundary equivalent to the real material
boundary created by placing a flat block over the open end, or it can be an indication of the
measureable region of the feature. In all cases the length is symmetrically disposed about the
center-point of the feature.
Figure 10 and Figure 11 show examples of the ROUND and FLAT end types respectively.
Figure 14 below shows an example of the OPEN end type (upper right).
65 QIF v1.0 – Proposed (ANSI/QIF Part 1 – 2013)
The shape of the ends of a ROUND and FLAT opposite sides feature can be further modified by
using the optional EndRadius1 and EndRadius2 elements which apply in the directions against
and along the center-line axis/length vector respectively. The default condition for round-ended
features is to have a circular end tangent to both sides (the actual ends may be described by
circular arcs for opposite lines or by cylindrical or conical segments for opposite planes but in a
cross-section at any depth the circular ends will be tangent to both sides). By using the end radii
elements, circular cross-section ends that are not tangent to the sides can be specified. The
size of the end is given by the EndRadius element which must be larger than the radius of a
tangent end. Whether the end expands beyond the width like a dumbbell shape or not is given
by the value of the optional Expanded element.
Figure 12 shows a round-ended slot with non-tangent ends. The relationship between the ends
modified by the EndRadius1 and EndRadius2 elements and the LengthVector or CenterLine
elements is shown. In the example the values of the two end radii are equal, but one is
expanded and the other is not. The center of the slot is midway between the extremes of the
slots in the axis direction, and not at the midpoint of the center of the circular ends.
For flat ended opposite sides features the end radii can be used to apply a fillet radius to an
otherwise flat end. The end radius must be small enough to leave a portion of the flat end.
Figure 13 shows a flat-ended slot with rounded corners. In the example the two end radii values
are equal (and both must be smaller than half the width of the slot).
An opposite sides feature may have one closed end and one open end. The presence of a
single open end is indicated by the optional SingleOpenEnd element. In the case of an
opposite lines feature the center-line axis must point towards the open end, and for the opposite
planes feature the co-requisite LengthVector element points toward the open end.
Figure 14 shows two slots with open ends. The lower left slot would have end type ROUND and
use the optional SingleOpenEnd element. The arrow shows the direction of the LengthVector
element towards the open end. The upper right slot would have end type OPEN because both
ends of the slot are open.
The slot in the lower left of Figure 14 is an example of the THROUGH bottom type; the slot in
the upper right is an example of the BLIND bottom type.
6.17.6 Taper
An opposite sides feature may be tapered. If the optional TaperAngle element is populated with
a non-zero value then the width of the opposite sides feature changes along the center-line
vector/length vector. The sign of the taper angle defines whether the feature gets larger in the
direction of the vector (positive) or gets smaller in the direction of the vector (negative). When
an opposite sides feature is tapered the width applies at the center-point.
Figure 15 shows the relationship between the taper angle and the center line or length vector of
a tapered slot. The example shows a slot with a ROUND end type. The center of the slot is
midway between the extremes of the slots in the axis direction, and not at the midpoint of the
center of the circular ends.
6.17.7 Draft
The opposite planes feature may have a draft angle defined by the optional DraftAngle
element. A positive draft angle means the feature will open up (get larger) in the direction
defined by the co-requisite DepthVector element or the co-requisite DraftVector element, a
negative draft angle means the feature will close up (get smaller). When an opposite planes
feature is drafted the width and length apply at the center-point. The DraftVector element
overrides the DepthVector element when the draft vector is not perpendicular to the length
vector, the axis vector, or both.
Figure 16 shows the relationship between the draft angle and the center plane of a slot with
draft.
In addition to actual elements which correspond directly with nominal elements like actual width
and length corresponding with nominal width and length respectively, there are actual data
elements for minimum and maximum of size values.
This is not the case with threaded features. A hole is not threaded to one specification and
inspected to another. Also, unlike a simple diameter, the data associated with a thread
specification is quite complex as shown in Figure 17. To allow the sharing of thread specification
data the threaded feature defined by the ThreadedFeatureDefinitionType and the thread
characteristic defined by the ThreadCharacteristicDefinitionType both have an element
ThreadSpecificationId which references an instance of ThreadSpecificationType contained
in a list of ThreadSpecificationsType.
For a set feature, the Set element of the DeterminationMode element on the feature instance
is chosen. If the feature is checked then the Checked element of the DeterminationMode
element on the feature instance is chosen. The differentiation between set and checked
features is the only required information from the DeterminationMode element.
For a measured feature, the Measured element of the CheckDetails element is chosen. For a
constructed feature, the Constructed element of the CheckDetails element is chosen.
A base feature used in a construction is a reference to another feature instance by its id in the
FeatureInstanceId element. In addition the referenced component of the base feature is
identified by the ReferencedComponent element. Usually the actual component, but
sometimes the nominal component, of a base feature is used in the construction of the feature
actual. This is not to be confused with the concept of calculated nominals, where the nominal
components of all base features are used to calculate the feature nominal.
The recompensated construction method references the measurement points of a base feature
rather than the base feature itself. The BaseFeaturePointList element identifies an ordered list
of measurement points on referenced base features. These points are identified by a single
point index, a range of point indexes, or all the points on the specified base feature. Point
indexes are integers that begin at 1 for the first point in a measurement point list.
The descriptions of the various construction methods can be found in Part 2: QIF Library -
Information Model and XML Schema Files. Some construction method types are similar; these
methods are clarified and differentiated in the following sections.
Both the extract and from-scan construction methods use a subset of points from the base
feature. This subset is determined by the nominal extents of the feature being constructed.
Therefore, the feature being constructed must be naturally bounded (e.g., an arc) or explicitly
bounded (e.g., a plane with a polyline boundary).
The extract construction method is used when the dimensionality of the base feature and the
feature being constructed are the same. Two-dimensional features can be extracted from a two-
dimensional scan curve in the same plane; arcs and lines can be extracted from a planar curve
scan inside a filleted pocket because the arcs and lines are coincident with the base feature.
Similarly, three-dimensional features can be extracted from a three-dimensional scan surface. In
both cases, the measurement points used in the construction are those inside the limits on the
bounded feature.
But when a two-dimensional feature is derived from the measurement points a three-
dimensional scanned surface the feature being constructed may not be coincident with the
scanned data. As a result, search windows must be used to extend the two-dimensional feature
out of its plane in order to capture point data sufficient to determine the feature actual. The from-
scan construction methods have elements like SearchRadius which allow for the definition of
the search windows. (Some three dimensional feature types also have a from-scan construction
method to be compatible with the DMIS 5.2 CONST (Input format 15) statement.)
In the case of the copy construction method the base feature and the feature being constructed
must be of the same type and all the actual data elements from the base feature are copied
unchanged to the feature being constructed. If the NominalsCalculated element is present and
set to true then the nominal data elements are similarly copied from the base feature to the
feature being constructed.
In the case of the cast construction method the base feature and the feature being constructed
are not of the same type and all the actual data elements from the base feature may or may not
have corresponding data elements in the feature being constructed. Only those actual data
elements shared between the two feature types are copied unchanged from the base feature to
the feature being constructed. If the NominalsCalculated element is present and set to true
then any shared nominal data elements are similarly copied from the base feature to the feature
being constructed.
In the case of the transform construction method the base feature and the feature being
constructed must be of the same type and all the actual data elements from the base feature
are copied to the feature being constructed. All location and orientation elements are
transformed by the actual transform matrix of the specified coordinate system. All size, form,
and other dimensional data remain unchanged. If the NominalsCalculated element is present
and set to true then the nominal data elements are similarly copied from the base feature to the
feature being constructed with the nominal location and orientation data being transformed by
the nominal transform matrix of the specified coordinate system.
The key characteristic, defined by the KeyCharacteristicType, performs two tasks. First, the
required Designator element captures the balloon number. Second, the optional Criticality
element is used to indicate the level of importance of the characteristic. This is a user-defined
token and may have any value. Examples include MAJOR, MINOR and KEY.
In Figure 8 the balloon number “1” is shared by the four holes in much the same way that the
nominal diameter is shared. This relationship can be shown by using the optional
KeyCharacteristic element on the characteristic nominal. This is the normal location for
indicating the key characteristic designator and criticality except in special circumstances.
When the key characteristic designator is shared among several instances and it is necessary
to assign augmented labels or balloon numbers to each instance, this is accomplished with the
KeyCharacteristic element on the characteristic instance. A balloon number of “1” may result in
individual key characteristic designators like 1_1, 1_2, etc.; 1A, 1B, etc.; or 1.1, 1.2, etc.
depending on company standards.
When a box tolerance is used (like that shown in 6.7.2) and such a tolerance is ballooned then,
in practice, that designator may be shared among several different characteristics and even
different characteristic types. In this case, the KeyCharacteristic element on the characteristic
definition is used. If the designator spans several different characteristic types then the same
key characteristic must be re-defined for each characteristic types; QIF does not allow for
characteristic definitions to be shared among characteristics of different types.
6.21 Notes
The QIF information model makes it possible for users to insert notes in many places in
QMPlans and QMResults instance files.
Notes are intended to be used to convey important information in natural language that is not
representable elsewhere in the QIF model. Items that can be represented in the model (the
nominal diameter of a circle, for example) should not be put into notes.
NotesType - a list of elements, each of which is either Note (a string containing the text of the
note) or NoteId (the QIF id of an InspectionNote).
Also at the top level there is an element (PlanNotes or ResultsNotes) of NotesType. This is
the place to put notes (or references to notes) that apply to the plan or results file as a whole. A
great deal of information can be put into the InspectionTraceability element of a plan or results
file. The PlanNotes or ResultsNotes should not contain information that can be put into
InspectionTraceability.
Notes elements of NotesType occur in the following types in the following QIFLibrary XML
schema files.
CharacteristicTypes.xsd
CharacteristicBaseType (hence in any aspect of any characteristic)
FeatureTypes.xsd
FeatureBaseType (hence in any aspect of any feature)
MeasurementResources.xsd
75 QIF v1.0 – Proposed (ANSI/QIF Part 1 – 2013)
TemperatureType
QualificationType
ProductTypes.xsd
ProductDefinitionBaseType (hence in any PartDefinition or AssemblyDefinition)
ProductInstanceBaseType (hence in any PartInstance or AssemblyInstance)
QIFTypes.xsd
TransformInstanceType
CoordinateSystemType
Traceability.xsd
EnvironmentType
7 Detailed requirements
7.1 XML naming and design rules (NDR)
XML technology was chosen for QIF encoding because the basic XML specifications are
supported as open, public domain, royalty-free standards, and because XML technology is very
widely used.
The QIF information model is built using the XML Schema Definition Language
(XSDL). That language was chosen because:
XSDL has adequate expressive power for the basic structure of the model. It includes
the ability to define complex types with attributes and elements.
XSDL allows more specialized complex types to be derived from less specialized
complex types, so that type hierarchies can be defined.
XSDL has built-in data types and the ability to specialize them.
XSDL permits the modular construction of models via an "include" capability.
XSDL has a default instance file format (XML) with a set of rules for determining if an
instance file conforms to a model. Moreover, XML instance files are human-readable as
well as machine-readable.
XSDL enables the model builder to define constraints that extend the rules for
determining whether an instance file conforms to a model.
XSDL is a widely accepted language, and the XML file format of instance files is even
more widely accepted.
Tools for determining whether a model is syntactically correct and consistent and
whether a given instance file conforms to a given model are available free or for a
moderate price.
Tools for generating computer code that may be incorporated in an application from a model
built in XSDL are available free or for a moderate price, thus lowering the cost of
implementation.
In this section, the prefix xs: is used to indicate terms that are part of the XML schema definition
language (XSDL). The xs: prefix is also used in the schema files. The term xs:type used here is
not part of XSDL but means either xs:complexType or xs:simpleType.
Names are descriptive and formed by concatenation without abbreviation. The one exception to
the rule against abbreviation is that "identifier" is shortened everywhere it appears to "id" or "Id".
All concatenated words in a name except possibly the first start with an upper case letter. The
rules for the case of the first letter of the first word are:
All names of XML items except xs:attribute names start with an upper case letter. This
includes names for xs:type, xs:element, xs:key, and xs:keyref. Example xs:type name:
ArcFeatureNominalType
xs:attribute names start with a lower case letter. Example xs:attribute name: id
All xs:type names end in "Type".
All xs:key names end in "Key".
All xs:keyref names end in "Keyref".
All names of instantiable feature xs:types end in "FeatureInstanceType",
"FeatureDefinitionType", "FeatureNominalType", or "FeatureActualType".
All names of instantiable characteristic xs:types end in "CharacteristicInstanceType",
"CharacteristicDefinitionType", "CharacteristicNominalType", or
"CharacteristicActualType".
All names of enumerated xs:types end in "EnumType".
Almost all names of xs:types that are parent xs:types not intended to be instantiated end
in "BaseType".
To a great extent, the names of xs:elements are formed from the name of the xs:type of
the xs:element by removing the "Type" at the end. For example, the name of the
xs:element whose xs:type is PlaneFeatureNominalType is PlaneFeatureNominal.
The name of an xs:element that is a reference to a QIF id almost always ends in "Id" and is
always of QIFReferenceType. If the value of an xs:element is a list of ids, the xs:element name
almost always ends in "Ids".
All xs:type definitions are declared globally, i.e., as direct children of an xs:schema. In
other words, no xs:type definition is embedded inside another xs:type definition or inside
an xs:element. This convention is commonly called using the venetian blind pattern.
Although the names of QIF xs:elements and xs:types are very descriptive, the precise
meaning almost always requires explanation. The XML schema definition language
includes an xs:documentation node type that may be used to put documentation into a
schema. Documentation nodes must be preserved by XML tools. Comments may also
be inserted in schema files but are not necessarily preserved by XML tools. Further
details of documentation are given in section 7.2.
All xs:types not intended to be instantiated are made abstract so as to be explicitly non-
instantiable.
When an xs:element is (or could be) declared to be of an abstract xs:type, there are
three ways under the W3C rules in which the xs:element can be declared and instances
of it put into instance files.
o First, in the schema file, the xs:element may be declared to be of the abstract
xs:type. In an instance file, instances of it may use the xs:element name for the
abstract xs:type followed by an xs:type declaration identifying one of the derived
types.
o Second, in the schema file, rather than having a single xs:element declaration,
an xs:choice of xs:elements of the various instantiable derived types may be
used instead. In an instance file, one of the xs:elements in the xs:choice is used.
o Third, in the schema file, the xs:element may be declared globally to be of the
abstract xs:type and made to be the head of a substitution group. The
instantiable derived xs:types are used as the xs:types for the other xs:elements
in that substitution group. The xs:element for the abstract xs:type is then used via
"ref" elsewhere in the schema file. In an instance file, the xs:element for a
member of the substitution group headed by the abstract type is used.
The first method can make writing key/keyref constraints difficult since (1) those
constraints are expressed using xs:element names, (2) the constraints need to
distinguish among xs:types, and (3) the same xs:element name is used with different
xs:types. It also requires the instance file to be more verbose (because the xs:type
declaration is needed). Hence, the first method is not used in QIF.
The second and third methods have a different xs:type for each xs:element name, so
they support writing key/keyref constraints. The third method is used overwhelmingly but
not exclusively in QIF. The second method is used in two or three places.
QIF intends to use the namespace "qif". The uniform resource identifier (URI) for the QIF
namespace is: qif="http://www.qifstandards.org". The schema files in version 1.0 of QIF,
however, do not use a namespace.
Every schema file has a documentation node near the top that provides a general
description of the file.
The xs:element at the head of every substitution group has a documentation node.
Every different sort of xs:key and xs:keyref has a documentation node. In the case of
features and characteristics, the xs:keys and xs:keyrefs occur in large (over 25) batches
that are very similar. For these batches, only the first member is documented.
Only one documentation node is used under an annotation node, unless there is an
exceptional reason to include more than one.
The text of each documentation node consists of one or more complete sentences. The
text can stand alone without the context of the XML schema code. The name of the
schema file, attribute, type, element, key, or keyref is repeated in the sentence.
All abstract types are annotated as abstract. QIF BaseTypes are always abstract.
When an element has maxOccurs=”0”, that indicates the element is optional. In this case,
the word “optional” immediately precedes the name of the element in the documentation.
If an attribute is optional, which is the default for attributes, the word “optional”
immediately precedes the attribute name in the documentation.
If an attribute has use=”required”, that means the attribute is required. In this case, the
word “required” immediately precedes the attribute name in the documentation.
When text notes can assist people in reading and understanding the schema file, text
describing the file structure is placed in XML comments.
Two QIF instance files are included as inline text in this annex. They apply to the sample part
drawing in Figure A.1.
The features and ballooned characteristics called-out in Figure A.1 can be described fully and
unambiguously in a QMPlans instance file along with other traceability and measurement
information.
File QMPLAN_SAMPLE.XML
<ThisPlanInstanceFileQPId>9fcebcb6-99da-44f9-b997-
2ba76fd438dd</ThisPlanInstanceFileQPId>
<FileUnits>
<PrimaryUnits>
<AngleUnit>
<SIUnitName>radian</SIUnitName>
<UnitName>degree</UnitName>
<UnitConversion>
<Factor>0.017453292519943</Factor>
</UnitConversion>
</AngleUnit>
<LengthUnit>
<SIUnitName>meter</SIUnitName>
<UnitName>mm</UnitName>
<UnitConversion>
<Factor>0.001</Factor>
</UnitConversion>
</LengthUnit>
<TemperatureUnit>
<SIUnitName>kelvin</SIUnitName>
<UnitName>celsius</UnitName>
<UnitConversion>
<Factor>1</Factor>
<Offset>273.14999999999998</Offset>
</UnitConversion>
</TemperatureUnit>
</PrimaryUnits>
</FileUnits>
<InspectionTraceability>
<InspectingOrganization>
<Name>Origin International</Name>
<Address>
<StreetNumber>72</StreetNumber>
<Street>Baynards Lane</Street>
<Town>Richmond Hill</Town>
<Region>Ontario</Region>
<PostalCode>L4C 9B8</PostalCode>
<FacsimileNumber>416 410 8313</FacsimileNumber>
<TelephoneNumber>1-800-269-2509</TelephoneNumber>
<ElectronicMailAddress>[email protected]</ElectronicMailAddress>
</Address>
</InspectingOrganization>
<SupplierCode>North_Fab</SupplierCode>
<PurchaseOrderNumber>PO123456</PurchaseOrderNumber>
<ProductInstanceIds>
<PartInstanceId>2</PartInstanceId>
</ProductInstanceIds>
<ReportNumber>QIF 1</ReportNumber>
<InspectionScope>DETAIL</InspectionScope>
<InspectionMode>FAI_Full</InspectionMode>
<ReportPreparer>
<Name>John Doe</Name>
<EmployeeId>123-456</EmployeeId>
</ReportPreparer>
<ReportPreparationDate>2013-07-15T13:23:30</ReportPreparationDate>
<FormalStandard>
<FormalStandardEnum>ASME-Y14.5-1994</FormalStandardEnum>
</FormalStandard>
</InspectionTraceability>
<DatumDefinitions>
<DatumDefinition id="29">
<DatumLabel>A</DatumLabel>
</DatumDefinition>
<DatumDefinition id="30">
<DatumLabel>B</DatumLabel>
</DatumDefinition>
<DatumDefinition id="31">
<DatumLabel>C</DatumLabel>
</DatumDefinition>
<DatumDefinition id="54">
<DatumLabel>D</DatumLabel>
</DatumDefinition>
<DatumDefinition id="55">
<DatumLabel>E</DatumLabel>
</DatumDefinition>
</DatumDefinitions>
<DatumReferenceFrames>
<DatumReferenceFrame id="8"/>
<DatumReferenceFrame id="28">
<Datum>
<SimpleDatum>
<DatumDefinitionId>29</DatumDefinitionId>
<MaterialModifier>NONE</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>PRIMARY</PrecedenceEnum>
</Precedence>
</Datum>
<Datum>
<SimpleDatum>
<DatumDefinitionId>30</DatumDefinitionId>
<MaterialModifier>NONE</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>SECONDARY</PrecedenceEnum>
</Precedence>
</Datum>
<Datum>
<SimpleDatum>
<DatumDefinitionId>31</DatumDefinitionId>
<MaterialModifier>NONE</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>TERTIARY</PrecedenceEnum>
</Precedence>
</Datum>
</DatumReferenceFrame>
<DatumReferenceFrame id="41">
<Datum>
<SimpleDatum>
<DatumDefinitionId>29</DatumDefinitionId>
<MaterialModifier>NONE</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>PRIMARY</PrecedenceEnum>
</Precedence>
</Datum>
<Datum>
<SimpleDatum>
<DatumDefinitionId>30</DatumDefinitionId>
<MaterialModifier>MAXIMUM</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>SECONDARY</PrecedenceEnum>
</Precedence>
</Datum>
<Datum>
<SimpleDatum>
<DatumDefinitionId>31</DatumDefinitionId>
<MaterialModifier>MAXIMUM</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>TERTIARY</PrecedenceEnum>
</Precedence>
</Datum>
</DatumReferenceFrame>
<DatumReferenceFrame id="53">
<Datum>
<SimpleDatum>
<DatumDefinitionId>29</DatumDefinitionId>
<MaterialModifier>NONE</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>PRIMARY</PrecedenceEnum>
</Precedence>
</Datum>
<Datum>
<SimpleDatum>
<DatumDefinitionId>54</DatumDefinitionId>
<MaterialModifier>LEAST</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>SECONDARY</PrecedenceEnum>
</Precedence>
</Datum>
<Datum>
<SimpleDatum>
<DatumDefinitionId>55</DatumDefinitionId>
<MaterialModifier>LEAST</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>TERTIARY</PrecedenceEnum>
</Precedence>
</Datum>
</DatumReferenceFrame>
</DatumReferenceFrames>
<MeasurementResources>
<MeasurementDevices>
<MeasurementDevice id="11">
<Name>CMM</Name>
</MeasurementDevice>
<MeasurementDevice id="44">
<Name>GAGE PINS</Name>
</MeasurementDevice>
<MeasurementDevice id="51">
<Name>CALIPERS</Name>
</MeasurementDevice>
</MeasurementDevices>
</MeasurementResources>
<ProductGeometriesDefinitions>
<PartGeometriesDefinitions>
<PartGeometryDefinitions id="67">
<PrintedPartDrawing id="3">
<Name>Sheet2_Solid4</Name>
<DrawingNumber>FABCO_58972368</DrawingNumber>
<DrawingVersion>1.2.0.198</DrawingVersion>
<AdditionalChanges>EC1.02</AdditionalChanges>
<Location>Cabinet 17, Drawer 3</Location>
<Description>Sample QIF elements</Description>
</PrintedPartDrawing>
<PartDefinitionId>1</PartDefinitionId>
</PartGeometryDefinitions>
</PartGeometriesDefinitions>
</ProductGeometriesDefinitions>
<Products>
<Parts>
<PartDefinitions>
<PartDefinition id="1">
<Name>WING_MIR_REENF</Name>
<QPId>2bbeb82a-96bf-4f1e-a327-4ba3500490e1</QPId>
<ModelNumber>QM_X_123456</ModelNumber>
<Description>Wing Mirror Re-enforcement</Description>
<Version>1.02</Version>
<PartGeometryDefinitionsId>67</PartGeometryDefinitionsId>
</PartDefinition>
</PartDefinitions>
<PartInstances>
<PartInstance id="2">
<SerialNumber>Run 3, Bin 17</SerialNumber>
<QPId>af4d1612-8918-4a69-a716-709beee7a953</QPId>
<Status>
<InspectionStatusEnum>UNKNOWN</InspectionStatusEnum>
</Status>
<Traceability>
<ManufacturingProcessReference>Press 49
</ManufacturingProcessReference>
</Traceability>
<PartDefinitionId>1</PartDefinitionId>
</PartInstance>
</PartInstances>
</Parts>
<RootPartDefinitionId>1</RootPartDefinitionId>
<RootPartInstanceId>2</RootPartInstanceId>
</Products>
<Features>
<FeatureDefinitions>
<EdgePointFeatureDefinition id="4"/>
<PointFeatureDefinition id="12"/>
<PointFeatureDefinition id="24"/>
<CircleFeatureDefinition id="34">
<Diameter>10</Diameter>
</CircleFeatureDefinition>
<CircleFeatureDefinition id="45">
<Diameter>10</Diameter>
</CircleFeatureDefinition>
<CircleFeatureDefinition id="58">
<Diameter>30</Diameter>
</CircleFeatureDefinition>
</FeatureDefinitions>
<FeatureNominals>
<EdgePointFeatureNominal id="5">
<FeatureDefinitionId>4</FeatureDefinitionId>
<Location>
<X>2460.7099609374995</X>
<Y>770.6046142578125</Y>
<Z>944.99359130859398</Z>
</Location>
<Normal>
<I>-0.735465884156759</I>
<J>-0.307902932144912</J>
<K>0.603560864882807</K>
</Normal>
<AdjacentNormal>
<I>-0.735465884156759</I>
<J>-0.307902932144912</J>
<K>0.603560864882807</K>
</AdjacentNormal>
</EdgePointFeatureNominal>
<PointFeatureNominal id="13">
<FeatureDefinitionId>12</FeatureDefinitionId>
<Location>
<X>2466.729248046875</X>
<Y>774.26989746093795</Y>
<Z>945.00274658203091</Z>
</Location>
<Normal>
<I>0.731520704665031</I>
<J>0.146124942551</J>
<K>-0.665976696146977</K>
</Normal>
</PointFeatureNominal>
<PointFeatureNominal id="25">
<FeatureDefinitionId>24</FeatureDefinitionId>
<Location>
<X>2536.494873046875</X>
<Y>782.80621337890568</Y>
<Z>920.00219726562511</Z>
</Location>
<Normal>
<I>-0.7609260410224</I>
<J>-0.648538030188332</J>
<K>-0.019747999732021</K>
</Normal>
</PointFeatureNominal>
<CircleFeatureNominal id="35">
<FeatureDefinitionId>34</FeatureDefinitionId>
<Normal>
<I>0.055815021663966</I>
<J>-0.907624351305543</J>
<K>-0.416056150385791</K>
</Normal>
<Location>
<X>2433.974609375</X>
<Y>800.617431640625</Y>
<Z>890.04962158203102</Z>
</Location>
</CircleFeatureNominal>
<CircleFeatureNominal id="46">
<FeatureDefinitionId>45</FeatureDefinitionId>
<Normal>
<I>0.041855011743973</I>
<J>-0.909169210310978</J>
<K>-0.414318120547998</K>
</Normal>
<Location>
<X>2496.25146484375</X>
<Y>780.84259033203102</Y>
<Z>938.27227783203102</Z>
</Location>
</CircleFeatureNominal>
<CircleFeatureNominal id="59">
<FeatureDefinitionId>58</FeatureDefinitionId>
<Normal>
<I>0.041846787761187</I>
<J>-0.909189553580246</J>
<K>-0.414274307693132</K>
</Normal>
<Location>
<X>2506.6367225154331</X>
<Y>792.99912448828434</Y>
<Z>912.64467696908582</Z>
</Location>
</CircleFeatureNominal>
</FeatureNominals>
<FeatureInstances>
<EdgePointFeatureInstance id="6">
<Notes>
<Note>An edge point with uniform profile characteristic</Note>
</Notes>
<FeatureNominalId>5</FeatureNominalId>
<FeatureName>TRIM1</FeatureName>
<QPId>aeba4615-65db-4f7d-a2e8-a7928c80117f</QPId>
<DeterminationMode>
<Checked>
<CheckDetails>
<Measured/>
</CheckDetails>
</Checked>
</DeterminationMode>
</EdgePointFeatureInstance>
<PointFeatureInstance id="14">
<Notes>
<Note>A point on a surface with coordinate characteristics</Note>
</Notes>
<FeatureNominalId>13</FeatureNominalId>
<FeatureName>SURF1</FeatureName>
<QPId>263c98a7-9786-4408-b62f-dda79a07daad</QPId>
<DeterminationMode>
<Checked>
<CheckDetails>
<Measured/>
</CheckDetails>
</Checked>
</DeterminationMode>
</PointFeatureInstance>
<PointFeatureInstance id="26">
<Notes>
<Note>A point on a surface with non-uniform profile
characteristic</Note>
</Notes>
<FeatureNominalId>25</FeatureNominalId>
<FeatureName>SURF2</FeatureName>
<QPId>63799169-1d43-41ee-b1ad-451f9d8a8f4e</QPId>
<DeterminationMode>
<Checked>
<CheckDetails>
<Measured/>
</CheckDetails>
</Checked>
</DeterminationMode>
</PointFeatureInstance>
<CircleFeatureInstance id="36">
<Notes>
<Note>A hole with position and gage-pin diameter</Note>
</Notes>
<FeatureNominalId>35</FeatureNominalId>
<FeatureName>HOLE1</FeatureName>
<QPId>f29bb618-e50d-4dbb-b4b4-83b28755c741</QPId>
<InternalExternal>INTERNAL</InternalExternal>
<DeterminationMode>
<Checked>
<CheckDetails>
<Measured/>
</CheckDetails>
</Checked>
</DeterminationMode>
</CircleFeatureInstance>
<CircleFeatureInstance id="47">
<Notes>
<Note>A hole with position and caliper diameter</Note>
</Notes>
<FeatureNominalId>46</FeatureNominalId>
<FeatureName>HOLE2</FeatureName>
<QPId>5bb191b0-7a18-4393-8f24-1353ac8365c7</QPId>
<InternalExternal>INTERNAL</InternalExternal>
<DeterminationMode>
<Checked>
<CheckDetails>
<Measured/>
</CheckDetails>
</Checked>
</DeterminationMode>
</CircleFeatureInstance>
<CircleFeatureInstance id="60">
<Notes>
<Note>A non-measureable reference circle</Note>
</Notes>
<FeatureNominalId>59</FeatureNominalId>
<FeatureName>REFCIRC1</FeatureName>
<QPId>6443f863-c559-42f2-b62a-48c0172d3395</QPId>
<InternalExternal>NOT_APPLICABLE</InternalExternal>
<DeterminationMode>
<Set/>
</DeterminationMode>
</CircleFeatureInstance>
</FeatureInstances>
</Features>
<Characteristics>
<CharacteristicDefinitions>
<PointProfileCharacteristicDefinition id="7">
<ToleranceValue>4</ToleranceValue>
<DatumReferenceFrameId>8</DatumReferenceFrameId>
</PointProfileCharacteristicDefinition>
<LengthCoordinateCharacteristicDefinition id="15">
<NonTolerance>MEASURED</NonTolerance>
</LengthCoordinateCharacteristicDefinition>
<LengthCoordinateCharacteristicDefinition id="18">
<Tolerance>
<MaxValue>0.2</MaxValue>
<MinValue>-0.2</MinValue>
<DefinedAsLimit>false</DefinedAsLimit>
</Tolerance>
</LengthCoordinateCharacteristicDefinition>
<LengthCoordinateCharacteristicDefinition id="21">
<Tolerance>
<MaxValue>945.20274658203095</MaxValue>
<MinValue>944.80274658203086</MinValue>
<DefinedAsLimit>true</DefinedAsLimit>
</Tolerance>
</LengthCoordinateCharacteristicDefinition>
<PointProfileCharacteristicDefinition id="27">
<ToleranceValue>1.5</ToleranceValue>
<OuterDisposition>1</OuterDisposition>
<DatumReferenceFrameId>28</DatumReferenceFrameId>
</PointProfileCharacteristicDefinition>
<DiameterCharacteristicDefinition id="37">
<Tolerance>
<MaxValue>0.4</MaxValue>
<MinValue>-0.4</MinValue>
<DefinedAsLimit>false</DefinedAsLimit>
</Tolerance>
</DiameterCharacteristicDefinition>
<PositionCharacteristicDefinition id="40">
<ToleranceValue>1</ToleranceValue>
<DatumReferenceFrameId>41</DatumReferenceFrameId>
<MaterialCondition>NONE</MaterialCondition>
<ZoneShape>
<DiametricalZone/>
</ZoneShape>
</PositionCharacteristicDefinition>
<DiameterCharacteristicDefinition id="48">
<Tolerance>
<MaxValue>10.4</MaxValue>
<MinValue>9.6</MinValue>
<DefinedAsLimit>true</DefinedAsLimit>
</Tolerance>
</DiameterCharacteristicDefinition>
<PositionCharacteristicDefinition id="52">
<ToleranceValue>1</ToleranceValue>
<DatumReferenceFrameId>53</DatumReferenceFrameId>
<MaterialCondition>NONE</MaterialCondition>
<ZoneShape>
<DiametricalZone/>
</ZoneShape>
</PositionCharacteristicDefinition>
<DiameterCharacteristicDefinition id="61">
<NonTolerance>SET</NonTolerance>
</DiameterCharacteristicDefinition>
<DistanceBetweenCharacteristicDefinition id="64">
<Tolerance>
<MaxValue>-0.5</MaxValue>
<MinValue>-0.5</MinValue>
<DefinedAsLimit>false</DefinedAsLimit>
</Tolerance>
</DistanceBetweenCharacteristicDefinition>
</CharacteristicDefinitions>
<CharacteristicNominals>
<PointProfileCharacteristicNominal id="9">
<CharacteristicDefinitionId>7</CharacteristicDefinitionId>
</PointProfileCharacteristicNominal>
<LengthCoordinateCharacteristicNominal id="16">
<CharacteristicDefinitionId>15</CharacteristicDefinitionId>
<TargetValue>2466.729248046875</TargetValue>
<Direction>XAXIS</Direction>
</LengthCoordinateCharacteristicNominal>
<LengthCoordinateCharacteristicNominal id="19">
<CharacteristicDefinitionId>18</CharacteristicDefinitionId>
<TargetValue>774.26989746093795</TargetValue>
<Direction>YAXIS</Direction>
</LengthCoordinateCharacteristicNominal>
<LengthCoordinateCharacteristicNominal id="22">
<CharacteristicDefinitionId>21</CharacteristicDefinitionId>
<Direction>ZAXIS</Direction>
</LengthCoordinateCharacteristicNominal>
<PointProfileCharacteristicNominal id="32">
<CharacteristicDefinitionId>27</CharacteristicDefinitionId>
</PointProfileCharacteristicNominal>
<DiameterCharacteristicNominal id="38">
<CharacteristicDefinitionId>37</CharacteristicDefinitionId>
<TargetValue>10</TargetValue>
</DiameterCharacteristicNominal>
<PositionCharacteristicNominal id="42">
<CharacteristicDefinitionId>40</CharacteristicDefinitionId>
</PositionCharacteristicNominal>
<DiameterCharacteristicNominal id="49">
<CharacteristicDefinitionId>48</CharacteristicDefinitionId>
</DiameterCharacteristicNominal>
<PositionCharacteristicNominal id="56">
<CharacteristicDefinitionId>52</CharacteristicDefinitionId>
</PositionCharacteristicNominal>
<DiameterCharacteristicNominal id="62">
<CharacteristicDefinitionId>61</CharacteristicDefinitionId>
<TargetValue>30</TargetValue>
</DiameterCharacteristicNominal>
<DistanceBetweenCharacteristicNominal id="65">
<CharacteristicDefinitionId>64</CharacteristicDefinitionId>
<TargetValue>81.208839738425993</TargetValue>
<AnalysisMode>THREEDIMENSIONAL</AnalysisMode>
</DistanceBetweenCharacteristicNominal>
</CharacteristicNominals>
<CharacteristicInstances>
<PointProfileCharacteristicInstance id="10">
<Notes>
<Note>A uniform profile zone ±2.0 with empty DRF</Note>
</Notes>
<Name>5</Name>
<QPId>6f2a6f83-3ff7-4327-b00c-98208361301a</QPId>
<KeyCharacteristic>
<Designator>5</Designator>
<Criticality>MINOR</Criticality>
</KeyCharacteristic>
<FeatureInstanceIds>
<FeatureInstanceId>6</FeatureInstanceId>
</FeatureInstanceIds>
<MeasurementDeviceIds>
<MeasurementDeviceId>11</MeasurementDeviceId>
</MeasurementDeviceIds>
<CharacteristicNominalId>9</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>3</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>C2</DrawingZone>
</LocationOnDrawing>
</PointProfileCharacteristicInstance>
<LengthCoordinateCharacteristicInstance id="17">
<Notes>
<Note>A basic coordinate dimension</Note>
</Notes>
<Name>1</Name>
<QPId>92de9383-78d1-42fc-8b05-17f110dd41f2</QPId>
<KeyCharacteristic>
<Designator>1</Designator>
<Criticality>REF</Criticality>
</KeyCharacteristic>
<FeatureInstanceIds>
<FeatureInstanceId>14</FeatureInstanceId>
</FeatureInstanceIds>
<MeasurementDeviceIds>
<MeasurementDeviceId>11</MeasurementDeviceId>
</MeasurementDeviceIds>
<CharacteristicNominalId>16</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>3</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>D3</DrawingZone>
</LocationOnDrawing>
</LengthCoordinateCharacteristicInstance>
<LengthCoordinateCharacteristicInstance id="20">
<Notes>
<Note>A bi-directional coordinate tolerance</Note>
</Notes>
<Name>2</Name>
<QPId>92de9383-78d1-42fc-8b05-17f110dd41f2</QPId>
<KeyCharacteristic>
<Designator>2</Designator>
<Criticality>MINOR</Criticality>
</KeyCharacteristic>
<FeatureInstanceIds>
<FeatureInstanceId>14</FeatureInstanceId>
</FeatureInstanceIds>
<MeasurementDeviceIds>
<MeasurementDeviceId>11</MeasurementDeviceId>
</MeasurementDeviceIds>
<CharacteristicNominalId>19</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>3</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>D3</DrawingZone>
</LocationOnDrawing>
</LengthCoordinateCharacteristicInstance>
<LengthCoordinateCharacteristicInstance id="23">
<Notes>
<Note>A limit coordinate tolerance</Note>
</Notes>
<Name>3</Name>
<QPId>92de9383-78d1-42fc-8b05-17f110dd41f2</QPId>
<KeyCharacteristic>
<Designator>3</Designator>
<Criticality>MAJOR</Criticality>
</KeyCharacteristic>
<FeatureInstanceIds>
<FeatureInstanceId>14</FeatureInstanceId>
</FeatureInstanceIds>
<MeasurementDeviceIds>
<MeasurementDeviceId>11</MeasurementDeviceId>
</MeasurementDeviceIds>
<CharacteristicNominalId>22</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>3</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>D3</DrawingZone>
</LocationOnDrawing>
</LengthCoordinateCharacteristicInstance>
<PointProfileCharacteristicInstance id="33">
<Notes>
<Note>An offset profile zone +1.0/-0.5 to ABC</Note>
</Notes>
<Name>4</Name>
<QPId>7ad19cce-458a-4d0a-9436-6a2d2683b018</QPId>
<KeyCharacteristic>
<Designator>4</Designator>
<Criticality>CRITICAL</Criticality>
</KeyCharacteristic>
<FeatureInstanceIds>
<FeatureInstanceId>26</FeatureInstanceId>
</FeatureInstanceIds>
<MeasurementDeviceIds>
<MeasurementDeviceId>11</MeasurementDeviceId>
</MeasurementDeviceIds>
<CharacteristicNominalId>32</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>3</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>B3</DrawingZone>
</LocationOnDrawing>
</PointProfileCharacteristicInstance>
<DiameterCharacteristicInstance id="39">
<Notes>
<Note>A bi-directional diameter tolerance</Note>
</Notes>
<Name>6</Name>
<QPId>4e609ab8-7d1c-4317-9b16-5fea194f9d7e</QPId>
<KeyCharacteristic>
<Designator>6</Designator>
<Criticality>MINOR</Criticality>
</KeyCharacteristic>
<FeatureInstanceIds>
<FeatureInstanceId>36</FeatureInstanceId>
</FeatureInstanceIds>
<MeasurementDeviceIds>
<MeasurementDeviceId>11</MeasurementDeviceId>
</MeasurementDeviceIds>
<CharacteristicNominalId>38</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>3</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>C1</DrawingZone>
</LocationOnDrawing>
</DiameterCharacteristicInstance>
<PositionCharacteristicInstance id="43">
<Notes>
<Note>MMC diametrical position to AB(m)C(m)</Note>
</Notes>
<Name>7</Name>
<QPId>4438e85a-441a-420f-93d8-c6ed52fae87e</QPId>
<KeyCharacteristic>
<Designator>7</Designator>
<Criticality>CRITICAL</Criticality>
</KeyCharacteristic>
<FeatureInstanceIds>
<FeatureInstanceId>36</FeatureInstanceId>
</FeatureInstanceIds>
<MeasurementDeviceIds>
<MeasurementDeviceId>44</MeasurementDeviceId>
</MeasurementDeviceIds>
<CharacteristicNominalId>42</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>3</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>C1</DrawingZone>
</LocationOnDrawing>
</PositionCharacteristicInstance>
<DiameterCharacteristicInstance id="50">
<Notes>
<Note>Limit diameter tolerance with caliper </Note>
</Notes>
<Name>8</Name>
<QPId>a5a0d3a2-e6c4-4be9-93fe-18ba95d8372c</QPId>
<KeyCharacteristic>
<Designator>8</Designator>
</KeyCharacteristic>
<FeatureInstanceIds>
<FeatureInstanceId>47</FeatureInstanceId>
</FeatureInstanceIds>
<MeasurementDeviceIds>
<MeasurementDeviceId>51</MeasurementDeviceId>
</MeasurementDeviceIds>
<CharacteristicNominalId>49</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>3</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>C3</DrawingZone>
</LocationOnDrawing>
</DiameterCharacteristicInstance>
<PositionCharacteristicInstance id="57">
<Notes>
<Note>RFS position to AD(l)E(l)</Note>
</Notes>
<Name>9</Name>
<QPId>c79e4f25-f235-4886-88a3-b8a2eeaba096</QPId>
<KeyCharacteristic>
<Designator>9</Designator>
<Criticality>MINOR</Criticality>
</KeyCharacteristic>
<FeatureInstanceIds>
<FeatureInstanceId>47</FeatureInstanceId>
</FeatureInstanceIds>
<MeasurementDeviceIds>
<MeasurementDeviceId>11</MeasurementDeviceId>
</MeasurementDeviceIds>
<CharacteristicNominalId>56</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>3</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>C3</DrawingZone>
</LocationOnDrawing>
</PositionCharacteristicInstance>
<DiameterCharacteristicInstance id="63">
<Name>10</Name>
<QPId>ee9bb7c3-31fb-40a4-841d-4f1b9fc885bd</QPId>
<KeyCharacteristic>
<Designator>10</Designator>
<Criticality>REF</Criticality>
</KeyCharacteristic>
<FeatureInstanceIds>
<FeatureInstanceId>60</FeatureInstanceId>
</FeatureInstanceIds>
<CharacteristicNominalId>62</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>3</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>B2</DrawingZone>
</LocationOnDrawing>
</DiameterCharacteristicInstance>
<DistanceBetweenCharacteristicInstance id="66">
<Notes>
<Note>Distance between HOLE1 and HOLE2</Note>
</Notes>
<Name>DIST1</Name>
<QPId>3e6797f5-b443-4b15-9108-055190223837</QPId>
<KeyCharacteristic>
<Designator>11</Designator>
<Criticality>MINOR</Criticality>
</KeyCharacteristic>
<FeatureInstanceIds>
<FeatureInstanceId>47</FeatureInstanceId>
<FeatureInstanceId>36</FeatureInstanceId>
</FeatureInstanceIds>
<MeasurementDeviceIds>
<MeasurementDeviceId>11</MeasurementDeviceId>
</MeasurementDeviceIds>
<CharacteristicNominalId>65</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>3</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>B2</DrawingZone>
</LocationOnDrawing>
</DistanceBetweenCharacteristicInstance>
</CharacteristicInstances>
</Characteristics>
<UnorderedPlanRoot>
<Steps>
<MeasureEvaluateAll/>
</Steps>
</UnorderedPlanRoot>
</MeasurementPlan>
*** end sample file ***
The execution of the sample plan with the specified measurement equipment might result in a
measurement report file like:
HOLE1 CIRCLE
HOLE2 CIRCLE
The actual information contained in such a report can be merged with information in the original
inspection plan to produce a QMResults instance file.
101 QIF v1.0 – Proposed (ANSI/QIF Part 1 – 2013)
File QMRESULTS_SAMPLE.XML
<ThisResultsInstanceFileQPId>766ef349-65ee-4068-8b58-
8cdae34b364a</ThisResultsInstanceFileQPId>
<FileUnits>
<PrimaryUnits>
<AngleUnit>
<SIUnitName>radian</SIUnitName>
<UnitName>degree</UnitName>
<UnitConversion>
<Factor>0.017453292519943</Factor>
</UnitConversion>
</AngleUnit>
<LengthUnit>
<SIUnitName>meter</SIUnitName>
<UnitName>mm</UnitName>
<UnitConversion>
<Factor>0.001</Factor>
</UnitConversion>
</LengthUnit>
<TemperatureUnit>
<SIUnitName>kelvin</SIUnitName>
<UnitName>celsius</UnitName>
<UnitConversion>
<Factor>1</Factor>
<Offset>273.14999999999998</Offset>
</UnitConversion>
</TemperatureUnit>
</PrimaryUnits>
</FileUnits>
<InspectionTraceability>
<InspectingOrganization>
<Name>Origin International</Name>
<Address>
<StreetNumber>72</StreetNumber>
<Street>Baynards Lane</Street>
<Town>Richmond Hill</Town>
<Region>Ontario</Region>
<PostalCode>L4C 9B8</PostalCode>
<FacsimileNumber>416 410 8313</FacsimileNumber>
<TelephoneNumber>1-800-269-2509</TelephoneNumber>
<ElectronicMailAddress>[email protected]</ElectronicMailAddress>
</Address>
</InspectingOrganization>
<SupplierCode>North_Fab</SupplierCode>
<PurchaseOrderNumber>PO123456</PurchaseOrderNumber>
<ProductInstanceIds>
<PartInstanceId>2</PartInstanceId>
</ProductInstanceIds>
<ReportNumber>QIF 1</ReportNumber>
<InspectionScope>DETAIL</InspectionScope>
<InspectionMode>FAI_Full</InspectionMode>
<ReportPreparer>
<Name>John Doe</Name>
<EmployeeId>123-456</EmployeeId>
</ReportPreparer>
<ReportPreparationDate>2013-07-15T13:23:59</ReportPreparationDate>
<ReferencedQMPlanInstanceQPId>9fcebcb6-99da-44f9-b997-
2ba76fd438dd</ReferencedQMPlanInstanceQPId>
<FormalStandard>
<FormalStandardEnum>ASME-Y14.5-1994</FormalStandardEnum>
</FormalStandard>
</InspectionTraceability>
<DatumDefinitions>
<DatumDefinition id="36">
<DatumLabel>A</DatumLabel>
</DatumDefinition>
<DatumDefinition id="37">
<DatumLabel>B</DatumLabel>
</DatumDefinition>
<DatumDefinition id="38">
<DatumLabel>C</DatumLabel>
</DatumDefinition>
<DatumDefinition id="67">
<DatumLabel>D</DatumLabel>
</DatumDefinition>
<DatumDefinition id="68">
<DatumLabel>E</DatumLabel>
</DatumDefinition>
</DatumDefinitions>
<DatumReferenceFrames>
<DatumReferenceFrame id="9"/>
<DatumReferenceFrame id="35">
<Datum>
<SimpleDatum>
<DatumDefinitionId>36</DatumDefinitionId>
<MaterialModifier>NONE</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>PRIMARY</PrecedenceEnum>
</Precedence>
</Datum>
<Datum>
<SimpleDatum>
<DatumDefinitionId>37</DatumDefinitionId>
<MaterialModifier>NONE</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>SECONDARY</PrecedenceEnum>
</Precedence>
</Datum>
<Datum>
<SimpleDatum>
<DatumDefinitionId>38</DatumDefinitionId>
<MaterialModifier>NONE</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>TERTIARY</PrecedenceEnum>
</Precedence>
</Datum>
</DatumReferenceFrame>
<DatumReferenceFrame id="51">
<Datum>
<SimpleDatum>
<DatumDefinitionId>36</DatumDefinitionId>
<MaterialModifier>NONE</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>PRIMARY</PrecedenceEnum>
</Precedence>
</Datum>
<Datum>
<SimpleDatum>
<DatumDefinitionId>37</DatumDefinitionId>
<MaterialModifier>MAXIMUM</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>SECONDARY</PrecedenceEnum>
</Precedence>
</Datum>
<Datum>
<SimpleDatum>
<DatumDefinitionId>38</DatumDefinitionId>
<MaterialModifier>MAXIMUM</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>TERTIARY</PrecedenceEnum>
</Precedence>
</Datum>
</DatumReferenceFrame>
<DatumReferenceFrame id="66">
<Datum>
<SimpleDatum>
<DatumDefinitionId>36</DatumDefinitionId>
<MaterialModifier>NONE</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>PRIMARY</PrecedenceEnum>
</Precedence>
</Datum>
<Datum>
<SimpleDatum>
<DatumDefinitionId>67</DatumDefinitionId>
<MaterialModifier>LEAST</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>SECONDARY</PrecedenceEnum>
</Precedence>
</Datum>
<Datum>
<SimpleDatum>
<DatumDefinitionId>68</DatumDefinitionId>
<MaterialModifier>LEAST</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>TERTIARY</PrecedenceEnum>
</Precedence>
</Datum>
</DatumReferenceFrame>
</DatumReferenceFrames>
<MeasurementResources>
<MeasurementDevices>
<MeasurementDevice id="12">
<Name>CMM</Name>
</MeasurementDevice>
<MeasurementDevice id="54">
<Name>GAGE PINS</Name>
</MeasurementDevice>
<MeasurementDevice id="63">
<Name>CALIPERS</Name>
</MeasurementDevice>
</MeasurementDevices>
</MeasurementResources>
<ProductGeometriesDefinitions>
<PartGeometriesDefinitions>
<PartGeometryDefinitions id="84">
<PrintedPartDrawing id="3">
<Name>Sheet2_Solid4</Name>
<DrawingNumber>FABCO_58972368</DrawingNumber>
<DrawingVersion>1.2.0.198</DrawingVersion>
<AdditionalChanges>EC1.02</AdditionalChanges>
<Location>Cabinet 17, Drawer 3</Location>
<Description>Sample QIF elements</Description>
</PrintedPartDrawing>
<PartDefinitionId>1</PartDefinitionId>
</PartGeometryDefinitions>
</PartGeometriesDefinitions>
</ProductGeometriesDefinitions>
<Products>
<Parts>
<PartDefinitions>
<PartDefinition id="1">
<Name>WING_MIR_REENF</Name>
<QPId>2bbeb82a-96bf-4f1e-a327-4ba3500490e1</QPId>
<ModelNumber>QM_X_123456</ModelNumber>
<Description>Wing Mirror Re-enforcement</Description>
<Version>1.02</Version>
<PartGeometryDefinitionsId>84</PartGeometryDefinitionsId>
</PartDefinition>
</PartDefinitions>
<PartInstances>
<PartInstance id="2">
<SerialNumber>Run 3, Bin 17</SerialNumber>
<QPId>af4d1612-8918-4a69-a716-709beee7a953</QPId>
<Status>
<InspectionStatusEnum>FAIL</InspectionStatusEnum>
</Status>
<Traceability>
<ManufacturingProcessReference>Press
49</ManufacturingProcessReference>
</Traceability>
<PartDefinitionId>1</PartDefinitionId>
</PartInstance>
</PartInstances>
</Parts>
<RootPartDefinitionId>1</RootPartDefinitionId>
<RootPartInstanceId>2</RootPartInstanceId>
</Products>
<Features>
<FeatureDefinitions>
<EdgePointFeatureDefinition id="4"/>
<PointFeatureDefinition id="14"/>
<PointFeatureDefinition id="30"/>
<CircleFeatureDefinition id="42">
<Diameter>10</Diameter>
</CircleFeatureDefinition>
<CircleFeatureDefinition id="56">
<Diameter>10</Diameter>
</CircleFeatureDefinition>
<CircleFeatureDefinition id="72">
<Diameter>30</Diameter>
</CircleFeatureDefinition>
</FeatureDefinitions>
<FeatureNominals>
<EdgePointFeatureNominal id="5">
<FeatureDefinitionId>4</FeatureDefinitionId>
<Location>
<X>2460.7099609374995</X>
<Y>770.6046142578125</Y>
<Z>944.99359130859398</Z>
</Location>
<Normal>
<I>-0.735465884156759</I>
<J>-0.307902932144912</J>
<K>0.603560864882807</K>
</Normal>
<AdjacentNormal>
<I>-0.735465884156759</I>
<J>-0.307902932144912</J>
<K>0.603560864882807</K>
</AdjacentNormal>
</EdgePointFeatureNominal>
<PointFeatureNominal id="15">
<FeatureDefinitionId>14</FeatureDefinitionId>
<Location>
<X>2466.729248046875</X>
<Y>774.26989746093795</Y>
<Z>945.00274658203091</Z>
</Location>
<Normal>
<I>0.731520704665031</I>
<J>0.146124942551</J>
<K>-0.665976696146977</K>
</Normal>
</PointFeatureNominal>
<PointFeatureNominal id="31">
<FeatureDefinitionId>30</FeatureDefinitionId>
<Location>
<X>2536.494873046875</X>
<Y>782.80621337890568</Y>
<Z>920.00219726562511</Z>
</Location>
<Normal>
<I>-0.7609260410224</I>
<J>-0.648538030188332</J>
<K>-0.019747999732021</K>
</Normal>
</PointFeatureNominal>
<CircleFeatureNominal id="43">
<FeatureDefinitionId>42</FeatureDefinitionId>
<Normal>
<I>0.055815021663966</I>
<J>-0.907624351305543</J>
<K>-0.416056150385791</K>
</Normal>
<Location>
<X>2433.974609375</X>
<Y>800.617431640625</Y>
<Z>890.04962158203102</Z>
</Location>
</CircleFeatureNominal>
<CircleFeatureNominal id="57">
<FeatureDefinitionId>56</FeatureDefinitionId>
<Normal>
<I>0.041855011743973</I>
<J>-0.909169210310978</J>
<K>-0.414318120547998</K>
</Normal>
<Location>
<X>2496.25146484375</X>
<Y>780.84259033203102</Y>
<Z>938.27227783203102</Z>
</Location>
</CircleFeatureNominal>
<CircleFeatureNominal id="73">
<FeatureDefinitionId>72</FeatureDefinitionId>
<Normal>
<I>0.041846787761187</I>
<J>-0.909189553580246</J>
<K>-0.414274307693132</K>
</Normal>
<Location>
<X>2506.6367225154331</X>
<Y>792.99912448828434</Y>
<Z>912.64467696908582</Z>
</Location>
</CircleFeatureNominal>
</FeatureNominals>
<FeatureActuals>
<EdgePointFeatureActual id="7">
<FeatureNominalId>5</FeatureNominalId>
<Location>
<X>2460.7199999999998</X>
<Y>770.62</Y>
<Z>944.98000000000002</Z>
</Location>
<Normal>
<I>-0.735465884156759</I>
<J>-0.307902932144912</J>
<K>0.603560864882807</K>
</Normal>
</EdgePointFeatureActual>
<PointFeatureActual id="17">
<FeatureNominalId>15</FeatureNominalId>
<Location>
<X>2466.9000000000001</X>
<Y>774.30999999999995</Y>
<Z>944.84000000000003</Z>
</Location>
</PointFeatureActual>
<PointFeatureActual id="33">
<FeatureNominalId>31</FeatureNominalId>
<Location>
<X>2537.1700000000001</X>
<Y>783.38</Y>
<Z>920.01999999999998</Z>
</Location>
</PointFeatureActual>
<CircleFeatureActual id="45">
<FeatureNominalId>43</FeatureNominalId>
<Location>
<X>2434.0100000000002</X>
<Y>801.52505599193046</Y>
<Z>889.98000000000002</Z>
</Location>
<Normal>
<I>0.055815021663966</I>
<J>-0.907624351305543</J>
<K>-0.416056150385791</K>
</Normal>
<Diameter>9.499476</Diameter>
</CircleFeatureActual>
<CircleFeatureActual id="59">
<FeatureNominalId>57</FeatureNominalId>
<Location>
<X>2496.3899999999999</X>
<Y>781.7517595423418</Y>
<Z>938.09000000000003</Z>
</Location>
<Normal>
<I>0.041855011743973</I>
<J>-0.909169210310978</J>
<K>-0.414318120547998</K>
</Normal>
<Diameter>10.199987999999999</Diameter>
</CircleFeatureActual>
<CircleFeatureActual id="75">
<FeatureNominalId>73</FeatureNominalId>
<Location>
<X>2506.6367225154331</X>
<Y>792.99912448828434</Y>
<Z>912.64467696908582</Z>
</Location>
<Normal>
<I>0.041846787761187</I>
<J>-0.909189553580246</J>
<K>-0.414274307693132</K>
</Normal>
<Diameter>30</Diameter>
</CircleFeatureActual>
</FeatureActuals>
<FeatureInstances>
<EdgePointFeatureInstance id="6">
<Notes>
<Note>An edge point with uniform profile characteristic</Note>
</Notes>
<FeatureActualId>7</FeatureActualId>
<FeatureName>TRIM1</FeatureName>
<QPId>aeba4615-65db-4f7d-a2e8-a7928c80117f</QPId>
<DeterminationMode>
<Checked>
<CheckDetails>
<Measured/>
</CheckDetails>
</Checked>
</DeterminationMode>
</EdgePointFeatureInstance>
<PointFeatureInstance id="16">
<Notes>
<Note>A point on a surface with coordinate characteristics</Note>
</Notes>
<FeatureActualId>17</FeatureActualId>
<FeatureName>SURF1</FeatureName>
<QPId>263c98a7-9786-4408-b62f-dda79a07daad</QPId>
<DeterminationMode>
<Checked>
<CheckDetails>
<Measured/>
</CheckDetails>
</Checked>
</DeterminationMode>
</PointFeatureInstance>
<PointFeatureInstance id="32">
<Notes>
<Note>A point on a surface with non-uniform profile
characteristic</Note>
</Notes>
<FeatureActualId>33</FeatureActualId>
<FeatureName>SURF2</FeatureName>
<QPId>63799169-1d43-41ee-b1ad-451f9d8a8f4e</QPId>
<DeterminationMode>
<Checked>
<CheckDetails>
<Measured/>
</CheckDetails>
</Checked>
</DeterminationMode>
</PointFeatureInstance>
<CircleFeatureInstance id="44">
<Notes>
<Note>A hole with position and gage-pin diameter</Note>
</Notes>
<FeatureActualId>45</FeatureActualId>
<FeatureName>HOLE1</FeatureName>
<QPId>f29bb618-e50d-4dbb-b4b4-83b28755c741</QPId>
<InternalExternal>INTERNAL</InternalExternal>
<DeterminationMode>
<Checked>
<CheckDetails>
<Measured/>
</CheckDetails>
</Checked>
</DeterminationMode>
</CircleFeatureInstance>
<CircleFeatureInstance id="58">
<Notes>
<Note>A hole with position and caliper diameter</Note>
</Notes>
<FeatureActualId>59</FeatureActualId>
<FeatureName>HOLE2</FeatureName>
<QPId>5bb191b0-7a18-4393-8f24-1353ac8365c7</QPId>
<InternalExternal>INTERNAL</InternalExternal>
<DeterminationMode>
<Checked>
<CheckDetails>
<Measured/>
</CheckDetails>
</Checked>
</DeterminationMode>
</CircleFeatureInstance>
<CircleFeatureInstance id="74">
<Notes>
<Note>A non-measureable reference circle</Note>
</Notes>
<FeatureActualId>75</FeatureActualId>
<FeatureName>REFCIRC1</FeatureName>
<QPId>6443f863-c559-42f2-b62a-48c0172d3395</QPId>
<InternalExternal>NOT_APPLICABLE</InternalExternal>
<DeterminationMode>
<Set/>
</DeterminationMode>
</CircleFeatureInstance>
</FeatureInstances>
</Features>
<Characteristics>
<CharacteristicDefinitions>
<PointProfileCharacteristicDefinition id="8">
<ToleranceValue>4</ToleranceValue>
<DatumReferenceFrameId>9</DatumReferenceFrameId>
</PointProfileCharacteristicDefinition>
<LengthCoordinateCharacteristicDefinition id="18">
<NonTolerance>MEASURED</NonTolerance>
</LengthCoordinateCharacteristicDefinition>
<LengthCoordinateCharacteristicDefinition id="22">
<Tolerance>
<MaxValue>0.2</MaxValue>
<MinValue>-0.2</MinValue>
<DefinedAsLimit>false</DefinedAsLimit>
</Tolerance>
</LengthCoordinateCharacteristicDefinition>
<LengthCoordinateCharacteristicDefinition id="26">
<Tolerance>
<MaxValue>945.20274658203095</MaxValue>
<MinValue>944.80274658203086</MinValue>
<DefinedAsLimit>true</DefinedAsLimit>
</Tolerance>
</LengthCoordinateCharacteristicDefinition>
<PointProfileCharacteristicDefinition id="34">
<ToleranceValue>1.5</ToleranceValue>
<OuterDisposition>1</OuterDisposition>
<DatumReferenceFrameId>35</DatumReferenceFrameId>
</PointProfileCharacteristicDefinition>
<DiameterCharacteristicDefinition id="46">
<Tolerance>
<MaxValue>0.4</MaxValue>
<MinValue>-0.4</MinValue>
<DefinedAsLimit>false</DefinedAsLimit>
</Tolerance>
</DiameterCharacteristicDefinition>
<PositionCharacteristicDefinition id="50">
<ToleranceValue>1</ToleranceValue>
<DatumReferenceFrameId>51</DatumReferenceFrameId>
<MaterialCondition>NONE</MaterialCondition>
<ZoneShape>
<DiametricalZone/>
</ZoneShape>
</PositionCharacteristicDefinition>
<DiameterCharacteristicDefinition id="60">
<Tolerance>
<MaxValue>10.4</MaxValue>
<MinValue>9.6</MinValue>
<DefinedAsLimit>true</DefinedAsLimit>
</Tolerance>
</DiameterCharacteristicDefinition>
<PositionCharacteristicDefinition id="65">
<ToleranceValue>1</ToleranceValue>
<DatumReferenceFrameId>66</DatumReferenceFrameId>
<MaterialCondition>NONE</MaterialCondition>
<ZoneShape>
<DiametricalZone/>
</ZoneShape>
</PositionCharacteristicDefinition>
<DiameterCharacteristicDefinition id="76">
<NonTolerance>SET</NonTolerance>
</DiameterCharacteristicDefinition>
<DistanceBetweenCharacteristicDefinition id="80">
<Tolerance>
<MaxValue>-0.5</MaxValue>
<MinValue>-0.5</MinValue>
<DefinedAsLimit>false</DefinedAsLimit>
</Tolerance>
</DistanceBetweenCharacteristicDefinition>
</CharacteristicDefinitions>
<CharacteristicNominals>
<PointProfileCharacteristicNominal id="10">
<CharacteristicDefinitionId>8</CharacteristicDefinitionId>
</PointProfileCharacteristicNominal>
<LengthCoordinateCharacteristicNominal id="19">
<CharacteristicDefinitionId>18</CharacteristicDefinitionId>
<TargetValue>2466.729248046875</TargetValue>
<Direction>XAXIS</Direction>
</LengthCoordinateCharacteristicNominal>
<LengthCoordinateCharacteristicNominal id="23">
<CharacteristicDefinitionId>22</CharacteristicDefinitionId>
<TargetValue>774.26989746093795</TargetValue>
<Direction>YAXIS</Direction>
</LengthCoordinateCharacteristicNominal>
<LengthCoordinateCharacteristicNominal id="27">
<CharacteristicDefinitionId>26</CharacteristicDefinitionId>
<Direction>ZAXIS</Direction>
</LengthCoordinateCharacteristicNominal>
<PointProfileCharacteristicNominal id="39">
<CharacteristicDefinitionId>34</CharacteristicDefinitionId>
</PointProfileCharacteristicNominal>
<DiameterCharacteristicNominal id="47">
<CharacteristicDefinitionId>46</CharacteristicDefinitionId>
<TargetValue>10</TargetValue>
</DiameterCharacteristicNominal>
<PositionCharacteristicNominal id="52">
<CharacteristicDefinitionId>50</CharacteristicDefinitionId>
</PositionCharacteristicNominal>
<DiameterCharacteristicNominal id="61">
<CharacteristicDefinitionId>60</CharacteristicDefinitionId>
</DiameterCharacteristicNominal>
<PositionCharacteristicNominal id="69">
<CharacteristicDefinitionId>65</CharacteristicDefinitionId>
</PositionCharacteristicNominal>
<DiameterCharacteristicNominal id="77">
<CharacteristicDefinitionId>76</CharacteristicDefinitionId>
<TargetValue>30</TargetValue>
</DiameterCharacteristicNominal>
<DistanceBetweenCharacteristicNominal id="81">
<CharacteristicDefinitionId>80</CharacteristicDefinitionId>
<TargetValue>81.208839738425993</TargetValue>
<AnalysisMode>THREEDIMENSIONAL</AnalysisMode>
</DistanceBetweenCharacteristicNominal>
</CharacteristicNominals>
<CharacteristicActuals>
<PointProfileCharacteristicActual id="13">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicNominalId>10</CharacteristicNominalId>
<NonConformanceDesignator>NA</NonConformanceDesignator>
<Value>-0.020323885080472</Value>
</PointProfileCharacteristicActual>
<LengthCoordinateCharacteristicActual id="21">
<Status>
<CharacteristicStatusEnum>BASIC</CharacteristicStatusEnum>
</Status>
<CharacteristicNominalId>19</CharacteristicNominalId>
<NonConformanceDesignator>NA</NonConformanceDesignator>
<TypeOfCoordinates>
<CoordinateEnum>CARTESIAN_3D</CoordinateEnum>
</TypeOfCoordinates>
<Value>2466.9000000000001</Value>
</LengthCoordinateCharacteristicActual>
<LengthCoordinateCharacteristicActual id="25">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicNominalId>23</CharacteristicNominalId>
<NonConformanceDesignator>NA</NonConformanceDesignator>
<TypeOfCoordinates>
<CoordinateEnum>CARTESIAN_3D</CoordinateEnum>
</TypeOfCoordinates>
<Value>774.30999999999995</Value>
</LengthCoordinateCharacteristicActual>
<LengthCoordinateCharacteristicActual id="29">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicNominalId>27</CharacteristicNominalId>
<NonConformanceDesignator>NA</NonConformanceDesignator>
<TypeOfCoordinates>
<CoordinateEnum>CARTESIAN_3D</CoordinateEnum>
</TypeOfCoordinates>
<Value>944.84000000000003</Value>
</LengthCoordinateCharacteristicActual>
<PointProfileCharacteristicActual id="41">
<Status>
<CharacteristicStatusEnum>FAIL</CharacteristicStatusEnum>
</Status>
<CharacteristicNominalId>39</CharacteristicNominalId>
<NonConformanceDesignator>1234</NonConformanceDesignator>
<Value>-0.886195693015566</Value>
</PointProfileCharacteristicActual>
<DiameterCharacteristicActual id="49">
<Status>
<CharacteristicStatusEnum>FAIL</CharacteristicStatusEnum>
</Status>
<CharacteristicNominalId>47</CharacteristicNominalId>
<NonConformanceDesignator>1234</NonConformanceDesignator>
<Value>9.499476</Value>
</DiameterCharacteristicActual>
<PositionCharacteristicActual id="55">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicNominalId>52</CharacteristicNominalId>
<NonConformanceDesignator>NA</NonConformanceDesignator>
<Value>0.897298445619386</Value>
</PositionCharacteristicActual>
<DiameterCharacteristicActual id="64">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicNominalId>61</CharacteristicNominalId>
<NonConformanceDesignator>NA</NonConformanceDesignator>
<Value>10.199987999999999</Value>
</DiameterCharacteristicActual>
<PositionCharacteristicActual id="71">
<Status>
<CharacteristicStatusEnum>FAIL</CharacteristicStatusEnum>
</Status>
<CharacteristicNominalId>69</CharacteristicNominalId>
<NonConformanceDesignator>1234</NonConformanceDesignator>
<Value>1.137681133150095</Value>
</PositionCharacteristicActual>
<DiameterCharacteristicActual id="79">
<Status>
<CharacteristicStatusEnum>BASIC</CharacteristicStatusEnum>
</Status>
<CharacteristicNominalId>77</CharacteristicNominalId>
<Value>30</Value>
</DiameterCharacteristicActual>
<DistanceBetweenCharacteristicActual id="83">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicNominalId>81</CharacteristicNominalId>
<Value>81.220808617516994</Value>
</DistanceBetweenCharacteristicActual>
</CharacteristicActuals>
<CharacteristicInstances>
<PointProfileCharacteristicInstance id="11">
<Notes>
<Note>A uniform profile zone ±2.0 with empty DRF</Note>
</Notes>
<Name>5</Name>
<QPId>6f2a6f83-3ff7-4327-b00c-98208361301a</QPId>
<KeyCharacteristic>
<Designator>5</Designator>
<Criticality>MINOR</Criticality>
</KeyCharacteristic>
<FeatureInstanceIds>
<FeatureInstanceId>6</FeatureInstanceId>
</FeatureInstanceIds>
<MeasurementDeviceIds>
<MeasurementDeviceId>12</MeasurementDeviceId>
</MeasurementDeviceIds>
<CharacteristicActualId>13</CharacteristicActualId>
<LocationOnDrawing>
<DrawingId>3</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>C2</DrawingZone>
</LocationOnDrawing>
</PointProfileCharacteristicInstance>
<LengthCoordinateCharacteristicInstance id="20">
<Notes>
<Note>A basic coordinate dimension</Note>
</Notes>
<Name>1</Name>
<QPId>92de9383-78d1-42fc-8b05-17f110dd41f2</QPId>
<KeyCharacteristic>
<Designator>1</Designator>
<Criticality>REF</Criticality>
</KeyCharacteristic>
<FeatureInstanceIds>
<FeatureInstanceId>16</FeatureInstanceId>
</FeatureInstanceIds>
<MeasurementDeviceIds>
<MeasurementDeviceId>12</MeasurementDeviceId>
</MeasurementDeviceIds>
<CharacteristicActualId>21</CharacteristicActualId>
<LocationOnDrawing>
<DrawingId>3</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>D3</DrawingZone>
</LocationOnDrawing>
</LengthCoordinateCharacteristicInstance>
<LengthCoordinateCharacteristicInstance id="24">
<Notes>
<Note>A bi-directional coordinate tolerance</Note>
</Notes>
<Name>2</Name>
<QPId>92de9383-78d1-42fc-8b05-17f110dd41f2</QPId>
<KeyCharacteristic>
<Designator>2</Designator>
<Criticality>MINOR</Criticality>
</KeyCharacteristic>
<FeatureInstanceIds>
<FeatureInstanceId>16</FeatureInstanceId>
</FeatureInstanceIds>
<MeasurementDeviceIds>
<MeasurementDeviceId>12</MeasurementDeviceId>
</MeasurementDeviceIds>
<CharacteristicActualId>25</CharacteristicActualId>
<LocationOnDrawing>
<DrawingId>3</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>D3</DrawingZone>
</LocationOnDrawing>
</LengthCoordinateCharacteristicInstance>
<LengthCoordinateCharacteristicInstance id="28">
<Notes>
</Notes>
<Name>6</Name>
<QPId>4e609ab8-7d1c-4317-9b16-5fea194f9d7e</QPId>
<KeyCharacteristic>
<Designator>6</Designator>
<Criticality>MINOR</Criticality>
</KeyCharacteristic>
<FeatureInstanceIds>
<FeatureInstanceId>44</FeatureInstanceId>
</FeatureInstanceIds>
<MeasurementDeviceIds>
<MeasurementDeviceId>12</MeasurementDeviceId>
</MeasurementDeviceIds>
<CharacteristicActualId>49</CharacteristicActualId>
<LocationOnDrawing>
<DrawingId>3</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>C1</DrawingZone>
</LocationOnDrawing>
</DiameterCharacteristicInstance>
<PositionCharacteristicInstance id="53">
<Notes>
<Note>MMC diametrical position to AB(m)C(m)</Note>
</Notes>
<Name>7</Name>
<QPId>4438e85a-441a-420f-93d8-c6ed52fae87e</QPId>
<KeyCharacteristic>
<Designator>7</Designator>
<Criticality>CRITICAL</Criticality>
</KeyCharacteristic>
<FeatureInstanceIds>
<FeatureInstanceId>44</FeatureInstanceId>
</FeatureInstanceIds>
<MeasurementDeviceIds>
<MeasurementDeviceId>54</MeasurementDeviceId>
</MeasurementDeviceIds>
<CharacteristicActualId>55</CharacteristicActualId>
<LocationOnDrawing>
<DrawingId>3</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>C1</DrawingZone>
</LocationOnDrawing>
</PositionCharacteristicInstance>
<DiameterCharacteristicInstance id="62">
<Notes>
<Note>Limit diameter tolerance with caliper </Note>
</Notes>
<Name>8</Name>
<QPId>a5a0d3a2-e6c4-4be9-93fe-18ba95d8372c</QPId>
<KeyCharacteristic>
<Designator>8</Designator>
</KeyCharacteristic>
<FeatureInstanceIds>
<FeatureInstanceId>58</FeatureInstanceId>
</FeatureInstanceIds>
<MeasurementDeviceIds>
<MeasurementDeviceId>63</MeasurementDeviceId>
</MeasurementDeviceIds>
<CharacteristicActualId>64</CharacteristicActualId>
<LocationOnDrawing>
<DrawingId>3</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>C3</DrawingZone>
</LocationOnDrawing>
</DiameterCharacteristicInstance>
<PositionCharacteristicInstance id="70">
<Notes>
<Note>RFS position to AD(l)E(l)</Note>
</Notes>
<Name>9</Name>
<QPId>c79e4f25-f235-4886-88a3-b8a2eeaba096</QPId>
<KeyCharacteristic>
<Designator>9</Designator>
<Criticality>MINOR</Criticality>
</KeyCharacteristic>
<FeatureInstanceIds>
<FeatureInstanceId>58</FeatureInstanceId>
</FeatureInstanceIds>
<MeasurementDeviceIds>
<MeasurementDeviceId>12</MeasurementDeviceId>
</MeasurementDeviceIds>
<CharacteristicActualId>71</CharacteristicActualId>
<LocationOnDrawing>
<DrawingId>3</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>C3</DrawingZone>
</LocationOnDrawing>
</PositionCharacteristicInstance>
<DiameterCharacteristicInstance id="78">
<Name>10</Name>
<QPId>ee9bb7c3-31fb-40a4-841d-4f1b9fc885bd</QPId>
<KeyCharacteristic>
<Designator>10</Designator>
<Criticality>REF</Criticality>
</KeyCharacteristic>
<FeatureInstanceIds>
<FeatureInstanceId>74</FeatureInstanceId>
</FeatureInstanceIds>
<CharacteristicActualId>79</CharacteristicActualId>
<LocationOnDrawing>
<DrawingId>3</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>B2</DrawingZone>
</LocationOnDrawing>
</DiameterCharacteristicInstance>
<DistanceBetweenCharacteristicInstance id="82">
<Notes>
<Note>Distance between HOLE1 and HOLE2</Note>
</Notes>
<Name>DIST1</Name>
<QPId>3e6797f5-b443-4b15-9108-055190223837</QPId>
<KeyCharacteristic>
<Designator>11</Designator>
<Criticality>MINOR</Criticality>
</KeyCharacteristic>
<FeatureInstanceIds>
<FeatureInstanceId>58</FeatureInstanceId>
<FeatureInstanceId>44</FeatureInstanceId>
</FeatureInstanceIds>
<MeasurementDeviceIds>
<MeasurementDeviceId>12</MeasurementDeviceId>
</MeasurementDeviceIds>
<CharacteristicActualId>83</CharacteristicActualId>
<LocationOnDrawing>
<DrawingId>3</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>B2</DrawingZone>
</LocationOnDrawing>
</DistanceBetweenCharacteristicInstance>
</CharacteristicInstances>
</Characteristics>
<InspectionStatus>
<InspectionStatusEnum>FAIL</InspectionStatusEnum>
</InspectionStatus>
</MeasurementResults>
DMSC volunteer agreement: “You hereby agree, by your participation in any activity of this
standards committee (including committee meeting attendance, email exchanges, phone
conversations, or document generation), that you will not disclose any corporate confidential
information or corporate trade secrets either verbally or in writing. Furthermore, any
information disclosed to you in any activity of this standards committee, or disclosed to you in
documents produced by this committee, will be provided to you for the sole purpose of
establishing an industry-wide standard pursuant to the procedures prescribed by ANSI and
ISO. You therefore agree not to use this information, or to collaborate in its use, in any manner
that might suggest you have any proprietary rights to such information, such as rights to a
patent, trademark, or copyright.”
Figure C.1 shows a high level view of the future roadmap of the QIF Applications information
models, as the QIF Metrology Life Saver diagram. At its core is the reusable QIF Library which
contains components that are referenced throughout the comprehensive quality information
model thereby ensuring interoperability and extensibility. Around the QIF Lifesaver core are the
QIF application areas. The two major QIF application areas being progressed for this standard
release are the QMPlans model and the QMResults model, both of which reuse the QIF Library
information.
In calendar year 2013 the DMSC's QMDirectives Working Group began developing the Product
Definition with Product and Manufacturing Information (PDPMI) information model. The PDPMI
information model will transfer digital model-based product definition with PMI data using
information items in the QIF Library (for example, feature, characteristic, and product). Once
that PDPMI information has been represented in XML using information items in the QIF
Library, QMPlans and other applications will be able to take advantage of it. However this does
not preclude a QMPlans system from using the PDPMI information directly or require that a
PDPMI XML file be the Model-Based Definition used by a plan.
The QMResources information model will include hardware and software resources available,
either serial-number specific, or generic, that can be harnessed to meet the inspection
requirements.
The QMRules information model will include, for each possible feature type on a part, the
information elements required to fully specify and constrain the measurement on that feature
type. The information elements will include things like measurement point density, measurement
path constraints, sensor types, and measurement throughput constraints
The QMStatistics scope will include summary statistics, typically from multiple parts and
features, of quality measurements of dimensional and non-dimensional entities. Subjects out of
scope include individual raw measurement values.
This diagram is very similar to Figure 2, except that some of the information flow arrows have
been replaced by one of the four future QIF information specifications.
The activity that generates QMResources is not shown, but can be named as Define
Measurement Resources. This activity defines hardware and software resources available,
either serial-number specific, or generic, that can be harnessed to meet the inspection
requirements. The scope of the QMResources application area includes:
definition of resources both hardware and software,
DMEs,
application software,
fixtures,
go-no-go gages,
manual instruments.
The QMResources data format can be used to specify resources in context of an inspection
plan, or the resources actually used in an inspection.
The activity that generates QMRules is not shown, but can be named as Define Measurement
Rules. This activity generates e.g., practices required by a company at the inspection level.
QMRules information model scope: For each possible feature type on a part, QMRules will
define the information elements required to fully specify and constrain the measurement on that
feature type. The information elements will include things like measurement point density,
measurement path constraints, sensor types, and measurement throughput constraints.
Information areas that are in scope include:
Product measurement path and sampling method for each product feature type
Product measurement constraints and requirements
Rule ID and corporate ownership
Throughput constraints
This workflow model is an example of possible QIF workflow, and portrays a slightly different
view than shown in Figure 1. QIF was designed to not restrict information flow architecture;
usage can be determined by users. However the content of QMPlans and QMResults instance
files is rigidly defined by their information models and the rules in the XML schema files. We
model a manufacturing quality system in six components as shown in Figure D.1. Product
Definition, Quality Requirements Definition, Measurement Planning, Measurement
Programming, Measurement Execution, and Quality Results Analysis and Reporting. Figure D.1
shows an example of data flow using QIF formats.
Figure D.1. Example of QIF V1.0 Workflow. The QIF Library defines data elements that may
be shared among the application areas QMPlans and QMResults. DMIS is not a QIF
specification, but QIF has been harmonized with DMIS to ensure that QMPlans can express all
data needed to generate DMIS files, and that all data defined in DMIS can be expressed using
QMResults instance files.
Product Definition generates a part design, typically using computer aided design (CAD)
software. The part design may contain PMI.
Quality Requirements Definition adds additional PMI to the part design data if needed. PMI
commonly includes information such as material, surface texture, roughness, color, hardness,
and geometric dimensioning and tolerancing (GD&T) information. GD&T includes associations
between geometric elements of the product and dimensions, tolerances, and datums.
The Measurement Planning activity takes into consideration the availability of quality
measurement resources and rules, to generate measurement plans formatted according to the
QMPlans information model. These high level plans identify the measurement features and
their characteristics. The plans may also specify the measuring sequence and resources to be
used, but are not required to do so. The QIF Part 3 document describes the QMPlans
information model in detail. In general, the scope of the QMPlans application area includes all
product characteristic and quality management information required by quality measurement
programs to be executed on quality measurement equipment. QMPlans V1.0 consists of
product characteristics, features, and associated tolerance values and does not include all
information necessary to create a quality program; QMPlans V1.0 does not include information
on measurement rules. Information that is in scope for QMPlans V1.0 includes:
Dimensional product information, e.g., geometric features, measurement features,
nominal dimensions, measurement features, and tolerance values
Non-dimensional product information, e.g., product IDs, customer information, key
contact, temperature, reflectance, and malleability
Product characteristics
Traceability values and pointers
Work instructions
CAD entity relationships
The Measurement Programming activity assigns inspection operations to specific resources and
generates programs that are compatible with those resources. The programs are machine-level
measurement programs, formatted according to DMIS or some other measurement
programming language, that provide detailed measurement operation information (e.g., probing
points, scanning routes).
An example of user defined flow of QIF information not shown in Figure D.1 is the direct use by
a human inspector of a QMPlans file to inspect a part. The operator makes the decisions of
Measurement Programming like selecting the inspection device (e.g., caliper, fixtures, go-no go
gages) and generating the inspection details (e.g., number of points, placement of
measurements).
Part inspection is carried out by the Measurement Execution activity, whose responsibility is
typically to interpret the machine-level measurement programs, give equipment level commands
to specific coordinate measuring machine (CMM) control units, collect point data, fit features to
data, and output feature and characteristic data formatted according to the QMResults
information model. Measurement Execution can also include software solutions that issue
instructions to human operators using calipers, go/no-go gauges, and specialized inspection
equipment, and generate results data in QMResults format. Actual measurement values may
be numerical or non-numerical. Measurement results may include not only raw measurement
values, but also summary statistical or derived results (e.g., cylinder radius with standard
deviation). Measurement results may also include description of the algorithmic means (e.g.,
QIF v1.0 – Proposed (ANSI/QIF Part 1 – 2013) 128
least squares) by which the derived results are calculated. All necessary nominal (as designed)
target values may also be included to allow reanalysis. Any other information relevant to the
measurements is also in scope. This includes information such as the shift, the equipment
operator’s name, a description of the item measured, the date and time of the measurement,
etc.
Quality information generated in QIF format can be used as input by many other quality and
manufacturing management components including, but not limited to, first article inspection plan
and report generation, statistical process control (SPC), materials resource planning (MRP),
measurement systems analysis (MSA), manufacturing execution systems (MES), and computer
aided manufacturing (CAM). Additional data flows are not shown because it is a design goal of
QIF to not constrain the architecture of systems that will exchange QIF data. The QIF
specification only describes the content of the QIF library, and information models of each
application area. Users of QIF data may generate it, or consume it, in any manner that is useful.
Bibliography
[1] SAE AS9102a (2004-01), Aerospace First Article Inspection Requirement
[2] Walmsley, Priscilla., 2002. Definitive XML Schema. Prentice Hall, Upper Saddle River, NJ,
USA.