User Manual for
Version 1.0 of the
NIST DML Test Suite (Depth First Approach)
for Evaluating Implementations of
Version 2.1 of the DML
Specification
Joseph Falco,
Son
Bui, John Horst, William Rippey
The National Institute of
Standards and Technology (NIST)
U.S. Department of Commerce
Gaithersburg, Maryland, USA
Telephone: 301.975.{3430,
3455, 6595, 3417}
Email: {john.horst,
joseph.falco, son.bui, william.rippey}@nist.gov
November 1, 2004
Introduction
The NIST DML Test Suite (NDTS) is
a set
of tools for vendors and end users of inspection software to test the
validity of Dimensional Markup Language (DML) output data. Version 1.0 of the test suite is a
"depth-first" implementation in that it is an operational version of
the test suite based on a subset of features and associated tolerances
found in DML Specification 2.1. This version 1.0 is a first step
in introducing the concept of the test suite
and obtaining user feedback. Main components of the test suite
include a physical part and a test procedure for generating the DML
test
results, a software utility for evaluating the DML test results
produced and a benchmark file that is used in the evaluation process.
We expect this first version of
the NDTS to be useful in two ways. First, use the NDTS Test Case
1 procedure and physical part to produce a DML test file. Then use the
test utility to perform tests on the file you produce and provide
feedback on the concept of the test suite and the first test
case.
Second, use the
test
utility with the pairs of DML test and benchmark files provided
in the Example_Files directory to become acquainted with the test
utility
and provide feedback on the
utility and defined misinterpretation errors.
The NIST DML Test Utility is a
Java based application for informal compliance testing of DML Files in
accordance with DML Specification 2.1. The Utility performs
standard XML well-formed/schema checks followed by an analysis on a
schema-validated file. The analysis
performs internal checks on a DML test file and comparison checks
between
the test file and a benchmark file. Utility results are
documented
in an xml format.
Software Disclaimer: The DML
Test
Utility Version 1.0 was produced by the National
Institute of Standards and Technology (NIST), an agency of the U.S.
government, and by statute is not subject to copyright in the United
States. Recipients of this software assume all responsibility
associated with its operation, modification, maintenance, and
subsequent redistribution.
Getting Started with the DML Test Utility
Downloading the Test Suite
The NIST DML Test Suite 1.0
includes a TestCase1 part, a TestCase1 inspection plan (or procedure) for generating the
DML test results, a
test utility for evaluating the DML test results produced and a
TestCase1 benchmark file for use with the test utility.
Everything needed to produce DML output for
test case 1 and perform an analysis of the output against the NIST
generated
criteria is contained within the download file NISTDMLTestSuite_1_0.zip
with
the exception of the physical part. The physical part must be
obtained
by contacting NIST. The test suite can be downloaded from
the
NIST Metrology Interoperability Web site at: http://www.isd.mel.nist.gov/projects/metrology_interoperability/
Once the zip file is downloaded,
simply unzip it and follow the instructions below. A utility for
unpacking zip archived files can be obtained from http://www.winzip.com/.
Obtaining a Physical Part
To obtain a part, please contact
Joe Falco (joseph.falco@nist.gov : 301-975-3455).
NIST has a small number of
Daimler-Chrysler "Test Case 1" parts available for distribution.
These parts are also being used for I++ DME interoperability
testing. Your organization may already have a test part if they
are involved in these activities.
Java Runtime Engine (JRE)
To run the NIST DML Test Utility
Java application on your computer platform you must have version 1.4.2
of the
JRE installed.
To check the version currently installed enter " java -version" in a
command prompt window.
C:\>java -version
java version "1.4.2_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_01-b06)
If you do not have a current version of JRE loaded on
your machine, you can obtain the latest JRE at:
http://java.sun.com/j2se/1.4.2/download.html
Running the Test Utility
The main
Java executable is located in the DMLTestSuite1.0 directory.
To run the utility
either:
- double-click the
NIST_DML_UTIL_1_0.jar file
- from a command prompt, enter:
java -jar NIST_DML_UTIL_1_0.jar
DML Test Suite 1.0
The
NIST DML Test suite is a set of tools to test the validity of
Dimensional Markup Language (DML) data. The main function of the test suite is to
analyze a DML file for errors that are not caught during well-formed
testing and schema validation. Version 1.0 of the
test suite takes a "depth-first" approach to the test development
process, meaning that we have developed a complete test suite, but, for
now, only for a subset of all possible DML features and
tolerances. We believe that this will allow us to gauge whether
our general approach to testing makes sense overall, before we do the
tedious (but necessary) work of checking for correct implementation of
ALL possible features and tolerances. Features covered in this
depth-first implementation include point_feature, line_feature,
plane_feature, and circle_feature as well as the tolerances that NIST
has interpreted as their associated tolerances.
Directory Structure
The main
components of the test suite include a physical part, a test inspection
procedure
for generating the DML test results, a software utility for evaluating
the DML test results produced and a benchmark file that is used in the
evaluation process. The directory structure of the test suite is
shown in Figure 1. The main DMLTestSuite1.0
directory contains the executable JAR file as well as 5 sub
Directories.
The Directory structure for Test
Suite 1.0 is as follows:
Figure 1 - Test Suite 1.0 File
System
Procedure
The NIST DML Test Suite contains an inspection plan for the
Daimler-Chrysler test
part in the form of a DMIS input file. Run a part inspection with
the DMIS file
as input, using your DML 2.1-compliant inspection system (execution
software
& CMM) to generate a DML test file. Use the DML test utility
to analyze your DML test file. Any interpretation errors in your
implementation for the depth-first feature and tolerance set should be
identified by the test utility.
The checks assume that
an
accurate part was
inspected, and that errors may have occurred in data manipulation and
calculation by the software that produces the DML results file. Data integrity checks are performed in
standalone
mode, and by comparing a data file to a benchmark file.
The analysis step checks for reasonableness
of data that is not in the scope of the DML schema definitions. Integrity checks include checking for sign
of a number, closeness of nominal values to measured values, that lists
of
points contain the minimum number required for various features.
Example DML Files
The NDTS
also contains pairs of DML test files and benchmark files containing
the features and tolerances supported by this depth-first
implementation. See the Test Suite 1.0 File
System
in Figure
1
for a listing of
these files. Each
test file is riddled with interpretation errors ("misinterpretations"
of the DML 2.1 spec), and each benchmark
file, paired with that test file, contains no errors. Running
each
test file on the test utility will expose these errors.
For Example:
1.
Select "Analysis" Internal & Bench
2. Select "Result Format" Errors Only or All
Results
3. Set Test ID (optional)
4. Set Vendor Name (optional)
5. Set Schema File (Use Default)
6. Set Test File (Example_Files/CircleFeature.xml)
7. Set Bench File (Example_Files/CircleFeature_B.xml)
8. Set Result File (e.g.
Example_Files/result.xml)
9. Set Tolerances (use default)
10. Select "DML Format" Name Convention (use default)
11. Select Execute Test
A listing of the misinterpretations for the depth-first implementation
can be found in Table 1 and Table 2 in the Appendix of this
document. A file is also included that contains a full listing of
DML2.1 features and tolerances along with the NIST defined possible
misinterpretations for each. The name and location of this file
are as follows: Documentation\dml_misinterpretations.doc.
Feedback
NIST welcomes any and all
feedback regarding the NIST DML Test Suite. NIST intends to keep a
record of feedback on both the NDTS and the DML
spec, so that the specification will become unambiguous and the test
suite will
become useful to all implementers.
Feedback welcomed includes but is not limited to:
- Do you
understand and agree with the definition of Test Case 1?
- Do you agree
that the errors that we have defined are truly errors?
- Have we
defined all possible interpretation errors for the features and
tolerances in the depth-first subset? (See Tables
1 & 2 for listings)
- Have you come
across
any bugs in the test utility or do you have any recommendations for
improving it? (See Known Bugs)
Please report any feedback to:
Joe Falco
email: joseph.falco@nist.gov
tel: 301-371-9729
fax: 301-990-9688
DML Test Case1
Test Description
The Part
Coordinate System (PCS) is located at the point where plane 1, plane 2,
and plane 4
intersect as shown in Figure 2. Measurement
values in the test DML file you produce must be relative to the PCS in
order to make valid benchmark comparisons. The features measured
in this test case coincide with the features
implemented in the depth-first approach of the NIST DML Test Utility
1.0. These include a circle feature "Circle1", a plane feature
"Plane 4", a point feature "Point 1", and a line feature "Line 1" which
are also indicated in Figure 2. Relevant dimensions for these
features can be found in Figure 3. For each
feature of the test case, relevant DMIS commands are supplied and
naming conventions for DML output are specified. These naming
conventions must be included in the vendor/end-user produced test file
in order to perform comparisons with a benchmark file. The
TestCase1 benchmark file, Benchmark_DepthFirst.xml, is located in the
Benchmark_File directory.
Figure 2 - Test Case 1 Coordinate
System and Feature Identification
Figure 3 - Test Case 1 Relevant
Dimensions
Units and
Conventions
The utility currently does
not support multiple units and conventions. Therefore, the
following conventions must be followed:
Linear Units: millimeters / DML 2.1 - <part_program_info linear_units="MM">
Angular Units: degrees / DML 2.1 - <part_program_info angular_units="DEGREES">
Coordinate System: cartesian / DML 2.1 - < Element coordinate_type="CARTESIAN">
All DML data must be reported with respect to the to the Test Case 1
part coordinate system (PCS).
e.g. <plane_feature_nominal
reporting_transform="to PCS">)
Note:
Optional elements and attributes that are not output in
vendor/enduser test DML files will be bypassed in the case of
comparisons with the benchmark file. However, if these optional
attributes are not specified in the test file, a warning message will
be written to the results file. These warnings are not counted as
errors. When possible, it is suggested that all optional items be
included in vendor files.
Part Coordinate System
The DMIS program used to develop the Test Case 1 (TC1) benchmark file
first specifies a set manual operations to establish a part coordinate
system.
Determine PCS translation matrix:
- Measure TC1 part Plane 1 (<feature
name="PLN1" id="PLN1_1">)
- Measure TC1 part Plane 2 (<feature
name="PLN2" id="PLN2_1">)
- Measure TC1 part Plane 4 (<feature
name="PLN3" id="PLN3_1">)
- Construct Line Plane1/Plane2
intersect (<feature name="LINE0" id="LINE0_1">)
- Construct Point Line0/Plane3
intersect (<feature name="PT_0" id="PT_0_1">)
Determine PCS rotation matrix:
- Construct Line Plane1/Plane3 (<feature
name="LINE_00" id="LINE_00_1">)
Note: If you perform a
similar manual setup when producing a Test File for Test Case 1, we
suggest not using the naming
convention above to avoid comparisons of these features. In
general, since the test utility uses the feature name attribute to
identify benchmark file features to perform comparisons, during
benchmark comparisons, any feature of the test file that cannot be
identified in the benchmark file will be presented to the user as a
warning.
Feature - Circle 1
DMIS:
- Center point (-79.000, 9.000,
-10.000) mm
- Normal Vector <0.000,
0.000, -1.000>
- Diameter: 31 mm
- Diameter limit: 31 ± 0.05 mm
- At least 3 data points are
measured
Naming Convention:
- <feature
name = "CIR1">
- diameter_actual: <tolerance_actual sequence_id = "S1">
- cortol_actual: <tolerance_actual sequence_id = "S2">
- diameter_delta: <tolerance_nominal name="TOL8">
- cortol_delta: <tolerance_nominal name="TOL9">
Benchmark Identification: <feature name="CIR1" id="CIR1_1">
Feature - Plane 4
DMIS:
- A point on a plane: (-130.0,
0.000, 0.000)
- Direction vector of plane 4:
<0.000, 0.000, 1.000>
- Flatness: 0.25
- At least 3 data points on
plane 4 are measured
Naming Convention:
- <feature name = "PLN4">
- flatness_actual: <tolerance_actual sequence_id = "S4">
- flatness: <tolerance_nominal name = "TOL1">
Benchmark File Identificaton:
<feature name="PLN4" id="PLN4_1">
Feature - Point 1
DMIS:
- Point
coordinate at (-30.000, 9.000, 0.000)
- Vector
<0.000, 0.000, 1.000>
- Exactly one
data point is measured
Naming
Convention:
Benchmark File Identificaton:
<feature name="PT_1" id="PT_1_1">
Feature - Line 1
(Line 1 is the width of the slot
constructed by plane 1, 2, and 3)
DMIS:
- Point on plane 2:
(5.000, 0.000, -5.000)
- Point on plane 3:
(5.000, 18.000, -5.000)
- Normal vector (0.000, 0.000,
1.000)
- Length limit: 18 ± 0.5 mm
- Exactly 2 data points are
measured
Naming
Convention:
- <feature name = "LINE1">
- length_actual:
<tolerance_actual
sequence_id = "S3">
- length_delta: <tolerance_nominal name = "TOL2">
Benchmark File
Identification: <feature name="LINE1" id="LINE1_1">
Summary of DML Utility Features
| |
Feature
|
Description of
Features
|
Select
Test
|
Analysis
Internal & Bench
(default)
|
Perform
a complete analysis of a test file both internally and relative to a
benchmark file. A result file is generated when Internal
& Bench
is selected. |
Analysis
Internal Only
|
Perform
an internal analysis on the test file. A benchmark file is not
required. A result file is generated when Internal Only
is selected.
|
Analysis
View Results
|
Open
an existing result file for viewing.
|
Result Format
Errors Only
(default)
|
Display
only failed check information from the selected result file in the Result
Table panel. See known
bugs. |
Result Format
All Results
|
Display
all checks both pass and fail in the Result Table panel. See known
bugs. |
|
Set-Up
Files
and
Parameters
|
Test Id
(optional)
|
A
unique string identifier that is recorded in the result file. |
Vendor
Name
|
Vendor
information that is recorded in the result file. |
Schema
File
(default set)
|
Specify
a schema file. A valid schema file is required to perform a
complete analysis.
(default schema file: Schema_Files/DMLschema_2.1.xsd)
|
Test
File
|
Specify
the vendor or end user test file to be used for DML testing. If no
benchmark file is available, select Internal Only from the
select area. |
Bench
File
|
Specify
the benchmark file to be used for DML testing. Benchmark files
are
generated by NIST based on a test case within the test suite. The
benchmark file is used in comparison checks with a test file using a
mutual
test case. A bench file is required when Internal & Bench
are selected.
|
Result
File |
Specify the xml based result file to
be
generated when Internal & Bench or Internal Only
are selected,
or select an existing result file to be viewed when View Results
is
selected. |
|
Tolerances
|
Open
a pop-up table to specify any of the four tolerances (linear, angular,
vector, or matrix) when Internal & Bench or Internal Only are
selected. For a description of these tolerances, see the utility tolerances section.
|
Execute
Test
|
Well-Formed
|
Displays
the status of the test file for well-formed xml parser test. |
|
Validation
|
Displays the status of the test file validation against the
specified schema file. |
|
Analysis
|
Displays the status of the analysis execution. |
|
Tests
|
Displays
the total number of tests performed during the analysis.
|
|
Errors
|
Displays
the total number of errors found during the analysis. |
|
Warnings
|
Displays
the total number of warnings flagged during the analysis.
Warnings typically indicate that an optional element or attribute was
not used in the test file.
|
Execute
Test
|
Once
all required files are selected, this button initiates the execution of
an analysis when Internal
& Bench or Internal Only are selected. See known bugs.
|
Tabbed
Panels
See known
bugs.
|
Result Table
|
Displays
the selected xml based result file
using an XSL style sheet. Display contents are dependent on the
selection of Errors Only or All Results.
|
|
Result Data
|
Displays
a tree structure representing the xml-based contents of the
selected results file. |
|
Test Data
|
Displays
a tree structure representing the xml-based contents of the test
file. If the test file fails the well-formed test or schema
validation, the associated errors are displayed instead of the tree
structure. |
Bench Data
|
Displays
a tree structure representing the xml-based contents of the bench
file. If the bench file fails the well-formed test or schema
validation, the associated errors are displayed instead of the tree
structure. |
Schema
Support
|
Displays
a table showing schema requirements based an a selected DML file using
an XSL style sheet based on DML specification version 2.1. There
are
examples files to choose from and the current test file selected is
loaded
by default.
|
|
User Manual
|
Displays
this test suite user manual as html within the right window of the
tabbed panel and a set of indexes to the left. Click on an index
to traverse that topic within the document. |
Using the Test Utility
Operational Modes
Perform an analysis of a test file against a benchmark file (See Figure 4 below) :
1. Select "Analysis" Internal & Bench
2. Select "Result Format" Errors Only or All
Results
3. Set Test ID (optional)
4. Set Vendor Name (optional)
5. Set Schema File (default already set)
6. Set Test File
7. Set Bench File
8. Set Result File
9. Set Tolerances (default already set)
10. Select "DML Format" Name Convention (default)
11. Select Execute Test

