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

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

(1) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

まえがき 

この規格は,工業標準化法に基づいて,日本工業標準調査解の審議を経て,経済産業大臣が改正した,

日本工業規格である,これによってJIS B 3700-42は改正され,この規格に置き換えられる。 

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

representation and exchange-Part 42:Integrated generic resources:Geometric and topological representationに対し

て,2001年に発行された Technical Corrigendum 3を翻訳し,技術的内容及び規格票の様式を変更すること

なくJIS B 3700-42:1996追補2として発行されたものである。 

この規格の一部が,技術的性格をもつ,特許権,出願公開後の特許出願,実用新案権,または出願公開

後の実用新案登録出願に抵触する可能性があることに注意を喚起する。経済産業大臣及び日本工業標準調

査会は,このような技術的性質を持つ特許権,出願公開後の特許出願,実用新案権,又は出願公開後の実

用新案登録にかかわる確認について,責任を持たない。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

日本工業規格          JIS 

B 3700-42:2005 

(ISO 10303-42:1994/Cor.3:2001) 

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

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

第42部:統合総称リソース:幾何及び位相の表現 

(追補2) 

Industrial automation systems and integration-Product data representation 

and exchange-Part 42:Integrated generic resource:Geometric and 

topological representation 

(Technical Corrigendum 3) 

JIS B 3700-42:1996を,次のように改正する。 

9ページ 

4. 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

エンティティfounded̲itemを,composite̲curve̲segment及びsurface̲patchの上位型として参照する。次

の行を,representation̲schema の REFERENCE FROMのリストに追加する。 

    founded̲item, 

12ページ 

4.3 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

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

geometric̲representation̲item 型を生成するとき,定数dummy̲gri を定義の一部として用いる。次の新しい

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

