>サイトトップへ >このカテゴリの一覧へ

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

(1) 

まえがき

この規格は,工業標準化法第 14 条によって準用する第 12 条第 1 項の規定に基づき,財団法人日本情報

処理開発協会  (JIPDEC)  /財団法人日本規格協会  (JSA)  から,工業標準原案を具して日本工業規格を改

正すべきとの申出があり,日本工業標準調査会の審議を経て,経済産業大臣が改正した日本工業規格であ

る。これによって,JIS B 3700-42 : 1994 の規定内容は,この追補によって変更される。

この追補は,1999 年に発行された ISO 10303-42 : 1994, Industrial automation systems and integration−

Product data representation and exchange

−Part 42 : Integrated generic resources : Geometric and topological

representation

の Technical corrigendum 1 及び Technical corrigendum 2 を翻訳し,技術的内容を変更すること

なく作成した日本工業規格の追補である。


日本工業規格

JIS

 B

3700-42

: 2002

(ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

産業オートメーションシステム及びその統合−

製品データの表現及び交換−

第 42 部:統合総称リソース:

幾何及び位相の表現

(追補 1)

Industrial automation systems and integration

Product data representation and exchange

Part 42 : Integrated generic resources :

Geometric and topological representation

(Technical corrigendum 1)

序 文   こ の 追 補 は , ISO 10303-42 : 1994, Industrial automation systems and integration − Product data

representation and exchange

−Part 42 : Integrated generic resources : Geometric and topological representation に対

して 1999 年に発行された Technical corrigendum 1 及び Technical corrigendum 2 について,技術的内容を変更

することなく JIS B 3700-42 : 1996 の追補 1 として作成したものである。また,この追補 1 では,Technical

corrigendum 1

及び Technical corrigendum 2 の訂正内容を Technical corrigendum ごとに並べるのではなく,規

格利用者の利便性を考慮して,両者の訂正内容をページ単位に並び替えて作成したものである。

なお,この追補 1 で点線の下線を施してある“参考”は,Technical corrigendum にはない事項である。

JIS B 3700-42 : 1996

を,次のように改正する。

9

ページ

4.

エンティティ founded_item を,composite_curve_segment 及び surface_patch の上位型として参照する。次

の行を,representation_schema の REFERENCE FROM のリストに追加する。

founded_item,

12

ページ

4.3

エンティティの定義又は関数の中で生成されるエンティティを初期化するには,定数を必要とする。

geometric_representation_item

型を生成するとき,定数 dummy_gri を定義の一部として用いる。次の新し


2

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

い箇条を 4.3.1 として挿入し,箇条 4.3.14.3.13 の箇条番号を順に付け直す。

4.3.1

定数の定義  geometric_representation_item 型を生成するとき,定数 dummy_gri を定義の一部として

用いる。これは,適切な上位型と空文字列をもつ属性 name とを与える。

EXPRESS

による定義

*

)

CONSTANT

  dummy_gri : geometric_representation_item :

=representation_item (”) ||

              geometric_representation_item  (

  ) ;

END_CONSTANT ;

(

*

23

ページ

4.4.13

エンティティ axis1_placement の EXPRESS による定義は,属性 z を適切に初期化しない。EXPRESS によ

る定義を次と置き換える。

EXPRESS

による定義

*

)

ENTITY axis1_placement

  SUBTYPE OF (placement) ;

    axis  :  OPTIONAL  direction  ;

  DERIVE

    z  :  direction  :

=NVL (normalise (axis), dummy_gri ||

                                      direction  ([0.0,  0.0,  1.0]))  ;

  WHERE

    WR1  :  SELF

\geometric_representation_item. dim=3 ;

END_ENTITY ;

(

*

28

ページ

4.4.17

エンティティ cartesian_transformation_operator_3d の EXPRESS による定義は,属性 dim の参照の方法に

誤りがある。EXPRESS による定義の WR1 を,次と置き換える。

WR1 : SELF

\geometric_representation_item. dim=3 ;

29

ページ

4.4.18

エンティティ cartesian_transformation_operator_2d の EXPRESS による定義は,属性 dim の参照の方法に

誤りがある。EXPRESS による定義の WR1 を,次と置き換える。

WR1 : SELF

\geometric_representation_item. dim=2 ;


3

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

44

ページ

4.4.34

エンティティ trimmed_curve の EXPRESS による定義は,

WHERE

条件節に論理的な誤りがある。

EXPRESS

による定義の WR1 及び WR2 を,次と置き換える。

WR1 : (HIINDEX (trim_1)

=1) OR (TYPEOF (trim_1 [1]) < > TYPEOF (trim_1 [2])) ;

WR2 : (HIINDEX (trim_2)

=1) OR (TYPEOF (trim_2 [1]) < > TYPEOF (trim_2 [2])) ;

46

ページ

4.4.36

エンティティ composite_curve_segment の EXPRESS による定義を変更して founded_item の下位型とし,

属性 parent_curve の表現コンテキストを与える。EXPRESS による定義を次と置き換える。

EXPRESS

による定義

*

)

ENTITY composite_curve_segment

  SUBTYPE OF (founded_item) ;

      transition :transition_code  ;

      same_sense :BOOLEAN  ;

    parent_curve : curve ;

  INVERSE

    using_curves : BAG [1 : ?] OF composite_curve FOR segments ;

  WHERE

    WR1  :  (

’GEOMETRY_SCHEMA. BOUNDED_CURVE’IN TYPEOF (parent_curve)) ;

END_ENTITY ;

(

*

次の備考を,エンティティ記述の末尾に挿入する。

備考 composite_curve_segment は,geometric_representation_item の下位型ではない。したがって,こ

の composite curve_segment から構成された composite_courve を用いる representation の場合,属

性 parent_curve の イ ン ス タ ン ス で あ る bounded_curve は , そ れ ぞ れ の representation の

geometric_representation_context

に対して,通常の方法では関連付けられない。

geometric_representation_context

は,上位型の founded_item を通じて関連付けられる。

63

ページ

4.4.58

エンティティ surface_of_revolution の EXPRESS による定義は,属性 axis_line を適切に初期化しない。

EXPRESS

による定義を次と置き換える。

EXPRESS

による定義

*

)

ENTITY surface_of_revolution

  SUBTYPE OF (swept_surface) ;

    axis_position  :  axisl_placement  ;


4

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

  DERIVE

    axis_line  :  line  :

=dummy_gri || curve( ) ||

                          line  (axis_position.  location,

                            dummy_gri  ||  vector  (axis_position.  z,  1.0))  ;

END_ENTITY ;

(

*

74

ページ

4.4.70

エンティティ rectangular_composite_surface の EXPRESS による定義は,WR1 において,空の集合と誤っ

た比較をしている。EXPRFSS による定義の WR1 を,次と置き換える。

WR1 : SIZEOF (QUERY (s <

*

 segments | n_v <> SIZEOF(s)))

=0 ;

75

ページ

4.4.71

エンティティ surface_patch の EXPRESS による定義を変更して founded_item の下位型とする。EXPRFSS

による定義を次と置き換える。

EXPRESS

による定義

*

)

