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:



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:

file system diagram

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:

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.



part layout

Figure 2 - Test Case 1 Coordinate System and Feature Identification



part dimensions
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:

Determine PCS rotation matrix:

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:

Naming Convention:

Benchmark Identification:  <feature name="CIR1" id="CIR1_1">


Feature - Plane 4

DMIS:

Naming Convention:

Benchmark File Identificaton:  <feature name="PLN4" id="PLN4_1">


Feature - Point 1

DMIS:

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:

Naming Convention:

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


flow chart 1

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



flow chart 2

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. 

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:
Equation

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