4.3.1 定数の定義  geometric̲representation̲item型を生成するとき,定数dummy̲griを定義の一部とし

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

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

    EXPRESSによる定義 

      *) 

      CONSTANT 

       dummy̲gri : geometric̲representation̲item := representation̲item('')|| 

                   geometric̲representation̲item(); 

      END̲CONSTANT; 

      (* 

18ページ 

4.4.4 

エンティティ cartesian̲point のEXPRESSによる定義を,新たに導入した下位型を含めるように変更す

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

    EXPRESSによる定義 

      *) 

      ENTITY cartesian̲point 

        SUPERTYPE OF (ONEOF(cylindrical̲point, polar̲point, spherical̲point)) 

        SUBTYPE OF (point); 

         coordinates  : LIST [1:3] OF length̲measure; 

      END̲ENTITY; 

      (* 

19ページ 

4.4.5 

この規格群の他の部からの参照を可能にするために,cartesian̲point の下位型を定義する。次の新しい

箇条を4.4.5,4.4.6,4.4.7として挿入し,箇条4.4.5〜4.4.73の番号を4.4.8〜4.4.76として順に付け直す。次の

新しい図を 図1 として挿入し,図1〜13 の番号を 図2〜14 として順に付け直す。 

4.4.5 cylindrical̲point  cylindrical̲point は,cartesian̲point の下位型の点であり,対応するデカルト座

標系の原点に中心をもつ円柱座標系によって,その位置を定義する。 

    EXPRESSによる定義 

     *) 

     ENTITY cylindrical̲point 

       SUBTYPE OF (cartesian̲point); 

         r     : length̲measure; 

         theta : plane̲angle̲measure; 

         z     : length̲measure; 

       DERIVE 

         SELF¥cartesian̲point.coordinates : LIST [1:3] OF length̲measure := 

                         [r*cos(theta), r*sin(theta), z]; 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

       WHERE 

        WR1: r >= 0.0; 

     END̲ENTITY; 

     (* 

    属性定義 

    r: この点からZ軸への距離。 

    theta: この点とZ軸とを含む平面及びXZ平面がなす角度。 

    z: この点からXY平面への距離。 

    形式的要件 

    WR1: r の値は,負になってはならない。 

    非形式的要件 

    IP1: theta の値は,0°以上 360°未満とする。 

4.4.6 spherical̲point  spherical̲point は,cartesian̲point の下位型の点であり,対応するデカルト座標

系の原点に中心をもつ球面極座標系によって,その位置を定義する。 

    EXPRESSによる定義 

      *) 

      ENTITY spherical̲point 

        SUBTYPE OF (cartesian̲point); 

          r     : length̲measure; 

          theta : plane̲angle̲measure; 

          phi   : plane̲angle̲measure; 

        DERIVE 

          SELF¥cartesian̲point.coordinates : LIST [1:3] OF length̲measure := 

            [r*sin(theta)*cos(phi), r*sin(theta)*sin(phi), r*cos(theta)]; 

        WHERE 

         WR1: r >= 0.0; 

      END̲ENTITY; 

      (* 

    属性定義 

    r: この点から原点への距離。 

    theta: この点と原点とを結ぶ直線及びZ軸がなす角度θ。 

    phi: この点と原点とを結ぶ直線をXY平面に投影した直線及びX軸がなす角度φ。 

        備考 属性の解釈については,図1参照。 

    形式的要件 

    WR1: r の値は,負になってはならない。 

    非形式的要件 

    IP1: theta の値は,0°以上 180°以下とする。 

    IP2: phi の値は,0°以上 360°未満とする。 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

4.4.7 polar̲point  polar̲point は,cartesian̲point の下位型の点であり,対応するデカルト座標系の原

点に中心をもつ2次元極座標系によって,その位置を定義する。 

    EXPRESSによる定義 

      *) 

      ENTITY polar̲point 

        SUBTYPE OF (cartesian̲point); 

          r     : length̲measure; 

          theta : plane̲angle̲measure; 

        DERIVE 

          SELF¥cartesian̲point.coordinates : LIST [1:3] OF length̲measure := 

                        [r*cos(theta), r*sin(theta)]; 

        WHERE 

         WR1: r >= 0.0; 

      END̲ENTITY; 

      (* 

    属性定義 

    r: この点から原点への距離。 

    theta: この点と原点とを結ぶ直線及びX軸がなす角度。 

    形式的要件 

    WR1: r の値は,負になってはならない。 

    非形式的要件 

    IP1: theta の値は,0°以上 360°未満とする。 

background image

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

図 1 spherical̲point の属性 

23ページ 

4.4.13 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

エンティティ 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; 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

      (* 

28ページ 

4.4.17 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

エンティティ cartesian̲transformation̲operator̲3d のEXPRESSによる定義は,属性 dim の参照の方法

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

    WR1: SELF¥geometric̲representation̲item.dim = 3; 

29ページ 

4.4.18 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

エンティティ cartesian̲transformation̲operator̲2d のEXPRESSによる定義は,属性 dim の参照の方法

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

    WR1: SELF¥geometric̲representation̲item.dim = 2; 

44ページ 

4.4.34 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

エンティティ 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 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

エンティティ composite̲curve̲segment のEXPRESSによる定義を変更してfounded̲item の下位型とし,

属性 parent̲curve の表現コンテキストを与える。 

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

    EXPRESSによる定義 

      *) 

      ENTITY composite̲curve̲segment 

       SUBTYPE OF (founded̲item); 

         transition    : transition̲code; 

         same̲sense    : BOOLEAN; 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

         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による定義は,DERIVE文に誤りがある。従来の追補1

における訂正は,すべてのコンパイラに適合しなかった。 

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

    EXPRESSによる定義 

      *) 

      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; 

      (* 

71ページ 

4.4.67 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

エンティティ curve̲bounded̲surface のEXPRESSによる定義の WR1 に誤りがある。 

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

    EXPRESSによる定義 

      *) 

      ENTITY curve̲bounded̲surface 

         SUBTYPE OF (bounded̲surface); 

         basis̲surface    : surface; 

         boundaries       : SET [1:?] OF boundary̲curve; 

         implicit̲outer   : BOOLEAN; 

       WHERE 

         WR1: (NOT implicit̲outer) OR 

              (SIZEOF (QUERY (temp <* boundaries | 

               'GEOMETRY̲SCHEMA.OUTER̲BOUNDARY̲CURVE' IN TYPEOF(temp))) = 0); 

         WR2: (NOT(implicit̲outer)) OR 

                ('GEOMETRY̲SCHEMA.BOUNDED̲SURFACE' IN TYPEOF(basis̲surface)); 

         WR3: SIZEOF(QUERY(temp <* boundaries |  

                       'GEOMETRY̲SCHEMA.OUTER̲BOUNDARY̲CURVE' IN 

                                              TYPEOF(temp))) <= 1; 

         WR4: SIZEOF(QUERY(temp <* boundaries | 

                 (temp¥composite̲curve̲on̲surface.basis̲surface [1] <> 

                                              SELF.basis̲surface))) = 0; 

      END̲ENTITY; 

      (* 

74ページ 

4.4.70 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

エンティティ rectangular̲composite̲surface のEXPRESSによる定義は,WR1 において,空の集合と誤

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

     WR1: SIZEOF(QUERY (s <* segments | n̲v <> SIZEOF (s))) = 0; 

75ページ 

4.4.71 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

エンティティ surface̲patch のEXPRESSによる定義を変更して founded̲item の下位型とする。

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

    EXPRESSによる定義 

      *) 

      ENTITY surface̲patch 

       SUBTYPE OF (founded̲item); 

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