ENTITY surface_patch

  SUBTYPE OF (founded_item) ;

    parent_surface  :bounde_surface  ;

    u_transition

:transition_code  ;

    v_transition

:transition_code  ;

    u_sense

:BOOLEAN  ;

    v_sense

:BOOLEAN  ;

  INVERSE

    using_surfaces  :BAG [1 : ?] OF rectangular_composite_surface

                        FOR  segments  ;

  WHERE

    WR1  :(NOT(’GEOMETRY_SCHEMA.  CURVE_BOUNDED_SURFACE’

                 IN  TYPEOF  (parent_surface)))  ;

END_ENTITY ;

(

*

次の備考を,エンティティ記述の末尾に挿入する。

備考 surface_patch は,geometric_representation_item の下位型ではない。したがって,この surface_patch

から構成された rectangular_composite_surface を用いる representation の場合,属性 parent_surface

の イ ン ス タ ン ス で あ る

bounded_surface

は , そ れ ぞ れ の

representation

geometric_representation_context

に 対 し て , 通 常 の 方 法 で は 関 連 付 け ら れ な い 。

geometric_representation_context

は,上位型の founded_item を通じて関連付けられる。


5

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

78

ページ 

4.6.1 

関数 dimension_of の EXPRESS による定義に,

注記を挿入する。

EXPRESS

による定義を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION dimension_of (item : geometric_representation_item) :

  dimension_count  ;

  LOCAL

    x : SET OF representation ;

    y  :  representation_context  ;

  END_LOCAL  ;

  --item

が用いられている representation の集合を見つける。

  x :

=using_representations (item) ;

  --geometric_representation_context

の dimension_count を決定する。

  --context_of_items

が geometric_representation_context であり,

  --x

のすべての値に対して同じ dimension_count をもつことは,

  --

規則 compatible_dimension によって保証されている。

  --representation_item

の WR1 の制約に基づき,集合 x は空ではない。

  y  :

=x [1]. context_of_items ;

  RETURN  (y

\geometric_representation_context. coordinate_space_dimension) ;

END_FUNCTION ;

(

*

81

ページ

4.6.6

関数 base_axis の EXPRESS による定義は,変数 u に適切な値を代入していない。EXPRESS による定義

を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION basea_axis (dim : INTEGER ; axisi, axis2, axis3 : direction) :

                                                           LIST [2 : 3] OF direction ;

  LOCAL

    u

  : LIST [2 : 3] OF direction ;

    factor  :  REAL  ;

    d1,  d2  :  direction  ;


6

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

  END_LOCAL  ;

  IF  (dim

=3) THEN

    d1  :

=NVL (normalise (axis3), dummy_gri || direction ([0.0, 0.0, 1.0])) ;

    d2  :

=first_proj_axis (d1, axis1) ;

    u   :

= [d2, second_proj_axis (d1, d2, axis2), d1] ;

  ELSE

    IF  EXISTS  (axis1)  THEN

      d1  :

=normalise (axisi) ;

      u   :

= [d1, orthogonal_complement (d1)] ;

      IF  EXISTS  (axis  2)  THEN

        factor  :

=dot_product (axis2, u [2]) ;

        IF  (factor  <  0.0)  THEN

          u  [2]  .direction_ratios  [1]  :

=-u [2]. direction_ratios [1] ;

          u  [2]  .direction_ratios  [2]  :

=-u [2]. direction_ratios [2] ;

        END_IF  ;

      END_IF  ;

    ELSE

      IF  EXISTS  (axis2)  THEN

        d1  :

= normalise (axis2) ;

        u

:

= [orthogonal_complement (d1), d1] ;

        u  [1].  direction_ratios  [1]  :

=-u [1]. direction_ratios [1] ;

        u  [1].  direction_ratios  [2]  :

=-u [1]. direction_ratios [2] ;

      ELSE

        u :

= [dummy_gri || direction ([1.0, 0.0]), dummy_gri ||

                                                         direction  ([0.0,1.0])]  ;

      END_IF  ;

    END_IF  ;

  END_IF  ;

  RETURN  (u)  ;

END_FUNCTION ;

(

*

83

ページ

4.6.7

関数 build_2axes の EXPRESS による定義は,戻り値に適切な値を代入していない。EXPRESS による定

義を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION build_2axes (ref_direction : direction) :


7

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

                                            LIST  [2  :  2]  OF  direction  ;

  LOCAL

    d  :  direction  :

=NVL (normalise(ref_direction),

                       dummy_gri  ||  direction  ([1.0,  0.0]))  ;

  END_LOCAL  ;

  RETURN ([d, orthogonal_complement (d)]) ;

END_FUNCTION ;

(

*

83

ページ

4.6.8

関数 build_axes の EXPRESS による定義は,戻り値に適切な値を代入していない。EXPRESS による定義

を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION build_axes (axis, ref_direction : direction) :

                                                 LIST  [3  :  3]  OF  direction  ;

  LOCAL

    d1,  d2  :  direction  ;

  END_LOCAL  ;

  d1  :

=NVL (normalise (axis), dummy_gri || direction ([0.0, 0.0, 1.0])) ;

  d2  :

=first_proj_axis (d1, ref_direction) ;

  RETURN ([d2, normalise (cross_product (d1, d2)). orientation, d1]) ;

END_FUNCTION ;

(

*

84

ページ

4.6.9

関数 orthogonal_complement の EXPRESS による定義は,変数 result に適切な値を代入していない。

EXPRESS

による定義を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION orthogonal_complement (vec : direction) : direction ;

  LOCAL

    result  :  direction  ;

  END_LOCAL  ;

  IF (vec. dim < > 2) OR NOT EXISTS (vec) THEN


8

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

    RETURN  (?)  ;

  ELSE

    result  :

= dummy_gri || direction([-vec. direction_ratios[2],

                                                        vec. direction_ratios [1]]) ;

    RETURN  (result)  ;

  END_IF  ;

END_FUNCTION ;

(

*

84

ページ

4.6.10

関数 first_proj_axis の EXPRESS による定義は,変数 v に適切な値を代入していない。EXPRESS による

定義を次と置き換える。

EXPRESS

による定義

*

)

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

    z :

=normalise (z_axis) ;

    IF  NOT  EXISTS  (arg)  THEN

      IF (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


9

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

        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 ;

(

*

85

ページ

4.6.11

関数 second_proj_axis の EXPRESS による定義は,変数 v に適切な値を代入していない。EXPRESS によ

る定義を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION second_proj_axis (z_axis, x_axis, arg : direction) : direction ;

  LOCAL

    y_axis  :  vector  ;

    v

  :  direction  ;

    temp    :  vector  ;

  END_LOCAL  ;

  IF NOT EXISTS (arg) THEN

    v :

=dummy_gri || direction ([0.0, 1.0, 0.0]) ;

  ELSE

    v :

= arg  ;

  END_IF  ;

     temp :

=scalar_times_vector (dot_product (v, z_axis), z_axis) ;

  y_axis :

=vector_difference (v, temp) ;

     temp :

=scalar_times_vector (dot_product (v, x_axis), x_axis) ;

  y_axis :

=vector_difference (y_axis, temp) ;

  y_axis :

=normalise (y_axis) ;

  RETURN (y_axis. orientation) ;

END_FUNCTION ;

(

*

86

ページ


10

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

4.6.12

関数 cross_product の EXPRFSS による定義は,変数 res 及び変数 result に適切な値を代入していない。

EXPRESS

による定義を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION cross_product (arg1, arg2 : direction) : vector ;

  LOCAL

       mag  :  REAL  ;

       res  :  direction  ;

    v1, v2 : LIST [3 : 3] OF REAL ;

    result  :  vector  ;

  END_LOCAL  ;

  IF  (NOT EXISTS (arg1) OR (arg1. dim

=2)) OR

(NOT EXISTS (arg2) OR (arg2. dim

=2)) THEN

    RETURN  (?)  ;

  ELSE

    BEGIN

      v1  :

=normalise (arg1). direction_ratios ;

      v2  :

=normalise (arg2). direction_ratios ;

      res :

=dummy_gri || direction ([(v1 [2]

*

v2 [3] -v1 [3]

*

v2 [2]),

             (v1 [3]

*

v2 [1] -v1 [1]

*

v2 [3]), (v1 [1]

*

v2 [2] -v1 [2]

*

v2 [1])]) ;

      mag :

=0.0 ;

      REPEAT  i  :

=1 TO 3 ;

        mag  :

=mag+res. direction_ratios [i]

*

res. direction_ratios [i] ;

      END_REPEAT  ;

      IF  (mag  >  0.0)  THEN

        result  :

=dummy_gri || vector (res, SQRT (mag)) ;

      ELSE

        result  :

=dummy_gri || vector (arg1, 0.0) ;

      END_IF  ;

      RETURN  (result)  ;

    END  ;

  END_IF  ;

END_FUNCTION ;

(

*

88

ページ

4.6.14

関数 normalise の EXPRESS による定義は,変数 v に適切な値を代入しておらず,入力引数 arg の値を壊


11

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

すことがある。EXPRESS による定義を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION normalise (arg : vector_or_direction) : vector_or_direction ;

  LOCAL

    ndim

:  INTEGER  ;

    v

:  direction  ;

    result :  vector_or_direction  ;

    vec

:  vector  ;

    mag

:  REAL  ;

  END_LOCAL  ;

  IF NOT EXISTS (arg) THEN

    result  :

=? ;

    (

*

関数が不適切なデータで呼ばれた場合には,

結果として不定“?”が戻される。

*

)

  ELSE

    ndim  :

=arg. dim

    IF

’GEOMETRY_SCHEMA. VECTOR’IN TYPEOF (arg) THEN

      BEGIN

        v :

=dummy_gri || direction (arg. orientation. direction_ratios) ;

        IF  arg.  magnitude

=0.0 THEN

          RETURN  (?)  ;

        ELSE

        vec  :

=dummy_gri || vector (v, 1.0) ;

        END_IF  ;

      END  ;

    ELSE

      v :

=dummy_gri || direction (arg. direction_ratios) ;

    END_IF  ;

    mag  :

=0.0 ;

    REPEAT  i  :

=1 TO ndim ;

      mag  :

=mag+v. direction_ratios [i]

*

v. direction_ratios [i] ;

    END_REPEAT  ;

    IF  mag  >  0.0  THEN

      mag  :

=SQRT (mag) ;

      REPEAT  i  :

=1 TO ndim ;

        v.  direction_ratios  [i]  :

=v. direction_ratios [i] /mag ;

      END_REPEAT  ;

      IF

’GEOMETRY_SCHEMA. VECTOR’IN TYPEOF (arg) THEN


12

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

        vec.  orientation  :

=v ;

        result  :

=vec ;

      ELSE

        result  :

=v ;

      END_IF  ;

    ELSE

      RETURN  (?)  ;

    END_IF  ;

  END_IF  ;

  RETURN  (result)  ;

END_FUNCTION ;

(

*

89

ページ

4.6.15

関数 scalar_times_vector の EXPRESS による定義は,変数 result に適切な値を代入していない。EXPRESS

による定義を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION scalar_times_vector (scalar : REAL ; vec : vector_or_direction)

                                       :  vector  ;

  LOCAL

    v

:  direction  ;

    mag

:  REAL  ;

    result  :  vector  ;

  END_LOCAL  ;

  IF NOT EXISTS (scalar) OR NOT EXISTS (vec) THEN

    RETURN  (?)  ;

  ELSE

    IF

’GEOMETRY_SCHEMA. VECTOR’IN TYPEOF (vec) THEN

        v :

= dummy_gri || direction (vec. orientation. direction_ratios) ;

      mag :

=scalar

*

vec. magnitude ;

    ELSE

        v :

=dummy_gri || direction (vec. direction_ratios) ;

      mag :

=scalar ;

    END_IF  ;

    IF  (mag  <  0.0)  THEN

      REPEAT  i  :

=1 TO SIZEOF (v. direction_ratios) ;

        v.  direction_ratios  [i]  :

=-v. direction_ratios [i] ;


13

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

      END_REPEAT  ;

      mag  :

=-mag ;

    END_IF  ;

    result  :

=dummy_gri || vector (normalise (v), mag) ;

  END_IF  ;

  RETURN  (result)  ;

END_FUNCTION ;

(

*

90

ページ

4.6.16

関数 vector_sum の EXPRESS による定義は,変数 res 及び変数 result に適切な値を代入していない。

EXPRESS

による定義を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION vector_sum (arg1, arg2 : vector_or_direction) : vector ;

  LOCAL

    result  :  vector  ;

    res, vec1, vec2 : direction ;

    mag, mag1, mag2 : REAL ;

    ndim  :  INTEGER  ;

  END_LOCAL  ;

    IF ((NOT EXISTS(arg1)) OR (NOT EXISTS (arg2))) OR

        (arg1.  dim  <  >  arg2.  dim)

        THEN

      RETURN  (?)  ;

    ELSE

      BEGIN

        IF

’GEOMETRY_SCHEMA. VECTOR’IN TYPEOF (arg1) THEN

          mag1  :

=arg1. magnitude ;

          vec1  :

=arg1. orientation ;

        ELSE

          mag1  :

=1.0 ;

          vec1  :

= arg1  ;

        END_IF  ;

        IF

’GEOMETRY_SCHEMA. VECTOR’IN TYPEOF (arg2) THEN

          mag2  :

=arg2. magnitude ;

          vec2  :

=arg2. orientation ;

        ELSE


14

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

          mag2  :

=1.0 ;

          vec2  :

=arg2 ;

        END_IF  ;

        vec1  :

=normalise (vec1) ;

        vec2  :

=normalise (vec2) ;

        ndim  :

=SIZEOF (vec1. direction_ratios) ;

         mag  :

=0.0 ;

         res  :

=dummy_gri || direction (vec1. direction_ratios) ;

        REPEAT  i  :

=1 TO ndim ;

          res.  direction_ratios  [i]  :

=mag1

*

vec1. direction_ratios [i] +

                                            mag2

*

vec2. direction_ratios [i] ;

          mag :

=mag+ (res. direction_ratios [i]

*

res. direction ratios [i]) ;

      END_REPEAT  ;

      IF  (mag  >  0.0)  THEN

      result  :

=dummy_gri || vector (res, SQRT (mag)) ;

      ELSE

        result  :

=dummy_gri || vector (vec1,0.0) ;

      END_IF  ;

    END  ;

  END_IF  ;

  RETURN  (result)  ;

END_FUNCTION ;

(

*

92

ページ

4.6.17

関数 vector_difference の EXPRESS による定義は,変数 res に適切な値を代入していない。EXPRESS によ

る定義を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION vector_difference (arg1, arg2 : vector_or_direction) : vector ;

  LOCAL

    result  :  vector  ;

    res, vec1, vec2 : direction ;

    mag, mag1, mag2 : REAL ;

    ndim  :  INTEGER  ;

  END_LOCAL  ;

  IF ((NOT EXISTS(arg1)) OR (NOT EXISTS (arg2))) OR

      (arg1.  dim  <  >  arg2.  dim)


15

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

      THEN

    RETURN  (?)  ;

  ELSE

    BEGIN

      IF

’GEOMETRY_SCHEMA. VECTOR’IN TYPEOF (arg1) THEN

        mag1  :

=arg1. magnitude ;

        vec1  :

=arg1. orientation ;

      ELSE

        mag1  :

=1.0 ;

        vec1  :

=arg1 ;

      END_IF  ;

      IF

’GEOMETRY_SCHEMA. VECTOR’IN TYPEOF (arg2) THEN

        mag2  :

=arg2. magnitude ;

        vec2  :

=arg2. orientation ;

      ELSE

        mag2  :

=1.0 ;

        vec2  :

=arg2 ;

      END_IF  ;

      vec1  :

=normalise (vec1) ;

      vec2  :

=normalise (vec2) ;

      ndim  :

=SIZEOF (vec1. direction_ratios) ;

       mag  :

=0.0 ;

       res  :

=dummy_gri || direction (vec1. direction_ratios) ;

      REPEAT  i  :

=1 TO ndim ;

        res.  direction_ratios  [i]  :

=mag1

*

vec1. direction_ratios [i] +

                                         mag2

*

vec2. direction_ratios [i] ;

        mag  :

=mag+ (res. direction_ratios [i]

*

res. direction_ratios [i]) ;

      END_REPEAT  ;

      IF  (mag  >  0.0)  THEN

        result  :

=dummy_gri || vector (res, SQRT (mag)) ;

      ELSE

        result  :

=dummy_gri || vector (vec1,0.0) ;

      END_IF  ;

    END  ;

  END_IF  ;

  RETURN  (result)  ;

END_FUNCTION ;

(

*

93

ページ


16

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

4.6.18

関数 default_b_spline_knot_mult の EXPRESS による定義は,

変数 knot_mult に適切な値を代入していない。

EXPRESS

による定義を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION default_b_spline_knot_mult (degree, up_knots : INTEGER ;

                                           uniform  :  knot_type)

                                                    :LIST  [2  :  ?]  OF  INTEGER  ;

  LOCAL

    knot_mult : LIST [1 : up_knots] OF INTEGER ;

  END_LOCAL  ;

  IF  uniform

=uniform_knots THEN

    knot_mult  :

= [1 : up knots] ;

  ELSE

    IF  uniform

=quasi_uniform_knots THEN

      knot_mult  :

= [1 : up_knots] ;

      knot_mult  [1]  :

=degree+1 ;

      knot_mult  [up_knots]  :

= degree+1  ;

    ELSE

      IF  uniform

=piecewise_bezier_knots THEN

        knot_mult  :

= [degree : up_knots] ;

        knot_mult  [1]  :

=degree+1 ;

        knot_mult  [up_knots]  :

=degree+1 ;

      ELSE

        knot_mult  :

= [0 : up_knots] ;

      END_IF  ;

    END_IF  ;

  END_IF  ;

  RETURN  (knot_mult)  ;

END_FUNCTION ;

(

*

94

ページ

4.6.19

関数 default_b_spline_knots の EXPRESS による定義は,

変数 knots に適切な値を代入していない。

EXPRESS

による定義を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION default_b_spline_knots (degree, up_knots : INTEGER ;


17

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

                                  uniform  :  knot_type)

                                            :  LIST  [2  :  ?]  OF  parameter_value  ;

  LOCAL

    knots : LIST [1 : up_knots] OF parameter_value :

= [0 : up_knots] ;

    ishift  :  INTEGER  :

=1 ;

  END_LOCAL  ;

  IF  (uniform

=uniform_knots) THEN

    ishift  :

=degree+1 ;

  END_if  ;

  IF  (uniform

=uniform_knots) OR

       (uniform

=quasi_uniform_knots) OR

       (uniform

=piecewise_bezier_knots) THEN

    REPEAT  i  :

=1 TO up_knots ;

      knots  [i]  :

=i-ishift ;

    END_REPEAT  ;

  END_IF  ;

  RETURN  (knots)  ;

END_FUNCTION ;

(

*

95

ページ

4.6.20

関数 default_b_spline_curve_weights の EXPRESS による定義は,戻り値に適切な値を代入していない。

EXPRESS

による定義を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION default_b_spline curve_weights (up_cp : INTEGER)

                                          :  ARRAY  [0  :  up_cp]  OF  REAL  ;

  RETURN ([1 : up_cp+1]) ;

END_FUNCTION ;

(

*

96

ページ

4.6.21

関数 default_b_spline_surface_weights の EXPRESS による定義は,戻り値に適切な値を代入していない。

EXPRESS

による定義を次と置き換える。

EXPRESS

による定義

*

)


18

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

FUNCTION default_b_spline surface_weights (u_upper, v_upper : INTEGER)

:ARRAY [0 : u_upper] OF

 ARRAY [0 : v_upper] OF REAL ;

  RETURN ([[1 : v_upper+1] : u_upper+1]) ;

END_FUNCTION ;

(

*

97

ページ

4.6.22

関数 constraints_param_b_spline の EXPRESS による定義は,冗長な変数を宣言している。EXPRESS によ

る定義を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION constraints_param_b_spline(degree, up_knots, up_cp : INTEGER ;

                        knot_mult  :  LIST  OF  INTEGER  ;

                        knots  :  LIST  OF  parameter_value)  :  BOOLEAN  ;

  LOCAL

    result  :  BOOLEAN  :

=TRUE ;

    k,  sum  :  INTEGER  ;

  END_LOCAL  ;

  (

*

ノット多重度の和を求める。

*

)

  sum  :

=knot_mult [1] ;

  REPEAT  i  :

=2 TO up knots ;

    sum  :

=sum+knot_mult [i] ;

  END_REPEAT  ;

  (

*

すべての B-スプラインのパラメタ化についての制限を検査する。

*

)

  IF (degree < 1) OR (up_knots < 2) OR (up_cp < degree) OR

        (sum  <  >  (degree+up_cp+2))  THEN

    result  :

=FALSE ;

    RETURN  (result)  ;

  END_IF  ;

  k  :

= knot_mult [1] ;

  IF (k < 1) OR (k > degree+1) THEN

    result  :

=FALSE ;

    RETURN  (result)  ;


19

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

  END_IF  ;

  REPEAT  i  :

=2 TO up_knots ;

    IF (knot_mult [i] < 1) OR (knots [i] <

= knots [i-1]) THEN

      result  :

=FALSE ;

      RETURN  (result)  ;

    END_IF  ;

    k  :  knot_mult  [i]  ;

    IF (i < up_knots) AND (k > degree) THEN

      result  :

=FALSE

      RETURN  (result)  ;

    END_IF  ;

    IF  (i

=up_knots) AND (k> degree+1) THEN

      result  :

=FALSE ;

      RETURN  (result)  ;

    END_IF  ;

  END_REPEAT  ;

  RETURN  (result)  ;

END_FUNCTION ;

(

*

99

ページ

4.6.25

関数 get_basis_surface の EXPRESS による定義は,composite_curve_on_surface から属性 segments を参照

する方法に誤りがある。EXPRFSS による定義を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION get_basis_surface (c : curve_on_surface) : SET [0 : 2] OF surface ;

  LOCAL

    surfs : SET [0 : 2] OF surface ;

    n      :  INTEGER  ;

  END  LOCAL  ;

  surfs  :

=[ ];

  IF

’GEOMETRY_SCHEMA. PCURVE’IN TYPEOF (c) THEN

    surfs  :

= [c\pcurve. basis_surface] ;

  ELSE

    IF

’GEOMETRY_SCHEMA. SURFACE_CURVE’IN TYPEOF (c) THEN


20

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

      n :

=SIZEOF (c\surface curve. associated_geometry) ;

      REPEAT  i  :

=1 TO n ;

      surfs  :

=surfs+

              associated_surface(c

\surface_curve.

                           associated_geometry  [i])  ;

      END_REPEAT  ;

    END_IF  ;

  END_IF  ;

  IF

’EOMETRY_SCHEMA. COMPOSITE_CURVE_ON_SURFACE’N TYPEOF (c) THEN

  (

*

composite_curve_ on_surface

の basis_surface は,

すべてのセグメントの basis_surface の積となる。

*

)

    n :

=SIZEOF (C\composite_curve. segments) ;

    surfs  :

=get_basis_surface (c\composite_curve.

                                     segments  [1].  parent_curve)  ;

    IF  n  >  1  THEN

      REPEAT  i  :

=2 TO n ;

        surfs  :

=surfs

*

 get_basis_surface (c

\composite_curve.

                                          segments  [i].  parent_curve)  ;

      END_REPEAT  ;

    END_IF  ;

  END_IF  ;

  RETURN  (surfs)  ;

END_FUNCTION ;

(

*

102

ページ

4.6.28

関数 list_to_array の EXPRFSS による定義は,変数 res を適切に初期化していない。EXPRESS による定義

を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION list_to_array (lis : LIST [0 : ?] OF GENERIC : T ;

                     low,  u  :  INTEGER)  :  ARRAY  OF  GENERIC  :  T  ;

  LOCAL

    n

: INTEGER ;

    res  : ARRAY [low : u] OF GENERIC : T ;

  END_LOCAL  ;

  n  :

=SIZEOF (lis) ;

  IF (n < > (u-low+1)) THEN


21

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

    RETURN  (?)  ;

  ELSE

    res  :

= [lis [1] : n];

    REPEAT  i  :

=2 TO n ;

      res  [low+i-1]  :

=lis [i] ;

    END_REPEAT  ;

    RETURN  (res)  ;

  END_IF  ;

END_FUNCTION ;

(

*

102

ページ

4.6.29

関数 make_array_of_array の EXPRESS による定義は,変数 res に適切な値を割り当てていない。EXPRFSS

による定義を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION make_array_of_array (lis : LIST [1 : ?] OF LIST [1 : ?] OF

                                          GENERIC  :  T  ;

                            low1,  u1,  low2,  u2  :  INTEGER)  :

                  ARRAY  OF  ARRAY  OF  GENERIC  :  T  ;

  LOCAL

    res : ARRAY [low1 : u1] OF ARRAY [low2 : u2] OF GENERIC : T ;

  END_LOCAL  ;

(

*

入力の次元数が整合していることを検査する。

*

)

  IF  (u1-low1

+1) < > SIZEOF (lis) THEN

    RETURN  (?)  ;

  END_IF  ;

  IF (u2-low2+1) < > SIZEOF (lis [1]) THEN

    RETURN  (?)  ;

  END_IF  ;

(

*

lis [1]

の値を用いて変数 res を初期化する。

*

)

  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  ;


22

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

  RETURN  (res)  ;

END_FUNCTION ;

(

*

107

ページ

5.3

エンティティの定義又は関数中で生成されるエンティティを初期化するには,定数を必要とする。

topological_representation_item

型を生成するとき,定数 dummy_tri を定義の一部として用いる。次の新し

い箇条を 5.3.1 として挿入し,5.3.15.3.5 の箇条番号を順に付け直す。

5.3.1

定数の定義  topological_representation_item 型を生成するとき,定数 dummy_tri を定義の一部とし

て用いる。これは,適切な上位型と空文字列をもつ属性 name とを与える。

EXPRESS

による定義

*

)

CONSTANT

  dummy_tri : topological_representation_item :

                 representation_item  (

”) ||

                 topological_representation_item(  )  ;

END_CONSTANT ;

(

*

129

ページ

5.5.3

関数 edge_reversed の EXPRFSS による定義は,変数 the_reverse を適切に初期化してない。属性の値に関

する規定を明確にする。戻り値に用いる変数の型及び局所変数の型の宣言を,関数が実際に戻す値の型に

変更する。

次の文章を削除する。

この関数は,向きが反転されている以外,入力された edge と等価な edge を戻す。

代わりに,次の文章を挿入する。

この関数は,向きが反転されている以外,入力された edge と等価 oriented_edge を戻す。

EXPRESS

による定義を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION edge_reversed (an_edge : edge) : oriented_edge ;

  LOCAL

    the_reverse  :  oriented_edge  ;

  END_LOCAL  ;

  IF  (

’TOPOLOGY_SCHEMA. ORIENTED_EDGE’IN TYPEOF (an_edge)) THEN

    the_reverse  :

=dummy_tri ||


23

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

            edge  (an_edge.  edge_end,  an_edge.  edge_start)  ||

            oriented_edge(an_edge

\oriented_edge. edge_element,

                       NOT  (an_edge

\oriented_edge. orientation)) ;

  ELSE

    the_reverse  :

=dummy_tri ||

            edge  (an_edge.  edge_end,  an_edge.  edge_start)  ||

            oriented_edge  (an_edge,  FALSE)  ;

  END_IF  ;

  RETURN  (the_reverse)  ;

END_FUNCTION ;

(

*

引数定義の内容を次と置き換える。

the_reverse

(出力)向きを反転した結果の oriented_edge。

129

ページ

5.5.4

関数 path_reversed の EXPRESS による定義は,変数 the_reverse を適切に初期化してない。戻り値に用い

る変数の型及び局所変数の型の宣言を,関数が実際に戻す値の型に変更する。

次の文章を削除する。

この関数は,向きが反転されている以外,入力された path と等価な path を戻す。

代わりに,次の文章を挿入する。

この関数は,向きが反転されている以外,入力された path と等価な oriented_path を戻す。

EXPRESS

による定義を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION path_reversed (a_path : path) : oriented_path ;

  LOCAL

    the_reverse  :  oriented_path  ;

  END_LOCAL  ;

  IF  (

’TOPOLOGY_SCHEMA. ORIENTED_PATH’IN TYPEOF (a_path)) THEN

    the_reverse  :

=dummy_tri ||

      path  (list_of_topology_reversed  (a_path.  edge_list))  ||

        oriented_path(a_path

\oriented_path. path_element,

                      NOT  (a_path

\oriented path. orientation)) ;

  ELSE

    the_reverse  :

=dummy_tri ||

                    path  (list_of_topology_reversed  (a_path.  edge_list))  ||

                           oriented_path  (a_path,  FALSE)  ;

  END_IF  ;

  RETURN  (the_reverse)  ;


24

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

END_FUNCTION ;

(

*

引数定義の内容を次と置き換える。

the_reverse

(出力)向きを反転した結果の oriented_path。

130

ページ

5.5.5

関数 face_bound_reversed の EXPRESS による定義は,変数 the_reverse を適切に初期化していない。

a_face_bound

が face outer_bound 型のとき,戻り値も同じ型とする。

EXPRESS

による定義を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION face_bound_reversed (a_face_bound : face_bound) : face_bound ;

  LOCAL

    the_reverse  :  face_bound  ;

  END_LOCAL  ;

  IF  (

’TOPOLOGY_SCHEMA. FACE_OUTER_BOUND’IN TYPEOF (a_face_bound)) THEN

    the_reverse  :

=dummy_tri ||

                    face_bound(a_face_bound

\face_bound. bound,

                          NOT  (a_face_bound

\face_bound. orientation))

                          ||  face_outer_bound(  )  ;

  ELSE

    the_reverse  :

=dummy_tri ||

                       face_bound  (a_face_bound.  bound,

                            NOT  (a_face_bound.  orientation))  ;

    END_IF  ;

  RETURN  (the_reverse)  ;

END_FUNCTION ;

(

*

130

ページ

5.5.6

関数 face_reversed の EXPRESS による定義は,変数 the_reverse を適切に初期化してない。戻り値に用い

る変数の型及び局所変数の型の宣言を,関数が実際に戻す値の型に変更する。

次の文章を削除する。

この関数は,向きが反転されている以外,入力された face と等価な face を戻す。

代わりに,次の文章を挿入する。

この関数は,向きが反転されている以外,入力された face と等価な oriented_face を戻す。

EXPRESS

による定義を次と置き換える。

EXPRESS

による定義


25

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

*

)

FUNCTION face_reversed (a_face : face) : oriented_face ;

  LOCAL

    the_reverse  :  oriented_face  ;

  END_LOCAL  ;

  IF  (

’TOPOLOGY_SCHEMA. ORIENTED_FACE’IN TYPEOF (a_face)) THEN

    the_reverse  :

=dummy_tri ||

      face  (set_of_topology_reversed  (a_face.  bounds))  ||

          oriented_face  (a_face

\oriented_face. face_element,

                                  NOT  (a_face

\oriented_face. orientation)) ;

  ELSE

    the_reverse  :

=dummy_tri ||

      face  (set_of_topology_reversed  (a_face.  bounds))  ||

                                            oriented_face  (a_face,  FALSE)  ;

  END_IF  ;

  RETURN  (the_reverse)  ;

END_FUNCTION ;

(

*

引数定義の内容を次と置き換える。

the_reverse

(出力)向きを反転した結果の oriented_face。

131

ページ

5.5.7

関数 shell_reversed の EXPRESS による定義は,変数 the_reverse を適切に初期化しておらず,計算途中の

値を代入することもない。2 個の新しい関数を呼ぶことで,関数の構造を簡潔なものとする。

次の文章を削除する。

この関数は,向きが反転されている以外,入力された shell と等価な shell を戻す。

代わりに,次の文章を挿入する。

こ の 関 数 は , 向 き が 反 転 さ れ て い る 以 外 , 入 力 さ れ た shell と 等 価 な oriented_open_shell 又 は

oriented_closed_shell

を戻す。

EXPRESS

による定義を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION shell_reversed (a_shell : shell) : shell ;

  IF  (

’TOPOLOGY_SCHEMA. OPEN_SHELL’IN TYPEOF (a_shell)) THEN

    RETURN  (open_shell_reversed  (a_shell))  ;

  ELSE

    IF (

’TOPOLOGY_SCHEMA. CLOSED_SHELL’IN TYPEOF (a_shell)) THEN

      RETURN  (closed_shell_reversed  (a_shell))  ;

    ELSE


26

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

      RETURN  (?)  ;

    ENDIF  ;

  END_IF  ;

END_FUNCTION ;

(

*

引数定義から,the_reverse を削除して,次と置き換える。

(出力)向きを反転した結果。

参考  Technical corrigendum 2 には,引数定義の変更は含まれていないが,“EXPRESS による定義”で

は局所変数 the_reverse が削除されたにもかかわらず訂正されていなかったので,上記のように

した。

132

ページ

5.5.8

この追補による変更で示されている通り,topology_schema では新しい関数を必要とする。5.5.85.5.20

の箇条番号を順に付け直してそれぞれ 5.5.105.5.22 とし,次の箇条を 5.5.8 及び 5.5.9 として,挿入する。

5.5.8

closed_shell_reversed

  この関数は,各要素の向きが反転されている以外,入力された closed_shell

と等価な oriented_closed_shell を戻す。

EXPRESS

による定義

*

)

FUNCTION closed_shell_reversed (a_shell : closed_shell) :

                                                      oriented_closed_shell  ;

  LOCAL

    the_reverse  :  oriented_closed_shell  ;

  END_LOCAL  ;

  IF  (

’TOPOLOGY_SCHEMA. ORIENTED_CLOSED_SHELL’IN TYPEOF (a_shell)) THEN

    the_reverse  :

=dummy_tri ||

                        connected_face_set  (

                            a_shell

\connected_face_set. cfs_faces) ||

                        closed_shell(  )  ||  oriented_closed_shell  (

                            a_shell

\oriented_closed_shell. closed_shell_element,

                            NOT  (a_shell

\oriented_closed_shell. orientation)) ;

  ELSE

    the_reverse  :

=dummy_tri ||

                        connected_face_set  (

                            a_shell

\connected_face_set. cfs_faces) ||

                        closed_shell(  )  ||

                        oriented_closed_shell  (a_shell,  FALSE)  ;

  END_IF  ;

  RETURN  (the_reverse)  ;

END_FUNCTION ;


27

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

(

*

引数定義

a_shell

(入力)向きが逆にされる closed_shell。

the_reverse

(出力)向きを反転した結果。

5.5.9

open_shell_reversed

  この関数は,各要素の向きが反転されている以外,入力された open_shell と

等価な oriented_open_shell を戻す。

EXPRESS

による定義

*

)

FUNCTION open_shell_reversed (a_shell : open shell) :

                                          oriented_open_shell  ;

  LOCAL

    the_reverse  :  oriented_open_shell  ;

  END_LOCAL  ;

  IF  (

’TOPOLOGY_SCHEMA. ORIENTED_OPEN_SHELL’IN TYPEOF (a_shell)) THEN

    the_reverse  :

=dummy_tri ||

                    connected_face_set  (

                        a_shell

\connected_face_set. cfs_faces) ||

                    open_shell  (  )  ||  oriented_open_shell  (

                        a_shell

\oriented_open_shell. open_shell_element,

                        (NOT  (a_shell

\oriented_open_shell. orientation))) ;

  ELSE

    the_reverse  :

=dummy_tri ||

                    connected_face_set  (

                        a_shell

\connected_face_set. cfs_faces) ||

                    open_shell  (  )  ||

                    oriented_open_shell  (a_shell,  FALSE)  ;

  END_IF  ;

  RETURN  (the_reverse)  ;

END_FUNCTION ;

(

*

引数定義

a_shell

(入力)向きが逆にされる open_shell。

the_reverse

(出力)向きを反転した結果。

133

ページ

5.5.10

関数 boolean_choose の EXPRFSS による定義は,ラベル付けされていない総称データ型を戻り値として

いる。JIS B 3700-11 の 9.5.3.2 の規則及び制約(b)によると,関数の戻り値に総称データ型を用いるとき,

型ラベルが必要であり,実引数に対して宣言される型ラベルを参照しなければならない。実引数と戻り値

とは,与えられた型ラベルでなければならない。ここで用いる型ラベルは“item”とする。EXPRESS によ


28

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

る定義を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION boolean_choose (b : boolean ;

            choice1, choice2 : generic : item) : generic : item ;

    IF  b  THEN

      RETURN  (choice1)  ;

    ELSE

      RETURN  (choice2)  ;

    END_IF  ;

END_FUNCTION ;

(

*

136

ページ

5.5.17

関数 mixed_loop_type_set の EXPRESS による定義は,

使用していない変数の宣言を含んでいる。

EXPRESS

による定義を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION mixed_loop_type_set (1 : SET [0 : ?] OF loop) : LOGICAL ;

    LOCAL

      poly_loop_type  :  LOGICAL  ;

    END_LOCAL  ;

    IF  (SIZEOF(1)  <

=1) THEN

      RETURN  (FALSE)  ;

    END_IF  ;

    poly_loop_type  :

= (’TOPOLOGY_SCHEMA. POLY_LOOP’IN TYPEOF (1 [1])) ;

    REPEAT  i  :

=2 TO SIZEOF (1) ;

      IF ((

’TOPOLOGY_SCHEMA. POLY_LOOP’IN TYPEOF(1 [i]))

        <  >  poly_loop_type)  THEN

        RETURN  (TRUE)  ;

      END_IF  ;

    END_REPEAT  ;

    RETURN  (FALSE)  ;

END_FUNCTION ;

(

*

152

ページ

6.4.15


29

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

エンティティ revolved_face_solid の EXPRESS による定義は,属性 axis_line を適切に初期化しない。

EXPRESS

による定義を次と置き換える。

EXPRESS

による定義

*

)

ENTITY revolved_face_solid

  SUBTYPE OF (swept_face_solid) ;

   axis  :  axis1_placement  ;

  angle : plane_angle_measure ;

DERIVE

  axis_line : line :

=dummy_gri || curve( ) || line(axis. location,

                                      dummy_gri  ||  vector  (axis.  z,  1.0))  ;

END_ENTITY ;

(

*

154

ページ

6.4.18

エンティティ revolved_area_solid の EXPRESS による定義は,属性 axis_line を適切に初期化しない。

EXPRESS

による定義を次と置き換える。

EXPRESS

による定義

*

)

ENTITY revolved_area_solid

  SUBTYPE OF (swept_area_solid) ;

  axis  :  axis1_placement  ;

  angle : plane_angle_measure ;

DERIVE

  axis_line : line :

=dummy_gri || curve( ) || line (axis. location,

                          dummy_gri  ||  vector  (axis.  z,  1.0))  ;

END_ENTITY ;

(

*

160

ページ

6.5.1

関数 acyclic_solid_replica の EXPRESS による定義は,エンティティ solid_replica のスキーマを適切に参照

していない。EXPRESS による定義を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION acyclic_solid_replica (rep : solid_replica ;

                                    parent  :  solid_model)  :  BOOLEAN  ;

  IF  NOT  ((

’GEOMETRIC_MODEL_SCHEMA. SOLID_REPLICA’) IN

                                                TYPEOF  (parent))  THEN


30

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

    RETURN  (TRUE)  ;

  END_IF  ;

  (

*

parent

が solid_replica 型でなければ TRUE を戻す。

*

)

  IF  (parent  :

= : rep) THEN

    RETURN  (FALSE)  ;

  (

*

parent

が同じ solid_replica ならば FALSE を戻す。

それ以外の場合は,parent 自身の parent_solid で再び関数を呼ぶ。

*

)

  ELSE RETURN (acyclic_solid_replica (rep,

                                parent

\solid_replica. parent_solid)) ;

  END_IF  ;

END_FUNCTION ;

(

*

160

ページ

6.5.2

関数 acyclic_set_replica の EXPRESS による定義は,エンティティ geometric_set_replica のスキーマを適切

に参照していない。EXPRFSS による定義を次と置き換える。

EXPRESS

による定義

*

)

FUNCTION acyclic_set_replica (rep : geometric_set_replica ;

                                   parent  :  geometric_set)  :  BOOLEAN  ;

  IF  NOT  ((

’GEOMETRIC_MODEL_SCHEMA. GEOMETRIC_SET_REPLICA’) IN

                                                TYPEOF  (parent))  THEN

    RETURN  (TRUE)  ;

  END_IF  ;

  (

*

parent

が geometric_set_replica 型でなければ,TRUE を戻す。

*

)

  IF  (parent  :

= : rep) THEN

    RETURN  (FALSE)  ;

  (

*

parent

が同じ geometric_set_replica ならば FALSE を戻す。

それ以外の場合は,parent 自身の parent_set で再び関数を呼ぶ。

*

)

  ELSE RETURN (acyclic_set_replica (rep,

                            parent

\geometric_set_replica. parent_set)) ;

  END_IF  ;

END_FUNCTION ;

(

*

162

ページ

6.5.5

関数 build_transformed_set の EXPRESS による定義は,

使用していない変数の宣言を含んでいる。

EXPRFSS

による定義を次と置き換える。


31

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

EXPRESS

による定義

*

)

FUNCTION build_transformed_set(tr : cartesian_transformation_operator ;

            gset : geometric_set) : SET [0 : ?] OF geometric_set_select ;

  LOCAL

    s      :  SET  [1  :  ?]  OF  geometric_set_select  :

=gset. elements ;

    trset : SET [0 : ?] OF geometric_set_select :

=[ ] ;

  END_LOCAL  ;

  REPEAT  j  :

=1 TO SIZEOF (s) ;

    IF (

’GEOMETRY_SCHEMA. CURVE’ IN TYPEOF (s [j])) THEN

      trset  :

=trset+curve_replica (s [j], tr) : ELSE

      IF (

’GEOMETRY_SCHEMA. POINT’ IN TYPEOF (s [j])) THEN

        trset  :

=trset+point_replica (s [j], tr) : ELSE

        IF (

'GEOMETRY_SCHEMA. SURFACE’IN TYPEOF (s [j])) THEN

          trset  :

=trset+surface_replica(s [j] ,

                   tr  ||  cartesian_transformation_operator_3d  (?))  ;

        END_IF  ;

      END_IF  ;

    END_IF  ;

  END_REPEAT  ;

  RETURN  (trset)  ;

END_FUNCTION ;

(

*

163

ページ

6.5.5

3

個の AIC の分冊が参照している関数 msb_shells が必要である。次に示す箇条を箇条 6.5.5 の直後に,挿

入する。

6.5.6

msb_shells

  この関数は,manifold_solid_brep の定義に用いられているすべての closed_shell の集合

を生成する。manifold_solid_brep の下位型 brep_with_voids の場合にも生成する。

EXPRESS

による定義

*

)

FUNCTION msb_shells (brep : manifold_solid_brep) :

                                                SET  [1  :  ?]  OF  closed_shell  ;

  IF SIZEOF (QUERY (msbtype <

*

 TYPEOF (brep) |

    msbtype  LIKE’

*

BREP_WITH_VOIDS’)) >

=1 THEN

    RETURN  (brep

\brep_with_voids. voids+brep. outer) ;

  ELSE

    RETURN  ([brep.  outer])  ;

  END_IF  ;


32

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

END_FUNCTION ;

(

*

引数定義

brep

(入力)closed_shell の集合を求める manifold_solid_brep。

(出力)brep を定義するすべての closed_shell の集合。

参考  Technical corrigendum 2 には,引数定義で出力用の局所変数の名称として result を用いているが,

“EXPRESS による定義”では局所変数 result を用いていないことから,上記のようにした。

168

ページ

附属書 B

この追補で認識された変更に伴い,文書識別子及びスキーマの情報オブジェクト識別子が変更された。

この規格のオブジェクト識別子に関する記述を次と置き換える。

開放型システムで情報オブジェクトをあいまいさなく識別するために,次のオブジェクト識別子をこの

規格自身に割り当てる。

{iso standard 10303 part (42) version (3)}

この値の意味は,ISO/IEC 8824-1 で定義され,JIS B 3700-1 で規定されている。

geometry_schema

のオブジェクト識別子に関する記述を次と置き換える。

開放型システムで geometry_schema(4.参照)をあいまいさなく識別するために,geometry_schema に対

して,次のオブジェクト識別子が割り当てられている。

{iso standard 10303 part (42) version (3) object (1) geometry-schema (1)}

この値の意味は,ISO/IEC 8824-1 で定義され,JIS B 3700-1 で規定されている。

topology_schema

のオブジェクト識別子に関する記述を次と置き換える。

開放型システムで topology_schema(5.参照)をあいまいさなく識別するために,topology_schema に対し

て,次のオブジェクト識別子が割り当てられている。

{iso standard 10303 part (42) version (3) object (1) topology-schema (2)}

この値の意味は,ISO/IEC 8824-1 で定義され,JIS B 3700-1 で規定されている。

geometric_model_schema

のオブジェクト識別子に関する記述を次と置き換える。

開 放 型 シ ス テ ム で geometric_model_schema ( 6. 参 照 ) を あ い ま い さ な く 識 別 す る た め に ,

geometric_model_schema

に対して,次のオブジェクト識別子が割り当てられている。

{iso standard 10303 part (42) version (3) object (1) geometric-model-schema (3)}

この値の意味は,ISO/IEC 8824-1 で定義され,JIS B 3700-1 で規定されている。

167

ページ

附属書 C

この附属書の内容を次と置き換える。

この附属書は,

EXPRESS

エンティティの名称に対応する短縮名の一覧,

及びこの規格における EXPRESS

による定義の一覧を示す。ただし,注釈又はその他の説明文は,含まれていない。この附属書は,計算機

可読形式だけで提供され,次の URL で見ることができる。

短縮名  :http://www.mel.nist.gov/div826/subject/apde/snr/

EXPRESS

:http://www.mel.nist.gov/step/parts/part042/is/tc2/


33

B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)

これらのサイトに接続するのが困難な場合には,ISO 中央事務局へ連絡するか,又は sc4sec@cme. nist.

gov

の ISO/TC 184/SC 4 事務局へ直接連絡する。

備考  上の URL で計算機可読形式で提供する情報は参考とする。この規格本体に記述されているもの

を本来の規定とする。

177

179 ページ

附属書 D

図式表現 EXPRESS-G において,composite_curve_segment 及び surface_path の定義の変更に伴い,

附属書

図 D.8 及び附属書図 D.11 は変更される。附属書図 D.8 では,表現スキーマの founded_item の下位型として

composite_curve_segment

を示す。

附属書図 D.11 では,表現スキーマの founded_item の下位型として

surface_path

を示す。

附属書図 D.8 及び附属書図 D.11 の内容を次の附属書図 D.8 及び附属書図 D.11 と置き

換える。