Figure 4 - Flow Chart: Internal
& Bench Analysis
Perform an analysis of a test file only (See Figure 5
below) :
1. Select
"Analysis" Internal & Bench
2. Select "Result Format" Errors Only or All
Results
3. Set Test ID (optional)
4. Set Vendor Name (optional)
5. Set Schema File (default already set)
6. Set Test File
7. Set Result File
8. Set Tolerances (default already set)
9. Select Execute Test

Figure 5 - Flow Chart: Internal
Only
View a results file:
1. Select "Analysis" View Results
2. Select "Result Format" Errors Only or All Results
3. Set Result File
Operational Description
The NIST
DML Test Utility is divided into four main panels. Top half of
the main application contains the "Select Test" panel, the "Setup Files
and Parameters" panel , and the "Execute Test" panel. The bottom
half of the application contains the fourth panel which consists of a
set of tabbed panels. The three panels to to top are used for
specifying and executing an analysis. The lower tabbed panel
displays analysis results, test files, and user help information.
A quick help mechanism is also available at all times and is activated
by holding the cursor over a particular application function for a
short time resulting in a small pop-up containing an explanation of
this function.
The utility can be used to perform an analysis or view a result file
from a previous analysis. To perform an analysis, select
either Internal & Bench or Internal Only from
the "Analysis" area of Select Test panel. To view
an existing analysis result file, select View Results.
Selection of any item within "Analysis" configures the application
display for required input. Internal & Bench performs a complete analysis of a test file both internally
and relative to a benchmark file and generates a result file. Internal Only performs an internal analysis on the
test
file only and also produces a results file. A benchmark file is
not
required in this mode. View Results opens an existing result file for
viewing. The default
setting for Analysis is Internal & Bench.
The "Result Format" area of the Select Test panel contains the
two options Errors Only and All Results.
These options specify the format of the results that will be displayed
in the Result Table
tabbed panel in the lower half of the utility. Errors Only
displays just error information generated by an analysis, where, All
Results displays all information generated by an analysis (pass or
fail).
These options can be changed at any time. The default setting for
"Result Format" is Errors Only. See known
bugs.
The Setup panel will only contain enabled items that are
relevant to the selected "Analysis" option in the Select Test
panel. The Test ID and Vendor Name fields are
additional data stored in a result file for identification
purposes. The Schema File button sets the schema file to
be used to validate both the test and benchmark files
used in the analysis. The default is set to the DML 2.1 Schema.
The
Test File button selects the vendor generated DML file to be
tested and
the Bench File button selects the NIST generated Benchmark file
that
is used to for comparisons with the test file. Both of these
files
are checked to be well-formed and are validated against the Schema
File
when opened. Upon successful validation, the files will be
displayed
within the relevant tabbed panels, Test Data and Bench Data.
If any errors are encountered during the well-formed check or
validation,
the errors are displayed within the relevant tabbed panels. The result file button creates a new file for
documenting the results of an analysis or selects an existing result
file depending
on the Analysis option selected. See the Result File Format
section of this document for a description of this results xml
format. The Tolerances button opens a pop-up containing field to
enter utility tolerance values used during analysis processing. A
description of the tolerance types and how they are used in the
analysis can be found in the Setting the Utility
Tolerances section.
The Execute panel is used to initiate an analysis and contains analysis
status information pertaining to the test file being processed.
- Well
Formed displays
the
status of the test file for well-formed xml parser test.
- Validation displays the status of
the
test file validation against the specified schema file.
- Analysis
displays the status
of the analysis execution
- Tests displays the total number of of tests performed
during
the analysis.
- Errors displays the total
number of errors found
during
the analysis.
- Warnings displays
the total number of warnings flagged during the analysis.
Warnings
typically indicate that an optional element or attribute was not used
in the test file.
- Once
all required files are selected, the Execute button initiates
the an analysis when Internal
& Bench or Internal Only are selected. See known
bugs.
There are six tabbed panels in the lower half of the utility.
These panels are used to display various information to the user.
At any
time, if the tab of one of these panels is double clicked, that panel
will
be removed from the main utility window and displayed in a separate
window.
To return a panel to the main window, close the window. The Result
Table tab panel displays a results file based on the Result Format
option selected in the Select panel. The Result Data tab
displays a selectable tree of the results file
data. The Test Data and Bench Data tab panels
display either
the selected test file or benchmark file when successfully opened,
parsed
to be well-formed, and validated. The xml based DML files are
also
displayed in a selectable tree format. If any of these files fail
the
well-formed check or validation, an error is displayed in the
respective
tab panel in place of the selectable tree. The Schema
Support tab panel displays an XSL style sheet of the current set of
schema rules
relative to a DML file. The dml file can be selected from a list
of
example files or the currently selected valid test file is loaded
automatically.
The User Manual panel displays this test suite user manual as html within the
right
window of the tabbed panel and a set of indexes to the left for
efficient traversal of the document.
DML Test Utility Design
Java Tools
The NIST DML Test Utility is a Java
application developed using Java Standard Development Kit Version
1.4.2_06
(J2SDK). Along with the J2SDK (http://java.sun.com/j2se/1.4.2/),
the
utility also incorporates the JDOM API (http://www.jdom.org/) and the
Xerces
XML Parser (http://xml.apache.org/xerces-j/).
Analysis
An analysis can be performed
on a test file only or the analysis can also include comparisons with a
benchmark file. In each case, the DML files (test file and bench
file) selected for the analysis are first checked to be well-formed and
validated against a schema. The initiation of an analysis, via
the Execute button, parses the available DML files into
document object models for random access of data elements and
attributes. For each set of
elements under evaluation within the test
DOM, a set of internal tests are performed. Immediately following
the
internal tests, if in Internal & Bench mode, the
respective
bench comparisons are made.
The primary analysis steps are
based on the results_header, transformation_list,
nominal_tolerance_list, and feature_list element children. The
first step of the analysis
is to check and only proceed if the
dimensional_inspection_results
version attribute of the test file is set to DML version 2.1.
Next,
the test file results_header information as well as the transform_list
are
checked. Currently, analysis of the results_header element
children
includes only comparisons between the test file and benchmark file and
the
transform_list element children includes only internal checking.
Analysis
of the nominal_tolerance_list and feature_list element children
includes
both internal checks as well as benchmark comparisons in the presence
of
a benchmark file. Within each feature element of the
feature_list,
both internal checks and benchmark comparisons are performed within the
specific feature elements (i.e. plane_feature), however,
actual_tolerance
limits include only internal checks.
For a full listing of tests performed by this
analysis, see the Misinterpretations
section of the appendix. This document is currently under review
by the DML Working Group and will be expanded based on feedback.
Tolerances
There are four tolerances available
to specify prior to an analysis. They include linear, angular,
vector,
and matrix tolerances. These can be specified by selecting the Tolerances
button in the Setup Files and Paremeters area. A pop-up
window will appear with
fields for specifying the tolerances. After adjusting values,
click
OK to accept the tolerances. The current tolerances values
will
appear in the field next to the Tolerances button in the Setup
Files and Parameters
area.
Linear Tolerance is specified for performing checks between
linear values (i.e. diameter, length) or two points. To check a
diameter
value of 25mm to be within +/- 0.10 mm, the linear tolerance specified
would
be 0.10 mm.
Angular Tolerance is specified for performing checks between
angular values. For example, to check an angle value of 30 deg to
be within +/- 1.0 deg, the angular tolerance specified would be 1.0 deg.
Vector Tolerance is specified for performing checks between
vectors to determine if they equal or orthogonal.
Given the vectors:
a = axi + ayj + azk
b = bxi + byj + bzk
The following equation
is used to determining the angle between two vectors a and b:
To check equality, the angle between two vectors being compared is
calculated. If this calculated angle does not fall within zero +/- the vector tolerance specified
the vector equality comparison fails.
To check if two vectors are orthogonal, the angle between the two
vectors being compared is calculated. If the calculated angle
does not fall within 90 deg +/- the vector tolerance specified, the
vectors orthogonal
comparison fails.
Matrix Tolerance
is specified for performing checks to determine if a matrix is
orthogonal through the calculation of the matrix determinant as follows:
Given the vectors:
axi + ayj
+ azk
bxi + byj + bzk
cxi + cyj + czk
Determinant of the matrix:
det = axbycz - axbzcy + aybzcx - aybxcz + azbxcy -azbycx
A matrix
determinant of 1 or -1 indicates that a matrix is orthogonal. If
the absolute
value of the determinant does not fall within the range of 1.0 +/- the
matrix
tolerance specified, the matrix orthogonal check fails.
Appendix
Example DMIS Program (Test Case 1)
The following is
a DMIS program used to measure the Test Case 1 part on a CMM in
the
NIST Metrology Interoperability Testbed.
DMISMN/'TestCase1.dmi',
4.0
DISPLY/TERM, DMIS
FILNAM/ 'IMTS DMIS output',
4.0
$$ The below
lines perform
DML output
V(dmlEnable)=VFORM/ALL,DME,'DML'
DID(dmlLabel)=DEVICE/STOR,'DML\TestCase1.xml'
OPEN/DID(dmlLabel),FDATA,V(dmlEnable),OUTPUT
$$
$$ DMIS file, Generated by
Son Bui September 10, 2004
$$
$$
UNITS/MM,ANGDEC
PRCOMP/ON
SNSET/DEPTH,0.000
D(MCS1)=DATSET/MCS
DID(OUTFILE)=DEVICE/STOR,'C:\Out.dmo'
OPEN/DID(OUTFILE),FDATA,
DMIS, OUTPUT
SNSMNT/XVEC, 0.0, -1.0, 0.0,
ZVEC, 0.0, 0.0, -1.0, MNTLEN, 0.0, 0.0, -175.1
S(PROBE6)=SNSDEF/PROBE,
INDEX, POL, 0.0, 0.0, 0.0, 0.0, -1.0, 50, 4.0
SNSLCT/S(PROBE6)
SNSET/APPRCH,6.000
SNSET/SEARCH,9.000
SNSET/RETRCT,5.000
MODE/MAN
F(PLN1)=FEAT/PLANE,CART,0.0000,4.9000,15.0000,1.0000,0.0000,0.0000
MEAS/PLANE,F(PLN1),3
ENDMES
TEXT/OPER,
'Measure 3 points
on the bottom surface of a slot, which faces to the middle circle'
F(PLN2)=FEAT/PLANE,CART,2.0000,0.0000,15.0000,0.0000,1.0000,0.0000
MEAS/PLANE,F(PLN2),3
ENDMES
TEXT/OPER,
'Measure 3 points
on the left side surface of a slot, which faces to the middle circle'
F(PLN3)=FEAT/PLANE,CART,2.0000,0.0000,0.0000,0.0000,0.0000,1.0000
MEAS/PLANE,F(PLN3),3
ENDMES
TEXT/OPER,
'Measure 3 points
on the top surface of a part'
$$ Translate to a part
coordinate
F(LINE0)=FEAT/LINE,UNBND,CART,0.000,0.000,0.000,
0.000,0.000,1.000, $
0.000,1.000,0.000
F(PT_0)=FEAT/POINT,CART,0,0,0,0,0,1
$$ Construct a line from an intersection
of plane 1 and
plane 2
CONST/LINE,F(LINE0),INTOF,FA(PLN1),FA(PLN2)
$$ Construct a point from an
intersection between construct line 0 with plane 3
CONST/POINT,F(PT_0),INTOF,FA(LINE0),FA(PLN3)
OUTPUT/FA(PT_0)
$$ Translate a part
coordinate to constructed point 0
D(SYS1)=TRANS/XORIG,FA(PT_0),YORIG,FA(PT_0),ZORIG,FA(PT_0)
$$ rotate a part in
z-direction
F(LINE_00)=FEAT/LINE,UNBND,CART,0.000,0.000,0.000,
0.000,1.000,0.000, $
0.000,0.000,1.000
CONST/LINE,F(LINE_00),INTOF,FA(PLN1),FA(PLN3)
D(ROT1)=ROTATE/ZAXIS,FA(LINE_00),YDIR
$$INCLUD/DMIS,
'C:\Users\shbui\AP219\DML\CMM\INC02Mitutoyo.dmi'
$$D(PARTX) =
TRANS/XORIG,355.0,YORIG,91.0,ZORIG,-80.0
$$MODE/MAN
$$TEXT/OPER,
'Identify the
corner on the top surface of the part where'
$$TEXT/OPER, 'X and Y are
the minimum. Measure a point on the top surface'
$$TEXT/OPER, 'of the part as
close as possible to this corner.'
$$F(PT_0)=FEAT/POINT,
CART,
0,0,0, 0,0,1
$$MEAS/POINT,F(PT_0),1
$$ENDMES
$$D(PARTX)=TRANS/XORIG,FA(PT_0),YORIG,FA(PT_0),ZORIG,FA(PT_0)
MODE/PROG,MAN
$$GOTO/-79.000,9.000,100.000
GOTO/0.000,0.000,50.000
$$Cirlce
F(CIR1)=FEAT/CIRCLE,INNER,CART,-79.00,9.00,-10.00,0.00,0.00,-1.00,31.00
$$BOUND/F(CIR1), F(PLN1),
F(PLN4)
T(TOL8)=TOL/DIAM,-0.100,0.100
T(TOL9)=TOL/CORTOL,ZAXIS,-0.1,0.1
MEAS/CIRCLE,F(CIR1),4
GOTO/-79.000,9.000,10.000
GOTO/-79.000,9.000,-10.000
PTMEAS/CART,-79.000,-6.500,-10.000,0.000,1.000,0.000
PTMEAS/CART,-94.500,9.000,-10.000,1.000,0.000,0.000
PTMEAS/CART,-79.000,24.500,-10.000,0.000,-1.000,0.000
PTMEAS/CART,-63.500,9.000,-10.000,-1.000,-0.000,0.000
GOTO/-79.000,9.000,10.000
ENDMES
TEXT/OUTFIL,'CIR1 - CIRCLE -
'
OUTPUT/FA(CIR1),
TA(TOL8),TA(TOL9)
$$Line
F(LINE1)=FEAT/LINE,BND,CART,5.000,0.000,-5.000,
5.000,18.000,-5.000, $
0.000,0.000,1.000
$$T(TOL10)=TOL/DISTB,NOMINL,10.00,-0.1,0.1,PT2PT
MEAS/LINE,F(LINE1),2
GOTO/2.000,9.00,10.00
PTMEAS/CART,5.000,0.000,-5.000,0000,1.00,0.000
PTMEAS/CART,5.000,18.000,-5.000,0000,-1.00,0.000
GOTO/0.000,9.500,15.000
ENDMES
TEXT/OUTFIL,'LINE1 - LINE- '
OUTPUT/FA(LINE1)
$$Plane
F(PLN4)=FEAT/PLANE,CART,-130.00,0.000,0.000,0.000,0.000,1.000
T(TOL1)=TOL/FLAT,0.050
MEAS/PLANE,F(PLN4),4
GOTO/-130.00,15.000,15.00
PTMEAS/CART,-130.0,+24.000,0.000,0.000,0.000,1.000
PTMEAS/CART,-36.000,+24.000,0.000,0.000,0.000,1.000
PTMEAS/CART,-36.000,-6.000,0.000,0.000,0.000,1.000
PTMEAS/CART,-130.000,-6.000,0.000,0.000,0.000,1.000
GOTO/-36.000,0.000,20.000
ENDMES
DATDEF/FA(PLN4),DAT(A)
TEXT/OUTFIL,'PLN4 - PLANE- '
OUTPUT/FA(PLN4),TA(TOL1)
$$POINT
F(PT_1)=FEAT/POINT,CART,-30.000,9.000,0,0,0,1
MEAS/POINT,F(PT_1),1
PTMEAS/CART,-30.000,9.000,0.000,0.000,0.000,1.000
GOTO/0.000,0.000,20.000
ENDMES
TEXT/OUTFIL,'PT_1 - POINT- '
OUTPUT/FA(PT_1)
CLOSE/DID(OUTFILE)
CLOSE/DID(dmlLabel)
ENDFIL
Result File Format
The
following is an example results file to show the format used the the
NIST DML Test Utility to store analysis result information.
<?xml version="1.0"
encoding="UTF-8"?>
<Results id="Nist demo">
<Profile>
<TestFile>PlaneFeature.xml</TestFile>
<BenchFile>PlaneFeature_B.xml</BenchFile>
<Company>NIST</Company>
<Comparisons>50</Comparisons>
<Errors>16</Errors>
<Warnings>2</Warnings>
</Profile>
<Formed
result="pass" />
<Valid
result="pass" />
<Analysis
type="dimensional_inspection_results"
errors="NO">
<Comparison line="4" result="PASS">
<Type>dimensional_inspection_results:
version</Type>
<Benchmark>2.0</Benchmark>
<Test>2.0</Test>
<Result>pass:
attributes
are equal</Result>
</Comparison>
</Analysis>
<Analysis
type="results_header"
errors="NO">
<Comparison line="8" result="PASS">
<Type>part_program_info:
tolerance_std</Type>
<Benchmark>ASME</Benchmark>
<Test>ASME</Test>
<Result>pass:
attributes
are equal</Result>
</Comparison>
<Comparison line="7" result="PASS">
<Type>part_inspection_status:
status</Type>
<Benchmark>PASS</Benchmark>
<Test>PASS</Test>
<Result>pass:
attributes
are equal</Result>
</Comparison>
<Comparison line="22" result="PASS">
<Type>compensated_default:
compensated</Type>
<Benchmark>YES</Benchmark>
<Test>YES</Test>
<Result>pass:
attributes
are equal</Result>
</Comparison>
</Analysis>
<Analysis
type="transformList" errors="NO" />
<Analysis
type="transform: IDENTITY"
errors="NO">
<Comparison line="28" result="PASS">
<Type>transform(id=IDENTITY)</Type>
<Benchmark>N/A</Benchmark>
<Test>matrix:
1.0,0.0,0.0 | 0.0,1.0,0.0 | 0.0,0.0,1.0</Test>
<Result>pass: matix
is orthogonal</Result>
</Comparison>
</Analysis>
<Analysis
type="feature: Plane1" errors="YES">
<Comparison line="71" result="FAIL">
<Type>plane_feature_nominal|actual
: point</Type>
<Benchmark>N/A</Benchmark>
<Test>point1:
123400.1234, 1244.1234, 1234.1234 | point2: 1234.2345, 1234.2345,
1234.2345</Test>
<Result>fail: actual
point is not equal to nominal point +/-0.1</Result>
</Comparison>
.
.
.
<Comparison line="128" result="PASS">
<Type>point_list:
measured_point</Type>
<Benchmark>N/A</Benchmark>
<Test>points:
(1234.2345,1234.2345,1234.2345) (1234.2345,1234.2345,1234.2345)
(1234.2345,1234.2345,1234.2345)</Test>
<Result>pass: at
least 3
points are specified</Result>
</Comparison>
</Analysis>
</Results>
DML 2.2
Misinterpretations List
This
table lists the data
misinterpretations of the DML 2.2 features and tolerances, that are
represented
by sample files, and are tested by the 1.0 Test Utility.
After a DML file
passes the well-formedness
check and an XSD validation test, the NIST DML Test Utility will check
for these various misinterpretations. While this list is specific to the
four
features and associated tolerances of the depth-first approach, the
Microsoft
Word file documentation/dml_misinterpretations_09_14_2004.doc
contains a listing for all DML 2.2 features and tolerances.
Table 1 - Feature Misinterpretations
(depth-first)
| Features |
Nominal/Actual/
Point_list |
Attributes &
Used
Elements |
Need to be
similar
with benchmark? |
Description |
Line
Feature
|
|
|
|
|
|
nominal
|
length
|
yes
|
length must be greater than zero
nominal length value is about the same as the value of actual length
|
|
|
point(x,y,z)
|
no
|
|
|
|
vector(i,j,k)
|
no
|
vector must be orthogonal with normal
|
|
|
normal(i,j,k)
|
no
|
normal must be orthogonal with vector
nominal normal unit vector must be the same as actual normal unit
|
|
|
coordinate_type
|
yes
|
|
|
actual
|
length
|
yes
|
length must be greater than zero
nominal length value is about the same as the value of actual length
|
|
|
point(x,y,z)
|
no
|
|
|
|
vector(i,j,k)
|
no
|
vector must be
orthogonal with
normal
|
|
|
normal(i,j,k)
|
no
|
normal must be
orthogonal with
vector
nominal normal unit vector must be the same as actual normal unit
|
|
|
coordinate_type
|
yes
|
|
|
point_list
|
point
|
no
|
must have at
least 2 nominal and
actual
points
|
|
|
normal
|
no
|
2 nominal and
actual points must
have
different values
|
circle_feature
|
|
type
|
yes
|
|
|
nominal
|
center_point
|
no
|
|
|
|
normal
|
no
|
nominal normal unit vector must be the same as actual normal
unit
vector
|
|
|
diameter
|
yes
|
diameter must be greater than zero
nominal diameter value is about the same as the value of actual diameter
|
|
actual
|
center_point
|
no
|
|
|
|
normal
|
no
|
actual normal unit vector must be the same as nominal normal
unit
vector
|
|
|
diameter
|
yes
|
diameter must be greater than zero
diameter must be less than or equal to diameter_max and greater than or
equal
to diameter_min
actual diameter value is about the same as the value of nominal diameter
|
|
|
diameter_min |
no
|
diameter_min must be greater than zero
diameter_min must be less than or equal to diameter_max
|
|
|
diameter_max
|
no
|
diameter_max must be greater than zero
diameter_max must be greater than or equal to diameter_min
|
|
|
point(x,y,z)
|
no
|
must have at
least 3 nominal and
actual
points
3 nominal and actual points must be different
|
|
|
normal(i,j,k)
|
no
|
|
plane_feature
|
|
|
|
|
|
nominal
|
point
|
no
|
|
|
|
poly_line
|
no
|
all points that
define poly_line
must
be different
|
|
|
normal
|
no
|
normal vector of
nominal must be
about
the same as normal vector of actual
|
|
|
coordinate_type
|
yes
|
|
|
actual
|
point
|
no
|
|
|
|
poly_line
|
no
|
all points that
define poly_line
must
be different
|
|
|
normal
|
no
|
normal vector of
nominal must be
about
the same as normal vector of actual
|
|
|
coordinate_type
|
yes
|
|
|
point_list
|
point
|
no
|
must have at
least 3 nominal and
actual
points
3 nominal and actual points must be different
|
point_feature
|
|
|
|
|
|
nominal
|
point
|
no
|
|
|
|
normal
|
no
|
|
|
|
coordinate_type
|
yes
|
|
|
actual
|
point
|
no
|
|
|
|
normal
|
no
|
|
|
|
coordinate_type
|
yes
|
|
Table
2 - Tolerance Misinterpretations (depth-first)
Tolerances
|
Attributes
|
Need
to be similar with benchmark? |
Description
of Error
|
zone_data
|
feature
|
no
|
|
distance
|
yes
|
distance >= 0
decimal place must be specified when comparing 2 values
|
mcm_bonus
|
zone_plane
|
A
|
no
|
||<A,B,C>|| = 1
decimal place must be specified when comparing 2 values
|
B
|
C
|
D
|
diameter_limit
radius_limit
|
lower_limit
|
yes
|
lower_limit > upper_limit
nominal < 0
lower_limit <= nominal <= upper_limit
|
upper_limit
|
nominal
|
perfect_form_at_mmc
|
no
|
cone_end
|
|