Skip to content

Revision Table

Revision Tables record the changes that have been made to a drawing. Knowledge of the Revision Table can be useful in many situations: e.g., to ensure that a supplier is always processing the latest version of a drawing, or to ensure that mistakes that have been made in the past are not being repeated. WERK24 allows you to access the content in an easy and structured way.

Table Structure

Revision Tables are standardized by ISO and ANSI. The content of both formats are very similar and summarized in the following:

Serial

Serial Number typically starts at "A" and progresses through the alphabet. Sometimes this field is also referred to as "Revision Id", "Position", "Index" or similar.

ECN Number

Number of the Engineering Change Note (also: Engineering Change Order) to identify the change across multiple documents and systems. Engineering Changes are typically managed by a dedicated software package. The presence of an ECN Number typically indicates that the drafting company has sophisticated engineering processes in place.

Description

Description of the change. This is a free text field.

Revision Date

Date on which the revision was accepted. The format of these dates is not standardized. Some drawings even show different date formats on the same revision table (e.g., 01Aug08 and 01022021). WERK24 uses all the available information to convert the different date formats to ISO 8601 (example: 2008-08-01, 2021-02-01).

Drafter

The person that owns the revision is typically indicated in an individual column. To comply with the data privacy rules, we are not returning this information.

Grid Squares

On large drawings, it can be difficult to quickly find the change indicator on the drawing. The grid squares (sometimes called zones) simplify the search.

Models

The data models are defined in the following models:

Extracted information can be accessed from the W24RevisionTable Model.

W24RevisionTable

Revision Table object that contains all the rows

Attributes: rows (List[W24RevisionTableRow]): List of all rows in the revision table

Properties

  • rows (array)

  • Items: Refer to #/definitions/W24RevisionTableRow.

Definitions

  • W24Date (object): Date object
    Attributes: blurb: Date in ISO 8601 format
    date: Python date object; this will automatically be interpreted when the object is loaded.

  • blurb (string)

  • date (string)

  • W24GridSquare (object): Grid Square
    Attributes: column (str): Column of the Grid Square
    row (str): Row of the Grid Square.

  • column (string)

  • row (string)

  • W24RevisionTableRow (object): Row of a revision table
    Attributes: serial (Optional[str]): Serial number, also referred to as Index or Position of the row in the revision table. The serial number is typicall used to identify the revision on each individual sheet (e.g., A, B, C or 01, 02, 03)
    ecn_number (Optional[str]): Identifier of the Engineering Change Note to uniquely identify the change across multiple documents. This is typically a long number and sometimes identifies a revision process that affect multiple parts.
    description (str): Description of the change
    revision_date (Optional[date]): Date of the revision
    grid_squares: (List[W24GridSquare]): List of the grid squares that are affected by the revision.

  • serial (string)

  • ecn_number (string)

  • description (string)

  • revision_date: Refer to #/definitions/W24Date.

  • grid_squares (array)

    • Items: Refer to #/definitions/W24GridSquare.

Requesting the Revision Table

from werk24 import Hook, W24AskRevisionTable, W24AskRevisionTableResponse
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_revision_table(message: W24TechreadMessage) -> None:
    """ Print the Rows of the Revision Table when receiving it
    """
    if not message.is_successful:
        print("Exceptions occurred: {message.exceptions}")
        return

    revision_table = W24AskRevisionTableResponse.parse_obj(
        message.payload_dict)

    for row in revision_table.rows:
        print(row)


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=W24AskRevisionTable(), function=recv_revision_table)]

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

Example Response

{
    "variant_id": "585b4002-6371-4e49-8d2c-3a0f3c0a66e8",
    "sectional_id": "0aa77b6f-18c0-4671-af78-6cdf8b0fb173",
    "revision_table":{
        "rows":[
            {
                "serial":"A",
                "ecn_number": "ECN-0001",
                "description": "First Issued",
                "revision_date": {
                    "blurb": "2021-09-12",
                    "date": "2021-09-12",
                },
                grid_squares=[]
            },
            {
                "serial":"B",
                "ecn_number": "ECN-0201",
                "description": "Material Changed",
                "revision_date": {
                    "blurb": "2021-10-22",
                    "date": "2021-10-22",
                },
                grid_squares=[]
            }
        ]
    }
}