ISO 10303-21:2016(E)

9 Anchor section

9.1 Anchor section structure

The anchor section defines external names for instances in the exchange structure so that they can be referenced.

The syntax of the anchor section is prescribed in Table 3. The anchor section is optional. If an anchor section is included in the exchange structure then it shall be given after the header section and before any reference, data or signature section. The section shall begin with the special token "ANCHOR;" and shall terminate with the special token "ENDSEC;".

Each entry in the anchor section shall define one external name. The anchor name shall not be used for any other anchor in the same exchange structure. The anchor name shall meet the requirements defined in clause 6.5.4. The anchor name shall be a UUID if it meets the requirements defined in annex G.

EXAMPLE

Anchor section structureComment
ANCHOR;
<82ff3c50-3610-11e5-a2cb-0800200c9a66> = #10;/* Anchor defined by an entity instance name 9.2.1 */
<8eae4370-3610-11e5-a2cb-0800200c9a66> = @20;/* Anchor defined by a value instance name 9.2.2 */
<9a9ec060-3610-11e5-a2cb-0800200c9a66> = 30;/* Anchor defined by a simple data type 9.2.3 */
<a3cee4d0-3610-11e5-a2cb-0800200c9a66> = $;/* Anchor defined by a null_value 9.2.4 */
<bb2ac46e-3610-11e5-a151-feff819cdc9f> = (1.1, 2.1, 3.1);/* Anchor defined by a list 9.2.5 */
<bb2ac770-3610-11e5-a151-feff819cdc9f> = <picture.jpg>;/* Anchor defined by a resource 9.2.6 */
<d1dbb491-dae8-409b-87dd-f21fd5bbb624> = #INCH;/* Anchor defined by an EXPRESS constant 9.2.7 */
<1231ea63-d573-4d50-81f3-8bb0e9c1cbf5> = #10 {ratio:196.73};/* Anchor with a tag 9.2.8 */
ENDSEC;

9.2 Anchor item

Each ANCHOR shall associate an ANCHOR_NAME with an ANCHOR_ITEM. The anchor item shall describe how the anchor is represented in the exchange structure. The same anchor item may be used as the representation for multiple anchors and it may be null.

EXAMPLE

Anchor section structurePossible usage <tool_length> = #100;/* First usage of anchor item #100 */ <tool_height> = #100;/* Second usage of anchor item #100 */ <tool_tip_unused> = $;/* Instance unavailable in this version of the exchange structure */

NOTE      If two anchors in two exchange structures have the same name then it should be inferred that they describe different aspects, or different versions, of the same concept. For example, a tool maker may use anchors for the same concept on a family of tool items.

9.2.1 Anchor item defined by an entity instance name

If the anchor item is defined by an entity instance name (see clause 6.4.4.3) then the value of that anchor shall be the entity instance identified by that name.

NOTE      An entity instance name can be defined in the reference section in which case the value of the anchor item will be defined in a different exchange structure.

EXAMPLE

AnchorPossible usage
<tool_length> = #100;/* First usage of entity #100 as an anchor item */
<tool_height> = #100;/* Second usage of entity #100 as an anchor item*/

9.2.2 Anchor item defined by a value instance name

If the anchor item is defined by a value instance name (see clause 6.4.4.4) then the value of that anchor shall be the value identified by that name.

NOTE      A value instance is defined in the reference section.

EXAMPLE

AnchorPossible usage
<length_ratio> = @10;/* First usage of value @10 as an anchor item */
<height_ratio> = @10;/* Second usage of value @10 as an anchor item */
<width_ratio> = $;/* Value unavailable in this version of the exchange structure */

9.2.3 Anchor item defined by a simple type

If the anchor item is defined by a simple type (see clause 6.4) then the value of the anchor shall be that simple type.

EXAMPLE

AnchorPossible usage
<low_precision_pi> = 3.142;/* Anchor defined by a simple type */
<message> = 'This is a message';/* Anchor defined by a simple type */

9.2.4 Anchor item defined by a null_value ("$")

If the anchor item is defined by a null_value ("$") then the value of the anchor shall be the null_value.

NOTE      An anchor defined by the null_value may be a promissory usage that could not be met in this version of the exchange structure, but was met in a previous version, or will be met in future versions.

EXAMPLE

AnchorPossible usage
<tool_tip_unused> = $;/* Value unavailable in this version of the exchange structure */

9.2.5 Anchor item defined by a list structure

If the anchor item is defined by a ANCHOR_ITEM_LIST structure (see clause 7.2) then the value of that item shall be the list.

EXAMPLE

AnchorPossible usage
<identity> = ((1, 0, 0), (0, 1, 0), (0, 0, 1));/* Anchor item defined as an identity matrix */

9.2.6 Anchor item defined by a resource

If the anchor item is defined by a resource (see clause 6.5.1) then the value of that item shall be the resource.

NOTE      Anchors externalize information. They do not add information so they can be tagged with anything that meets the syntax requirements of this part of ISO 10303.

EXAMPLE

AnchorPossible usage
<main_image> = <picture.jpg>;/* Anchor item defined by an image */
<sheet_values> = (<work.xls#A3>,<work.xls#A4>,<work.xls#A5>);/* Anchor item defined by a list of spreadsheet values */

9.2.7 Anchor item defined by an EXPRESS constant

If the anchor item is defined by an EXPRESS constant (see clauses 6.4.4.1 and 6.4.4.2) then the value of that item shall be the value or instance defined by the constant in the first EXPRESS schema of the file_schema (see 8.2.4).

EXAMPLE

AnchorPossible usage
<pi> = #ARCHIMEDES_CONSTANT_PI;/* Anchor item defined by the EXPRESS value constant for PI */
<units> = (#IMPERIAL_LENGTH_INCH, #PLANE_ANGLE_RADIAN, #SOLID_ANGLE_STERADIAN);/* Anchor item defined by a list of EXPRESS entity constants */

9.2.8 Anchor item with tags

A tag shall associate additional information with an anchor. This information shall be outside the scope of the EXPRESS schema that defines the exchange structure (8.2.4).

NOTE 1      Applications can use tags to make an exchange structure easier to process. For example, a tag may contain a data index that can be used to find values more rapidly.

NOTE 2      The file_name.name entity of the header section can be used to indicate what types of anchors and tags are in an exchange structure (see 8.2.3).

EXAMPLE

AnchorPossible usage
<bedroom> = #10 {link:<bedroom.jpg>};/* Tag used to define source of additional information for anchored item */
<kitchen> = #20 {label:'Price estimate'} {link:<kitchen_cost.xls>};/* Tags used to define and label cost of anchored item */

NOTE 3      Annex F describes an ECMAScript binding for accessing the tag information.

© ISO 2016 — All rights reserved