Skip to content

Geometric Dimensioning and Toleration (GD&Ts) Frames

Geometric Dimensioning and Tolerancing (GD&T) is a system for defining and communicating the allowed geometric deviations from the norm geometry. These deviations can concern the shape, direction, location and run of a feature relative to a reference position. The table below gives you an overview of the available attributes.

Shape Direction Location Run
⏤ Straightness ∥ Parallelism ⌖ Position ↗ Circular Runout
⏥ Flattness ⟂ Perpendicularity ◎ Concentricity
○ Circularity ∠ Angularity ◎ Coaxiality
⌭ Cylindricity ⌯ Symmetry
⌒ Line Profile ⌒ Line Profile ⌒ Line Profile ⌰ Total Runout
⌓ Surface Profile ⌓ Surface Profile ⌓ Surface Profile

Source: Hoischen, H., & Hesser, W.(2011): Technisches Zeichnen: Grundlagen, Normen, Beispiele, darstellende Geometrie ; Lehr-, Übungs- und Nachschlagewerk für Schule, Fortbildung, Studium und Praxis ; mit mehr als 100 Tabellen 33., überarb. und aktualisierte Aufl.. Cornelsen.

Models

The data models are defined in the following models:

Extracted information can be accessed from the W24GDT Model.

W24GDT

Parent object for Geometric Dimensionsing and Toleration Frames, attaching them to the physical location on the drawing.

Attributes: frame: Representation of the GDT frame

Properties

  • position: Refer to #/definitions/W24BaseFeaturePosition.

  • bounding_polygon (array)

  • Items (array)

    • Items_0 (number)

    • Items_1 (number)

  • frame: Refer to #/definitions/W24GDTFrame.

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.
  • W24GDTCharacteristic (string): Enum of all possible Characteristics following ISO 1101.
    !!! note When the GDT frame only describes the location of a reference datum, the value DATUM_INDICATOR is used. Must be one of: ['⏤', '⏥', '○', '⌭', '⌓', '⌒', '⟂', '∠', '∥', '⌖', '◎', '⌯', '↗', '⌰', '[DATUM]'].

  • W24GDTZoneShape (string): Enum of all zone shapes . Must be one of: ['Ø', 'S⌀'].

  • W24GDTZoneValue (object): Preliminary defintion of the GDT Zone Value Future implementation will give access to the width and extend seperately
    Attributes:
    blurb: String representation for human consumption e.g., 0.05/12x10°
    width_min: Minimal width. Also used when no maximal width is defined.
    width_max: Optional maximal width.
    extend_quantity: Optional quantity of the spacing
    extend_shape: Optional shape of the extend
    extend_value: Optional extend value
    extend_angle: Optional angle of the extend.

  • blurb (string)

  • width_min (number)

  • width_max (number)

  • extend_quantity (integer)

  • extend_shape: Refer to #/definitions/W24GDTZoneShape.

  • extend_value (number)

  • extend_angle (number)

  • W24GDTZoneCombination (string): Enum of all tolerance zone combinations . Must be one of: ['CZ', 'SZ'].

  • W24GDTZoneOffset (object): Specified offset indicated by leading UZ...
    Attributes: blurb: blurb of the specified offset for human consumption. e.g., UZ+0.15, UZ-0.2, UZ+0.1:0.2.

  • blurb (string)

  • W24GDTZoneConstraint (string): Enum of the Zone Constraints . Must be one of: ['OZ', 'VA', '><'].

  • W24GDTFilterType (string): Preliminary list of feature filters
    Filters remaining: RG, S, OH, SW, AB, CW. Must be one of: ['G', 'S', 'SW', 'CW', 'RG', 'RS', 'OB', 'OH', 'OC', 'CB', 'CH', 'CD', 'AB', 'AH', 'AD', 'F', 'H'].

  • W24GDTFilter (object): Abstract base class to describe feature filters
    Attributes: blurb: String representation of the file for human consumption
    filter_type: Filter Type to facilitate deserialization.

  • blurb (string)

  • filter_type: Refer to #/definitions/W24GDTFilterType.

  • W24GDTFeatureAssociated (string): Enum of all associated tolerated features . Must be one of: ['Ⓒ', 'Ⓖ', 'Ⓝ', 'Ⓧ', 'Ⓣ'].

  • W24GDTFeatureDerived (string): Enum of all derived features . Must be one of: ['Ⓟ', 'Ⓐ'].

  • W24GDTReferenceAssociation (string): Association of the Reference Element . Must be one of: ['C', 'CE', 'CI', 'G', 'GE', 'GI', 'N', 'X'].

  • W24GDTReferenceParameter (string): Parameter of the reference element . Must be one of: ['P', 'V', 'T', 'Q'].

  • W24GDTMaterialCondition (string): Enum for Material Conditions . Must be one of: ['Ⓜ', 'Ⓛ', 'Ⓡ'].

  • W24GDTState (string): Enum for the State . Must be one of: ['Ⓕ'].

  • W24GDTDatum (object): Preliminary implementation of the GD&T Datum
    Attributes: blurb: Reference name. Typically: A,B,C ... Can also contain more complex names, e.g., (A-B-C-D)[CM]
    !!! note Future implementations might allow fine-grained access to the attributes of complex names: e.g., (A-B-C-D)[CM].

  • blurb (string)

  • W24GDTFrame (object): Representation of the Geometric Dimensioning and Toleration frame
    Attributes: gdt_id: Unique id of the GDT
    blurb: String representation of the label for human consumption e.g., [⌖|⌀0.3Ⓜ|A|B|C]
    characteristic: Section for geometric characteristic e.g.: ⌓
    zone_shape: Tolerance zone shape, e.g, S⌀
    zone_value: GDT value: e.g., 0.03 Is optional to support Datum Feature Indicators
    zone_combinations: Ordered list of zone combinations, e.g., CZ, SZ
    zone_offset: Optional specified offset, e.g., UZ-0.2
    zone_constraint: Optional zone constraint: e.g., OZ, VA
    feature_filter: Optional feature filter
    feature_associated: Associated toleraced feature
    feature_derived: Derived Feature
    reference_association: Reference element association
    reference_parameter: Reference element parameter
    material_condition: Material condition
    state: FREE or None
    data: Ordered list of data.

  • gdt_id (string)

  • blurb (string)

  • characteristic: Refer to #/definitions/W24GDTCharacteristic.

  • zone_shape: Refer to #/definitions/W24GDTZoneShape.

  • zone_value: Refer to #/definitions/W24GDTZoneValue.

  • zone_combinations (array): Default: [].

    • Items: Refer to #/definitions/W24GDTZoneCombination.
  • zone_offset: Refer to #/definitions/W24GDTZoneOffset.

  • zone_constraint: Refer to #/definitions/W24GDTZoneConstraint.

  • feature_filter: Refer to #/definitions/W24GDTFilter.

  • feature_associated: Refer to #/definitions/W24GDTFeatureAssociated.

  • feature_derived: Refer to #/definitions/W24GDTFeatureDerived.

  • reference_association: Refer to #/definitions/W24GDTReferenceAssociation.

  • reference_parameter: Refer to #/definitions/W24GDTReferenceParameter.

  • material_condition: Refer to #/definitions/W24GDTMaterialCondition.

  • state: Refer to #/definitions/W24GDTState.

  • data (array): Default: [].

    • Items: Refer to #/definitions/W24GDTDatum.

