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

 

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を定義の一部として用いる。次の新し


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

 

い箇条を4.3.1として挿入し,箇条4.3.1〜4.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 ; 

 


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 ; 


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を通じて関連付けられる。 


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 ; 


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) : 


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 


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 


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.1〜5.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.8〜5.5.20

の箇条番号を順に付け直してそれぞれ5.5.10〜5.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と置き

換える。