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

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

まえがき

この規格は,工業標準化法第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を翻訳し,技術的内容を変更すること

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

(1)

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

日本工業規格

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

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

2

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 ;

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

3

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

44ページ

4.4.34

エンティティtrimmed̲curveのEXPRESSによる定義は,WHERE条件節に論理的な誤りがある。EXPRESS

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

WR1 : (HIINDEX (trim̲1) =1) OR (TYPEOF (trim̲1 [1]) < > TYPEOF (trim̲1 [2])) ;

WR2 : (HIINDEX (trim̲2) =1) OR (TYPEOF (trim̲2 [1]) < > TYPEOF (trim̲2 [2])) ;

46ページ

4.4.36

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

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

EXPRESSによる定義

*)

ENTITY composite̲curve̲segment

SUBTYPE OF (founded̲item) ;

transition :transition̲code ;

same̲sense :BOOLEAN ;

parent̲curve : curve ;

INVERSE

using̲curves : BAG [1 : ?] OF composite̲curve FOR segments ;

WHERE

WR1 : (ʼGEOMETRY̲SCHEMA. BOUNDED̲CURVEʼIN TYPEOF (parent̲curve)) ;

END̲ENTITY ;

(*

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

備考 composite̲curve̲segmentは,geometric̲representation̲itemの下位型ではない。したがって,こ

のcomposite curve̲segmentから構成されたcomposite̲courveを用いるrepresentationの場合,属

性parent̲curveのインスタンスであるbounded̲curveは,それぞれのrepresentationの

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

geometric̲representation̲contextは,上位型のfounded̲itemを通じて関連付けられる。

63ページ

4.4.58

エンティティsurface̲of̲revolutionのEXPRESSによる定義は,属性axis̲lineを適切に初期化しない。

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

EXPRESSによる定義

*)

ENTITY surface̲of̲revolution

SUBTYPE OF (swept̲surface) ;

axis̲position : axisl̲placement ;

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

4

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

DERIVE

axis̲line : line :=dummy̲gri || curve( ) ||

line (axis̲position. location,

dummy̲gri || vector (axis̲position. z, 1.0)) ;

END̲ENTITY ;

(*

74ページ

4.4.70

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

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

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

75ページ

4.4.71

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

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

EXPRESSによる定義

*)

ENTITY surface̲patch

SUBTYPE OF (founded̲item) ;

parent̲surface :bounde̲surface ;

u̲transition

:transition̲code ;

v̲transition

:transition̲code ;

u̲sense

:BOOLEAN ;

v̲sense

:BOOLEAN ;

INVERSE

using̲surfaces :BAG [1 : ?] OF rectangular̲composite̲surface

FOR segments ;

WHERE

WR1 :(NOT(ʼGEOMETRY̲SCHEMA. CURVE̲BOUNDED̲SURFACEʼ

IN TYPEOF (parent̲surface))) ;

END̲ENTITY ;

(*

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

備考 surface̲patchは,geometric̲representation̲itemの下位型ではない。したがって,このsurface̲patch

から構成されたrectangular̲composite̲surfaceを用いるrepresentationの場合,属性parent̲surface

のインスタンスである

bounded̲surfaceは,それぞれのrepresentation

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

geometric̲representation̲contextは,上位型のfounded̲itemを通じて関連付けられる。

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

5

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

78ページ

4.6.1

関数dimension̲ofのEXPRESSによる定義に,注記を挿入する。EXPRESSによる定義を次と置き換える。

EXPRESSによる定義

*)

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

dimension̲count ;

LOCAL

x : SET OF representation ;

y : representation̲context ;

END̲LOCAL ;

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

x :=using̲representations (item) ;

--geometric̲representation̲contextのdimension̲countを決定する。

--context̲of̲itemsがgeometric̲representation̲contextであり,

--xのすべての値に対して同じdimension̲countをもつことは,

--規則compatible̲dimensionによって保証されている。

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

y : =x [1]. context̲of̲items ;

RETURN (y\geometric̲representation̲context. coordinate̲space̲dimension) ;

END̲FUNCTION ;

(*

81ページ

4.6.6

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

を次と置き換える。

EXPRESSによる定義

*)

FUNCTION basea̲axis (dim : INTEGER ; axisi, axis2, axis3 : direction) :

LIST [2 : 3] OF direction ;

LOCAL

u

: LIST [2 : 3] OF direction ;

factor : REAL ;

d1, d2 : direction ;

page

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

6

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

END̲LOCAL ;

IF (dim=3) THEN

d1 : =NVL (normalise (axis3), dummy̲gri || direction ([0.0, 0.0, 1.0])) ;

d2 : =first̲proj̲axis (d1, axis1) ;

u

: = [d2, second̲proj̲axis (d1, d2, axis2), d1] ;

ELSE

IF EXISTS (axis1) THEN

d1 : =normalise (axisi) ;

u

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

IF EXISTS (axis 2) THEN