Requesting the GD&Ts

from werk24 import Hook, W24AskVariantGDTs
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_gdts(message: W24TechreadMessage) -> None:
    """ print the GD&Ts when we received them
    """
    if message.is_successful:
        print(message.payload_dict)
    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=W24AskVariantGDTs(), function=recv_gdts)]

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

Example Response

"gdts": [
    {
        "bounding_polygon": [
            [
                0.4561766735679779,
                0.8484848484848485
            ],
            [
                0.27191166321601107,
                0.8484848484848485
            ],
            [
                0.27191166321601107,
                0.7985739750445633
            ],
            [
                0.4561766735679779,
                0.7985739750445633
            ]
        ],
        "frame": {
            "gdt_id": null,
            "blurb": "[\u27c2|0.03|A]",
            "characteristic": "\u27c2",
            "zone_shape": null,
            "zone_value": {
                "blurb": "0.03",
                "width_min": 0.03,
                "width_max": null,
                "extend_quantity": null,
                "extend_shape": null,
                "extend": null,
                "extend_angle": null
            },
            "zone_combinations": [],
            "zone_offset": null,
            "zone_constraint": null,
            "feature_filter": null,
            "feature_associated": null,
            "feature_derived": null,
            "reference_association": null,
            "reference_parameter": null,
            "material_condition": null,
            "state": null,
            "data": [
                {
                    "blurb": "A"
                }
            ]
        }
    },
    {
        "bounding_polygon": [
            [
                0.24913733609385783,
                0.19607843137254902
            ],
            [
                0.11042097998619738,
                0.19607843137254902
            ],
            [
                0.11042097998619738,
                0.14616755793226383
            ],
            [
                0.24913733609385783,
                0.14616755793226383
            ]
        ],
        "frame": {
            "gdt_id": null,
            "blurb": "[\u23e5|0.03]",
            "characteristic": "\u23e5",
            "zone_shape": null,
            "zone_value": {
                "blurb": "0.03",
                "width_min": 0.03,
                "width_max": null,
                "extend_quantity": null,
                "extend_shape": null,
                "extend": null,
                "extend_angle": null
            },
            "zone_combinations": [],
            "zone_offset": null,
            "zone_constraint": null,
            "feature_filter": null,
            "feature_associated": null,
            "feature_derived": null,
            "reference_association": null,
            "reference_parameter": null,
            "material_condition": null,
            "state": null,
            "data": []
        }
    }
]

Standards

Please refer to these standards for defining GD&Ts:

  • ISO TC 10 (Technical product documentation),
  • ISO/TC 213 (Dimensional and geometrical product specifications and verification),
  • ASME Y14.41 (Digital Product Definition Data Practices),
  • ASME 14.5 (Dimensioning and Tolerancing),
  • ASME Y14.5.1M (Mathematical Definition of Dimensioning and Tolerancing Principles), and
  • ISO 10303 (Industrial automation systems and integration - Product data representation and exchange).