ISO 10303-42:2000/Cor 1:2001
(Corrigendum)Industrial automation systems and integration — Product data representation and exchange — Part 42: Integrated generic resource: Geometric and topological representation — Technical Corrigendum 1
Industrial automation systems and integration — Product data representation and exchange — Part 42: Integrated generic resource: Geometric and topological representation — Technical Corrigendum 1
Systèmes d'automatisation industrielle et intégration — Représentation et échange de données de produits — Partie 42: Ressource générique intégrée: Représentation géométrique et topologique — Rectificatif technique 1
General Information
Relations
Standards Content (Sample)
INTERNATIONAL STANDARD ISO 10303-42:2000
TECHNICAL CORRIGENDUM 1
Published 2001-04-01
INTERNATIONAL ORGANIZATION FOR STANDARDIZATION � МЕЖДУНАРОДНАЯОРГАНИЗАЦИЯПОСТАНДАРТИЗАЦИИ � ORGANISATION INTERNATIONALE DE NORMALISATION
Industrial automation systems and integration — Product data
representation and exchange —
Part 42:
Integrated generic resource: Geometric and topological
representation
TECHNICAL CORRIGENDUM 1
Systèmes d'automatisation industrielle et intégration — Représentation et échange de données de produits —
Partie 42: Ressource générique intégrée: Représentation géométrique et topologique
RECTIFICATIF TECHNIQUE 1
Technical Corrigendum 1 to International Standard ISO 10303-42:2000 was prepared by Technical Committee
ISO/TC 184, Industrial automation systems and integration, Subcommittee SC 4, Industrial data.
Introduction
This Technical Corrigendum corrects ISO 10303-42:2000, Industrial automation systems and integration —
Product data representation and exchange — Part 42: Integrated generic resource: Geometric and topological
representation.
The purpose of the modifications to the text of ISO 10303-42:1994 is to correct errors in the EXPRESS definitions
likely to cause compilation problems, to replace the URL in the annex for the computer-interpretable EXPRESS,
and to replace the object identifier for the document and the applicable schema.
ICS 25.040.40 Ref. No. ISO 10303-42:2000/Cor.1:2001(E)
© ISO 2001 – All rights reserved
Printed in Switzerland
---------------------- Page: 1 ----------------------
ISO 10303-42:2000/Cor.1:2001(E)
Modifications to the text of ISO 10303-42:2000
Clause 4.4.64, p. 98
The EXPRESS specification of surface_of_revolution contains an error in the DERIVE statement. The
usage here of dummy_gri is not supported by all compilers. Remove the EXPRESS specification and
replace with the following:
EXPRESS specification:
*)
ENTITY surface_of_revolution
SUBTYPE OF (swept_surface);
axis_position : axis1_placement;
DERIVE
axis_line : line := representation_item(’’)||
geometric_representation_item()|| curve()||
line(axis_position.location, representation_item(’’)||
geometric_representation_item()||
vector(axis_position.z, 1.0));
END_ENTITY;
(*
Clause 4.6.10, p. 151
The EXPRESS specification of function first_proj_axis does not provide a valid result when called with
z_axis in the direction [-1,0,0] and arg defaulted. Replace the second sentence of the description with:
With arg defaulted the result is the projection of [1,0,0] onto this plane; except that, if z_axis = [1,0,0],
or, z_axis = [-1,0,0], [0,1,0] is the default for arg.
Remove the EXPRESS specification and replace with the following:
EXPRESS specification:
*)
FUNCTION first_proj_axis(z_axis, arg : direction) : direction;
LOCAL
x_axis : direction;
v : direction;
z : direction;
x_vec : vector;
END_LOCAL;
IF (NOT EXISTS(z_axis)) THEN
RETURN (?) ;
ELSE
2c ISO 2001– All rights reserved
---------------------- Page: 2 ----------------------
ISO 10303-42:2000/Cor.1:2001(E)
z := normalise(z_axis);
IF NOT EXISTS(arg) THEN
IF ((z.direction_ratios <> [1.0,0.0,0.0]) AND
(z.direction_ratios <> [-1.0,0.0,0.0])) THEN
v := dummy_gri || direction([1.0,0.0,0.0]);
ELSE
v := dummy_gri || direction([0.0,1.0,0.0]);
END_IF;
ELSE
IF (arg.dim <> 3) THEN
RETURN (?) ;
END_IF;
IF ((cross_product(arg,z).magnitude) = 0.0) THEN
RETURN (?);
ELSE
v := normalise(arg);
END_IF;
END_IF;
x_vec := scalar_times_vector(dot_product(v, z), z);
x_axis := vector_difference(v, x_vec).orientation;
x_axis := normalise(x_axis);
END_IF;
RETURN(x_axis);
END_FUNCTION;
(*
Clause 4.6.29, p. 171
The EXPRESS specification of the function list_to_array omits the array dimensions for the return vari-
able. Remove the EXPRESS specification and replace with the following:
EXPRESS specification:
*)
FUNCTION list_to_array(lis : LIST [0:?] OF GENERIC : T;
low,u : INTEGER) : ARRAY [low:u] OF GENERIC : T;
LOCAL
n : INTEGER;
res : ARRAY [low:u] OF GENERIC : T;
END_LOCAL;
n := SIZEOF(lis);
IF (n <> (u-low +1)) THEN
RETURN(?);
ELSE
res := [lis[1] : n];
REPEAT i := 2 TO n;
res[low+i-1] := lis[i];
END_REPEAT;
RETURN(res);
c ISO 2001– All rights reserved 3
---------------------- Page: 3 ----------------------
ISO 10303-42:2000/Cor.1:2001(E)
END_IF;
END_FUNCTION;
(*
Clause 4.6.30, p. 172
The EXPRESS specification of the function make_array_of_array omits the array dimensions for the
return variable. Remove the EXPRESS specification and replace with the following:
EXPRESS specification:
*)
FUNCTION make_array_of_array(lis : LIST[1:?] OF LIST [1:?] OF GENERIC : T;
low1, u1, low2, u2 : INTEGER):
ARRAY [low1:u1] OF ARRAY [low2:u2] OF GENERIC : T;
LOCAL
res : ARRAY[low1:u1] OF ARRAY [low2:u2] OF GENERIC : T;
END_LOCAL;
(* Check input dimensions for consistency *)
IF (u1-low1+1) <> SIZEOF(lis) THEN
RETURN (?);
END_IF;
IF (u2 - low2+1)<> SIZEOF(lis[1]) THEN
RETURN (?) ;
END_IF;
(* Initialise res with values from lis[1] *)
res := [list_to_array(lis[1], low2, u2) : (u1-low1 + 1)];
REPEAT i := 2 TO HIINDEX(lis);
IF (u2-low2+1) <> SIZEOF(lis[i]) THEN
RETURN (?);
END_IF;
res[low1+i-1] := list_to_array(lis[i], low2, u2);
END_REPEAT;
RETURN (res);
END_FUNCTION;
(*
Clause 4.6.31, p. 173
The EXPRESS specification of the function make_array_of_array_of_array omits the array dimensions
for the return variable. Remove the EXPRESS specification and replace with the following:
EXPRESS specification:
*)
FUNCTION make_array_of_array_of_array(lis: LIST[1:?] OF
LIST [1:?] OF LIST [1:?] OF GENERIC : T;
4c ISO 2001– All rights reserved
---------------------- Page: 4 ----------------------
ISO 10303-42:2000/Cor.1:2001(E)
low1, u1, low2, u2, low3, u3 : INTEGER):
ARRAY[low1:u1] OF ARRAY[low2:u2] OF ARRAY[low3:u3] OF GENERIC : T;
LOCAL
res : ARRAY[low1:u1] OF ARRAY [low2:u2] OF
ARRAY[low3:u3] OF GENERIC : T;
END_LOCAL;
(* Check input dimensions for consistency *)
IF (u1-low1+1) <> SIZEOF(lis) THEN
RETURN (?);
END_IF;
IF (u2-low2+1) <> SIZEOF(lis[1]) THEN
RETURN (?);
END_IF;
(* Initialise res with values from lis[1] *)
res := [make_array_of_array(lis[1], low2, u2, low3, u3) : (u1-low1 + 1)];
REPEAT i := 2 TO HIINDEX(lis);
IF (u2-low2+1) <> SIZEOF(lis[i]) THEN
RETURN (?);
END_IF;
res[low1+i-1] := make_array_of_array(lis[i], low2, u2, low3, u3);
END_REPEAT;
RETURN (res);
END_FUNCTION;
(*
Clause 6 p. 231
The EXPRESS specification of geometric_model_schema requires an additional external reference to
support the corrected definition of the box_domain and rectangle_domain entities. Remove the defini-
tion and the EXPRESS specification and replace with the following:
The following EXPRESS declaration begins the geometric_model_schema and identifies the necessary
external references.
EXPRESS specification:
*)
SCHEMA geometric_model_schema;
REFERENCE FROM geometry_schema;
REFERENCE FROM topology_schema;
REFERENCE FROM measure_schema(length_measure,
positive_length_measure,
plane_angle_measure,
plane_angle_unit,
positive_plane_angle_measure);
REFERENCE FROM representation_schema(founded_item);
(*
c ISO 2001 – All rights reserved 5
---------------------- Page: 5 ----------------------
ISO 10303-42:2000/Cor.1:2001(E)
NOTE 1 - The schemas referenced above can be found in the following Parts of ISO 10303:
geometry_schema Clause 4 of this part of ISO 10303
topology_schema Clause 5 of this part of ISO 10303
measure_schema ISO 10303-41
representation_schema ISO 10303-43
NOTE 2 - See annex D, figures D.16 - D.18, for a graphical presentation of this schema.
Clause 6.4.34 p. 265
The EXPRESS specification of revolved_face_solid contains an error in the DERIVE statement. The
usage here of dummy_gri is not supported by all compilers. Remove the EXPRESS specification and
replace with the following:
EXPRESS specification:
*)
ENTITY revolved_face_solid SUBTYPE OF (swept_face_solid);
axis : axis1_placement;
angle : plane_angle_measure;
DERIVE
axis_line : line := representation_item(’’)||
geometric_representation_item()|| curve()||
line(axis.location, representation_item(’’)||
geometric_representation_item()||
vector(axis.z, 1.0));
END_ENTITY;
(*
Clause 6.4.38 p. 269
The EXPRESS specification of revolved_area_solid contains an error in the DERIVE statement. The
usage here of dummy_gri is not supported by all compilers. Remove the EXPRESS specification and
replace with the following:
EXPRESS specification:
*)
ENTITY revolved_area_solid
SUBTYPE OF (swept_area_solid);
axis : axis1_placement;
angle : plane_angle_measure;
DERIVE
axis_line : line := representation_item(’’)||
ge
...
Questions, Comments and Discussion
Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.