78ページ 

4.6.1 

関数 dimension̲of のEXPRESSによる定義は,cartesian̲point, direction 又は vector が関数の内部で生成

されたときに dimension̲count を戻り値として返さない。文章及びEXPRESSによる定義を削除して次と

置き換える。 

4.6.1 dimension̲of  関数 dimension̲of は,入力 geometric̲representation̲item の次元数を戻す。入力

が cartesian̲point, direction 又は vector であるとき,その要素の個数を直接数えることで次元数を得るも

のとする。 

他のすべての下位型については,入力 geometric̲representation̲item が幾何的に基礎付けられている 

geometric̲representation̲context の整数dimension̲count を次元数とする。 

10 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

大域規則 compatible̲dimension によって,この値は,入力 geometric̲representation̲item の 

coordinate̲space̲dimension とする。この規則の定義は,4.5.1 による。 

    EXPRESSによる定義 

      *) 

      FUNCTION dimension̲of(item : geometric̲representation̲item) : 

        dimension̲count; 

        LOCAL 

          x   : SET OF representation; 

          y   : representation̲context; 

          dim : dimension̲count; 

        END̲LOCAL; 

        -- cartesian̲point, direction 又は vector については,次元数は, 

        -- その要素の個数を数えることで決まる。 

          IF 'GEOMETRY̲SCHEMA.CARTESIAN̲POINT' IN TYPEOF(item) THEN 

             dim := SIZEOF(item¥cartesian̲point.coordinates); 

             RETURN(dim); 

          END̲IF; 

          IF 'GEOMETRY̲SCHEMA.DIRECTION' IN TYPEOF(item) THEN 

             dim := SIZEOF(item¥direction.direction̲ratios); 

             RETURN(dim); 

          END̲IF; 

          IF 'GEOMETRY̲SCHEMA.VECTOR' IN TYPEOF(item) THEN 

             dim := SIZEOF(item¥vector.orientation¥direction.direction̲ratios); 

             RETURN(dim); 

          END̲IF; 

        -- geometric̲representation̲item の他のすべての下位型については, 

        -- dim の値はコンテキストで決まる。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; 

        dim := y¥geometric̲representation̲context.coordinate̲space̲dimension; 

        RETURN (dim); 

11 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

      END̲FUNCTION; 

      (* 

81ページ 

4.6.6 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

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

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

    EXPRESSによる定義 

      *) 

      FUNCTION base̲axis(dim : INTEGER; axis1, axis2, axis3 : direction) : 

                                                       LIST [2:3] OF direction; 

        LOCAL 

          u      : LIST [2:3] OF direction; 

          factor : REAL; 

          d1, d2 : direction; 

        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(axis1); 

            u := [d1, orthogonal̲complement(d1)]; 

            IF EXISTS(axis2) 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]; 

