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
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
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
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/.
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.
To run the NIST DML Test Utility Java application on your computer platform you must have version 1.4.2 of the JRE installed.The Directory structure for Test
Suite 1.0 is as follows:
DMIS:
Naming Convention:
Benchmark Identification: <feature name="CIR1" id="CIR1_1">
DMIS:
Naming Convention:
Benchmark File Identificaton: <feature name="PLN4" id="PLN4_1">
DMIS:
Naming Convention:
(Line 1 is the width of the slot constructed by plane 1, 2, and 3)
DMIS:
Naming Convention:
Summary of DML Utility Features Select Set-Up
Test
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.
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.
View Results Open
an existing result file for viewing.
Errors Only
(default)
Display
only failed check information from the selected result file in the Result
Table panel. See known
bugs.
All ResultsDisplay
all checks both pass and fail in the Result Table panel. See known
bugs.
Files
and
Parameters
(optional)
A
unique string identifier that is recorded in the result file.
Name
Vendor
information that is recorded in the result file.
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)
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.
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
FileSpecify 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.
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
Displays
the status of the test file for well-formed xml parser test.
Displays the status of the test file validation against the
specified schema file.
Displays the status of the analysis execution.
Displays
the total number of tests performed during the analysis.
Displays
the total number of errors found during the analysis.
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.
TestOnce
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.
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.
Displays
a tree structure representing the xml-based contents of the
selected results file.
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.
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.
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.
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.


Example DMIS Program (Test Case 1)
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
ENDMES
TEXT/OUTFIL,'LINE1 - LINE- '
OUTPUT/FA(LINE1)
$$Plane
T(TOL1)=TOL/FLAT,0.050
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
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
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.
| 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 |
| 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 |
yes |
||
| diameter_delta radius_delta |
lower_delta |
yes |
lower_delta > upper_delta nominal < 0 |
| upper_delta |
|||
| nominal |
|||
| perfect_form_at_mmc |
no |
||
| cone_end |
yes |
||
| diameter_actual |
diameter |
yes |
diameter, min_diameter,
max_diameter
< 0 min_diameter > max_diameter |
| min_diameter |
|||
| max_diameter |
|||
| radius actual |
radius |
yes |
radius, min_radius, max_radius
<
0 min-radius<=radius<=max_radius |
| min_radius |
|||
| max_radius |
|||
| length_limit |
lower_limit |
yes |
nominal < 0 lower_limit > upper_limit lower_limit <= nominal <= upper_limit |
| upper_limit |
|||
| nominal |
|||
| perfect_form_at_mmc |
no |
||
| i j k |
no |
||
| length_delta |
lower_delta |
yes |
nominal < 0 lower_delta > upper_delta |
| upper_delta |
|||
| nominal |
|||
| perfect_form_at_mmc |
no |
||
| i j k |
no |
right-hand/ left-hand rule |
|
| length_actual |
length |
yes |
min_length > max_length length, min_length, and max_length < 0 |
| min_length |
|||
| max_length |
|||
| angle_limit |
lower_limit |
yes |
lower_limit > upper_limit direction of angle error lower_limit <= nominal <= upper-limit |
| upper_limit |
|||
| nominal |
|||
| perfect_form_at_mmc |
no |
||
| angle_delta |
lower_delta |
yes |
lower_delta > upper_delta direction of angle error |
| upper_delta |
|||
| nominal |
|||
| perfect_form_at-mmc |
no |
||
| angle_actual angle_between_actual |
angle |
yes |
min_angle > max_angle direction of angle error min_angle <= angle <= max_angle |
| min_angle |
|||
| max_angle |
|||
| angle_between_limit |
lower_limit |
yes |
lower_limit
> upper_limit lower_limit <= nominal <= upper_limit direction of angle error |
| upper_limit |
|||
| nominal |
|||
| origin_feature |
no |
||
| origin_flag |
yes |
||
| angle_between_delta |
lower_delta |
yes |
lower_delta
> upper_delta lower_limit <= nominal <= upper_limit direction of angle error |
| upper_delta |
|||
| nominal |
|||
| origin_feature |
no |
||
| origin_flag |
yes |
||
| cortol_limit |
lower_limit |
yes |
lower_limit
> upper_limit lower_limit <= nominal <= upper_limit |
| upper_limit |
|||
| nominal |
|||
| base_pcs |
no |
||
| direction |
yes |
||
| cortol_delta |
lower_delta |
yes |
lower_delta
> upper_delta |
| upper_delta |
|||
| nominal |
|||
| base_pcs |
no |
||
| direction |
yes |
||
| cortol_actual |
deviation |
yes |
|
| straightness |
tolerance_value |
yes |
|
| unit_tolerance_value |
|||
| unit_length_value |
|||
| material_condition |
yes |
||
| i j k |
no |
right-hand
or left-hand rule error |
|
| straightness_actual |
max_straightness |
no |
|
| spread |
|||
| deviation |
|||
| flatness |
tolerance_value |
yes |
|
| unit_tolerance_value |
|||
| unit_area_x_value |
|||
| unit_area_y_value |
|||
| flatness_actual |
max_flatness |
no |
|
| spread |
|||
| deviation |
|||
| perpendicularity_pln_actual angularity_pln_actual |
spread |
no |
|
| deviation |
|||
| datums_ok |
yes |
||
| perpendicularity_pln_zone |
tolernace_value |
yes |
|
| tangent_plane |
yes |
||
| material_condition |
yes |
||
| i j k |
no |
right-hand
/ left-hand rule error |
|
| grouping_requirement |
yes |
||
| datums-virtual_condition |
yes |
||
| angularity_pln_zone |
tolerance_value |
yes |
|
| material_condition | yes |
||
| grouping_requirement |
yes |
||
| datums_virtual_condition |
yes |