Skip to content

General Tolerances

The Title Block typically lists the General Tolerances. They indicate what deviations from the nominal geometry are tolerable when they are not explicitly annotated on the measures, angles or GD&Ts.

Enrichments

Translation to Tolerance Tables

Whenever WERK24 finds General Tolerances on the Title Block, we return all associated tolerance tables. This allows you to deal with local and foreign norms in exactly the same way.

Supported General Tolerance Standards

Currently, we support the parsing of the ISO 2786 and the withdrawn DIN 7168. The data models are designed so that future support of per-factory and per-drawing defintions can be supported. If you require the support of a national standard, please reach out to us.

Tolerance Standard Support Standard Status Comment
DIN_7168 full Retracted Versions: DIN 7168-1:1981-05, DIN 7168-2:1986-07, DIN 7168:1991-04
ISO_2768 full Active Versions: ISO 2768-1:1989-11
ISO_4759_1 limited Active Versions: ISO 4759-1:1978-12, ISO 4759-1:2000-11
DEFINED_ON_SHEET limited Used when the handling of unspecified tolerances is handled directly on the sheet

Model

Extracted information can be accessed from the W24GeneralTolerances Model.

W24GeneralTolerances

Object representing the General Tolerances indicated on the Title Block of the Technical Drawing.

Properties

  • position: Refer to #/definitions/W24BaseFeaturePosition.

  • blurb (string)

  • tolerance_standard: Refer to #/definitions/W24GeneralTolerancesStandard.

  • principle: Refer to #/definitions/W24GeneralTolerancesPrinciple.

  • angular_class: Refer to #/definitions/W24ToleranceClass.

  • flatness_class: Refer to #/definitions/W24ToleranceClass.

  • straightness_class: Refer to #/definitions/W24ToleranceClass.

  • linear_class: Refer to #/definitions/W24ToleranceClass.

  • radius_class: Refer to #/definitions/W24ToleranceClass.

  • runout_class: Refer to #/definitions/W24ToleranceClass.

  • symmetry_class: Refer to #/definitions/W24ToleranceClass.

  • perpendicularity_class: Refer to #/definitions/W24ToleranceClass.

Definitions

  • W24BaseFeatureCoordinate (object): Coordinate point
    Attributes: x: x position normalized by the thumbnail's width
    y: y position normalized by the thumbnail's height.

  • x (number)

  • y (number)

  • W24BaseFeaturePosition (object): Position of the Feature on the individual thumbnails normalized by the width and height of each thumbnail.
    Each features position is indicated as a list of coordinates. If the list only has two elements, you are dealing with a line. If it has four or more, you are looking at a polygon
    Attributes: page: Position of the Feature on the Page thumbnail
    sheet: Position of the Feature on the Sheet thumbnail
    sectional: Position of the Feature on the Sectional thumbnail.

  • sheet (array)

    • Items: Refer to #/definitions/W24BaseFeatureCoordinate.
  • canvas (array)

    • Items: Refer to #/definitions/W24BaseFeatureCoordinate.
  • sectional (array)

    • Items: Refer to #/definitions/W24BaseFeatureCoordinate.
  • W24GeneralTolerancesStandard (string): Enum of all supported General Tolerance Standards. Must be one of: ['DIN 7168', 'ISO 2768', 'ISO 4759-1', 'DEFINED_ON_SHEET'].

  • W24GeneralTolerancesPrinciple (string): Enum of the supported General Tolerance Principles. Must be one of: ['INDEPENDENCE', 'ENVELOPE'].

  • W24ToleranceProperty (string): Enum of all attributes that can be described by general tolerances. Must be one of: ['ANGULAR', 'FLATNESS', 'LINEAR', 'PERPENDICULARITY', 'RADIUS', 'RUNOUT', 'STRAIGHTNESS', 'SYMMETRY'].

  • W24ToleranceTableItem (object)

  • nominal_min (number)

  • nominal_max (number)

  • deviation_min (number)

  • deviation_max (number)

  • W24ToleranceClass (object): Tolerance Class which matches an individual attribute of the General Tolerances to a tolerance property and tolerance table
    Attributes: blurb: Tolerance class label for human consumption
    property: Property that is being tolerated
    table: Rows of the tolerance table that correspond to the selected tolerance class.

  • blurb (string)

  • property: Refer to #/definitions/W24ToleranceProperty.

  • table (array)

    • Items: Refer to #/definitions/W24ToleranceTableItem.

Requesting the General Tolerances