12 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

            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 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

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

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

    EXPRESSによる定義 

      *) 

      FUNCTION build̲2axes(ref̲direction : direction) :  

                                           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 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

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

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

    EXPRESSによる定義 

      *) 

      FUNCTION build̲axes(axis, ref̲direction : direction) : 

                                                LIST [3:3] OF direction; 

         LOCAL 

13 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

           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 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

関数 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 

          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 を適切に初期化していない。入力引数 z̲axis の

値が方向 (-1, 0, 0) 及び arg が暗黙の値をもつとき,関数は有効な値を戻さない。3番目の文章を次と置

き換える。 

ただし,z̲axis が (1, 0, 0) 又は (-1, 0, 0) の場合には,arg の暗黙値として (0, 1, 0) が用いられる。 

14 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

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]) 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; 

      (* 

15 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

85ページ 

4.6.11 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

関数 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ページ 

4.6.12 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

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

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

    EXPRESSによる定義 

      *) 

      FUNCTION cross̲product (arg1, arg2 : direction) : vector; 

16 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

        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 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

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

壊すことがある。EXPRESSによる定義を削除して次と置き換える。 

    EXPRESSによる定義 

      *) 

      FUNCTION normalise (arg : vector̲or̲direction) : vector̲or̲direction; 

17 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

        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 

              vec.orientation := v; 

              result := vec; 

            ELSE 

              result := v; 

            END̲IF; 

18 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

          ELSE 

            RETURN(?); 

          END̲IF; 

        END̲IF; 

        RETURN (result); 

      END̲FUNCTION; 

      (* 

89ページ 

4.6.15 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

関数 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]; 

            END̲REPEAT; 

            mag := -mag; 

          END̲IF; 

19 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

          result := dummy̲gri || vector(normalise(v), mag); 

        END̲IF; 

        RETURN (result); 

      END̲FUNCTION; 

      (* 

90ページ 

4.6.16 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

関数 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 

20 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

              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 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

関数 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; 

21 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

        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 

              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; 

      (* 

22 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

93ページ 

4.6.18 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

関数 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 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

23 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

関数 default̲b̲spline̲knots のEXPRESSによる定義は,変数 knots に適切な値を代入していない。

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

    EXPRESSによる定義 

      *) 

      FUNCTION default̲b̲spline̲knots(degree,up̲knots : INTEGER; 

                                      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 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

関数 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; 

      (* 

24 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

96ページ 

4.6.21 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

関数 default̲b̲spline̲surface̲weights のEXPRESSによる定義は,戻り値に適切な値を代入していない。

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

    EXPRESSによる定義 

      *) 

      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 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

関数 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-スプラインのパラメタ化についての制限を検査する。 *) 

25 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

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

        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 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

関数 get̲basis̲surface のEXPRESSによる定義は,composite̲curve̲on̲surface から属性 segments を参

照する方法に誤りがある。EXPRESSによる定義を削除して次と置き換える。 

26 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

    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 

            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 'GEOMETRY̲SCHEMA.COMPOSITE̲CURVE̲ON̲SURFACE' IN 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 

27 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

関数 list̲to̲array のEXPRESSによる定義は,変数 res を適切に初期化していない。従来の追補1によ

る変更は,戻り値に配列の次元を設定していないために,新たな誤りを生じている。EXPRESSによる定

義を削除して次と置き換える。 

    EXPRESSによる定義 

      *) 

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

        END̲IF; 

      END̲FUNCTION; 

      (* 

102ページ 

4.6.29 

関数 make̲array̲of̲array のEXPRESSによる定義は,変数 res を適切に初期化していない。従来の追

補1による変更は,戻り値に配列の次元を設定していないために,新たな誤りを生じている。EXPRESS

による定義を削除して次と置き換える。 

    EXPRESSによる定義 

      *) 

      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; 

