# Workflow

## EasyGauge

**EasyGauge** library controls dimensions. It accurately determines position, orientation, curvature and size of parts. It can interact graphically to place and size gauges, combine them in grouped hierarchies, and store and retrieve them with all their parameters.

![image](assets/images/easygauge/pointlocationindifferent.webp)

#### NOTE
The theoretical best-case accuracy is 1/64<sub>th</sub> pixel for all **EasyGauge** operators. In practice, you can assume an accuracy of 1/10<sub>th</sub> pixel.

## Workflow

The gauge model can be built programmatically or in a graphical editor, then “played” in the final application.<br />
\\\\
Choose the workflow that matches the complexity of your model and the accuracy required: uncalibrated, calibrated or grouped.

### Uncalibrated Gauging: for a Simple Model

**EasyGauge** basic use is straightforward.

1. Create a gauge object that corresponds to the required measurement.
2. Change the parameters whose default values are not appropriate.
3. Invoke the desired measurement function.
4. Read the resulting position parameters.

**Uncalibrated gauging** is easy to implement but has several drawbacks:

- Measurements are performed in pixels, not millimeters.
- Measurement models are not portable: gauge positions and sizes must be reworked if viewing conditions change.
- Optical distortion or perspective causes inaccurate measurements.

### Calibrated Gauging: for One or Two Simple Measurement Sites

Calibrated gauging is more accurate, and measures the inspected parts independently of the viewing conditions.<br />
\\\\
All measurements are taken in the calibrated units, with any distortion implicitly compensated. Refer to Calibration to learn how to master field-of-view calibration.

1. Create a calibrator object.
2. Place it on the inspected scene.
3. Adjust calibration parameters.
4. Attach a gauge.

### Complex Gauging

Gauges can be grouped (see Gauge Manipulation Processes) and attached to another item:

* *Attaching gauges to an* [`EFrameShape`](../../../../doxygen_cpp/classeVision_1_1Legacy_1_1EFrameShape.html) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1Legacy_1_1EFrameShape.html) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1Legacy_1_1EFrameShape.html) object moves the gauges with the frame (translation and/or rotation), the application program must adjust the frame position to track the inspected part.
* *Attaching gauges to another gauge* moves them according to the measured position of the supporting gauge. For example, if gauges are attached to a common rectangle gauge that is detecting the outline of a part, all gauges automatically track the part when the rectangle outline is fitted.

If using several measurement sites, you can save the complete model, with calibration modes, coefficients, and attached gauges, in a single file.

#### NOTE
Unlike the rest of **eVision**, **EasyGauge** uses a pixel center origin (see [Image Coordinate Systems](../../../../conventions/image_coordinate_systems.html.md). The subpixel coordinate (0, 0) is the center of the upper left pixel of the image.