from werk24 import Hook, W24AskTitleBlock
from werk24.models.techread import W24TechreadMessage
from werk24.utils import w24_read_sync

# define a function to read a file and return it as bytes
from . import get_drawing_bytes


def recv_title_block(message: W24TechreadMessage) -> None:
    """ print the General Tolerances when we received them
    """
    if message.is_successful:
        print(message.payload_dict.get('general_tolerances'))
    else:
        print("Exceptions occurred: {message.exceptions}")


if __name__ == "__main__":

    # get your drawing bytes from a file or buffer
    drawing_bytes = get_drawing_bytes()

    # define what information you want to receive from the API
    # and what shall be done when the info is available.
    hooks = [Hook(ask=W24AskTitleBlock(), function=recv_title_block)]

    # submit the request to the Werk24 API
    w24_read_sync(drawing_bytes, hooks)

Example Response

"general_tolerances": {
    "blurb": "ISO 2768-mK-E",
    "tolerance_standard": "ISO 2768",
    "principle": "ENVELOPE",
    "angular_class": {
        "blurb": "m",
        "property": "ANGULAR",
        "table": [
            {
                "nominal_min": 0.0,
                "nominal_max": 10.0,
                "deviation_min": -1.0,
                "deviation_max": 1.0
            },
            {
                "nominal_min": 10.0,
                "nominal_max": 50.0,
                "deviation_min": -0.5,
                "deviation_max": 0.5
            },
            {
                "nominal_min": 50.0,
                "nominal_max": 120.0,
                "deviation_min": -0.3333333333333333,
                "deviation_max": 0.3333333333333333
            },
            {
                "nominal_min": 120.0,
                "nominal_max": 400.0,
                "deviation_min": -0.16666666666666666,
                "deviation_max": 0.16666666666666666
            },
            {
                "nominal_min": 400.0,
                "nominal_max": Infinity,
                "deviation_min": -0.08333333333333333,
                "deviation_max": 0.08333333333333333
            }
        ]
    },
    "flatness_class": {
        "blurb": "K",
        "property": "FLATNESS",
        "table": [
            {
                "nominal_min": 0.0,
                "nominal_max": 10.0,
                "deviation_min": -0.05,
                "deviation_max": 0.05
            },
            {
                "nominal_min": 10.0,
                "nominal_max": 30.0,
                "deviation_min": -0.1,
                "deviation_max": 0.1
            },
            {
                "nominal_min": 30.0,
                "nominal_max": 100.0,
                "deviation_min": -0.2,
                "deviation_max": 0.2
            },
            {
                "nominal_min": 100.0,
                "nominal_max": 300.0,
                "deviation_min": -0.4,
                "deviation_max": 0.4
            },
            {
                "nominal_min": 300.0,
                "nominal_max": 1000.0,
                "deviation_min": -0.6,
                "deviation_max": 0.6
            },
            {
                "nominal_min": 1000.0,
                "nominal_max": 3000.0,
                "deviation_min": -0.8,
                "deviation_max": 0.8
            }
        ]
    },
    "straightness_class": {
        "blurb": "K",
        "property": "STRAIGHTNESS",
        "table": [
            {
                "nominal_min": 0.0,
                "nominal_max": 10.0,
                "deviation_min": -0.05,
                "deviation_max": 0.05
            },
            {
                "nominal_min": 10.0,
                "nominal_max": 30.0,
                "deviation_min": -0.1,
                "deviation_max": 0.1
            },
            {
                "nominal_min": 30.0,
                "nominal_max": 100.0,
                "deviation_min": -0.2,
                "deviation_max": 0.2
            },
            {
                "nominal_min": 100.0,
                "nominal_max": 300.0,
                "deviation_min": -0.4,
                "deviation_max": 0.4
            },
            {
                "nominal_min": 300.0,
                "nominal_max": 1000.0,
                "deviation_min": -0.6,
                "deviation_max": 0.6
            },
            {
                "nominal_min": 1000.0,
                "nominal_max": 3000.0,
                "deviation_min": -0.8,
                "deviation_max": 0.8
            }
        ]
    },
    "linear_class": {
        "blurb": "m",
        "property": "LINEAR",
        "table": [
            {
                "nominal_min": 0.5,
                "nominal_max": 3.0,
                "deviation_min": -0.1,
                "deviation_max": 0.1
            },
            {
                "nominal_min": 3.0,
                "nominal_max": 6.0,
                "deviation_min": -0.1,
                "deviation_max": 0.1
            },
            {
                "nominal_min": 6.0,
                "nominal_max": 30.0,
                "deviation_min": -0.2,
                "deviation_max": 0.2
            },
            {
                "nominal_min": 30.0,
                "nominal_max": 120.0,
                "deviation_min": -0.3,
                "deviation_max": 0.3
            },
            {
                "nominal_min": 120.0,
                "nominal_max": 400.0,
                "deviation_min": -0.5,
                "deviation_max": 0.5
            },
            {
                "nominal_min": 400.0,
                "nominal_max": 1000.0,
                "deviation_min": -0.8,
                "deviation_max": 0.8
            },
            {
                "nominal_min": 1000.0,
                "nominal_max": 2000.0,
                "deviation_min": -1.2,
                "deviation_max": 1.2
            },
            {
                "nominal_min": 2000.0,
                "nominal_max": 4000.0,
                "deviation_min": -2.0,
                "deviation_max": 2.0
            },
            {
                "nominal_min": 4000.0,
                "nominal_max": 8000.0,
                "deviation_min": -3.0,
                "deviation_max": 3.0
            }
        ]
    },
    "radius_class": {
        "blurb": "m",
        "property": "RADIUS",
        "table": [
            {
                "nominal_min": 0.5,
                "nominal_max": 3.0,
                "deviation_min": -0.2,
                "deviation_max": 0.2
            },
            {
                "nominal_min": 3.0,
                "nominal_max": 6.0,
                "deviation_min": -0.5,
                "deviation_max": 0.5
            },
            {
                "nominal_min": 6.0,
                "nominal_max": 30.0,
                "deviation_min": -1.0,
                "deviation_max": 1.0
            },
            {
                "nominal_min": 30.0,
                "nominal_max": 120.0,
                "deviation_min": -2.0,
                "deviation_max": 2.0
            },
            {
                "nominal_min": 120.0,
                "nominal_max": 400.0,
                "deviation_min": -4.0,
                "deviation_max": 4.0
            }
        ]
    },
    "runout_class": {
        "blurb": "K",
        "property": "RUNOUT",
        "table": [
            {
                "nominal_min": 0.0,
                "nominal_max": Infinity,
                "deviation_min": -0.2,
                "deviation_max": 0.2
            }
        ]
    },
    "symmetry_class": {
        "blurb": "K",
        "property": "SYMMETRY",
        "table": [
            {
                "nominal_min": 0.0,
                "nominal_max": 100.0,
                "deviation_min": -0.6,
                "deviation_max": 0.6
            },
            {
                "nominal_min": 100.0,
                "nominal_max": 300.0,
                "deviation_min": -0.6,
                "deviation_max": 0.6
            },
            {
                "nominal_min": 300.0,
                "nominal_max": 1000.0,
                "deviation_min": -0.8,
                "deviation_max": 0.8
            },
            {
                "nominal_min": 1000.0,
                "nominal_max": 3000.0,
                "deviation_min": -1.0,
                "deviation_max": 1.0
            }
        ]
    },
    "perpendicularity_class": {
        "blurb": "K",
        "property": "PERPENDICULARITY",
        "table": [
            {
                "nominal_min": 0.0,
                "nominal_max": 100.0,
                "deviation_min": -0.4,
                "deviation_max": 0.4
            },
            {
                "nominal_min": 100.0,
                "nominal_max": 300.0,
                "deviation_min": -0.6,
                "deviation_max": 0.6
            },
            {
                "nominal_min": 300.0,
                "nominal_max": 1000.0,
                "deviation_min": -0.8,
                "deviation_max": 0.8
            },
            {
                "nominal_min": 1000.0,
                "nominal_max": 3000.0,
                "deviation_min": -1.0,
                "deviation_max": 1.0
            }
        ]
    }
}

Error Handling

Things do not always run smoothly. When you request the General Tolerances, the following exceptions might be triggered.

Exception Type Level Description
DRAWING_FILE_FORMAT_UNSUPPORTED ERROR The drawing could not be read in any of the supported file formats. Refer to Limitations/DrawingFileFormats for details.
DRAWING_FILE_SIZE_TOO_LARGE ERROR The drawing exceeded the file size limit. Refer to Limitations/DrawingFileSize for details.
DRAWING_RESOLUTION_TOO_LOW ERROR The drawing has a low resolution and could not be read. Refer to Limitations/DrawngResolution for details.
DRAWING_CONTENT_NOT_UNDERSTOOD ERROR The file could not be interpreted as Technical Drawing or does not contain a TitleBlock.