factor : =dot̲product (axis2, u [2]) ;

IF (factor < 0.0) THEN

u [2] .direction̲ratios [1] : =-u [2]. direction̲ratios [1] ;

u [2] .direction̲ratios [2] : =-u [2]. direction̲ratios [2] ;

END̲IF ;

END̲IF ;

ELSE

IF EXISTS (axis2) THEN

d1 : = normalise (axis2) ;

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

u [1]. direction̲ratios [1] : =-u [1]. direction̲ratios [1] ;

u [1]. direction̲ratios [2] : =-u [1]. direction̲ratios [2] ;

ELSE

u := [dummy̲gri || direction ([1.0, 0.0]), dummy̲gri ||

direction ([0.0,1.0])] ;

END̲IF ;

END̲IF ;

END̲IF ;

RETURN (u) ;

END̲FUNCTION ;

(*

83ページ

4.6.7

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

義を次と置き換える。

EXPRESSによる定義

*)

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

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

7

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

LIST [2 : 2] OF direction ;

LOCAL

d : direction : =NVL (normalise(ref̲direction),

dummy̲gri || direction ([1.0, 0.0])) ;

END̲LOCAL ;

RETURN ([d, orthogonal̲complement (d)]) ;

END̲FUNCTION ;

(*

83ページ

4.6.8

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

を次と置き換える。

EXPRESSによる定義

*)

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

LIST [3 : 3] OF direction ;

LOCAL

d1, d2 : direction ;

END̲LOCAL ;

d1 : =NVL (normalise (axis), dummy̲gri || direction ([0.0, 0.0, 1.0])) ;

d2 : =first̲proj̲axis (d1, ref̲direction) ;

RETURN ([d2, normalise (cross̲product (d1, d2)). orientation, d1]) ;

END̲FUNCTION ;

(*

84ページ

4.6.9

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

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

EXPRESSによる定義

*)

FUNCTION orthogonal̲complement (vec : direction) : direction ;

LOCAL

result : direction ;

END̲LOCAL ;

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

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

8

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

RETURN (?) ;

ELSE

result : = dummy̲gri || direction([-vec. direction̲ratios[2],

vec. direction̲ratios [1]]) ;

RETURN (result) ;

END̲IF ;

END̲FUNCTION ;

(*

84ページ

4.6.10

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

定義を次と置き換える。

EXPRESSによる定義

*)

FUNCTION first̲proj̲axis (z̲axis, arg : direction) : direction ;

LOCAL

x̲axis : direction ;

v : direction ;

z : direction ;

x̲vec : vector ;

END̲LOCAL ;

IF (NOT EXISTS (z̲axis)) THEN

RETURN (?) ;

ELSE

z : =normalise (z̲axis) ;

IF NOT EXISTS (arg) THEN

IF (z. direction̲ratios < > [1.0, 0.0, 0.0]) THEN

v : =dummy̲gri || direction ([1.0, 0.0, 0.0]) ;

ELSE

v : = dummy̲gri || direction ([0.0, 1.0, 0.0]) ;

END̲IF ;

ELSE

IF (arg. dim < > 3) THEN

RETURN (?) ;

END̲IF ;

IF ((cross̲product(arg, z). magnitude) =0.0) THEN

RETURN (?) ;

ELSE

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

9

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

v : =normalise (arg) ;

END̲IF ;

END̲IF ;

x̲vec : =scalar̲times̲vector (dot̲product (v, z), z) ;

x̲axis : =vector̲difference (v, x̲vec). orientation ;

x̲axis : =normalise (x̲axis) ;

END̲IF ;

RETURN (x̲axis) ;

END̲FUNCTION ;

(*

85ページ

4.6.11

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

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

EXPRESSによる定義

*)

FUNCTION second̲proj̲axis (z̲axis, x̲axis, arg : direction) : direction ;

LOCAL

y̲axis : vector ;

v

: direction ;

temp : vector ;

END̲LOCAL ;

IF NOT EXISTS (arg) THEN

v : =dummy̲gri || direction ([0.0, 1.0, 0.0]) ;

ELSE

v : = arg ;

END̲IF ;

temp : =scalar̲times̲vector (dot̲product (v, z̲axis), z̲axis) ;

y̲axis : =vector̲difference (v, temp) ;

temp : =scalar̲times̲vector (dot̲product (v, x̲axis), x̲axis) ;

y̲axis : =vector̲difference (y̲axis, temp) ;

y̲axis : =normalise (y̲axis) ;

RETURN (y̲axis. orientation) ;

END̲FUNCTION ;

(*

86ページ

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

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の値を壊

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

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

page

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

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

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

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

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

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)

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

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

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

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 ;

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

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による定義

*)

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

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

page

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

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

page

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

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

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

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 ;

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

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

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

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

page

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

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による定義

page

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

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

page

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

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 ;

page

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

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によ

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

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

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

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

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

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

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

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

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 ;

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

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/

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

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と置き

換える。