Qif3.0 2018 Ansi
Qif3.0 2018 Ansi
www.QIFStandards.org
Copyright by the DMSC. Permission is hereby granted, free of charge, to make copies of this
document and use the content in any manner as long as this copyright notice and permission
notice are included in every copy.
Contents
Foreword.................................................................................................................................xxiii
3.1 Terms defined in ISO 22093:2011 and ANSI/DMIS 105.3-2016, Part 1 ....................... 6
3.2.1 attribute................................................................................................................. 6
3.2.2 complexType ........................................................................................................ 6
3.2.3 element ................................................................................................................. 7
3.2.4 instance file ........................................................................................................... 7
3.3 Terms defined in XML Schema Part 1: Structures Second Edition, W3C
Recommendation 28 October 2004 ........................................................................................ 7
3.4.29 characteristic........................................................................................................11
3.4.30 characteristic item ................................................................................................11
3.4.31 charge coupled device camera sensor .................................................................11
3.4.32 checked ...............................................................................................................11
3.4.33 clipping plane .......................................................................................................11
3.4.34 complex tactile probe sensor ...............................................................................11
3.4.35 component ...........................................................................................................12
3.4.36 composite feature ................................................................................................12
3.4.37 computed tomography .........................................................................................12
3.4.38 confocal chromatic sensor ...................................................................................12
3.4.39 constructed feature ..............................................................................................12
3.4.40 control limits .........................................................................................................12
3.4.41 control points .......................................................................................................12
3.4.42 coordinate measuring machine ............................................................................12
3.4.43 control polygon ....................................................................................................12
3.4.44 corrective action...................................................................................................12
3.4.45 corrective action plan ...........................................................................................12
3.4.46 data/information quality ........................................................................................13
3.4.47 datum definition ...................................................................................................13
3.4.48 datum reference frame.........................................................................................13
3.4.49 dial caliper ...........................................................................................................13
3.4.50 digital caliper ........................................................................................................13
3.4.51 digital micrometer ................................................................................................13
3.4.52 draw wire sensor..................................................................................................13
3.4.53 DVRT sensor .......................................................................................................13
3.4.54 eddy current sensor .............................................................................................13
3.4.55 entity ....................................................................................................................13
3.4.56 evaluation ............................................................................................................14
3.4.57 event ....................................................................................................................14
3.4.58 external product definition ....................................................................................14
3.4.59 feature .................................................................................................................14
3.4.60 file unit .................................................................................................................14
3.4.61 fixture ...................................................................................................................14
6.1.1 Changes in the QIF Library from QIF Version 2.1 ..............................................131
6.2 Auxiliary.xsd..............................................................................................................132
6.3 Characteristics.xsd....................................................................................................132
6.9 Primitives.xsd............................................................................................................150
6.15.1 FileUnits.............................................................................................................160
6.15.2 Conversions .......................................................................................................162
6.15.3 FileUnitsExample ...............................................................................................163
6.15.4 Instance File Example Using Units.....................................................................164
6.16 Visualization.xsd .......................................................................................................165
8.8 Item tracking and persistence between QIF Plans and QIF Results ..........................381
Bibliography ............................................................................................................................537
Figures
Figure 1 – QIF version 3.0 information architecture .................................................................... 2
Figure 2 – QIF Model-Based Quality Workflow..........................................................................27
Figure 3 – QIF XML schema directory structure ........................................................................38
Figure 4 – Structure of the QIFDocument element ...................................................................40
Figure 5 – Reference connections among feature data objects in a QIF XML instance file .......43
TABLES
Table 1 – XSLT Checks ............................................................................................................31
Table 2 – Weld Parameters.......................................................................................................80
Table 3 – Material Condition Values..........................................................................................94
Table 4 – Binary Arrays...........................................................................................................174
Table 5 – Binary Representation .............................................................................................174
Table 6 – Line Styles...............................................................................................................314
Table 7 – Special Symbols ......................................................................................................318
Table 8 – Leader Head Types .................................................................................................326
Table 9 − Statistical values and their associated mnemonics. .................................................440
Table 10 − Statistical summary values and their associated mnemonics. ...............................442
Table 11 − Subgroup statistical values and their associated mnemonics. ...............................449
Foreword
The Digital 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) Technical Committee (TC) 184. The
mission of the DMSC is to identify urgently needed digital 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 version 3.0 of the QIF standard include:
Capvidia
Datapixel
Honeywell Federal Manufacturing and Technology
John Deere
Metrosage
Mitutoyo America
National Institute of Standards and Technology
Origin International
QIF Solutions
The Manufacturing Technology Centre
University of North Carolina at Charlotte
This document was written by the QIF Working Group, and given final approval for ANSI review
by the DMSC’s Quality Measurement Standards (QMS) Committee. More information about
DMSC's QIF effort can be found at www.qifstandards.org.
The QIF standard, version 3.0, consists of the following subject areas under the general title
Quality Information Framework (QIF) — An Integrated Model for Manufacturing Quality
Information:
The Overview and Library clauses describe the overview and central concepts of the QIF
standard. The following clauses describe information models for the six application areas of
QIF; Model Based Design, Plans, Resources, Rules, Results, and Statistics.
This version of QIF, designated ANSI/QIF 3.0 – 2018, is a revision of the previous QIF standard,
version 2.1, which was published in 2015. This document comprises the fourth release of the
QIF suite of standards, denoted version 3.0. This QIF version 3.0 document cancels and
replaces all documents of version 2.1. QIF version 3.0 is solely a product of the DMSC and its
committees and working groups.
Each major release of the QIF standard from 1.0 through 2.1 was composed of eight Parts
documents, namely, Part 1 Overview, Part 2 QIF Library, Part 3 MBD, Part 4 Plans, Part 5
Resources, Part 6 Rules, Part 7 Results, and Part 8 Statistics. Version 3.0 of QIF dispenses
with the separate Parts format and includes all subject area clauses in a single document.
The DMSC will make available an html-file based data dictionary for the entire QIF information
model as an aid to understanding QIF. This data dictionary is non-normative material, but
describes the normative content of the QIF data model. The html files facilitate viewing the
complete data model, including all six application areas and 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 and reporting. This clause 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). Additional constraints to ensure
data quality are contained in files written in the EXtensible Stylesheet Transformation language
(XSLT). The models for Version 3.0 consist of six application schema files plus a library of
schema files containing information items used by all applications. The Library is described in
Clause 6 of this standard. Clause 7 defines the Model Based Definition application model which
deals with CAD data plus product manufacturing information (PMI). Clause 8 defines the QIF
Plans application model, which deals with plans for quality measurement. Clause 9 defines the
QIF Resources application model, which describes hardware and software resources used for
inspection. Clause 10 defines the QIF Rules application model which describes practices to be
used in an inspection. Clause 11 defines the QIF Results application model which deals with the
results of part measurements. Clause 12 defines the QIF Statistics application model which
conveys analysis of multiple part inspections.
The QIF models include quality characteristics and measurement features as defined in the
ASME Geometric Dimensioning and Tolerancing (GD&T) related and ISO Geometrical Product
Specifications (GPS) related specifications, 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.
This clause also describes practices for forming QIF instance files, called “documents,” that
support quality workflow scenarios. Its focus is to show how the QIF information model, and
data formed into XML instance files, support the entire scope of model based definition
manufacturing quality workflow. It describes how the information model is partitioned among the
XML schema files and contains all terms used in the subject area clauses.
The purpose of this clause 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 ASME GD&T
and ISO GPS, and the plans and results data elements defined in Dimensional Measuring
Interface Standards (DMSI) ISO 22093 and ANSI/DMSC DMIS 5.3. 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 software that
writes and reads manufacturing quality data using the XML schemas.
The flow of QIF data typically starts with generation of CAD + PMI data exported as QIF MBD
application data. Then Quality planning systems import the MBD and generate measurement
requirements as part of the Plans of “what” to measure, then with import of Resources and
Rules information, Plans generate an inspection plan on “how” to verify. Then Programming
systems import Plans to generate DME-specific programs, or general instructions to guide
inspection. Dimensional measurement equipment executes programs and evaluates
characteristics of a single manufactured part or assembly and exports the measurements as
Results. Analysis systems, typically performing statistical process control, import single parts
Results and generate analysis of multiple part batches as QIF Statistics data.
Users of the QIF information model are not required to implement the entire model. Any of the
six application models may be used singly for exchange of quality data in its specific application
area between a software system that produces QIF data for that area and a software system
that consumes QIF data for the area. Further, other data models and exchange formats can
coexist in an enterprise with QIF data.
1.3 Conformance
Software programs that implement this specification to write QIF XML instance files must:
follow the rules of XML when writing QIFDocument instance files
generate instance files that validate against the QIFDocument schema
generate instance files that validate against the Check.xsl XSLT constraints
employ semantics of the information written that complies with the referenced standards
and with the QIF data dictionaries 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.
2 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.
AIAG MSA Reference Manual 4th Edition, Automotive Industry Action Group Measurement
Systems Analysis
AIAG SPC – Automotive Industry Action Group Statistical Process Control 2nd Edition
ANSI/DMIS 105.3, Part 1-2016, Dimensional Measuring Interface Standard, DMIS 5.3 Standard,
Part 1
ISO DMIS: 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
AWS A2.4:2012 Standard Symbols for Welding, Brazing, and Nondestructive Examination
Extensible Markup Language (XML) 1.0 (Fifth Edition), W3C Recommendation 26 November
2008
ISO/IEC JCGM 200 – International vocabulary of metrology – Basic and general concepts and
associated terms (VIM)
ISO/IEC Guide 99:2007 (E/F) – International vocabulary of metrology – Basic and general
concepts and associated terms (VIM)
SAE Aerospace Standard, AS9102B: Aerospace First Article Inspection Requirement. 2014.
ITU-T X.509 | ISO/IEC 9594-8 (10/2012) Public-key and attribute certificate frameworks
XML Schema Part 1: Structures Second Edition, W3C Recommendation 28 October 2004
XML Schema Part 2: Datatypes Second Edition, W3C Recommendation 28 October 2004
3.1.1 actual
referring to features or tolerances, the actuals are the real-world, physical instances which can
be measured creating feature and tolerance measurements.
Note 1 to entry: Referring to parts and assemblies, the actuals are physical instances
called actual components.
Note 1 to entry: DME includes, but is not limited to, coordinate measuring machines,
video inspection equipment, optical comparators, robotic measuring devices, theodolites,
photogrammetry, laser-based measuring devices, and manual measuring devices such as
micrometer and caliper.
3.1.3 nominal
a target value of a dimension, feature, or characteristic
3.1.4 measurement
referring to a feature, dimension, or tolerance, an approximate representation or value inferred
from the actual feature, dimension or tolerance by measurement with DME
3.2 Terms defined in XML Schema Part 0: Primer Second Edition, W3C
Recommendation 28 October 2004
3.2.1 attribute
information represented as an XML attribute in an instance file, usually conforming to an
attribute declaration in an XML schema
3.2.2 complexType
a value type that has elements or attributes
3.2.3 element
information represented as an XML element in an instance file, usually conforming to an
element declaration in an XML schema
Note 1 to entry: often shortened to “element.” An element information item may be a field
of a data structure or an entire data structure. The data type of an element may be either a
primitive type (such as string or number) or a structured type. In an XML instance file, elements
are delimited by matching opening and closing tags.
3.3.3 enumeration
a term indicating that a single indivisible value follows
3.3.4 extension
a term in a complexType definition indicating that the type being defined is derived from a more
general type
Note 1 to entry: 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.
3.3.5 key
a constraint requiring that selected data fields exist and be unique
Note 1 to entry: In XSDL, a key may require that a combination of data fields be unique,
but QIF never uses more than a single data field.
3.3.6 keyref
a constraint requiring that there is a match between two sets of values in an instance file
Note 1 to entry: Such a file does not necessarily contain a complete information model; it
may reference other schema files needed to make the model complete.
Note 1 to entry: In XSDL, union type is also simple, but it is not used in QIF.
3.3.10 string
a data type that is a sequence of Unicode characters
3.3.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
3.4.2 action
a plan element that gives information about what to measure or validate
Note 1 to entry: An action group can be an ordered group, unordered group, one-of group,
partially ordered group, or pick-some group.
Note 1 to entry: Actions with action methods form the core of a measurement plan.
Note 1 to entry: By analogy to a car, the design of a wheel is a part; the design of the
wheel placed at the front right of the design of a car is a component; the front right wheel of a
physical car is an actual component.
3.4.9 aspect
one of four categories used to incrementally accumulate characteristic or feature data based on
data source and data shareability
Note 1 to entry: In QIF there are four aspects of characteristics and features: definition,
nominal, item, and measured.
3.4.14 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
Note 1 to entry: In QIF, assembly means the design of an assembly, and a physical
instance of an assembly is called an actual component.
Note 1 to entry: An assembly path shows where in an assembly design a specific instance
of a part design or a subassembly design is located
3.4.19 autocollimator
an optical instrument for non-contact measurement of angles
3.4.20 bias
a measure of a gage’s tendency toward specific values when compared to a master value
EXAMPLE “The feature is a cylinder” would evaluate to “true” if and only if the feature in
question is a cylinder feature.
3.4.23 calibration
a process that verifies instrument performance or develops correction values to assure claimed
accuracy
3.4.24 caliper
a device used to measure distance between two points on a workpiece
3.4.25 capability
a measure of a process‘s stability and centralization against a nominal value and tolerance
values, also, the ability of a process to produce acceptable parts
3.4.27 carriage
a mechanical element of a measurement device, generally a CMM, that functions as part of the
tool-carrying structure
3.4.29 characteristic
a control placed on an element of a feature such as its size, location or form, which may be a
specification limit, a nominal with tolerance, a feature control frame, or some other numerical or
non-numerical control
3.4.32 checked
refers to a measured feature or characteristic being measured directly or being constructed from
previously measured or constructed data
3.4.35 component
an instance of a part or an assembly aligned to its parent's space
Note 1 to entry: Contrast to a measured feature, which is computed from measured point
data.
Note 1 to entry: Processes that are out of control are said to have unnatural causes or
assignable causes of variation.
Note 1 to entry: In production statistical studies, a key aspect of manufacturing process control
is the identification of assignable causes of variation that can occur. These special causes of
variation are typically associated with corrective action plans that help the manufacturing
operator with the ability to adjust processes to eliminate these unnatural causes of variation
from occurring again thereby bringing the manufacturing process into a greater state of stability
and control.
3.4.55 entity
the basic unit of information in a file
Note 1 to entry: The term applies to single items which may be individual elements of
geometry, collections of annotations to form dimensions, or collections of entities to form
structured entities.
3.4.56 evaluation
refers to the process by which the status of a characteristic measurement is determined from
nominal, measured and specification limit information
3.4.57 event
an occurrence, usually unplanned, which may have an effect on the outcome of a measurement
or inspection operation and which should be recorded
3.4.59 feature
an aspect of a part which can be (1) a tangible portion of a physical part, (2) an element of a
technical drawing, 3D model, or other abstract representation of the part, or (3) a derived,
constructed, intangible portion of a part, such as a feature of size, minimum circumscribed
sphere, maximum inscribed cylinder, axis, center plane, theoretically extended edge on a
technical drawing, and projected point/line from the part.
3.4.61 fixture
a device used for workpiece positioning and holding
3.4.62 gage
a measurement device that is used to measure one or more characteristics of a workpiece
Note 1 to entry: It may be a general purpose device, e.g. a ring gage, or it may be
specially designed hardware dedicated to measuring a specific workpiece or family of
workpieces.
3.4.64 generatrix
a curve to be swept to generate an extruded surface, or revolved to generate a surface of
revolution
Note 1 to entry: Usually, this is a portion of the surface of a part that is not correctly
described by any other feature type.
3.4.66 geometric
related to shape information
3.4.68 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
3.4.71 item
an aspect of a characteristic or feature, or an individual instance of an object.
Note 1 to entry: A key characteristic can be identified by a designator and can have a
criticality class.
Note 1 to entry: The number of knots is equal to the number of control points plus the
order. The knot vector is a uniform one if all knots are equally spaced and of multiplicity one.
3.4.78 linearity
the ability of a gage to accurately measure across a range of values
3.4.83 measurand
quantity intended to be measured
Note 2 to entry: 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..
3.4.85 measurement
an estimate of a dimension associated with a feature or features on a physical part generated
using a physical device
Note 1 to entry: This indication may either be a value (variables) or simply conformance
(attributes).
3.4.91 mesh
a collection of vertices, edges, and facets linked together to form a 3D shape; the facets are
typically triangular in shape, but quadrilateral representations are also possible
3.4.92 micrometer
a mechanical device for measuring very small distances based on the rotation of a finely
threaded screw
3.4.93 microscope
an optical instrument used for viewing very small workpieces typically magnified several
hundred times
3.4.96 normal
perpendicular to a surface and pointing away from the surface material
3.4.99 note
an explanatory or descriptive statement in natural language
Note 1 to entry: In QIF, notes provide information in addition to that which is formally
modeled.
3.4.103 part
one item, or two or more items joined together, that is not normally subject to disassembly
without destruction or impairment of designed use
Note 1 to entry: In QIF, part means the design of a part, and a physical instance of a part
is called an actual component.
Note 1 to entry: The range of possible values is taken from ISO-14406:2010. Examples
include: an orthogonal grid, a helix, a “birdcage“, etc.
3.4.110 product
a generic term for a part or an assembly
Note 1 to entry: PMI may include geometric dimensions & tolerances (GD&T), 3D
annotation (text) and dimensions, surface finish, and material specifications.
3.4.112 production
a manufacturing process or operation designed to produce goods
3.4.114 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
3.4.115 rule
in the context of QIF Rules, a pair usually consisting of a Boolean condition and a specification
of the type of measurement activity that should be carried out if the condition evaluates to true
Note 1 to entry: The Boolean condition is actually optional so that unconditional rules (i.e.,
actions that must or may always be taken) may be written.
Note 2 to entry: For example, if “the feature is a cylinder” evaluates to true, the
corresponding action may be requested: “measure 13 points”.
Note 1 to entry: The exact meaning of each category and the number of possible levels is
meant to be defined and evaluated by the user. For example, the number 1 might represent first
article inspection and the number 2 might represent process control.
Note 1 to entry: Key concepts include sample size (how many) and sampling frequency
(how often).
3.4.118 sensor
a measurement resource that detects a surface or measurement feature of a workpiece
Note 1 to entry: an example is measuring a reference sphere to determine stylus tip diameters
and probe tip offsets for a touch probe on a CMM
3.4.120 set
refers to a measured feature or characteristic being set to its nominal without any measurement
taking place
3.4.123 stability
the ability of a gage to arrive at the same measurements against a master value over time
Note 1 to entry: Statistical study plans provide a method for establishing the quality approach
and criteria for data studies associated with measurement in manufacturing. A supplier may be
provided with these plans from a customer in order to ensure the expectation that correct quality
control information will be supplied with each manufactured lot.
Note 2 to entry: Statistical sStudy plans can contain the number of expected products to be
inspected. They can also contain the expected quality conformance thresholds such as the
characteristics to be measured and monitored, sample size, process capability, and gage
repeatability and reproduceability requirements.
Note 1 to entry: Statistical study results contain the measurement summary data that provides
an overview of product quality. From single first article inspection, to capability and production
studies, statistical study information can include the measured process capability and
performance quality indices that are commonly accepted in manufacturing.
3.4.129 theodolite
an instrument for measuring angles in the horizontal and vertical planes
Note 1 to entry: This is thread in the sense of the grooved/ridged portion of a nut or bolt.
3.4.131 tolerance
an upper and lower specification of a characteristic dimension
Note 1 to entry: A tolerance usually provides the allowable range for part acceptance based on
designed engineering criteria for fit and function.
3.4.132 tool
a measurement resource that mounts one or more sensors to a measurement device
3.4.134 traceability
information about the circumstances of a quality measurement process or a manufacturing
process
Note 1 to entry: QIF defines five types of traceability. None of these is the classical
traceability of measurements from an international standard through intermediate steps to a
specific measurement.
3.4.138 version
a unique, non-trivial instance of a document or schema
3.4.141 wire-frame
a method of geometric modeling in which a two- or three-dimensional object is represented by
object edges
3.4.143 workpiece
a physical artifact, real or virtual, intended for subsequent transformation within some
manufacturing operation
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 six information models for unique application
areas. 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.
DMSC’s goal is 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 commercial off the shelf software solutions.
Define Product
Determine Measurement Requirements
Define Measurement Process
Execute Measurement Process
Analyze & Report Quality Data
Activities export and/or import quality information formatted according to the QIF information
model and XML encoding rules. The diagram does not show activities that generate
manufacturing process information or that implement a manufacturing execution system. The
features of QIF facilitate efficient flow of enterprise quality data in a way that does not specify or
constrain a user’s system architecture.
The Define Product activity generates a model-based definition of a part that can support an
enterprise’s digital product verification. The product definition contains geometry information
plus semantically linked product manufacturing information (PMI). PMI commonly includes
geometric and dimensional tolerancing information, product characteristics with criticalities,
material, surface texture, roughness, color and hardness. PMI typically includes associations
between geometric elements of the product and dimensions, tolerances, and functional datums.
The product definition is expressed using the QIF MBD information model.
The Determine Measurement Requirements activity imports QIF MBD information or its
equivalent expressed in another format or formats. Based upon enterprise quality requirements
and/or manufacturing process knowledge, measurement requirements for a part are generated
as a set of measurement criteria also known as a bill of characteristic items (BOC). A
characteristic item is typically a tolerance or specification applied to a feature or product that
needs verification. The plan may also specify the measuring sequence and resources to be
used, but is not required to do so. This BOC constitutes a high-level quality plan of “what” needs
to be inspected or verified, expressed as a QIF Plans (whats) information packet.
The activity that generates QIF Resources information is Define Measurement Resources. This
activity defines enterprise hardware and software resources available, either serial-number
specific, or generic, that can be harnessed to meet inspection requirements for individual part
features. The QIF Resources data format can be used to specify resources required in an
inspection plan, or the resources actually used in an inspection. The scope of the QIF
Resources application model includes but is not limited to hardware, software, and human
operators.
The Define Measurement Rules activity generates a QIF instance file that conforms to the QIF
Rules information model and specifies inspection practices required by an enterprise to be used
in-house or by contractors. Such a file defines, for some or all feature types on a part,
information elements that constrain the measurement on that feature type. Measurement
constraints may be applied to things like measurement point density, measurement point
pattern, and feature fitting algorithm. Rules may be written for every QIF feature type. The QIF
standard defines the generic format to express enterprise Rules, but does not contain specific
rules. The instance file generated by the enterprise contains the specific rules. Information
areas that are in scope include:
product measurement point number or density and sampling method for each product
feature type
feature fitting algorithm for each feature type
selection of measurement resources
rule ID and corporate ownership.
The Define Measurement Process activity inputs resource and metrology knowledge, and the
QIF Plans (what), and generates additional instructions on “how” to inspect or verify the bill of
characteristic items. The completed inspection plan is output as QIF Plans (whats and hows).
The scope of the QIF Plans 3.0 application model 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, and roughness
product characteristics
traceability values and pointers
work instructions
measurement resources to be used
CAD entity relationships.
The downstream activity Execute Measurement Process activity imports the QIF Plan, and if
needed, generates a detailed resource specific inspection program. The programs are machine-
level measurement programs, formatted according to DMIS or some other measurement
programming language, that provide equipment level commands to specific coordinate
measuring machine (CMM) control units, to collect point data, fit features to data, and output
feature and characteristic data. The workflow shows the export of non-QIF format subsequently
translated according to the QIF Results information model. Measurement processes that adopt
QIF will likely export results directly without translation. 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. 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., 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 called inspection
traceability, which includes the shift, the equipment operator’s name, a description of the item
measured, the date and time of the measurement, etc.
Finally, the measurement results for two or more parts are collected, analyzed, and reported by
the activity Analyze & Report Quality Data. The output, expressed using the QIF Statistics
model, is generally an analysis of a multi-part batch. QIF Statistics is designed to carry
information to transport statistical quality control plans, corrective action plans and detailed
summary quality statistics. It builds on the QIF Results framework through supporting multi-part
measurement results that can apply to a number of quality study types beyond single or first
article inspection. It is designed to haul information in an unambiguous form for pre-production,
capability, and production quality studies. In addition it supports the full extent of measurement
systems analysis studies including Gage R&R.
Quality information generated in QIF format can be used as input by many other quality and
manufacturing management components not shown in Figure 2, including, but not limited to,
first article inspection plan and report (FAIR) generation, statistical process control (SPC),
materials resource planning (MRP), measurement systems analysis (MSA), manufacturing
execution systems (MES), and computer aided manufacturing (CAM).
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.3 Part 1-2016. DMIS can also be used as a numerical control part
program for DMEs such as coordinate measuring machines (CMM).
An example of user-defined flow of QIF information not shown in Figure 2 is the direct use by a
human inspector of a QIF Plans 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 instruction details (e.g., number of points, placement of
measurements).
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. QIF 3.0 extends its coverage of
ISO GPS. The requirements list is evolving as the members of the quality community
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 the size of instance
files.
The QIF standard is not only a data structure but also a set of formal rules for data interaction
with that structure. By virtue of its implementation in XML schema language and standard
checks available in the XSLT language standard, QIF transfers much of the burden of
data/information quality from the application implementer to the standard itself. If a QIF instance
file passes all XML and XSLT software checks, it is valid to the QIF standard in all syntactical
and many semantic elements.
First, the QIF data model is implemented in XML Schema Definition Language which allows for
automatic syntax and consistency checking of the standard itself, using widely available free or
low-cost software tools.
Second, software implementations of the standard can take advantage of free or low-cost
automatic source code generation tools. These tools provide computer language code which
automatically consumes and produces QIF document instance files in XML format consistent
with the syntax of the standard.
Third, QIF document instance files in XML format can be checked against the standard
schemas with free or low-cost automatic tools. These tools will check that the structure of an
instance file conforms to the QIF model. They will also check the validity of internal references
in a file using keys and keyrefs as described in subclause 5.12.
Fourth, checks of the quality of information in QIF document instance files are available through
the use of XSLT (Extensible Stylesheet Language Transformations) language checks. The
XSLT checks are a normative part of the QIF specification. The XSLT checks can be performed
by a number of widely available free tools (and by low-cost tools). The XSLT checks address
both the integrity and semantics of individual instance files and the validity of references
between linked instance files. Moreover, when there is tree of linked instance files, applying the
XSLT checks to the file at the root of the tree results in the checks being applied to all files in the
tree. Applying the XSLT checks results in an error report being generated as an XML file.
The files that contain the XSLT checks are arranged in a small tree of six files with Check.xsl at
the root. Check.xsl imports CheckDocuments.xsd, CheckFormat.xsl, CheckQuality.xsl, and
CheckSemantic.xsl. Each of those four imported files imports CheckLibrary.xsl. The Check.xsl
file triggers the use of the CheckDocuments.xsd file, which triggers the use of the other three.
The XSLT checks are parameterized. For example, the tolerance on the number of segments in
a polyline is given by the MaxNumSegments parameter. Values of the parameters are set in the
CheckParameters.xml file, which is accessed by the CheckLibrary.xsl file. A user may reset the
parameters by editing CheckParameters.xml. Processing of linked instance files may be
activated by the parameter CheckLinkedDocuments in CheckParamaters.xml, where
MaxRecursionLevel defines the maximum recursion level. Format, quality and semantic checks
may be activated by parameters CheckFormat, CheckQuality and CheckSemantic.
Link to a specific type of Format The specified entity in an external document must
external object be the right type of entity (over 300 cases).
NURBS curve Format The number of control points must be equal to the
number of knots minus the curve order.
NURBS surface Format The number of control points must be equal to
('nKtU' - 'ordU')*('nKtV' - 'ordV').
Feature nominal Semantic Feature nominals must be connected to topology
entities.
Position characteristic Semantic If the ToleranceValue in a Position characteristic
definition definition is 0 then the MaterialCondition must be
MAXIMUM.
High degree curve Quality Excessively high-degree curves (G-CU-HD) must
not be used.
Free edge Quality Free edges (G-SH-FR) must not be used.
Over-used edge Quality Over-used edges (G-SH-NM) must not be used.
Fragmented curve Quality Fragmented curves (G-CU-FG) must not be
used.
Unit vector length Quality The length of a unit vector must be close to 1.
Parameters:
The XSLT checks are performed via four .xsl files, namely, CheckDocument.xsl,
CheckFormat.xsl, CheckQuality.xsl, and CheckSemantic.xsl. The checks performed by each of
these files are described in the following subclauses.
5.4.1.1 CheckDocument.xsl
The Check Document.xsl file is used to trigger the use of CheckFormat.xsl, CheckQuality.xsl,
and CheckSemantic.xsl.
In addition, it contains over 300 checks between linked files that a reference from one aspect of
a feature or characteristic to another aspect of the same type of feature or characteristic does
indeed do that. For example, if a circle feature measurement in a QIF results file intends to
reference a circle feature item in an external QIF plan file, there is a check that the referenced
object is a circle feature item and not anything else (such as a flatness definition or a torus
feature item). The same set of checks is made within single instance files by key/keyref pairs,
but key and keyref apply only within a single file and cannot be used with linked files.
Finally, CheckDocument.xsl checks that the recursion depth of checking does not exceed the
MaxRecursionLevel parameter.
5.4.1.2 CheckFormat.xsl
The CheckFormat.xsd file is used to make the following checks.
1. number of elements in list - Several dozen types of lists of elements are defined in QIF, for
example, the PartSet in a Product is a list of Parts. Each of these lists has an n attribute giving
the number of elements in the list. It is checked that the actual count of elements in the list is
equal to n. This check is performed on every list of elements containing an n attribute.
2. external references - A QIF document D may contain references to elements in external QIF
documents. To do this, D must include the Uniform Resource Identifier (URI) and QPId of each
external document. It is checked that, for each external QIF document of D:
a. A file E exists with the URI given in D, and E has a QIFDocument element in it
b. The QPId of the QIFDocument in E is the one given in D
c. Every external entity reference in D that is supposed to be in E is, in fact, in E.
3. NURBS curves - It is checked that in any 2D or 3D NURBS curve, the number of control
points equals the number of knots minus the order of the curve.
4. NURBS surfaces - It is checked that for any NURBS surfaces the number of control points
equals the product of (nKtU - ordU) and (nKtV - ordV).
5.4.1.3 CheckQuality.xsl
The CheckQuality.xsl file is used to make the following checks.
1. It is checked that there are no NURBS surfaces of excessively high degree. The maximum
degree is a parameter that may be set in CheckParameters.xml.
2. It is checked that there are no free edges. A free edge is an edge that is used by only one
face in a shell.
3. It is checked that there are no overused edges. A overused edge is an edge that is used by
more than two faces in a shell.
4. It is checked that 2D and 3D polylines do not have excessively many segments. The
maximum number of segments is a parameter that may be set in CheckParameters.xml.
5.4.1.4 CheckSemantic.xsl
The CheckSemantic.xsl file is used to make the following checks.
2. It is checked that in any position characteristic definition, if the tolerance is zero, the material
condition must be maximum.
At the low level, each type of element describing a list, set, or collection includes a required
attribute “n,” which is the number of items contained in the list, set, or collection. If any of the low
level “n” counts do not match the actual number of items in a list, set, or collection, or the
optional ValidationCounts element is present and indicates the presence of a list or item which
is not present, or indicates a number of items in a list which does not match the actual number
of items in that list, or a top level list or item is present but not indicated as such in the
ValidationCounts element if it is present, then there is an internal inconsistency in the QIF
document and the document is not valid.
At the high level, the root level of a QIF document has an optional element ValidationCounts,
which can be used to indicate the presense and number of items in key, top level QIF document
lists and items.
Each PDQ check listed in the optional ProductDataQualityChecks element contains information
on the type of check, its description, requirements, status, and results statement. Optionally, the
source requiring the check, the software application used for the check, and the URL of any
XSLT used in the check, can be specified.
Signature version
Serial number of the certificate
Algorithm id
Certificate issuer name
Validity period
Certificate subject name
Subject public key information
Optional extensions
The certificate signature algorithm
The certificate signature
Included in the certificate signature is a hash value, which can be used to detect unauthorized
editing or accidental corruption of the QIF document.
The following requirements are required of the QIF standard for it to be suitable for LOTAR:
This claim can be made largely because QIF is an open, non-proprietary standard information
model. This gives a strong probability of accurate information retrieval in the far distant future,
particularly compared to proprietary, non-standard, quality measurement digital information
exchange models.
In particular, the QIF model has been developed in close collaboration with the LOTAR
International group to further ensure the archival suitability of QIF. The express objective of
LOTAR International is “to develop, test, publish and maintain standards for long-term archiving
(LTA) of digital data, such as 3D CAD and PDM data. These standards will define auditable
archiving and retrieval processes. Use of the standard series by other branches of industry such
as the automotive or shipbuilding industry is possible. The results are harmonized with e.g. the
Recommendation 4958 for long-term archiving of the German Association of the Automotive
Industry (VDA) and are based on the ISO 14721, Open Archival Information System (OAIS)
Reference Model. The documents for the standard are published as the EN9300 series and, in
cooperation with the AIA, also as the National Aerospace Standard (NAS).” (http://www.lotar-
international.org/).
Information requirements for QIF encompass the principles of geometric dimensioning and
tolerancing as described in ASME GD&T and ISO GPS, as well as workflow practices and
quality management functions.
QIF encompasses all planning and results information defined in ANSI/DMIS 105.3. QIF
also includes device, tool, and sensor data.
QIF instance files support all information defined for first article inspection reports as
defined in the standard AS9102B [1].
The neutral data format specifications are accompanied by fully defined semantics derived
where applicable from other standards like ANSI/DMIS 105.3, and AS9102B. The
semantics ensure that data cannot be misinterpreted between sender and receiver of QIF
instance files.
Inspection results data formatted as QIF Results can be used both for 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 Results data can be written to facilitate re-analysis of measured point data.
QIF data supports quality systems based on model based definition, as well as systems
that implement 2D drawing-based processes.
information exchange.” The relationship and harmonization between QIF and the relevant STEP
standards will be addressed in other documents outside this standard.
The QIF models represent measurement features and characteristic objects with four aspects:
item, definition, nominal, and measurement. The relationships between data objects of each
aspect type in an instance file are implemented using a relationship scheme described in more
detail in subclause 5.9. Because the scope of QIF covers the entire workflow of enterprise
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.
For example, QIFDocument is a complete application schema. The top-level schema file is
QIFDocument.xsd. It includes the primary schema file for each of the six QIF application areas,
and each of those includes subordinate files collected in the QIF Library. The net effect is that
the QIFDocument schema contains everything defined in all the QIF schema files.
An XML data file conforming to an XML schema is called an instance file. Every instance file
conforming to the QIF model will have QIFDocument as the root of a hierarchy of information.
QIF (directory)
QIFApplications (directory)
QIFDocument.xsd
QIFMeasurementResources.xsd
QIFPlan.xsd
QIFProduct.xsd
QIFResults.xsd
QIFRules.xsd
QIFStatistics.xsd
QIFLibrary (directory)
Auxiliary.xsd
Characteristics.xsd
Expressions.xsd
Features.xsd
GenericExpressions.xsd
Geometry.xsd
IntermediatesPMI.xsd
Primitives.xsd
PrimitivesPD.xsd
PrimitivesPMI.xsd
Statistics.xsd
Topology.xsd
Traceability.xsd
Units.xsd
Visualization.xsd
The QIF Library is modularized by grouping related type and element definitions together in a
schema file. Some of the schema files in the QIF Library serve multiple applications, and some
serve only a single application:
Expressions.xsd and GenericExpressions.xsd serve only QIFRules and QIFPlan.
Auxiliary.xsd, Geometry.xsd, Topology.xsd, and Visualization.xsd serve primarily
QIFProduct (though QIFMeasurementResources also uses the first three of those).
Statistics.xsd serves only QIFStatistics.
The QIF application models are each described in a separate subject area clause (QIF Clauses
7 through 12). Clause 6 of the QIF standard describes the contents of each schema file in the
QIF Library.
A QIF Statistics instance file is likely to have at least a Product element, a Results element,
and a Statistics element.
However, a user has the option of putting related application information in a single instance file
or keeping that information in separate instance files. A QIF Statistics instance file might contain
only identifying information and a Statistics element. The product information referenced in the
Statistics element might be in a second instance file that was generated when the product was
designed, and the measurement results information referenced in the Statistics element might
be in a third instance file that was generated when an instance of the product was measured.
When related information from different applications is in a single file, it is connected using
identifiers (ids) that are local to the file. When that information is in separate files, it is connected
using a combination of local ids and QIF Persistent Identifiers (QPIds), which are universally
unique.
A brief description of all sub-elements of the QIF Document element follows. All elements other
than the required QPId element are optional; however, it is recommended that a QIFDocument
contains at least a Header and one or more of the MeasurementResources, Product, Plan,
Results, Rules, and Statistics application areas. It is strongly suggested that every
QIFDocument also have Version and FileUnits.
QPId – the QIF persistent identifier for the document. This is a universally unique
identifier. QPIds are discussed in subclause 5.13.2. QPIdType is defined in
Primitives.xsd.
Attributes – provides the user with opportunity to attach typed information that is not
modeled in QIF. It is described further in subclause 5.25. The AttributesType and
Attributes global element are defined in Primitives.xsd.
VersionHistory – version history information about the file. The VersionHistoryType is
defined in Intermediates.xsd.
Version – version information about the file, including TimeCreated and Signoffs.
Header – identification of the source of the file and the scope of the file. The
QIFDocumentHeaderType and Header global element are defined in
QIFDocument.xsd.
ValidationCounts – the size of each of about 50 lists of QIF elements. This is provided
so that an application can check the integrity of the document by checking the counts
against the actual numbers of elements in the lists. Each count is optional. If a count is
omitted for a list, it does not imply that there are zero elements in the list.
ProductDataQuality – a description of quality checks applied to the document. Quality
checks are discussed in subclause 5.4.3.
ExternalQIFReferences – a list of external QIF documents referenced in the document,
with a local id for each external document. External QIF references are discussed in
subclause 5.13.3.
StandardsDefinitions – a list of standards referenced in the document.
SoftwareDefinitions – a list of software systems referenced in the document.
AlgorithmDefinitions – a list of algorithm definitions referenced in the document.
PreInspectionTraceability – information about the provenance of the file before
inspection has occurred. The PreInspectionTraceabilityType is defined in
Traceability.xsd. Preinspection traceability is discussed briefly in subclause 6.14.2.
FileUnits – information about the units used in the file. Units are discussed in subclause
5.18 and in more detail in subclause 6.15. The FileUnitsType and FileUnits global
element are defined in Units.xsd.
DatumDefinitions – a list of datum definitions. Datum definitions are discussed in
subclause 5.17.6.1. DatumDefinitionsType is defined in IntermediatesPMI.xsd.
DatumTargetDefinitions – a list of datum targets. Datum target types are listed in
subclause 6.8. The DatumTargetDefinitionsType and the various datum target types
are defined in IntermediatesPMI.xsd.
Transforms – a list of transforms. Transforms are discussed in subclause 5.16.3. The
TransformListType and Transform global element are defined in
IntermediatesPMI.xsd.
Figure 5 – 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 as shown in Figure 6.
This plate with holes can exist in several contexts: it may be a printed 2D drawing, it may be a
3D solid MBD, 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 MBD or drawing contexts, nominal
information for these cylinders will exist. In the physical part context, information about the
actual cylinders can exist if they are measured. So, one would assume that QIF would only
need to contain objects that define feature nominal and feature measurement 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 7 illustrates that some nominal information about the
holes is shared and some is not. Each cylinder has a unique nominal location defined by basic
or theoretically exact 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 common to a feature type but 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.
Feature nominal data is unique to a particular feature in the context of a simple part. But in the
context of multiple instances of a part in an assembly it can be shared. In this case the feature
item’s (see below) reference to the nominal will include its assembly path. The feature nominal
has optional elements for Name and Description which may be used to identify and describe
the feature in the component part context perhaps as it appears in a CAD system feature tree.
If a part is measured, then each cylinder will have unique location and size information. No
feature measurement 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>40 40 0</AxisPoint >
<Direction>0 0 1</Direction>
</Axis>
</CylinderFeatureNominal>
<CylinderFeatureNominal id="24">
<FeatureDefinitionId>22</FeatureDefinitionId>
<Axis>
<AxisPoint>40 10 0</AxisPoint >
<Direction>0 0 1</Direction>
</Axis>
</CylinderFeatureNominal>
<CylinderFeatureNominal id="25">
<FeatureDefinitionId>22</FeatureDefinitionId>
<Axis>
<AxisPoint>10 10 0</AxisPoint >
<Direction>0 0 1</Direction>
</Axis>
</CylinderFeatureNominal>
<CylinderFeatureNominal id="26">
<FeatureDefinitionId>22</FeatureDefinitionId>
<Axis>
<AxisPoint>10 40 0</Z> </AxisPoint >
<Direction>0 0 1</Direction>
</Axis>
</CylinderFeatureNominal>
Each has a unique id and specifies a unique location but each references the same feature
definition.
A feature item data object represents an instance of a feature at the planning stage of the
metrology process. The feature item data object provides: the name assigned to the feature (as
in Figure 8), optional links to upstream CAD data, reference to a part definition object id, and a
required reference to a nominal feature object.
If the same feature on the same physical part is measured several times, it is expected that a
feature item data object will be defined for each measurement. Some other examples of
workflow that cause instantiation of a feature item object include: any process at any time that
requires a named feature, planning inspection of a part, planning 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.
<CylinderFeatureItem id="27">
<FeatureNominalId>23</FeatureNominalId>
<FeatureName>Hole_1</FeatureName>
…
</CylinderFeatureItem>
<CylinderFeatureItem id="28">
<FeatureNominalId>24</FeatureNominalId>
<FeatureName>Hole_2</FeatureName>
…
</CylinderFeatureItem>
<CylinderFeatureItem id="29">
<FeatureNominalId>25</FeatureNominalId>
<FeatureName>Hole_3</FeatureName>
…
</CylinderFeatureItem>
<CylinderFeatureItem id="30">
<FeatureNominalId>26</FeatureNominalId>
<FeatureName>Hole_4</FeatureName>
…
</CylinderFeatureItem>
Each item references a single nominal and assigns a feature name (the ellipses … indicate
extra required elements outside the scope of this simple example).
Feature nominal objects can be defined at the whole product level in the global coordinate
system or at the part or subassembly level in a local coordinate system whereas the feature
item is always defined at the whole product level. The feature nominal can be referenced by
several feature items, one for each part or subassembly instance in an assembly. When a
feature item references such a feature nominal, the optional asmPath attribute on the
FeatureNominalId element is used to unambiguously define the assembly path which takes the
feature nominal from the part or subassembly context to the whole part context.
A QIF XML instance file of an assembly containing two instances of the 4-hole plate might have
feature items like:
<CylinderFeatureItem id="27">
<FeatureNominalId asmPath=”6”>23</FeatureNominalId>
<FeatureName>Part1_Hole_1</FeatureName>
…
</CylinderFeatureItem>
<CylinderFeatureItem id="28">
<FeatureNominalId asmPath=”6”>24</FeatureNominalId>
<FeatureName>Part1_Hole_2</FeatureName>
…
</CylinderFeatureItem>
<CylinderFeatureItem id="29">
<FeatureNominalId asmPath=”6”>25</FeatureNominalId>
<FeatureName>Part1_Hole_3</FeatureName>
…
</CylinderFeatureItem>
<CylinderFeatureItem id="30">
<FeatureNominalId asmPath=”6”>26</FeatureNominalId>
<FeatureName>Part1_Hole_4</FeatureName>
…
</CylinderFeatureItem>
<CylinderFeatureItem id="31">
<FeatureNominalId asmPath=”8”>23</FeatureNominalId>
<FeatureName>Part2_Hole_1</FeatureName>
…
</CylinderFeatureItem>
<CylinderFeatureItem id="32">
<FeatureNominalId asmPath=”8”>24</FeatureNominalId>
<FeatureName>Part2_Hole_2</FeatureName>
…
</CylinderFeatureItem>
<CylinderFeatureItem id="33">
<FeatureNominalId asmPath=”8”>25</FeatureNominalId>
<FeatureName>Part2_Hole_3</FeatureName>
…
</CylinderFeatureItem>
<CylinderFeatureItem id="34">
<FeatureNominalId asmPath=”8”>26</FeatureNominalId>
<FeatureName>Part2_Hole_4</FeatureName>
…
</CylinderFeatureItem>
A feature measurement data object provides feature information that has been directly
measured or constructed. For example, a CylinderFeatureMeasurementType will contain the
measured location, orientation, and size of a cylinder. For an inspection that has been
programmed from CAD data, the feature measurement data object contains a reference to the
associated feature item (which must reference the related nominal feature object (which in turn,
has a related feature definition object)). Feature measurement data generated during a reverse
engineering process might not contain a reference to a feature item.
The four holes when measured might look like this in a QIF XML instance file:
<CylinderFeatureMeasurement id="31">
<FeatureItemId>27</FeatureItemId>
<Axis>
<AxisPoint>40.002 39.994 0</AxisPoint>
<Direction>-0.001 0 1</Direction>
</Axis>
<Diameter>10.003</Diameter>
</CylinderFeatureMeasurement>
<CylinderFeatureMeasurement id="32">
<FeatureItemId>28</FeatureItemId>
<Axis>
<AxisPoint>39.967 10.011 0</AxisPoint>
<Direction>0.009 -0.009 0.999</Direction>
</Axis>
<Diameter>10.005</Diameter>
</CylinderFeatureMeasurement>
<CylinderFeatureMeasurement id="33">
<FeatureItemId>29</FeatureItemId>
<Axis>
<AxisPoint>10.002 10.013 0</AxisPoint>
<Direction>0.001 0 1</Direction>
</Axis>
<Diameter>9.996</Diameter>
</CylinderFeatureMeasurement>
<CylinderFeatureMeasurement id="34">
<FeatureItemId>30</FeatureItemId>
<Axis>
<AxisPoint>9.987 40.013 0</AxisPoint>
As with features, characteristics have four aspects defined in the QIF library: definition, nominal,
item, and measurement. This is shown in Figure 9. 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 subclause 5.7. 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.
In the example shown in Figure 7, 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 the 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 7.
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 item is the mechanism used to apply a tolerance to an individual feature.
Our plate with holes would have one characteristic item for each hole because each hole will
have an individual tolerance condition.
Figure 9 – References among characteristic data objects in a QIF XML instance file.
Each characteristic item references the single shared characteristic nominal, and in turn that
characteristic nominal references a single characteristic definition which may or may not be
referenced by other characteristic nominals. Characteristic items are required to reference a
characteristic nominal.
The idea of a characteristic item 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 10) as key characteristic
number 1, then each characteristic item 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>
<CharacteristicDesignator>
<Designator>1</Designator>
<Criticality>
<LevelEnum>KEY</LevelEnum>
</Criticality>
</CharacteristicDesignator>
<TargetValue>10</TargetValue>
</DiameterCharacteristicNominal>
…
<DiameterCharacteristicItem id="42">
<Name>Hole_1_diam</Name>
<CharacteristicDesignator>
<Designator>1_1</Designator>
<Criticality>
<LevelEnum>KEY</LevelEnum>
</Criticality>
</CharacteristicDesignator>
<CharacteristicNominalId>41</CharacteristicNominalId>
</DiameterCharacteristicItem>
<DiameterCharacteristicItem id="43">
<Name>Hole_2_diam</Name>
<CharacteristicDesignator>
<Designator>1_2</Designator>
<Criticality>
<LevelEnum>KEY</LevelEnum>
</Criticality>
</CharacteristicDesignator>
<CharacteristicNominalId>41</CharacteristicNominalId>
</DiameterCharacteristicItem>
<DiameterCharacteristicItem id="44">
<Name>Hole_3_diam</Name>
<CharacteristicDesignator>
<Designator>1_3</Designator>
<Criticality>
<LevelEnum>KEY</LevelEnum>
</Criticality>
</CharacteristicDesignator>
<CharacteristicNominalId>41</CharacteristicNominalId>
</DiameterCharacteristicItem>
<DiameterCharacteristicItem id="45">
<Name>Hole_4_diam</Name>
<CharacteristicDesignator>
<Designator>1_4</Designator>
<Criticality>
<LevelEnum>KEY</LevelEnum>
</Criticality>
</CharacteristicDesignator>
<CharacteristicNominalId>41</CharacteristicNominalId>
</DiameterCharacteristicItem>
characteristic designators for the diameter of the four individual holes. The Criticality element
of a characteristic item overrides the Criticality of the nominal, if the values differ.
For the example, an instance file with measurements might look like:
<DiameterCharacteristicMeasurement id="46">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>42</CharacteristicItemId>
<Value>10.003</Value>
</DiameterCharacteristicMeasurement>
<DiameterCharacteristicMeasurement id="47">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>43</CharacteristicItemId>
<Value>10.005</Value>
</DiameterCharacteristicMeasurement>
<DiameterCharacteristicMeasurement id="48">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>44</CharacteristicItemId>
<Value>9.996</Value>
</DiameterCharacteristicMeasurement>
<DiameterCharacteristicMeasurement id="49">
<Status>
<CharacteristicStatusEnum>FAIL</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>45</CharacteristicItemId>
<Value>10.007</Value>
</DiameterCharacteristicMeasurement>
This latter dimension, although not explicitly toleranced, is often subject to an “unless otherwise
specified” default tolerance. Such default tolerances are often called “box tolerances” because
they can appear in a box at the corner of a drawing and often take the form:
Unless otherwise
specified
X.X ±.2 mm
X.XX ±.05 mm
X.XXX ±.005 mm
XX° ±1°
In QIF characteristics are explicitly typed; a length nominal cannot use a diameter definition to
define its tolerance. Because these default tolerances cross type boundaries (the same
tolerance may apply to a length, diameter, distance, coordinate etc.) QIF has a mechanism for
storing and referencing un-typed default tolerances. Instead of defining a tolerance directly in a
characteristic definition such as:
<DiameterCharacteristicDefinition id="40">
<Tolerance>
<MaxValue>0.005</MaxValue>
<MinValue>-0.005</MinValue>
<DefinedAsLimit>false</DefinedAsLimit>
</Tolerance>
</DiameterCharacteristicDefinition>
<DiameterCharacteristicDefinition id="40">
<Tolerance>
<DefinitionId>20</DefinitionId>
<DefinedAsLimit>false</DefinedAsLimit>
</Tolerance>
</DiameterCharacteristicDefinition>
<LinearToleranceDefinition id="20">
<Tolerance>
<MaxValue>0.005</MaxValue>
<MinValue>-0.005</MinValue>
</Tolerance>
</LinearToleranceDefinition>
This tolerance can be referenced by any linear value characteristic. The default tolerance for
angular value characteristics is defined in a separate element:
<AngularToleranceDefinition id="21">
<Tolerance>
<MaxValue>1</MaxValue>
<MinValue>-1</MinValue>
</Tolerance>
</AngularToleranceDefinition>
The relationship between a default tolerance definition and the box tolerance annotation can be
made more explicit with a note contained in the optional Attributes element:
<LinearToleranceDefinition id="20">
<Attributes>
<AttributeStr name=”Applicability”, value=”X.XXX”\>
<\Attributes>
<Tolerance>
<MaxValue>0.005</MaxValue>
<MinValue>-0.005</MinValue>
</Tolerance>
</LinearToleranceDefinition>
A similar concept is that of a default characteristic applied to all non-directly toleranced features
of a part, for example, “Unless otherwise specified all surfaces ”. Such
contextual tolerances are stored in a special DefaultCharacteristicDefinitions element which
is a list of characteristic definitions.
At the PMI stage of design, default tolerances and characteristics can be indicated simply by
their presence in the DefaultToleranceDefinitions element and the
DefaultCharacteristicDefinitions element. The connections between these toIerances and the
features to which they apply can be made later at the metrology planning stage.
To traverse all characteristics in a QIF XML instance file, the starting point would be the
CharacteristicItems sub-element of the Characteristics element.
The four aspects of features are similarly instantiated in the global Features element of type
FeatureAspectsListsType and in the FeatureMeasurements element on a per-measured-part
basis in the MeasurementResults element of Results. FeatureAspectsListsType has an
element for listing instances of FeatureDefinitions, FeatureNominals, and FeatureItems, all
of which are optional. The feature item will come into existence either at the planning stage with
reference to nominal (and definition) data or optionally come into existence during a reverse-
engineering use case.
To traverse all features in a QIF XML instance file, the starting point would be the FeatureItems
sub-element of the Features element.
The FeatureItemIds element allows a characteristic item to reference the feature item or
feature items of the feature or features to which it applies. When more than one feature is
referenced by the FeatureItemIds element it is because more than one feature is required to
evaluate the tolerance, such as a distance or angle between two features. To determine the
characteristic-feature relationships in a QIF instance file, the starting point would be the
CharacteristicItems sub-element of the Characteristics element.
There is a secondary method of connecting characteristics and features for use at the PMI
design stage when neither feature items nor characteristic items yet exist. Product
manufacturing information (characteristics) are attached to the model based definition (features)
by the FeatureNominalIds element on the CharacteristicNominalBaseType.
Unlike the FeatureItemsIds element which references the minimum number of features
necessary for the measurement of a single characteristic item, the FeatureNominalIds element
can reference the many feature nominals to which the characteristic nominal applies. This one-
to-many reference for a single characteristic nominal will give rise to as many characteristic
items as there are features (or feature pairs, etc.).
From the example, in a QIF XML instance file containing both characteristics and features, the
connections between characteristic items and feature items and characteristic nominals and
feature nominals might look like this:
<DiameterCharacteristicNominal id="41">
<CharacteristicDefinitionId>40</CharacteristicDefinitionId>
<FeatureNominalIds n="4">
<Id>23</Id>
<Id>24</Id>
<Id>25</Id>
<Id>26</Id>
</FeatureNominalIds>
<CharacteristicDesignator>
<Designator>1</Designator>
<Criticality>
<LevelEnum>KEY</LevelEnum>
</Criticality>
</CharacteristicDesignator>
<TargetValue>10</TargetValue>
</DiameterCharacteristicNominal>
…
<DiameterCharacteristicItem id="42">
<Name>Hole_1_diam</Name>
<FeatureItemIds n=”1”>
<Id>27</Id>
</FeatureItemIds>
<CharacteristicNominalId>41</CharacteristicNominalId>
</DiameterCharacteristicItem>
<DiameterCharacteristicItem id="43">
<Name>Hole_2_diam</Name>
<FeatureItemIds n=”1”>
<Id>28</Id>
</FeatureItemIds>
<CharacteristicNominalId>41</CharacteristicNominalId>
</DiameterCharacteristicItem>
<DiameterCharacteristicItem id="44">
<Name>Hole_3_diam</Name>
<FeatureItemIds n=”1”>
<Id>29</Id>
</FeatureItemIds>
<CharacteristicNominalId>41</CharacteristicNominalId>
</DiameterCharacteristicItem>
<DiameterCharacteristicItem id="45">
<Name>Hole_4_diam</Name>
<FeatureItemIds n=”1”>
<Id>30</Id>
</FeatureItemIds>
<CharacteristicNominalId>41</CharacteristicNominalId>
</DiameterCharacteristicItem>
(Characteristic designators have been removed from the characteristic items in the above
example.)
In the context of a single part measurement this connection between the characteristic item and
feature item would be sufficient to imply the connection between the single characteristic
measurement and single feature measurement. But, if the results of more than one part
measurement are included in a single QIF document this connection is no longer sufficient.
Therefore, to explicitly make the connection between a characteristic measurement and the
measured feature or features to which it applies the FeatureMeasurementIds element is used.
From the example, in a QIF XML instance file containing both characteristics and features, the
connections between characteristic measurements and feature measurements might look like
this:
<DiameterCharacteristicMeasurement id="46">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>42</CharacteristicItemId>
<FeatureMeasurementIds n="1">
<Id>31</Id>
</FeatureMeasurementIds>
<Value>10.003</Value>
</DiameterCharacteristicMeasurement>
<DiameterCharacteristicMeasurement id="47">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>43</CharacteristicItemId>
<FeatureMeasurementIds n="1">
<Id>32</Id>
</FeatureMeasurementIds>
<Value>10.005</Value>
</DiameterCharacteristicMeasurement>
<DiameterCharacteristicMeasurement id="48">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>44</CharacteristicItemId>
<FeatureMeasurementIds n="1">
<Id>33</Id>
</FeatureMeasurementIds>
<Value>9.996</Value>
</DiameterCharacteristicMeasurement>
<DiameterCharacteristicMeasurement id="49">
<Status>
<CharacteristicStatusEnum>FAIL</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>45</CharacteristicItemId>
<FeatureMeasurementIds n="1">
<Id>34</Id>
</FeatureMeasurementIds>
<Value>10.007</Value>
</DiameterCharacteristicMeasurement>
FeatureNominal FeatureDefinition
CharacteristicNominal CharacteristicDefinition
Figure 11 shows the possible connections at the product manufacturing information stage of the
metrology process. In this stage all information necessary to associate PMI (dimensions and
tolerances, etc.) with features on a part is known. The dotted arrow between
CharacteristicNominal and FeatureNominal indicates that the associated QIF element
(FeatureNominalIds) is an optional element. It is nevertheless required for this use case in
order to associate a characteristic with the feature or features to which it applies.
Figure 12 shows the additional connections that come into being at the planning stage of
metrology. Existing connections from the PMI stage persist and remain unchanged. Feature
items and characteristic items which represent individual feature measurements and
characteristic evaluations reference the data from the PMI stage. Again dotted arrows represent
optional elements which are nonetheless required at the planning stage.
Figure 13 shows the new connections that arise at the post measurement stage. The feature
and characteristic information and connections from the planning and PMI stages persist and
remain unchanged and additional connections between measured characteristics and the
measured features to which they apply and between measurements and their associated items
are made. Again dotted arrows represent optional elements which are nonetheless required at
the post-measurement stage.
Figure 13 shows the post-measurement connections when both feature and characteristic data
are present. If only characteristic information is present then Figure 9 shows the connections
between the four characteristic aspects at the post-measurement stage. Similarly, if only feature
information, both nominal and measurement, is present then Figure 5 shows the connections
between the four feature aspects at the post-measurement stage.
From the solid arrows in Figure 9 we see that characteristic nominal information is necessary
when characteristic measurement information is present. The dotted arrow in Figure 5 and on
the top row of Figure 13 shows that this is not the case with feature information. In the reverse
engineering use case scenario, features may be measured without nominal information, often
with the goal of creating a drawing or electronic model for a part where one does not exist.
Occasionally, a feature item in a measurement plan cannot be measured when the plan is to be
executed and a new derivative feature is measured in its place. Some examples include:
A cylinder in a thin walled material, perhaps with break-away from a punching operation,
is measured as a circle.
A part rests on a datum feature making it inaccessible and the surface plate is measured
to simulate the datum surface.
A countersink is not measured directly but instead a spherical tooling ball is placed in the
hole and measured.
possibility of the necessity to create fake or dummy data for a required data element that is
outside the scope of a particular use case. For example, a caliper can only measure the size of
an actual cylinder feature so required measured XYZ center location and IJK vector orientation
elements for the actual cylinder would be outside the scope of the caliper-based use case.
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
cylinder measurement 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 subclauses 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 10: . 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>
and the nominal is contained in the characteristic nominal as described in subclause 5.9.3.
<DiameterCharacteristicNominal id="41">
<CharacteristicDefinitionId>40</CharacteristicDefinitionId>
<TargetValue>10</TargetValue>
</DiameterCharacteristicNominal>
The actual results of the measurement might appear as follows in a QIF XML instance file:
<DiameterCharacteristicMeasurement id="46">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>42</CharacteristicItemId>
</DiameterCharacteristicMeasurement>
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:
<DiameterCharacteristicMeasurement id="46">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>42</CharacteristicItemId>
<Value>10.003</Value>
</DiameterCharacteristicMeasurement>
The actual results of the measurement might appear as follows in a QIF XML instance file:
<DiameterCharacteristicMeasurement id="46">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>42</CharacteristicItemId>
<Value>10.003</Value>
<MaxValue>10.004</MaxValue>
<MinValue>10.001</MinValue>
</DiameterCharacteristicMeasurement>
The actual results of the measurement might appear as follows in a QIF XML instance file:
<CylinderFeatureMeasurement id="31">
<FeatureItemId>27</FeatureItemId>
<Diameter>10.003</Diameter>
</CylinderFeatureMeasurement>
In this example the optional FeatureItemId element is present. The feature item will contain the
feature name and material disposition (inner or outer).
<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">
<DimensionType>BASIC_OR_TED</DimensionType>
<NonTolerance>MEASURED</NonTolerance>
</DiameterCharacteristicDefinition>
The diameter characteristic nominal target value would specify the basic or theoretically exact
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
evaluation can be performed. The results of a measurement of a basic or theoretically exact
diameter might appear as follows in a QIF XML instance file:
<DiameterCharacteristicMeasurement id="42">
<Status>
<CharacteristicStatusEnum>BASIC_OR_TED</CharacteristicStatusEnum>
</Status>
<CharacteristicNominalId>40</CharacteristicNominalId>
<Value>10.003</Value>
</DiameterCharacteristicMeasurement>
5.10.3 ScaleCoefficient
If the QIFDocument/QIFProduct/Header portion of an instance file includes a
ScaleCoefficient element, all elements representing distances in the
QIFDocument/QIFProduct and QIFDocument/Features portions of an instance file are
scaled. The default value of the ScaleCoefficient is 1. The type of all values to be scaled is
either LinearValueType or xs:double. To convert such values in an instance file to actual
values, divide by the ScaleCoefficient value. To record actual values in an instance file,
multiply the actual value by the ScaleCoefficient value.
The QIF data model represents a (nominal) product as one or more (nominal) components.
Conceptually, a component is a (nominal) instance of a part or assembly placed into the context
of the final product or a higher order assembly. In the data structure, the component just
references the part or assembly so that data is not needlessly duplicated. The root component
represents the whole, final product and is the root of a tree of components representing the
assembly structure. An assembly path defines the path from the root component to an individual
component in a product design. This tree structure allows for each part or sub-assembly to be
defined once and then be placed into the final product or sub–assembly with a transformation
matrix. A product consisting of a single part will have one component.
Each assembly path has a real world counterpart in the actual product. For example the concept
of a “right rear wheel” exists both in a (nominal) automobile design and on an actual automobile.
Therefore when measured data is associated with the product definition it is by reference to this
assembly path. An assembly path may be shared by many objects in a QIF document.
Therefore, assembly paths are stored in one place: the AsmPaths element. Each assembly
path has a QIF id by which it is referenced.
The simplest example showing the connection between an actual product and the product
design is that of a single part. The product definition might be:
<Product>
<PartSet n="1">
<Part id="1">
<Name>WING_MIR_REENF</Name>
…
</Part>
</PartSet>
<ComponentSet n="1">
<Component id="2">
<Part>
<Id>1</Id>
</Part>
</Component>
</ComponentSet>
<AsmPaths n="1">
<AsmPath id="3">
<ComponentIds n="1">
<Id>2</Id>
</ComponentIds>
</AsmPath>
</AsmPaths>
</Product>
A single part is defined which is used in a single component. The assembly path to that
component contains one id.
It is the assembly path of the product design component that is associated with the actual
component. Actual components are located in the ActualComponentSet element of the
Results element:
<Results>
…
<ActualComponentSet n="1">
<ActualComponent id="4">
<SerialNumber>X124578-17</SerialNumber>
<Status>
<InspectionStatusEnum>PASS</InspectionStatusEnum>
</Status>
<AsmPathId>3</AsmPathId>
</ActualComponent>
</ActualComponentSet>
…
</Results>
Each actual component has a QIF id which allows it to be referenced by one or more
measurement results (the same product sample may be measured more than once) and/or by
individual feature measurements:
<Results>
…
<MeasurementResults id="86">
…
<MeasuredFeatures>
<FeatureMeasurements>
<PointFeatureMeasurement id="20">
<FeatureItemId>19</FeatureItemId>
<Location>2466.9 774.31 944.84</Location>
<ActualComponentId>4</ActualComponentId>
</PointFeatureMeasurement>
…
</MeasuredFeatures>
<ActualComponentIds n="1">
<Id>4</Id>
</ActualComponentIds>
</MeasurementResults>
…
</Results>
In QIF instance files, many connections between objects are made using an identifier and a
reference to the identifier. For example the connection from a feature measurement to a feature
item is made by putting an identifier in the feature item and a reference to the identifier in the
feature measurement. The derivation hierarchy of ids and references to ids is shown in Figure
14.
xs:unsignedInt
QIFIdAndReferenceBaseType
QIFIdType
QIFReferenceBaseType
QIFReferenceSimpleType
QIFReferenceType
QIFReferenceActiveType
QIFReferenceFullType
All local (i.e. not significant outside the instance file) identifiers in the QIF schemas are of type
QIFIdType. All references to local identifiers are derived from type QIFReferenceBaseType.
Both QIFIdType and QIFReferenceBaseType are unsigned positive integers without leading
zeros. For example, 1 and 3079 are valid, but 001 and +3079 are not. For use between instance
files, the QIFReferenceType and its derived types may have, in addition, an xId attribute. The
QIFReferenceActiveType has, in addition, a boolean active attribute indicating whether the
reference is active. The QIFReferenceFullType has an asmPathId attribute. References that
are significant between instance files are discussed in the subclause 5.13.
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
CylinderFeatureItemType is 26 then the value of the FeatureItemId element of an instance of
CylinderFeatureMeasurementType that uses that feature item is also 26.
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 measurement to its item must
identify a cylinder feature item, 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 variety of
identifier/reference pair. Key and keyref are standard parts of the XML schema definition
language (XSDL). 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 “t:” used with each element name in the xpath is a prefix standing for the QIF namespace
and is required by the rules of XSDL in xpaths in any schema that uses a namespace. The
header of each QIF schema file declares that the “t:” prefix will be used for the
http://qifstandards.org/xsd/qif3 namespace. Almost any other prefix would have worked as well;
“t:” is nice and short.
The CylinderFeatureItemKey:
This sounds complex, but if we look at an instance file, it's fairly straightforward. Here is a
snippet from an abbreviated QIFDocument instance file.
<QIFDocument …>
…
<Results …>
<MeasurementResultsSet n=”1”>
<MeasurementResults …>
…
<MeasuredFeatures>
<FeatureMeasurements n=”30”>
<CylinderFeatureMeasurement id="53">
<FeatureItemId>26</FeatureItemId>
<Axis> … </Axis>
<Diameter>2.5</Diameter>
</CylinderFeatureMeasurement>
<CylinderFeatureMeasurement id="54">
<FeatureItemId>27</FeatureItemId>
<Axis> … </Axis>
<Diameter>2.0</Diameter>
</CylinderFeatureMeasurement>
…
</FeatureMeasurements>
</MeasuredFeatures>
</MeasurementResults>
<MeasurementResultsSet n=”1”>
</Results>
…
<Features>
<FeatureItems n=”30”>
<CylinderFeatureItem id="26">
<FeatureNominalId>33</FeatureNominalId>
<FeatureName>top inner cylinder</FeatureName>
…
</CylinderFeatureItem>
<CylinderFeatureItem id="27">
<FeatureNominalId>34</FeatureNominalId>
<FeatureName>'dial' outer cylinder</FeatureName>
…
</CylinderFeatureItem>
</FeatureItems>
</Features>
…
</QIFDocument>
When a key/keyref checking system reads this instance file and comes to the <QIFDocument>
part, it knows that it needs to check the CylinderFeatureItemKey and the
CylinderFeatureMeasurementToItemKeyref (since they are located in the QIFDocument
element). To check the key, the checker follows every
Features/FeatureItems/CylinderFeatureItem path down to the id attribute. In the snippet
above, there are two such paths, one ending in “26”, the other ending in “27”. The checker puts
the two ids into a collection of ids of CylinderFeatureItems, checking to make sure that each of
these is different from those already in the collection. To check the keyref, the checker follows
every Results/ MeasurementResultsSet/MeasurementResults/MeasuredFeatures/
FeatureMeasurements/CylinderFeatureMeasurement path down to the FeatureItemId
element. In the snippet above, there are two such paths with elements, one with the value 26
and the other with value 27. The checker checks that each of the values is in its collection of ids
of CylinderFeatureItems. The snippet above passes these checks.
The key/keyref pair mechanism catches 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 CylinderFeatureItemType and several instances of
CylinderFeatureMeasurementType (as in the snippet above), only the builder of the instance
file will know which item (26 or 27 in the snippet) is supposed to go with which measurement. 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).
The key/keyref mechanism is useful primarily within a single file. Most of the keyrefs in QIF
allow a reference to the internal id of an external file as an alternative to the id of an internal
object. This is described in the following subclause. In the case of a reference to an object in an
external file, the key/keyref mechanism does not provide an effective check on the type of the
object in the external file. The XSLT checks (as described in subclause 5.4.1) include a check
that a referenced object with a given id exists in an external file, but that particular check does
not include checking that the external object is of the correct type. In addition, all the
connections between aspects of features in external files and between aspects of
characteristics in external files are checked by the XSLT checks. It is planned to augment the
XSLT files so that all key/keyref checks within a file have XSLT counterparts that check between
files.
Any item in QIF that can have user defined attributes can also be assigned a persistent ID.
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 f
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.
The QPIdType in QIF is required to have UUID format, and an instance of QPIdType must be
created by a well known UUID generator. An element whose type is QPIdType is often named
QPId or UUID. Where a QPId is used to identify a data object or a file, its data type is
QPIdType. Where a QPId is used to reference a data object or a file, its data type is
QPIdReferenceType, and it must match an existing QPId.
The external QIF file reference mechanism is enabled by the fact that each QIF document must
have a QPId identifying the document and by the fact that all QIF ids within a document must be
unique. Thus the document-QPId/item-QIF-id pair can be used to uniquely identify a QIF item.
In order 1) to avoid using the external document QPId in each reference, 2) to make the
external QIF file reference mechanism light weight, and 3) to enable automated key/keyref
checking and XSLT checking, an alias, which can be referenced by a simple QIF id, is defined
in the ExternalQIFReferences element of the QIF document.
External QIF file referencing is best illustrated by example. Consider a diameter characteristic
measurement which must reference a diameter characteristic item. In a single QIF document
this might look like:
<QIFDocument …>
<QPId>DF837194-1E55-441b-A5D9-9279F56BCBE9</QPId>
…
<DiameterCharacteristicItem id=”15”>
…
</DiameterCharacteristicItem>
…
<DiameterCharacteristicMeasurement id=”47”>
<CharacteristicItemId>15</CharacteristicItemId>
…
</DiameterCharacteristicMeasurement>
…
In the snippet above, the measurement aspect references the item with id 15 in the same
document.
Now, consider the case in the snippets below where the characteristic items are defined in an
external QIF file. The external QIF file might include the following snippet.
<QIFDocument …>
<QPId>D7258334-F9BF-4201-94FB-3D39EA74937B</QPId>
…
<DiameterCharacteristicItem id=”15”>
…
</DiameterCharacteristicItem>
…
To reference the item id in the external QIF document, first, an external document reference
must be established and then the external item is referenced using the xId attribute:
<QIFDocument …>
<QPId>AFD08F25-CAE6-4647-9667-674D5D66033F</QPId>
…
<ExternalQIFReferences n=”1”>
<ExternalQIFDocument id=”101”>
<QPId>D7258334-F9BF-4201-94FB-3D39EA74937B</QPId>
</ExternalQIFDocument>
</ExternalQIFReferences>
…
<DiameterCharacteristicMeasurement id=”47”>
<CharacteristicItemId xId=”15”>101</CharacteristicItemId>
…
</DiameterCharacteristicMeasurement>
…
The <ExternalQIFDocument id=”101”> object identifies the external QIF file via its QPId and
provides id 101 to enable referencing that file. The xId=”15” in the diameter characteristic
measurement then points to the item id in the external QIF document whose internal id is 101.
At the time a downstream process is started, (when measurements are starting to be taken, for
example), a QIFDocument instance file containing the output of an upstream planning process
is likely to exist; call it the QIFPlan file The plan file may have a QIFDocument with Product
and Plan elements as shown in the following instance file snippet.
<QIFDocument …>
<QPId>AFD08F25-CAE6-4647-9667-674D5D66033F</QPId>
…
<Product>
product contents
</Product>
<Plan>
plan contents
</Plan>
</QIFDocument>
When measurements are taken and it is desired to put the data in a QIFDocument instance file,
the data must not simply be added to the QIFPlan file. A new QIFDocument instance file (call it
the QIFResults file) should be created containing a Results element. Most elements of the
QIFDocument in the QIFPlan file may be copied without change into the QIFDocument in the
QIFResults file, but any Version, VersionHistory, or Header element must be new. The
QIFResults file might appear as shown in the following snippet. Note the new QPId.
<QIFDocument …>
<QPId>AFD08F25-CAE6-4647-9667-674D5D66071A</QPId>
…
<Product>
product contents (same as in previous snippet)
</Product>
<Plan>
plan contents (same as in previous snippet)
</Plan>
<Results>
results data here
</Results>
</QIFDocument>
The way in which local identifiers (ids) are handled when a new downstream file is created from
an old upstream file is up to the application building the new file. The local identifiers from the
upstream process might be preserved or they might be changed. A simple method of preserving
ids from the QIFPlan file is to start numbering new ids in the QIFResults file at a value larger
than the maximum id value in the QIFPlan file. In any event, no system processing QIF instance
files should rely on local identifiers remaining the same between files.
QPIds used for interconnecting QIF information (in contrast to QPId user attribute identifiers)
identify data on a coarse level: the whole document, or file sections describing a measurement
plan, a measurements result, etc. The QIF id mechanism is used for identifying data at a fine
level: an individual feature, characteristic, measurement point, etc.
QIFDocument
Required QPId element of the QIFDocumentType
UUID element of the CharacteristicDesignatorType at several places in the
Characteristics element
UUID element of feature nominals and feature items in the Features element
MeasurementResources
ThisInstanceQPId in the Version element of the MeasurementResourcesType
Plan
ThisInstanceQPId in the Version element of the PlanType
Product
ThisInstanceQPId in the Version element of the File element of the Header
element of the ProductType
ThisInstanceQPId in the Version element of the File element of the Header
element of the PartType
ThisInstanceQPId in the Version element of the File element of the Header
element of the AssemblyType
UUID element of the PartAssemblyBaseType and the ComponentType
Results
ThisInstanceQPId in the Version element of the ResultsType
ThisResultsInstanceQPId element of the MeasurementResultsType
Rules
ThisInstanceQPId in the Version element of the QIFRulesType
UUID element of the QIFRuleBaseType
Statistics
ThisInstanceQPId in the Version element of the StatisticalStudyPlanBaseType
ThisInstanceQPId in the Version element of the CorrectiveActionPlanType
ThisStatisticalStudyResultsInstanceQPId element of the
StatisticalStudyResultsBaseType
All uses of QPIds are optional with the exception of the required QPId element of the
QIFDocumentType. The document level QPId is required because uniquely identifying QIF
documents is the only reliable method of connecting files across the workflow shown in Figure
2. Optional version QPIds may be used to strengthen connections. A key in QIFDocument.xsd
(when applied by an instance file processor) checks that all instances of QPIdType in an
instance file have the correct format and are unique within the file.
When a downstream QIF instance file is created from an upstream QIF instance file, although
the QPId of the document itself must be new, the QPIds identifying coarse elements in the QIF
document may remain unchanged if the measurement plan, resources, etc. they identify are
unchanged. If elements such as characteristics, features, and product are copied into the
downstream file, any QPIds they contain (in QPId user attribute data, for example) should be
copied unchanged. If any part of a file section identified by a QPId (other than local ids) is
changed after copying, the QPId should be changed, too. A changed local id should result in a
changed QPId only if the local id change results in a change in the structure obtained when all
local id references have been resolved.
QPIds uniquely identify QIF instance files and objects in the files. In addition, references to
QPIds may be used to connect sections of QIF instance files (in different files or in the same
file) as shown in Figure 16. Where QPIds are used in QIFPlan.xsd they indicate the rules that
were used in developing the plan and/or the rules to be used in refining the plan. Where QPIds
are used in QIFStatistics.xsd, they serve to identify results from external QIF instance files.
Where QPIds are used in Traceability.xsd they serve to identify the plan that was used for
MeasurementResults and for Statistics. A reference to a QPId is always made using an
instance of QPIdReferenceType.
QIFPlan.xsd
RulesToUseQPId in PlanType
RulesUsedQPId in PlanType
QIFStatistics.xsd
ResultsQPId in StatisticalStudyResultsBaseType
Traceability.xsd
ReferencedQIFPlanInstance in InspectionTraceabilityType
ReferencedQIFPlanInstance in PreInspectionTraceabilityType
The references shown in Figure 16 are made using the QPIdFullReferenceType which has two
elements, each of which is of QPIdReferenceType. The required ItemQPId element is the
QPId of the referenced item. Each optional DocumentQPId element is the QPId (found in the
Version) of a QIFDocument that contains the item. For example, the RulesToUseQPId in a
measurement plan might be as follows.
<RulesToUseQPId>
<ItemQPId>ed43400a-29bf-4ec6-b96c-e2f846eb6f00</ItemQPId>
<DocumentQPId>fd43400a-29bf-4ec6-b96c-e2f846eb6ff6</DocumentQPId>
</RulesToUseQPId>
The DocumentQPId element is included so that the item will be easier to find. Adding an entry
to the ExternalQIFReferences element associating the document QPId with its location defined
by its URI further facilitates finding the item.
Each part and assembly in a QIF instance file may correspond to an internal model. The internal
model is as described in Clause 7.
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 an external CAD model, 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. It may be assumed that identifiers in a digital drawing that is not a CAD model are
persistent.
QIF supports the following types of external models for parts and assemblies in the elements of
the DefinitionExternal element.
Parts
PrintedDrawingType
DigitalDrawingType
DigitalModelType
PhysicalModelType
Assemblies
PrintedDrawingType
DigitalDrawingType
DigitalModelType
PhysicalModelType
To connect digital drawing or digital model entities to QIF features and characteristics, the digital
entities must be identified, and the association from a feature or characteristic to one or more
digital entities must be made. Printed drawings and physical models do not have entity
identifiers that could be connected to features or characteristics.
The connection of an external digital entity to a feature or characteristic is made in the nominal
feature or nominal characteristic, both of which contain an EntityExternalIds element that is a
list of the QIF ids for the associated external entities.
Internal entities are connected to features and characteristics in exactly the same way, except
that the ids of the internal entities are in an EntityInternalIds element.
An abbreviated Part section from a QIF instance file is shown below. It has one model (with id
64). The snippet shows two Entitys (with ids 68 and 69). One of those refers to the EntityId
"TopDistanceRightPlane", and the other refers to the EntityId "TopDistanceLeftPlane".
<Part>
…
<DefinitionExternal>
…
<DigitalModel id="64">
…
<Entities n=”2”>
<Entity id="68">
<EntityId>TopDistanceRightPlane</EntityId>
</Entity>
<Entity id="69">
<EntityId>TopDistanceLeftPlane</EntityId>
</Entity>
</Entities>
</DigitalModel>
</DefinitionExternal>
</Part>
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 EntityExternalIds
that correspond to each feature instance. Here is a snippet from a QIF instance file in which a
single opposite parallel planes feature references the planes in the preceding snippet.
<Features>
…
<FeatureNominals n=”30”>
…
<OppositeParallelPlanesFeatureNominal id="34">
…
<EntityExternalIds n=”2”>
<Id>68</Id>
<Id>69</Id>
</EntityExternalIds>
…
</OppositeParallelPlanesFeatureNominal>
…
</FeatureNominals>
</Features>
The weld characteristic types are implemented in correspondence with the American Welding
Society (AWS) standard A2.4:2012 “Standard Symbols for Welding, Brazing, and
Nondestructive Evaluation”. That standard describes both the symbols and their meaning. QIF
models the meaning of the weld symbols in the AWS standard as characteristics. The
appearance of the weld symbols in a graphical presentation of weld characteristics must be as
prescribed in the AWS standard. The meanings of the weld characteristics are described in this
subclause.
The appearance of the weld symbols is described here and also in subclause 7.5.7.5.16, which
deals with the details of graphical presentation. A weld symbol consists of at least a horizontal
reference line with an arrow angled 45 degrees up or down at one end, as shown in Figure 18,
Figure 20, Figure 21, Figure 22, and Figure 23. The symbol may also have several other
graphical devices and meaningfully placed text.
The weld characteristic parameters (from all types of weld characteristic parameters sets) and
their meanings follow. Figure 20 shows where the parameter values are placed in a graphical
presentation.
Example:
<Size>
<Numerator>5</Numerator>
<Denominator>16</Denominator>
</Size>
<LengthOfEachWeld>1</LengthOfEachWeld>
<Pitch>3</Pitch>
</OtherSide>
<Staggered>true</Staggered>
</BothSides>
</ WeldFilletCharacteristicNominal>
Example:
The location and orientation of nominal features can be defined in the coordinate space of the
product component to which they belong allowing nominal feature information to be defined
once for a part and shared across multiple instances of the same part in an assembly.
Components (parts and assemblies) are combined to form the product and in the process the
nominal feature information undergoes coordinate transformations until it is in the coordinate
space of the root component, i.e. that of the product itself. In many situations the product will
consist of a single component in which case all nominal feature information is defined in a single
coordinate system.
The coordinate space of the root component is analogous to the global or world coordinate
system in a CAD system: it is the de facto Cartesian coordinate space to which all other
Cartesian spaces can be related.
The location and orientation of measured features are defined in this root component coordinate
space. Measured feature information can be transformed from this root component coordinate
space into other coordinate spaces using transformation information stored in QIF.
translation-only transforms, and the identity transform (no rotation or translation) as well as
combined rotation and translation transforms.
XYZ points, IJK direction vectors, and transformation matrices of local coordinate spaces can all
be defined in a common coordinate system. The origin of the transform is the XYZ location of
the local coordinate space in the common coordinate space. Each row of the rotation matrix is
the direction of an axis of the local coordinate space in the common coordinate space.
Rotation: a 3x3 matrix representing the X, Y and Z axis directions of the local
coordinate space in the common coordinate space having 3 sub-
elements:
XDirection: a unit vector defining the IJK direction of the X-axis direction of the
local coordinate space in the common coordinate space.
YDirection: a unit vector defining the IJK direction of the Y-axis direction of the
local coordinate space in the common coordinate space.
ZDirection: a unit vector defining the IJK direction of the Z-axis direction of the
local coordinate space in the common coordinate space.
Origin: a point defining the origin of the local coordinate space in the common
coordinate 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.
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
with both rotation and translation:
Xi Xj Xk
Yi Yj Yk
Zi Zj Zk
[Ox Oy O𝑧 ]
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:
A transformation matrix with both rotation and translation might look like this in a QIF instance
file:
<Transform id=”2”>
<Rotation>
<XDirection>0.8660254037844 0 -0.5</XDirection>
<YDirection>0 1 0</YDirection>
<ZDirection>0.5 0 0.8660254037844</ZDirection>
</Rotation>
<Origin>5.5179491924311 0.5 3</Origin>
</Transform>
If the transformation matrix is a rotation only matrix then the optional Origin element is missing.
In this case, the origin offset is Ox = Oy = Oz = 0.0 and formula (1) simplifies to:
Formula (2) for the mapping of vectors between common and local spaces is unchanged.
Formula (3) for the mapping points from common space into local space simplifies to:
And formula (4) for mapping the vector (I, J, K) in common space to the vector (i, j, k) in local
space remains unchanged.
A rotation-only transformation matrix might look like this in a QIF instance file:
<Transform id=”2”>
<Rotation>
<XDirection>0.8660254037844 0 -0.5</XDirection>
<YDirection>0 1 0</YDirection>
<ZDirection>0.5 0 0.8660254037844</ZDirection>
</Rotation>
</Transform>
If the transformation matrix is a translation only matrix then the optional Rotation element is
missing. In this case, the rotation matrix is the 3 by 3 identity matrix and formula (1) simplifies to:
X = x + Ox,
Y = y + Oy, (1b)
Z = z + Oz.
If there is no rotation then vectors remain unchanged and formula (2) simplifies to:
I = i,
J = j, (2b)
K = k.
Formula (3) for mapping points from common space into local space simplifies to:
x = X – Ox,
y = Y – Oy, (3b)
z = Z – Oz.
i = I,
j = J, (4b)
k = K.
A translation-only transformation matrix might look like this in a QIF instance file:
<Transform id=”2”>
<Origin>5.5179491924311 0.5 3</Origin>
</Transform>
If the transformation matrix has neither translation nor rotation then both the optional Origin and
Rotation elements are missing and points and vectors remain unchanged in the transformation:
X = x,
Y = y, (1c)
Z = z.
x = X,
y = Y, (3c)
z = Z.
And the vector transformations are described by formulas (2b) and (4b).
A transformation matrix with neither rotation or translation might look like this in a QIF instance
file:
<Transform id=”2”/>
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):
5.16.3 Transforms
The CoordinateSystemCoreType provides the minimum mathematical description for a
coordinate transformation. The TransformMatrixType is derived from the
CoordinateSystemCoreType adding the ability to define the units, accuracy, etc. of the origin
point.
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 and Attributes elements allow for the transform to be identified, have
arbitrary information and data added.
A single coordinate system can coincide with the coordinate space of the root component. This
coordinate system can be identified with the optional CommonCoordinateSystemId element of
the CoordinateSystemListType.
The meaning of and differences between these two transformation matrices is perhaps best
illustrated by example.
The example in Figure 24 shows two Cartesian axis systems. In the context of QIF, if these two
axis systems are established by aligning to measured features, they can become coordinate
systems. The coordinate system labelled “common” is established by a set of actual part
features and coincides with the root component 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:
<CoordinateSystem id=”87”>
<NominalTransform>
<Rotation>
<XDirection>1 0 0</XDirection>
<YDirection>0 1 0</YDirection>
<ZDirection>0 0 1</ZDirection>
</Rotation>
<Origin>0 0 0</Origin>
</NominalTransform>
</CoordinateSystem>
…
<Transform>
<ActualTransform>
<Rotation>
<XDirection>1 0 0</XDirection>
<YDirection>0 1 0</YDirection>
<ZDirection>0 0 1</ZDirection>
</Rotation>
<Origin>0 0 0</Origin>
</ActualTransform>
<CoordinateSystemId>87</CoordinateSystemId>
</Transform>
or equivalently (using the ability to omit the optional Rotation element if there is no rotation, and
omit the optional Origin element if there is no origin offset):
<CoordinateSystem id=”87”>
<NominalTransform/>
…
</CoordinateSystem>
…
<Transform>
<ActualTransform/>
<CoordinateSystemId>87</CoordinateSystemId>
</Transform>
If the coordinate system labelled “local” is established by a different set of measured features
than those 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:
<CoordinateSystem id=”88”>
<NominalTransform>
<Rotation>
<XDirection>0.866025 0 -0.5</XDirection>
<YDirection>0 1 0</YDirection>
<ZDirection>0.5 0 0.866025</ZDirection>
</Rotation>
<Origin>5.517949 0.5 3</Origin>
</NominalTransform>
…
</CoordinateSystem>
…
<Transform>
<ActualTransform>
<Rotation>
<XDirection>0.867865 0.009721 -0.496705</XDirection>
<YDirection>-0.009058 0.999952 0.003743</YDirection>
<ZDirection>0.496717 0.001251 0.867912</ZDirection>
</Rotation>
<Origin>5.517937 0.499941 2.999991</Origin>
</ActualTransform>
<CoordinateSystemId>88</CoordinateSystemId>
</Transform>
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.
alignment feature is often nominally orthogonal to the primary axis but need not be so as long
as it is not parallel to the primary axis.
A CAD coordinate system may be associated with a PMI coordinate system by populating the
InternalCADCoordinateSystemId element of the CoordinateSystemType with the id of an
instance of CADCoordinateSystemType. A similar link to a coordinate system defined in a
CAD file using a non-QIF format can be established by using the
ExternalCADCoordinateSystemId element.
The actual transforms associated with these coordinate systems are collected as a list of
Transform elements (of type CoordinateSystemActualTransformType) in the
CoordinateSystemsActualTransformsType. Each MeasurementResults element has a sub-
element CoordinateSystemsActualTransforms (of type
CAD coordinate systems representing CAD user interface coordinate system graphical
elements are collected as a list of CoordinateSystem elements (of type
CADCoordinateSystemType) in the CoordinateSystemSetType.
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 six values:
REGARDLESS (Y14,5 1983 specific) when the symbol appears after the
tolerance (RFS)
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
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.
tolerance zone, using chain lines on a drawing to define the extents of the tolerance zone, using
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 GroupFeatureXXXType or as a constructed feature, in which case a datum
label like may be assigned to the compound feature.
The optional FeatureNominalIds 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.
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 measured 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)
The case where zero Datum elements are present corresponds to a feature control frame with
no datum reference frame, like .
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 by using the FileUnits element of
the QIFDocumentType. The FileUnits element is defined in Units.xsd. The FileUnits element
specifies an optional primary unit for each of the unit types used in the instance file, and optional
alternate units. If any quantity of a given unit type appears with a unit name 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.
For example, an instance file might give the diameter of a circle feature as follows:
<Diameter>7.5</Diameter>
If the LinearUnit 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
LinearValueType 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 should 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>
<LinearUnit>
<SIUnitName>meter</SIUnitName>
<UnitName>millimeter</UnitName>
<UnitConversion>
<Factor>0.001</Factor>
<Offset>0</Offset>
</UnitConversion>
</LinearUnit>
…
</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
included in the instance file, the UnitName just serves as an alias for the SI unit. For example if
the unit type is LinearUnit, 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:
<PrimaryUnits>
<LinearUnit>
<SIUnitName>meter</SIUnitName>
<UnitName>millimeter</UnitName>
<UnitConversion>
<Factor>0.001</Factor>
<Offset>0</Offset>
</UnitConversion>
</LinearUnit>
<PMILinearUnit>
<SIUnitName>meter</SIUnitName>
<UnitName>inch</UnitName>
<UnitConversion>
<Factor>0.0254</Factor>
<Offset>0</Offset>
</UnitConversion>
</PMILinearUnit>
…
</PrimaryUnits>
If a LinearUnit is not included in the PrimaryUnits, the SI unit (meter in the case of linear unit)
applies by default everywhere in an instance file that is not covered by a PMILinearUnit that is
included in the PrimaryUnits (and similarly for all other unit types).
<OtherUnits>
<LinearUnit>
<SIUnitName>meter</SIUnitName>
<UnitName>inch</UnitName>
<UnitConversion>
<Factor>0.0254</Factor>
<Offset>0</Offset>
</UnitConversion>
</LinearUnit>
…
</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 linearUnit=”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 features and the opposite planes features is much
like the relationship between a circle and a cylinder: the opposite lines features are a two-
dimensional planar section of a real feature and the opposite planes features are a three-
dimensional representation of a real feature.
The relationship between the angled planes feature and parallel planes feature is much like the
relationship between a cone and a cylinder. The former is not a feature of size and the latter is
not. A cone may be sectioned by a plane producing a circle which is a feature of size. Similarly
an angled planes feature, which is not a feature of size, can be sectioned by a suitably oriented
plane to produce a parallel lines feature which is a feature of size.
Figure 25 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. In the case of an angled planes feature the width is specified at the location of
the point defined in the center plane. 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 26 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 26). The LengthVector element would have the same orientation as the
CenterLine in Figure 25.
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 25 and Figure 26 show examples of the ROUND and FLAT end types respectively.
Figure 29 below shows an example of the OPEN end type (upper right).
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 27 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 centers 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 28 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 29 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 29 is an example of the THROUGH bottom type; the slot in
the upper right is an example of the BLIND bottom type.
5.19.6 Taper
If an opposite sides feature is tapered then it is represented by one of the angled sides features.
The TaperAngle element is populated with a non-zero value and 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).
Figure 30 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
centers of the circular ends.
5.19.7 Draft
The opposite angled planes feature instead of a taper angle 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 31 shows the relationship between the draft angle and the center plane of a slot with
draft.
In addition to measured elements which correspond directly with nominal elements like
measured width and length corresponding with nominal width and length respectively, there are
measured data elements for minimum and maximum of size values.
The elements necessary to describe these two feature types are the same with the exception
that the sweep extents for a cone feature are optional while for a conical segment they are
required. In the case of a cone feature the optional Sweep element might be used to exclude a
portion of the conical surface to avoid a keyway. For a conical segment the required Sweep
element defines the extent of the feature which may be the corner of a rounded pocket with
draft.
The locating point for a cone or conical segment is defined by the AxisPoint sub-element of the
Axis element. The orientation of the cone or conical segment is defined by the Direction sub-
element of the Axis element. The cone’s axis direction defined by the Direction sub-element
always points towards the widening end of the cone The Diameter element is the diameter of
the cone in a plane perpendicular to the direction vector at the axis point. The cone or conical
segment can be defined by either its full included angle (the angle between opposite sides) or
its half angle (the angle between a side and its central axis) by choosing between the FullAngle
or HalfAngle element respectively.
Figure 32 – An unbounded cone located at a reference diameter and defined by its half angle
Figure 32 shows a cone with its location defined at a diameter and with its half angle. This cone
definition is stable at small angles and handles the degenerate case of a cylinder.
Figure 33 – An unbounded cone located at its vertex and defined by its full angle
Figure 33 shows a cone with its location defined at its vertex and with its half angle. This cone
definition is equivalent to that of many CMM systems including DMIS.
If both the optional LargeEndDistance and SmallEndDistance elements are given then the
cone is a conical frustum (or a segment of a frustum): a truncated cone without a pointed end. If
the optional LargeEndDistance element is present but the SmallEndDistance element is
missing then the cone or conical segment has a pointed end.
The effect of the locating point on the sign and value of the LargeEndDistance and
SmallEndDistance elements is shown in
Figure 34, Figure 35, Figure 36, and Figure 37. Not shown is the case where the diameter at the
locating point is larger than either the small or large ends in which case both distances would be
negative. (In all diagrams the required full or half angle element is not shown.)
Figure 38 and Figure 39 show the bounding of a cone defined with its locating point at its vertex.
derivation is analogous for the definition and nominal aspects. The features in the pattern are
identified by the FeatureNominalIds element inherited from the GroupFeatureNominalType.
The locations of these features must be very close to the locations specified by the pattern. All
four pattern types have a FirstFeatureLocation element; which must be very close to the
location of one of the nominal features in the pattern – not necessarily the first one listed in the
FeatureNominalIds.
There are four specific derived types of pattern feature: linear, circle, circular arc, and
parallelogram (which subsumes rectangular patterns). These are described in the following four
subclauses.
5
4
Center
6
3
FirstFeatureLocation
1 2
Figure 40 – PatternFeatureCircle with FeatureDirection omitted
5 4
FeatureDirection
Center
6 3
FirstFeatureLocation
2
1
Figure 41 – PatternFeatureCircle with FeatureDirection
4
3
IncrementalArc
Center FeatureDirection
1
FirstFeatureLocation
Figure 42 – PatternFeatureCircularArc
FeatureDirection
1 2 3
FirstFeatureLocation
LineDirection
Incremental
Distance
Figure 43 – PatternFeatureLinear
4 5 6 FeatureDirection
BetweenRowDirection
RowSeparationDistance
FirstFeature
Location 3
1 2 AlongRowDirection
Incremental
RowDistance IncrementalRowDistance = 5.3
RowSeparationDistance = 3.2
AlongRowDirection = (1.0, 0.0, 0.0)
BetweenRowDirection = (0.6, 0.8, 0.0)
FeatureDirection = (0.0, 1.0, 0.0)
NumberOfFeaturesPerRow = 3
NumberOfRows = 2
Figure 44 – PatternFeatureParallelogram
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 45. 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.
TextThreadSpecificationType. The single lead and multi-lead types allow for the unambiguous
capturing of detailed information in their elements, some of which resolve to enumerations
based on industry standards. If these pre-defined data containers are not sufficient to capture a
thread specification then that specification may be entered as a simple text string via the
TextSpecification element of TextThreadSpecificationType.
For a set feature, the Set element of the DeterminationMode element on the feature item is
chosen. If the feature is checked then the Checked element of the DeterminationMode
element on the feature item is chosen. The differentiation between set and checked features is
the only required information from the DeterminationMode element.
For a directly 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 item by its id in the
FeatureItemId element. In addition the referenced component of the base feature is identified
by the ReferencedComponent element. Usually the measured component, but sometimes the
nominal component, of a base feature is used in the construction of the feature measurement.
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 individual construction methods are described in Features.xsd. The description includes the
number and types of base feature references required for the particular construction types.
The descriptions of the various construction methods can be found in Clause 6: QIF Library -
Information Model. Some construction method types are similar; these methods are clarified and
differentiated in the following subclauses.
the point indexes on that feature cannot because the feature is typically measured with a
scanning device resulting in a large point set variable in both size and density.
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 of 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 measurement.
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.3 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 measured 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 measured data elements from the base feature may or may
not have corresponding data elements in the feature being constructed. Only those measured
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 measured 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.
In Figure 10 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
CharacteristicDesignator element on the characteristic nominal. This is the normal location for
indicating the characteristic designator and criticality except in special circumstances.
When the characteristic designator is shared among several items and it is necessary to assign
augmented labels or balloon numbers to each item, this is accomplished with the
CharacteristicDesignator element on the characteristic item. A balloon number of “1” may
result in individual characteristic designators with 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 subclause 5.9.4) 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
CharacteristicDesignator element on the characteristic definition is used.
If the characteristic designator spans several different characteristic types then the same
characteristic designator must be re-defined for each characteristic type; QIF does not allow for
characteristic definitions to be shared among characteristics of different types.
The QIF information model enables users to insert otherwise unmodeled information in many
places in QIF instance files by using Attributes and/or PartNotes. Note the capital A and bold
font on Attributes; this is entirely different from XSDL attributes.
An Attributes element is a list of AttributeXXX elements where the XXX indicates the type of
data. The full list of AttributeXXX elements is shown in Figure 46.
AttributeBool Boolean
AttributeQPId QPIdType
AttributeI1 integer
AttributeI2 list of two integers
AttributeI3 list of three integers
AttributeD1 double
AttributeD2 list of two doubles
AttributeD3 list of three doubles
AttributeStr string
AttributeTime XML dateTime
AttributeUser user defined data in a binary array or XML structure
Attributes are intended to be used to convey important information 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 Attributes. The AttributeStr element can be
used to convey any sort of information in natural language. The types that have an Attributes
element in the QIF model are shown in Figure 47. Where there is an Attributes element in a
base type, all derived types will have one, too.
Characteristics.xsd QIFMeasurementResources.xsd
CharacteristicBaseType EnvironmentalRangeType
CharacteristicGroupType MeasurementResourceBaseType
QualificationType
Features.xsd
FeatureBaseType TemperatureType
FeatureZoneBaseType UserDefinedAxisType
MeasuredPointSetType
QIFPlan.xsd
IntermediatesPMI.xsd ActionMethodBaseType
AlgorithmType MeasurandBaseType
AlignmentOperationBaseType PlanElementBaseType
AngularToleranceDefinitionType WorkInstructionBaseType
AngularToleranceType
AreaToleranceType QIFResults.xsd
CoordinateSystemType ActualComponentType
DatumType MeasurementResultsType
DatumDefinitionType
DatumReferenceFrameType QIFStatistics.xsd
DatumTargetType ControlMethodType
ForceToleranceType CorrectiveActionPlanType
LinearToleranceDefinitionType StatisticalStudyPlanBaseType
LinearToleranceType StatisticalStudyResultsBaseType
MassToleranceType
MaterialType Statistics.xsd
OrganizationType AssignableCauseType
PressureToleranceType CharacteristicStatsEvalBaseType
SoftwareType CorrectiveActionType
SpeedToleranceType StatsBaseType
StandardType StatsNumericalBaseType
SubstituteFeatureAlgorithmType StatsWithTolNumericalBaseType
TemperatureToleranceType SummaryStatisticsType
ThreadSpecificationDetailedBaseType
TimeToleranceType Traceability.xsd
TransformInstanceType ActualProductTraceabilityType
EnvironmentType
PrimitivesPD.xsd InspectionTraceabilityType
NodeWithIdBaseType ManufacturingProcessTraceabilityType
PreInspectionTraceabilityType
QIFDocument.xsd ProductTraceabilityType
QIFDocumentType
Visualization.xsd
FontType
PMIDisplayType
The PartNoteType models a note that needs to be displayed graphically and may contain only
text. The ProductType has a PartNoteSet element of PartNoteSetType that is a list of
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.
QIF version 3.0 uses all the capabilities of XSDL just mentioned:
In this subclause, 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.
With few exceptions names are descriptive and formed by concatenation without abbreviation.
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
All 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 "FeatureItemType",
"FeatureDefinitionType", "FeatureNominalType", or "FeatureMeasurementType".
All names of instantiable characteristic xs:types end in "CharacteristicItemType",
"CharacteristicDefinitionType", "CharacteristicNominalType", or
"CharacteristicMeasurementType".
All names of enumerated xs:types end in "EnumType".
Names of xs:types that are parent xs:types not intended to be instantiated end in
"BaseType", and the types are abstract.
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 single QIF id almost always ends in "Id" and
is always of one of the derived types of QIFReferenceBaseType. If the value of an xs:element
is a list or array 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 subclause 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 xsi:type declaration identifying one of the derived
types. The xsi prefix is used for the standard XML instance namespace,
http://www.w3.org/2001/XMLSchema-instance.
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 xsi: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 several places.
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 35) 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.
The sentence, “This element is in an optional choice.” describes a situation in which the
element itself is not optional, but the element is effectively optional because the choice it
is in is optional.
6 QIF Library
6.1 Introduction
The QIF Library contains fifteen schema files that support the QIF Application schema files. The
files and the area covered by each are:
quality statistics.
The QIF Library, and QIF in general cover both pre-measurement and post-measurement PMI
information.
The sizes of these files vary widely, from 300 lines for Auxiliary.xsd to well over 23,000 lines for
Features.xsd. The sizes of the subclauses of this clause vary similarly.
The descriptions of the contents of the schema files in this clause are high-level to give the
reader a general understanding of each library file. For full details of every type, the HTML data
dictionary (which provides two-way navigation) is most convenient to use. The XML schema
files themselves contain equivalent information and for some uses are preferable to the HTML.
One significant change in terminology (which did not change meaning) appears in over a
thousand places. That is, the term for the results of inspection has changed from “actual” to
“measured”. As a result, the names of most elements and types containing "Actual" have been
changed to instead contain "Measured" or “Measurement”. This change in itself has little impact
on the capability of QIF but has a large impact on existing software implementations. Most of
these changes were in components of element names and type names; for example,
DiameterCharacteristicActualType became DiameterCharacteristicMeasurementType. The
two QIF library files most affected by that change are Characteristics.xsd and Features.xsd.
A significant change was made to the relationships between the four aspects of features.
Previously a measured (actual) feature was required to reference a feature item, now the
reference to the feature item is optional; previously a feature item could optionally reference a
feature nominal, now the reference to the feature nominal is required. This change brings the
QIF feature aspects more into harmony with manufacturing and inspection stages: the nominal
and definition aspects come into being at the design stage, the item aspect comes into being at
the inspection planning stage, and the measurement aspect comes into being at inspection
execution stage.
A modest change expands the identification of the GD&T standard used to include the ability to
define associated standards and specifications. Associated is the ability to explicitly define
software application and algorithms for substitute feature algorithms and statistical calculations.
A minor addition is the ability to optionally include a simple list of measured values used in a
statistical calculation in place of references to measured characteristics that contain those
values.
A detailed list of all changes in each schema file will be made available.
6.2 Auxiliary.xsd
Auxiliary geometry is geometry items that a user might want to see that are not in the boundary
representation of an object, such as the axis of a cylinder. This includes, for example,
PointAuxiliaryType, LineAuxiliaryType, and PlaneReferenceType.
CAD coordinate systems are coordinate systems defined in CAD and included in QIF to support
CAD to CAD and CAD to DME transfer.
6.3 Characteristics.xsd
The XML Schema language definitions for characteristics form a type hierarchy by using XSDL
extensions to derive more specialized types from more general types. There are four
hierarchies, one for each aspect. Each of the four is headed by CharacteristicBaseType. The
prototype followed by each of the four hierarchies is shown in Figure 49. The word Aspect is
shown in the names in the figure where one of the four aspect names (Item, Definition,
Nominal, or Measurement) would appear. In the figure, inheritance is indicated by indenting an
additional level. For example, the inheritance path to CylindricityCharacteristicAspectType is:
CharacteristicBaseType
CharacteristicAspectBaseType
GeometricCharacteristicAspectBaseType
FormCharacteristicAspectBaseType
CylindricityCharacteristicAspectType
The CharacteristicBaseType and other types whose name includes Base are abstract types
and cannot be instantiated. The hierarchy has 73 leaf types that are not abstract and can be
instantiated. Most of the leaf types exist because they are included in ASME GD&T, ISO GPS,
or AWS A2.4:2012 (for welding). Nine of the types exist only so that users can create user-
defined characteristics for which there is a defined unit (Angular, Area, Force, Linear, Mass,
Pressure, Speed, Temperature, and Time). User-defined characteristics not using any of
those units may be defined with either UserDefinedAttributeCharacteristicAspectType or
UserDefinedUnitCharacteristicAspectType.
CharacteristicBaseType
CharacteristicAspectBaseType
AreaCharacteristicAspectBaseType
UserDefinedAreaCharacteristicAspectType
DimensionalCharacteristicAspectBaseType
AngularCharacteristicAspectBaseType
AngleCharacteristicAspectType
AngleBetweenCharacteristicAspectType
AngleFromCharacteristicAspectType
UserDefinedAngularCharacteristicAspectType
CoordinateCharacteristicAspectBaseType
AngularCoordinateCharacteristicAspectType
LinearCoordinateCharacteristicAspectType
LinearCharacteristicAspectBaseType
ChordCharacteristicAspectType
ConicalTaperCharacteristicAspectType
CurveLengthCharacteristicAspectType
DepthCharacteristicAspectType
DiameterCharacteristicAspectType
DistanceBetweenCharacteristicAspectType
DistanceFromCharacteristicAspectType
FlatTaperCharacteristicAspectType
HeightCharacteristicAspectType
LengthCharacteristicAspectType
RadiusCharacteristicAspectType
SphericalDiameterCharacteristicAspectType
SphericalRadiusCharacteristicAspectType
SquareCharacteristicAspectType
ThicknessCharacteristicAspectType
UserDefinedLinearCharacteristicAspectType
WidthCharacteristicAspectType
GeometricCharacteristicAspectBaseType
FormCharacteristicAspectBaseType
CircularityCharacteristicAspectType
ConicityCharacteristicAspectType
CylindricityCharacteristicAspectType
EllipticityCharacteristicAspectType
FlatnessCharacteristicAspectType
OtherFormCharacteristicAspectType
SphericityCharacteristicAspectType
StraightnessCharacteristicAspectType
ToroidicityCharacteristicAspectType
LocationCharacteristicAspectBaseType
CoaxialityCharacteristicAspectType
ConcentricityCharacteristicAspectType
PositionCharacteristicAspectType
SymmetryCharacteristicAspectType
OrientationCharacteristicAspectBaseType
AngularityCharacteristicAspectType
ParallelismCharacteristicAspectType
PerpendicularityCharacteristicAspectType
ProfileCharacteristicAspectBaseType
LineProfileCharacteristicAspectType
PointProfileCharacteristicAspectType
SurfaceProfileCharacteristicAspectType
SurfaceProfileNonUniformCharacteristicAspectType
RunoutCharacteristicAspectBaseType
CircularRunoutCharacteristicAspectType
TotalRunoutCharacteristicAspectType
ForceCharacteristicAspectBaseType
UserDefinedForceCharacteristicAspectType
MassCharacteristicAspectBaseType
UserDefinedMassCharacteristicAspectType
PressureCharacteristicAspectBaseType
UserDefinedPressureCharacteristicAspectType
SpeedCharacteristicAspectBaseType
UserDefinedSpeedCharacteristicAspectType
SurfaceTextureCharacteristicAspectType
TemperatureCharacteristicAspectBaseType
UserDefinedTemperatureCharacteristicAspectType
ThreadCharacteristicAspectType
TimeCharacteristicAspectBaseType
UserDefinedTimeCharacteristicAspectType
UserDefinedAttributeCharacteristicAspectType
UserDefinedUnitCharacteristicAspectType
WeldCharacteristicAspectBaseType
WeldBevelCharacteristicAspectType
WeldCompoundCharacteristicAspectType
WeldEdgeCharacteristicAspectType
WeldFilletCharacteristicAspectType
WeldFlareBevelCharacteristicAspectType
WeldFlareVCharacteristicAspectType
WeldJCharacteristicAspectType
WeldPlugCharacteristicAspectType
WeldScarfCharacteristicAspectType
WeldSeamCharacteristicAspectType
WeldSlotCharacteristicAspectType
WeldSpotCharacteristicAspectType
WeldSquareCharacteristicAspectType
WeldStudCharacteristicAspectType
WeldSurfacingCharacteristicAspectType
WeldUCharacteristicAspectType
WeldVCharacteristicAspectType
6.3.3 DefaultCharacteristicDefinitions
The DefaultCharacteristicDefinitions element shown in Figure 48 is list of default or “unless
otherwise specified” characteristic definitions.
6.3.4 DefaultToleranceDefinitions
The DefaultToleranceDefinitions element shown in Figure 48 is a list of tolerance definitions
with ids. The list may be a mix of LinearTolerance and AngularTolerance elements. A
tolerance in the list can be referenced by id from a characteristic definition that uses a tolerance
of the correct type. Key/keyref checks are included for this.
6.3.5 CharacteristicGroups
The nominal-to-definition keyref checks are in Characteristics.xsd. The other two types of keyref
checks are in QIFDocument.xsd.
QIF enables referencing objects in external QIF instance files. Keyrefs apply only within an
instance file. All of the 200-plus keyref constraints between aspects of characteristics within an
instance file have been implemented between instance files using XSLT, as described in Clause
5.
6.3.7 ToleranceZones
Characteristics.xsd defines types that describe the shapes of tolerance zones used in the
characteristics as shown in Figure 50.
CoaxialityDiametricalZoneType
CoaxialityNonDiametricalZoneType
ConcentricityDiametricalZoneType
ConcentricityNonDiametricalZoneType
ConcentricitySphericalZoneType
OrientationDiametricalZoneType
OrientationPlanarZoneType
PositionDiametricalZoneType
PositionNonDiametricalZoneType
PositionSphericalZoneType
StraightnessDiametricalZoneType
StraightnessNonDiametricalZoneType
Each of those has a head whose type is the base type for the aspect plus 73 substitutable
elements (one for each instantiable characteristic type).
6.4 Expressions.xsd
The Expressions.xsd schema file defines QIF-specific expressions for supporting QIFRules.xsd.
Expressions.xsd includes GenericExpressions.xsd (discussed in subclause 6.6), so the
capabilities of GenericsExpressions.xsd are available for rules.
Expressions are involved in QIF rules when a feature (possibly associated with a characteristic)
is being examined for one of three purposes: (1) picking the number of target hit points on the
feature for probing, (2) picking the strategy (pattern) for hit points, or (3) picking a substitute
feature algorithm for fitting the feature to hit points. The (possibly automated) system that is
making the decisions is working in an environment in which sampling category has been set.
The system is expected to have access to information about the feature and the characteristic (if
there is one). Sampling category is discussed further in Clause 10.
Expressions are also used in rules for selecting dimensional metrology equipment (DMEs).
CharacteristicIsType
FeatureIsDatumType
FeatureIsInternalType
FeatureTypeIsType
SamplingCategoryIsType
ShapeClassIsType
ArithmeticParameterBaseType
ArithmeticCharacteristicParameterType
ArithmeticDMEParameterType
ArithmeticFeatureParameterType
ArithmeticPartParameterType
CharacteristicToleranceType
FeatureAreaType
FeatureLengthType
6.5 Features.xsd
The Features.xsd schema file defines types that describe dimensional metrology features. The
top level type defined in the file is the FeatureAspectsListsType. This is used in the
QIFDocument schema as the type of the Features element, as shown in Figure 51.
Figure 52 that has “Aspect” in its name has a type for each of the four aspects, except that there
is no measurement type for the five pattern feature types. Lists of three of the aspects are
included in the FeatureAspectsListsType, as shown in Figure 51. A list of the fourth aspect,
measurement, is included in measurement results.
FeatureBaseType
NonShapeFeatureBaseType
NonShapeFeatureAspectBaseType
MarkingFeatureAspectType
OtherNonShapeFeatureAspectType
ShapeFeatureBaseType
ShapeFeatureAspectBaseType
CurveFeatureAspectBaseType
CircleFeatureAspectType
CircularArcFeatureAspectType
EllipseFeatureAspectType
EllipticalArcFeatureAspectType
ElongatedCircleFeatureAspectType
LineFeatureAspectType
OppositeAngledLinesFeatureAspectType
OppositeParallelLinesFeatureAspectType
OtherCurveFeatureAspectType
PointDefinedCurveFeatureAspectType
GroupFeatureAspectType
PatternFeatureAspectBaseType
PatternFeatureCircleAspectType
PatternFeatureCircularArcAspectType
PatternFeatureLinearAspectType
PatternFeatureParallelogramAspectType
OtherShapeFeatureAspectType
PointFeatureAspectBaseType
EdgePointFeatureAspectType
PointFeatureAspectType
SpecifiedFeatureAspectBaseType
ThreadedFeatureAspectType
SurfaceFeatureAspectBaseType
ConeFeatureAspectType
ConicalSegmentFeatureAspectType
CylinderFeatureAspectType
CylindricalSegmentFeatureAspectType
ElongatedCylinderFeatureAspectType
ExtrudedCrossSectionFeatureAspectType
OppositeAngledPlanesFeatureAspectType
OppositeParallelPlanesFeatureAspectType
OtherSurfaceFeatureAspectType
PlaneFeatureAspectType
PointDefinedSurfaceFeatureAspectType
SphereFeatureAspectType
SphericalSegmentFeatureAspectType
SurfaceOfRevolutionFeatureAspectType
ToroidalSegmentFeatureAspectType
TorusFeatureAspectType
As shown in Figure 51, the Features element also contains the NominalPointSets element.
Feature descriptions in natural language are given in the in-line documentation of the feature
types. Diagrams of some feature types are provided in Clause 5. The Features.xsd file also:
defines methods of constructing features
contains the key/keyref pairs that constrain references from feature nominals to feature
definitions
defines the subsitutionGroups for feature aspects.
All but one of the feature types in DMIS 5.3 have an equivalent in QIF. QIF has some that do
not have an equivalent in the DMIS 5.3 standard. A comparison of the shape feature definitions
in QIF and DMIS is shown in Figure 53. QIF non-shape features are not shown.
QIF features are described using Cartesian coordinates. Notes may be attached to any of the
feature aspects.
The nominal to definition keyref checks are in Features.xsd. The other two types of keyref
checks are in QIFDocument.xsd.
QIF enables referencing objects in external QIF instance files. Keyrefs apply only within an
instance file. All of the 100-plus keyref constraints between aspects of features within an
instance file have been implemented between instance files using XSLT, as described in Clause
5.
The Features.xsd schema file defines four substitutionGroups (one for each feature aspect),
each of which has a head that is the base type for the aspect, plus 37 members (one for each
instantiable feature type).
6.6 GenericExpressions.xsd
The GenericExpressions.xsd schema file defines Boolean expression types, simple arithmetic
expression types, and very simple string expression (actually token) types. The generic
expressions are not specific to QIF.
All expressions are modeled in XSDL (the same way everything else is modeled), not in
condensed symbolic notation. This makes instances of the expressions verbose but very easy
to process. No separate expression parser is needed.
All instantiable arithmetic expression types are derived directly or indirectly from the abstract
(non-instantiable) ArithmeticExpressionBaseType. Instantiable arithmetic expression types
defined in the file that represent arithmetic operators are:
NegateType
MaxType
MinType
PlusType
MinusType
TimesType
DividedByType
MaxType, MinType, PlusType, and TimesType take two or more arguments. MinusType and
DividedByType take exactly two arguments. NegateType takes one argument.
String expressions are defined using the token type, which is a string in which extra white space
is ignored (so that, for example, “ a string ” is considered to be the same as “a string”). There is
an abstract TokenExpressionBaseType from which TokenConstantType is derived. There is
a substitutionGroup headed by the TokenExpression element and containing the
TokenConstant element.
The following common comparisons between arithmetic expressions that return a Boolean
result are defined:
ArithmeticEqualType
GreaterThanType
GreaterOrEqualType
LessThanType
LessOrEqualType
One Boolean expression taking two token (i.e., string) arguments is defined; that is
TokenEqualType.
The Boolean expression types listed above are all instantiable. In addition to those types, non-
instantiable abstract base types are defined, headed by BooleanExpressionBaseType. A
substitutionGroup headed by the BooleanExpression element is defined. Its members are
elements corresponding to the types listed above. The names of the elements are the same as
the names of the types, with “Type” removed.
The expression types ConstantIsType, NegateType, and NotType take one argument.
AndType and OrType take two or more arguments. All other Boolean expression types take
exactly two arguments.
6.7 Geometry.xsd
The Geometry.xsd schema file defines the geometry types shown in Figure 54 and the
geometry set types shown in Figure 55. Subhierarchies of the derivation hierarchy shown in
Figure 54 are also shown in Clause 7. The role of the geometry types in product definition is
covered thoroughly in Clause 7 and is not described here.
The Geometry.xsd file also defines a mathematical core type for each of the instantiable (leaf)
types in Figure 54 and two enumerations.
GeometryBaseType
Curve12BaseType
Aggregate12Type
ArcCircular12Type
ArcConic12Type
Nurbs12Type
Polyline12Type
Segment12Type
Spline12Type
Curve13BaseType
Aggregate13Type
ArcCircular13Type
ArcConic13Type
Nurbs13Type
Polyline13Type
Segment13Type
Spline13Type
MeshTriangleType
PathTriangulationType
PointEntityType
SurfaceBaseType
Cone23Type
Cylinder23Type
Extrude23Type
Nurbs23Type
Offset23Type
Plane23Type
Revolution23Type
Ruled23Type
Sphere23Type
Spline23Type
Torus23Type
Curve12SetType
Curve13SetType
CurveMeshSetType
GeometrySetType
PointSetType
SurfaceMeshSetType
SurfaceSetType
6.8 IntermediatesPMI.xsd
The IntermediatesPMI.xsd schema file defines over 130 miscellaneous types used in other
schema files. Many of these types either define ids or use ids. Twenty-four of them are
enumerations.
The hierarchy of alignment operation types shown in Figure 56 is included along with a
substitutionGroup for them.
AlignmentOperationBaseType
BestFitAlignmentOperationType
DatumPrecedenceAlignmentOperationType
MachineCoordinateSystemOperationType
MeasurementOffsetAlignmentOperationType
NominalOffsetAlignmentOperationType
NominalRotationAlignmentOperationType
PrimaryAlignmentOperationType
SecondaryAlignmentOperationType
The types dealing with datums and datum reference frames shown in Figure 57 are defined.
CompoundDatumType
DatumDefinitionsType
DatumDefinitionType
DatumFeatureBaseType
DatumFeatureSimulatorModifierType
DatumReferenceFramesType
DatumReferenceFrameType
DatumTranslationType
DatumType
DatumWithPrecedenceType
MeasuredDatumFeatureType
NominalDatumFeatureType
SequencedDatumType
A number of ISO-specific types are defined as shown in Figure 58. In addition to these ISO-
specific types, there are many ISO-specific elements in various types. For example, the
DatumType has the following ISO-Specific elements: ProjectedDatum, DiameterModifier,
CollectionPlaneType
DiameterModifierEnumType
IntersectionPlaneEnumType
IntersectionPlaneType
ISODegreeOfFreedomEnumType
ModifyingPlaneEnumType
OrientationPlaneType
ReducedDatumEnumType
SectionModifierEnumType
Intermediates.xsd defines other types dealing, among other things, with the following:
algorithms, events, external references, threads, standards, coordinate systems, tolerances,
transforms, materials, and points that are to be measured or were measured.
6.9 Primitives.xsd
The Primitives.xsd schema file defines 90 miscellaneous types used in other schema files.
Types in Primitives.xsd might be used in CAD as well as in quality measurement. This includes,
for example: PointType, UnitVectorType, and TransformMatrixType. Types in this file do not
have an id attribute.
The QIF types for identifiers and references to identifiers, both internal to a QIF instance file and
external to it, are defined in Primitives.xsd.
Nineteen of the types have an attribute named n or count and represent collections such as
arrays and lists. In these types, n or count is the number of items.
The definitions of the AttributeBaseType and eleven derived types are included along with the
definitions of ten global elements (one of each type) in a substitutionGroup. These are made
available to users for including data in an instance file that is not modeled elsewhere in QIF. The
eleven elements are:
AttributeBool – an xs:boolean
AttributeStr – an xs:string
AttributeQPId – a QPId for identifying the containing element
AttributeTime – an xs:dateTime
AttributeI1 – a single xs:integer
AttributeI2 – two xs:integers
AttributeI3 – three xs:integers
AttributeD1 – one xs:double
AttributeD2 – two xs:doubles
An Attributes element including any number of these elements may be inserted in an instance
file at many places. All the Attributes elements are optional.
6.10 PrimitivesPD.xsd
The PrimitivesPD.xsd schema file defines 3 miscellaneous simpleTypes and 8 complexTypes
that are used in CAD product definition but not in PMI.
6.11 PrimitivesPMI.xsd
The PrimitivesPMI.xsd schema file defines miscellaneous types that do not have ids and are not
used in geometry or topology but are used elsewhere. This includes 15 enumerations and 45
complexTypes.
Over a dozen types support statistics and have “Stats” in their names. Four of the
complexTypes are scale types. Another four are used for datum targets. Nine complexTypes
offer a choice between an enumeration value and a user-defined value. These are shown in
Figure 59.
BottomType
DigitalModelFormatType
ManufacturingMethodType
SecurityClassification
ShapeClassType
SlotEndType
ThreadClassType
ThreadSeriesType
TypeOfCoordinatesType
6.12 Statistics.xsd
The Statistics.xsd schema file supports the QIFStatistics application. It defines type hierarchies
and miscellaneous other types used in quality statistics. This includes 178 complexTypes and 9
simpleTypes. Further information about QIFStatistics is given in Clause 12.
StatsBaseType
StatsNumericalBaseType
StatsAngularType
StatsAreaType
StatsForceType
StatsLinearType
StatsMassType
StatsPressureType
StatsSpeedType
StatsTemperatureType
StatsTimeType
StatsUserDefinedUnitType
StatsWithTolNumericalBaseType
StatsWithTolAngularType
StatsWithTolAreaType
StatsWithTolForceType
StatsWithTolLinearType
StatsWithTolMassType
StatsWithTolPressureType
StatsWithTolSpeedType
StatsWithTolTemperatureType
StatsWithTolTimeType
StatsWithTolUserDefinedUnitType
StatsPassFailType
CharacteristicStatsEvalBaseType
AngularCharacteristicStatsEvalType
AngularCoordinateCharacteristicStatsEvalType
AngleCharacteristicStatsEvalType
AngleFromCharacteristicStatsEvalType
AngleBetweenCharacteristicStatsEvalType
GeometricCharacteristicStatsEvalType
FormCharacteristicStatsEvalBaseType
CircularityCharacteristicStatsEvalType
ConicityCharacteristicStatsEvalType
CylindricityCharacteristicStatsEvalType
EllipticityCharacteristicStatsEvalType
FlatnessCharacteristicStatsEvalType
OtherFormCharacteristicStatsEvalType
SphericityCharacteristicStatsEvalType
StraightnessCharacteristicStatsEvalType
ToroidicityCharacteristicStatsEvalType
LocationCharacteristicStatsEvalType
CoaxialityCharacteristicStatsEvalType
ConcentricityCharacteristicStatsEvalType
PositionCharacteristicStatsEvalType
SymmetryCharacteristicStatsEvalType
OrientationCharacteristicStatsEvalType
AngularityCharacteristicStatsEvalType
ParallelismCharacteristicStatsEvalType
PerpendicularityCharacteristicStatsEvalType
ProfileCharacteristicStatsEvalBaseType
LineProfileCharacteristicStatsEvalType
PointProfileCharacteristicStatsEvalType
SurfaceProfileCharacteristicStatsEvalType
SurfaceProfileNonUniformCharacteristicStatsEvalType
RunoutCharacteristicStatsEvalBaseType
CircularRunoutCharacteristicStatsEvalType
TotalRunoutCharacteristicStatsEvalType
LinearCharacteristicStatsEvalType
ChordCharacteristicStatsEvalType
ConicalTaperCharacteristicStatsEvalType
CurveLengthCharacteristicStatsEvalType
DepthCharacteristicStatsEvalType
LinearCharacteristicStatsEvalType (continued)
DiameterCharacteristicStatsEvalType
DistanceBetweenCharacteristicStatsEvalType
DistanceFromCharacteristicStatsEvalType
FlatTaperCharacteristicStatsEvalType
HeightCharacteristicStatsEvalType
LengthCharacteristicStatsEvalType
LinearCoordinateCharacteristicStatsEvalType
RadiusCharacteristicStatsEvalType
SphericalDiameterCharacteristicStatsEvalType
SphericalRadiusCharacteristicStatsEvalType
SquareCharacteristicStatsEvalType
ThicknessCharacteristicStatsEvalType
WidthCharacteristicStatsEvalType
SurfaceTextureCharacteristicStatsEvalType
ThreadCharacteristicStatsEvalType
UserDefinedAngularCharacteristicStatsEvalType
UserDefinedAreaCharacteristicStatsEvalType
UserDefinedAttributeCharacteristicStatsEvalType
UserDefinedForceCharacteristicStatsEvalType
UserDefinedLinearCharacteristicStatsEvalType
UserDefinedMassCharacteristicStatsEvalType
UserDefinedPressureCharacteristicStatsEvalType
UserDefinedSpeedCharacteristicStatsEvalType
UserDefinedTemperatureCharacteristicStatsEvalType
UserDefinedTimeCharacteristicStatsEvalType
UserDefinedUnitCharacteristicStatsEvalType
CompositeSegmentStatsEvalBaseType
CompositeSegmentPositionStatsEvalType
CompositeSegmentProfileStatsEvalType
CompositeSegmentPSymmetryStatsEvalType
WeldBevelCharacteristicStatsEvalType
WeldCompoundCharacteristicStatsEvalType
WeldEdgeCharacteristicStatsEvalType
WeldFilletCharacteristicStatsEvalType
WeldFlareBevelCharacteristicStatsEvalType
WeldFlareVCharacteristicStatsEvalType
WeldJCharacteristicStatsEvalType
WeldPlugCharacteristicStatsEvalType
WeldScarfCharacteristicStatsEvalType
WeldSeamCharacteristicStatsEvalType
WeldSlotCharacteristicStatsEvalType
WeldSpotCharacteristicStatsEvalType
WeldSquareCharacteristicStatsEvalType
WeldStudCharacteristicStatsEvalType
WeldSurfacingCharacteristicStatsEvalType
WeldUCharacteristicStatsEvalType
WeldVCharacteristicStatsEvalType
The file defines three Criterion types, one of which has a derived type for each of ten unit
types, as shown in Figure 62. A Criterion type defines a numerical limit outside of which an
issue (e.g., a process control issue) will exist.
CriterionDecimalType
CriterionAngularType
CriterionAreaType
CriterionForceType
CriterionLinearType
CriterionMassType
CriterionPressureType
CriterionSpeedType
CriterionTemperatureType
CriterionTimeType
CriterionUserDefinedUnitType
CriterionIntegerType
CriterionOutOfType
The Statistics.xsd schema file defines summary statistics types as shown in Figure 63. For each
of the derived types there is a set type with “Summaries” replacing “Summary” in the name. For
example, there is a SummariesStatisticsAngularType.
SummaryStatisticsType
SummaryStatisticsAngularType
SummaryStatisticsAreaType
SummaryStatisticsForceType
SummaryStatisticsLinearType
SummaryStatisticsMassType
SummaryStatisticsPressureType
SummaryStatisticsSpeedType
SummaryStatisticsTemperatureType
SummaryStatisticsTimeType
SummaryStatisticsUserDefinedUnitType
The Statistics.xsd schema file defines a dozen enumeration types for statistics. For three of
these, a list type is defined.
6.13 Topology.xsd
The topology.xsd schema file defines the individual topology types shown in Figure 64 and the
topology set types shown in Figure 65 plus supporting enumeration types. In addition, validation
types are defined for edge, face, and body. Key/keyref constraints are defined that require
references to be of the correct type. For example, a VertexId element in a body must be the id
of a vertex. A global element is defined for each non-base type in Figure 64 and Figure 65.
The role of the topology types in product definition is covered thoroughly in Clause 7 and is not
described here.
CoEdgeMeshType
CoEdgesMeshType
CoEdgeType
CoEdgesType
EdgeOrientedType
TopologyBaseType
BodyType
EdgeType
FaceBaseType
FaceMeshType
FaceType
LoopBaseType
LoopMeshType
LoopType
PointCloudType
ShellType
VertexType
BodySetType
EdgeSetType
FaceSetType
LoopSetType
PointCloudSetType
TopologySetType
ShellSetType
VertexSetType
6.14 Traceability.xsd
The purpose of traceability information is to make it possible to associate QIF data files with the
product inspected and the resources used to design it, manufacture it, program its inspection,
and inspect it. The Traceability.xsd schema file defines types that describe the circumstances of
a planned or completed quality measurement.
6.14.1 InspectionTraceabilityType
The InspectionTraceabilityType contains information applicable to an entire set of inspection
results. An instance of the InspectionTraceabilityType is used (optionally) as the value of the
InspectionTraceability element in both the ResultsType (multiple results sets) and the
MeasurementResultsType (single results set) of the QIFResults schema. It is also used as the
value of the InspectionTraceability element in the StatisticalStudyResultsBaseType (and,
hence, all derived types) in the QIFStatistics schema. All elements of
InspectionTraceabilityType are optional. The elements are shown in Figure 66.
InspectingOrganization
CustomerOrganization
SupplierCode
PurchaseOrderNumber
OrderNumber
ReportNumber
InspectionScope
InspectionMode
PartialInspection
NotableEvents
NotedEvents
InspectionStart
InspectionEnd
InspectionSoftwareItems
InspectionProgram
InspectionOperator
ReportPreparer
ReportPreparationDate
ReportType
SecurityClassification
PlantLocation
ReferencedQIFPlanInstance
or ReferencedQIFPlan
Errors
Attributes
6.14.2 PreInspectionTraceabilityType
The PreInspectionTraceabilityType contains information similar to that of the
InspectionTraceabilityType, except that is it tailored for use when inspection has not yet
occurred. PreInspectionTraceabilityType is the type of the PreInspectionTraceability
element of the QIFDocumentType in QIFDocument.xsd and the
StatisticalStudyPlanBaseType (and, hence, all its derived types) in QIFStatistics.xsd. All
elements of PreInspectionTraceabilityType are optional except for the FormalStandardId,
which is required. The AsmPathIds indicate what is to be inspected. The elements are shown in
Figure 67.
InspectingOrganization
CustomerOrganization
SupplierCode
PurchaseOrderNumber
OrderNumber
AsmPathIds
ReportNumber
InspectionScope
InspectionMode
PartialInspection
NotableEvents
InspectionSoftwareItems
InspectionProgram
SecurityClassification
PlantLocation
ReferencedQIFPlanInstance
or ReferencedQIFPlan
FormalStandardId
Attributes
6.14.3 ProductTraceabilityType
The ProductTraceabilityType defines traceability information for a component (i.e., part or
assembly). It is used (optionally) as the value of the Traceability element of the
ComponentType in Product.xsd. The elements of ProductTraceabilityType are all optional.
They are shown in Figure 68.
ReportNumber
ManufacturingProcessId
FixtureId
NotableEventIds
InspectionSoftwareItems
InspectionProgram
MeasurementDeviceIds
Attributes
6.14.4 ActualProductTraceabilityType
The ActualProductTraceabilityType defines traceability information for an actual component.
It is used (optionally) as the Traceability element of the ActualComponentType in
QIFResults.xsd. Its elements are all optional. They are shown in Figure 69.
SampleNumber
LotNumber
ReportNumber
ManufacturingProcessId
FixtureId
NotableEventIds
NotedEventIds
InspectionStart
InspectionEnd
InspectionSoftwareItems
InspectionProgram
InspectionOperator
MeasurementDeviceIds
ProductEnvironments
Errors
Attributes
6.14.5 ManufacturingProcessTraceabilityType
The ManufacturingProcessTraceabilityType defines traceability information for a
manufacturing process. It is used in the ManufacturingProcessTraceabilities element of the
QIFDocumentType. Once a ManufacturingProcessTraceability is listed there, it may be
referenced using the ManufacturingProcessId element found at several places in the QIF
model. The elements of ManufacturingProcessTraceabilityType are all optional. They are
shown in Figure 70. There is also a required id attribute which may be used for referencing.
Attributes
Description
Job
Revision
PreviousOperationId
Path
MachineManufacturerName
MachineIdentifier
OperatorIdentifier
Shift
Department
ResponsibilityIdentifier
PlantSector
ProcessParameters
AssociatedTraceabilityId
6.15 Units.xsd
See also subclause 5.18 QIF Handling of Units.
6.15.1 FileUnits
The top level type defined in the file is the FileUnitsType. This is used in the QIFDocument.xsd
schema as the type of the FileUnits element, as shown in Figure 71. The FileUnits element
gives explicit primary units for the file and optionally gives other units and user defined units that
may be used in the file. The FileUnits element is optional, but it is strongly recommended that it
be used. In the absence of a FileUnits element, the default units are SI units.
The Units.xsd schema file defines units for values of angle, area, force, length, mass, pressure,
speed, temperature, and time. The length unit is called linear unit to avoid confusion with the
length characteristic. The file also defines the following corresponding value types that have
units. The default unit is shown following each value type.
AngleValueType radian
AreaValueType square meter
ForceValueType newton
LinearValueType meter
MassValueType kilogram
PressureValueType pascal
SpeedValueType meter per second
TemperatureValueType kelvin
TimeValueType second
A user defined characteristic type is defined in Characteristics.xsd for each of the defined unit
types, and the TargetValue in each of those is the corresponding value type.
The Units.xsd file uses optional attributes extensively in order that numbers appearing in
instance files do not require a lot of accompanying markup.
Figure 72. The items shown after the type names are the attributes that are added in the type.
Attributes that may be used with a value with any type of unit in an instance file include the
name of the unit, the number of decimal places in the value, and the number of significant
figures in the value. If a value represents a measured value, it may also have attributes giving
combined uncertainty and mean error. All of these attributes are optional.
xs:decimal
SpecifiedDecimalType – adds decimalPlaces, significantFigures
AngularValueType – angularUnit
AreaValueType – areaUnit
ForceValueType – forceUnit
LinearDualValueType – linearUnit
LinearValueType – linearUnit
MassValueType – massUnit
PressureValueType – pressureUnit
SpeedValueType – speedUnit
TemperatureValueType – temperatureUnit
TimeValueType – timeUnit
UserDefinedUnitValueType – name of a UserDefinedUnitType
MeasuredDecimalType – adds combinedUncertainty, meanError
MeasuredAngularValueType – angularUnit
MeasuredAreaValueType – areaUnit
MeasuredForceValueType – forceUnit
MeasuredLinearValueType – linearUnit
MeasuredMassValueType – massUnit
MeasuredPressureValueType – pressureUnit
MeasuredSpeedValueType – speedUnit
MeasuredTemperatureValueType – temperatureUnit
MeasuredTimeValueType – timeUnit
MeasuredUserDefinedUnitValueType – name of a UserDefinedUnitType
6.15.2 Conversions
The UnitConversionType has elements Factor and Offset. These are the parameters for a
conversion from non-SI units to SI units. To convert a non-SI unit value X to an SI unit value S,
use the equation: S = ((X plus Offset) times Factor). Figure 73 shows values of Factor and
Offset for common units. More precise values of some Factors may be needed in some
applications.
6.15.3 FileUnitsExample
Figure 74 shows a snippet of an instance file containing a FileUnits element. The SIUnitName
and the UnitConversion elements are optional. In the snippet, the AngleUnit uses them but
the LinearUnit does not. The snippet shows one entry in the OtherUnits and one entry in the
UserDefinedUnits.
<FileUnits>
<PrimaryUnits>
<AngularUnit>
<SIUnitName>radian</SIUnitName>
<UnitName>degree</UnitName>
<UnitConversion>
<Factor>0.017453293</Factor>
</UnitConversion>
</AngularUnit>
<LinearUnit>
<UnitName>inch</UnitName>
</LinearUnit>
<TemperatureUnit>
<SIUnitName>kelvin</SIUnitName>
<UnitName>Fahrenheit</UnitName>
<UnitConversion>
<Factor>0.555555556</Factor>
<Offset>459.67</Offset>
</UnitConversion>
</TemperatureUnit>
</PrimaryUnits>
<OtherUnits>
<LinearUnit>
<UnitName>mm</UnitName>
</LinearUnit>
</OtherUnits>
<UserDefinedUnits>
<UserDefinedUnit>
<WhatIsMeasured>electrical resistance</WhatIsMeasured>
<UnitName>ohm</UnitName>
</UserDefinedUnit>
</UserDefinedUnits>
</FileUnits>
The first cylinder has a diameter of 19 mm; the linearUnit mm is given explicitly. That is valid
because mm is given as one of the OtherUnits. The decimalPlaces value of 1 is valid even
though no decimal places appear in “19”.
The second cylinder has a diameter of 2.53 inches. The diameter has no explicit linearUnit, but
the linearUnit for the diameter is implicitly inch because inch was given as the LinearUnit in
the PrimaryUnits of the FileUnits.
The nominal angularity characteristic has an angle of 10.00145 degrees, although only the first
four figures are significant. The angle has no explicit angularUnit, but the angularUnit for the
Angle is implicitly degree because degree was given as the AngularUnit in the PrimaryUnits of
the FileUnits.
<CylinderFeatureDefinition id="62">
<Diameter linearUnit="mm" decimalPlaces="1">19</Diameter>
</CylinderFeatureDefinition>
...
<CircleFeatureDefinition id="72">
<Diameter>2.53</Diameter>
</CircleFeatureDefinition>
...
<AngularityCharacteristicNominal id="45">
<CharacteristicDefinitionId>42</CharacteristicDefinitionId>
<Angle significantFigures=”4”>10.00145</Angle>
</AngularityCharacteristicNominal>
6.16 Visualization.xsd
The Visualization.xsd schema file defines types needed for visualizing products, including PMI
items. The file also includes data specifying views of a product.
Most of the information required for PMI visualization is in the PMI item being displayed. The
way it should be visualized is prescribed by ASME GD&T and ISO GPS related standards, and
American Welding Society standards. However the placement of the PMI item on a 2D drawing
or in a 3D model based design is controlled by the user, as are the lines connecting the
visualized PMI with the visualized feature. Additional text may also accompany a PMI item and
may use various fonts. These items are what the Visualization.xsd schema file defines. Any QIF
application providing PMI visualization should be capable of displaying PMI from this
visualization information.
Visualization and views are described in much more detail in subclause 6.16.
The top level type for displaying PMI items is the VisualizationSetType, which is the type of the
VisualizationSet element of the ProductType as shown in Figure 76. The
VisualizationSetType has (1) a Fonts element that is a list of Font elements and (2) a
PMIDisplaySet element that is a list of PMIDisplay elements.
The Font elements are of FontType. A FontType is described by Name and Size elements as
well as an optional Attributes element. It also has attributes indicating whether the font is bold
and/or italic and/or underlined. Another attribute gives an index number for the font.
WitnessLines
Frames
Graphics
The Frames element is a list of Frame elements of type FrameType. The substitutionGroup of
the Frame element allows any of the following elements to appear in the list.
FrameCircular
FrameFlag
FrameHexagonal
FrameIrregularForm
FrameOctagonal
FramePentagonal
FrameRectangular
FrameTriangular
FrameWeldSymbol
The top level type for specifying views is the ViewSetType, which is the type of the ViewSet
element of the ProductType as shown in Figure 77.
Figure 77 – ViewSetType
7.1 Foreword
The Quality Information Framework (QIF) information model was developed by domain experts
from the manufacturing quality (that is metrology) community representing a wide variety of
industries and quality measurement needs. Specifically for the QIF Model-Based Definition (QIF
MBD) work, contributors include:
• Capvidia
• Mitutoyo America
• National Institute of Standards and Technology
• Origin International Inc.
The bulk of the work on this clause was performed by the Complete and Accurate Model-Based
Definition (CAMBD) Working Group, approved and revised as needed by the Quality Information
Framework (QIF) Working Group, and given final approval for ANSI review by the DMSC’s
Quality Management Systems (QMS) Committee.
7.2 Introduction
The QIF MBD information model defines an open, 3D model-based product definition (MBD).
The model is independent of any CAD system. It includes a full suite of formally modeled
characteristics (dimensions, tolerances, etc.) and features, associated to a complete model of
parts and assemblies (topology, views, etc.) and metadata. It supports interchange of part and
assembly models between CAD systems and transfer of those models to downstream
processes.
A QIF MBD instance file can replace a traditional 2D drawing or be used together with a
drawing.
QIF MBD defines a digital data format to convey part geometry (typically called the "CAD
model") and information to be consumed by downstream manufacturing quality processes,
about the essential characteristics of the product. Information defined in a QIF MBD model is
more useful than is possible on a 2D drawing. For example, each product manufacturing
information (PMI) object can have associated geometry, thereby conveying information to
downstream processes. PMI objects include, but are not limited to: dimensions, geometric
tolerances, datums, and datum reference frames.
The QIF MBD data format defines manufacturing information to form a "digital bridge"
connecting CAD processes for product design and downstream manufacturing quality
processes that generate physical products. The QIF MBD data model provides a vendor-neutral
format and ensures that software solutions that support it, by either writing or reading QIF
instance files, can exchange manufacturing quality data efficiently and accurately.
7.3 Scope
The top level of the QIF MBD model is defined in the QIFApplications/QIFDocument.xsd XML
schema file. That file includes, directly or indirectly, all of the 15 XML schema files in the QIF
Library (the QIFLibrary directory). An XML instance file describing a model-based definition with
PMI will contain information items drawn from QIFApplications/QIFDocument.xsd and many
other QIF schema files, particularly QIFApplications/QIFProduct.xsd,
QIFLibrary/Characteristics.xsd, and QIFLibrary/Features.xsd. Clause 7 describes primarily the
CAD model and assembly model embodied in QIFApplications/QIFProduct.xsd,
QIFLibrary/Topology.xsd, and QIFLibrary/Geometry.xsd.
XSDL also supports the definition of rules and validation checks of QIF instance files. Almost all
of these check that a connection made by reference to an object that is supposed to be of a
particular type does, in fact, reference an object of the correct type. Hundreds of these are
included in the overall QIF model, and most of them are applicable to QIF MBD instance files.
This clause describes these only briefly.
A CAX system such as System A in Figure 78 that has semantic PMI and is QIF-enabled will be
able to output a QIF MBD file with semantic PMI.
CAX systems such as Systems B1/B2/B3 in the Figure 78 that do not have semantic PMI and
are QIF-enabled will be able to output a QIF MBD file containing a product definition without
PMI. Although QIF MBD is designed to include PMI, it is not required.
Output from Systems B1/B2/B3 may be fed into a QIF-enabled semantic PMI assignment
system, which would be able to write a QIF MBD file containing the product definition with
semantic PMI.
Once a QIF MBD file is generated, by whatever means, it may be fed into any QIF-enabled
system.
QIF enabled CAX System C can read QIF MBD files. If System C fully supports semantic PMI,
then it can consume all the information from a QIF MBD file. If not, it can only consume product
definition without PMI from QIF MBD files. Thus, QIF MBD enables CAD-to-CAD transfers.
A QIF-enabled Quality Planning System can read QIF MBD files. If it does high level planning
(the plan specifies only what to inspect), it may only need the PMI stored in a file. If it does low
level planning (the plan specifies what and how to inspect) it may need all the information in the
file.
Other QIF-enabled quality systems, such as inspection execution systems and statistical
analysis systems, will be able to consume a QIF MBD file, produce graphical displays for the
user, and use the PMI for calculations.
QIF MBD was designed for the uses described above. QIF MBD files may have additional uses,
which are not defined here.
All CAD systems generate models of the nominal shape of products. Designers and/or
manufacturing quality experts add information to the nominal shape information to instruct
downstream manufacturing quality functions how to perform actions. This combination of
information is called Product Definition with Product Manufacturing Information (PDPMI).
The basic requirement of QIF MBD is that it must be able to represent PDPMI. The QIF MBD
model must be able to capture the product definition information coming from a CAX authoring
system. The QIF MBD model must also be able to capture the PMI that comes from the CAX
authoring system.
A second requirement is that the QIF MBD model must represent PMI in a form that can be
consumed by downstream application software. That is, the representation must be able to
graphically present the PMI. The representation must also enable processing the PMI without
graphical presentation of it. Being able to display the PMI is essential for human use. Being able
to use the PMI without graphical presentation is essential for computer use.
Many products are assemblies of parts. A third requirement of the QIF MBD model is that it be
able to represent assemblies.
The representation of PMI used in QIF MBD is described in Clause 5, Clause 6, and Clause 7 of
the standard as well as in the XML schema files containing the formal model. This Clause of the
standard focuses on the representation of the definition of the nominal shape of a product and
the representation of assemblies.
QIF defines a complete and unambiguous model structure implementing a clear and efficient
way for representing simple parts and complex assemblies.
QIF product definition implements Boundary Representation (BREP) — a method for defining
shapes using their boundaries. A distinctive characteristic of Boundary Representation is the
clear separation of the shape definition data in the following two types: topology and geometry.
Topology defines the relationship between the geometric entities that can be linked together to
produce complex shapes. In contrast to the geometry, topology does not consider the metric
properties of objects. Geometry defines the shape of the model entities, independent of their
topological relationships.
The QIF data model supports two modeling concepts – exact modeling (with use of one global
model tolerance) and tolerant modeling (the model tolerance can vary from one entity to
another). In both cases, the tolerance concept applies to the numerical accuracy of numbers in
the file. This is distinct from the tolerance concept in PMI, which applies to manufacturing
tolerances.
QIF geometric objects can be categorized in different ways. The most natural way is to separate
objects by dimension: zero-dimensional (points), one-dimensional (curves) and two-dimensional
(surfaces) objects.
In order to avoid any potential interoperability issues, the QIF data model defines all geometric
entities explicitly. No entities such as blends, which can be interpreted and implemented
differently by different systems, are allowed.
QIF supports a hybrid model representation allowing data of different natures within one model.
This includes items such as parametric, mesh, and point cloud data.
For any model entity, a variety of traditional CAD attributes can be specified (such as: color,
label, layer, visibility status, etc.) with possible arbitrary extensions implemented as user-defined
attributes.
In QIF there are two application areas where the binary data can be used.
The second use of binary data is for providing an alternative, more efficient and compact way of
storing large amounts of simple-type data such as 3D points. This noticeably reduces file size
and significantly increases file parsing speed. These two factors can be crucial in working with
such objects as point clouds or tessellated data.
Fields of BinaryDataType:
Example:
<Edge id="459">
<Attributes count="3">
<!-- A user defined attribute STD02 - 14 bytes of binary data -->
<AttributeUser name="STD02" nameUserAttribute="T1">
<UserDataBinary n="14">
c2FtcGxlIHN0cmluZwA=
</UserDataBinary>
</AttributeUser>
</Attributes>
...
</Edge>
The fields where the binary alternatives can be used are shown in the table below. The
corresponding non-binary field names are the same but without the "Binary" suffix.
The ArrayBinaryType represents an array of Base64-encoded binary elements. For data the
entire binary stream is encoded using the Base64 Alphabet in RFC 2045.
Fields of ArrayBinaryType:
Example:
Fields:
Example:
Fields:
Example:
Fields:
Example:
Fields:
Example:
Fields:
Example:
Fields:
Example:
Fields:
Example:
Fields:
Example:
<AttributeQPId name="qpid_attr">
<Value>4b61ec75-ab3c-4129-b88a-d9e2ee415322</Value>
</AttributeQPId>
Fields:
Example:
Fields:
<AttributeUser name="user_attr"
nameUserAttribute="user_type_structure">
<UserDataXML>
<Structure xmlns="http://userschema.org">
<TextField>Some text</TextField>
<IntegerField>2332</IntegerField>
</Structure>
</UserDataXML>
</AttributeUser>
<xs:complexType name="StructureType">
<xs:sequence>
<xs:element name="TextField" type="xs:string">
</xs:element>
<xs:element name="IntegerField" type="xs:integer">
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
7.5.2 Geometry
QIF geometry defines the shape of the model entities and includes the subtypes shown in
Figure 80.
7.5.2.1 Point
The Point describes a point in 3D space. It is normally used as underlying geometry for vertices.
Figure 81 – Point
Fields:
Example:
<Point id="200">
<XYZ>-0.2032 -0.0666 -0.0684</XYZ>
</Point>
7.5.2.2 2D Curves
This chapter describes curves defined in 2D space, curve(t):R1 R2, where
R1 is curve parameter space - the 1D real number space, where each point is defined as
a single coordinate (t)
R2 is the two-dimensional Euclidean space, where each point is defined as a coordinate
pair (u, v).
The correspondence between 1D parameter space and 2D Euclidean space is illustrated in
Figure 82.
All types of 2D curves are derived from Curve12BaseType as shown in Figure 83.
All 2D geometric curves are represented using a geometric core and a "wrapper" that includes
an id for referencing.
The domain of every 2D curve is given in the domain attribute of the core, which is required.
The turned attribute of 2D curves is optional. If it does not appear, its default value is false.
2D curves are normally used to define a trimming curve in the parametric space of a surface.
7.5.2.2.1 Segment
Segment12 describes a linear segment in 2D space as shown in Figure 84.
Figure 84 – 2D Segment
A linear segment is defined and positioned in 2D space with start and end points.
Function:
𝑆𝑒𝑔𝑚𝑒𝑛𝑡12(𝑡): 𝑅1 → 𝑅2
Fields:
Example:
<Segment12 id=”350”>
<Segment12Core domain=”0 1”>
<StartPoint>10.1 -2431.7</StartPoint>
<EndPoint>34.1 4542.4</EndPoint>
</Segment12Core>
</Segment12>
7.5.2.2.2 Polyline
Polyline12 describes a polyline in 2D space as shown in Figure 85.
Figure 85 – 2D Polyline
Function:
𝑃𝑜𝑙𝑦𝑙𝑖𝑛𝑒12(𝑡): 𝑅1 → 𝑅2
Fields:
Example:
<Polyline12 id=”32”>
<Polyline12Core domain=”0 4”>
<Points n=”5”>
1.2 11.5
4.1 13.5
7.3 16.2
8.9 23.5
9.2 29.8
</Points>
</Polyline12Core>
</Polyline12>
Function:
𝐴𝑟𝑐𝐶𝑖𝑟𝑐𝑢𝑙𝑎𝑟12(𝑡): 𝑅1 → 𝑅2
−𝐷𝑖𝑟𝐵𝑒𝑔𝑦
[ ], 𝑡𝑢𝑟𝑛𝑒𝑑 = 𝑓𝑎𝑙𝑠𝑒
𝐷𝑖𝑟𝐵𝑒𝑔𝑥
𝐷𝑖𝑟𝑌 =
𝐷𝑖𝑟𝐵𝑒𝑔𝑦
[ ], 𝑡𝑢𝑟𝑛𝑒𝑑 = 𝑡𝑟𝑢𝑒
{ −𝐷𝑖𝑟𝐵𝑒𝑔𝑥
Fields:
Example:
<ArcCircular12 id=”10”>
<ArcCircular12Core domain=”0 3.1415926”>
<Radius>10.2</Radius>
<Center>1.4 6.7</Center>
<DirBeg>0.0 1.0</DirBeg>
</ArcCircular12Core>
</ArcCircular12>
A conic arc is defined as a portion of a conic curve. The conic curve can have one the following
forms: an ellipse, a parabola, or a hyperbola.
Function:
𝐴𝑟𝑐𝐶𝑜𝑛𝑖𝑐12(𝑡): 𝑅1 → 𝑅2
𝐴𝑡
[ 2] , 𝑓𝑜𝑟𝑚 = 𝑃𝐴𝑅𝐴𝐵𝑂𝐿𝐴
𝐵𝑡
𝑥(𝑡) 𝐴cos(𝑡)
[ ] = [ 𝐵sin(𝑡) ] , 𝑓𝑜𝑟𝑚 = 𝐸𝐿𝐿𝐼𝑃𝑆𝐸
𝑦(𝑡)
2 2
[𝐴√1 + 𝑡 ⁄𝐵 ] , 𝑓𝑜𝑟𝑚 = 𝐻𝑌𝑃𝐸𝑅𝐵𝑂𝐿𝐴
{ 𝑡
−𝐷𝑖𝑟𝐵𝑒𝑔𝑦
[ ], 𝑡𝑢𝑟𝑛𝑒𝑑 = 𝑓𝑎𝑙𝑠𝑒
𝐷𝑖𝑟𝐵𝑒𝑔𝑥
𝐷𝑖𝑟𝑌 =
𝐷𝑖𝑟𝐵𝑒𝑔𝑦
[ ], 𝑡𝑢𝑟𝑛𝑒𝑑 = 𝑡𝑟𝑢𝑒
{ −𝐷𝑖𝑟𝐵𝑒𝑔𝑥
𝑡 ∈ (−∞, +∞)
Fields:
Example:
<ArcConic12 id=”123”>
<ArcConic12Core form=”PARABOLA” domain=”-0.2 3.5”>
<A>4.5</A>
<B>3.1</B>
<Center>13.3 -43.2</Center>
<DirBeg>1.0 0.0</DirBeg>
</ArcConic12Core>
</ArcConic12>
<ArcConic12 id=”123”>
<ArcConic12Core form=”ELLIPSE” domain=”10.3 18.9” turned=”1”>
<A>14.2</A>
<B>33.1</B>
<Center>63.7 -34.0</Center>
<DirBeg>1.0 0.0</DirBeg>
</ArcConic12Core>
</ArcConic12>
<ArcConic12 id=”123”>
<ArcConic12Core form=”HYPERBOLA” domain=”1.2 7.0”>
<A>14.5</A>
<B>30.1</B>
<Center>0.3 3.2</Center>
<DirBeg>1.0 0.0</DirBeg>
</ArcConic12Core>
</ArcConic12>
Function:
𝑆𝑝𝑙𝑖𝑛𝑒12(𝑡): 𝑅1 → 𝑅2
𝐷𝑒𝑔𝑟𝑒𝑒𝑝
𝑝
∑ (𝐶𝑖 )𝑥 (𝑡𝑝 )𝑖
𝑥(𝑡) 𝑖=0
𝑆𝑝𝑙𝑖𝑛𝑒12(𝑡) = [ ]= 𝐷𝑒𝑔𝑟𝑒𝑒𝑝
𝑦(𝑡)
𝑝
∑ (𝐶𝑖 )𝑦 (𝑡𝑝 )𝑖
[ 𝑖=0 ]
𝑁 − 𝑛𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑝𝑜𝑙𝑦𝑛𝑜𝑚𝑖𝑎𝑙𝑠
𝑁 = 𝑛𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑘𝑛𝑜𝑡𝑠 − 1
𝐶𝑜𝑒𝑓𝑓𝑖𝑐𝑖𝑒𝑛𝑡𝑠 = {𝐶 0 , … , 𝐶 𝑁−1 }
𝑝 − 𝑖𝑛𝑑𝑒𝑥 𝑜𝑓 𝑝𝑜𝑙𝑦𝑛𝑜𝑚𝑖𝑎𝑙𝑠
𝑡𝑝 − 𝑝𝑎𝑟𝑎𝑚𝑒𝑡𝑒𝑟 𝑜𝑓 𝑝𝑜𝑙𝑦𝑛𝑜𝑚𝑖𝑎𝑙𝑠 𝑝
Fields:
Example:
<Spline12 id=”302”>
<Spline12Core domain=”0 2”>
<Knots n=”3”>
0 1 2
</Knots>
<Orders n=”2”>
4 4
</Orders>
<Coefficients n=”8”>
87.5 237.5
14.0625 -7.8125
0 0
-1.5625 1.5625
100 231.25
9.375 -3.125
-4.6875 4.6875
1.5625 -1.5625
</Coefficients>
</Spline12Core>
</Spline12>
A NURBS curve is a freeform curve built on the B-spline basis functions and defined by its order
(= degree + 1), a knot vector (an increasing sequence of real numbers which divides the
parametric space in the intervals called knot spans), and an array of control points with an
optional set of associated weights (positive real numbers). If the weights are not defined or if the
weights are equal, the curve is a polynomial one (otherwise rational).
Function:
𝑁𝑢𝑟𝑏𝑠12(𝑡): 𝑅1 → 𝑅2
𝑛−1
∑ 𝑁𝑖,𝐷𝑒𝑔𝑟𝑒𝑒 (𝑡)𝑊𝑒𝑖𝑔ℎ𝑡𝑠𝑖 𝐶𝑃𝑠𝑖
𝑖=0
𝑁𝑢𝑟𝑏𝑠12(𝑡) = 𝑛−1
∑ 𝑁𝑖,𝐷𝑒𝑔𝑟𝑒𝑒 (𝑡)𝑊𝑒𝑖𝑔ℎ𝑡𝑠𝑖
𝑖=0
𝐷𝑒𝑔𝑟𝑒𝑒 = 𝑂𝑟𝑑𝑒𝑟 − 1
1, 𝑡 ∈ [𝐾𝑛𝑜𝑡𝑠𝑖 , 𝐾𝑛𝑜𝑡𝑠𝑖+1 )
𝑁𝑖,0 (𝑡) = {
0, 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒
𝑡 − 𝐾𝑛𝑜𝑡𝑠𝑖 𝐾𝑛𝑜𝑡𝑠𝑖+𝑝+1 − 𝑡
𝑁𝑖,𝑝 (𝑡) = 𝑁𝑖,𝑝−1 (𝑡) + 𝑁 (𝑡)
𝐾𝑛𝑜𝑡𝑠𝑖+𝑝 − 𝐾𝑛𝑜𝑡𝑠𝑖 𝐾𝑛𝑜𝑡𝑠𝑖+𝑝+1 − 𝐾𝑛𝑜𝑡𝑠𝑖+1 𝑖+1,𝑝−1
Fields:
Example:
<Nurbs12 id=”607”>
<Nurbs12Core domain=”0 1”>
<Order>3</Order>
<Knots N=”10”>
0 0 0 0.33333333 0.33333333 0.66666667 0.66666667 1 1 1
</Knots>
<CPs N=”7”>
-386.61 -44.00
-386.61 -54.39
-377.61 -49.19
-368.61 -44.00
-377.61 -38.80
-386.61 -33.60
-386.61 -44.00
</CPs>
<Weights N=”7”>
1 0.5 1 0.5 1 0.5 1
</Weights>
</Nurbs12Core>
</Nurbs12>
Function:
𝐴𝑔𝑔𝑟𝑒𝑔𝑎𝑡𝑒12(𝑡): 𝑅1 → 𝑅2
𝑗
𝐷𝑜𝑚𝑎𝑖𝑛𝑖 ∶= 𝐷𝑜𝑚𝑎𝑖𝑛𝑗 𝑜𝑓 𝑆𝑢𝑏𝐶𝑢𝑟𝑣𝑒𝑠𝑖 , 𝑗 ∈ {0,1}
𝑏𝑒𝑔𝑖𝑛
𝑡𝑖 = ∑(𝑑𝑜𝑚𝑎𝑖𝑛𝑗1 − 𝑑𝑜𝑚𝑎𝑖𝑛𝑗0 )
𝑗<𝑖
𝑏𝑒𝑔𝑖𝑛
𝑡𝑖𝑒𝑛𝑑 = 𝑡𝑖 + (𝑑𝑜𝑚𝑎𝑖𝑛1𝑖 − 𝑑𝑜𝑚𝑎𝑖𝑛𝑖0 )
𝑏𝑒𝑔𝑖𝑛
𝑑𝑜𝑚𝑎𝑖𝑛𝑖0 + (𝑡 − 𝑡𝑖 ), 𝑆𝑢𝑏𝐶𝑢𝑟𝑣𝑒𝑠𝑖 𝑖𝑠 𝑛𝑜𝑡 𝑡𝑢𝑟𝑛𝑒𝑑
𝑡𝑖 = { 1 𝑏𝑒𝑔𝑖𝑛
𝑑𝑜𝑚𝑎𝑖𝑛𝑖 − (𝑡 − 𝑡𝑖 ), 𝑆𝑢𝑏𝐶𝑢𝑟𝑣𝑒𝑠𝑖 𝑖𝑠 𝑡𝑢𝑟𝑛𝑒𝑑
Fields:
Example:
<Aggregate12 id=”419”>
<Aggregate12Core domain=”0 4”>
<SubCurves n=”4”>
<SubCurve turned=”1”>
<Segment12Core domain=”0 1”>
<StartPoint>-367.36 -214.75</StartPoint>
<EndPoint>-367.36 -207.50</EndPoint>
</Segment13Core>
</SubCurve>
<SubCurve>
<Nurbs12Core domain=”0 1”>
<Order>3</Order>
<Knots n=”6”>
0 0 0 1 1 1
</Knots>
<CPs n=”3”>
-367.36 -214.75
-366.61 -214.75
-366.61 -214.75
</CPs>
<Weights n=”3”>
1 0.70710678 1
</Weights>
</Nurbs12Core>
</SubCurve>
<SubCurve>
<Segment12Core domain=”0 1”>
<StartPoint>-366.61 -214.75</StartPoint>
<EndPoint>-366.61 -207.50</EndPoint>
</Segment12Core>
</SubCurve>
<SubCurve>
<Nurbs12Core domain=”0 1”>
<Order>4</Order>
<Knots n=”10”>
0 0 0 0 0.91406368 0.91406368 1 1 1 1
</Knots>
<CPs n=”6”>
-366.61 -207.50
-366.61 -207.50
-366.88 -207.50
-367.29 -207.50
-367.33 -207.50
-367.36 -207.50
</CPs>
</Nurbs12Core>
</SubCurve>
</SubCurves>
</Aggregate12Core>
</Aggregate12>
7.5.2.3 3D Curves
This chapter describes curves defined in 3D Model Space, curve(t):R1 R3, where
R1 is curve parameter space – the 1D real number space, where each point is defined
as a single coordinate (t)
R3 is model space – the three-dimensional Euclidean space, where each point is
defined as a coordinate triple (x, y, z) specified in a right-handed Cartesian coordinate
system
The correspondence between 1D parameter space and 3D Euclidean space is illustrated in
Figure 97.
All types of model space curves are derived from Curve13BaseType as shown in Figure 98.
All 3D geometric curves are represented using a geometric core and a “wrapper" that includes
an id for referencing.
The domain of every 3D curve is given in the domain attribute of the core, which is required.
The turned attribute of 3D curves is optional. If it does not appear, its default value is false.
The 3D curves are normally used as underlying geometry for topological edges.
7.5.2.3.1 Segment
Segment13 describes a linear segment in 3D space as shown in Figure 99.
Figure 99 – 3D Segment
A linear segment is defined and positioned in 3D space with start and end points.
Function:
𝑆𝑒𝑔𝑚𝑒𝑛𝑡13(𝑡): 𝑅1 → 𝑅3
Fields:
Example:
<Segment13 id="350">
<Segment13Core domain="0 1">
<StartPoint>10.1 -2431.7 13.7</StartPoint>
<EndPoint>34.1 4542.4 34.4</EndPoint>
</Segment13Core>
</Segment13>
7.5.2.3.2 Polyline
Polyline13 describes a polyline in 3D space as shown in Figure 100.
Function:
𝑃𝑜𝑙𝑦𝑙𝑖𝑛𝑒13(𝑡): 𝑅1 → 𝑅3
Fields:
Example:
<Polyline13 id="32">
<Polyline13Core domain="0 4">
<Points n="5">
1.2 11.5 10.4
4.1 13.5 14.4
7.3 16.2 17.1
8.9 23.5 65.3
9.2 29.8 84.4
</Points>
</Polyline13Core>
</Polyline13>
Function:
𝐴𝑟𝑐𝐶𝑖𝑟𝑐𝑢𝑙𝑎𝑟13(𝑡): 𝑅1 → 𝑅3
Fields:
Example:
<ArcCircular13 id="10">
<ArcCircular13Core domain="0 3.1415926">
<Radius>10.2</Radius>
<Center>1.4 6.7 9.0</Center>
<DirBeg>1.0 0.0 0.0</DirBeg>
<Normal>0.0 0.0 1.0</Normal>
</ArcCircular13Core>
</ArcCircular13>
A conic arc is defined as a portion of a conic curve. The conic curve can have one the following
forms: an ellipse, a parabola, or a hyperbola.
Function:
𝐴𝑟𝑐𝐶𝑜𝑛𝑖𝑐13(𝑡): 𝑅1 → 𝑅3
𝐴𝑡
[ 2] , 𝑓𝑜𝑟𝑚 = 𝑃𝐴𝑅𝐴𝐵𝑂𝐿𝐴
𝐵𝑡
𝑥(𝑡) 𝐴cos(𝑡)
[ ] = [ 𝐵sin(𝑡) ] , 𝑓𝑜𝑟𝑚 = 𝐸𝐿𝐿𝐼𝑃𝑆𝐸
𝑦(𝑡)
2 2
[𝐴√1 + 𝑡 ⁄𝐵 ] , 𝑓𝑜𝑟𝑚 = 𝐻𝑌𝑃𝐸𝑅𝐵𝑂𝐿𝐴
{ 𝑡
𝑡 ∈ (−∞, +∞)
Fields:
Example:
<ArcConic13 id="123">
<ArcConic13Core form="PARABOLA" domain="-0.2 3.5">
<A>4.5</A>
<B>3.1</B>
<Center>13.3 -43.2 34.1</Center>
<DirBeg>1.0 0.0 0.0</DirBeg>
<Normal>0.0 1.0 0.0</Normal>
</ArcConic13Core>
</ArcConic13>
<ArcConic13 id="123">
<ArcConic13Core form="ELLIPSE" domain="10.3 18.9">
<A>14.2</A>
<B>33.1</B>
<Center>63.7 -34.0 45.9</Center>
<DirBeg>1.0 0.0 0.0</DirBeg>
<Normal>0.0 1.0 0.0</Normal>
</ArcConic13Core>
</ArcConic13>
<ArcConic13 id="123">
<ArcConic13Core form="HYPERBOLA" domain="1.2 7.0">
<A>14.5</A>
<B>30.1</B>
<Center>0.3 3.2 5.8</Center>
<DirBeg>1.0 0.0 0.0</DirBeg>
<Normal>0.0 1.0 0.0</Normal>
</ArcConic13Core>
</ArcConic13>
Function:
𝑆𝑝𝑙𝑖𝑛𝑒13(𝑡): 𝑅1 → 𝑅3
𝐷𝑒𝑔𝑟𝑒𝑒𝑝
𝑝
∑ (𝐶𝑖 )𝑥 (𝑡𝑝 )𝑖
𝑖=0
𝑥(𝑡) 𝐷𝑒𝑔𝑟𝑒𝑒𝑝
𝑆𝑝𝑙𝑖𝑛𝑒13(𝑡) = [𝑦(𝑡)] = 𝑝
∑ (𝐶𝑖 )𝑦 (𝑡𝑝 )𝑖
𝑧(𝑡) 𝑖=0
𝐷𝑒𝑔𝑟𝑒𝑒𝑝
𝑝
∑ (𝐶𝑖 )𝑧 (𝑡𝑝 )𝑖
[ 𝑖=0 ]
𝑁 − 𝑛𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑝𝑜𝑙𝑦𝑛𝑜𝑚𝑖𝑎𝑙𝑠
𝑁 = 𝑛𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑘𝑛𝑜𝑡𝑠 − 1
𝐶𝑜𝑒𝑓𝑓𝑖𝑐𝑖𝑒𝑛𝑡𝑠 = {𝐶 0 , … , 𝐶 𝑁−1 }
𝑝 − 𝑖𝑛𝑑𝑒𝑥 𝑜𝑓 𝑝𝑜𝑙𝑦𝑛𝑜𝑚𝑖𝑎𝑙𝑠
𝑡𝑝 − 𝑝𝑎𝑟𝑎𝑚𝑒𝑡𝑒𝑟 𝑜𝑓 𝑝𝑜𝑙𝑦𝑛𝑜𝑚𝑖𝑎𝑙𝑠 𝑝
Fields:
Example:
<Spline13 id="302">
<Spline13Core domain="0 2">
<Knots n="3">
0 1 2
</Knots>
<Orders n="2">
4 4
</Orders>
<Coefficients n="8">
87.5 237.5 0
14.0625 -7.8125 0
0 0 0
-1.5625 1.5625 0
100 231.25 0
9.375 -3.125 0
-4.6875 4.6875 0
1.5625 -1.5625 0
</Coefficients>
</Spline13Core>
</Spline13>
A NURBS curve is a freeform curve built on the B-spline basis functions and defined by its order
(= degree + 1), a knot vector (an increasing sequence of real numbers which divides the
parametric space in the intervals called knot spans), and an array of control points with an
optional set of associated weights (positive real numbers). If the weights are not defined or if the
weights are equal, the curve is a polynomial one (otherwise rational).
Function:
𝑁𝑢𝑟𝑏𝑠13(𝑡): 𝑅1 → 𝑅3
𝑛−1
∑ 𝑁𝑖,𝐷𝑒𝑔𝑟𝑒𝑒 (𝑡)𝑊𝑒𝑖𝑔ℎ𝑡𝑠𝑖 𝐶𝑃𝑠𝑖
𝑖=0
𝑁𝑢𝑟𝑏𝑠13(𝑡) = 𝑛−1
∑ 𝑁𝑖,𝐷𝑒𝑔𝑟𝑒𝑒 (𝑡)𝑊𝑒𝑖𝑔ℎ𝑡𝑠𝑖
𝑖=0
𝐷𝑒𝑔𝑟𝑒𝑒 = 𝑂𝑟𝑑𝑒𝑟 − 1
1, 𝑡 ∈ [𝐾𝑛𝑜𝑡𝑠𝑖 , 𝐾𝑛𝑜𝑡𝑠𝑖+1 )
𝑁𝑖,0 (𝑡) = {
0, 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒
𝑡 − 𝐾𝑛𝑜𝑡𝑠𝑖 𝐾𝑛𝑜𝑡𝑠𝑖+𝑝+1 − 𝑡
𝑁𝑖,𝑝 (𝑡) = 𝑁𝑖,𝑝−1 (𝑡) + 𝑁 (𝑡)
𝐾𝑛𝑜𝑡𝑠𝑖+𝑝 − 𝐾𝑛𝑜𝑡𝑠𝑖 𝐾𝑛𝑜𝑡𝑠𝑖+𝑝+1 − 𝐾𝑛𝑜𝑡𝑠𝑖+1 𝑖+1,𝑝−1
Fields:
Example:
<Nurbs13 id="607">
<Nurbs13Core domain="0 1">
<Order>3</Order>
<Knots n="10">
0 0 0 0.33333333 0.33333333 0.66666667 0.66666667 1 1 1
</Knots>
<CPs n="7">
-386.61 -291.50 -44.00
-386.61 -291.50 -54.39
-377.61 -291.50 -49.19
-368.61 -291.50 -44.00
-377.61 -291.50 -38.80
-386.61 -291.50 -33.60
-386.61 -291.50 -44.00
</CPs>
<Weights n="7">
1 0.5 1 0.5 1 0.5 1
</Weights>
</Nurbs13Core>
</Nurbs13>
Function:
𝐴𝑔𝑔𝑟𝑒𝑔𝑎𝑡𝑒13(𝑡): 𝑅1 → 𝑅3
𝑗
𝑑𝑜𝑚𝑎𝑖𝑛𝑖 ∶= 𝑑𝑜𝑚𝑎𝑖𝑛𝑗 𝑜𝑓 𝑆𝑢𝑏𝐶𝑢𝑟𝑣𝑒𝑠𝑖 , 𝑗 ∈ {0,1}
𝑏𝑒𝑔𝑖𝑛
𝑡𝑖 = ∑(𝑑𝑜𝑚𝑎𝑖𝑛𝑗1 − 𝑑𝑜𝑚𝑎𝑖𝑛𝑗0 )
𝑗<𝑖
𝑏𝑒𝑔𝑖𝑛
𝑡𝑖𝑒𝑛𝑑 = 𝑡𝑖 + (𝑑𝑜𝑚𝑎𝑖𝑛1𝑖 − 𝑑𝑜𝑚𝑎𝑖𝑛𝑖0 )
𝑏𝑒𝑔𝑖𝑛
𝑑𝑜𝑚𝑎𝑖𝑛𝑖0 + (𝑡 − 𝑡𝑖 ), 𝑆𝑢𝑏𝐶𝑢𝑟𝑣𝑒𝑠𝑖 𝑖𝑠 𝑛𝑜𝑡 𝑡𝑢𝑟𝑛𝑒𝑑
𝑡𝑖 = { 𝑏𝑒𝑔𝑖𝑛
𝑑𝑜𝑚𝑎𝑖𝑛1𝑖 − (𝑡 − 𝑡𝑖 ), 𝑆𝑢𝑏𝐶𝑢𝑟𝑣𝑒𝑠𝑖 𝑖𝑠 𝑡𝑢𝑟𝑛𝑒𝑑
Fields:
Example:
<Aggregate13 id="419">
<Aggregate13Core domain="0 4">
<SubCurves n="4">
<SubCurve turned="1">
<Segment13Core domain="0 1">
<StartPoint>-367.36 -214.75 -36.50</StartPoint>
<EndPoint>-367.36 -207.50 -36.50</EndPoint>
</Segment13Core>
</SubCurve>
<SubCurve>
<Nurbs13Core domain="0 1">
<Order>3</Order>
<Knots n="6">
0 0 0 1 1 1
</Knots>
<CPs n="3">
-367.36 -214.75 -36.50
-366.61 -214.75 -36.50
-366.61 -214.75 -37.25
</CPs>
<Weights n="3">
1 0.70710678 1
</Weights>
</Nurbs13Core>
</SubCurve>
<SubCurve>
<Segment13Core domain="0 1">
<StartPoint>-366.61 -214.75 -37.25</StartPoint>
<EndPoint>-366.61 -207.50 -37.25</EndPoint>
</Segment13Core>
</SubCurve>
<SubCurve>
<Nurbs13Core domain="0 1">
<Order>4</Order>
<Knots n="10">
0 0 0 0 0.91406368 0.91406368 1 1 1 1
</Knots>
<CPs n="6">
-366.61 -207.50 -37.25
-366.61 -207.50 -36.87
-366.88 -207.50 -36.56
-367.29 -207.50 -36.50
-367.33 -207.50 -36.50
-367.36 -207.50 -36.50
</CPs>
</Nurbs13Core>
</SubCurve>
</SubCurves>
</Aggregate13Core>
</Aggregate13>
All types of QIF surfaces are derived from SurfaceBaseType as shown in Figure 109.
The surfaces are normally used as underlying geometry for topological faces.
The scaling coefficient scaleV normalizes the parameterization in the v-direction, so very large
and very small cylinders, cones and tori have reasonable parameterization. Additionally, the
scaling coefficient preserves approximate angle correspondence in 2D and 3D space as shown
in Figure 110.
Plane is an infinite flat surface. The parameterization of the plane is defined by two vectors:
DirU and DirV. As seen in Figure 112, domain values (domainU and domainV) 'limit' the plane
infinity.
Function:
𝑃𝑙𝑎𝑛𝑒23(𝑢, 𝑣): 𝑅2 → 𝑅3
𝐷𝑖𝑟𝑈 × 𝐷𝑖𝑟𝑉
𝑁𝑜𝑟𝑚𝑎𝑙 =
‖𝐷𝑖𝑟𝑈 × 𝐷𝑖𝑟𝑉‖
Fields:
Example:
<Plane23 id="233">
<Plane23Core domainU="-1.0 10.0" domainV="3.0 4.0">
<Origin>3.0 0.0 5.5</Origin>
<DirU>2.0 0.0 0.0</DirU>
<DirV>0.0 3.0 0.0</DirV>
</Plane23Core>
</Plane23>
The cylinder is a surface generated by rotating a 3D linear segment around a specified axis on a
specified angle. The rotating segment must be parallel to the specified axis.
Function:
𝐶𝑦𝑙𝑖𝑛𝑑𝑒𝑟23(𝑢, 𝑣): 𝑅2 → 𝑅3
𝐷𝑖𝑎𝑚𝑒𝑡𝑒𝑟
𝑅= , 𝐷𝑖𝑟𝑌 = 𝐷𝑖𝑟𝑒𝑐𝑡𝑖𝑜𝑛 × 𝐷𝑖𝑟𝐵𝑒𝑔
2
𝑢′ = 𝑢 ∗ 𝑠𝑐𝑎𝑙𝑒𝑈
𝑑𝑜𝑚𝑎𝑖𝑛𝐴𝑛𝑔𝑙𝑒0 𝑑𝑜𝑚𝑎𝑖𝑛𝐴𝑛𝑔𝑙𝑒1
𝑢∈[ , ], 𝑣 ∈ [0, 𝐿𝑒𝑛𝑔𝑡ℎ⁄𝑠𝑐𝑎𝑙𝑒𝑉 ]
𝑠𝑐𝑎𝑙𝑒𝑈 𝑠𝑐𝑎𝑙𝑒𝑈
Fields:
Example:
<Cylinder23 id="132">
<Cylinder23Core>
<Diameter>4.4</Diameter>
<Length>7.1</Length>
<Axis>
<AxisPoint>10.0 0.0 0.0</AxisPoint>
<Direction>0.0 0.0 1.0</Direction>
</Axis>
<Sweep>
<DirBeg>1.0 0.0 0.0</DirBeg>
<DomainAngle>1.3 1.9</DomainAngle>
</Sweep>
</Cylinder23Core>
</Cylinder23>
The cone is a surface generated by rotating a 3D linear segment around a specified axis on a
specified angle. The axis and the rotating segment must be coplanar.
Function:
𝐶𝑜𝑛𝑒23(𝑢, 𝑣): 𝑅2 → 𝑅3
𝐷𝑖𝑎𝑚𝑒𝑡𝑒𝑟𝑇𝑜𝑝 𝐷𝑖𝑎𝑚𝑒𝑡𝑒𝑟𝐵𝑜𝑡𝑡𝑜𝑚
𝑅𝑎𝑑𝑖𝑢𝑠𝑇𝑜𝑝 = , 𝑅𝑎𝑑𝑖𝑢𝑠𝐵𝑜𝑡𝑡𝑜𝑚 =
2 2
𝑅𝑎𝑑𝑖𝑢𝑠𝑇𝑜𝑝 − 𝑅𝑎𝑑𝑖𝑢𝑠𝐵𝑜𝑡𝑡𝑜𝑚
𝑅(𝑣) = 𝑅𝑎𝑑𝑖𝑢𝑠𝐵𝑜𝑡𝑡𝑜𝑚 + 𝑣
𝐿𝑒𝑛𝑔𝑡ℎ
𝑢′ = 𝑢 ∗ 𝑠𝑐𝑎𝑙𝑒𝑈
Fields:
Field Name Data Type Description
This flag shows if the v direction of the
Cone23Core/@turnedV xs:boolean
cone must be inverted.
The scaling coefficient of the u direction
Cone23Core/@scaleU DoublePositiveType
of the parametric space.
The scaling coefficient of the v direction
Cone23Core/@scaleV DoublePositiveType
of the parametric space.
Cone23Core/DiameterBottom xs:double The diameter at the bottom.
Example:
<Cone23 id="132">
<Cone23Core>
<DiameterBottom>4.4</DiameterBottom>
<DiameterTop>2.1</DiameterTop>
<Length>7.1</Length>
<Axis>
<AxisPoint>10.0 0.0 0.0</AxisPoint>
<Direction>0.0 0.0 1.0</Direction>
</Axis>
<Sweep>
<DirBeg>1.0 0.0 0.0</DirBeg>
<DomainAngle>1.3 1.9</DomainAngle>
</Sweep>
</Cone23Core>
</Cone23>
Function:
𝑆𝑝ℎ𝑒𝑟𝑒23(𝑢, 𝑣): 𝑅2 → 𝑅3
𝑆𝑝ℎ𝑒𝑟𝑒23(𝑢, 𝑣)
= 𝐿𝑜𝑐𝑎𝑡𝑖𝑜𝑛 + 𝑅 sin(𝑣 ′ ) 𝐷𝑖𝑟𝑁𝑜𝑟𝑡ℎ𝑃𝑜𝑙𝑒
+ 𝑅cos(𝑣 ′ )(cos(𝑢′ )𝐷𝑖𝑟𝑀𝑒𝑟𝑖𝑑𝑖𝑎𝑛𝑃𝑟𝑖𝑚𝑒 + sin(𝑢′ )𝐷𝑖𝑟𝑌)
𝐷𝑖𝑎𝑚𝑒𝑡𝑒𝑟
𝑅=
2
𝑢′ = 𝑢 ∗ 𝑠𝑐𝑎𝑙𝑒𝑈
Fields:
Example:
<Sphere23 id="132">
<Sphere23Core>
<Diameter>7.4</Diameter>
<Location>2.0 3.0 2.3</Location>
<LatitudeLongitudeSweep>
<DirMeridianPrime>1.0 0.0 0.0</AxisPoint>
<DomainLatitude>-0.1 0.4</DomainLatitude>
<DomainLongitude>0.2 1.4</ DomainLongitude>
<DirNorthPole>0.0 0.0 1.0</DirNorthPole>
</LatitudeLongitudeSweep >
</Sphere23Core>
</Sphere23>
The torus is a surface generated by rotating a 3D circular arc around an axis coplanar with the
arc on a specified angle.
Function:
𝑇𝑜𝑟𝑢𝑠23(𝑢, 𝑣): 𝑅2 → 𝑅3
𝐷𝑖𝑎𝑚𝑒𝑡𝑒𝑟𝑀𝑖𝑛𝑜𝑟 𝐷𝑖𝑎𝑚𝑒𝑡𝑒𝑟𝑀𝑎𝑗𝑜𝑟
𝑅𝑎𝑑𝑖𝑢𝑠𝑀𝑖𝑛𝑜𝑟 = , 𝑅𝑎𝑑𝑖𝑢𝑠𝑀𝑎𝑗𝑜𝑟 =
2 2
𝑢′ = 𝑢 ∗ 𝑠𝑐𝑎𝑙𝑒𝑈
Fields:
The scaling
coefficient of the u
Torus23Core/@scaleU DoublePositiveType
direction of the
parametric space.
The scaling
coefficient of the v
Torus23Core/@scaleV DoublePositiveType
direction of the
parametric space.
The torus minor
Torus23Core/DiameterMinor xs:double
diameter.
The torus major
Torus23Core/DiameterMajor xs:double
diameter.
The axis origin (the
Torus23Core/Axis/AxisPoint PointType
bottom center).
Torus23Core/Axis/Direction UnitVectorType The axis vector.
The direction of the
prime meridian
vector. The
longitude is 0 on the
Torus23Core/LatitudeLongitudeSweep/DirMeridianPri
UnitVectorType PrimeMeridianVect
me
or. This vector must
be perpendicular to
the north pole
vector.
The latitude domain
Torus23Core/LatitudeLongitudeSweep/DomainLatitude AngleRangeType
(the v direction).
The longitude
domain (the u
direction).
Regardless of the
Torus23Core/LatitudeLongitudeSweep/DomainLongitu
AngleRangeType values of the
de
longitude domain,
the longitude sweep
is in the positive
direction.
Example:
<Torus23 id="344">
<Torus23Core>
<DiameterMinor>8.0</DiameterMinor>
<DiameterMajor>24.0</DiameterMajor>
<Axis>
<AxisPoint>10.0 3.0 0.0</AxisPoint>
<Direction>0.0 0.0 1.0</Direction>
</Axis>
<LatitudeLongitudeSweep>
<DirMeridianPrime>1.0 0.0 0.0</DirMeridianPrime>
<DomainLatitude>0.0 1.57</DomainLatitude>
<DomainLongitude>0.0 3.14</DomainLongitude>
</LatitudeLongitudeSweep>
</Torus23Core>
</Torus23>
The extrude surface is an extrusion of the profile-curve along the extrusion direction for a
distance specified by the termination point.
Function:
𝐸𝑥𝑡𝑟𝑢𝑑𝑒23(𝑢, 𝑣): 𝑅2 → 𝑅3
0 ))𝑣
𝐸𝑥𝑡𝑟𝑢𝑑𝑒23(𝑢, 𝑣) = 𝐶𝑢𝑟𝑣𝑒(𝑢) + (𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑡𝑖𝑜𝑛𝑃𝑜𝑖𝑛𝑡 − 𝐶𝑢𝑟𝑣𝑒(𝑑𝑜𝑚𝑎𝑖𝑛𝑐𝑟𝑣
0
𝑢 ∈ [𝑑𝑜𝑚𝑎𝑖𝑛𝑐𝑟𝑣 , 𝑑𝑜𝑚𝑎𝑖𝑛1𝑐𝑟𝑣 ], 𝑣 ∈ [0,1]
Fields:
Example:
<Extrude23 id="357">
<Extrude23Core >
<TerminationPoint>20.4 11.2 -0.9</TerminationPoint>
<Curve>
<ArcCircular13Core domain="0 3.14159265358979">
<Radius>0.25</Radius>
<Center>20.0 11.0 0.0</Center>
<DirBeg>1.0 0.0 0.0</DirBeg>
<Normal>0.0 0.0 1.0</Normal>
</ArcCircular13Core>
</Curve>
</Extrude23Core>
</Extrude23>
The ruled surface is generated by connecting corresponding points on two 3D curves by a set of
linear segments.
Function:
𝑅𝑢𝑙𝑒𝑑23(𝑢, 𝑣): 𝑅2 → 𝑅3
𝑢 ∈ [0,1], 𝑣 ∈ [0,1]
Fields:
Example:
<Ruled23 id="361">
<Ruled23Core>
<Curve>
<ArcCircular13Core domain="2.214 4.068">
<Radius>0.625</Radius>
<Center>14.8 11.0 0</Center>
<DirBeg>1.0 0.0 0.0</DirBeg>
<Normal>0.0 0.0 1.0</Normal>
</ArcCircular13Core>
</Curve>
<Curve>
<Segment13Core domain="0 1">
<StartPoint>13.5 11.5 0.1</StartPoint>
<EndPoint>13.5 10.5 0.3</EndPoint>
</Segment13Core>
</Curve>
</Ruled23Core>
</Ruled23>
The surface of revolution is generated by rotating a 3D generatrix curve around a specified axis
on a specified angular range.
Function:
𝑅𝑒𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛23(𝑢, 𝑣): 𝑅2 → 𝑅3
𝐺𝑒𝑛𝑒𝑟𝑎𝑡𝑟𝑖𝑥(𝑢) − 𝑃(𝑢)
𝐷𝑖𝑟𝑋(𝑢) =
‖𝐺𝑒𝑛𝑒𝑟𝑎𝑡𝑟𝑖𝑥(𝑢) − 𝑃(𝑢)‖
Fields:
Example:
<Revolution23 id="354">
<Revolution23Core angle="0 6.28318">
<Axis>
<AxisPoint>18.0 10.5 0</AxisPoint>
<Direction>0.0 1.0 0.0</Direction>
</Axis>
<Generatrix>
<ArcCircular13Core domain="1.965 4.317">
<Radius>0.4</Radius>
<Center>18.6 11.1 0.0</Center>
<DirBeg>1.0 0.0 0.0</DirBeg>
<Normal>0.0 0.0 1.0</Normal>
</ArcCircular13Core>
</Generatrix>
</Revolution23Core>
</Revolution23>
Function:
𝑆𝑝𝑙𝑖𝑛𝑒23(𝑢, 𝑣): 𝑅2 → 𝑅3
𝐷𝑒𝑔𝑟𝑒𝑒𝑈𝑝 𝐷𝑒𝑔𝑟𝑒𝑒𝑉𝑞
𝑝,𝑞
∑ ∑ (𝐶𝑖,𝑗 )𝑥 (𝑢𝑝 )𝑖 (𝑣𝑞 )𝑗
𝑖=0 𝑗=0
𝑥(𝑢, 𝑣) 𝐷𝑒𝑔𝑟𝑒𝑒𝑈𝑝 𝐷𝑒𝑔𝑟𝑒𝑒𝑉𝑞
𝑝,𝑞
𝑆𝑝𝑙𝑖𝑛𝑒23(𝑢, 𝑣) = [𝑦(𝑢, 𝑣)] = ∑ ∑ (𝐶𝑖,𝑗 )𝑦 (𝑢𝑝 )𝑖 (𝑣𝑞 )𝑗
𝑧(𝑢, 𝑣) 𝑖=0 𝑗=0
𝐷𝑒𝑔𝑟𝑒𝑒𝑈𝑝 𝐷𝑒𝑔𝑟𝑒𝑒𝑉𝑞
𝑝,𝑞
∑ ∑ (𝐶𝑖,𝑗 )𝑧 (𝑢𝑝 )𝑖 (𝑣𝑞 )𝑗
[ 𝑖=0 𝑗=0 ]
𝐷𝑒𝑔𝑟𝑒𝑒𝑈𝑝 = 𝑂𝑟𝑑𝑒𝑟𝑠𝑈𝑝 − 1
𝐷𝑒𝑔𝑟𝑒𝑒𝑉𝑞 = 𝑂𝑟𝑑𝑒𝑟𝑠𝑉𝑞 − 1
𝑁𝐶 − 𝑛𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑐𝑜𝑒𝑓𝑓𝑖𝑐𝑖𝑒𝑛𝑡𝑠
𝑁𝑢 −1 𝑁𝑣 −1
𝑁𝐶 = ∑ ∑ 𝑁𝐶 𝑝,𝑞
𝑝=0 𝑞=0
Fields:
Example:
<Spline23 id="101">
<Spline23Core>
<KnotsU n="3">
0 1 2
</KnotsU>
<KnotsV n="2">
0 1
</KnotsV>
<OrdersU n="2">4 4</OrdersU>
<OrdersV n="2">4 4</OrdersV>
<Coefficients n="32">
-29.7 -20 13
47.1 18 33
-21.6 -18 -90
4.45 6.75 49
-15.9 60 -48
2.7 -54 0
-2.7 54 132.3
7.65 -20.25 -83.7
30.9 -60 12
6.3 54 117
-13.05 -54 -314.1
0.6 20.25 147.9
-20.3 34 -5
-14.1 -60 -129
19.35 60 241.8
-6.2 -20.75 -100.45
0.25 -13.25 5
17.25 2.25 0
-8.25 2.25 57
25.75 -6.25 -49
-8.25 39.75 0.6
20.25 -6.75 13.5
20.25 -6.75 -118.8
-53.25 18.75 77.7
24.75 -39.75 -37.2
-18 6.75 -67.5
-11.25 6.75 129.6
45.3 -18.75 -54.9
-21.25 13.25 7.35
6 -2.25 53.25
0.75 -2.25 -59.55
-8.3 16.25 14.95
</Coefficients>
</Spline23Core>
</Spline23>
A NURBS surface is a bivariate vector-valued piecewise rational function built on the B-spline
basis functions and defined by its orders in the u and v directions, two knot vectors (an
increasing sequence of real numbers which divides the parametric space in the intervals called
knot spans), and a bidirectional control net with an optional set of associated weights (positive
real numbers). If the weights are not defined or if the weights are equal, the surface is
polynomial (otherwise rational).
Function:
𝑁𝑢𝑟𝑏𝑠23(𝑢, 𝑣): 𝑅2 → 𝑅3
∑𝑛−1 𝑚−1
𝑖=0 ∑𝑗=0 𝑁𝑖,𝐷𝑒𝑔𝑟𝑒𝑒𝑈 (𝑢)𝑁𝑗,𝐷𝑒𝑔𝑟𝑒𝑒𝑉 (𝑣)𝑊𝑒𝑖𝑔ℎ𝑡𝑠𝑖,𝑗 𝐶𝑃𝑠𝑖𝑗
𝑁𝑢𝑟𝑏𝑠23(𝑢, 𝑣) =
∑𝑛−1 𝑚−1
𝑖=0 ∑𝑗=0 𝑁𝑖,𝐷𝑒𝑔𝑟𝑒𝑒𝑈 (𝑢)𝑁𝑗,𝐷𝑒𝑔𝑟𝑒𝑒𝑉 (𝑣)𝑊𝑒𝑖𝑔ℎ𝑡𝑠𝑖,𝑗
1, 𝑡 ∈ [𝐾𝑛𝑜𝑡𝑠𝑖 , 𝐾𝑛𝑜𝑡𝑠𝑖+1 )
𝑁𝑖,0 (𝑡) = {
0, 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒
𝑡 − 𝐾𝑛𝑜𝑡𝑠𝑖 𝐾𝑛𝑜𝑡𝑠𝑖+𝑝+1 − 𝑡
𝑁𝑖,𝑝 (𝑡) = 𝑁𝑖,𝑝−1 (𝑡) + 𝑁 (𝑡)
𝐾𝑛𝑜𝑡𝑠𝑖+𝑝 − 𝐾𝑛𝑜𝑡𝑠𝑖 𝐾𝑛𝑜𝑡𝑠𝑖+𝑝+1 − 𝐾𝑛𝑜𝑡𝑠𝑖+1 𝑖+1,𝑝−1
𝐶𝑃𝑠 = {𝐶𝑃𝑠
⏟ 0,0 , … , 𝐶𝑃𝑠𝑛−1,0 , … , 𝐶𝑃𝑠
⏟ 0,𝑚−1 , … , 𝐶𝑃𝑠𝑛−1,𝑚−1 }
𝑛 𝑛
𝑊𝑒𝑖𝑔ℎ𝑡𝑠 = {𝑊𝑒𝑖𝑔ℎ𝑡𝑠
⏟ 0,0 , … , 𝑊𝑒𝑖𝑔ℎ𝑡𝑠𝑛−1,0 , … , 𝑊𝑒𝑖𝑔ℎ𝑡𝑠
⏟ 0,𝑚−1 , … , 𝑊𝑒𝑖𝑔ℎ𝑡𝑠𝑛−1,𝑚−1 }
𝑛 𝑛
Fields:
Example:
<Nurbs23 id="102">
<Nurbs23Core>
<OrderU>4</OrderU>
<OrderV>4</OrderV>
<KnotsU n="8">
0 0 0 0 1 1 1 1
</KnotsU>
<KnotsV n="8">
0 0 0 0 1 1 1 1
</KnotsV>
<CPs n="16">
-1.165 -0.787 0.511
-0.551 -0.551 0.944
-0.216 -0.551 0.196
0.009 -0.521 0.196
-1.377 0 -0.118
-0.748 0 0.314
-0.413 0 0.145
-0.098 0 0.204
-1.181 0 -0.590
-0.511 0 0.354
-0.206 0 -0.098
0.118 0 -0.275
-1.377 0.551 -1.102
-0.826 0 -0.826
-0.511 0 -0.944
-0.177 0 -0.954
</CPs>
</Nurbs23Core>
</Nurbs23>
The offset surface is constructed from an existing surface by moving every surface point in the
normal direction by an offset distance.
Function:
𝑂𝑓𝑓𝑠𝑒𝑡23(𝑢, 𝑣): 𝑅2 → 𝑅3
𝑆𝑢𝑟𝑓𝑎𝑐𝑒𝑢′ × 𝑆𝑢𝑟𝑓𝑎𝑐𝑒𝑣′
𝑁𝑠𝑟𝑓 (𝑢, 𝑣) =
‖𝑆𝑢𝑟𝑓𝑎𝑐𝑒𝑢′ × 𝑆𝑢𝑟𝑓𝑎𝑐𝑒𝑣′ ‖
0 1 0 1
𝑢 ∈ [𝑑𝑜𝑚𝑎𝑖𝑛𝑈𝑠𝑟𝑓 , 𝑑𝑜𝑚𝑎𝑖𝑛𝑈𝑠𝑟𝑓 ], 𝑣 ∈ [𝑑𝑜𝑚𝑎𝑖𝑛𝑉𝑠𝑟𝑓 , 𝑑𝑜𝑚𝑎𝑖𝑛𝑉𝑠𝑟𝑓 ]
Fields:
Example:
<Offset23 id="97">
<Offset23Core>
<Distance>0.2</Distance>
<Surface>
<Nurbs23Core>
<OrderU>4</OrderU>
<OrderV>4</OrderV>
<KnotsU n="8">
0 0 0 0 1 1 1 1
</KnotsU>
<KnotsV n="8">
0 0 0 0 1 1 1 1
</KnotsV>
<CPs n="16">
-1.165 -0.787 0.511
-0.551 -0.551 0.944
-0.216 -0.551 0.196
0.009 -0.521 0.196
-1.377 0 -0.118
-0.748 0 0.314
-0.413 0 0.145
-0.098 0 0.204
-1.181 0 -0.590
-0.511 0 0.354
-0.206 0 -0.098
0.118 0 -0.275
-1.377 0.551 -1.102
-0.826 0 -0.826
-0.511 0 -0.944
-0.177 0 -0.954
</CPs>
</Nurbs23Core>
</Surface>
</Offset23Core>
</Offset23>
𝐸𝑡𝑤 − 𝑡ℎ𝑒 𝑒𝑑𝑔𝑒 ′𝑤′ 𝑜𝑓 𝑡ℎ𝑒 𝑡𝑟𝑖𝑎𝑛𝑔𝑙𝑒 ′𝑡′ 𝑖𝑠 𝑜𝑝𝑝𝑜𝑠𝑖𝑡𝑒 𝑡𝑜 𝑡ℎ𝑒 𝑣𝑒𝑟𝑡𝑒𝑥 ′𝑤′
(𝑤+1) 𝑚𝑜𝑑 3
𝑆𝑡𝑎𝑟𝑡 𝑝𝑜𝑖𝑛𝑡 = 𝑣1 = 𝑉𝑒𝑟𝑡𝑖𝑐𝑒𝑠𝑎 , 𝑎 = 𝑇𝑟𝑖𝑎𝑛𝑔𝑙𝑒𝑠𝑡
𝐸𝑡𝑤 ={ (𝑤+2) 𝑚𝑜𝑑 3
𝐸𝑛𝑑 𝑝𝑜𝑖𝑛𝑡 = 𝑣2 = 𝑉𝑒𝑟𝑡𝑖𝑐𝑒𝑠𝑏 , 𝑏 = 𝑇𝑟𝑖𝑎𝑛𝑔𝑙𝑒𝑠𝑡
𝑉 = {𝑣0 , 𝑣1 , 𝑣2 , 𝑣3 , 𝑣4 }
The triangulation path is a polyline formed from the mesh edges as shown in Figure 140.
Function:
𝐸𝑑𝑔𝑒𝑠 = {𝑡⏟0 , 𝑤0 , … , ⏟
𝑡𝑛−1 , 𝑤𝑛−1 }, 𝑛 − 𝑛𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑒𝑑𝑔𝑒𝑠
𝐸𝑑𝑔𝑒0 𝐸𝑑𝑔𝑒𝑛−1
𝑤
𝑃𝑎𝑖𝑟𝑠 (𝑡𝑖 , 𝑤𝑖 ) 𝑠𝑝𝑒𝑐𝑖𝑓𝑖𝑒𝑠 𝑒𝑑𝑔𝑒𝑠 𝐸𝑡𝑖 𝑖
𝑉 = {𝑣0 , … , 𝑣𝑛 }
Fields:
Example:
<PathTriangulation id="32">
<PathTriangulationCore>
<Edges n="2">
1 0
0 2
</Edges>
</PathTriangulationCore>
<MeshTriangle>
<Id>98</Id>
</MeshTriangle>
</PathTriangulation>
<MeshTriangle id="98">
<MeshTriangleCore>
<Triangles n="2">
0 1 2
2 3 0
</Triangles>
<Neighbours n="2">
-1 1 -1
-1 0 -1
</Neighbours>
<Vertices n="4">
0.0 0.0 0.0
10.0 0.0 0.0
10.0 5.0 0.0
0.0 5.0 0.0
</Vertices>
</MeshTriangleCore>
</MeshTriangle>
𝑤0 𝑤0
𝑡0 = 𝑁𝑒𝑖𝑔ℎ𝑏𝑜𝑢𝑟𝑠𝑡11 , 𝑡1 = 𝑁𝑒𝑖𝑔ℎ𝑏𝑜𝑢𝑟𝑠𝑡00
𝑤2 𝑤1
𝑣0 = 𝑉𝑒𝑟𝑡𝑖𝑐𝑒𝑠𝑖 = 𝑉𝑒𝑟𝑡𝑖𝑐𝑒𝑠𝑗 , 𝑖 = 𝑇𝑟𝑖𝑎𝑛𝑔𝑙𝑒𝑠𝑡00 , 𝑗 = 𝑇𝑟𝑖𝑎𝑛𝑔𝑙𝑒𝑠𝑡11
𝑤0
𝑣1 = 𝑉𝑒𝑟𝑡𝑖𝑐𝑒𝑠𝑖 , 𝑖 = 𝑇𝑟𝑖𝑎𝑛𝑔𝑙𝑒𝑠𝑡11
𝑤0
𝑣2 = 𝑉𝑒𝑟𝑡𝑖𝑐𝑒𝑠𝑖 , 𝑖 = 𝑇𝑟𝑖𝑎𝑛𝑔𝑙𝑒𝑠𝑡00
0 𝑤1 1 𝑤2
{𝑣3 = 𝑉𝑒𝑟𝑡𝑖𝑐𝑒𝑠𝑖 = 𝑉𝑒𝑟𝑡𝑖𝑐𝑒𝑠𝑗 , 𝑖 = 𝑇𝑟𝑖𝑎𝑛𝑔𝑙𝑒𝑠𝑡0 , 𝑗 = 𝑇𝑟𝑖𝑎𝑛𝑔𝑙𝑒𝑠𝑡1
−1 𝑡3
𝑁𝑒𝑖𝑔ℎ𝑏𝑜𝑢𝑟𝑠𝑡0 = [ 𝑡2 ] , 𝑁𝑒𝑖𝑔ℎ𝑏𝑜𝑢𝑟𝑠𝑡1 = [−1]
𝑡1 𝑡0
A mesh surface is a set of triangles connected by their common edges as shown in Figure 142.
QIF allows defining more than one normal vector per vertex; in this case, the special normals
array shall be used as shown in Figure 143 – Triangle Mesh with special normals.
Function:
𝑇𝑟𝑖𝑎𝑛𝑔𝑙𝑒𝑠𝑡𝑤 = 𝑡ℎ𝑒 𝑣𝑒𝑟𝑡𝑒𝑥𝑤 𝑖𝑛 𝑡ℎ𝑒 𝑡𝑟𝑖𝑎𝑛𝑔𝑙𝑒𝑡
Fields:
Example:
<MeshTriangle id="98">
<MeshTriangleCore>
<Triangles n="2">
0 1 2
2 3 0
</Triangles>
<Neighbours n="2">
-1 1 -1
-1 0 -1
</Neighbours>
<Vertices n="4">
0.0 0.0 0.0
10.0 0.0 0.0
10.0 5.0 0.0
0.0 5.0 0.0
</Vertices>
<Normals n="4">
0 0 1
0 0 1
0 0 1
0 0 1
</Normals>
</MeshTriangleCore>
<NormalsSpecial n="2">
<NormalSpecial vertex="0 0">
0.5 0 0.8660254037844
</NormalSpecial>
<NormalSpecial vertex="1 2">
0 0.5 0.8660254037844
</NormalSpecial>
</NormalsSpecial>
</MeshTriangle>
7.5.3 Topology
QIF topology elements define boundaries of geometry objects and specify connectivity relations.
In QIF they are separated by type and organized in the following sets:
VertexSet
EdgeSet
LoopSet
FaceSet
ShellSet
BodySet
PointCloudSet
As seen in Figure 144, all topology types are derived from TopologyBaseType.
7.5.3.1 Vertex
Vertex describes a topological vertex as illustrated in Figure 146.
Fields:
Example:
<Vertex id="401">
<Point>
<Id>398</Id>
</Point>
</Vertex>
7.5.3.2 Edge
Edge describes a topological edge as shown in Figure 147.
Fields:
Example:
<Edge id="405">
<Curve>
<Id>390</Id>
</Curve>
<VertexBeg>
<Id>566</Id>
</VertexBeg>
<VertexEnd>
<Id>401</Id>
</VertexEnd>
</Edge>
7.5.3.3 Loop
Loop describes a topological loop as shown in Figure 148.
A loop is a circuit of edges (in 3D space) with corresponding CoEdges (in surface parameter
space) bounding a face. CoEdges are shown in Figure 149.
Fields:
Example:
<Loop id="113" form="OUTER">
<CoEdges n="4">
<CoEdge>
<EdgeOriented>
<Id>405</Id>
</EdgeOriented>
<Curve12>
<Id>520</Id>
</Curve12>
</CoEdge>
<CoEdge>
<EdgeOriented>
<Id>469</Id>
</EdgeOriented>
<Curve12>
<Id>532</Id>
</Curve12>
</CoEdge>
<CoEdge>
<EdgeOriented turned="1">
<Id>511</Id>
</EdgeOriented>
<Curve12>
<Id>547</Id>
</Curve12>
</CoEdge>
<CoEdge>
<EdgeOriented>
<Id>567</Id>
</EdgeOriented>
<Curve12>
<Id>563</Id>
</Curve12>
</CoEdge>
</CoEdges>
</Loop>
7.5.3.3.1 Co-Edges
A CoEdge defines a parameter space curve (i.e. the projection of an underlying 3D Curve of an
edge onto an underlying surface of a face) that represents a part of the face trimming loop and
additionally includes the corresponding edge orientation flag.
A mesh loop is a circuit of CoEdges bounding a mesh face as shown in Figure 155.
Fields:
A reference to a
mesh curve. This is
the projection of the
underlying 3D Curve
CoEdgesMesh/CoEdge/CurveMesh ElementReferenceType
of an oriented Edge
onto an underlying
mesh surface of a
mesh face.
Example:
<LoopMesh id="113">
<CoEdgesMesh n="4">
<CoEdgeMesh>
<EdgeOriented>
<Id>405</Id>
</EdgeOriented>
<CurveMesh>
<Id>520</Id>
</CurveMesh>
</CoEdgeMesh>
<CoEdgeMesh>
<EdgeOriented>
<Id>469</Id>
</EdgeOriented>
<CurveMesh>
<Id>532</Id>
</CurveMesh>
</CoEdgeMesh>
<CoEdgeMesh>
<EdgeOriented turned="1">
<Id>511</Id>
</EdgeOriented>
<CurveMesh>
<Id>547</Id>
</CurveMesh>
</CoEdgeMesh>
<CoEdgeMesh>
<EdgeOriented>
<Id>567</Id>
</EdgeOriented>
<CurveMesh>
<Id>563</Id>
</CurveMesh>
</CoEdgeMesh>
</CoEdgesMesh>
</LoopMesh>
7.5.3.5 Face
Face describes a topological face as shown in Figure 156.
Fields:
Example:
<Face id="174" color="191 191 191" turned="1">
<Surface>
<Id>102</Id>
</Surface>
<LoopIds n="1">
<Id>113</Id>
</LoopIds>
</Face>
As shown in Figure 158, a mesh face is built on a mesh surface bounded by a set of closed
triangulation paths (polylines formed from the triangle edges). The triangles of a mesh face may
be colored and they may be hidden. By default, all triangles in a mesh face are visible, and their
appearance is the same on both sides.
Fields:
Example:
<FaceMesh id="234">
<Mesh>
<Id>34</Id>
</Mesh>
<LoopIds n="1">
<Id>55</Id>
</LoopIds>
<Triangles n="8">
19 20 21 22 23 40 41 42
</Triangles>
<TrianglesHidden n="3">
0 6 7
</TrianglesHidden>
<TrianglesColor n="8">
255 255 255
255 255 255
255 255 255
128 0 0
255 10 255
100 255 255
255 10 255
128 0 0
</TrianglesColor>
</FaceMesh>
7.5.3.7 Shell
Shell describes a topological shell as shown in Figure 159.
A topological shell is a set of connected faces. Figure 160 shows an exploded view of the faces
of a shell along with their normal vectors.
Fields:
Example:
<Shell id="578" closed="1" form="OUTER">
<FaceIds n="6">
<Id>176</Id>
<Id>180</Id>
<Id>178</Id>
<Id>174</Id>
<Id>179</Id>
<Id>177</Id>
</FaceIds>
</Shell>
7.5.3.8 Body
Body describes a topological body as shown in Figure 161.
A body is a solid represented as a set of one outer and a number of inner shells.
Fields:
Example:
<Body id="127" color="0 255 0" form="SOLID">
<ShellIds n="1">
<Id>578</Id>
</ShellIds>
<FaceIds n="6">
<Id>176</Id>
<Id>179</Id>
<Id>180</Id>
<Id>178</Id>
<Id>174</Id>
<Id>177</Id>
</FaceIds>
<LoopIds n="6">
<Id>126</Id>
<Id>161</Id>
<Id>171</Id>
<Id>151</Id>
<Id>113</Id>
<Id>139</Id>
</LoopIds>
<EdgeIds n="12">
<Id>539</Id>
<Id>555</Id>
<Id>567</Id>
<Id>575</Id>
<Id>511</Id>
<Id>495</Id>
<Id>487</Id>
<Id>456</Id>
<Id>430</Id>
<Id>405</Id>
<Id>469</Id>
<Id>425</Id>
</EdgeIds>
<VertexIds n="8">
<Id>553</Id>
<Id>566</Id>
<Id>494</Id>
<Id>486</Id>
<Id>451</Id>
<Id>401</Id>
<Id>462</Id>
<Id>421</Id>
</VertexIds>
</Body>
𝑁 − 𝑛𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑝𝑜𝑖𝑛𝑡𝑠
A point cloud is a collection of 3D points with an optional set of associated normals. The points
may be colored and they may be hidden. In order to simplify work with point clouds QIF
considers this object as a topological exception. This means that this type of geometric data
does not need any extra topological wrapper and it can participate in the model scene as it is.
Fields:
Example:
<PointCloud id="3">
<Points n="20">
-1.16929133858268 -0.78740157480315 0.511811023622047
-0.883047171186937 -0.687746062992126 0.638852435112278
-0.63918051910178 -0.620078740157481 0.622630504520268
-0.259113444152814 -0.551181102362205 0.374744823563721
0.00984251968503937 -0.521653543307087 0.196850393700787
-1.27238261883931 -0.212890055409741 -0.0729075532225137
-0.980417571260382 -0.19196288735513 0.125172480368966
-0.731792013652614 -0.177678407483015 0.203090740200685
-0.334651069850837 -0.162556840888716 0.146355162394824
-0.0211431904345291 -0.15456401283173 0.0527121609798776
-1.28273549139691 0.134149897929426 -0.596383785360163
-0.995118906818745 0.0690377148072541 -0.360411738656125
-0.750102610630461 0.0254231338366655 -0.245109793374594
-0.352964367108432 -0.0143654882645842 -0.24891178726116
-0.0215077282006419 -0.0193205016039662 -0.352580927384077
-1.37795275590551 0.551181102362205 -1.10236220472441
-1.12086249635462 0.318970545348498 -0.995051399825022
-0.896033829104695 0.163312919218431 -0.939413823272091
-0.514727325750948 0.0204141149023039 -0.927384076990376
-0.177165354330709 0 -0.954724409448819
</Points>
<Normals n="20">
-0.623765689571477 0.380773422526389 0.682589162828535
-0.310237069934693 0.562301118777707 0.766531416355309
0.090750754593406 0.625699548958669 0.774767303758777
0.577779206607798 0.413801444322832 0.70351940491219
0.00191672240401954 -0.0146948717641499 0.99989018743013
-0.509232347350378 0.675520319522933 0.533249204709822
-0.326094688542491 0.757232035434036 0.56591686546418
-0.118001946731718 0.795610989745604 0.594204252394364
0.205316690584309 0.75203536789529 0.626328876870692
0.00588691478872499 0.776036953180493 0.630659965062479
-0.325919814041952 0.783893402891083 0.528476496846074
-0.0597624697937558 0.921696358846995 0.383280927378786
0.0741285257671752 0.965747087229765 0.248671520634772
0.0810453652229759 0.988778769243019 0.125491809573915
0.0200710836160788 0.993714825343097 0.110127187813973
0.398014876083999 0.696526033146993 0.597022314125991
Figure 165 – Sewn Faces (normals of the underlying surfaces are conformed: Turned0 =
Turned1 = FALSE)
Figure 166 – Sewn Faces (normals of the underlying surfaces are not conformed: Turned0
(FALSE) ≠ Turned1 (TRUE))
QIF can store data from both types of modelers (exact and tolerant) by use of the optional
attribute “@tolerance” that can be specified for edges and vertices.
Tolerant edges shall contain the actual tolerance value, which is calculated as the maximum
distance between the 2D parametric co-edges of the neighbor faces.
Tolerant vertices shall contain the actual tolerance value, which is calculated as the maximum
distance from the vertex underlying 3D point to the ends of all neighboring edges that are
terminated in the neighborhood of this vertex.
Figure 168 shows the product directed acyclic graph representing the relationships between
parts, assemblies and components that describe the product content.
A part defines one body or a number of bodies (also known as a “multi-body part”), and can be
instantiated multiple times in the CAD scene. The use of part instances simplifies the need to
maintain identical model elements and reduces the total amount of scene data.
An assembly defines one or more bodies and may also include other components (instances of
other parts or sub-assemblies). An assembly itself can be instantiated multiple times in the CAD
scene. The use of assemblies simplifies the need to maintain identical model elements and
reduces the total amount of scene data.
Root Description
The starting point of the product directed acyclic graph for a part.
Product/RootPart The graph contains only one node because the part cannot
contain references to any components or assemblies.
The starting point of the product directed acyclic graph for an
Product/RootAssembly
assembly.
The starting point of the product directed acyclic graph for a
Product/RootComponent
component.
AsmPath definition:
AsmPath Fields:
In QIF all assembly paths used for referencing are collected in the table AsmPaths only when
needed. Every assembly path has its own unique QIFId that is included in one or more
referencing elements of QIFReferenceFullType. This provides a clear, unambiguous and
compact way of referencing part entities within an assembly of any complexity. See Figure 170
for an example.
Example:
</AsmPaths>
𝑇(𝑥) − 𝑡𝑟𝑎𝑛𝑠𝑓𝑜𝑟𝑚𝑎𝑡𝑖𝑜𝑛
𝑇(𝑥): 𝑅3 → 𝑅3
𝑃𝐴 − 𝑝𝑎𝑟𝑡 𝑜𝑟 𝑠𝑢𝑏𝑎𝑠𝑠𝑒𝑚𝑏𝑙𝑦
Positioning of 𝑃𝐴 geometry inside the parent component 𝐶𝑛−1 shall be calculated by applying
transformation 𝑇𝐶С𝑛−1 to the 𝑃𝐴 entities. To calculate position and orientation of 𝑃𝐴 entities in
Global Model Space, it is necessary to follow the entire instantiation chain (AsmPath)
sequentially applying transformations coming from 𝑃𝐴 to the assembly root.
𝑇𝑃𝐴𝑚𝑜𝑑𝑒𝑙(𝑥)
− 𝑡𝑜𝑡𝑎𝑙 𝑡𝑟𝑎𝑛𝑠𝑓𝑜𝑟𝑚𝑎𝑡𝑖𝑜𝑛 𝑜𝑓 𝑎 3𝐷 𝑝𝑜𝑖𝑛𝑡 𝑑𝑒𝑓𝑖𝑛𝑒𝑑 𝑖𝑛 𝑃𝐴 𝑡𝑜 𝐺𝑙𝑜𝑏𝑎𝑙 𝑀𝑜𝑑𝑒𝑙 𝑆𝑝𝑎𝑐𝑒
A body can be included in only one part or assembly (the DefinitionInternal/BodyIds field in
definition of Part/Assembly). Positioning of bodies is defined by the transformation specified in
the Transform field.
𝑇𝐵𝑖 (𝑥)
𝑡𝑟𝑎𝑛𝑠𝑓𝑜𝑟𝑚𝑎𝑡𝑖𝑜𝑛 𝑟𝑒𝑓𝑒𝑟𝑒𝑛𝑐𝑒𝑑 𝑏𝑦 𝑇𝑟𝑎𝑛𝑠𝑓𝑜𝑟𝑚, 𝑇𝑟𝑎𝑛𝑠𝑓𝑜𝑟𝑚 𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑒𝑑 𝑖𝑛 𝑡ℎ𝑒 𝑖 − 𝑡ℎ 𝑏𝑜𝑑𝑦
={
𝑖𝑑𝑒𝑛𝑡𝑖𝑡𝑦 𝑡𝑟𝑎𝑛𝑠𝑓𝑜𝑟𝑚𝑎𝑡𝑖𝑜𝑛, 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒
To calculate the position and orientation of the 𝐵 geometry inside 𝑃𝐴 it is necessary to apply the
𝑇𝐵𝐵 transformation to the 𝐵 geometry.
To calculate the position and orientation of the 𝐵 entities in Global Model Space, it is necessary
to apply the 𝑇𝑃𝐴𝑚𝑜𝑑𝑒𝑙 transformations as described above.
𝑇𝐵𝑚𝑜𝑑𝑒𝑙𝑖 (𝑥) − 𝑡𝑟𝑎𝑛𝑠𝑓𝑜𝑟𝑚𝑎𝑡𝑖𝑜𝑛 𝑜𝑓 𝑎 3𝐷 𝑝𝑜𝑖𝑛𝑡 𝑑𝑒𝑓𝑖𝑛𝑒𝑑 𝑖𝑛 𝑡ℎ𝑒 𝑖𝑡ℎ 𝑏𝑜𝑑𝑦 𝐺𝑙𝑜𝑏𝑎𝑙 𝑀𝑜𝑑𝑒𝑙 𝑆𝑝𝑎𝑐𝑒
7.5.4.4.1 PrintedDrawing
PrintedDrawing defines information about a printed drawing of a product. This may be on paper,
mylar, or some other physical media.
Fields:
Example:
<PrintedDrawing id="1">
<Name>Widget Drawing</Name>
<Version>2</Version>
<Description>Widget Drawing rev02</Description>
<DrawingNumber>12345</DrawingNumber>
<Location>Engineering</Location>
</PrintedDrawing>
7.5.4.4.2 DigitalDrawing
The DigitalDrawing defines an electronic version of a drawing. It has only 2D drawing
information. Any geometric dimensioning and tolerancing information is drawn with annotation
symbols.
Fields:
Example:
<DigitalDrawing id="5">
<Name>Drawing</Name>
<File>
<Name>c:/models/drawing_133.catdrawing</Name>
<Format>
<DigitalModelFormatEnum>CATIA</DigitalModelFormatEnum>
</Format>
</File>
<Description>Sample drawing</Description>
</DigitalDrawing>
7.5.4.4.3 DigitalModel
The DigitalModel defines a digital data model that represents information about an assembly or
part.
Fields:
Example:
<DigitalModel id="6">
<Name>Model</Name>
<File>
<Name>c:/models/model_12.sat</Name>
<Format>
<DigitalModelFormatEnum>ACIS</DigitalModelFormatEnum>
</Format>
</File>
<Description>Sample drawing</Description>
<Units>
<LinearUnit>
<UnitName>mm</UnitName>
</LinearUnit>
</Units>
<GDT>MACHINEREAD</GDT>
<Topology>PRESENT</Topology>
<Entities>
<Entity id="101">
<EntityId>1903</EntityId>
<Name>Wheel body</Name>
</Entity>
<Entity id="102">
<EntityId>4324</EntityId>
<Name>Chassis body</Name>
</Entity>
</Entities>
</DigitalModel>
7.5.4.4.4 PhysicalModel
The PhysicalModel is an actual, hands-on, physical, model or prototype of a part that is used to
communicate features, datum reference frames, characteristics, or other information. Examples
of physical models include actual part instances, part instances made from other materials, and
3D printing and stereolithography models.
Fields:
Example:
<PhysicalModel id="7">
<Name>Wheel</Name>
<Version>2</Version>
<Location>Warehouse 2, position 24A/10</Location>
<ModelNumber>23876-2372-33</ModelNumber>
</PhysicalModel>
7.5.4.5 Layers
A layer is a “slice” of the model containing a set of model entities independent of the referencing
model hierarchy. The user can specify an arbitrary number of layers for one model. A model
entity can be included in a single layer or multiple layers.
Fields:
Example:
Fields:
Example:
7.5.4.7 Notes
Note describes an annotation note, which may be visualized in the graphical window as a 3D
annotation or as a flat-to-screen note.
Fields:
Example:
Fields:
Example:
7.5.5 Transformations
In order to support all varieties of systems and formats, QIF allows connecting transformations
to all topological and 3D geometric elements. However, it is recommended to limit the use of
transformations to high-level objects such as sub-assemblies, parts and bodies. That will help
eliminate any potential interoperability issues.
𝑇(𝑝) − 𝑡𝑟𝑎𝑛𝑠𝑓𝑜𝑟𝑚𝑎𝑡𝑖𝑜𝑛
𝑇(𝑝): 𝑅3 → 𝑅3
𝑇(𝑝) = 𝑝𝑅 + 𝑂𝑟𝑖𝑔𝑖𝑛
Fields:
Example:
<Transform id="348">
<Rotation>
<XDirection>0.9405 -0.3396 0.0</XDirection>
<YDirection>0.3318 0.9191 -0.2123</YDirection>
<ZDirection>0.0721 0.1996 0.9772</ZDirection>
</Rotation>
<Origin>0.0798 -0.2104 -0.0984</Origin>
</Transform>
7.5.6.1 Point
PointAuxiliary describes an auxiliary point, a point that does not directly participate in forming a
body, but in a definition of supplemental model entities, e.g. the center of a sphere, as seen in
Figure 172.
Fields:
Example:
<PointAuxiliary id="112">
<XYZ>1.32 9.23 4.22</XYZ>
</PointAuxiliary>
7.5.6.2 Line
LineAuxiliary describes an auxiliary line, a line that does not directly participate in forming a
body, but in a definition of supplemental model entities, e.g. the axis of a cylinder, as seen in
Figure 173.
Fields:
Example:
<LineAuxiliary id="21">
<StartPoint>1.32 9.23 4.22</StartPoint>
<EndPoint>3.45 0.33 5.40</EndPoint>
</LineAuxiliary>
Fields:
Example:
<PlaneReference id="23">
<Plane>
<Point>10.0 12.0 23.1</Point>
<Normal>1.0 0.0 0.0</Normal>
</Plane>
</PlaneReference>
(𝑋𝐷𝑖𝑟𝑒𝑐𝑡𝑖𝑜𝑛 ∙ 𝑌𝐷𝑖𝑟𝑒𝑐𝑡𝑖𝑜𝑛) = 0
(𝑋𝐷𝑖𝑟𝑒𝑐𝑡𝑖𝑜𝑛 ∙ 𝑍𝐷𝑖𝑟𝑒𝑐𝑡𝑖𝑜𝑛) = 0
(𝑌𝐷𝑖𝑟𝑒𝑐𝑡𝑖𝑜𝑛 ∙ 𝑍𝐷𝑖𝑟𝑒𝑐𝑡𝑖𝑜𝑛) = 0
Fields:
Example:
The names from enumeration LineStyleEnumType define sequences of dashes and dots
forming a line pattern.
DOT < SHORT_DASH < DASH < MEDIUM_DASH < MEDIUM_LONG_DASH < LONG_DASH
Fields:
7.5.7.2 Fonts
All fonts used for visualization of 3D annotations are collected in the Fonts, an element of the
VisualizationSet.
Font fields:
Example:
{CYLINDRICITY} ³ Cylindricity
{PROFILE_LINE} ¹ Profile of a Line
{PROFILE_SURFACE} º Profile of a Surface
{ANGULARITY} ² Angularity
{PERPENDICULARITY} ¼ Perpendicularity
{PARALLELISM} · Parallelism
{POSITION} ¿ Position
{CONCENTRICITY} µ Concentricity
{SYMMETRY} » Symmetry
{RUNOUT_CIRCULAR} ½ Circular Runout
{RUNOUT_TOTAL} ¾ Total Runout
{DIAMETER} Ø Diameter
{DIAMETER_SPHERICAL} Û Spherical Diameter
{RADIUS} Ù Radius
{RADIUS_SPHERICAL} Ú Spherical Radius
{RADIUS_CONTROLLED} Ü Controlled Radius
{BETWEEN} ¡ Between
{CONICAL_TAPER} Í Conical Taper
{SLOPE} Ï Slope
{COUNTERBORE} Ö Counterbore
{SPOTFACE} Â Spotface
{COUNTERSINK} Õ Countersink
{DEPTH} É Depth
{SQUARE} Ô Square
{PLUS_MINUS} ± Plus Minus
{DEGREE} ° Degree
{ST} Æ Statistical Tolerance
{CF} Ç Continuous Feature
{M} Ì At Maximum Material Condition
{L} Ë At Least Material Condition
{P} Î Projected Tolerance Zone
Example:
<Text>
<Data>0.75</Data>
<XY>1.64658 0</XY>
</Text>
<Text>
<Data>A</Data>
<XY>3.80537 0</XY>
</Text>
<Text>
<Data>B</Data>
<XY>4.79375 0</XY>
</Text>
<Text>
<Data>C</Data>
<XY>5.85390 0</XY>
</Text>
</Texts>
Example:
<AnnotationView id="3404">
<Normal>0 0 1</Normal>
<Direction>1 0 0</Direction>
</AnnotationView>
Fields:
Example:
<PMIDisplay>
<Plane>
<AnnotationViewId>
<Id>3404</Id>
<AnnotationViewId>
<Origin>282.215308328645 -154.21715304523
3.53553390593274</Origin>
</Plane>
<Texts lineHeight="4.5" n="3" fontIndex="1">
<Text>
<Data>{PERPENDICULARITY}</Data>
<XY>0 0</XY>
</Text>
<Text>
<Data>1.5</Data>
<XY>1.64658203125 0</XY>
</Text>
<Text>
<Data>A</Data>
<XY>3.37275390625 0</XY>
</Text>
</Texts>
<LeaderExtend>
<StartPoint>-94.734069824219 -102.512253206787</StartPoint>
<EndPoint>-10.8 2.7</EndPoint>
<HeadForm>DOT_FILLED</HeadForm>
<HeadHeight>3.6</HeadHeight>
<PointExtension>-1.8 2.7</PointExtension>
</LeaderExtend>
<Frames n="3">
<FrameRectangular>
<XY>-0.2 -0.2</XY>
<Width>1.64658203125</Width>
<Height>1</Height>
</FrameRectangular>
<FrameRectangular>
<XY>1.44658203125 -0.2</XY>
<Width>1.726171875</Width>
<Height>1</Height>
</FrameRectangular>
<FrameRectangular>
<XY>3.17275390625 -0.2</XY>
<Width>0.98837890625</Width>
<Height>1</Height>
</FrameRectangular>
</Frames>
<Reference>
<Id>2320</Id>
</Reference>
</PMIDisplay>
7.5.7.5.1 Leader
Leader describes a leader of a 3D annotation, as seen in Figure 179.
Fields:
Example:
<Leader>
<StartPoint>2.647 -36.261</StartPoint>
<EndPoint>2.647 -1.800</EndPoint>
<HeadForm>TRIANGLE_FILLED</HeadForm>
<HeadHeight>3.600</HeadHeight>
</Leader>
NONE
ARROW_OPEN
ARROW_UNFILLED
ARROW_BLANKED
ARROW_FILLED
TRIANGLE_BLANKED
TRIANGLE _FILLED
DOT_BLANKED
DOT_FILLED
BOX_BLANKED
BOX_FILLED
DIMENSION_ORIGIN
SYMBOL_SLASH
SYMBOL_INTEGRAL
SYMBOL_CROSS
Fields:
Example:
<LeaderDoubleHead>
<StartPoint>-73.225 2.066</StartPoint>
<EndPoint>0 2.066</EndPoint>
<HeadForm>ARROW_FILLED</HeadForm>
<HeadHeight>4.5</HeadHeight>
<HeadForm2>ARROW_FILLED</HeadForm2>
<PointConnection>-38.225 2.066</PointConnection>
</LeaderDoubleHead>
Fields:
Example:
<LeaderExtend>
<StartPoint>-94.73 -102.51</StartPoint>
<EndPoint>-10.80 2.70</EndPoint>
<HeadForm>DOT_FILLED</HeadForm>
<HeadHeight>3.6</HeadHeight>
<PointExtension>-1.80 2.70</PointExtension>
<Modifier>ALL_AROUND</Modifier>
</LeaderExtend>
LeaderDoubleHeadExtend describes a double head extended leader, which has a break point
and consists of two segments, as seen in Figure 182.
Fields:
Example:
<LeaderDoubleHeadExtend>
<StartPoint>-73.225 2.066</StartPoint>
<EndPoint>0 2.066</EndPoint>
<HeadForm>ARROW_FILLED</HeadForm>
<HeadHeight>4.5</HeadHeight>
<HeadForm2>ARROW_FILLED</HeadForm2>
<PointConnection>-38.225 2.066</PointConnection>
<PointExtension>15.000 10.000</PointExtension>
</LeaderDoubleHeadExtend>
Fields:
Example:
<LeaderCircular>
<StartPoint>0.0 0.0</StartPoint>
<EndPoint>10.0 10.0</EndPoint>
<HeadForm>ARROW_FILLED</HeadForm>
<HeadHeight>1.0</HeadHeight>
<Center>10.0 0.0</Center>
</LeaderCircular>
Fields:
Example:
<LeaderDoubleHeadCircular>
<StartPoint>0.0 0.0</StartPoint>
<EndPoint>10.0 10.0</EndPoint>
<HeadForm>ARROW_FILLED</HeadForm>
<HeadHeight>1.0</HeadHeight>
<HeadForm2>ARROW_FILLED</HeadForm2>
<PointConnection>2.93 7.07</PointConnection>
<Center>10.0 0.0</Center>
</LeaderDoubleHeadCircular>
Fields:
Example:
<WitnessLines width="1">
<Segment1>
<StartPoint>-73.225 87.343</StartPoint>
<EndPoint>-73.225 -0.358</EndPoint>
</Segment1>
<ZextensionPoint1>-73.225 0 22.344</ZextensionPoint1>
<Segment2>
<StartPoint>-38.225 87.343</StartPoint>
<EndPoint>-38.225 -0.358</EndPoint>
</Segment2>
</WitnessLines>
Fields:
Example:
<WitnessLines width="1">
<BeginPoint>0.0 0.0</BeginPoint>
<EndPoint>10.0 10.0</EndPoint>
<CircleCenter>10.0 0.0</CircleCenter>
<CircleRadius>2.5</CircleRadius>
</WitnessLines>
Fields:
Example:
<FrameRectangular>
<XY>-0.2 -0.2</XY>
<Width>1.6</Width>
<Height>1.0</Height>
</FrameRectangular>
FrameCircularType describes a circular frame, which is normally used for visualization of datum
targets, as seen in Figure 188.
Fields:
Example:
<FrameCircular>
<XY>-0.2 -0.2</XY>
<Radius>7.3</Radius>
</FrameCircular>
FrameFlag describes a flag frame, which is normally used for visualization of flag notes, as seen
in Figure 189.
Fields:
Example:
<FrameFlag right="1">
<XY>-0.2 -0.2</XY>
<Width>19.2</Width>
<Height>4.1</Height>
</FrameFlag>
Fields:
Example:
<FrameTriangle>
<Point>0.294677734375 1.33232421874998</Point>
<Point>1.03935546875 -0.199999999999977</Point>
<Point>-0.449999999999998 -0.199999999999977</Point>
</FrameTriangle>
Fields:
Example:
<FramePentagonal>
<Point>0.5 0</Point>
<Point>1.5 0</Point>
<Point>2 1</Point>
<Point>1 2</Point>
<Point>0 1</Point>
</FramePentagonal>
Fields:
Example
<FrameHexagonal>
<Point>0.5 0</Point>
<Point>1.0 0</Point>
<Point>1.5 0.75</Point>
<Point>1.0 1.5</Point>
<Point>0.5 1.5</Point>
<Point>0 0.75</Point>
</FrameHexagonal>
Fields:
Example:
<FrameOctagonal>
<Point>0.5 0</Point>
<Point>1.5 0</Point>
<Point>2 0.5</Point>
<Point>2 1.5</Point>
<Point>1.5 2</Point>
<Point>0.5 2</Point>
<Point>0 1.5</Point>
<Point>0 0.5</Point>
</FrameOctagonal>
Fields:
Example:
<FrameWeldSymbol>
<ReferenceLineBeginPoint>1.0 1.0</ReferenceLineBeginPoint>
<ReferenceLineEndPoint>4.0 1.0</ReferenceLineEndPoint>
<Tail>
<UpperPoint>4.5 1.5</UpperPoint>
<LowerPoint>4.5 0.5</LowerPoint>
</Tail>
<MainSymbol>
<Origin>2.0 1</Origin>
<Symbol>WELD_FILLET_OTHER_SIDE</Symbol>
</MainSymbol>
<OtherSideContourSymbol>
<Origin>2.0 1.75</Origin>
<Symbol>WELD_CONTOUR_FLAT</Symbol>
</OtherSideContourSymbol>
</FrameWeldSymbol>
Example:
<FrameIrregularForm>
<Points n="4">
10 1
10.5 0
11 2
14 2
</Points>
</FrameIrregularForm>
Fields:
Areas/Area/Triangulation/VerticesBinary ArrayBinaryType
The array of indices of the triangle
vertices. The number of the array
elements corresponds to the
number of triangles in the mesh.
Each element of this array is a
Areas/Area/Triangulation/Triangles ArrayI3Type
triplet of integer numbers: index
or or
of the first vertex, index of the
Areas/Area/Triangulation/TrianglesBinary ArrayBinaryType
second vertex and index of the
third vertex. All three vertex
indices of a triangle must be
different and shall lie in the range
[0, ..., number of vertices - 1].
Example:
<Graphics>
<Polylines n="1">
<Polyline>
<Points n="2">
25 0
25 10
</Points>
</Polyline>
</Polylines>
<Areas n="2">
<Area>
<Loops n="2">
<Loop>
<Points n="5">
30 0
40 0
40 10
30 10
30 0
</Points>
</Loop>
<Loop>
<Points n="5">
31 1
31 9
39 9
39 1
31 1
</Points>
</Loop>
</Loops>
</Area>
<Area>
<Triangulation>
<Vertices n="4">
10 0
20 0
20 10
10 10
</Vertices>
<Triangles n="2">
0 1 2
0 2 3
</Triangles>
</Triangulation>
</Area>
</Areas>
</Graphics>
Fields:
Example:
</CameraIds>
</SavedView>
Fields:
SimplifiedRepresentation
Groups/SimplifiedReprese An array of identifiers of model
ArrayReferenceFullType
ntationGroup/Component components.
Ids
SimplifiedRepresentation
The array of identifiers of model
Groups/SimplifiedReprese ArrayReferenceFullType
bodies.
ntationGroup/BodyIds
Example:
<SimplifiedRepresentationSet n="1">
<SimplifiedRepresentation id="10000">
<Form>MASTER</Form>
<SimplifiedRepresentationGroups n="2">
<SimplifiedRepresentationGroup>
<Form>BOUNDING_BOX</Form>
<BodyIds n="2">
<Id>114</Id>
<Id>127</Id>
</BodyIds>
</SimplifiedRepresentationGroup>
<SimplifiedRepresentationGroup>
<Form>HIDE</Form>
<ComponentIds n="1">
<Id>1242</Id>
</ComponentIds>
<BodyIds n="1">
<Id>128</Id>
</BodyIds>
</SimplifiedRepresentationGroup>
</SimplifiedRepresentationGroups>
</SimplifiedRepresentation>
</SimplifiedRepresentationSet>
Fields:
MoveGroups/MoveGrou
ArrayReferenceFullType The array of component identifiers.
p/ComponentIds
MoveGroups/MoveGrou
ArrayReferenceFullType The array of body identifiers.
p/BodyIds
Example:
<ExplodedViewSet n="1">
<ExplodedView id="10001">
<MoveGroups n="2">
<MoveGroup>
<Translate>
<Direction>1 0 0</Direction>
<Value>20</Value>
</Translate>
<ComponentIds n="2">
<Id>123</Id>
<Id>124</Id>
</ComponentIds>
</MoveGroup>
<MoveGroup>
<Rotate>
<Axis>0 1 0</Axis>
<Angle>45</Angle>
</Rotate>
<ComponentIds n="1">
<Id>125</Id>
</ComponentIds>
</MoveGroup>
</MoveGroups>
</ExplodedView>
</ExplodedViewSet>
Fields:
Example:
<DisplayStyleSet n="1">
<DisplayStyle id="10002">
<Mode>
<Form>SHADING_WITH_EDGES</Form>
</Mode>
<DisplayStyleGroups n="2">
<DisplayStyleGroup>
<Mode>
<Form>WIREFRAME</Form>
<Color>255 0 0</Color>
</Mode>
<BodyIds n="2">
<Id>128</Id>
<Id>129</Id>
</BodyIds>
</DisplayStyleGroup>
<DisplayStyleGroup>
<Mode>
<Form>SHADING_WITH_EDGES</Form>
<Transparency>0.5</Transparency>
</Mode>
<ComponentIds n="1">
<Id>12834</Id>
</ComponentIds>
</DisplayStyleGroup>
</DisplayStyleGroups>
</DisplayStyle>
</DisplayStyleSet>
Figure 205 – The result of (Section Plane 1 AND Section Plane 2) OR Section Plane 3
Fields:
Example:
<ZoneSection id="23244">
<SectionPlanes n="1">
<SectionPlane index="0">
<Plane>
<Point>0 0 0</Point>
<Normal>0 0 1</Normal>
<Direction>1 0 0</Direction>
</Plane>
<SectionGroups n="2">
<SectionGroup>
<BodyId>128</BodyId>
<Areas n="1">
<Area>
<HatchStyleId>1</HatchStyleId>
<Loops n="2">
<Loop>
<Edges n="4">
<Edge turned="1">
<Id>3467</Id>
</Edge>
<Edge turned="1">
<Id>3468</Id>
</Edge>
<Edge>
<Id>2783</Id>
</Edge>
<Edge>
<Id>2344</Id>
</Edge>
</Edges>
</Loop>
<Loop>
<Edges n="1">
<Edge>
<Id>2923</Id>
</Edge>
</Edges>
</Loop>
</Loops>
</Area>
</Areas>
</SectionGroup>
<SectionGroup>
<BodyId>129</BodyId>
<Paths n="1">
<Path>
<Edges n="3">
<Edge>
<Id>3460</Id>
</Edge>
<Edge turned="1">
<Id>3568</Id>
</Edge>
<Edge>
<Id>1283</Id>
</Edge>
</Edges>
</Path>
</Paths>
</SectionGroup>
</SectionGroups>
</SectionPlane>
</SectionPlanes>
</ZoneSection>
Fields:
Example:
<HatchStyleSet n="1">
<HatchStyle id="1" label="hatch style 1">
<Form>PATTERN</Form>
<Color>0 0 0</Color>
<Patterns n="3">
<Pattern>
<LineStyle>SOLID</LineStyle>
<FirstLineOrigin>0 0</FirstLineOrigin>
<SecondLineOrigin>4 0</SecondLineOrigin>
<Angle>45</Angle>
</Pattern>
<Pattern>
<LineStyle>DASH</LineStyle>
<FirstLineOrigin>0 0</FirstLineOrigin>
<SecondLineOrigin>4 0</SecondLineOrigin>
<Angle>135</Angle>
</Pattern>
<Pattern>
<LineStyle>DOT</LineStyle>
<FirstLineOrigin>2 0</FirstLineOrigin>
<SecondLineOrigin>6 0</SecondLineOrigin>
<Angle>45</Angle>
</Pattern>
</Patterns>
</HatchStyle>
</HatchStyleSet>
7.5.7.6.6 Camera
Camera describes a camera – projection of the 3D model space to 2D window, as seen in
Figure 210 and Figure 211.
Fields:
Example:
<Camera id="348">
<ViewPlaneOrigin>0.467 0.587 0.020</ViewPlaneOrigin>
<Orientation>
<Value>0.285 0.267 -0.185 -0.901</Value>
</Orientation>
<Ratio>1.465</Ratio>
<Near>-2.449</Near>
<Far>2.449</Far>
<Height>1.079</Height>
</Camera>
Edge/Validation fields:
Example:
<Edge id="403">
<Validation>
<Length>100</Length>
<Centroid>50 0 0</Centroid>
<Box>
<PointMin>0 0 0</PointMin>
<PointMax>100 0 0</PointMax>
</Box>
<Points>
<Points n="3">
0 0 0
50 0 0
100 0 0
</Points>
<Directions n="3">
1 0 0
1 0 0
1 0 0
</Directions>
</Points>
</Validation>
<Curve>
<Id>390</Id>
</Curve>
<VertexBeg>
<Id>396</Id>
</VertexBeg>
<VertexEnd>
<Id>400</Id>
</VertexEnd>
</Edge>
Example:
<Face id="174">
<Validation>
<Area>10000</Area>
<Centroid>50 50 0</Centroid>
<Box>
<PointMin>0 0 0</PointMin>
<PointMax>100 100 0</PointMax>
</Box>
<Points>
<Points n="5">
0 0 0
100 0 0
100 100 0
0 100 0
50 50 0
</Points>
<Directions n="5">
0 0 1
0 0 1
0 0 1
0 0 1
0 0 1
</Directions>
</Points>
</Validation>
<Surface>
<Id>102</Id>
</Surface>
<LoopIds n="1">
<Id>113</Id>
</LoopIds>
</Face>
Body/Validation fields:
Example:
<Body id="127">
<Validation>
<Area>60000.0</Area>
<Centroid>50 50 50</Centroid>
<Volume>1000000.0</Volume>
<Box>
<PointMin>0 0 0</PointMin>
Validation fields:
Example:
50 50 0
50 50 100
</Points>
<Directions n="2">
0 0 -1
0 0 1
</Directions>
</FacePoints>
<EdgePoints>
<Points n="2">
50 0 0
50 100 0
</Points>
<Directions n="2">
1 0 0
1 0 0
</Directions>
</EdgePoints>
<Instances n="2">
<Instance>
<AsmPathId>1123</AsmPathId>
<Centroid>150 50 50</Centroid>
<Box>
<PointMin>100 0 0</PointMin>
<PointMax>200 100 100</PointMax>
</Box>
</Instance>
<Instance>
<AsmPathId>1124</AsmPathId>
<Centroid>50 50 150</Centroid>
<Box>
<PointMin>0 0 100</PointMin>
<PointMax>100 100 200</PointMax>
</Box>
</Instance>
</Instances>
</Validation>
<BodyIds n="4">
<Id>1929</Id>
<Id>1921</Id>
<Id>1913</Id>
<Id>1899</Id>
</BodyIds>
</Part>
Figure 212 – High level view of QIF MBD highest level elements
Main:
Honeywell Federal Manufacturing & Technology
Lockheed Martin Missiles and Fire Systems
Mitutoyo America
National Institute of Standards and Technology
Origin International Inc.
QIF Solutions
Renishaw plc
Support:
Capvidia
Deere & Co.
DISCUS Software
Hexagon Metrology
Horst Engineering
IPI Solutions
ITI transenData
Metrosage LLC
PAS Technology
Rolls-Royce
Siemens
University of North Carolina at Charlotte
Validation Technologies
This clause was written by the QIF Plans Working Group and given final approval for ANSI
review by the DMSC’s Quality Measurement Standards (QMS) Committee.
This version of the QIF Plans information model contains significant additions to the previous
standard, which was published as ANSI/QIF Part 4 – 2015. These include:
Numerical-valued variables may be declared, set, and evaluated. The value of a variable
may be used in arithmetic expressions.
The “If” action group has been added. It includes zero to many ElseIfs and an ElseDo. It
behaves the way “If” behaves in some widely-used programming languages.
A “While” action group has been added. It behaves the way “while” behaves in some
widely-used programming languages.
Expressions were defined for use in rules in version 2.1, but they were not used in plans.
In QIF version 3.0, expressions are used in plans in the tests made in “If” and “While”.
The ability to reference a measurement taken while executing a plan has been added.
This was done by defining the VirtualMeasurementType with an id and putting an
optional VirtualMeasurement element in the CharacteristicItemBaseType and the
FeatureItemBaseType. Measured values can be obtained during plan execution by
referencing the id in the VirtualMeasurement element.
String (actually xs:token) expressions were added with very limited use. A test can be
made whether two strings are identical.
A “Halt” action was added so that execution of a plan can be stopped before completion.
The LaserRadar measure feature method was added.
All additions were designed to be translatable into the DMIS programming language. Plans are
not intended to be directly executable. As used above, “plan execution” really means execution
of a program created from a plan.
8.2 Introduction
In brief, QIF Plans is an information model representing the unique QIF Application of
measurement plans. QIF Plans defines the information necessary to support multiple levels of
measurement planning, including:
a simple Bill of Characteristics (BoC),
measurement scope,
inspection planning,
CMM measurement planning,
quality routing plans,
first article inspection,
manufacturing verification,
on-machine gaging,
final product acceptance.
Quality measurement plans are required by all quality departments to efficiently and effectively
validate conformance of manufactured products according to design specifications. QIF
provides the only standard format for defining measurement plans at any level above
measurement programs. Without QIF, small, medium and enterprise manufacturers suffer from
the need to transpose measurement information from one system to another. Older
methodologies waste valuable time, allow for human mistakes, and cost money. QIF provides a
common, standardized information definition for measurement planning to carry quality
requirements information from one system to another.
The objective of the QIF Plans information model is to communicate all the necessary feature
definition, product characteristics and related quality information required to measure and verify
product requirements. Although the scope of QIF Plans places an emphasis on feature-based
dimensional metrology and the dimensional measurement programs to be executed on
dimensional measurement equipment, much attention was devoted toward addressing
significant elements that also support attribute and other types of validations.
A QIF Plans file is an XML instance file conforming to the QIF Document schema and having a
Plan element in the QIFDocument root element. The Plan element itself does not contain all
information necessary and sufficient to perform inspection or generate a CMM program for
Directly or by reference, a QIF Plan will consist of many categories of information. It will contain
a list of features and an associated bill of characteristics (BoC) such as tolerances associated
with features. The plan can reference additional product information such as datums, datum
reference frames, and measurement resources, as well as traceability information. At a
minimum, a QIF Plan will define one or more actions that specify “what” to measure or validate.
These actions can be further organized in a hierarchical group of actions. Also within QIF Plans,
each action may reference one or many action methods on “how” to perform a measure or
validation. In addition, an action may specify measurement resources (measurement devices,
fixtures, and sensors).
8.3 Scope
The XML schema definition language also allows for the definition of rules and checks that
enforce constraints on the computer-to-computer writing and reading of instances of QIF Plans.
The file that defines the top levels of the QIF Plans information model and contains some of the
rules is QIFPlan.xsd. The bulk of the model is defined in the files of the QIF Library, many of
which are used by the QIFPlan.xsd file. All QIF XML schema files are normative to the QIF
standard and can be downloaded at www.qifstandards.org.
Between any two connected work activities there exists an interface in which digital information
must be exchanged.
Assuming that the activity of “Define Product” has already been performed, the planning work
activity of “Determine Measurement Requirements” receives product definition with Product and
Manufacturing Information (PMI) as input which includes product characteristics and their
criticalities. 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 characteristics (BOC). A product characteristic is typically a tolerance or
specification applied to a feature or product that needs verification. This BOC may constitute a
high level quality plan ̶ a list 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 requirements by defining an inspection plan on “how” to inspect or verify
the items in the bill of characteristics. The “hows” may reference one or many measurement
resources. The generation of the "hows" may be guided by a measurement rule set. This
inspection plan will then drive the activity of “Execute Measurement Process” via various
measurement resources, which produces measurement results.
The QIF Plan conveys information output of the “Determine Measurement Requirements”
activity by describing a measurement scope that lists all of the product characteristics and their
features and the actions required to measure/validate them. Furthermore the QIF Plans conveys
the output of “Define Measurement Process” by describing the methods on how to
measure/validate the actions contained in the measurement scope.
In scope:
Feature-Based
Dimensional Metrology
Non-Dimensional Metrology
Product (that is, Part and/or Assembly)
Product Characteristics
o Dimensional Tolerances
o Geometric Tolerances
o User Defined Characteristic (attribute or variable)
o Surface Textures
o Thread Specifications
o Flagged Notes
o General Notes
Characteristics Designator (that is, a human-readable product unique identifier (for
example <PC007>) similar to the known practice of “ballooning”)
Characteristics Criticality Class Levels (for example MINOR, MAJOR, CRITICAL)
Characteristic QPId (that is, a persistent digital-readable universally unique identifier
similar to the UUID)
Datum Features, Datums, Datum Targets, and Datum Reference Frames
Traceability Information
Work Instructions (reference to a document, image, text, or video)
Determine Measurement Scope (that is a list of actions of “what” to measure)
Define Measurement Plan (a hierarchical list of actions of “what” to measure with
associated methods on “how” to measure)
Associations to Measurement Resources
Consideration of Measurement Definitions that include accuracy statements and
calibration statements
Utilization of Measurement Rules
Product Model-Based Definition and Model Entity Relationships
Planning from a Model Based Product Definition Environment
Planning from a Document/Drawing based Product Definition Environment
Out of scope:
Reaction planning defining corrective action
Sampling plans
Low level execution plans or “DME Programming”
Single Action: definition of a set of features and characteristics, and definition of one
action stating Measure and Evaluate ALL defined Characteristics
Specified Action Plan: definition of a set of features and characteristics, and definition of
one action to measure and evaluate specified characteristics
Set of Actions Plan: definition of a set of features and characteristics, plus definition of
an Action Group that contains Actions to measure and/or evaluate a specified
characteristic or measure a feature.
Figure 213 – Measurement Scope (e.g., Bill of Characteristics) with QIF Plans
8.4 Data types and elements of the QIF Plans information model
The QIF Plans information model employs the following high level data types and elements.
Data elements are shown in Figure 216.
8.4.1 Plan
A QIF instance file that is a Plan has a unique persistent identifier. The file may make an
association with a product definition (that is the model-centric, model-based definition, or
drawing based), may have traceability information that describes the circumstances of the plan,
has one PlanElement, and may reference one or many rules to be used or that were used.
8.4.2 PlanElement
A PlanElement can be an action or an action group.
8.4.3 Action
An action defines “what” needs to be measured/validated. An action may:
- include instructions defining what to do,
- specify measurement resources,
- have a preferred action method,
- have a list of alternative action methods,
- have preferred measurement resources,
- have a list of work instructions.
8.4.3.1 MeasureEvaluateAllActionType
The MeasureEvaluateAllActionType defines an action that means: measure whatever is
necessary in order to find CharacteristicMeasurements for all CharacteristicItems, and find
those measurements. For any FeatureItems that are measured, also populate the
corresponding FeatureMeasurements with values.
8.4.3.2 MeasureEvaluateSpecifiedActionType
The MeasureEvaluateSpecifiedActionType defines an action that means: measure whatever
is necessary in order to find CharacteristicMeasurements for the CharacteristicItems whose
QIF ids are specified, and find those measurements. For any FeatureItems that are measured,
also populate the corresponding FeatureMeasurements with values.
8.4.3.3 EvaluateSpecifiedCharacteristicsActionType
The EvaluateSpecifiedCharacteristicsActionType defines an action that means: find
CharacteristicMeasurements for the CharacteristicItems whose QIF ids are specified. Do not
measure anything while performing this action. All features that need to be measured in order to
evaluate the CharacteristicMeasurements must already be measured.
8.4.3.4 MeasureSpecifiedFeaturesActionType
The MeasureSpecifiedFeaturesActionType defines an action that means: measure the
FeatureItems whose QIF ids are specified, and populate the corresponding
FeatureMeasurements with values.
8.4.3.5 MeasureSpecifiedMeasurandsActionType
The MeasureSpecifiedMeasurandsActionType defines an action that means: measure the
Measurands whose QIF ids are given, and populate the corresponding
FeatureMeasurements with values.
8.4.3.6 HaltActionType
The HaltActionType defines an action that means stop executing the plan. A plan is not
required to include an instance of HaltActionType.
8.4.3.7 VariableSetType
The VariableSetType represents the setting of a variable.
8.4.4.1 OrderedActionGroup
The OrderedActionGroup defines an action group for which all of the steps it contains must be
executed in order of increasing sequence number. The SequenceNumbers of the Steps in an
instance of OrderedActionGroup must be present, must be assigned 1, 2, 3, ..., and must be
executed in that order.
8.4.4.2 UnorderedActionGroup
The UnorderedActionGroup defines an action group for which all of the Steps it contains
should be executed, however the Steps may be executed in any order and no particular order of
execution is implied.
8.4.4.3 PartiallyOrderedActionGroup
The PartiallyOrderedActionGroup defines an action group for which all of the Steps it
contains should be executed, but each Step may be executed only after all of the
Predecessors of that Step have been executed. If more than one Step meets that condition,
any order of executing those Steps will work, and no particular order is required by the plan.
The SequenceNumbers of the Steps in the StepsWithPredecessors in an instance of
PartiallyOrderedActionGroup must be assigned 1, 2, 3, ... but usually will not be executed in
that order.
8.4.4.4 OneOfActionGroup
The OneOfActionGroup defines an action group for which exactly one of the Steps it contains
must be executed. Any Step in the list will do. The SequenceNumbers of the Steps in an
instance of OneOfActionGroup are not required to be distinct. The SequenceNumbers
indicate a preference for which Step is executed, with 1 the most preferred, 2 the second most
preferred, and so on. Steps with the same SequenceNumber are equally preferred.
8.4.4.5 IfActionGroup
The IfActionGroup is a conditional action group that represents an If-ElseIf-Else construct with
zero to many Else-Ifs and an optional Else for the purpose of conditionally executing one or
more specific actions. Details of the IfActionGroup are given in subclause 8.9.4.2.
8.4.4.6 WhileActionGroup
The WhileActionGroup is a conditional action group that represents a while loop that controls a
flow of one or more actions to be executed repeatedly based on a given Boolean expression.
Details of the WhileActionGroup are given in subclause 8.9.4.3.
8.4.6.1 RoutingPlan
A RoutingPlan is a group of actions that may route the product from one measurement work
cell to another. It's enumeration value is ROUTING_PLAN.
8.4.6.2 OperationSequenceGroup
An OperationSequenceGroup is a group of actions that are performed at one work cell,
typically referencing a measurement device resource. It's enumeration value is
OPERATION_SEQUENCE.
8.4.6.3 SetupUsageGroup
A SetupUsageGroup is a group of actions that are performed at one part setup, typically
referencing a fixture resource. It's enumeration value is SETUP_USAGE_GROUP.
8.4.6.4 SensorUsageGroup
A SensorUsageGroup is a group of actions that are performed at one sensor tool change,
typically referencing a sensor resource. It's enumeration value is SENSOR_USAGE_GROUP.
8.4.6.5 CarriageUsageGroup
A CarriageUsageGroup is a group of actions that are performed at one carriage, typically
referencing a carriage of a measurement device resource. It's enumeration value is
CARRIAGE_USAGE_GROUP.
8.4.6.6 PartCoordinateSystemUsageGroup
A PartCoordinateSystemUsageGroup is a group of actions that are performed at one active
part coordinate system which usually corresponds with a datum reference frame. It's
enumeration value is PCS_USAGE_GROUP, where "PCS_" means "part coordinate system".
8.4.6.7 EvaluateCharacteristicActions
An EvaluateCharacteristicActions is a group of actions that are performed to evaluate a
product characteristic. It's enumeration value is EVALUATE_CHAR_ACTIONS, where "CHAR_"
means "characteristic".
8.4.6.8 EstablishDatumActions
An EstablishDatumActions is a group of actions that are performed to establish a datum with
a datum reference frame. It's enumeration value is ESTABLISH_DATUM_ACTIONS.
8.4.7 Measurand
A measurand is the object, quantity, property or condition to be measured for a specific
purpose. It can be used to evaluate a product characteristic item of a feature, can be used to
establish a datum instance within a datum reference frame, and can be used to determine a
particle/grain size within granular materials.
The following items may normally be transcribed directly from a QIF Plan’s QIF Document file to
a corresponding QIF Results file:
file units
datum feature definitions
datum definitions
datum target definitions
datum reference frames
measurement resources
product’s part and assembly definitions
feature definitions, nominals, and items
characteristic definitions, nominals, and items
8.8 Item tracking and persistence between QIF Plans and QIF Results
An application can associate multiple results items from Results files with plan items from a
Plans file by using QIF persistent identifiers (QPId)s, as described in Clause 5.
The Plan element is of type PlanType and is the highest level element of the QIF Plans model.
An XML instance file written in conformance with the QIFPlan.xsd schema file may contain one
Plan element. A PlanType’s top level components are described in Figure 215. They include:
Version – this optional element gives version information about the measurement plan.
The VersionType includes the VersionQPId element which uniquely identifies this
measurement plan.
RulesUsedQPId – this optional element gives the QPId of the rules that were used in
creating the plan. The rules may be in the same QIFDocument as the plan, or in a
separate QIFDocument, or both (in which case the two sets of rules must be identical).
RulesToUseQPId – this optional element gives the QPId of the rules to be used in making
a more detailed plan from the plan or in generating a program from the plan (a DMIS
program, for example). The rules may be in the same QIFDocument as the plan, or in a
separate QIFDocument, or both (in which case the two sets of rules must be identical).
ActionMethods - this optional element captures any action methods necessary for
executing the Plan.
Measurands - this optional element captures any measurands used in the Plan.
LocalVariables – this optional element captures any local variables used in the Plan.
PlanRoot - this element gives information about the activities to be carried out in executing
the measurement plan and how execution of the measurement plan is to be controlled.
Structurally, the PlanRoot is at the top of a plan tree of PlanElements. All PlanElement
instances occur within this plan tree.
The global PlanRoot element, introduced in Figure 215, is of ActionGroupBaseType that may
be replaced (as provided by substitution group declarations) by any of the following elements
representing action groups:
Figure 216 shows the major data elements introduced in the QIF Plan.xsd schema file with
simplified relations between QIF Plans elements as well as with elements from the QIF library.
Plan
o PlanElement
Action
ActionGroup
Measurand
Method
WorkInstruction
8.9.4.1 Expressions
The IfActionGroup and WhileActionGroup plan elements test Boolean expressions as a
conditional action group. The Boolean expressions include comparing arithmetic expressions as
well as Boolean constants true and false and the Boolean operations and, or, and not. The
arithmetic expressions include the usual arithmetic operations (plus, minus, etc.), constants, and
several types of arithmetic values extracted from features, characteristics, and other types of
object. They also include using the values of plan variables. Plan variables are described in
subclause 8.9.5.
The formal models of Boolean expressions and arithmetic expressions other than plan variables
are given in the Expressions.xsd and GenericExpressions.xsd schema files and are described
in Clause 6.
8.9.4.2 IfActionGroupType
The If element is a test to evaluate and the PlanElement to execute if the test evaluates to true.
Each optional ElseIf is a test to evaluate and the PlanElement to execute if the test evaluates
to true.
The optional ElseDo is a PlanElement to execute if none of the If or ElseIf tests evaluates to
true.
To execute an IfActionGroupType:
Evaluate the test in the If. If it evaluates to true, execute the PlanElement in the If and
return.
Otherwise, evaluate the test in the next ElseIf if there is one. If it evaluates to true,
execute the PlanElement in the ElseIf and return. Repeat until either return occurs or
there are no more ElseIfs.
Otherwise, if there is an ElseDo, execute the PlanElement in the ElseDo and return.
Otherwise, return.
8.9.4.3 WhileActionGroupType
The WhileActionGroup plan element (of WhileActionGroupType) represents a loop. It
consists of a BooleanExpression and a PlanElement.
To execute a WhileActionGroup:
evaluate the BooleanExpression. If the BooleanExpression evaluates to true, execute
the PlanElement.
Repeat evaluating and executing as long as the BooleanExpression evaluates to true.
The first time the BooleanExpression evaluates to false, return.
If the BooleanExpression evaluates to false the first time it is evaluated, the PlanElement is
never executed.
In order that a While will eventually stop looping, it is necessary that executing the
PlanElement will eventually change something, and that the change will eventually cause the
BooleanExpression to evaluate to false.
The value of a variable may be changed by using a VariableSet element (which is of type
VariableSetType).
The value of a variable may be used in an expression by using a VariableValue element (which
is of type VariableValueType).
This clause was written by the QIF Resources Working Group, and given final approval for ANSI
review by the DMSC’s Quality Measurement Standards (QMS) Committee.
Version 3.0 of QIFResources has minor changes from version 2.1. The most notable changes
are the addition of the LaserRadarType of instrument, the additional derived types
CaliperDialType and CaliperDigitalType from the CaliperType, and the additional derived types
MicrometerAnalogType and MicrometerDigitalType from the MicrometerType. These derived
types are added to support QIFRules for DME selection.
9.2 Introduction
The Quality Information Framework (QIF) consists of a suite of information models that fit into
one of two functional categories, QIF Library or QIF Applications. The QIF achieves system
wide interoperability by designating a set of information models as part of a QIF Library. The
QIF Library information models are common, reusable components. A QIF application area
information model represents a unique application area, one of QIF model based definition (i.e.,
QIF Product), measurement resources (i.e., QIF Resources), measurement plans (i.e., QIF
Plans), measurement rules (i.e., QIF Rules), measurement results (i.e., QIF Results), and
measurement statistics (i.e., QIF Statistics). Because the QIF library components are
referenced throughout the comprehensive QIF information model, it ensures interoperability and
extensibility between any data producer and consumer that implements the QIF formats within
their software.
necessary to make appropriate selections of measurement facilities for the inspection task at
hand.
The QIF Resources clause is intended to supply a uniformly detailed set of this information. In
addition to obviously required information, such as dimensional measuring equipment (DME)
nomenclature, the clause describes everything sufficient to support high-level decisions about
DME capabilities and applicability, including description, location, and characterization of the
DME capabilities. Examples of pertinent information are: achievable accuracy, measurement
speed, workpiece size and mass capacity, etc. Additionally, historical information, such as
calibration history and maintenance records, may be useful to downstream processes to
establish measurement traceability and validity. Finally, information about associated auxiliary
equipment (e.g. sensors, fixtures, etc.) may be required to determine fitness of the DME system
for a particular measurement task.
9.3 Scope
This clause specifies the description and documentation of dimensional measurement
resources, sufficient for use in generating a high level measurement plan for product
certification, acceptance, or any other common application of dimensional measurement data.
The information model consists of definitions for data types, elements, the logical relationships
between them, and the semantics of the quality information. The information model, defined
using the XML Schema definition language (XSDL), is scoped to be a digital data exchange
mechanism that can be easily incorporated in application software developed by commercial
solution vendors that implement manufacturing quality systems.
XSDL also supports the definition of rules and checks for validation of QIF instance files.
The QIFMeasurementResources.xsd schema file defines the top level information model for
resources. QIF Resources also draws from elements in the QIFLibrary. The types and
relationships of information contained in a QIF Resources instance file are governed by the
schema. The way in which data is formatted for QIF Resources instance files is prescribed by
the rules of XML and the rules for how instance files conform to schema files. All QIF XML
schema files are a normative part of the QIF standard and can be downloaded at
www.qifstandards.org.
This type contains Version information (identification and traceability information specific to QIF
Resources QIF instance file data) and Fixture information.
The next 2 elements, DetachableSensors and Tools, provide the mechanisms by which all
SensorType derived items will be ultimately be attached to a Measurement Device.
SensorType types are measurement resources which are mounted on
Tools are where one can place ToolBaseType derived items, all of which fall either into the
category ToolWithDetachableSensorsType or ToolWithIntegratedSensorType.
ToolWithDetachableSensors has an element where one can specify the detachable sensor(s)
that are mounted onto the tool. An instance of ToolWithIntegratedSensorType is a special
type of tool that has a SensorType-derived item physically integrated into it.
9.5.2 MeasurementResourceBaseType
This is the base class for many of the types in QIFMeasurementResources.xsd. All types which
represent measurement equipment of any type will be derived from this.
There is also an Attributes element which allows the user to specify various types of user
defined data within this type, while still validating to the schema. (It is important to note,
however, that use of these user-defined Attributes presents serious issues in terms of
interoperability). The Attributes may include a persistent ID, which can either be in the form of
a QIF-recommended QPId (ensuring uniqueness), or in the form of a non-standard ID string (the
uniqueness of which must be enforced by the implementer).
Below, in Figure 218, Figure 219, and Figure 220 is an inheritance diagram for the types derived
from MeasurementResourceBaseType.
considered a Measurement Device, since that is an instrument used by the CMM, and only
indirectly used by the end user.
Generally speaking, while this type is not declared as abstract, it is preferred that derived types
be used (see the remainder of this subclause).
CaliperType
MicrometerType
GageDeviceType
SineBarType
9.5.3.1.1 CaliperType
To describe a caliper, this type should be used. Aside from the inherited elements from its base
classes, all elements of this type are optional.
9.5.3.1.2 MicrometerType
To describe a micrometer, this type should be used. Aside from the inherited elements from its
base classes, all elements of this type are optional.
9.5.3.1.3 GageDeviceType
To describe a gage, this type should be used. Although this type provides no additional
elements beyond the elements of its base classes, it does convey the fact that a gage is being
described, as opposed to a generic “measurement device”.
9.5.3.1.4 SineBarType
To describe a sine bar, this type should be used. Aside from the inherited elements from its
base classes, all elements of this type are optional.
Although the UniversalDeviceType is not declared abstract, it is recommended that this type
be used only if none of its derived types adequately describe the intended device.
The Resolution element is optional and can be one of many different resolution types. See
subclause 9.5.7 for more information about the available resolution types.
The WorkingVolume element is optional and can be one of many different working volume
types. See subclause 9.5.8 for more information about the available working volume types.
The EffectiveWorkingVolume element is optional and can be one of many different effective
working volume types. See subclause 9.5.8 for more information about the available effective
working volume types.
9.5.3.2.1 CMMType
This type is addressed in subclause 9.5.4.
9.5.3.2.2 TheodoliteType
The TheodoliteType is derived from UniversalDeviceType and represents a theodolite. In
addition to the elements from its base classes, it provides a number of optional elements for
describing the theodolite.
9.5.3.2.3 UniversalLengthMeasuringType
The UniversalLengthMeasuringMachineType is derived from UniversalDeviceType and
represents a universal length measuring machine. In addition to the elements from its base
classes, it provides a number of optional elements for describing the universal length measuring
machine.
9.5.3.2.4 ComputedTomographyType
The ComputedTomographyType is derived from UniversalDeviceType and represents a
computed tomography measuring machine. In addition to the elements from its base classes, it
provides a number of optional elements for describing the computed tomography measuring
machine.
9.5.3.2.5 OpticalComparatorType
The OpticalComparatorType is derived from UniversalDeviceType and represents a profile
projector. In addition to the elements from its base classes, it provides a number of optional
elements for describing the profile projector.
9.5.3.2.6 MicroscopeType
The MicroscopeType is derived from UniversalDeviceType and represents a microscope. In
addition to the elements from its base classes, it provides a number of optional elements for
describing the microscope.
9.5.3.2.7 AutocollimatorType
The AutocollimatorType is derived from UniversalDeviceType and represents an
autocollimator. In addition to the elements from its base classes, it provides a number of
optional elements for describing the autocollimator.
9.5.3.2.8 LaserTrackerType
The LaserTrackerType is derived from UniversalDeviceType and represents a laser tracker.
In addition to the elements from its base classes, it provides a number of optional elements for
describing the laser tracker.
9.5.3.2.9 LaserRadarType
The LaserRadarType is derived from UniversalDeviceType and represents a laser radar. In
addition to the elements from its base classes, it provides a number of optional elements for
describing the laser radar.
Although CMMType is not abstract, it not recommended that it be used unless none of its
derived types describe the particular CMM in question.
For single carriage Cartesian CMMs, the CartesianCmmType should be used. The
MultipleCarriageCartesianCMMType is meant for more complex CMMs with multiple
carriages.
Cartesian CMM types make use of the MeasurementDeviceScaleType to describe the scales
of the CMM.
CartesianCMMFPSTest
CartesianCMMB89Test
CartesianCMMISO10360Test
CartesianCMMPointAccuracyTest
AACMMB89Test
AACMMISO10360Test
AACMMPointAccuracyTest
CartesianCMMSpeedsType
ParallelLinkCMMSpeedsType
The CMM geometries depicted in Figure 223 correspond to the following enumeration values
defined in the type CartesianCMMGeometryEnumType:
FIXED_BRIDGE
MOVING_BRIDGE
L_SHAPED_BRIDGE
COLUMN
FIXED_TABLE_CANTILEVER_ARM
MOVING_TABLE_CANTILEVER_ARM
FIXED_TABLE_HORIZONTAL_ARM
MOVING_TABLE_HORIZONTAL_ARM
MOVING_RAM_HORIZONTAL_ARM
GANTRY
If none of the values listed above correctly describe the CMM in question, then the
OtherCartesianCMMGeometry string value element can be used.
The first method is depicted in Figure 224. A ToolBaseType, specifically, a type derived from
ToolWithDetachableSensorsType, is mounted onto a UniversalDeviceType-derived
resource. Then, a SensorType-derived resource is mounted onto the Tool. This method should
be used when the tool is a separate physical entity from the sensor device.
In cases when the sensor is physically integrated with the tool, then the second method should
be used. This can be used, as depicted in Figure 225, below.
For this situation, QIF Resources provides a special set of tools with integrated resources.
These are the types that are derived from the abstract type ToolWithIntegratedSensorType.
The sensor elements which are found on the ToolWithIntegratedSensorType-derived types
are the SensorType-derived measurement resources, which means that this method and the
first method described above are both capable of carrying the same sensor data.
There are various types of sensors which are supported by QIF Resources.
The Simple Tactile Probe Sensor is meant to represent a single tip with no articulation. The
types for this simple probe are SimpleTactileProbeSensorType and
ToolWithSimpleTactileProbeSensorType.
The Complex Tactile Probe Sensor is meant to represent a tactile probing system that does not
fall into the category of Simple Tactile Probe Sensor. This could include a sensor tip that is
capable of articulation in some way, or a multiple stylus tipped probing system.
When a Complex Tactile Probe System is used, a measurement point item or actual can
reference a specific tip on that probe. This is done by using referencing the ProbeTipType. This
type is found under the LocatedTips element of the complex probe.
For any given machine geometry, there is the WorkingVolumeBaseType and the
EffectiveWorkingVolumeBaseType, each of which is characterized by different XML types.
9.5.11 Calibrations
The CalibrationType is used by MeasurementDeviceType to characterize calibrations that
have taken place on the given measurement device.
9.5.12 MeasurementRoomType
The MeasurementRoomType describes an environmentally controlled room in which
measurements may be done. It provides for controls on temperature and humidity.
10.1 Introduction
10.1.1 Why
In an attempt to encourage uniformity in measurement strategies across a large corporation or
supply chain, a common approach is to distribute a set of measurement rules (sometimes called
measurement templates). This will give the Coordinate Measuring Machine (CMM) (or any other
Dimensional Measurement Equipment (DME)) inspection program creator a guideline for
implementing programs that conform to best organizational practices.
Using the QIF Rules model, any organization can build a file conforming to the model and
containing a set of rules meant to give a dimensional measurement process planner, CMM
programmer, or CMM software package a set of standard practices regarding:
how individual features of a product should be measured based on selected criteria
(such as applicable characteristics, tolerances, feature geometry type, feature size,
datum, etc.) and/or measurement requirements (such as uncertainty, setup, and
environment)
how measurement resources should be selected, based on similar criteria plus part and
DME parameters.
Benefits of using rules are reduced uncertainty, consistent planning, and planning automation.
The QIF Rules model does not propose any specific set of rules. It only provides a format for
rules files in order that sets of rules may be exchanged easily and unambiguously.
10.1.2 What
Rules may be made for the following items on a per feature basis:
Rules may be made for DME selection on a per feature basis or more broadly.
A QIF Rules instance file will consist of a set of rules, each of which normally contains an “if”
part that is a “Boolean Condition” and a corresponding “then” part that specifies what action is
allowed or required if the “if” part is true. A Boolean Condition is a statement which can be
unambiguously evaluated as true or false. For example: “Joe’s car is red” would evaluate to
“true” if and only if the color of Joe’s car is red. Any given Boolean Condition may have one or
more corresponding actions that should be taken depending on the value of the Boolean
Condition. For example, if “Joe’s car is red” evaluates to true, the corresponding action may be
requested: “Borrow Joe’s car.” QIF Rules simply consists of a set of Boolean Conditions
pertaining to the feature, characteristic, or part in question, and a set of measurement-related
actions that should be carried out depending on these conditions.
The QIFRules.xsd schema file defines the top level information model for rules. QIF Rules also
draws from elements in the QIF Library, particularly those in the GenericExpressions.xsd and
Expressions.xsd schema files. For DME selection, QIF Rules references types defined in
QIFMeasurementResources.xsd.
A QIFDocument containing a Rules element may be regarded as a QIF Rules instance file. It is
anticipated that typically, a QIF Rules file will contain no other application and will not contain
items such as features, characteristics, and traceability that are not required for stating rules.
Using a QIF Rules file during planning, however, will require using other information items such
as features and characteristics.
The measurement rules described in this clause are not an attempt to give DME programmers a
precise set of instructions regarding how to carry out any given measurement on a given part.
Such a detailed set of instructions would be transmitted using QIF Plans.
10.1.3 How
QIF rules files are intended to be used during measurement planning. QIF specifies the model
of a rules file. The rules files themselves are written by any QIF user who wants to put a set of
rules into a well-defined, formal, standard format. Although examples of rules files have been
built during QIF development, QIF does not require or recommend any particular set of rules.
Using the QIF rules model does not guarantee or even imply that a given set of rules is usable
or even makes sense; it is up to the organization writing the rules to see to that. It is intended
that there be three main parties involved in the use of rules:
The party writing the QIF Rules instance file should decide at the outset in what way the rules
are intended to be used. If a QIF Rules instance file is to be used in an automatic process
planning application or an automatic DME programming system, it will be necessary to write
enough rules to cover all the decisions that the software may be required to make. This is
expected to be difficult. The model does not attempt to ensure that a set of rules conforming to
the model will even be consistent, let alone complete. If the intent of writing the QIF Rules
instance file is to encode a (possibly existing) set of natural language rules in a formal way, the
job of the rules writers is expected to be more straightforward. However, since natural language
may be used to say almost anything, it is possible that the QIF Rules model will not be
sufficiently expressive to state some desired rules. It is the intent of the DMSC that future
versions of the rules model be improved by adding functionality that is found by users to be
needed.
The party deciding how the rules will be used may be the same one that wrote the rules or it
may be a manager, process planner, or DME programmer. The most lax decision would be to
use the rules merely as suggestions. Another possibility is to require that the rules be followed,
but where there are alternatives that are all allowed by the rules, use the desirability values in
the rules only as suggestions, and let the person or software using the rules decide among the
alternatives. A third possibility is to require that the rule user use the given desirability values to
find and select the most desirable alternative.
The party using the rules during process planning or DME programming will presumably follow
the organization’s rules for how a set of rules modeled using QIF will be applied. Applying the
rules will be a non-trivial undertaking. If this party is a software application, a great deal of
functionality will need to be programmed into it. If this party is a person, some form of translation
from the QIF rules instance file into an easily understandable form will be needed.
The actions available for rules differ between feature rules and DME selection rules. Also, the
two types of rule have differing structure, as described in the following subclauses.
The rules are to be evaluated in an environment in which the SamplingCategory has been set
to some positive integer so that the SamplingCategoryIsType Boolean expression can be
evaluated. For example, the values 1 and 2 might represent first article inspection
and process control, or the values 1 through 4 might represent LOW, MEDIUM, HIGH, and
SUPER, respectively.
For features, this if/then clause could optionally be followed by a series of “else if” and finally an
“else” statement. These “else if” and “else” statements are modeled after the commonly seen
“if/else if/else” statements found in applications of computer science.
Here is a simple example in XML. In this example, we test whether the surface area of the
feature is greater than 10 units of area. If it is, then a minimum of 25 points is required.
Otherwise (“else”), a minimum of 10 points is required.
<MaxFeatureRules n="2">
<IfThenSurfaceRule>
<GreaterThan>
<FeatureArea/>
<ArithmeticConstant val="10"/>
</GreaterThan>
<ThenPoints>
<MinPoints>25</MinPoints>
</ThenPoints>
</IfThenSurfaceRule>
<Else>
<ThenPoints>
<MinPoints>10</MinPoints>
</ThenPoints>
</Else>
</MaxFeatureRules>
When a rule is applied to a feature, if more than one characteristic applies to the feature, and a
condition uses a characteristic type test, the condition should be tested for each characteristic
applied to the feature.
Since measurement points are taken on Features (not Characteristics), there may often arise a
situation where two or more conflicting Rules may apply to a given Feature. When this is the
case, the Rule with the higher number of points should be used. If this happens when two
sampling strategies are specified, then it is up to the evaluating system to make the appropriate
decision. (Exception: the IfThenElseFeatureRulesType; see subclause 10.4.2.1.)
DME selection rules are intended to be used during measurement planning. A set of rules
conforming to the model may be written so as to leave the planner with no choice (useful if the
planner is an automated system). A rule set may also be written so as to provide the planner
with a set of acceptable alternatives from which the planner may choose. Where a rule set
leaves alternatives, the desirability of each alternative may be specified as a number, so that the
choice can be made algorithmically if that is what the planner (or the planner’s organization)
wishes to do.
Specifying the set of DMEs to which the rules apply during a measurement planning session is
the responsibility of the organization in which measurement planning is taking place. For
example, it might be any of (but is not limited to):
In a QIF instance file, the rule above that has no “If” part and prohibits the use of a caliper would
be:
<DMEDecisionRule>
<DMEThen n="1">
<DMEDecisionClass>
<MustNot/>
<DMEClassName>CALIPER</DMEClassName>
</DMEDecisionClass>
</DMEThen>
</DMEDecisionRule>
And the complex rule requiring the coordinate measuring machine with QIF id 1234 would be:
<DMEDecisionRule>
<And n="4">
<FeatureTypeIs val="CYLINDER"/>
<FeatureIsInternal/>
<CharacteristicIs val="DIAMETER"/>
<GreaterThan>
<ArithmeticFeatureParameter>
<Parameter>Diameter</Parameter>
</ArithmeticFeatureParameter>
<ArithmeticConstant val="3.2"/>
</GreaterThan>
</And>
<DMEThen n="1">
<DMEDecisionId>
<Must/>
<DMEId>1234</DMEId>
</DMEDecisionId>
</DMEThen>
</DMEDecisionRule>
Units.xsd
GenericExpressions.xsd
Primitives.xsd.
This subclause describes the major elements and types in the QIF Rules model.
The top-level data object under QIFDocument in a QIF Rules instance file is a Rules element
of type QIFRulesType, as shown in Figure 226. The Rules element contains an optional set of
rules for features in its FeatureRules element and an optional set of rules for selecting
dimensional measurement equipment (DMEs) in the DMESelectionRules element.
The FeatureRulesType models a collection of sets of rules for selecting quality measurement
items. Currently it contains a complete model of rules for selecting any or all of the following for
a given feature:
the quantity (number or density) of hit points
the strategy for selecting hit points
a feature fitting algorithm.
As shown in Figure 227, the FeatureRulesType provides two methods of making selections,
IfThenElseFeatureRules and MaxFeatureRules. Either method or both methods may be used.
If the IfThenElseFeatureRules and MaxFeatureRules are both used for quantity of points,
both sets of rules should be applied and the greatest value should be used. Also, if both are
used and they give different point sampling strategies or feature fitting algorithms, the evaluating
system may use any of those strategies or algorithms.
Since a given feature F may be associated with zero to many characteristics C1 ... Cn, if there is
any characteristic associated with F, the rules should be evaluated for each FCi pair, and the
number or density of hit points to use for F should be set to the maximum value.
If a number of hit points must be compared with a density of hit points, the evaluating system
should find and use the area of the feature to convert density values to numbers of points.
Numerical quantities that are constants, feature parameters, or characteristic parameters may
be used in conditions.
The numerical quantities, FeatureSize, FeatureLength and FeatureArea, may also be used in
conditions. The evaluating system must set the value of FeatureLength for the feature being
processed if FeatureLength is used in any condition. The evaluating system must set the value
of FeatureArea for the feature being processed if FeatureArea is used in any condition.
The rules are not intended for picking the quantity of points or the point sampling strategy to use
for measuring a characteristic that is not associated with any feature.
10.4.2.1 IfThenElseFeatureRulesType
The IfThenElseFeatureRulesType is a set of rules for selecting (1) the number or density of hit
points for a single feature, possibly with an associated characteristic and/or (2) a strategy for
selecting the points. To evaluate an IfThenElseFeatureRulesType, each IfThenFeatureRule
should be considered in order until the 'if' part of one of them evaluates to true, at which point
the 'then' part of the rule should be evaluated and the value of the point quantity and/or point
sampling strategy returned. In this case, the remainder of the IfThenFeatureRules should be
ignored. If the 'if' part of no IfThenFeatureRule evaluates to true, then the 'then' part of the Else
should be evaluated and returned.
<IfThenElseFeatureRules n=”3”>
<IfThenCylinderRule>
<ThenPoints>
<NumberOfPoints>23</NumberOfPoints>
</ThenPoints>
</IfThenCylinderRule>
<IfThenCircularArcRule>
<ThenPoints>
<PointDensity>0.8</PointDensity>
</ThenPoints>
</IfThenCircularArcRule>
<Else>
<ThenPoints>
<MinPoints>13</MinPoints>
</ThenPoints>
</Else>
</IfThenElseFeatureRules>
In this example, we first test if the Feature is a cylinder. If so, then we request 23 points and
have completed the IfThenElseFeatureRulesType rule. Otherwise, we test if the Feature is an
arc. If it is, then we request a point density of 0.8 (with the exact placement of points to be
calculated by the evaluating system). If the Feature was a circular arc, then we are finished
evaluating. Otherwise, we fall into the “Else” statement: a minimum of 13 points.
10.4.2.2 MaxFeatureRulesType
The MaxFeatureRulesType is a set of rules for selecting (1) the number or density of hit points
for a single feature, possibly with an associated characteristic and/or (2) a point sampling
strategy for the points. To evaluate a MaxFeatureRulesType, keep track of a current answer
for point quantity, which is initially set to zero. Each IfThenFeatureRule should be considered in
order. If the 'if' part of a rule evaluates to true, the 'then' part of the rule should be evaluated and
if that value is greater than the current answer, the current answer should be set to that value. If
the 'if' part of no IfThenFeatureRule evaluates to true, so that the current answer is still zero
after all IfThenFeatureRules have been processed, then the 'then' part of the Else should be
evaluated and the current answer set to that value. The returned value for point quantity is the
final value of the current answer. In addition to keeping track of the current answer for point
quantity, the evaluating system should collect all the strategies and feature fitting algorithms
from the 'then' parts that were evaluated.
<MaxFeatureRules n=”3”>
<IfThenSurfaceRule name=”FirstRule”>
<GreaterThan>
<FeatureArea/>
<ArithmeticConstant val="2"/>
</GreaterThan>
<ThenPoints>
<MinPoints>4</MinPoints>
</ThenPoints>
</IfThenSurfaceRule>
<IfThenSurfaceRule name=”SecondRule”>
<And n=”2”>
<CharacteristicIs val="SURFACEPROFILE"/>
<LessThan>
<ArithmeticCharacteristicParameter>
<CharacteristicTypeEnum>SURFACEPROFILE</CharacteristicTypeEnum>
<Parameter>ToleranceValue</Parameter>
</ArithmeticCharacteristicParameter>
<ArithmeticConstant val="0.010"/>
</LessThan>
</And>
<ThenPoints>
<MinPointDensity>0.2</MinPointDensity>
</ThenPoints>
</IfThenSurfaceRule>
<Else>
<ThenPoints>
<MinPoints>3</MinPoints>
</ThenPoints>
</Else>
</MaxFeatureRules>
In this example, we must evaluate all rules to see which evaluate to true. There are 2 rules in
this example: the IfThenSurfaceRule named “FirstRule” and the IfThenSurfaceRule named
“SecondRule”. There is also an “Else” statement, to be executed only in the event that no rules
apply to the Feature/Characteristic being evaluated.
In many cases, only the “FirstRule” or “SecondRule” will evaluate to true. In this case, the
corresponding ThenPoints statement should be executed.
Additional examples of feature rules are provided in the Rules section of the informative
sampleInstanceFiles distributed with the QIF XML schema files.
When rules are being evaluated, the DMEThen part of the rule applies if either the
BooleanExpression evaluates to true or is omitted.The types of Boolean expression supported
by the model are described in subclause 10.2.1.
10.4.3.1 DMEThen
Figure 229 shows the DMEThen element and the DMEThenType. The element is the “Then”
part of a rule and is of type DMEThenType. The type names one element, DMEDecision, but
that element is of an abstract type, so one of the three elements, DMEDecisionClass,
DMEDecisionId, or DMEDecisionMakeModel from its substitution group must be used in its
place. Note also that multiple elements may be used, as given by attribute n. That enables a
single DMEThen to specify several DMEs, such as a particular combination of CMM, tool, and
probe tip.
10.4.3.2 DMEDecisionClass
The DMEDecisionClass element and DMEDecisionClassType are shown in Figure 230.
Using a DMEDecisionClass element indicates that any member of the DME class whose name
is given in the DMEClassName element may be selected or ruled out, provided it meets any
constraints given in the optional ParameterConstraints element. If the Applicability is May or
Must, the planning system that is using the rules is expected to select one or more DMEs that
are in the class and satisfy the constraints.
The abstract DMEDecisionBaseType (not shown in the figure) has only one element, an
Applicability which is of the abstract ApplicabilityType. In an instance file the Applicability
element must be replaced by an element in its substitution group, namely one of:
a May element of QIFMayType
a Must element of QIFMustType
a MustNot element of QIFMustNotType
“May” means that a member of the class may be selected, but does not require that a member of
the class be selected.
The QIFMustType and the QIFMustNotType do not have any elements or attributes, but the
QIFMayType has an optional desirability attribute of ZeroToOneType (a double value in range
[0..1]). If no value for the desirability attribute is provided, the value is the defaultDesirablity
The DMEClassName element of the DMEDecisionClassType is the name of a DME class. Its
value is one of the names given in the DMEClassNameEnumType.
Here is an example of a DME selection rule using the May element. It is from the Rolls-Royce
“Guide” mentioned earlier, page 25, table 5. The English language version of the rule is: “If
feature size is less than 5 mm and tolerance is greater than or equal to 0.100 mm, then an
analog micrometer may be used”. The rule modeled below adds the requirement that the
feature being considered must not be an internal feature.
<DMEDecisionRule>
<And n="3">
<Not><FeatureIsInternal/></Not>
<LessThan>
<FeatureSize/>
<ArithmeticConstant val="5.0"/>
</LessThan>
<GreaterOrEqual>
<ArithmeticCharacteristicParameter>
<Parameter>Tolerance</Parameter>
</ArithmeticCharacteristicParameter>
<ArithmeticConstant val="0.100"/>
</GreaterOrEqual>
</And>
<DMEThen n="1">
<DMEDecisionClass>
<May desirability="1"/>
<DMEClassName>ANALOG_MICROMETER</DMEClassName>
</DMEDecisionClass>
</DMEThen>
</DMEDecisionRule>
10.4.3.3 DMEDecisionId
The DMEDecisionId element and DMEDecisionIdType are shown in Figure 231.
The DMEDecisionId element indicates a specific DME with a QIF Id. The value of the DMEId
element must be the QIF id of a DME found in the MeasurementResources section of a
QIFDocument. The QIFDocument with the measurement resource could be in the same file as
the one containing the rules, but is expected more usually to be in a separate file.
The meanings of the elements that may be substituted for Applicability are the same as for the
DMEDecisionClassType described in subclause 10.4.3.2.
10.4.3.4 DMEDecisionMakeModel
The DMEDecisionMakeModel element is of type DMEDecisionMakeModelType and is shown
in Figure 232. This element indicates a DME identified by its make and model. Optionally, a serial
number may be given.
The meanings of the elements that may be substituted for Applicability are the same as for the
DMEDecisionClassType described in subclause 10.4.3.2.
11.1 Foreword
The Quality Information Framework (QIF) information model was developed by domain experts
from the manufacturing quality (that is metrology) community representing a wide variety of
industries and quality measurement needs. Specifically for the QIF Results work, past and
current contributors include:
Capvidia, Inc.
Honeywell Federal Manufacturing & Technologies
Lockheed Martin
Manufacturing Technology Centre
Metrosage
Mitutoyo America
National Institute of Standards and Technology
Origin International Inc.
University of North Carolina, Charlotte
The bulk of the work on this clause was performed by the QIF Results Working Group, revised
as needed and approved by the Quality Information Framework (QIF) Working Group, and given
final approval for ANSI balloting by the DMSC’s Quality Measurement Standards (QMS)
Committee. QIF version 3.0 is solely a product of the DMSC and its committees and working
groups.
11.2 Introduction
Part inspection is carried out by a measurement execution activity, whose functionality is
typically to interpret machine-level measurement plans, give equipment level commands to
specific dimensional measuring equipment (DME) control units, collect point data, fit features to
the data, and output feature and characteristic data. Measurement execution can also include
software solutions that issue instructions to human operators using calipers, go/no-go gages,
and specialized inspection equipment to generate results data. Once the machine-level
measurement plans are executed, the measurement data, either raw data or pre-processed
data, is collected, reported, and analyzed. The QIF Results specification provides a vendor-
neutral format for the data. Software solutions that support QIF, by either writing or reading QIF
files, can exchange manufacturing quality data efficiently and accurately.
11.3 Scope
The Execute Measurement Program activity shown in Figure 233, inspects the part or assembly
by executing the program and generates results formatted according to the QIF Results
component of QIF. Finally, measurement results are collected, reported, and analyzed, through
the Analyze and Report Quality Data activity. Results of a single part inspection, as well as the
statistical analysis of groups of parts, can provide feedback to upstream processes such as
product manufacturing and quality engineering.
express results of dimensional inspection according to the principles of ASME GD&T and
ISO GPS, and support data required to fully express the intent and results of inspection
programs written in the DMIS language.
support inspection traceability of quality data, meaning that inspection results data can be
identified with the factory resources used to inspect the part, including equipment,
software, and people.
support information needed by downstream processes, e.g., First Article Inspection Report
(FAIR) generation, statistical process control, and other computer aided quality solutions.
The Results element, shown in Figure 234, which is of type ResultsType, is the highest level
element of the QIF Results model. Elements in the figure with + signs at the right (all of them)
have substructure that is not shown in the figure. Most substructure is defined in the QIF Library
files.
An XML instance file written in conformance with the QIFDocument.xsd and QIFResults.xsd
schema files may contain one Results element.
Version – This optional element contains information about the file, including
TimeCreated, Signoffs, and ThisInstanceQPId.
Not shown are constraints as a key/keyref pair. The ActualComponentIdKey collects all
QIFIds of ActualComponents. The ActualComponentKeyref requires that an element located
anywhere in an instance file that is supposed to be the id of an ActualComponent is either (1)
the id of an ActualComponent in the same instance file or (2) the local id of an external QIF
instance file.
id – This required attribute is the QIF id of the measurement results, used for
referencing.
Attributes – This optional element contains user defined attributes (e.g., typified, binary
array, or XML structured).
MeasuredFeatures – This optional element gives information about the features that were
measured.
ActualTransforms - This optional element gives information about the actual transforms
used in the measurement results. These transforms can represent actual coordinate
system transforms or actual datum reference frame transforms.
id – This required attribute is the QIF id of the actual component, used for referencing.
Attributes – This optional element contains user defined attributes (e.g., typified, binary
array, or XML structured).
SerialNumber element – This optional element is the serial number of the actual
component. Components with the same ModelNumber have different SerialNumbers.
Status – This required element gives the inspection status of the actual component.
AsmPathId – This optional element is the id of the assembly path of this component. It
gives information about where the actual component is located in an assembly.
12.1 Foreword
The Quality Information Framework (QIF) information model was developed by domain experts
from the manufacturing quality (that is metrology) community representing a wide variety of
industries and quality measurement needs. Specifically for the QIF Statistics work, past and
current contributors include:
Main:
Honeywell Federal Manufacturing & Technologies
Mitutoyo America
National Institute of Standards and Technology
Origin International Inc.
Support:
Deere and Co.
InfinityQS
Lockheed Martin
University of North Carolina - Charlotte
This clause was written by the QIF Statistics Working Group, and given final approval for ANSI
balloting by the DMSC’s Quality Measurement Standards (QMS) Committee.
12.2 Introduction
QIF Statistics is an extension of the Quality Information Framework data model designed to
carry information to transport statistical quality control plans, corrective action plans and detailed
summary quality statistics. It builds on the QIF Results framework through supporting multi-part
measurement results that can apply to a number of quality study types beyond single or first
article inspection. It is designed to haul information in an unambiguous form for pre-production,
capability, and production quality studies. In addition it supports the full extent of measurement
systems analysis studies including Gage R&R.
The benefits will be easily understood by the intended audience for this standard – all those who
are already engaged in Quality measurement planning or the associated inspection process. So
here is a summary of the benefits of standardization:
Eliminates wasted resources, money, and time in measurement planning and
execution tasks.
Redirects these savings to value-added activities, enhancements, etc.
Allows manufacturers and measurement solutions providers to redirect more
energy to new development.
Enables inspection systems to communicate with more measurement planning
systems making them both more useful.
Permits customers to focus more on core business.
Uses standard identifiable tags, yet with provision for familiar user-defined names.
Moves away from proprietary schemas that require significantly more technical
support.
12.3 Scope
The scope of the Statistics information model consists of quality measurements of variable and
attribute characteristics. Measurement results not only include observed measurement values,
but also summary statistical or derived results (e.g., individuals, averages, standard deviations,
max, min, etc.). All necessary nominal (as designed) target values are also included to allow
reanalysis, if required. Any other traceability information relevant to one or more measurements
is also in scope, information such as the shift, data source, equipment operator’s name, the ID
and feature of the item measured, the date and time of the measurement, etc.
QIF Statistics is designed to support single or multiple workpiece studies. QIF Statistics applies
to First Article Inspection, Process Capability studies, Production Runs, Gage R&R studies, etc.
Applicable software classifications that can make use of this interoperability standard include:
Enterprise Resource Planning (ERP), Manufacturing Execution Systems (MES), Statistical
Quality Control (SQC), Statistical Process Control (SPC), Gage Repeatability and
Reproducibility (Gage R&R), Measurement Systems Analysis (MSA) and Advanced Statistical
Analysis.
The information model consists of definitions for data types, elements, the logical relationships
between them, and the semantics of the quality information. The information model, defined
using the XML Schema Definition (XSDL) Language, is scoped to be a digital data exchange
mechanism that can be easily incorporated in application software developed by commercial
solution vendors that implement manufacturing quality systems. The QIF Statistics information
model is expressed in the file “QIFStatistics.xsd”. All QIF XML schema files are normative and
are available for download at www.qifstandards.org.
XSDL also supports the definition of rules and checks for validation of QIF instance files.
This clause describes the several business use cases for the QIF Statistics data model for
interoperability and details the various aspects of the Study Plans, Results and Corrective
Action Plans.
The data model is described using simplified practical examples of each study type. The
examples illustrate how the QIF Document structure provides for an integrated platform to
combine Measurement Resources, Part Definition, Measurement Plans, Measurement Results
and Measurement Statistics into a single package.
This clause does not describe detailed Statistical theories or the calculation methods associated
with them.
12.4 Requirements
QIF Statistics is designed to carry information between a wide variety of manufacturing and
enterprise applications. This clause describes the simple workflow from measurement result
collection and Statistical Process Control applications to aggregate Statistics and how this
information can be archived or consumed by downstream applications such as PLM (Product
Lifecycle Management) and ERP (Enterprise Resource Planning) systems.
QIF Results
Quality Measurement Results
(single part or multi-part)
Reporting and
Analysis (e.g. SPC/MSA/
Model Based Analysis)
QIF Statistics
Quality Measurement for
Statistical Process Control
(single or multi-part)
MES QMS
An ERP system has a service-oriented architecture with modular hardware and software units
or "services" that communicate on a local area network. The modular design allows a business
to add or reconfigure modules (perhaps from different vendors) while preserving data integrity in
one shared database that may be centralized or distributed.
Statistical Quality Control (SQC) is a method of quality control that uses statistical sampling of
units produced by a production process. These are checked for defectives (variances) to
determine whether or not the process is in control. If not, corrective action is taken. In the field of
statistical quality control, the statistical control chart is used as a basic tool to formally
distinguish between normal and abnormal variances.
It is a defined process for a product development system for General Motors, Ford, Chrysler and
their suppliers. According to the Automotive Industry Action Group (AIAG), the purpose of
APQP is "to produce a product quality plan which will support development of a product or
service that will satisfy the customer."
Just as processes that produce a product may vary, the process of obtaining measurements
and data may have variation and produce defects. A Measurement Systems Analysis evaluates
the test method, measuring instruments, and the entire process of obtaining measurements to
ensure the integrity of data used for analysis (usually quality analysis) and to understand the
implications of measurement error for decisions made about a product or process. MSA is an
important element of Six Sigma methodology and of other quality management systems.
MSA analyzes the collection of equipment, operations, procedures, software and personnel that
affects the assignment of a number to a measurement characteristic.
The QIF Statistics data model includes elements for statistical evaluations on a per-
characteristic basis and for summary information over multiple characteristics. The directives
defining the various statistical evaluations to be collected reside in a light-weight, mnemonic-
based list. The association between a statistical quantity and its mnemonic is defined in the
annotation describing each individual data element and is shown in Table 9 below.
At the highest level a QIF document containing QIF Statistics can contain any or all of the
following sets of data:
QIF Statistics defines a variety of statistical study types. The criteria for determining the status
(pass or fail) for each statistical study type can be defined as well as the statistical quantities
particular to that study type.
Bias Study Plan (BiasStudyPlan element) where the bias (expected measured value
versus actual value) of a measurement system is determined.
Capability Study Plan (CapabilityStudyPlan element) where a number of part samples
are measured to establish the capability of a manufacturing process (e.g. Cp, Cpk, etc.).
First Article Study Plan (FirstArticleStudyPlan element) where the number and severity
of non-conforming characteristics determines product acceptance.
Gage R&R Study Plan (GageRandRStudyPlan element) where a number of part
samples are repeatedly measured by two or more appraisers to establish the
repeatability and reproducibility of a measurement process.
Linearity Study Plan (LinearityStudyPlan element) where an artifact or artifacts are
measured to determine the linearity of a measurement system.
Process Difference Study Plan (ProcessDifferenceStudyPlan element) where the
same part is measured before and after a manufacturing process to determine any part
distortion caused by that process.
Production Study Plan (ProductionStudyPlan element) where samples are measured
for statistical process control to ensure the ongoing stability or capability of a
manufacturing process.
Simple Study Plan (SimpleStudyPlan element) where multiple samples are measured
for the purpose of averaging features for process adjustment or reverse engineering.
Stability Study Plan (StabilityStudyPlan element) where the same part or artifact is
measured over time to assess the stability of a measurement system.
More than one study plan of a given type may be instantiated in a single QIF document.
Similarly, two or more study plans of different types may be instantiated in a single QIF
document.
Status
Assignable Cause Ids
Corrective Action Ids
Characteristic Ids
Traceability
Characteristic Statistics
Measurement Ids (reference to measured characteristic)
The above plan data sets have corresponding results data sets:
Bias Study Results (BiasStudyResults element) where the bias (expected measured
value versus actual value) of a measurement system was determined.
Capability Study Results (CapabilityStudyResults element) where a number of part
samples were measured to establish the capability of a manufacturing process.
First Article Study Results (FirstArticleStudyResults element) where the number and
severity of non-conforming characteristics determined product acceptance.
Gage R&R Study Results (GageRandRStudyResults element) where a number of part
samples were repeatedly measured by two or more appraisers to establish the
repeatability and reproducibility of a measurement process.
Linearity Study Results (LinearityStudyResults element) where an artifact or artifacts
were measured to determine the linearity of a measurement system.
Process Difference Study Results (ProcessDifferenceStudyResults element) where
the same part was measured before and after a manufacturing process to determine any
part distortion caused by that process.
Production Study Results (ProductionStudyResults element) where samples were
measured for statistical process control to ensure the ongoing stability or capability of a
manufacturing process.
Simple Study Results (SimpleStudyResults element) where multiple samples were
measured for the purpose of averaging features for process adjustment or reverse
engineering.
Stability Study Results (StabilityStudyResults element) where the same part or artifact
was measured over time to assess the stability of a measurement system.
A QIF Statistics study result does not need a QIF-defined study plan but can optionally
reference an associated QIF-defined study plan by its QIF id if it exists.
More than one study result of a given type may be instantiated in a single QIF document.
Similarly, two or more study plans of different types may be instantiated in a single QIF
document.
Assignable Causes
Corrective Actions
A corrective action plan has a single data set type (CorrectiveActionPlan element). More than
one corrective action plan may be defined in the CorrectiveActionPlans element.
A corrective action plan consists of a list of assignable causes and a list of corrective actions.
The connection between the assignable causes and corrective actions is made by referencing
the QIF id of the corrective action via the optional CorrectiveActionIds element.
More than one corrective action may be associated with a single assignable cause. Because the
assignable cause and corrective action list are independent, the same corrective action may be
associated with more than one assignable cause.
At the very lowest level a set of data of any type will define quantities like the total
number of samples.
If the data set is numerical, then quantities like the average value, the maximum and the
minimum, or the standard deviation (and many others) become available.
If a numerical data set has specification limits or tolerance values then even more
quantities become available such as Cp and Cpk, the number out of tolerance, and the
equipment variation relative to the tolerance zone.
Table 9 lists the various mnemonics and their associated statistical value elements. A
checkmark in the Num column signifies that a data set must be numeric for the statistical value
to make sense. A checkmark in the Tol column signifies that a data set must have a
specification limit (either numerical or non-numerical) for the statistical value to make sense.
The Size column shows the number of samples needed for simple statistical quantities to be
calculated. The sample sizes for gage R&R studies are defined by best practices and not the
minimum number necessary to calculate a value. The Size column entries for these rows are
intentionally left blank.
EFFNUM
Effective number of samples ≥1
Average ≥2
AVG
Difference between exactly two samples =2
DIFF
Root mean square ≥2
RMS
Maximum value ≥2
MAX
Minimum value ≥2
MIN
Range ≥2
RANGE
Average range over subgroups ≥3
AVGRNG
Standard deviation ≥2
STDDEV
Skew ≥3
SKEW
Kurtosis ≥4
KURT
Normality ≥3
NORM
Process variation (6σ) ≥2
PROVAR
Estimate standard deviation from average
≥2
ESTSTDV range over subgroups
UCL
Upper control limit ≥2
Linearity ≥3
LNRTY
Relative Linearity ≥3
REL_LNRTY
Bias ≥1
BIAS
Relative Bias ≥1
REL_BIAS
R² goodness of fit ≥3
R_SQR
Slope of best-fit line (m in Y=mX+b) ≥2
SLOPE
Y-intercept of best fit line (b in Y=mX+b) ≥2
INTCPT
Upper confidence limit ≥2
UPRCONFLIM
Lower confidence limit ≥2
LWRCONFLIM
T-distribution value ≥2
TDIST
Table 9 − Statistical values and their associated mnemonics.
For example, the study plan below requests that the average value and the Cp and Cpk be
evaluated for each characteristic defined in the CharacteristicItemIds element:
<CapabilityStudyPlan>
<NumberOfSamples>6</NumberOfSamples>
<CharacteristicItemIds n=”2”>
<Id>7</Id>
<Id>8</Id>
</CharacteristicItemIds>
<StatsValuesPerChar>AVG CP CPK</StatsValuesPerChar>
…
</CapabilityStudyPlan>
After measurement and statistical evaluation the statistical results might look like:
<CapabilityStudyResults>
...
<DiameterCharacteristicStats>
<MeasuredIds>
<Ids n=”6”>
<Id>42</Id>
<Id>44</Id>
<Id>46</Id>
<Id>48</Id>
<Id>50</Id>
<Id>52</Id>
</Ids>
</MeasuredIds>
<ValueStats>
<Average>
<Value>10.07</Value>
</Average>
<Cp>
<Value>2.04</Value>
</Cp>
<Cpk>
<Value>1.83</Value>
</Cpk>
</ValueStats>
</DiameterCharacteristicStats>
<DiameterCharacteristicStats>
<MeasuredIds>
<Ids n=”6”>
<Id>43</Id>
<Id>45</Id>
<Id>47</Id>
<Id>49</Id>
<Id>51</Id>
<Id>53</Id>
</Ids>
</MeasuredIds>
<ValueStats>
<Average>
<Value>9.86</Value>
</Average>
<Cp>
<Value>1.89</Value>
</Cp>
<Cpk>
<Value>1.47</Value>
</Cpk>
</ValueStats>
</DiameterCharacteristicStats>
…
</CapabilityStudyResults>
statistical summary quantities to be collected and reported. The available summary values are
shown in Table 10 below.
For example, a study plan might request the average of average values and the minimum Cpk
over all characteristics in the study:
<CapabilityStudyPlan>
<NumberOfSamples>6</NumberOfSamples>
<CharacteristicItemIds n=”2”>
<Id>7</Id>
<Id>8</Id>
</CharacteristicItemIds>
<StatsValuesPerChar>AVG CP CPK</StatsValuesPerChar>
<SummaryStatsValuesList n=”2”>
<SummaryStatsValues>
<SummaryType>AVG</SummaryType>
<SummaryStats>AVG</SummaryStats>
</SummaryStatsValues>
<SummaryStatsValues>
<SummaryType>CPK</SummaryType>
<SummaryStats>MIN</SummaryStats>
</SummaryStatsValues>
</ SummaryStatsValuesList>
…
</CapabilityStudyPlan>
After measurement and statistical evaluation the statistical results will contain additional
information summarizing the statistical evaluations:
<CapabilityStudyResults>
...
<DiameterCharacteristicStats>
<MeasuredIds>
<Ids n=”6”>
<Id>42</Id>
<Id>44</Id>
<Id>46</Id>
<Id>48</Id>
<Id>50</Id>
<Id>52</Id>
</Ids>
</MeasuredIds>
<ValueStats>
<Average>
<Value>10.07</Value>
</Average>
<Cp>
<Value>2.04</Value>
</Cp>
<Cpk>
<Value>1.83</Value>
</Cpk>
</ValueStats>
</DiameterCharacteristicStats>
<DiameterCharacteristicStats>
<MeasuredIds>
<Ids n=”6”>
<Id>43</Id>
<Id>45</Id>
<Id>47</Id>
<Id>49</Id>
<Id>51</Id>
<Id>53</Id>
</Ids>
</MeasuredIds>
<ValueStats>
<Average>
<Value>9.86</Value>
</Average>
<Cp>
<Value>1.89</Value>
</Cp>
<Cpk>
<Value>1.47</Value>
</Cpk>
</ValueStats>
</DiameterCharacteristicStats>
<LinearStatsSummaries n=”1”>
<LinearStatsSummary>
<SummaryType>AVG</SummaryType>
<Average>
<Value>9.965</Value>
</Average>
</LinearStatsSummary>
</LinearStatsSummaries>
<StatsSummaries n=”1”>
<StatsSummary>
<SummaryType>CPK</SummaryType>
<Minimum>
<Value>1.47</Value>
</Minimum>
</StatsSummary>
</StatsSummaries>
…
</CapabilityStudyResults>
Statistical values may have the same units as the set of values from which they are calculated
(average, minimum, standard deviation, etc.) or they may be unit-less (Cp, Cpk, etc.). Statistical
values with units can only be summarized over characteristics that share the same units. It is
reasonable to average the standard deviations of a set of linear dimensions but not of a mixed
set of linear and angular dimensions. Therefore there are separate statistical summary elements
for each unit type: LinearStatsSummary, AngularStatsSummary, etc. Unit-less statistical
values can be summarized over characteristics with differing units. There is a single unit-less
statistical summary element: StatsSummary.
Whether the limit and extreme limit are upper or lower bounds is taken in the context of the
statistical value type and is explicitly stated in the criterion element’s annotation.
Here are several examples of pass/fail criteria for the Cpk value (for Cpk the limit and extreme
limit are lower bounds).
An example where any characteristic in a capability study with a Cpk value below the criterion
limit of 1.66 will cause a failure condition:
<CapabilityStudyPlan>
…
<CpkThreshold>
<Limit>1.66</Limit>
</CpkThreshold>
…
</CapabilityStudyPlan>
An example where 95% of the characteristics must achieve a Cpk value above 1.66, or in other
words where 5% of the characteristics are allowed to have a Cpk value below the limit of 1.66
by using the optional NumberAllowedExceptions element:
<CapabilityStudyPlan>
…
<CpkThreshold>
<Limit>1.66</Limit>
<NumberAllowedExceptions>
<Fraction>0.05</Fraction>
</NumberAllowedExceptions>
</CpkThreshold>
…
</CapabilityStudyPlan>
In the above example there is no lower limit to the Cpk value of the 5% of characteristics
allowed to have a Cpk value below 1.66. To enforce an absolute lower limit of 1.33, the
ExtremeLimit element is used:
<CapabilityStudyPlan>
…
<CpkThreshold>
<Limit>1.66</Limit>
<NumberAllowedExceptions>
<Fraction>0.05</Fraction>
</NumberAllowedExceptions>
<ExtremeLimit>1.33</ExtremeLimit>
</CpkThreshold>
…
</CapabilityStudyPlan>
In the above example no Cpk values may be below 1.33 and up to 5% of characteristics may
have values between 1.33 and 1.66, and the remainder of Cpk values must be 1.66 or greater.
For example, a capability study requiring 6 samples over 2 subgroups would require a subgroup
size of 3:
<CapabilityStudyPlan>
<NumberOfSamples>6</NumberOfSamples>
<SubgroupSize>3</SubgroupSize>
<CharacteristicItemIds n=”2”>
<Id>7</Id>
<Id>8</Id>
</CharacteristicItemIds>
…
</CapabilityStudyPlan>
The measured characteristics included in the evaluation of a statistical value are stored as a list
of ids referencing the characteristic measurements stored in the Results element. The optional
MeasuredIds element is used when all measurments are in one set and the optional Subgroup
element is used, one instance for each subgroup, when the measurements are grouped into
subgroups.
The results of the capability study with 6 samples with a subgroup size of 3 might look like:
<CapabilityStudyResults>
...
<DiameterCharacteristicStats>
<SubGroups n=”2”>
<Subgroup id=”20”>
<MeasuredIds>
<Ids n=”3”>
<Id>42</Id>
<Id>44</Id>
<Id>46</Id>
</Ids>
</MeasuredIds>
</Subgroup>
<Subgroup id=”21”>
<MeasuredIds>
<Ids n=”3”>
<Id>48</Id>
<Id>50</Id>
<Id>52</Id>
</Ids>
</MeasuredIds>
</Subgroup>
</SubGroups>
…
</CapabilityStudyResults>
Each measurement subgroup has a unique QIF id so that it may be referenced in the same
manner as a characteristic measurement.
12.5.5.1 Exclusion
Sometimes a measurement can be excluded because its value is known to be meaningless or
suspect. There may have been an equipment error causing an obviously erroneous value like a
10 mm hole measured as 100 mm. The feature may have been reworked so that it is no longer
a member of the raw production set.
To exclude a characteristic from a statistical calculation use the optional Exclusion sub-element
of the MeasuredIds element. The id of the characteristic appears normally in the Ids sub-
element list but is then marked as excluded by including the same id in the Exclusion sub-
element with a reason for the exclusion.
For example, a single measurement is excluded from a single data set evaluation because it
was reworked:
<CapabilityStudyResults>
...
<DiameterCharacteristicStats>
<MeasuredIds>
<Ids n=”6”>
<Id>42</Id>
<Id>44</Id>
<Id>46</Id>
<Id>48</Id>
<Id>50</Id>
<Id>52</Id>
</Ids>
<Exclusions n=”1”>
<Exclusion>
<Id>44</Id>
<Reason>
<ExclusionReasonEnum>REWORK</ExclusionReasonEnum>
</Reason>
</Exclusion>
</Exclusions>
</MeasuredIds>
…
</DiameterCharacteristicStats>
…
</CapabilityStudyResults>
Similarly, measurements can be excluded from subgroups using the Exclusion element. For
example, two measurements are excluded from two different subgroups for different reasons:
<CapabilityStudyResults>
...
<DiameterCharacteristicStats>
<SubGroups n=”2”>
<Subgroup id=”20”>
<MeasuredIds>
<Ids n=”3”>
<Id>42</Id>
<Id>44</Id>
<Id>46</Id>
</Ids>
<Exclusions n=”1”>
<Exclusion>
<Id>44</Id>
<Reason>
<ExclusionReasonEnum>REWORK</ExclusionReasonEnum>
</Reason>
</Exclusion>
</Exclusions>
</MeasuredIds>
</Subgroup>
<Subgroup id=”21”>
<MeasuredIds>
<Ids n=”3”>
<Id>48</Id>
<Id>50</Id>
<Id>52</Id>
</Ids>
<Exclusions n=”1”>
<Exclusion>
<Id>52</Id>
<Reason>
<OtherExclusionReason>Grit on
caliper</OtherExclusionReason>
</Reason>
</Exclusion>
</Exclusions>
</MeasuredIds>
</Subgroup>
</SubGroups>
…
</CapabilityStudyResults>
AVG
Average over all subgroup values
For a statistical plan the statistical values to be evaluated for each subgroup are listed in the
StatsValuesPerSubgroup element.
For example, the study plan below requests that the average value and the Cp and Cpk be
evaluated for each characteristic defined in the CharacteristicItemIds element and that the
average and range be evaluated for each subgroup of size 3:
<CapabilityStudyPlan>
<NumberOfSamples>6</NumberOfSamples>
<SubgroupSize>3</SubgroupSize>
<CharacteristicItemIds n=”2”>
<Id>7</Id>
<Id>8</Id>
</CharacteristicItemIds>
<StatsValuesPerChar>AVG CP CPK</StatsValuesPerChar>
<StatsValuesPerSubgroup>AVG RANGE</StatsValuesPerSubgroup>
…
</CapabilityStudyPlan>
After measurement and statistical evaluation the statistical results might look like:
<CapabilityStudyResults>
...
<DiameterCharacteristicStats>
<SubGroups n=”2”>
<Subgroup id=”20”>
<MeasuredIds>
<Ids n=”3”>
<Id>42</Id>
<Id>44</Id>
<Id>46</Id>
</Ids>
</MeasuredIds>
</Subgroup>
<Subgroup id=”21”>
<MeasuredIds>
<Ids n=”3”>
<Id>48</Id>
<Id>50</Id>
<Id>52</Id>
</Ids>
</MeasuredIds>
</Subgroup>
</SubGroups>
<ValueStats>
<Average>
<Value>10.07</Value>
</Average>
<SubgroupAverage subgroupId=”20”>
<Value>10.04</Value>
</SubgroupAverage>
<SubgroupAverage subgroupId=”21”>
<Value>10.1</Value>
</SubgroupAverage>
<SubgroupRange subgroupId=”20”>
<Value>0.02</Value>
</SubgroupRange>
<SubgroupRange subgroupId=”21”>
<Value>0.03</Value>
</SubgroupRange>
<Cp>
<Value>2.04</Value>
</Cp>
<Cpk>
<Value>1.83</Value>
</Cpk>
</ValueStats>
</DiameterCharacteristicStats>
<DiameterCharacteristicStats>
<SubGroups n=”2”>
<Subgroup id=”22”>
<MeasuredIds>
<Ids n=”3”>
<Id>43</Id>
<Id>45</Id>
<Id>47</Id>
</Ids>
</MeasuredIds>
</Subgroup>
<Subgroup id=”23”>
<MeasuredIds>
<Ids n=”3”>
<Id>49</Id>
<Id>51</Id>
<Id>53</Id>
</Ids>
</MeasuredIds>
</Subgroup>
</SubGroups>
<ValueStats>
<Average>
<Value>9.86</Value>
</Average>
<SubgroupAverage subgroupId=”22”>
<Value>9.81</Value>
</SubgroupAverage>
<SubgroupAverage subgroupId=”23”>
<Value>9.91</Value>
</SubgroupAverage>
<SubgroupRange subgroupId=”22”>
<Value>0.04</Value>
</SubgroupRange>
<SubgroupRange subgroupId=”23”>
<Value>0.07</Value>
</SubgroupRange>
<Cp>
<Value>1.89</Value>
</Cp>
<Cpk>
<Value>1.47</Value>
</Cpk>
</ValueStats>
</DiameterCharacteristicStats>
…
</CapabilityStudyResults>
This example illustrates how the subgroup id is used to associate values with individual
subgroups.
The Statistics element, is the root of the QIF Statistics model, as shown in Figure 238.
The optional StatisticalStudyPlans element contains one or more statistical study plans
elements of the types listed in subclause 12.5.2.1 using the substitution group mechanism for
the StatisticalStudyPlan element.
Similarly, the optional StatisticalStudyResults element contains one or more statistical study
results elements of the types listed in subclause 12.5.2.2 using the substitution group
mechanism for the StatisticalStudyResult element.
A QIF document containing QIF Statistics study results can reference the measurement results
used in statistical calculations at two levels.
At a very low level, measurment results can be referenced by characteristic and feature
summaries as seen in examples above. The MeasuredIds element found in the
CharacteristicStatsEvalBaseType and the SubgroupType can reference individual
characteristic measurement instances in the QIF document via their QIF ids or in external QIF
documents via the QIF id of an ExternalQIFDocument element in conjuction with the xId
attribute where the xId attribute is the QIF id of the measured feature in the external QIF
document. Similarly, the MeasuredIds element found in the AverageFeatureType can
reference individual feature measurement instances in the QIF document via their QIF id or in
external documents with the ExternalQIFDocument QIF id / xId mechanism.
At a higher level, whole measurement results can be referenced by any of three mechanisms:
This guideline details typical examples for implementing QIF Statistics XML files that carry these
different quality data types.
Several examples use the following sample part (i.e. widget), shown in Figure 239, as a basis
for inspection.
This sample part has defined variable characteristic data (Diameter, Flatness, etc.), and may
also be inspected for Attribute data (Pass/Fail, Scratches, Dents, Burrs, etc.) The next
subclause describes examples of how this inspection data can be carried with QIF Documents.
The following QIF document structure is an example that contains two QIF
MeasurementResults blocks for a variable inspection of a diameter:
<QIFDocument xmlns="http://qifstandards.org/xsd/qi"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" versionQIF=“3.0.0”
idMax=“10” xsi:schemaLocation= "http://qifstandards.org/xsd/qif3
../Applications/QIFDocument.xsd">
<QPId>934F7360-5140-4b57-B834-F0774D2F22FC</QPId>
<StandardsDefinitions n="1">
<Standard id="10">
<Organization>
<StandardsOrganizationEnum>ASME</StandardsOrganizationEnum>
</Organization>
<Designator>Y14.5</Designator>
<Year>2009</Year>
</Standard>
</StandardsDefinitions>
<Product>
<PartSet n="1">
<Part id="1" label=" QIF Widget"/>
</PartSet>
</Product>
<Characteristics>
<FormalStandardId>10</FormalStandardId>
<CharacteristicDefinitions n="1">
<DiameterCharacteristicDefinition id="2">
<Name>Diameter #1</Name>
<Tolerance>
<MaxValue>2.200</MaxValue>
<MinValue>1.800</MinValue>
<DefinedAsLimit>true</DefinedAsLimit>
</Tolerance>
</DiameterCharacteristicDefinition>
</CharacteristicDefinitions>
<CharacteristicNominals n="1">
<DiameterCharacteristicNominal id="3">
<CharacteristicDefinitionId>2</CharacteristicDefinitionId>
<TargetValue>2.000</TargetValue>
</DiameterCharacteristicNominal>
</CharacteristicNominals>
<CharacteristicItems n="1">
<DiameterCharacteristicItem id="4">
<Name>Diameter #1</Name>
<CharacteristicNominalId>3</CharacteristicNominalId>
</DiameterCharacteristicItem>
</CharacteristicItems>
</Characteristics>
<Results>
<MeasurementResultsSet n="2">
<MeasurementResults id="5">
<MeasuredCharacteristics>
<CharacteristicMeasurements n="1">
<DiameterCharacteristicMeasurement id="6">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>4</CharacteristicItemId>
<Value>1.987</Value>
</DiameterCharacteristicMeasurement>
</CharacteristicMeasurements>
</MeasuredCharacteristics>
<InspectionStatus>
<InspectionStatusEnum>PASS</InspectionStatusEnum>
</InspectionStatus>
</MeasurementResults>
<MeasurementResults id="7">
<MeasuredCharacteristics>
<CharacteristicMeasurements n="1">
<DiameterCharacteristicMeasurement id="8">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>4</CharacteristicItemId>
<Value>2.123</Value>
</DiameterCharacteristicMeasurement>
</CharacteristicMeasurements>
</MeasuredCharacteristics>
<InspectionStatus>
<InspectionStatusEnum>PASS</InspectionStatusEnum>
</InspectionStatus>
</MeasurementResults>
</MeasurementResultsSet>
</Results>
<Statistics>
<StatisticalStudiesResults n="1">
<SimpleStudyResults id="9">
<Status>
<StatsEvalStatusEnum>INFORMATIONAL</StatsEvalStatusEnum>
</Status>
<CharacteristicsStats n="1">
<DiameterCharacteristicStats>
<MeasuredIds>
<Ids n="2">
<Id>6</Id>
<Id>8</Id>
</Ids>
</MeasuredIds>
<Status>
<StatsEvalStatusEnum>INFORMATIONAL</StatsEvalStatusEnum>
</Status>
<ValueStats>
<TotalNumber>
<Value>2</Value>
</TotalNumber>
<NumberSubgroups>
<Value>2</Value>
</NumberSubgroups>
<Maximum>
<Value>2.123</Value>
</Maximum>
<Minimum>
<Value>1.987</Value>
</Minimum>
<Range>
<Value>0.002</Value>
</Range>
<NumberOutOfTolerance>
<Value>0</Value>
</NumberOutOfTolerance>
<Cpk>
<Value>0.553</Value>
</Cpk>
<Ppk>
<Value>0.401</Value>
</Ppk>
</ValueStats>
</DiameterCharacteristicStats>
</CharacteristicsStats>
<NumberOfSamples>2</NumberOfSamples>
</SimpleStudyResults>
</StatisticalStudiesResults>
</Statistics>
</QIFDocument>
The following QIF document structure is an example that contains three QIF
MeasurementResults blocks for attribute inspection of the QIF Widget (e.g. scratches):
</Attributes>
<Name>Scratched</Name>
<CharacteristicNominalId>3</CharacteristicNominalId>
</UserDefinedAttributeCharacteristicItem>
</CharacteristicItems>
</Characteristics>
<Results>
<MeasurementResultsSet n="3">
<MeasurementResults id="5">
<ThisResultsInstanceQPId>
fd43400a-29bf-4ec6-b96c-e2f846eb6ff7
</ThisResultsInstanceQPId>
<MeasuredCharacteristics>
<CharacteristicMeasurements n="1">
<UserDefinedAttributeCharacteristicMeasurement id="6">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>4</CharacteristicItemId>
<Value>0</Value>
</UserDefinedAttributeCharacteristicMeasurement>
</CharacteristicMeasurements>
</MeasuredCharacteristics>
<InspectionStatus>
<InspectionStatusEnum>PASS</InspectionStatusEnum>
</InspectionStatus>
</MeasurementResults>
<MeasurementResults id="7">
<ThisResultsInstanceQPId>
6eccd072-fbac-11e3-a3ac-0800200c9a66
</ThisResultsInstanceQPId>
<MeasuredCharacteristics>
<CharacteristicMeasurements n="1">
<UserDefinedAttributeCharacteristicMeasurement id="8">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>4</CharacteristicItemId>
<Value>0</Value>
</UserDefinedAttributeCharacteristicMeasurement>
</CharacteristicMeasurements>
</MeasuredCharacteristics>
<InspectionStatus>
<InspectionStatusEnum>PASS</InspectionStatusEnum>
</InspectionStatus>
</MeasurementResults>
<MeasurementResults id="9">
<ThisResultsInstanceQPId>
b3e4acb3-1b7e-4039-9154-9490ae1ec56f
</ThisResultsInstanceQPId>
<MeasuredCharacteristics>
<CharacteristicMeasurements n="1">
<UserDefinedAttributeCharacteristicMeasurement id="10">
<Status>
<CharacteristicStatusEnum>FAIL</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>4</CharacteristicItemId>
<Value>1</Value>
</UserDefinedAttributeCharacteristicMeasurement>
</CharacteristicMeasurements>
</MeasuredCharacteristics>
<InspectionStatus>
<InspectionStatusEnum>FAIL</InspectionStatusEnum>
</InspectionStatus>
</MeasurementResults>
</MeasurementResultsSet>
</Results>
<Statistics>
<StatisticalStudiesResults n="1">
<SimpleStudyResults id="11">
<ThisStatisticalStudyResultsInstanceQPId>
fd43400a-29bf-4ec6-b96c-e2f846eb6ff9
</ThisStatisticalStudyResultsInstanceQPId>
<Status>
<StatsEvalStatusEnum>INFORMATIONAL</StatsEvalStatusEnum>
</Status>
<CharacteristicsStats n="1">
<UserDefinedAttributeCharacteristicStats>
<MeasuredIds>
<Ids n="3">
<Id>6</Id>
<Id>8</Id>
<Id>10</Id>
</Ids>
</MeasuredIds>
<Status>
<StatsEvalStatusEnum>INFORMATIONAL</StatsEvalStatusEnum>
</Status>
<AttributeStats>
<TotalNumber>3</TotalNumber>
<FailurePercentage>33</FailurePercentage>
</AttributeStats>
</UserDefinedAttributeCharacteristicStats>
</CharacteristicsStats>
<NumberOfSamples>3</NumberOfSamples>
<SubgroupSize>1</SubgroupSize>
</SimpleStudyResults>
</StatisticalStudiesResults>
</Statistics>
</QIFDocument>
This subclause describes in detail typical examples for implementation of QIF Statistics XML
files that carry information from these different quality study types.
The following QIF Document structure represents a sample first article inspection for two
diameters on a widget.
</Attributes>
<ModelNumber>9876543</ModelNumber>
<DefinitionExternal n="1" id="2">
<PrintedDrawing id="3">
<Name>Widget Drawing</Name>
<Version>2</Version>
<Description>Widget Drawing rev02</Description>
<DrawingNumber>12345</DrawingNumber>
<Location>Engineering</Location>
</PrintedDrawing>
</DefinitionExternal>
</Part>
</PartSet>
</Product>
<Characteristics>
<FormalStandardId>19</FormalStandardId>
<CharacteristicDefinitions n="2">
<DiameterCharacteristicDefinition id="4">
<Name>Diameter #1</Name>
<Tolerance>
<MaxValue>2.200</MaxValue>
<MinValue>1.800</MinValue>
<DefinedAsLimit>false</DefinedAsLimit>
</Tolerance>
</DiameterCharacteristicDefinition>
<DiameterCharacteristicDefinition id="5">
<Name>Diameter #2</Name>
<Tolerance>
<MaxValue>3.200</MaxValue>
<MinValue>2.800</MinValue>
<DefinedAsLimit>false</DefinedAsLimit>
</Tolerance>
</DiameterCharacteristicDefinition>
</CharacteristicDefinitions>
<CharacteristicNominals n="2">
<DiameterCharacteristicNominal id="6">
<CharacteristicDefinitionId>4</CharacteristicDefinitionId>
<TargetValue>2.000</TargetValue>
</DiameterCharacteristicNominal>
<DiameterCharacteristicNominal id="7">
<CharacteristicDefinitionId>5</CharacteristicDefinitionId>
<TargetValue>3.000</TargetValue>
</DiameterCharacteristicNominal>
</CharacteristicNominals>
<CharacteristicItems n="2">
<DiameterCharacteristicItem id="8">
<Name>Diameter #1</Name>
<KeyCharacteristic>
<Designator>C</Designator>
</KeyCharacteristic>
<CharacteristicNominalId>6</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>3</DrawingId>
<SheetNumber>1</SheetNumber>
<DrawingZone>A</DrawingZone>
</LocationOnDrawing>
</DiameterCharacteristicItem>
<DiameterCharacteristicItem id="9">
<Attributes n="1">
<AttributeQPId name="qpid">
<Value>6eccd077-fbac-11e3-a3ac-0800200c9a66</Value>
</AttributeQPId>
</Attributes>
<Name>Diameter #2</Name>
<KeyCharacteristic>
<Designator>C</Designator>
</KeyCharacteristic>
<CharacteristicNominalId>7</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>3</DrawingId>
<SheetNumber>1</SheetNumber>
<DrawingZone>A</DrawingZone>
</LocationOnDrawing>
</DiameterCharacteristicItem>
</CharacteristicItems>
</Characteristics>
<Results>
<MeasurementResultsSet n="2">
<MeasurementResults id="10">
<ThisResultsInstanceQPId>
6eccd078-fbac-11e3-a3ac-0800200c9a66
</ThisResultsInstanceQPId>
<MeasuredCharacteristics>
<CharacteristicMeasurements n="1">
<DiameterCharacteristicMeasurement id="11">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>8</CharacteristicItemId>
<ManufacturingProcessId>17</ManufacturingProcessId>
<NonConformanceDesignator>0</NonConformanceDesignator>
<Value>2.001</Value>
</DiameterCharacteristicMeasurement>
</CharacteristicMeasurements>
</MeasuredCharacteristics>
<InspectionStatus>
<InspectionStatusEnum>PASS</InspectionStatusEnum>
</InspectionStatus>
<ActualComponentIds n="1">
<Id>14</Id>
</ActualComponentIds>
</MeasurementResults>
<MeasurementResults id="12">
<ThisResultsInstanceQPId>
6eccd079-fbac-11e3-a3ac-0800200c9a66
</ThisResultsInstanceQPId>
<MeasuredCharacteristics>
<CharacteristicMeasurements n="1">
<DiameterCharacteristicMeasurement id="13">
<Status>
<CharacteristicStatusEnum>FAIL</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>9</CharacteristicItemId>
<ManufacturingProcessId>18</ManufacturingProcessId>
<NonConformanceDesignator>1</NonConformanceDesignator>
<Value>3.234</Value>
</DiameterCharacteristicMeasurement>
</CharacteristicMeasurements>
</MeasuredCharacteristics>
<InspectionStatus>
<InspectionStatusEnum>FAIL</InspectionStatusEnum>
</InspectionStatus>
<ActualComponentIds n="1">
<Id>14</Id>
</ActualComponentIds>
</MeasurementResults>
</MeasurementResultsSet>
<ActualComponentSets n="1">
<ActualComponentSet n="1">
<ActualComponent id="14">
<SerialNumber>1ABC-DEFG</SerialNumber>
<Status>
<InspectionStatusEnum>PASS</InspectionStatusEnum>
</Status>
</ActualComponent>
</ActualComponentSet>
</ActualComponentSets>
</Results>
<Statistics>
<StatisticalStudiesResults n="1">
<FirstArticleStudyResults id="15">
<ThisStatisticalStudyResultsInstanceQPId>
4aa329b6-fbbb-11e3-a3ac-0800200c9a66
</ThisStatisticalStudyResultsInstanceQPId>
<Status>
<StatsEvalStatusEnum>FAIL</StatsEvalStatusEnum>
</Status>
<InspectionTraceability>
<InspectingOrganization>
<Name>Supplier Corporation, Inc.</Name>
<Address>
<StreetNumber>1234</StreetNumber>
<Street>Main Street</Street>
<Town>Anywhere</Town>
<PostalCode>90120</PostalCode>
<Country>USA</Country>
</Address>
</InspectingOrganization>
<CustomerOrganization>
<Name>Customer Corporation, Inc.</Name>
<Address>
<StreetNumber>4321</StreetNumber>
<Street>Tower Street</Street>
<Town>Somewhere</Town>
<PostalCode>012345</PostalCode>
<Country>USA</Country>
</Address>
<CustomerNumber>0001-0000</CustomerNumber>
</CustomerOrganization>
<PurchaseOrderNumber>1</PurchaseOrderNumber>
<ReportNumber>0001-00002</ReportNumber>
<InspectionStart>2014-06-03T13:47:30Z</InspectionStart>
<ReportPreparer>
<Name>John Smith</Name>
</ReportPreparer>
<ReportPreparationDate>2014-06-03T13:47:30Z</ReportPreparationDate>
<PlantLocation id="16">
<LocationDescription>QA</LocationDescription>
<Address>
<TelephoneNumber>800-555-1212</TelephoneNumber>
<ElectronicMailAddress>
john.smith@supplier.com
</ElectronicMailAddress>
</Address>
</PlantLocation>
</InspectionTraceability>
<InSpecRatio>0.5</InSpecRatio>
</FirstArticleStudyResults>
</StatisticalStudiesResults>
</Statistics>
<ManufacturingProcessTraceabilities n="2">
<ManufacturingProcessTraceability id="17">
<Description>CNC Machining</Description>
<MachineManufacturerName>MC Hammer</MachineManufacturerName>
<MachineIdentifier>214-West</MachineIdentifier>
<Shift>1</Shift>
<Department>Mill</Department>
<PlantSector>West Building</PlantSector>
<ProcessParameters n="1">
<Parameter>
<ParameterType>Drill</ParameterType>
<ParameterValue>Tool # 1</ParameterValue>
</Parameter>
</ProcessParameters>
</ManufacturingProcessTraceability>
<ManufacturingProcessTraceability id="18">
<Description>CNC Machining</Description>
<MachineManufacturerName>MC Hammer</MachineManufacturerName>
<MachineIdentifier>214-West</MachineIdentifier>
<Shift>1</Shift>
<Department>Mill</Department>
<PlantSector>West Building</PlantSector>
<ProcessParameters n="1">
<Parameter>
<ParameterType>Drill</ParameterType>
<ParameterValue>Tool # 2</ParameterValue>
</Parameter>
</ProcessParameters>
</ManufacturingProcessTraceability>
</ManufacturingProcessTraceabilities>
</QIFDocument>
A Process Capability study is typically derived from 20-30 samples from an initial launch from a
production line. It is also used when a manufacturing process has been changed or adjusted.
The following QIF document structure represents a 30 piece capability study for a single
diameter that has a sample size of 3 for a total of 10 subgroups. The Statistical plan and results
are identified and referenced at the bottom of the sample. Note: Measurement blocks have been
removed in the middle to save space.
<?xml version="1.0"?>
<QIFDocument
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://qifstandards.org/xsd/qif3"
versionQIF=“3.0.0”
idMax="108"
xsi:schemaLocation="http://qifstandards.org/xsd/qif3
../QIFApplications/QIFDocument.xsd">
<QPId>3030ba85-2cb7-454d-8905-0016e58ca4df</QPId>
<StandardsDefinitions n="1">
<Standard id="108">
<Organization>
<StandardsOrganizationEnum>ASME</StandardsOrganizationEnum>
</Organization>
<Designator>Y14.5</Designator>
<Year>2009</Year>
</Standard>
</StandardsDefinitions>
<MeasurementResources>
<MeasurementDevices n="1">
<Caliper id="1">
<Name>500-171-30</Name>
<Description>Mitutoyo 6 inch Caliper</Description>
<Manufacturer>Mitutoyo</Manufacturer>
<SerialNumber>1234-5678</SerialNumber>
<LinearResolution>
<LinearValue>0.0005</LinearValue>
</LinearResolution>
<Accuracy>
<EnvironmentalRange></EnvironmentalRange>
<AccuracyValue>0.001</AccuracyValue>
</Accuracy>
</Caliper>
</MeasurementDevices>
</MeasurementResources>
<Product>
<PartSet n="1">
<Part id="2" label="Widget">
<Attributes n="1">
<AttributeQPId name="qpid">
<Value>ed43400a-29bf-4ec6-b96c-e2f846eb6f00</Value>
</AttributeQPId>
</Attributes>
</Part>
</PartSet>
<RootPart>
<Id>2</Id>
</RootPart>
</Product>
<Characteristics>
<FormalStandardId>108</FormalStandardId>
<CharacteristicDefinitions n="1">
<DiameterCharacteristicDefinition id="3">
<Name>Diameter_2.000</Name>
<Tolerance>
<MaxValue>2.200</MaxValue>
<MinValue>1.800</MinValue>
<DefinedAsLimit>false</DefinedAsLimit>
</Tolerance>
</DiameterCharacteristicDefinition>
</CharacteristicDefinitions>
<CharacteristicNominals n="1">
<DiameterCharacteristicNominal id="4">
<CharacteristicDefinitionId>3</CharacteristicDefinitionId>
<TargetValue>2.000</TargetValue>
</DiameterCharacteristicNominal>
</CharacteristicNominals>
<CharacteristicItems n="1">
<DiameterCharacteristicItem id="5">
<Name>Top_Diameter_2.000</Name>
<MeasurementDeviceIds n="1">
<Id>1</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>4</CharacteristicNominalId>
</DiameterCharacteristicItem>
</CharacteristicItems>
</Characteristics>
<Results>
<MeasurementResultsSet n="30">
<MeasurementResults id="6">
<MeasuredCharacteristics>
<CharacteristicMeasurements n="1">
<DiameterCharacteristicMeasurement id="7">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>5</CharacteristicItemId>
<Value>2.001</Value>
</DiameterCharacteristicMeasurement>
</CharacteristicMeasurements>
</MeasuredCharacteristics>
<InspectionStatus>
<InspectionStatusEnum>PASS</InspectionStatusEnum>
</InspectionStatus>
<ActualComponentIds n="1">
<Id>66</Id>
</ActualComponentIds>
</MeasurementResults>
*** (28 other MeasurementResults elements)
<MeasurementResults id="64">
<MeasuredCharacteristics>
<CharacteristicMeasurements n="1">
<DiameterCharacteristicMeasurement id="65">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>5</CharacteristicItemId>
<Value>2.000</Value>
</DiameterCharacteristicMeasurement>
</CharacteristicMeasurements>
</MeasuredCharacteristics>
<InspectionStatus>
<InspectionStatusEnum>PASS</InspectionStatusEnum>
</InspectionStatus>
<ActualComponentIds n="1">
<Id>95</Id>
</ActualComponentIds>
</MeasurementResults>
</MeasurementResultsSet>
<ActualComponentSets n="30">
<ActualComponentSet n="1">
<ActualComponent id="66">
<SerialNumber>1ABC-DEFG</SerialNumber>
<Status>
<InspectionStatusEnum>PASS</InspectionStatusEnum>
</Status>
</ActualComponent>
</ActualComponentSet>
*** (28 other ActualComponentSet elements)
<ActualComponentSet n="1">
<ActualComponent id="95">
<SerialNumber>30ABC-DEFG</SerialNumber>
<Status>
<InspectionStatusEnum>PASS</InspectionStatusEnum>
</Status>
</ActualComponent>
</ActualComponentSet>
</ActualComponentSets>
</Results>
<Statistics>
<StatisticalStudyPlans n="1">
<CapabilityStudyPlan id="96">
<Version>
<ThisInstanceQPId>
4aa329b4-fbbb-11e3-a3ac-0800200c9a66
</ThisInstanceQPId>
</Version>
<NumberOfSamples>10</NumberOfSamples>
<CpkThreshold>
<Limit>1.33</Limit>
</CpkThreshold>
</CapabilityStudyPlan>
</StatisticalStudyPlans>
<StatisticalStudiesResults n="1">
<CapabilityStudyResults id="97">
<ThisStatisticalStudyResultsInstanceQPId>
f77ac48c-5071-44f7-9e6b-3e8972639686
</ThisStatisticalStudyResultsInstanceQPId>
<Status>
<StatsEvalStatusEnum>INFORMATIONAL</StatsEvalStatusEnum>
</Status>
<CharacteristicsStats n="1">
<DiameterCharacteristicStats>
<Subgroups n="10">
<Subgroup id="98">
<MeasuredIds>
<Ids n="3">
<Id>7</Id>
<Id>9</Id>
<Id>11</Id>
</Ids>
</MeasuredIds>
</Subgroup>
*** (8 other Subgroup elements)
<Subgroup id="107">
<MeasuredIds>
<Ids n="3">
<Id>61</Id>
<Id>63</Id>
<Id>65</Id>
</Ids>
</MeasuredIds>
</Subgroup>
</Subgroups>
<Status>
<StatsEvalStatusEnum>INFORMATIONAL</StatsEvalStatusEnum>
</Status>
<ValueStats>
<TotalNumber>
<Value>30</Value>
</TotalNumber>
<NumberSubgroups>
<Value>10</Value>
</NumberSubgroups>
<Average>
<Value>1.984466667</Value>
</Average>
<Maximum>
<Value>2.156</Value>
</Maximum>
<Minimum>
<Value>1.764</Value>
</Minimum>
<StandardDeviation>
<Value>0.078690898</Value>
</StandardDeviation>
<NumberOutOfTolerance>
<Value>1</Value>
</NumberOutOfTolerance>
<Cp>
<Value>1.678</Value>
</Cp>
<Cpk>
<Value>1.345</Value>
</Cpk>
</ValueStats>
</DiameterCharacteristicStats>
</CharacteristicsStats>
<NumberOfSamples>10</NumberOfSamples>
</CapabilityStudyResults>
</StatisticalStudiesResults>
</Statistics>
</QIFDocument>
The following QIF document structure is an example that represents a 30 piece production
study for a single diameter that has a sample size of 3 for a total of 10 subgroups. This sample
also provides the application of Serial Number assigned to each inspected part. Assignable
Causes and Corrective Action are also identified (associated as a Study Issue with Subgroup Id
#3). The Statistical results are identified and referenced at the bottom of the sample. Note:
Measurement and Serialization blocks have been removed in the middle to save space.
<?xml version="1.0"?>
<QIFDocument
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://qifstandards.org/xsd/qif3"
versionQIF=“3.0.0”
idMax="113"
xsi:schemaLocation=
"http://qifstandards.org/xsd/qif3 ../QIFApplications/QIFDocument.xsd">
<QPId>d057f71b-ebaa-4bfd-9fb0-3e5dabf3f9fe</QPId>
<StandardsDefinitions n="1">
<Standard id="113">
<Organization>
<StandardsOrganizationEnum>ASME</StandardsOrganizationEnum>
</Organization>
<Designator>Y14.5</Designator>
<Year>2009</Year>
</Standard>
</StandardsDefinitions>
<MeasurementResources>
<MeasurementDevices n="1">
<Caliper id="1">
<Name>500-171-30</Name>
<Description>Mitutoyo 6 inch Caliper</Description>
<Manufacturer>Mitutoyo</Manufacturer>
<SerialNumber>1234-5678</SerialNumber>
<LinearResolution>
<LinearValue>.0005</LinearValue>
</LinearResolution>
<Accuracy>
<EnvironmentalRange>
<MaxAmbientTemperature>22</MaxAmbientTemperature>
</EnvironmentalRange>
<AccuracyValue>0.001</AccuracyValue>
</Accuracy>
</Caliper>
</MeasurementDevices>
</MeasurementResources>
<Product>
<PartSet n="1">
<Part id="2" label="Widget">
<Attributes n="1">
<AttributeQPId name="qpid">
<Value>ed43400a-29bf-4ec6-b96c-e2f846eb6f00</Value>
</AttributeQPId>
</Attributes>
</Part>
</PartSet>
<RootPart>
<Id>2</Id>
</RootPart>
</Product>
<Characteristics>
<FormalStandardId>113</FormalStandardId>
<CharacteristicDefinitions n="1">
<DiameterCharacteristicDefinition id="3">
<Name>Diameter_2.000</Name>
<Tolerance>
<MaxValue>2.200</MaxValue>
<MinValue>1.800</MinValue>
<DefinedAsLimit>false</DefinedAsLimit>
</Tolerance>
</DiameterCharacteristicDefinition>
</CharacteristicDefinitions>
<CharacteristicNominals n="1">
<DiameterCharacteristicNominal id="4">
<CharacteristicDefinitionId>3</CharacteristicDefinitionId>
<TargetValue>2.000</TargetValue>
</DiameterCharacteristicNominal>
</CharacteristicNominals>
<CharacteristicItems n="1">
<DiameterCharacteristicItem id="5">
<Name>Top_Diameter_2.000</Name>
<MeasurementDeviceIds n="1">
<Id>1</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>4</CharacteristicNominalId>
</DiameterCharacteristicItem>
</CharacteristicItems>
</Characteristics>
<Results>
<MeasurementResultsSet n="30">
<MeasurementResults id="6">
<MeasuredCharacteristics>
<CharacteristicMeasurements n="1">
<DiameterCharacteristicMeasurement id="7">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>5</CharacteristicItemId>
<Value>2.001</Value>
</DiameterCharacteristicMeasurement>
</CharacteristicMeasurements>
</MeasuredCharacteristics>
<InspectionStatus>
<InspectionStatusEnum>PASS</InspectionStatusEnum>
</InspectionStatus>
<ActualComponentIds n="1">
<Id>66</Id>
</ActualComponentIds>
</MeasurementResults>
*** (28 other MeasurementResults elements)
<MeasurementResults id="64">
<MeasuredCharacteristics>
<CharacteristicMeasurements n="1">
<DiameterCharacteristicMeasurement id="65">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>5</CharacteristicItemId>
<Value>2.000</Value>
</DiameterCharacteristicMeasurement>
</CharacteristicMeasurements>
</MeasuredCharacteristics>
<InspectionStatus>
<InspectionStatusEnum>PASS</InspectionStatusEnum>
</InspectionStatus>
<ActualComponentIds n="1">
<Id>95</Id>
</ActualComponentIds>
</MeasurementResults>
</MeasurementResultsSet>
<ActualComponentSets n="30">
<ActualComponentSet n="1">
<ActualComponent id="66">
<SerialNumber>1ABC-DEFG</SerialNumber>
<Status>
<InspectionStatusEnum>PASS</InspectionStatusEnum>
</Status>
</ActualComponent>
</ActualComponentSet>
*** (28 other ActualComponentSet elements)
<ActualComponentSet n="1">
<ActualComponent id="95">
<SerialNumber>30ABC-DEFG</SerialNumber>
<Status>
<InspectionStatusEnum>PASS</InspectionStatusEnum>
</Status>
</ActualComponent>
</ActualComponentSet>
</ActualComponentSets>
</Results>
<Statistics>
<StatisticalStudyPlans n="1">
<CapabilityStudyPlan id="96">
<Version>
<ThisInstanceQPId>
4aa329b2-fbbb-11e3-a3ac-0800200c9a66
</ThisInstanceQPId>
</Version>
<NumberOfSamples>10</NumberOfSamples>
<CpkThreshold>
<Limit>1.33</Limit>
</CpkThreshold>
</CapabilityStudyPlan>
</StatisticalStudyPlans>
<StatisticalStudiesResults n="1">
<CapabilityStudyResults id="97">
<ThisStatisticalStudyResultsInstanceQPId>
4aa329b3-fbbb-11e3-a3ac-0800200c9a66
</ThisStatisticalStudyResultsInstanceQPId>
<Status>
<StatsEvalStatusEnum>INFORMATIONAL</StatsEvalStatusEnum>
</Status>
<CharacteristicsStats n="1">
<DiameterCharacteristicStats>
<Subgroups n="10">
<Subgroup id="98">
<MeasuredIds>
<Ids n="3">
<Id>7</Id>
<Id>9</Id>
<Id>11</Id>
</Ids>
</MeasuredIds>
</Subgroup>
*** (8 other Subgroup elements)
<Subgroup id="107">
<MeasuredIds>
<Ids n="3">
<Id>61</Id>
<Id>63</Id>
<Id>65</Id>
</Ids>
</MeasuredIds>
</Subgroup>
</Subgroups>
<Status>
<StatsEvalStatusEnum>INFORMATIONAL</StatsEvalStatusEnum>
</Status>
<StudyIssues n="1">
<StudyIssue id="108">
<AssignableCauseIds n="1">
<Id>110</Id>
</AssignableCauseIds>
<CorrectiveActionIds n="2" >
<Id>111</Id>
<Id>112</Id>
</CorrectiveActionIds>
<SubgroupIds n="1">
<Id>100</Id>
</SubgroupIds>
</StudyIssue>
</StudyIssues>
<ValueStats>
<TotalNumber>
<Value>30</Value>
</TotalNumber>
<NumberSubgroups>
<Value>10</Value>
</NumberSubgroups>
<Average>
<Value>1.984466667</Value>
</Average>
<Maximum>
<Value>2.156</Value>
</Maximum>
<Minimum>
<Value>1.764</Value>
</Minimum>
<StandardDeviation>
<Value>0.078690898</Value>
</StandardDeviation>
<NumberOutOfTolerance>
<Value>1</Value>
</NumberOutOfTolerance>
<Cp>
<Value>1.678</Value>
</Cp>
<Cpk>
<Value>1.345</Value>
</Cpk>
</ValueStats>
</DiameterCharacteristicStats>
</CharacteristicsStats>
<NumberOfSamples>10</NumberOfSamples>
</CapabilityStudyResults>
</StatisticalStudiesResults>
<CorrectiveActionPlans n="1">
<CorrectiveActionPlan id="109">
<AssignableCauses n="1">
<AssignableCause id="110">
<AssignableCauseEnum>BROKEN_TOOL</AssignableCauseEnum>
<CorrectiveActionIds n="2">
<Id>111</Id>
<Id>112</Id>
</CorrectiveActionIds>
</AssignableCause>
</AssignableCauses>
<CorrectiveActions n="2">
<CorrectiveAction id="111">
<ActionToTake>Scrap Part</ActionToTake>
</CorrectiveAction>
<CorrectiveAction id="112">
<ActionToTake>Call Maintenance</ActionToTake>
</CorrectiveAction>
</CorrectiveActions>
</CorrectiveActionPlan>
</CorrectiveActionPlans>
</Statistics>
</QIFDocument>
Reproducibility is the variation in the average of the measurements made by different appraisers
using the same measuring instrument when measuring identical characteristics on the same
part.
The following QIF document structure is an example that describes a single characteristic from
a Long Form (Average and Range) R&R study with 2 Appraisers, 2 trials and 5 parts that would
result in a total of 20 QIF MeasurementResults blocks (not shown):
<TemperatureUnit>
<UnitName>Fahrenheit</UnitName>
</TemperatureUnit>
</PrimaryUnits>
<OtherUnits n="1">
<LinearUnit>
<UnitName>mm</UnitName>
</LinearUnit>
</OtherUnits>
</FileUnits>
<MeasurementResources>
<MeasurementDevices n="1">
<ManualMeasurementDevice id="1">
<Name>216-380</Name>
<Description>Digital Tape Measure</Description>
<Manufacturer>Mitutoyo</Manufacturer>
<SerialNumber>1234-5678</SerialNumber>
</ManualMeasurementDevice>
</MeasurementDevices>
</MeasurementResources>
<Product>
<PartSet n="1">
<Part id="2" label="Drum">
<Attributes n="1">
<AttributeQPId name="qpid">
<Value>71cb7514-abf6-4de1-9366-fc7e3db0ad2a</Value>
</AttributeQPId>
</Attributes>
</Part>
</PartSet>
<RootPart>
<Id>2</Id>
</RootPart>
</Product>
<Characteristics>
<FormalStandardId>8</FormalStandardId>
<FormalStandard>
<FormalStandardEnum>ASME-Y14.5-1994</FormalStandardEnum>
</FormalStandard>
<CharacteristicDefinitions n="1">
<UserDefinedLinearCharacteristicDefinition id="3">
<Name>Circumference #1</Name>
<Tolerance>
<MaxValue linearUnit= "inch">75.5</MaxValue>
<MinValue linearUnit= "inch">75.3</MinValue>
<DefinedAsLimit>true</DefinedAsLimit>
</Tolerance>
<WhatToMeasure>measure the circumference of the drum</WhatToMeasure>
</UserDefinedLinearCharacteristicDefinition>
</CharacteristicDefinitions>
<CharacteristicNominals n="1">
<UserDefinedLinearCharacteristicNominal id="4">
<CharacteristicDefinitionId>3</CharacteristicDefinitionId>
<TargetValue linearUnit="inch">75.398</TargetValue>
</UserDefinedLinearCharacteristicNominal>
</CharacteristicNominals>
<CharacteristicItems n="1">
<UserDefinedLinearCharacteristicItem id="5">
<Attributes n="1">
<AttributeQPId name="qpid">
<Value>ed43400a-29bf-4ec6-b96c-e2f846eb6ff7</Value>
</AttributeQPId>
</Attributes>
<Name>Circumference #1</Name>
<MeasurementDeviceIds n="1">
<Id>1</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>4</CharacteristicNominalId>
</UserDefinedLinearCharacteristicItem>
</CharacteristicItems>
</Characteristics>
<Statistics>
<StatisticalStudyPlans n="1">
<GageRandRStudyPlan id="6">
<Version>
<ThisInstanceQPId>
fd43400a-29bf-4ec6-b96c-e2f846eb6ff9
</ThisInstanceQPId>
</Version>
<RandRStudyType>AVGANDRANGE</RandRStudyType>
<NumberOfAppraisers>2</NumberOfAppraisers>
<NumberOfParts>5</NumberOfParts>
<NumberOfTrials>2</NumberOfTrials>
</GageRandRStudyPlan>
</StatisticalStudyPlans>
<StatisticalStudiesResults n="1">
<GageRandRStudyResults id="7">
<ThisStatisticalStudyResultsInstanceQPId>
4aa329b9-fbbb-11e3-a3ac-0800200c9a66
</ThisStatisticalStudyResultsInstanceQPId>
<Status>
<StatsEvalStatusEnum>INFORMATIONAL</StatsEvalStatusEnum>
</Status>
<StudyId>6</StudyId>
<CharacteristicsStats n="1">
<UserDefinedLinearCharacteristicStats>
<Status>
<StatsEvalStatusEnum>INFORMATIONAL</StatsEvalStatusEnum>
</Status>
<ValueStats linearUnit="mm">
<AppraiserVariation>
<Value>2.54</Value>
</AppraiserVariation>
<EquipmentVariation>
<Value>1.85</Value>
</EquipmentVariation>
<GageRandR>
<Value>3.14</Value>
</GageRandR>
<TotalVariation>
<Value>3.81</Value>
</TotalVariation>
</ValueStats>
</UserDefinedLinearCharacteristicStats>
</CharacteristicsStats>
<MeasurementDeviceIds n="1">
<Id>1</Id>
</MeasurementDeviceIds>
<NumberOfAppraisers>2</NumberOfAppraisers>
<NumberOfParts>5</NumberOfParts>
<NumberOfTrials>2</NumberOfTrials>
</GageRandRStudyResults>
</StatisticalStudiesResults>
</Statistics>
</QIFDocument>
1. The units used in the file are identified in the FileUnits section.
2. The measurement device (a digital tape measure) is defined in the
MeasurementResources element
3. The Part id is identified in the Product element.
4. The characteristic name (Circumference #1) and the tolerance are defined in the
CharacteristicDefinitions element.
5. The characteristic target value is defined in the CharacteristicNominals element and
the tolerance is indicated by a reference to the characteristic definition.
6. The characteristic name is further expressed in the CharacteristicItems element with a
reference to the characteristic nominal.
7. The Gage R&R Study parameters for appraisers, parts and trial are defined in the
GageRandRStudyPlan element.
8. The detailed statistical results of the R&R study are defined in the
GageRandRStudyResults element, including reference to the measurement device.
The following QIF document structure is an example that contains two QIF
MeasurementResults blocks and one QIF Statistics in one XML file for a typical Gage Stability
study:
<QIFDocument xmlns="http://qifstandards.org/xsd/qif3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" versionQIF=“3.0.0”
idMax=“10” xsi:schemaLocation= "http://qifstandards.org/xsd/qif3
../Applications/QIFDocument.xsd">
<QPId>b366baab-82fc-49eb-b3da-4fd81e410976</QPId>
<StandardsDefinitions n="1">
<Standard id="10">
<Organization>
<StandardsOrganizationEnum>ASME</StandardsOrganizationEnum>
</Organization>
<Designator>Y14.5</Designator>
<Year>2009</Year>
</Standard>
</StandardsDefinitions>
<MeasurementResources>
<MeasurementDevices n="1">
<Caliper id="1">
<Name>500-171-30</Name>
<Description>6 inch Caliper</Description>
<Manufacturer>Gage Manufacturer</Manufacturer>
<SerialNumber>1234-5678</SerialNumber>
<LinearResolution>
<LinearValue>.0005</LinearValue>
</LinearResolution>
<Accuracy>
<EnvironmentalRange></EnvironmentalRange>
<AccuracyValue>.001</AccuracyValue>
</Accuracy>
</Caliper>
</MeasurementDevices>
</MeasurementResources>
<Characteristics>
<FormalStandardId>10</FormalStandardId>
<CharacteristicDefinitions n="1">
<DiameterCharacteristicDefinition id="2">
<Name>Diameter_2.000</Name>
<Tolerance>
<MaxValue>2.200</MaxValue>
<MinValue>1.800</MinValue>
<DefinedAsLimit>true</DefinedAsLimit>
</Tolerance>
</DiameterCharacteristicDefinition>
</CharacteristicDefinitions>
<CharacteristicNominals n="1">
<DiameterCharacteristicNominal id="3">
<CharacteristicDefinitionId>2</CharacteristicDefinitionId>
<TargetValue>2.000</TargetValue>
</DiameterCharacteristicNominal>
</CharacteristicNominals>
<CharacteristicItems n="1">
<DiameterCharacteristicItem id="4">
<Name>Top_Diameter_2.000</Name>
<MeasurementDeviceIds n="1">
<Id>1</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>3</CharacteristicNominalId>
</DiameterCharacteristicItem>
</CharacteristicItems>
</Characteristics>
<Results>
<MeasurementResultsSet n="1">
<MeasurementResults id="5">
<InspectionTraceability>
<InspectionStart>2014-06-19T19:12:32Z</InspectionStart>
</InspectionTraceability>
<MeasuredCharacteristics>
<CharacteristicMeasurements n="1">
<DiameterCharacteristicMeasurement id="6">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>4</CharacteristicItemId>
<Value>2.001</Value>
</DiameterCharacteristicMeasurement>
</CharacteristicMeasurements>
</MeasuredCharacteristics>
<InspectionStatus>
<InspectionStatusEnum>PASS</InspectionStatusEnum>
</InspectionStatus>
</MeasurementResults>
<MeasurementResults id="7">
<InspectionTraceability>
<InspectionStart>2014-06-26T12:40:32Z</InspectionStart>
</InspectionTraceability>
<MeasuredCharacteristics>
<CharacteristicMeasurements n="1">
<DiameterCharacteristicMeasurement id="8">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>4</CharacteristicItemId>
<Value>1.999</Value>
</DiameterCharacteristicMeasurement>
</CharacteristicMeasurements>
</MeasuredCharacteristics>
<InspectionStatus>
<InspectionStatusEnum>PASS</InspectionStatusEnum>
</InspectionStatus>
</MeasurementResults>
</MeasurementResultsSet>
</Results>
<Statistics>
<StatisticalStudiesResults n="1">
<StabilityStudyResults id="9">
<Status>
<StatsEvalStatusEnum>INFORMATIONAL</StatsEvalStatusEnum>
</Status>
<CharacteristicsStats n="1">
<DiameterCharacteristicStats>
<MeasuredIds>
<Ids n="2">
<Id>6</Id>
<Id>8</Id>
</Ids>
</MeasuredIds>
<Status>
<StatsEvalStatusEnum>INFORMATIONAL</StatsEvalStatusEnum>
</Status>
<ValueStats>
<Average>
<Value>2.000</Value>
</Average>
<Maximum>
<Value>2.001</Value>
</Maximum>
<Minimum>
<Value>1.999</Value>
</Minimum>
<StandardDeviation>
<Value>0.0014</Value>
</StandardDeviation>
</ValueStats>
</DiameterCharacteristicStats>
</CharacteristicsStats>
<MeasurementDeviceIds>
<Id>1</Id>
</MeasurementDeviceIds>
</StabilityStudyResults>
</StatisticalStudiesResults>
</Statistics>
</QIFDocument>
The following QIFDocument structure is an example that contains a Statistics element for a
typical Gage Linearity study:
<Designator>Y14.5</Designator>
<Year>2009</Year>
</Standard>
</StandardsDefinitions>
<MeasurementResources>
<MeasurementDevices n="1">
<Caliper id="1">
<Name>500-196-30</Name>
<Description>Digital Caliper</Description>
<Manufacturer>Mitutoyo</Manufacturer>
<SerialNumber>1234-5678</SerialNumber>
<LinearResolution>
<LinearValue>.0005</LinearValue>
</LinearResolution>
<Accuracy>
<EnvironmentalRange></EnvironmentalRange>
<AccuracyValue>.001</AccuracyValue>
</Accuracy>
</Caliper>
</MeasurementDevices>
</MeasurementResources>
<Characteristics>
<FormalStandardId>16</FormalStandardId>
<CharacteristicDefinitions n="3">
<LengthCharacteristicDefinition id="2">
<Name>1 inch Ceramic Gage Block</Name>
<Tolerance>
<MaxValue>1.00000012</MaxValue>
<MinValue>0.99999988</MinValue>
<DefinedAsLimit>false</DefinedAsLimit>
</Tolerance>
</LengthCharacteristicDefinition>
<LengthCharacteristicDefinition id="3">
<Name>3 inch Ceramic Gage Block</Name>
<Tolerance>
<MaxValue>3.00000012</MaxValue>
<MinValue>2.99999988</MinValue>
<DefinedAsLimit>false</DefinedAsLimit>
</Tolerance>
</LengthCharacteristicDefinition>
<LengthCharacteristicDefinition id="4">
<Name>5 inch Ceramic Gage Block</Name>
<Tolerance>
<MaxValue>5.00000012</MaxValue>
<MinValue>4.99999988</MinValue>
<DefinedAsLimit>false</DefinedAsLimit>
</Tolerance>
</LengthCharacteristicDefinition>
</CharacteristicDefinitions>
<CharacteristicNominals n="3">
<LengthCharacteristicNominal id="5">
<CharacteristicDefinitionId>3</CharacteristicDefinitionId>
<TargetValue>1.000000</TargetValue>
</LengthCharacteristicNominal>
<LengthCharacteristicNominal id="6">
<CharacteristicDefinitionId>3</CharacteristicDefinitionId>
<TargetValue>3.000000</TargetValue>
</LengthCharacteristicNominal>
<LengthCharacteristicNominal id="7">
<CharacteristicDefinitionId>4</CharacteristicDefinitionId>
<TargetValue>5.000000</TargetValue>
</LengthCharacteristicNominal>
</CharacteristicNominals>
<CharacteristicItems n="3">
<LengthCharacteristicItem id="8">
<Attributes n="1">
<AttributeQPId name="qpid">
<Value>ed43400a-29bf-4ec6-b96c-e2f846eb6ff7</Value>
</AttributeQPId>
</Attributes>
<Name>1 inch Ceramic Gage Block</Name>
<MeasurementDeviceIds n="1">
<Id>1</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>5</CharacteristicNominalId>
</LengthCharacteristicItem>
<LengthCharacteristicItem id="9">
<Attributes n="1">
<AttributeQPId name="qpid">
<Value>4aa329b0-fbbb-11e3-a3ac-0800200c9a66</Value>
</AttributeQPId>
</Attributes>
<Name>3 inch Ceramic Gage Block</Name>
<MeasurementDeviceIds n="1">
<Id>1</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>6</CharacteristicNominalId>
</LengthCharacteristicItem>
<LengthCharacteristicItem id="10">
<Attributes n="1">
<AttributeQPId name="qpid">
<Value>102a1434-39ba-43d5-81a4-99e60f0ab582</Value>
</AttributeQPId>
</Attributes>
<Name>5 inch Ceramic Gage Block</Name>
<MeasurementDeviceIds n="1">
<Id>1</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>7</CharacteristicNominalId>
</LengthCharacteristicItem>
</CharacteristicItems>
</Characteristics>
<Results>
<MeasurementResultsSet n="1">
<MeasurementResults id="11">
<Attributes n="1">
<AttributeQPId name="qpid">
<Value>5931444d-b651-4360-8368-f26d43b2cd2d</Value>
</AttributeQPId>
</Attributes>
<MeasuredCharacteristics>
<CharacteristicMeasurements n="3">
<LengthCharacteristicMeasurement id="12">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>8</CharacteristicItemId>
<Value>1.00000</Value>
</LengthCharacteristicMeasurement>
<LengthCharacteristicMeasurement id="13">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>9</CharacteristicItemId>
<Value>3.00000</Value>
</LengthCharacteristicMeasurement>
<LengthCharacteristicMeasurement id="14">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>10</CharacteristicItemId>
<Value>5.00000</Value>
</LengthCharacteristicMeasurement>
</CharacteristicMeasurements>
</MeasuredCharacteristics>
<InspectionStatus>
<InspectionStatusEnum>PASS</InspectionStatusEnum>
</InspectionStatus>
</MeasurementResults>
</MeasurementResultsSet>
</Results>
<Statistics>
<StatisticalStudiesResults n="1">
<LinearityStudyResults id="15">
<ThisStatisticalStudyResultsInstanceQPId>
63416e37-347a-4f1e-be6b-63d8d94b9cc6
</ThisStatisticalStudyResultsInstanceQPId>
<Status>
<StatsEvalStatusEnum>INFORMATIONAL</StatsEvalStatusEnum>
</Status>
<CharacteristicsStats n="1">
<LengthCharacteristicStats>
<Status>
<StatsEvalStatusEnum>INFORMATIONAL</StatsEvalStatusEnum>
</Status>
<ValueStats>
<RelativeEquipmentVariation>
<Value>0.000002</Value>
</RelativeEquipmentVariation>
</ValueStats>
</LengthCharacteristicStats>
</CharacteristicsStats>
<SampleSize>3</SampleSize>
</LinearityStudyResults>
</StatisticalStudiesResults>
</Statistics>
</QIFDocument>
<CharacteristicDefinitions n="3">
<LengthCharacteristicDefinition id="2">
<Name>1 inch Ceramic Gage Block</Name>
<Tolerance>
<MaxValue>1.00000012</MaxValue>
<MinValue>0.99999988</MinValue>
<DefinedAsLimit>false</DefinedAsLimit>
</Tolerance>
</LengthCharacteristicDefinition>
<LengthCharacteristicDefinition id="3">
<Name>3 inch Ceramic Gage Block</Name>
<Tolerance>
<MaxValue>3.00000012</MaxValue>
<MinValue>2.99999988</MinValue>
<DefinedAsLimit>false</DefinedAsLimit>
</Tolerance>
</LengthCharacteristicDefinition>
<LengthCharacteristicDefinition id="4">
<Name>5 inch Ceramic Gage Block</Name>
<Tolerance>
<MaxValue>5.00000012</MaxValue>
<MinValue>4.99999988</MinValue>
<DefinedAsLimit>false</DefinedAsLimit>
</Tolerance>
</LengthCharacteristicDefinition>
</CharacteristicDefinitions>
<CharacteristicNominals n="3">
<LengthCharacteristicNominal id="5">
<CharacteristicDefinitionId>2</CharacteristicDefinitionId>
<TargetValue>1.000000</TargetValue>
</LengthCharacteristicNominal>
<LengthCharacteristicNominal id="6">
<CharacteristicDefinitionId>3</CharacteristicDefinitionId>
<TargetValue>3.000000</TargetValue>
</LengthCharacteristicNominal>
<LengthCharacteristicNominal id="7">
<CharacteristicDefinitionId>4</CharacteristicDefinitionId>
<TargetValue>5.000000</TargetValue>
</LengthCharacteristicNominal>
</CharacteristicNominals>
<CharacteristicItems n="3">
<LengthCharacteristicItem id="8">
<Attributes n="1">
<AttributeQPId name="qpid">
<Value>ed43400a-29bf-4ec6-b96c-e2f846eb6ff7</Value>
</AttributeQPId>
</Attributes>
<Name>1 inch Ceramic Gage Block</Name>
<MeasurementDeviceIds n="1">
<Id>1</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>5</CharacteristicNominalId>
</LengthCharacteristicItem>
<LengthCharacteristicItem id="9">
<Attributes n="1">
<AttributeQPId name="qpid">
<Value>6eccd074-fbac-11e3-a3ac-0800200c9a66</Value>
</AttributeQPId>
</Attributes>
<Name>3 inch Ceramic Gage Block</Name>
<MeasurementDeviceIds n="1">
<Id>1</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>6</CharacteristicNominalId>
</LengthCharacteristicItem>
<LengthCharacteristicItem id="10">
<Attributes n="1">
<AttributeQPId name="qpid">
<Value>3e5e4e61-151b-4454-bc47-2f874b4f32b1</Value>
</AttributeQPId>
</Attributes>
<Name>5 inch Ceramic Gage Block</Name>
<MeasurementDeviceIds n="1">
<Id>1</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>7</CharacteristicNominalId>
</LengthCharacteristicItem>
</CharacteristicItems>
</Characteristics>
<Results>
<MeasurementResultsSet n="1">
<MeasurementResults id="11">
<ThisResultsInstanceQPId>
86c01a11-87a1-4bfe-88c7-c3b9b21436d5
</ThisResultsInstanceQPId>
<MeasuredCharacteristics>
<CharacteristicMeasurements n="3">
<LengthCharacteristicMeasurement id="12">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>8</CharacteristicItemId>
<Value>1.00000</Value>
</LengthCharacteristicMeasurement>
<LengthCharacteristicMeasurement id="13">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>9</CharacteristicItemId>
<Value>3.00000</Value>
</LengthCharacteristicMeasurement>
<LengthCharacteristicMeasurement id="14">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>10</CharacteristicItemId>
<Value>5.00000</Value>
</LengthCharacteristicMeasurement>
</CharacteristicMeasurements>
</MeasuredCharacteristics>
<InspectionStatus>
<InspectionStatusEnum>PASS</InspectionStatusEnum>
</InspectionStatus>
</MeasurementResults>
</MeasurementResultsSet>
</Results>
<Statistics>
<StatisticalStudiesResults n="1">
<BiasStudyResults id="15">
<ThisStatisticalStudyResultsInstanceQPId>
fd43400a-29bf-4ec6-b96c-e2f846eb6ff9
</ThisStatisticalStudyResultsInstanceQPId>
<Status>
<StatsEvalStatusEnum>INFORMATIONAL</StatsEvalStatusEnum>
</Status>
<CharacteristicsStats n="1">
<LengthCharacteristicStats>
<Status>
<StatsEvalStatusEnum>INFORMATIONAL</StatsEvalStatusEnum>
</Status>
<ValueStats>
<RelativeEquipmentVariation>
<Value>0.000002</Value>
</RelativeEquipmentVariation>
</ValueStats>
</LengthCharacteristicStats>
</CharacteristicsStats>
<SampleSize>3</SampleSize>
</BiasStudyResults>
</StatisticalStudiesResults>
</Statistics>
</QIFDocument>
This annex describes the graphical conventions used in the QIF data dictionaries. The data
dictionaries describe the structure of the information models and the manufacturing quality
semantics of the data types.
The rules of encoding QIF instance files are primarily defined in the XML schema files, but the
data dictionaries express many of the same requirements via the pictures and table entries.
Data type definitions are indicated by a box with beveled corners on the left side, as in Figure
A.1.
Rectangular boxes indicate data elements. A solid rectangle indicates a required element,
whereas a dotted rectangle indicates an optional element. If an object is not designated
optional, then it is required by default. Small boxes on the right hand end of element boxes,
containing either "-" or "+" are used to indicate one of the following conditions exist:
• A (“+”) indicates that the additional structures or elements below this node have been
hidden in this diagram.
• A (“-“) indicates that additional structures or elements below this node exist and are
visible on the diagram.
The absence of any box at the right hand end of an element box indicates that the type of the
element is a primitive type without any substructure, e.g., xs:decimal. In this case, there will also
be three bars in the upper left corner of the element box. The beveled box with 3 dots on a line
represents the XSDL sequence operator. It indicates that the object to the left is composed of all
of the elements to the right, in that specified order.
Type definitions can be reused to generate data elements, as shown by a yellow box in dotted
lines, with the name of the type definition at the top. Figure A.2 shows that ZonePlane is an
element of type PlaneType.
Figure A.2 Reuse of the type definition PlaneType to generate element ZonePlane.
Figure A.3 contains examples of numerous information modeling notations. Element definitions
in XML schema files can be reused by "reference", indicated by an arrow in the lower left corner
of the ReferencedElement box. Elements may appear in an XML instance document more
than once. Figure A.3. shows the OptionalSubElement notated with two numerals separated
by an ellipsis, "0..3", that indicates the number of occurrences as an inclusive range. The
OptionalSubElement may occur zero, 1, 2, or 3 times as sub-elements of Element1. Where
there is a single cardinality numeral, the element must occur exactly that number of times in the
instance file. For example, the element MultipleOccurrenceElement must occur exactly two
times as sub-elements of Element1. Information items can be instantiated in XSDL as elements
or attributes. An element's attributes are shown in the data dictionaries as solid-lined boxes that
are explicitly labeled attributes, as shown at the top of the diagram.
Figure A.4 shows an example element definition where exactly one of the three sub-element
choices must be given. The beveled box with three square dots and a "switch" line ( )
indicate the XSDL choice structure. When Element2 is instantiated in an XML instance file, it
must have exactly one sub-element chosen among the three sub-elements shown.
The data dictionaries are grouped by XML schema file. It is characteristic of QIF definitions to
use types declared in other XML schema files. The sharing of definitions specified in other files
is indicated by the XML schema file directive include.
Two QIF instance files are included as inline text in this annex. They apply to the sample part
drawing in Figure B.1.
The features and ballooned characteristics called-out in Figure B.1 can be described fully and
unambiguously in a QIF Plan instance file along with other traceability and measurement
information.
File QIF_PLAN_SAMPLE.QIF
<QPId>93faa356-871d-4874-a140-26662e4b83ff</QPId>
<Version>
<TimeCreated>2018-06-25T11:54:21</TimeCreated>
</Version>
<Header>
<Application>
<Name>SOLIDWORKS 2017</Name>
<AddonName>CheckMate 14 for SOLIDWORKS</AddonName>
<AddonOrganization>Origin International Inc.</AddonOrganization>
</Application>
</Header>
<StandardsDefinitions n="1">
<Standard id="70">
<Organization>
<StandardsOrganizationEnum>ASME</StandardsOrganizationEnum>
</Organization>
<Designator>Y14.5</Designator>
<Year>2009</Year>
</Standard>
</StandardsDefinitions>
<PreInspectionTraceability>
<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>support@originintl.com</ElectronicMailAddress>
</Address>
</InspectingOrganization>
<SupplierCode>North_Fab</SupplierCode>
<PurchaseOrderNumber>PO123456</PurchaseOrderNumber>
<AsmPathIds n="1">
<Id>3</Id>
</AsmPathIds>
<ReportNumber>QIF 1</ReportNumber>
<InspectionScope>DETAIL</InspectionScope>
<InspectionMode>FAI_Full</InspectionMode>
<FormalStandardId>70</FormalStandardId>
</PreInspectionTraceability>
<FileUnits>
<PrimaryUnits>
<AngularUnit>
<SIUnitName>radian</SIUnitName>
<UnitName>degree</UnitName>
<UnitConversion>
<Factor>0.017453292519943</Factor>
</UnitConversion>
</AngularUnit>
<LinearUnit>
<SIUnitName>meter</SIUnitName>
<UnitName>mm</UnitName>
<UnitConversion>
<Factor>0.001</Factor>
</UnitConversion>
</LinearUnit>
</PrimaryUnits>
</FileUnits>
<DatumDefinitions n="5">
<DatumDefinition id="42">
<DatumLabel>A</DatumLabel>
</DatumDefinition>
<DatumDefinition id="43">
<DatumLabel>B</DatumLabel>
</DatumDefinition>
<DatumDefinition id="44">
<DatumLabel>C</DatumLabel>
</DatumDefinition>
<DatumDefinition id="57">
<DatumLabel>D</DatumLabel>
</DatumDefinition>
<DatumDefinition id="58">
<DatumLabel>E</DatumLabel>
</DatumDefinition>
</DatumDefinitions>
<DatumReferenceFrames n="3">
<DatumReferenceFrame id="12"/>
<DatumReferenceFrame id="41">
<Datums n="3">
<Datum>
<SimpleDatum>
<DatumDefinitionId>42</DatumDefinitionId>
<MaterialModifier>NONE</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>PRIMARY</PrecedenceEnum>
</Precedence>
</Datum>
<Datum>
<SimpleDatum>
<DatumDefinitionId>43</DatumDefinitionId>
<MaterialModifier>MAXIMUM</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>SECONDARY</PrecedenceEnum>
</Precedence>
</Datum>
<Datum>
<SimpleDatum>
<DatumDefinitionId>44</DatumDefinitionId>
<MaterialModifier>MAXIMUM</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>TERTIARY</PrecedenceEnum>
</Precedence>
</Datum>
</Datums>
</DatumReferenceFrame>
<DatumReferenceFrame id="56">
<Datums n="3">
<Datum>
<SimpleDatum>
<DatumDefinitionId>42</DatumDefinitionId>
<MaterialModifier>NONE</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>PRIMARY</PrecedenceEnum>
</Precedence>
</Datum>
<Datum>
<SimpleDatum>
<DatumDefinitionId>57</DatumDefinitionId>
<MaterialModifier>LEAST</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>SECONDARY</PrecedenceEnum>
</Precedence>
</Datum>
<Datum>
<SimpleDatum>
<DatumDefinitionId>58</DatumDefinitionId>
<MaterialModifier>LEAST</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>TERTIARY</PrecedenceEnum>
</Precedence>
</Datum>
</Datums>
</DatumReferenceFrame>
</DatumReferenceFrames>
<MeasurementResources>
<MeasurementDevices n="3">
<MeasurementDevice id="15">
<Name>CMM</Name>
</MeasurementDevice>
<MeasurementDevice id="47">
<Name>GAGE PINS</Name>
</MeasurementDevice>
<MeasurementDevice id="54">
<Name>CALIPERS</Name>
</MeasurementDevice>
</MeasurementDevices>
</MeasurementResources>
<Product>
<PartSet n="1">
<Part hidden="0" id="1" transparency="0">
<Header>
<Name>WING_MIR_REENF</Name>
<Description>Wing Mirror Re-enforcement</Description>
</Header>
<UUID>fbb01e31-e4b3-4b7f-9fa2-087921f96647</UUID>
<ModelNumber>QM_X_123456</ModelNumber>
<Version>1.02</Version>
<DefinitionExternal id="6" n="2">
<PrintedDrawing id="5">
<Name>sheet2_solid4_2017</Name>
<Version>1.0.0</Version>
<Description>Sample QIF elements</Description>
<DrawingNumber>#1</DrawingNumber>
<AdditionalChanges>none</AdditionalChanges>
<Location>Cabinet 17, Drawer 3</Location>
</PrintedDrawing>
<DigitalModel id="7">
<Name>sheet2_solid4_2017</Name>
<File>
<Name>D:/CM14_Parts/QIF/sheet2_solid4_2017.SLDPRT</Name>
<Format>
<DigitalModelFormatEnum>SOLIDWORKS</DigitalModelFormatEnum>
</Format>
</File>
</DigitalModel>
</DefinitionExternal>
</Part>
</PartSet>
<ComponentSet n="1">
<Component hidden="0" id="2" transparency="0">
<UUID>fd32e995-4b6e-431b-a99a-514750e3b4e5</UUID>
<Part>
<Id>1</Id>
</Part>
</Component>
</ComponentSet>
<AsmPaths n="1">
<AsmPath id="3">
<ComponentIds n="1">
<Id>2</Id>
</ComponentIds>
</AsmPath>
</AsmPaths>
</Product>
<Features>
<FeatureDefinitions n="6">
<EdgePointFeatureDefinition id="8">
<InternalExternal>EXTERNAL</InternalExternal>
</EdgePointFeatureDefinition>
<PointFeatureDefinition id="16"/>
<PointFeatureDefinition id="28"/>
<CircleFeatureDefinition id="34">
<InternalExternal>INTERNAL</InternalExternal>
<Diameter>10</Diameter>
</CircleFeatureDefinition>
<CircleFeatureDefinition id="48">
<InternalExternal>INTERNAL</InternalExternal>
<Diameter>10</Diameter>
</CircleFeatureDefinition>
<CircleFeatureDefinition id="61">
<InternalExternal>NOT_APPLICABLE</InternalExternal>
<Diameter>30</Diameter>
</CircleFeatureDefinition>
</FeatureDefinitions>
<FeatureNominals n="6">
<EdgePointFeatureNominal id="9">
<FeatureDefinitionId>8</FeatureDefinitionId>
<Location>2460.7099609375 770.604614257813
944.993591308594</Location>
<Normal>-0.735465884156764 -0.307902932144901
0.603560864882807</Normal>
<AdjacentNormal>0.0411800179070127 -0.909449806293281 -
0.413769568671128</AdjacentNormal>
</EdgePointFeatureNominal>
<PointFeatureNominal id="17">
<FeatureDefinitionId>16</FeatureDefinitionId>
<Location>2466.72924804688 774.269897460938
945.002746582031</Location>
<Normal>0.731520704665006 0.146124942551001 -
0.665976696147005</Normal>
</PointFeatureNominal>
<PointFeatureNominal id="29">
<FeatureDefinitionId>28</FeatureDefinitionId>
<Location>2536.49487304688 782.806213378906
920.002197265625</Location>
<Normal>-0.760926041022395 -0.648538030188337 -
0.0197479997320103</Normal>
</PointFeatureNominal>
<CircleFeatureNominal id="35">
<FeatureDefinitionId>34</FeatureDefinitionId>
<Location>2433.974609375 800.617431640625
890.049621582031</Location>
<Normal>0.0558150216639719 -0.907624351305543 -
0.41605615038579</Normal>
</CircleFeatureNominal>
<CircleFeatureNominal id="49">
<FeatureDefinitionId>48</FeatureDefinitionId>
<Location>2496.25146484375 780.842590332031
938.272277832031</Location>
<Normal>0.0418550117439991 -0.90916921031098 -
0.414318120547991</Normal>
</CircleFeatureNominal>
<CircleFeatureNominal id="62">
<FeatureDefinitionId>61</FeatureDefinitionId>
<Location>2506.63672251543 792.999124488284
912.644676969086</Location>
<Normal>0.041846787761012 -0.90918955358026 -
0.414274307693118</Normal>
</CircleFeatureNominal>
</FeatureNominals>
<FeatureItems n="6">
<EdgePointFeatureItem id="10">
<Attributes n="1">
<AttributeStr name="Comment" value="An edge point with
uniform profile characteristic"/>
</Attributes>
<FeatureNominalId>9</FeatureNominalId>
<FeatureName>TRIM1</FeatureName>
<UUID>aeba4615-65db-4f7d-a2e8-a7928c80117f</UUID>
<DeterminationMode>
<Checked>
<CheckDetails>
<Measured/>
</CheckDetails>
</Checked>
</DeterminationMode>
</EdgePointFeatureItem>
<PointFeatureItem id="18">
<Attributes n="1">
<AttributeStr name="Comment" value="A point on a surface
with coordinate characteristics"/>
</Attributes>
<FeatureNominalId>17</FeatureNominalId>
<FeatureName>SURF1</FeatureName>
<UUID>263c98a7-9786-4408-b62f-dda79a07daad</UUID>
<DeterminationMode>
<Checked>
<CheckDetails>
<Measured/>
</CheckDetails>
</Checked>
</DeterminationMode>
</PointFeatureItem>
<PointFeatureItem id="30">
<Attributes n="1">
<AttributeStr name="Comment" value="A point on a surface
with non-uniform profile characteristic"/>
</Attributes>
<FeatureNominalId>29</FeatureNominalId>
<FeatureName>SURF2</FeatureName>
<UUID>63799169-1d43-41ee-b1ad-451f9d8a8f4e</UUID>
<DeterminationMode>
<Checked>
<CheckDetails>
<Measured/>
</CheckDetails>
</Checked>
</DeterminationMode>
</PointFeatureItem>
<CircleFeatureItem id="36">
<Attributes n="1">
<AttributeStr name="Comment" value="A hole with position and
gage-pin diameter"/>
</Attributes>
<FeatureNominalId>35</FeatureNominalId>
<FeatureName>HOLE1</FeatureName>
<UUID>f29bb618-e50d-4dbb-b4b4-83b28755c741</UUID>
<DeterminationMode>
<Checked>
<CheckDetails>
<Measured/>
</CheckDetails>
</Checked>
</DeterminationMode>
</CircleFeatureItem>
<CircleFeatureItem id="50">
<Attributes n="1">
<AttributeStr name="Comment" value="A hole with position and
caliper diameter"/>
</Attributes>
<FeatureNominalId>49</FeatureNominalId>
<FeatureName>HOLE2</FeatureName>
<UUID>5bb191b0-7a18-4393-8f24-1353ac8365c7</UUID>
<DeterminationMode>
<Checked>
<CheckDetails>
<Measured/>
</CheckDetails>
</Checked>
</DeterminationMode>
</CircleFeatureItem>
<CircleFeatureItem id="63">
<Attributes n="1">
<AttributeStr name="Comment" value="A non-measureable
reference circle"/>
</Attributes>
<FeatureNominalId>62</FeatureNominalId>
<FeatureName>REFCIRC1</FeatureName>
<UUID>6443f863-c559-42f2-b62a-48c0172d3395</UUID>
<DeterminationMode>
<Set/>
</DeterminationMode>
</CircleFeatureItem>
</FeatureItems>
</Features>
<Characteristics>
<FormalStandardId>70</FormalStandardId>
<CharacteristicDefinitions n="11">
<PointProfileCharacteristicDefinition id="11">
<ToleranceValue>4</ToleranceValue>
<DatumReferenceFrameId>12</DatumReferenceFrameId>
</PointProfileCharacteristicDefinition>
<LinearCoordinateCharacteristicDefinition id="19">
<DimensionType>BASIC_OR_TED</DimensionType>
<NonTolerance>MEASURED</NonTolerance>
</LinearCoordinateCharacteristicDefinition>
<LinearCoordinateCharacteristicDefinition id="22">
<Tolerance>
<MaxValue>0.2</MaxValue>
<MinValue>-0.2</MinValue>
<DefinedAsLimit>false</DefinedAsLimit>
</Tolerance>
</LinearCoordinateCharacteristicDefinition>
<LinearCoordinateCharacteristicDefinition id="25">
<Tolerance>
<MaxValue>945.20274658203107</MaxValue>
<MinValue>944.80274658203098</MinValue>
<DefinedAsLimit>true</DefinedAsLimit>
</Tolerance>
</LinearCoordinateCharacteristicDefinition>
<PointProfileCharacteristicDefinition id="31">
<ToleranceValue>1.5</ToleranceValue>
<OuterDisposition>1</OuterDisposition>
<DatumReferenceFrameId>12</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>MAXIMUM</MaterialCondition>
<ZoneShape>
<DiametricalZone/>
</ZoneShape>
</PositionCharacteristicDefinition>
<DiameterCharacteristicDefinition id="51">
<Tolerance>
<MaxValue>10.4</MaxValue>
<MinValue>9.6</MinValue>
<DefinedAsLimit>true</DefinedAsLimit>
</Tolerance>
</DiameterCharacteristicDefinition>
<PositionCharacteristicDefinition id="55">
<ToleranceValue>1</ToleranceValue>
<DatumReferenceFrameId>56</DatumReferenceFrameId>
<MaterialCondition>REGARDLESS</MaterialCondition>
<ZoneShape>
<DiametricalZone/>
</ZoneShape>
</PositionCharacteristicDefinition>
<DiameterCharacteristicDefinition id="64">
<DimensionType>BASIC_OR_TED</DimensionType>
<NonTolerance>SET</NonTolerance>
</DiameterCharacteristicDefinition>
<DistanceBetweenCharacteristicDefinition id="67">
<Tolerance>
<MaxValue>0.5</MaxValue>
<MinValue>-0.5</MinValue>
<DefinedAsLimit>false</DefinedAsLimit>
</Tolerance>
</DistanceBetweenCharacteristicDefinition>
</CharacteristicDefinitions>
<CharacteristicNominals n="11">
<PointProfileCharacteristicNominal id="13">
<CharacteristicDefinitionId>11</CharacteristicDefinitionId>
</PointProfileCharacteristicNominal>
<LinearCoordinateCharacteristicNominal id="20">
<CharacteristicDefinitionId>19</CharacteristicDefinitionId>
<TargetValue>2466.729248046875</TargetValue>
<Direction>XAXIS</Direction>
</LinearCoordinateCharacteristicNominal>
<LinearCoordinateCharacteristicNominal id="23">
<CharacteristicDefinitionId>22</CharacteristicDefinitionId>
<TargetValue>774.26989746093795</TargetValue>
<Direction>YAXIS</Direction>
</LinearCoordinateCharacteristicNominal>
<LinearCoordinateCharacteristicNominal id="26">
<CharacteristicDefinitionId>25</CharacteristicDefinitionId>
<Direction>ZAXIS</Direction>
</LinearCoordinateCharacteristicNominal>
<PointProfileCharacteristicNominal id="32">
<CharacteristicDefinitionId>31</CharacteristicDefinitionId>
</PointProfileCharacteristicNominal>
<DiameterCharacteristicNominal id="38">
<CharacteristicDefinitionId>37</CharacteristicDefinitionId>
<TargetValue>10</TargetValue>
</DiameterCharacteristicNominal>
<PositionCharacteristicNominal id="45">
<CharacteristicDefinitionId>40</CharacteristicDefinitionId>
</PositionCharacteristicNominal>
<DiameterCharacteristicNominal id="52">
<CharacteristicDefinitionId>51</CharacteristicDefinitionId>
</DiameterCharacteristicNominal>
<PositionCharacteristicNominal id="59">
<CharacteristicDefinitionId>55</CharacteristicDefinitionId>
</PositionCharacteristicNominal>
<DiameterCharacteristicNominal id="65">
<CharacteristicDefinitionId>64</CharacteristicDefinitionId>
<TargetValue>30</TargetValue>
</DiameterCharacteristicNominal>
<DistanceBetweenCharacteristicNominal id="68">
<CharacteristicDefinitionId>67</CharacteristicDefinitionId>
<TargetValue>81.208839738425993</TargetValue>
<AnalysisMode>THREEDIMENSIONAL</AnalysisMode>
</DistanceBetweenCharacteristicNominal>
</CharacteristicNominals>
<CharacteristicItems n="11">
<PointProfileCharacteristicItem id="14">
<Attributes n="1">
<AttributeStr name="Comment" value="A uniform profile zone
±2.0 with empty DRF"/>
</Attributes>
<Name>5</Name>
<CharacteristicDesignator>
<Designator>5</Designator>
<UUID>6f2a6f83-3ff7-4327-b00c-98208361301a</UUID>
<Criticality>
<LevelEnum>MINOR</LevelEnum>
</Criticality>
</CharacteristicDesignator>
<FeatureItemIds n="1">
<Id>10</Id>
</FeatureItemIds>
<MeasurementDeviceIds n="1">
<Id>15</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>13</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>5</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>C2</DrawingZone>
</LocationOnDrawing>
</PointProfileCharacteristicItem>
<LinearCoordinateCharacteristicItem id="21">
<Attributes n="1">
<AttributeStr name="Comment" value="A basic or theoretically
exact coordinate dimension"/>
</Attributes>
<Name>1</Name>
<CharacteristicDesignator>
<Designator>1</Designator>
<UUID>fdb07604-ac7e-4f7c-acc8-0860de517fd4</UUID>
<Criticality>
<OtherLevel>REF</OtherLevel>
</Criticality>
</CharacteristicDesignator>
<FeatureItemIds n="1">
<Id>18</Id>
</FeatureItemIds>
<MeasurementDeviceIds n="1">
<Id>15</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>20</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>5</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>D3</DrawingZone>
</LocationOnDrawing>
</LinearCoordinateCharacteristicItem>
<LinearCoordinateCharacteristicItem id="24">
<Attributes n="1">
<AttributeStr name="Comment" value="A bi-directional
coordinate tolerance"/>
</Attributes>
<Name>2</Name>
<CharacteristicDesignator>
<Designator>2</Designator>
<UUID>445298bf-91a2-4ec6-8fa4-3b2c029eeb6e</UUID>
<Criticality>
<LevelEnum>MINOR</LevelEnum>
</Criticality>
</CharacteristicDesignator>
<FeatureItemIds n="1">
<Id>18</Id>
</FeatureItemIds>
<MeasurementDeviceIds n="1">
<Id>15</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>23</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>5</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>D3</DrawingZone>
</LocationOnDrawing>
</LinearCoordinateCharacteristicItem>
<LinearCoordinateCharacteristicItem id="27">
<Attributes n="1">
<AttributeStr name="Comment" value="A limit coordinate
tolerance"/>
</Attributes>
<Name>3</Name>
<CharacteristicDesignator>
<Designator>3</Designator>
<UUID>187ce9c9-7125-47b0-869b-d37a9722a35d</UUID>
<Criticality>
<LevelEnum>MAJOR</LevelEnum>
</Criticality>
</CharacteristicDesignator>
<FeatureItemIds n="1">
<Id>18</Id>
</FeatureItemIds>
<MeasurementDeviceIds n="1">
<Id>15</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>26</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>5</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>D3</DrawingZone>
</LocationOnDrawing>
</LinearCoordinateCharacteristicItem>
<PointProfileCharacteristicItem id="33">
<Attributes n="1">
<AttributeStr name="Comment" value="An offset profile zone
+1.0/-0.5 to ABC"/>
</Attributes>
<Name>4</Name>
<CharacteristicDesignator>
<Designator>4</Designator>
<UUID>7ad19cce-458a-4d0a-9436-6a2d2683b018</UUID>
<Criticality>
<LevelEnum>CRITICAL</LevelEnum>
</Criticality>
</CharacteristicDesignator>
<FeatureItemIds n="1">
<Id>30</Id>
</FeatureItemIds>
<MeasurementDeviceIds n="1">
<Id>15</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>32</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>5</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>B3</DrawingZone>
</LocationOnDrawing>
</PointProfileCharacteristicItem>
<DiameterCharacteristicItem id="39">
<Attributes n="1">
<AttributeStr name="Comment" value="A bi-directional
diameter tolerance"/>
</Attributes>
<Name>6</Name>
<CharacteristicDesignator>
<Designator>6</Designator>
<UUID>4e609ab8-7d1c-4317-9b16-5fea194f9d7e</UUID>
<Criticality>
<LevelEnum>MINOR</LevelEnum>
</Criticality>
</CharacteristicDesignator>
<FeatureItemIds n="1">
<Id>36</Id>
</FeatureItemIds>
<MeasurementDeviceIds n="1">
<Id>15</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>38</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>5</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>C1</DrawingZone>
</LocationOnDrawing>
</DiameterCharacteristicItem>
<PositionCharacteristicItem id="46">
<Attributes n="1">
<AttributeStr name="Comment" value="MMC diametrical position
to AB(m)C(m)"/>
</Attributes>
<Name>7</Name>
<CharacteristicDesignator>
<Designator>7</Designator>
<UUID>4438e85a-441a-420f-93d8-c6ed52fae87e</UUID>
<Criticality>
<LevelEnum>CRITICAL</LevelEnum>
</Criticality>
</CharacteristicDesignator>
<FeatureItemIds n="1">
<Id>36</Id>
</FeatureItemIds>
<MeasurementDeviceIds n="1">
<Id>47</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>45</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>5</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>C1</DrawingZone>
</LocationOnDrawing>
</PositionCharacteristicItem>
<DiameterCharacteristicItem id="53">
<Attributes n="1">
<AttributeStr name="Comment" value="Limit diameter tolerance
with caliper "/>
</Attributes>
<Name>8</Name>
<CharacteristicDesignator>
<Designator>8</Designator>
<UUID>a5a0d3a2-e6c4-4be9-93fe-18ba95d8372c</UUID>
</CharacteristicDesignator>
<FeatureItemIds n="1">
<Id>50</Id>
</FeatureItemIds>
<MeasurementDeviceIds n="1">
<Id>54</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>52</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>5</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>C3</DrawingZone>
</LocationOnDrawing>
</DiameterCharacteristicItem>
<PositionCharacteristicItem id="60">
<Attributes n="1">
<AttributeStr name="Comment" value="RFS position to
AD(l)E(l)"/>
</Attributes>
<Name>9</Name>
<CharacteristicDesignator>
<Designator>9</Designator>
<UUID>c79e4f25-f235-4886-88a3-b8a2eeaba096</UUID>
<Criticality>
<LevelEnum>MINOR</LevelEnum>
</Criticality>
</CharacteristicDesignator>
<FeatureItemIds n="1">
<Id>50</Id>
</FeatureItemIds>
<MeasurementDeviceIds n="1">
<Id>15</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>59</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>5</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>C3</DrawingZone>
</LocationOnDrawing>
</PositionCharacteristicItem>
<DiameterCharacteristicItem id="66">
<Attributes n="1">
<AttributeStr name="Comment" value="Diameter set
dimension"/>
</Attributes>
<Name>10</Name>
<CharacteristicDesignator>
<Designator>10</Designator>
<UUID>ee9bb7c3-31fb-40a4-841d-4f1b9fc885bd</UUID>
</CharacteristicDesignator>
<FeatureItemIds n="1">
<Id>63</Id>
</FeatureItemIds>
<CharacteristicNominalId>65</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>5</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>B2</DrawingZone>
</LocationOnDrawing>
</DiameterCharacteristicItem>
<DistanceBetweenCharacteristicItem id="69">
<Attributes n="1">
<AttributeStr name="Comment" value="Distance between HOLE1
and HOLE2"/>
</Attributes>
<Description>Distance-between characteristic</Description>
<Name>DIST1</Name>
<CharacteristicDesignator>
<Designator>11</Designator>
<UUID>3e6797f5-b443-4b15-9108-055190223837</UUID>
</CharacteristicDesignator>
<FeatureItemIds n="2">
<Id>50</Id>
<Id>36</Id>
</FeatureItemIds>
<MeasurementDeviceIds n="1">
<Id>15</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>68</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>5</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>B2</DrawingZone>
</LocationOnDrawing>
</DistanceBetweenCharacteristicItem>
</CharacteristicItems>
</Characteristics>
<Plan>
<Version>
<ThisInstanceQPId>9f2f4875-5e15-440f-9825-
07b18112d839</ThisInstanceQPId>
</Version>
<UnorderedPlanRoot>
<Steps n="1">
<MeasureEvaluateAll/>
</Steps>
</UnorderedPlanRoot>
</Plan>
</QIFDocument>
*** end Plan sample file ***
The execution of the sample plan with the specified measurement equipment might result in a
measurement report file like:
SURF1 POINT (SURFACE)
SURF2 POINT(SURFACE)
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 QIF Results instance file.
File QIF_RESULTS_SAMPLE.QIF
<QPId>9914bdee-8cfa-4c27-b523-ebec280914ff</QPId>
<Version>
<TimeCreated>2018-06-25T11:55:56</TimeCreated>
</Version>
<Header>
<Application>
<Name>SOLIDWORKS 2017</Name>
<AddonName>CheckMate 14 for SOLIDWORKS</AddonName>
<AddonOrganization>Origin International Inc.</AddonOrganization>
</Application>
</Header>
<StandardsDefinitions n="1">
<Standard id="87">
<Organization>
<StandardsOrganizationEnum>ASME</StandardsOrganizationEnum>
</Organization>
<Designator>Y14.5</Designator>
<Year>2009</Year>
</Standard>
</StandardsDefinitions>
<PreInspectionTraceability>
<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>support@originintl.com</ElectronicMailAddress>
</Address>
</InspectingOrganization>
<SupplierCode>North_Fab</SupplierCode>
<PurchaseOrderNumber>PO123456</PurchaseOrderNumber>
<AsmPathIds n="1">
<Id>3</Id>
</AsmPathIds>
<ReportNumber>QIF 1</ReportNumber>
<InspectionScope>DETAIL</InspectionScope>
<InspectionMode>FAI_Full</InspectionMode>
<ReferencedQIFPlanInstance>
<ItemQPId>9f2f4875-5e15-440f-9825-07b18112d839</ItemQPId>
</ReferencedQIFPlanInstance>
<FormalStandardId>87</FormalStandardId>
</PreInspectionTraceability>
<FileUnits>
<PrimaryUnits>
<AngularUnit>
<SIUnitName>radian</SIUnitName>
<UnitName>degree</UnitName>
<UnitConversion>
<Factor>0.017453292519943</Factor>
</UnitConversion>
</AngularUnit>
<LinearUnit>
<SIUnitName>meter</SIUnitName>
<UnitName>mm</UnitName>
<UnitConversion>
<Factor>0.001</Factor>
</UnitConversion>
</LinearUnit>
</PrimaryUnits>
</FileUnits>
<DatumDefinitions n="5">
<DatumDefinition id="52">
<DatumLabel>A</DatumLabel>
</DatumDefinition>
<DatumDefinition id="53">
<DatumLabel>B</DatumLabel>
</DatumDefinition>
<DatumDefinition id="54">
<DatumLabel>C</DatumLabel>
</DatumDefinition>
<DatumDefinition id="70">
<DatumLabel>D</DatumLabel>
</DatumDefinition>
<DatumDefinition id="71">
<DatumLabel>E</DatumLabel>
</DatumDefinition>
</DatumDefinitions>
<DatumReferenceFrames n="3">
<DatumReferenceFrame id="13"/>
<DatumReferenceFrame id="51">
<Datums n="3">
<Datum>
<SimpleDatum>
<DatumDefinitionId>52</DatumDefinitionId>
<MaterialModifier>NONE</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>PRIMARY</PrecedenceEnum>
</Precedence>
</Datum>
<Datum>
<SimpleDatum>
<DatumDefinitionId>53</DatumDefinitionId>
<MaterialModifier>MAXIMUM</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>SECONDARY</PrecedenceEnum>
</Precedence>
</Datum>
<Datum>
<SimpleDatum>
<DatumDefinitionId>54</DatumDefinitionId>
<MaterialModifier>MAXIMUM</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>TERTIARY</PrecedenceEnum>
</Precedence>
</Datum>
</Datums>
</DatumReferenceFrame>
<DatumReferenceFrame id="69">
<Datums n="3">
<Datum>
<SimpleDatum>
<DatumDefinitionId>52</DatumDefinitionId>
<MaterialModifier>NONE</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>PRIMARY</PrecedenceEnum>
</Precedence>
</Datum>
<Datum>
<SimpleDatum>
<DatumDefinitionId>70</DatumDefinitionId>
<MaterialModifier>LEAST</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>SECONDARY</PrecedenceEnum>
</Precedence>
</Datum>
<Datum>
<SimpleDatum>
<DatumDefinitionId>71</DatumDefinitionId>
<MaterialModifier>LEAST</MaterialModifier>
<ReferencedComponent>ACTUAL</ReferencedComponent>
</SimpleDatum>
<Precedence>
<PrecedenceEnum>TERTIARY</PrecedenceEnum>
</Precedence>
</Datum>
</Datums>
</DatumReferenceFrame>
</DatumReferenceFrames>
<MeasurementResources>
<MeasurementDevices n="3">
<MeasurementDevice id="16">
<Name>CMM</Name>
</MeasurementDevice>
<MeasurementDevice id="57">
<Name>GAGE PINS</Name>
</MeasurementDevice>
<MeasurementDevice id="66">
<Name>CALIPERS</Name>
</MeasurementDevice>
</MeasurementDevices>
</MeasurementResources>
<Product>
<PartSet n="1">
<Part hidden="0" id="1" transparency="0">
<Header>
<Name>WING_MIR_REENF</Name>
<Description>Wing Mirror Re-enforcement</Description>
</Header>
<UUID>fbb01e31-e4b3-4b7f-9fa2-087921f96647</UUID>
<ModelNumber>QM_X_123456</ModelNumber>
<Version>1.02</Version>
<DefinitionExternal id="6" n="2">
<PrintedDrawing id="5">
<Name>sheet2_solid4_2017</Name>
<Version>1.0.0</Version>
<Description>Sample QIF elements</Description>
<DrawingNumber>#1</DrawingNumber>
<AdditionalChanges>none</AdditionalChanges>
<Location>Cabinet 17, Drawer 3</Location>
</PrintedDrawing>
<DigitalModel id="7">
<Name>sheet2_solid4_2017</Name>
<File>
<Name>D:/CM14_Parts/QIF/sheet2_solid4_2017.SLDPRT</Name>
<Format>
<DigitalModelFormatEnum>SOLIDWORKS</DigitalModelFormatEnum>
</Format>
</File>
</DigitalModel>
</DefinitionExternal>
</Part>
</PartSet>
<ComponentSet n="1">
<Component hidden="0" id="2" transparency="0">
<UUID>fd32e995-4b6e-431b-a99a-514750e3b4e5</UUID>
<Part>
<Id>1</Id>
</Part>
</Component>
</ComponentSet>
<AsmPaths n="1">
<AsmPath id="3">
<ComponentIds n="1">
<Id>2</Id>
</ComponentIds>
</AsmPath>
</AsmPaths>
</Product>
<Features>
<FeatureDefinitions n="6">
<EdgePointFeatureDefinition id="8">
<InternalExternal>EXTERNAL</InternalExternal>
</EdgePointFeatureDefinition>
<PointFeatureDefinition id="18"/>
<PointFeatureDefinition id="34"/>
<CircleFeatureDefinition id="42">
<InternalExternal>INTERNAL</InternalExternal>
<Diameter>10</Diameter>
</CircleFeatureDefinition>
<CircleFeatureDefinition id="59">
<InternalExternal>INTERNAL</InternalExternal>
<Diameter>10</Diameter>
</CircleFeatureDefinition>
<CircleFeatureDefinition id="75">
<InternalExternal>NOT_APPLICABLE</InternalExternal>
<Diameter>30</Diameter>
</CircleFeatureDefinition>
</FeatureDefinitions>
<FeatureNominals n="6">
<EdgePointFeatureNominal id="9">
<FeatureDefinitionId>8</FeatureDefinitionId>
<Location>2460.7099609375 770.604614257813
944.993591308594</Location>
<Normal>-0.735465884156764 -0.307902932144901
0.603560864882807</Normal>
<AdjacentNormal>0.0411800179070127 -0.909449806293281 -
0.413769568671128</AdjacentNormal>
</EdgePointFeatureNominal>
<PointFeatureNominal id="19">
<FeatureDefinitionId>18</FeatureDefinitionId>
<Location>2466.72924804688 774.269897460938
945.002746582031</Location>
<Normal>0.731520704665006 0.146124942551001 -
0.665976696147005</Normal>
</PointFeatureNominal>
<PointFeatureNominal id="35">
<FeatureDefinitionId>34</FeatureDefinitionId>
<Location>2536.49487304688 782.806213378906
920.002197265625</Location>
<Normal>-0.760926041022395 -0.648538030188337 -
0.0197479997320103</Normal>
</PointFeatureNominal>
<CircleFeatureNominal id="43">
<FeatureDefinitionId>42</FeatureDefinitionId>
<Location>2433.974609375 800.617431640625
890.049621582031</Location>
<Normal>0.0558150216639719 -0.907624351305543 -
0.41605615038579</Normal>
</CircleFeatureNominal>
<CircleFeatureNominal id="60">
<FeatureDefinitionId>59</FeatureDefinitionId>
<Location>2496.25146484375 780.842590332031
938.272277832031</Location>
<Normal>0.0418550117439991 -0.90916921031098 -
0.414318120547991</Normal>
</CircleFeatureNominal>
<CircleFeatureNominal id="76">
<FeatureDefinitionId>75</FeatureDefinitionId>
<Location>2506.63672251543 792.999124488284
912.644676969086</Location>
<Normal>0.041846787761012 -0.90918955358026 -
0.414274307693118</Normal>
</CircleFeatureNominal>
</FeatureNominals>
<FeatureItems n="6">
<EdgePointFeatureItem id="10">
<Attributes n="1">
<AttributeStr name="Comment" value="An edge point with
uniform profile characteristic"/>
</Attributes>
<FeatureNominalId>9</FeatureNominalId>
<FeatureName>TRIM1</FeatureName>
<UUID>aeba4615-65db-4f7d-a2e8-a7928c80117f</UUID>
<DeterminationMode>
<Checked>
<CheckDetails>
<Measured/>
</CheckDetails>
</Checked>
</DeterminationMode>
</EdgePointFeatureItem>
<PointFeatureItem id="20">
<Attributes n="1">
<AttributeStr name="Comment" value="A point on a surface
with coordinate characteristics"/>
</Attributes>
<FeatureNominalId>19</FeatureNominalId>
<FeatureName>SURF1</FeatureName>
<UUID>263c98a7-9786-4408-b62f-dda79a07daad</UUID>
<DeterminationMode>
<Checked>
<CheckDetails>
<Measured/>
</CheckDetails>
</Checked>
</DeterminationMode>
</PointFeatureItem>
<PointFeatureItem id="36">
<Attributes n="1">
<AttributeStr name="Comment" value="A point on a surface
with non-uniform profile characteristic"/>
</Attributes>
<FeatureNominalId>35</FeatureNominalId>
<FeatureName>SURF2</FeatureName>
<UUID>63799169-1d43-41ee-b1ad-451f9d8a8f4e</UUID>
<DeterminationMode>
<Checked>
<CheckDetails>
<Measured/>
</CheckDetails>
</Checked>
</DeterminationMode>
</PointFeatureItem>
<CircleFeatureItem id="44">
<Attributes n="1">
<AttributeStr name="Comment" value="A hole with position and
gage-pin diameter"/>
</Attributes>
<FeatureNominalId>43</FeatureNominalId>
<FeatureName>HOLE1</FeatureName>
<UUID>f29bb618-e50d-4dbb-b4b4-83b28755c741</UUID>
<DeterminationMode>
<Checked>
<CheckDetails>
<Measured/>
</CheckDetails>
</Checked>
</DeterminationMode>
</CircleFeatureItem>
<CircleFeatureItem id="61">
<Attributes n="1">
<AttributeStr name="Comment" value="A hole with position and
caliper diameter"/>
</Attributes>
<FeatureNominalId>60</FeatureNominalId>
<FeatureName>HOLE2</FeatureName>
<UUID>5bb191b0-7a18-4393-8f24-1353ac8365c7</UUID>
<DeterminationMode>
<Checked>
<CheckDetails>
<Measured/>
</CheckDetails>
</Checked>
</DeterminationMode>
</CircleFeatureItem>
<CircleFeatureItem id="77">
<Attributes n="1">
<AttributeStr name="Comment" value="A non-measureable
reference circle"/>
</Attributes>
<FeatureNominalId>76</FeatureNominalId>
<FeatureName>REFCIRC1</FeatureName>
<UUID>6443f863-c559-42f2-b62a-48c0172d3395</UUID>
<DeterminationMode>
<Set/>
</DeterminationMode>
</CircleFeatureItem>
</FeatureItems>
</Features>
<Characteristics>
<FormalStandardId>87</FormalStandardId>
<CharacteristicDefinitions n="11">
<PointProfileCharacteristicDefinition id="12">
<ToleranceValue>4</ToleranceValue>
<DatumReferenceFrameId>13</DatumReferenceFrameId>
</PointProfileCharacteristicDefinition>
<LinearCoordinateCharacteristicDefinition id="22">
<DimensionType>BASIC_OR_TED</DimensionType>
<NonTolerance>MEASURED</NonTolerance>
</LinearCoordinateCharacteristicDefinition>
<LinearCoordinateCharacteristicDefinition id="26">
<Tolerance>
<MaxValue>0.2</MaxValue>
<MinValue>-0.2</MinValue>
<DefinedAsLimit>false</DefinedAsLimit>
</Tolerance>
</LinearCoordinateCharacteristicDefinition>
<LinearCoordinateCharacteristicDefinition id="30">
<Tolerance>
<MaxValue>945.20274658203107</MaxValue>
<MinValue>944.80274658203098</MinValue>
<DefinedAsLimit>true</DefinedAsLimit>
</Tolerance>
</LinearCoordinateCharacteristicDefinition>
<PointProfileCharacteristicDefinition id="38">
<ToleranceValue>1.5</ToleranceValue>
<OuterDisposition>1</OuterDisposition>
<DatumReferenceFrameId>13</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>MAXIMUM</MaterialCondition>
<ZoneShape>
<DiametricalZone/>
</ZoneShape>
</PositionCharacteristicDefinition>
<DiameterCharacteristicDefinition id="63">
<Tolerance>
<MaxValue>10.4</MaxValue>
<MinValue>9.6</MinValue>
<DefinedAsLimit>true</DefinedAsLimit>
</Tolerance>
</DiameterCharacteristicDefinition>
<PositionCharacteristicDefinition id="68">
<ToleranceValue>1</ToleranceValue>
<DatumReferenceFrameId>69</DatumReferenceFrameId>
<MaterialCondition>REGARDLESS</MaterialCondition>
<ZoneShape>
<DiametricalZone/>
</ZoneShape>
</PositionCharacteristicDefinition>
<DiameterCharacteristicDefinition id="79">
<DimensionType>BASIC_OR_TED</DimensionType>
<NonTolerance>SET</NonTolerance>
</DiameterCharacteristicDefinition>
<DistanceBetweenCharacteristicDefinition id="83">
<Tolerance>
<MaxValue>0.5</MaxValue>
<MinValue>-0.5</MinValue>
<DefinedAsLimit>false</DefinedAsLimit>
</Tolerance>
</DistanceBetweenCharacteristicDefinition>
</CharacteristicDefinitions>
<CharacteristicNominals n="11">
<PointProfileCharacteristicNominal id="14">
<CharacteristicDefinitionId>12</CharacteristicDefinitionId>
</PointProfileCharacteristicNominal>
<LinearCoordinateCharacteristicNominal id="23">
<CharacteristicDefinitionId>22</CharacteristicDefinitionId>
<TargetValue>2466.729248046875</TargetValue>
<Direction>XAXIS</Direction>
</LinearCoordinateCharacteristicNominal>
<LinearCoordinateCharacteristicNominal id="27">
<CharacteristicDefinitionId>26</CharacteristicDefinitionId>
<TargetValue>774.26989746093795</TargetValue>
<Direction>YAXIS</Direction>
</LinearCoordinateCharacteristicNominal>
<LinearCoordinateCharacteristicNominal id="31">
<CharacteristicDefinitionId>30</CharacteristicDefinitionId>
<Direction>ZAXIS</Direction>
</LinearCoordinateCharacteristicNominal>
<PointProfileCharacteristicNominal id="39">
<CharacteristicDefinitionId>38</CharacteristicDefinitionId>
</PointProfileCharacteristicNominal>
<DiameterCharacteristicNominal id="47">
<CharacteristicDefinitionId>46</CharacteristicDefinitionId>
<TargetValue>10</TargetValue>
</DiameterCharacteristicNominal>
<PositionCharacteristicNominal id="55">
<CharacteristicDefinitionId>50</CharacteristicDefinitionId>
</PositionCharacteristicNominal>
<DiameterCharacteristicNominal id="64">
<CharacteristicDefinitionId>63</CharacteristicDefinitionId>
</DiameterCharacteristicNominal>
<PositionCharacteristicNominal id="72">
<CharacteristicDefinitionId>68</CharacteristicDefinitionId>
</PositionCharacteristicNominal>
<DiameterCharacteristicNominal id="80">
<CharacteristicDefinitionId>79</CharacteristicDefinitionId>
<TargetValue>30</TargetValue>
</DiameterCharacteristicNominal>
<DistanceBetweenCharacteristicNominal id="84">
<CharacteristicDefinitionId>83</CharacteristicDefinitionId>
<TargetValue>81.208839738425993</TargetValue>
<AnalysisMode>THREEDIMENSIONAL</AnalysisMode>
</DistanceBetweenCharacteristicNominal>
</CharacteristicNominals>
<CharacteristicItems n="11">
<PointProfileCharacteristicItem id="15">
<Attributes n="1">
<AttributeStr name="Comment" value="A uniform profile zone
±2.0 with empty DRF"/>
</Attributes>
<Name>5</Name>
<CharacteristicDesignator>
<Designator>5</Designator>
<UUID>6f2a6f83-3ff7-4327-b00c-98208361301a</UUID>
<Criticality>
<LevelEnum>MINOR</LevelEnum>
</Criticality>
</CharacteristicDesignator>
<FeatureItemIds n="1">
<Id>10</Id>
</FeatureItemIds>
<MeasurementDeviceIds n="1">
<Id>16</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>14</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>5</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>C2</DrawingZone>
</LocationOnDrawing>
</PointProfileCharacteristicItem>
<LinearCoordinateCharacteristicItem id="24">
<Attributes n="1">
<AttributeStr name="Comment" value="A basic or theoretically
exact coordinate dimension"/>
</Attributes>
<Name>1</Name>
<CharacteristicDesignator>
<Designator>1</Designator>
<UUID>fdb07604-ac7e-4f7c-acc8-0860de517fd4</UUID>
<Criticality>
<OtherLevel>REF</OtherLevel>
</Criticality>
</CharacteristicDesignator>
<FeatureItemIds n="1">
<Id>20</Id>
</FeatureItemIds>
<MeasurementDeviceIds n="1">
<Id>16</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>23</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>5</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>D3</DrawingZone>
</LocationOnDrawing>
</LinearCoordinateCharacteristicItem>
<LinearCoordinateCharacteristicItem id="28">
<Attributes n="1">
<AttributeStr name="Comment" value="A bi-directional
coordinate tolerance"/>
</Attributes>
<Name>2</Name>
<CharacteristicDesignator>
<Designator>2</Designator>
<UUID>445298bf-91a2-4ec6-8fa4-3b2c029eeb6e</UUID>
<Criticality>
<LevelEnum>MINOR</LevelEnum>
</Criticality>
</CharacteristicDesignator>
<FeatureItemIds n="1">
<Id>20</Id>
</FeatureItemIds>
<MeasurementDeviceIds n="1">
<Id>16</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>27</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>5</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>D3</DrawingZone>
</LocationOnDrawing>
</LinearCoordinateCharacteristicItem>
<LinearCoordinateCharacteristicItem id="32">
<Attributes n="1">
<AttributeStr name="Comment" value="A limit coordinate
tolerance"/>
</Attributes>
<Name>3</Name>
<CharacteristicDesignator>
<Designator>3</Designator>
<UUID>187ce9c9-7125-47b0-869b-d37a9722a35d</UUID>
<Criticality>
<LevelEnum>MAJOR</LevelEnum>
</Criticality>
</CharacteristicDesignator>
<FeatureItemIds n="1">
<Id>20</Id>
</FeatureItemIds>
<MeasurementDeviceIds n="1">
<Id>16</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>31</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>5</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>D3</DrawingZone>
</LocationOnDrawing>
</LinearCoordinateCharacteristicItem>
<PointProfileCharacteristicItem id="40">
<Attributes n="1">
<AttributeStr name="Comment" value="An offset profile zone
+1.0/-0.5 to ABC"/>
</Attributes>
<Name>4</Name>
<CharacteristicDesignator>
<Designator>4</Designator>
<UUID>7ad19cce-458a-4d0a-9436-6a2d2683b018</UUID>
<Criticality>
<LevelEnum>CRITICAL</LevelEnum>
</Criticality>
</CharacteristicDesignator>
<FeatureItemIds n="1">
<Id>36</Id>
</FeatureItemIds>
<MeasurementDeviceIds n="1">
<Id>16</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>39</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>5</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>B3</DrawingZone>
</LocationOnDrawing>
</PointProfileCharacteristicItem>
<DiameterCharacteristicItem id="48">
<Attributes n="1">
<AttributeStr name="Comment" value="A bi-directional
diameter tolerance"/>
</Attributes>
<Name>6</Name>
<CharacteristicDesignator>
<Designator>6</Designator>
<UUID>4e609ab8-7d1c-4317-9b16-5fea194f9d7e</UUID>
<Criticality>
<LevelEnum>MINOR</LevelEnum>
</Criticality>
</CharacteristicDesignator>
<FeatureItemIds n="1">
<Id>44</Id>
</FeatureItemIds>
<MeasurementDeviceIds n="1">
<Id>16</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>47</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>5</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>C1</DrawingZone>
</LocationOnDrawing>
</DiameterCharacteristicItem>
<PositionCharacteristicItem id="56">
<Attributes n="1">
<AttributeStr name="Comment" value="MMC diametrical position
to AB(m)C(m)"/>
</Attributes>
<Name>7</Name>
<CharacteristicDesignator>
<Designator>7</Designator>
<UUID>4438e85a-441a-420f-93d8-c6ed52fae87e</UUID>
<Criticality>
<LevelEnum>CRITICAL</LevelEnum>
</Criticality>
</CharacteristicDesignator>
<FeatureItemIds n="1">
<Id>44</Id>
</FeatureItemIds>
<MeasurementDeviceIds n="1">
<Id>57</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>55</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>5</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>C1</DrawingZone>
</LocationOnDrawing>
</PositionCharacteristicItem>
<DiameterCharacteristicItem id="65">
<Attributes n="1">
<AttributeStr name="Comment" value="Limit diameter tolerance
with caliper "/>
</Attributes>
<Name>8</Name>
<CharacteristicDesignator>
<Designator>8</Designator>
<UUID>a5a0d3a2-e6c4-4be9-93fe-18ba95d8372c</UUID>
</CharacteristicDesignator>
<FeatureItemIds n="1">
<Id>61</Id>
</FeatureItemIds>
<MeasurementDeviceIds n="1">
<Id>66</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>64</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>5</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>C3</DrawingZone>
</LocationOnDrawing>
</DiameterCharacteristicItem>
<PositionCharacteristicItem id="73">
<Attributes n="1">
<AttributeStr name="Comment" value="RFS position to
AD(l)E(l)"/>
</Attributes>
<Name>9</Name>
<CharacteristicDesignator>
<Designator>9</Designator>
<UUID>c79e4f25-f235-4886-88a3-b8a2eeaba096</UUID>
<Criticality>
<LevelEnum>MINOR</LevelEnum>
</Criticality>
</CharacteristicDesignator>
<FeatureItemIds n="1">
<Id>61</Id>
</FeatureItemIds>
<MeasurementDeviceIds n="1">
<Id>16</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>72</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>5</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>C3</DrawingZone>
</LocationOnDrawing>
</PositionCharacteristicItem>
<DiameterCharacteristicItem id="81">
<Attributes n="1">
<AttributeStr name="Comment" value="Diameter set
dimension"/>
</Attributes>
<Name>10</Name>
<CharacteristicDesignator>
<Designator>10</Designator>
<UUID>ee9bb7c3-31fb-40a4-841d-4f1b9fc885bd</UUID>
</CharacteristicDesignator>
<FeatureItemIds n="1">
<Id>77</Id>
</FeatureItemIds>
<CharacteristicNominalId>80</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>5</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>B2</DrawingZone>
</LocationOnDrawing>
</DiameterCharacteristicItem>
<DistanceBetweenCharacteristicItem id="85">
<Attributes n="1">
<AttributeStr name="Comment" value="Distance between HOLE1
and HOLE2"/>
</Attributes>
<Description>Distance-between characteristic</Description>
<Name>DIST1</Name>
<CharacteristicDesignator>
<Designator>11</Designator>
<UUID>3e6797f5-b443-4b15-9108-055190223837</UUID>
</CharacteristicDesignator>
<FeatureItemIds n="2">
<Id>61</Id>
<Id>44</Id>
</FeatureItemIds>
<MeasurementDeviceIds n="1">
<Id>16</Id>
</MeasurementDeviceIds>
<CharacteristicNominalId>84</CharacteristicNominalId>
<LocationOnDrawing>
<DrawingId>5</DrawingId>
<SheetNumber>SHEET1</SheetNumber>
<DrawingZone>B2</DrawingZone>
</LocationOnDrawing>
</DistanceBetweenCharacteristicItem>
</CharacteristicItems>
</Characteristics>
<Results>
<MeasurementResultsSet n="1">
<MeasurementResults id="88">
<ThisResultsInstanceQPId>8521ff0f-4c05-4f13-a2be-
1386190f75a6</ThisResultsInstanceQPId>
<ExternalFileReferences n="1">
<ExternalFileReference>
<URI>C:/R19_parts/5802804.res</URI>
<FileSpec>
<OtherFileSpec>res</OtherFileSpec>
</FileSpec>
<Description>Zeiss Umess CMM Results</Description>
</ExternalFileReference>
</ExternalFileReferences>
<MeasuredFeatures n="6">
<EdgePointFeatureMeasurement id="11">
<FeatureItemId>10</FeatureItemId>
<Location>2460.72 770.62 944.98</Location>
<Normal>-0.735465884156764 -0.307902932144901
0.603560864882807</Normal>
</EdgePointFeatureMeasurement>
<PointFeatureMeasurement id="21">
<FeatureItemId>20</FeatureItemId>
<Location>2466.9 774.31 944.84</Location>
</PointFeatureMeasurement>
<PointFeatureMeasurement id="37">
<FeatureItemId>36</FeatureItemId>
<Location>2537.17 783.38 920.02</Location>
</PointFeatureMeasurement>
<CircleFeatureMeasurement id="45">
<FeatureItemId>44</FeatureItemId>
<Location>2434.01 801.52505599193 889.98</Location>
<Normal>0.0558150216639719 -0.907624351305543 -
0.41605615038579</Normal>
<Diameter>9.499476</Diameter>
</CircleFeatureMeasurement>
<CircleFeatureMeasurement id="62">
<FeatureItemId>61</FeatureItemId>
<Location>2496.39 781.751759542342 938.09</Location>
<Normal>0.0418550117439991 -0.90916921031098 -
0.414318120547991</Normal>
<Diameter>10.199987999999999</Diameter>
</CircleFeatureMeasurement>
<CircleFeatureMeasurement id="78">
<FeatureItemId>77</FeatureItemId>
<Location>2506.63672251543 792.999124488284
912.644676969086</Location>
<Normal>0.041846787761012 -0.90918955358026 -
0.414274307693118</Normal>
<Diameter>30</Diameter>
</CircleFeatureMeasurement>
</MeasuredFeatures>
<MeasuredCharacteristics>
<CharacteristicMeasurements n="11">
<PointProfileCharacteristicMeasurement id="17">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>15</CharacteristicItemId>
<FeatureMeasurementIds n="1">
<Id>11</Id>
</FeatureMeasurementIds>
<NonConformanceDesignator>NA</NonConformanceDesignator>
<Value>-0.020323885079998</Value>
</PointProfileCharacteristicMeasurement>
<LinearCoordinateCharacteristicMeasurement id="25">
<Status>
<CharacteristicStatusEnum>BASIC_OR_TED</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>24</CharacteristicItemId>
<FeatureMeasurementIds n="1">
<Id>21</Id>
</FeatureMeasurementIds>
<NonConformanceDesignator>NA</NonConformanceDesignator>
<TypeOfCoordinates>
<CoordinateEnum>CARTESIAN_3D</CoordinateEnum>
</TypeOfCoordinates>
<Value>2466.9000000000001</Value>
</LinearCoordinateCharacteristicMeasurement>
<LinearCoordinateCharacteristicMeasurement id="29">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>28</CharacteristicItemId>
<FeatureMeasurementIds n="1">
<Id>21</Id>
</FeatureMeasurementIds>
<NonConformanceDesignator>NA</NonConformanceDesignator>
<TypeOfCoordinates>
<CoordinateEnum>CARTESIAN_3D</CoordinateEnum>
</TypeOfCoordinates>
<Value>774.30999999999995</Value>
</LinearCoordinateCharacteristicMeasurement>
<LinearCoordinateCharacteristicMeasurement id="33">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>32</CharacteristicItemId>
<FeatureMeasurementIds n="1">
<Id>21</Id>
</FeatureMeasurementIds>
<NonConformanceDesignator>NA</NonConformanceDesignator>
<TypeOfCoordinates>
<CoordinateEnum>CARTESIAN_3D</CoordinateEnum>
</TypeOfCoordinates>
<Value>944.84000000000003</Value>
</LinearCoordinateCharacteristicMeasurement>
<PointProfileCharacteristicMeasurement id="41">
<Status>
<CharacteristicStatusEnum>FAIL</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>40</CharacteristicItemId>
<FeatureMeasurementIds n="1">
<Id>37</Id>
</FeatureMeasurementIds>
<NonConformanceDesignator>1234</NonConformanceDesignator>
<Value>-0.886195693015347</Value>
</PointProfileCharacteristicMeasurement>
<DiameterCharacteristicMeasurement id="49">
<Status>
<CharacteristicStatusEnum>FAIL</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>48</CharacteristicItemId>
<FeatureMeasurementIds n="1">
<Id>45</Id>
</FeatureMeasurementIds>
<NonConformanceDesignator>1234</NonConformanceDesignator>
<Value>9.499476</Value>
</DiameterCharacteristicMeasurement>
<PositionCharacteristicMeasurement id="58">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>56</CharacteristicItemId>
<FeatureMeasurementIds n="1">
<Id>45</Id>
</FeatureMeasurementIds>
<NonConformanceDesignator>NA</NonConformanceDesignator>
<Value>0.897298445619006</Value>
</PositionCharacteristicMeasurement>
<DiameterCharacteristicMeasurement id="67">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>65</CharacteristicItemId>
<FeatureMeasurementIds n="1">
<Id>62</Id>
</FeatureMeasurementIds>
<NonConformanceDesignator>NA</NonConformanceDesignator>
<Value>10.199987999999999</Value>
</DiameterCharacteristicMeasurement>
<PositionCharacteristicMeasurement id="74">
<Status>
<CharacteristicStatusEnum>FAIL</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>73</CharacteristicItemId>
<FeatureMeasurementIds n="1">
<Id>62</Id>
</FeatureMeasurementIds>
<NonConformanceDesignator>1234</NonConformanceDesignator>
<Value>1.137681133150282</Value>
</PositionCharacteristicMeasurement>
<DiameterCharacteristicMeasurement id="82">
<Status>
<CharacteristicStatusEnum>BASIC_OR_TED</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>81</CharacteristicItemId>
<FeatureMeasurementIds n="1">
<Id>78</Id>
</FeatureMeasurementIds>
<Value>30</Value>
</DiameterCharacteristicMeasurement>
<DistanceBetweenCharacteristicMeasurement id="86">
<Status>
<CharacteristicStatusEnum>PASS</CharacteristicStatusEnum>
</Status>
<CharacteristicItemId>85</CharacteristicItemId>
<FeatureMeasurementIds n="2">
<Id>62</Id>
<Id>45</Id>
</FeatureMeasurementIds>
<Value>81.220808617516994</Value>
</DistanceBetweenCharacteristicMeasurement>
</CharacteristicMeasurements>
</MeasuredCharacteristics>
<InspectionStatus>
<InspectionStatusEnum>FAIL</InspectionStatusEnum>
</InspectionStatus>
<ActualComponentIds n="1">
<Id>4</Id>
</ActualComponentIds>
</MeasurementResults>
</MeasurementResultsSet>
<ActualComponentSets n="1">
<ActualComponentSet n="1">
<ActualComponent id="4">
<Status>
<InspectionStatusEnum>FAIL</InspectionStatusEnum>
</Status>
<AsmPathId>3</AsmPathId>
</ActualComponent>
</ActualComponentSet>
</ActualComponentSets>
<InspectionTraceability>
<ReportPreparer>
<Name>John Doe</Name>
<EmployeeId>123-456</EmployeeId>
</ReportPreparer>
<ReportPreparationDate>2018-06-
25T11:55:56</ReportPreparationDate>
</InspectionTraceability>
</Results>
</QIFDocument>
*** end of Results sample file ***
Preface
Most dimensional and geometrical tolerancing standards used in industry are based on either
American Society of Mechanical Engineers (ASME) or International Organization for
Standardization (ISO) standards. Both ISO Geometrical Product Specifications (GPS) and
ASME Y14.5 help establish uniform practices for stating and interpreting product design intent.
QIF accommodates both ASME GD&T and ISO GPS documented practices.
<StandardsDefinitions n="1">
<Standard id="15">
<Organization>
<StandardsOrganizationEnum>ISO</StandardsOrganizationEnum>
</Organization>
<Designator>1101</Designator>
<Year>2012</Year>
</Standard>
</StandardsDefinitions>
Related standards can be defined and referenced from the main standard as follows:
<StandardsDefinitions n="3">
<Standard id="15">
<Organization>
<StandardsOrganizationEnum>ISO</StandardsOrganizationEnum>
</Organization>
<Designator>1101</Designator>
<Year>2012</Year>
<ReferencedStandardIds n=”2”>
<Id>16</Id>
<Id>17</Id>
</ReferencedStandardIds>
</Standard>
<Standard id="16">
<Organization>
<StandardsOrganizationEnum>ISO</StandardsOrganizationEnum>
</Organization>
<Designator>8015</Designator>
<Year>2011</Year>
</Standard>
<Standard id="17">
<Organization>
<StandardsOrganizationEnum>ISO</StandardsOrganizationEnum>
</Organization>
<Designator>14415-1</Designator>
<Year>2016</Year>
</Standard>
</StandardsDefinitions>
Tolerance frame or
Feature control frame
Tolerance indicator
Circularity Roundness
The following is a list of QIF types, elements and enumerations specific to ISO GPS support:
1. Median feature
CharacteristicDefinitionBaseType/MedianFeature optional Boolean element
2. Envelope requirement
CharacteristicDefinitionBaseType/EnvelopeRequirement optionalBoolean element
13. Unequally disposed zone modifier UZ (optional choice between ISO unequally disposed
zone UZ and ASME outer disposition ēmethods)
ProfileCharacteristicDefinitionBaseType/UnequallyDisposedZone linear value
optional element
26. Degrees of freedom modifiers (as choice between ISO Tx,Ty,Tz,Rx,Ry,Rz and ASME
u,v,w,x,y,z)
DegreesOfFeedomType/ISODegreesOfFreedom element(s), the type of which is
ISODegreeOfFreedomEnumType (a simple type)
28. Zone direction for circular runout (via DMIS support of ISO)
CircularRunoutCharacteristicNominalType/ZoneDirection optional element, the type
of which is UnitVectorType (a complex type)
29. CoaxialityÎ
CoaxialityCharacteristicDefinitionType, CoaxialityCharacteristicNominalType,
CoaxialityCharacteristicItemType, and CoaxialityCharacteristicMeasurementType
types
33. Dimension modifiers LP, LS, GG, GX, GN, CC, CA, CV as optional element
DeterminationModifier of type DeterminationModifierEnumType and dimension
modifiers SX, SN, SA, SM, SD, SR, SQ as an optional element SignificantDimension
of type SignificantDimensionEnumType
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.”
Bibliography
[1] SAE AS9102B (2014-10), Aerospace First Article Inspection Requirement
[2] Walmsley, Priscilla., 2002. Definitive XML Schema. Prentice Hall, Upper Saddle River, NJ,
USA.