28 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

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

        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;  

        RETURN (res); 

      END̲FUNCTION; 

      (* 

107ページ 

5.3 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

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

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ページ 

29 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

5.5.3 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

関数 edge̲reversed のEXPRESSによる定義は,変数 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 || 

                  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 。 

30 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

129ページ 

5.5.4 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

関数 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); 

      END̲FUNCTION; 

      (* 

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

    the̲reverse: (出力) 向きを反転した結果の oriented̲path 。 

31 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

130ページ 

5.5.5 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

関数 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 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

関数 face̲reversed のEXPRESSによる定義は,変数 the̲reverse を適切に初期化していない。戻り値に

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

次の文章を削除する。 

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

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

32 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

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

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

    EXPRESSによる定義 

      *) 

      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 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

関数 shell̲reversed のEXPRESSによる定義は,変数 the̲reverse を適切に初期化しておらず,計算途中

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

次の文章を削除する。 

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

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

33 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

この関数は,向きが反転されている以外,入力された 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 

            RETURN (?); 

          END̲IF; 

        END̲IF; 

      END̲FUNCTION; 

      (* 

  引数定義から,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 

34 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

          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; 

      (* 

    引数定義 

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

35 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

                         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 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

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

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

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

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

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

    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 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

関数 mixed̲loop̲type̲set のEXPRESSによる定義は,使用していない変数の宣言を含んでいる。

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

    EXPRESSによる定義 

      *) 

36 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

      FUNCTION mixed̲loop̲type̲set(l: SET[0:?] OF loop): LOGICAL; 

         LOCAL 

           poly̲loop̲type: LOGICAL; 

         END̲LOCAL; 

         IF(SIZEOF(l) <= 1) THEN 

           RETURN(FALSE); 

         END̲IF; 

         poly̲loop̲type := ('TOPOLOGY̲SCHEMA.POLY̲LOOP' IN TYPEOF(l[1])); 

         REPEAT i := 2 TO SIZEOF(l); 

           IF(('TOPOLOGY̲SCHEMA.POLY̲LOOP' IN TYPEOF(l[i]))  

              <> poly̲loop̲type) THEN 

              RETURN(TRUE); 

            END̲IF; 

         END̲REPEAT; 

         RETURN(FALSE); 

      END̲FUNCTION; 

      (* 

139ページ 

6. 

エンティティ box̲domain の修正後の記述と合わせるために,geometric̲model̲schema のEXPRESSに

よる定義に,スキーマ外への参照を追加する必要がある。文章及びEXPRESSによる定義を削除して次と

置き換える。 

次のEXPRESS宣言は,geometric̲model̲schema を開始し,必要な外部参照を明らかにする。 

    EXPRESSによる定義 

      *) 

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

      (* 

備考1. 上で参照しているスキーマは, 次の規格による。 

             geometry̲schema        この規格の4. 

             topology̲schema        この規格の5. 

37 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

             measure̲schema         JIS B 3700-41 

             representation̲schema  JIS B 3700-43 

2. このスキーマの図式表現を附属書Dの図D.16〜D.18に示す。 

152ページ 

6.4.15 

エンティティ revolved̲face̲solid のEXPRESSによる定義は,DERIVE文に誤りがある。従来の追補1

における訂正は,すべてのコンパイラに適合しなかった。 

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

    EXPRESSによる定義 

      *) 

      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; 

      (* 

154ページ 

6.4.18 

エンティティ revolved̲area̲solid のEXPRESSによる定義は,DERIVE文に誤りがある。従来の追補1

における訂正は,すべてのコンパイラに適合しなかった。 

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

    EXPRESSによる定義 

      *) 

      ENTITY revolved̲area̲solid 

        SUBTYPE OF (swept̲area̲solid); 

        axis  : axis1̲placement; 

        angle : plane̲angle̲measure; 

      DERIVE 

        axis̲line : line := representation̲item('')|| 

                          geometric̲representation̲item()|| curve()|| 

38 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

                          line(axis.location, representation̲item('')|| 

                          geometric̲representation̲item()|| 

                          vector(axis.z, 1.0)); 

      END̲ENTITY; 

      (* 

155ページ 

6.4.21 

エンティティ box̲domain のEXPRESSによる定義は,属性 corner の定義に用いられる cartesian̲point 

が幾何的に基礎付けられることを保証していない。EXPRESSによる定義を削除して次と置き換える。 

    EXPRESSによる定義 

      *) 

      ENTITY box̲domain 

        SUBTYPE OF (founded̲item); 

        corner  : cartesian̲point; 

        xlength : positive̲length̲measure; 

        ylength : positive̲length̲measure; 

        zlength : positive̲length̲measure; 

      WHERE 

        WR1: SIZEOF(QUERY(item <* USEDIN(SELF,'')| 

                  NOT ('GEOMETRIC̲MODEL̲SCHEMA.BOXED̲HALF̲SPACE' 

                         IN TYPEOF(item)))) = 0; 

      END̲ENTITY; 

      (* 

160ページ 

6.5.1 

次の変更は,従来の追補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 

           RETURN (TRUE); 

        END̲IF; 

39 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

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

次の変更は,従来の追補1に含まれていた内容と同じものである。 

関数 acyclic̲set̲replica のEXPRESSによる定義は,エンティティgeometric̲set̲replica のスキーマを適

切に参照していない。EXPRESSによる定義を削除して次と置き換える。 

    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による定義は,使用していない変数の宣言を含んでおり,

curve̲replica,point̲replica 及び surface̲replica の不完全なインスタンスを生成している。EXPRESSによ

40 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

る定義を削除して次と置き換える。 

    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 + dummy̲gri || curve() || curve̲replica(s[j],tr); ELSE 

            IF ('GEOMETRY̲SCHEMA.POINT' IN TYPEOF(s[j])) THEN 

              trset := trset + dummy̲gri || point() || point̲replica(s[j],tr); 

              ELSE 

              IF ('GEOMETRY̲SCHEMA.SURFACE' IN TYPEOF(s[j])) THEN 

                trset := trset + dummy̲gri || surface()  || 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 

次の変更は,従来の追補1に含まれていた内容と同じものである。 

アプリケーション翻案構成体 (AIC) の3個の部が参照している関数 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; 

background image

41 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

        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; 

      END̲FUNCTION; 

      (* 

    引数定義 

    brep: (入力) closed̲shell の集合を求める manifold̲solid̲brep 。 

    : (出力) brep を定義するすべての closed̲shell の集合。 

164ページ 

附属書A 

この追補で認識された変更にともない,表A.1 のエンティティの短縮名に不足が生じた。次に示す欄の

各々について,エンティティ名が正しいアルフベット順となるように 表A.1 に挿入する。 

エンティティ名    

短縮名 

CYLINDRICAL̲POINT 

 CYLPNT 

POLAR̲POINT        

 PLRPNT 

SPHERICAL̲POINT    

 SPHPNT | 

168ページ 

附属書B 

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

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

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

規格自身に割り当てる。 

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

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

geometry̲schema のオブジェクト識別子に関する記述を削除して次と置き換える。 

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

42 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

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

        { iso standard 10303 part(42) version(5) 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(5) 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(5) object(1) geometric-model-schema(3) } 

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

167ページ 

附属書C 

この追補で認識された変更にともない,EXPRESSによる定義を含む URL は変更された。この附属書の

内容を削除し,次と置き換える。 

この附属書は,EXPRESS エンティティの名称に対応する短縮名の一覧,及びこの規格における

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

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

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

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

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

sc4sec@cme.nist.gov の ISO/TC 184/SC 4 事務局へ直接連絡する。 

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

43 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

のを本来の規定とする。 

177・179ページ 

附属書D 

この追補で認識された変更にともない,図式表現 EXPRESS-G に誤りが生じた。 

図D.3,図D.8,図D.11 及び 図D.17 の内容を次のページと置き換える。 

background image

44 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

附属書D図D.3 geometry̲schema の EXPRESS-G による図式表現(3/12) 

              ― point の下位型 

background image

45 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

附属書D図D.8 geometry̲schema の EXPRESS-G による図式表現(8/12) 

              ― bounded̲curve の下位型 

background image

46 

B 3700-42:2005 (ISO 10303-42:1994/Cor.3:2001) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

附属書D図D.11 geometry̲schema の EXPRESS-G による図式表現(11/12) 

              ― bounded̲surface の下位型 

附属書D図D.17 geometry̲schema の EXPRESS-G による図式表現(2/3) 

               ― bounded̲surface の下位型