B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
(1)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
まえがき
この規格は,工業標準化法第14条によって準用する第12条第1項の規定に基づき,財団法人日本情報
処理開発協会 (JIPDEC) /財団法人日本規格協会 (JSA) から,工業標準原案を具して日本工業規格を改
正すべきとの申出があり,日本工業標準調査会の審議を経て,経済産業大臣が改正した日本工業規格であ
る。これによって,JIS B 3700-42 : 1994の規定内容は,この追補によって変更される。
この追補は,1999年に発行されたISO 10303-42 : 1994, Industrial automation systems and integration−
Product data representation and exchange−Part 42 : Integrated generic resources : Geometric and topological
representationのTechnical corrigendum 1及びTechnical corrigendum 2を翻訳し,技術的内容を変更すること
なく作成した日本工業規格の追補である。
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を定義の一部として用いる。次の新し
2
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
い箇条を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 ;
3
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
44ページ
4.4.34
エンティティtrimmed̲curveのEXPRESSによる定義は,WHERE条件節に論理的な誤りがある。EXPRESS
による定義のWR1及びWR2を,次と置き換える。
WR1 : (HIINDEX (trim̲1) =1) OR (TYPEOF (trim̲1 [1]) < > TYPEOF (trim̲1 [2])) ;
WR2 : (HIINDEX (trim̲2) =1) OR (TYPEOF (trim̲2 [1]) < > TYPEOF (trim̲2 [2])) ;
46ページ
4.4.36
エンティティcomposite̲curve̲segmentのEXPRESSによる定義を変更してfounded̲itemの下位型とし,
属性parent̲curveの表現コンテキストを与える。EXPRESSによる定義を次と置き換える。
EXPRESSによる定義
*)
ENTITY composite̲curve̲segment
SUBTYPE OF (founded̲item) ;
transition :transition̲code ;
same̲sense :BOOLEAN ;
parent̲curve : curve ;
INVERSE
using̲curves : BAG [1 : ?] OF composite̲curve FOR segments ;
WHERE
WR1 : (ʼGEOMETRY̲SCHEMA. BOUNDED̲CURVEʼIN TYPEOF (parent̲curve)) ;
END̲ENTITY ;
(*
次の備考を,エンティティ記述の末尾に挿入する。
備考 composite̲curve̲segmentは,geometric̲representation̲itemの下位型ではない。したがって,こ
のcomposite curve̲segmentから構成されたcomposite̲courveを用いるrepresentationの場合,属
性parent̲curveのインスタンスであるbounded̲curveは,それぞれのrepresentationの
geometric̲representation̲contextに対して,通常の方法では関連付けられない。
geometric̲representation̲contextは,上位型のfounded̲itemを通じて関連付けられる。
63ページ
4.4.58
エンティティsurface̲of̲revolutionのEXPRESSによる定義は,属性axis̲lineを適切に初期化しない。
EXPRESSによる定義を次と置き換える。
EXPRESSによる定義
*)
ENTITY surface̲of̲revolution
SUBTYPE OF (swept̲surface) ;
axis̲position : axisl̲placement ;
4
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
DERIVE
axis̲line : line :=dummy̲gri || curve( ) ||
line (axis̲position. location,
dummy̲gri || vector (axis̲position. z, 1.0)) ;
END̲ENTITY ;
(*
74ページ
4.4.70
エンティティrectangular̲composite̲surfaceのEXPRESSによる定義は,WR1において,空の集合と誤っ
た比較をしている。EXPRFSSによる定義のWR1を,次と置き換える。
WR1 : SIZEOF (QUERY (s <* segments | n̲v <> SIZEOF(s)))=0 ;
75ページ
4.4.71
エンティティsurface̲patchのEXPRESSによる定義を変更してfounded̲itemの下位型とする。EXPRFSS
による定義を次と置き換える。
EXPRESSによる定義
*)
ENTITY surface̲patch
SUBTYPE OF (founded̲item) ;
parent̲surface :bounde̲surface ;
u̲transition
:transition̲code ;
v̲transition
:transition̲code ;
u̲sense
:BOOLEAN ;
v̲sense
:BOOLEAN ;
INVERSE
using̲surfaces :BAG [1 : ?] OF rectangular̲composite̲surface
FOR segments ;
WHERE
WR1 :(NOT(ʼGEOMETRY̲SCHEMA. CURVE̲BOUNDED̲SURFACEʼ
IN TYPEOF (parent̲surface))) ;
END̲ENTITY ;
(*
次の備考を,エンティティ記述の末尾に挿入する。
備考 surface̲patchは,geometric̲representation̲itemの下位型ではない。したがって,このsurface̲patch
から構成されたrectangular̲composite̲surfaceを用いるrepresentationの場合,属性parent̲surface
のインスタンスである
bounded̲surfaceは,それぞれのrepresentation
の
geometric̲representation̲contextに対して,通常の方法では関連付けられない。
geometric̲representation̲contextは,上位型のfounded̲itemを通じて関連付けられる。
5
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
78ページ
4.6.1
関数dimension̲ofのEXPRESSによる定義に,注記を挿入する。EXPRESSによる定義を次と置き換える。
EXPRESSによる定義
*)
FUNCTION dimension̲of (item : geometric̲representation̲item) :
dimension̲count ;
LOCAL
x : SET OF representation ;
y : representation̲context ;
END̲LOCAL ;
--itemが用いられているrepresentationの集合を見つける。
x :=using̲representations (item) ;
--geometric̲representation̲contextのdimension̲countを決定する。
--context̲of̲itemsがgeometric̲representation̲contextであり,
--xのすべての値に対して同じdimension̲countをもつことは,
--規則compatible̲dimensionによって保証されている。
--representation̲itemのWR1の制約に基づき,集合xは空ではない。
y : =x [1]. context̲of̲items ;
RETURN (y\geometric̲representation̲context. coordinate̲space̲dimension) ;
END̲FUNCTION ;
(*
81ページ
4.6.6
関数base̲axisのEXPRESSによる定義は,変数uに適切な値を代入していない。EXPRESSによる定義
を次と置き換える。
EXPRESSによる定義
*)
FUNCTION basea̲axis (dim : INTEGER ; axisi, axis2, axis3 : direction) :
LIST [2 : 3] OF direction ;
LOCAL
u
: LIST [2 : 3] OF direction ;
factor : REAL ;
d1, d2 : direction ;
6
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
END̲LOCAL ;
IF (dim=3) THEN
d1 : =NVL (normalise (axis3), dummy̲gri || direction ([0.0, 0.0, 1.0])) ;
d2 : =first̲proj̲axis (d1, axis1) ;
u : = [d2, second̲proj̲axis (d1, d2, axis2), d1] ;
ELSE
IF EXISTS (axis1) THEN
d1 : =normalise (axisi) ;
u : = [d1, orthogonal̲complement (d1)] ;
IF EXISTS (axis 2) THEN
factor : =dot̲product (axis2, u [2]) ;
IF (factor < 0.0) THEN
u [2] .direction̲ratios [1] : =-u [2]. direction̲ratios [1] ;
u [2] .direction̲ratios [2] : =-u [2]. direction̲ratios [2] ;
END̲IF ;
END̲IF ;
ELSE
IF EXISTS (axis2) THEN
d1 : = normalise (axis2) ;
u : = [orthogonal̲complement (d1), d1] ;
u [1]. direction̲ratios [1] : =-u [1]. direction̲ratios [1] ;
u [1]. direction̲ratios [2] : =-u [1]. direction̲ratios [2] ;
ELSE
u := [dummy̲gri || direction ([1.0, 0.0]), dummy̲gri ||
direction ([0.0,1.0])] ;
END̲IF ;
END̲IF ;
END̲IF ;
RETURN (u) ;
END̲FUNCTION ;
(*
83ページ
4.6.7
関数build̲2axesのEXPRESSによる定義は,戻り値に適切な値を代入していない。EXPRESSによる定
義を次と置き換える。
EXPRESSによる定義
*)
FUNCTION build̲2axes (ref̲direction : direction) :
7
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
LIST [2 : 2] OF direction ;
LOCAL
d : direction : =NVL (normalise(ref̲direction),
dummy̲gri || direction ([1.0, 0.0])) ;
END̲LOCAL ;
RETURN ([d, orthogonal̲complement (d)]) ;
END̲FUNCTION ;
(*
83ページ
4.6.8
関数build̲axesのEXPRESSによる定義は,戻り値に適切な値を代入していない。EXPRESSによる定義
を次と置き換える。
EXPRESSによる定義
*)
FUNCTION build̲axes (axis, ref̲direction : direction) :
LIST [3 : 3] OF direction ;
LOCAL
d1, d2 : direction ;
END̲LOCAL ;
d1 : =NVL (normalise (axis), dummy̲gri || direction ([0.0, 0.0, 1.0])) ;
d2 : =first̲proj̲axis (d1, ref̲direction) ;
RETURN ([d2, normalise (cross̲product (d1, d2)). orientation, d1]) ;
END̲FUNCTION ;
(*
84ページ
4.6.9
関数orthogonal̲complementのEXPRESSによる定義は,変数resultに適切な値を代入していない。
EXPRESSによる定義を次と置き換える。
EXPRESSによる定義
*)
FUNCTION orthogonal̲complement (vec : direction) : direction ;
LOCAL
result : direction ;
END̲LOCAL ;
IF (vec. dim < > 2) OR NOT EXISTS (vec) THEN
8
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
RETURN (?) ;
ELSE
result : = dummy̲gri || direction([-vec. direction̲ratios[2],
vec. direction̲ratios [1]]) ;
RETURN (result) ;
END̲IF ;
END̲FUNCTION ;
(*
84ページ
4.6.10
関数first̲proj̲axisのEXPRESSによる定義は,変数vに適切な値を代入していない。EXPRESSによる
定義を次と置き換える。
EXPRESSによる定義
*)
FUNCTION first̲proj̲axis (z̲axis, arg : direction) : direction ;
LOCAL
x̲axis : direction ;
v : direction ;
z : direction ;
x̲vec : vector ;
END̲LOCAL ;
IF (NOT EXISTS (z̲axis)) THEN
RETURN (?) ;
ELSE
z : =normalise (z̲axis) ;
IF NOT EXISTS (arg) THEN
IF (z. direction̲ratios < > [1.0, 0.0, 0.0]) THEN
v : =dummy̲gri || direction ([1.0, 0.0, 0.0]) ;
ELSE
v : = dummy̲gri || direction ([0.0, 1.0, 0.0]) ;
END̲IF ;
ELSE
IF (arg. dim < > 3) THEN
RETURN (?) ;
END̲IF ;
IF ((cross̲product(arg, z). magnitude) =0.0) THEN
RETURN (?) ;
ELSE
9
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
v : =normalise (arg) ;
END̲IF ;
END̲IF ;
x̲vec : =scalar̲times̲vector (dot̲product (v, z), z) ;
x̲axis : =vector̲difference (v, x̲vec). orientation ;
x̲axis : =normalise (x̲axis) ;
END̲IF ;
RETURN (x̲axis) ;
END̲FUNCTION ;
(*
85ページ
4.6.11
関数second̲proj̲axisのEXPRESSによる定義は,変数 v に適切な値を代入していない。EXPRESSによ
る定義を次と置き換える。
EXPRESSによる定義
*)
FUNCTION second̲proj̲axis (z̲axis, x̲axis, arg : direction) : direction ;
LOCAL
y̲axis : vector ;
v
: direction ;
temp : vector ;
END̲LOCAL ;
IF NOT EXISTS (arg) THEN
v : =dummy̲gri || direction ([0.0, 1.0, 0.0]) ;
ELSE
v : = arg ;
END̲IF ;
temp : =scalar̲times̲vector (dot̲product (v, z̲axis), z̲axis) ;
y̲axis : =vector̲difference (v, temp) ;
temp : =scalar̲times̲vector (dot̲product (v, x̲axis), x̲axis) ;
y̲axis : =vector̲difference (y̲axis, temp) ;
y̲axis : =normalise (y̲axis) ;
RETURN (y̲axis. orientation) ;
END̲FUNCTION ;
(*
86ページ
10
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4.6.12
関数cross̲productのEXPRFSSによる定義は,変数res及び変数resultに適切な値を代入していない。
EXPRESSによる定義を次と置き換える。
EXPRESSによる定義
*)
FUNCTION cross̲product (arg1, arg2 : direction) : vector ;
LOCAL
mag : REAL ;
res : direction ;
v1, v2 : LIST [3 : 3] OF REAL ;
result : vector ;
END̲LOCAL ;
IF (NOT EXISTS (arg1) OR (arg1. dim=2)) OR
(NOT EXISTS (arg2) OR (arg2. dim=2)) THEN
RETURN (?) ;
ELSE
BEGIN
v1 : =normalise (arg1). direction̲ratios ;
v2 : =normalise (arg2). direction̲ratios ;
res : =dummy̲gri || direction ([(v1 [2] *v2 [3] -v1 [3] *v2 [2]),
(v1 [3] *v2 [1] -v1 [1] *v2 [3]), (v1 [1] *v2 [2] -v1 [2] *v2 [1])]) ;
mag : =0.0 ;
REPEAT i : =1 TO 3 ;
mag : =mag+res. direction̲ratios [i] *res. direction̲ratios [i] ;
END̲REPEAT ;
IF (mag > 0.0) THEN
result : =dummy̲gri || vector (res, SQRT (mag)) ;
ELSE
result : =dummy̲gri || vector (arg1, 0.0) ;
END̲IF ;
RETURN (result) ;
END ;
END̲IF ;
END̲FUNCTION ;
(*
88ページ
4.6.14
関数normaliseのEXPRESSによる定義は,変数 v に適切な値を代入しておらず,入力引数argの値を壊
11
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
すことがある。EXPRESSによる定義を次と置き換える。
EXPRESSによる定義
*)
FUNCTION normalise (arg : vector̲or̲direction) : vector̲or̲direction ;
LOCAL
ndim
: INTEGER ;
v
: direction ;
result : vector̲or̲direction ;
vec
: vector ;
mag
: REAL ;
END̲LOCAL ;
IF NOT EXISTS (arg) THEN
result : =? ;
(*関数が不適切なデータで呼ばれた場合には,
結果として不定“?”が戻される。*)
ELSE
ndim : =arg. dim
IFʼGEOMETRY̲SCHEMA. VECTORʼIN TYPEOF (arg) THEN
BEGIN
v : =dummy̲gri || direction (arg. orientation. direction̲ratios) ;
IF arg. magnitude=0.0 THEN
RETURN (?) ;
ELSE
vec : =dummy̲gri || vector (v, 1.0) ;
END̲IF ;
END ;
ELSE
v : =dummy̲gri || direction (arg. direction̲ratios) ;
END̲IF ;
mag : =0.0 ;
REPEAT i : =1 TO ndim ;
mag : =mag+v. direction̲ratios [i] *v. direction̲ratios [i] ;
END̲REPEAT ;
IF mag > 0.0 THEN
mag : =SQRT (mag) ;
REPEAT i : =1 TO ndim ;
v. direction̲ratios [i] : =v. direction̲ratios [i] /mag ;
END̲REPEAT ;
IFʼGEOMETRY̲SCHEMA. VECTORʼIN TYPEOF (arg) THEN
12
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
vec. orientation : =v ;
result : =vec ;
ELSE
result : =v ;
END̲IF ;
ELSE
RETURN (?) ;
END̲IF ;
END̲IF ;
RETURN (result) ;
END̲FUNCTION ;
(*
89ページ
4.6.15
関数scalar̲times̲vectorのEXPRESSによる定義は,変数resultに適切な値を代入していない。EXPRESS
による定義を次と置き換える。
EXPRESSによる定義
*)
FUNCTION scalar̲times̲vector (scalar : REAL ; vec : vector̲or̲direction)
: vector ;
LOCAL
v
: direction ;
mag
: REAL ;
result : vector ;
END̲LOCAL ;
IF NOT EXISTS (scalar) OR NOT EXISTS (vec) THEN
RETURN (?) ;
ELSE
IFʼGEOMETRY̲SCHEMA. VECTORʼIN TYPEOF (vec) THEN
v : = dummy̲gri || direction (vec. orientation. direction̲ratios) ;
mag : =scalar *vec. magnitude ;
ELSE
v : =dummy̲gri || direction (vec. direction̲ratios) ;
mag : =scalar ;
END̲IF ;
IF (mag < 0.0) THEN
REPEAT i : =1 TO SIZEOF (v. direction̲ratios) ;
v. direction̲ratios [i] : =-v. direction̲ratios [i] ;
13
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
END̲REPEAT ;
mag : =-mag ;
END̲IF ;
result : =dummy̲gri || vector (normalise (v), mag) ;
END̲IF ;
RETURN (result) ;
END̲FUNCTION ;
(*
90ページ
4.6.16
関数vector̲sumのEXPRESSによる定義は,変数res及び変数resultに適切な値を代入していない。
EXPRESSによる定義を次と置き換える。
EXPRESSによる定義
*)
FUNCTION vector̲sum (arg1, arg2 : vector̲or̲direction) : vector ;
LOCAL
result : vector ;
res, vec1, vec2 : direction ;
mag, mag1, mag2 : REAL ;
ndim : INTEGER ;
END̲LOCAL ;
IF ((NOT EXISTS(arg1)) OR (NOT EXISTS (arg2))) OR
(arg1. dim < > arg2. dim)
THEN
RETURN (?) ;
ELSE
BEGIN
IFʼGEOMETRY̲SCHEMA. VECTORʼIN TYPEOF (arg1) THEN
mag1 : =arg1. magnitude ;
vec1 : =arg1. orientation ;
ELSE
mag1 : =1.0 ;
vec1 : = arg1 ;
END̲IF ;
IFʼGEOMETRY̲SCHEMA. VECTORʼIN TYPEOF (arg2) THEN
mag2 : =arg2. magnitude ;
vec2 : =arg2. orientation ;
ELSE
14
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
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
関数vector̲differenceのEXPRESSによる定義は,変数resに適切な値を代入していない。EXPRESSによ
る定義を次と置き換える。
EXPRESSによる定義
*)
FUNCTION vector̲difference (arg1, arg2 : vector̲or̲direction) : vector ;
LOCAL
result : vector ;
res, vec1, vec2 : direction ;
mag, mag1, mag2 : REAL ;
ndim : INTEGER ;
END̲LOCAL ;
IF ((NOT EXISTS(arg1)) OR (NOT EXISTS (arg2))) OR
(arg1. dim < > arg2. dim)
15
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
THEN
RETURN (?) ;
ELSE
BEGIN
IFʼGEOMETRY̲SCHEMA. VECTORʼIN TYPEOF (arg1) THEN
mag1 : =arg1. magnitude ;
vec1 : =arg1. orientation ;
ELSE
mag1 : =1.0 ;
vec1 : =arg1 ;
END̲IF ;
IFʼGEOMETRY̲SCHEMA. VECTORʼIN TYPEOF (arg2) THEN
mag2 : =arg2. magnitude ;
vec2 : =arg2. orientation ;
ELSE
mag2 : =1.0 ;
vec2 : =arg2 ;
END̲IF ;
vec1 : =normalise (vec1) ;
vec2 : =normalise (vec2) ;
ndim : =SIZEOF (vec1. direction̲ratios) ;
mag : =0.0 ;
res : =dummy̲gri || direction (vec1. direction̲ratios) ;
REPEAT i : =1 TO ndim ;
res. direction̲ratios [i] : =mag1*vec1. direction̲ratios [i] +
mag2*vec2. direction̲ratios [i] ;
mag : =mag+ (res. direction̲ratios [i] *res. direction̲ratios [i]) ;
END̲REPEAT ;
IF (mag > 0.0) THEN
result : =dummy̲gri || vector (res, SQRT (mag)) ;
ELSE
result : =dummy̲gri || vector (vec1,0.0) ;
END̲IF ;
END ;
END̲IF ;
RETURN (result) ;
END̲FUNCTION ;
(*
93ページ
16
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
4.6.18
関数default̲b̲spline̲knot̲multのEXPRESSによる定義は,変数knot̲multに適切な値を代入していない。
EXPRESSによる定義を次と置き換える。
EXPRESSによる定義
*)
FUNCTION default̲b̲spline̲knot̲mult (degree, up̲knots : INTEGER ;
uniform : knot̲type)
:LIST [2 : ?] OF INTEGER ;
LOCAL
knot̲mult : LIST [1 : up̲knots] OF INTEGER ;
END̲LOCAL ;
IF uniform=uniform̲knots THEN
knot̲mult : = [1 : up knots] ;
ELSE
IF uniform=quasi̲uniform̲knots THEN
knot̲mult : = [1 : up̲knots] ;
knot̲mult [1] : =degree+1 ;
knot̲mult [up̲knots] : = degree+1 ;
ELSE
IF uniform=piecewise̲bezier̲knots THEN
knot̲mult : = [degree : up̲knots] ;
knot̲mult [1] : =degree+1 ;
knot̲mult [up̲knots] : =degree+1 ;
ELSE
knot̲mult : = [0 : up̲knots] ;
END̲IF ;
END̲IF ;
END̲IF ;
RETURN (knot̲mult) ;
END̲FUNCTION ;
(*
94ページ
4.6.19
関数default̲b̲spline̲knotsのEXPRESSによる定義は,変数knotsに適切な値を代入していない。EXPRESS
による定義を次と置き換える。
EXPRESSによる定義
*)
FUNCTION default̲b̲spline̲knots (degree, up̲knots : INTEGER ;
17
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
uniform : knot̲type)
: LIST [2 : ?] OF parameter̲value ;
LOCAL
knots : LIST [1 : up̲knots] OF parameter̲value : = [0 : up̲knots] ;
ishift : INTEGER : =1 ;
END̲LOCAL ;
IF (uniform=uniform̲knots) THEN
ishift : =degree+1 ;
END̲if ;
IF (uniform=uniform̲knots) OR
(uniform=quasi̲uniform̲knots) OR
(uniform=piecewise̲bezier̲knots) THEN
REPEAT i : =1 TO up̲knots ;
knots [i] : =i-ishift ;
END̲REPEAT ;
END̲IF ;
RETURN (knots) ;
END̲FUNCTION ;
(*
95ページ
4.6.20
関数default̲b̲spline̲curve̲weightsのEXPRESSによる定義は,戻り値に適切な値を代入していない。
EXPRESSによる定義を次と置き換える。
EXPRESSによる定義
*)
FUNCTION default̲b̲spline curve̲weights (up̲cp : INTEGER)
: ARRAY [0 : up̲cp] OF REAL ;
RETURN ([1 : up̲cp+1]) ;
END̲FUNCTION ;
(*
96ページ
4.6.21
関数default̲b̲spline̲surface̲weightsのEXPRESSによる定義は,戻り値に適切な値を代入していない。
EXPRESSによる定義を次と置き換える。
EXPRESSによる定義
*)
18
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
FUNCTION default̲b̲spline surface̲weights (u̲upper, v̲upper : INTEGER)
:ARRAY [0 : u̲upper] OF
ARRAY [0 : v̲upper] OF REAL ;
RETURN ([[1 : v̲upper+1] : u̲upper+1]) ;
END̲FUNCTION ;
(*
97ページ
4.6.22
関数constraints̲param̲b̲splineのEXPRESSによる定義は,冗長な変数を宣言している。EXPRESSによ
る定義を次と置き換える。
EXPRESSによる定義
*)
FUNCTION constraints̲param̲b̲spline(degree, up̲knots, up̲cp : INTEGER ;
knot̲mult : LIST OF INTEGER ;
knots : LIST OF parameter̲value) : BOOLEAN ;
LOCAL
result : BOOLEAN : =TRUE ;
k, sum : INTEGER ;
END̲LOCAL ;
(*ノット多重度の和を求める。*)
sum : =knot̲mult [1] ;
REPEAT i : =2 TO up knots ;
sum : =sum+knot̲mult [i] ;
END̲REPEAT ;
(*すべてのB-スプラインのパラメタ化についての制限を検査する。*)
IF (degree < 1) OR (up̲knots < 2) OR (up̲cp < degree) OR
(sum < > (degree+up̲cp+2)) THEN
result : =FALSE ;
RETURN (result) ;
END̲IF ;
k : = knot̲mult [1] ;
IF (k < 1) OR (k > degree+1) THEN
result : =FALSE ;
RETURN (result) ;
19
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
END̲IF ;
REPEAT i : =2 TO up̲knots ;
IF (knot̲mult [i] < 1) OR (knots [i] <= knots [i-1]) THEN
result : =FALSE ;
RETURN (result) ;
END̲IF ;
k : knot̲mult [i] ;
IF (i < up̲knots) AND (k > degree) THEN
result : =FALSE
RETURN (result) ;
END̲IF ;
IF (i=up̲knots) AND (k> degree+1) THEN
result : =FALSE ;
RETURN (result) ;
END̲IF ;
END̲REPEAT ;
RETURN (result) ;
END̲FUNCTION ;
(*
99ページ
4.6.25
関数get̲basis̲surfaceのEXPRESSによる定義は,composite̲curve̲on̲surfaceから属性segmentsを参照
する方法に誤りがある。EXPRFSSによる定義を次と置き換える。
EXPRESSによる定義
*)
FUNCTION get̲basis̲surface (c : curve̲on̲surface) : SET [0 : 2] OF surface ;
LOCAL
surfs : SET [0 : 2] OF surface ;
n : INTEGER ;
END LOCAL ;
surfs : =[ ];
IFʼGEOMETRY̲SCHEMA. PCURVEʼIN TYPEOF (c) THEN
surfs : = [c\pcurve. basis̲surface] ;
ELSE
IFʼGEOMETRY̲SCHEMA. SURFACE̲CURVEʼIN TYPEOF (c) THEN
20
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
n : =SIZEOF (c\surface curve. associated̲geometry) ;
REPEAT i : =1 TO n ;
surfs : =surfs+
associated̲surface(c\surface̲curve.
associated̲geometry [i]) ;
END̲REPEAT ;
END̲IF ;
END̲IF ;
IFʼEOMETRY̲SCHEMA. COMPOSITE̲CURVE̲ON̲SURFACEʼN TYPEOF (c) THEN
(*composite̲curve̲ on̲surfaceのbasis̲surfaceは,
すべてのセグメントのbasis̲surfaceの積となる。*)
n : =SIZEOF (C\composite̲curve. segments) ;
surfs : =get̲basis̲surface (c\composite̲curve.
segments [1]. parent̲curve) ;
IF n > 1 THEN
REPEAT i : =2 TO n ;
surfs : =surfs * get̲basis̲surface (c\composite̲curve.
segments [i]. parent̲curve) ;
END̲REPEAT ;
END̲IF ;
END̲IF ;
RETURN (surfs) ;
END̲FUNCTION ;
(*
102ページ
4.6.28
関数list̲to̲arrayのEXPRFSSによる定義は,変数resを適切に初期化していない。EXPRESSによる定義
を次と置き換える。
EXPRESSによる定義
*)
FUNCTION list̲to̲array (lis : LIST [0 : ?] OF GENERIC : T ;
low, u : INTEGER) : ARRAY OF GENERIC : T ;
LOCAL
n : INTEGER ;
res : ARRAY [low : u] OF GENERIC : T ;
END̲LOCAL ;
n : =SIZEOF (lis) ;
IF (n < > (u-low+1)) THEN
21
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
RETURN (?) ;
ELSE
res : = [lis [1] : n];
REPEAT i : =2 TO n ;
res [low+i-1] : =lis [i] ;
END̲REPEAT ;
RETURN (res) ;
END̲IF ;
END̲FUNCTION ;
(*
102ページ
4.6.29
関数make̲array̲of̲arrayのEXPRESSによる定義は,変数resに適切な値を割り当てていない。EXPRFSS
による定義を次と置き換える。
EXPRESSによる定義
*)
FUNCTION make̲array̲of̲array (lis : LIST [1 : ?] OF LIST [1 : ?] OF
GENERIC : T ;
low1, u1, low2, u2 : INTEGER) :
ARRAY OF ARRAY OF GENERIC : T ;
LOCAL
res : ARRAY [low1 : u1] OF ARRAY [low2 : u2] OF GENERIC : T ;
END̲LOCAL ;
(*入力の次元数が整合していることを検査する。*)
IF (u1-low1+1) < > SIZEOF (lis) THEN
RETURN (?) ;
END̲IF ;
IF (u2-low2+1) < > SIZEOF (lis [1]) THEN
RETURN (?) ;
END̲IF ;
(*lis [1] の値を用いて変数resを初期化する。*)
res := [list̲to̲array (lis [1] ,low2, u2) : (u1-low1+1)] ;
REPEAT i :=2 TO HIINDEX (lis) ;
IF (u2-low2+1) < > SIZEOF (lis [i]) THEN
RETURN (?) ;
END̲IF ;
res [low1+i-1] : =list̲to̲array (lis [i] ,low2, u2) ;
END̲REPEAT ;
22
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
RETURN (res) ;
END̲FUNCTION ;
(*
107ページ
5.3
エンティティの定義又は関数中で生成されるエンティティを初期化するには,定数を必要とする。
topological̲representation̲item型を生成するとき,定数dummy̲triを定義の一部として用いる。次の新し
い箇条を5.3.1として挿入し,5.3.1〜5.3.5の箇条番号を順に付け直す。
5.3.1
定数の定義 topological̲representation̲item型を生成するとき,定数dummy̲triを定義の一部とし
て用いる。これは,適切な上位型と空文字列をもつ属性nameとを与える。
EXPRESSによる定義
*)
CONSTANT
dummy̲tri : topological̲representation̲item : =
representation̲item (”) ||
topological̲representation̲item( ) ;
END̲CONSTANT ;
(*
129ページ
5.5.3
関数edge̲reversedのEXPRFSSによる定義は,変数the̲reverseを適切に初期化してない。属性の値に関
する規定を明確にする。戻り値に用いる変数の型及び局所変数の型の宣言を,関数が実際に戻す値の型に
変更する。
次の文章を削除する。
この関数は,向きが反転されている以外,入力されたedgeと等価なedgeを戻す。
代わりに,次の文章を挿入する。
この関数は,向きが反転されている以外,入力されたedgeと等価oriented̲edgeを戻す。
EXPRESSによる定義を次と置き換える。
EXPRESSによる定義
*)
FUNCTION edge̲reversed (an̲edge : edge) : oriented̲edge ;
LOCAL
the̲reverse : oriented̲edge ;
END̲LOCAL ;
IF (ʼTOPOLOGY̲SCHEMA. ORIENTED̲EDGEʼIN TYPEOF (an̲edge)) THEN
the̲reverse : =dummy̲tri ||
23
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
edge (an̲edge. edge̲end, an̲edge. edge̲start) ||
oriented̲edge(an̲edge\oriented̲edge. edge̲element,
NOT (an̲edge\oriented̲edge. orientation)) ;
ELSE
the̲reverse : =dummy̲tri ||
edge (an̲edge. edge̲end, an̲edge. edge̲start) ||
oriented̲edge (an̲edge, FALSE) ;
END̲IF ;
RETURN (the̲reverse) ;
END̲FUNCTION ;
(*
引数定義の内容を次と置き換える。
the̲reverse:(出力)向きを反転した結果のoriented̲edge。
129ページ
5.5.4
関数path̲reversedのEXPRESSによる定義は,変数the̲reverseを適切に初期化してない。戻り値に用い
る変数の型及び局所変数の型の宣言を,関数が実際に戻す値の型に変更する。
次の文章を削除する。
この関数は,向きが反転されている以外,入力されたpathと等価なpathを戻す。
代わりに,次の文章を挿入する。
この関数は,向きが反転されている以外,入力されたpathと等価なoriented̲pathを戻す。
EXPRESSによる定義を次と置き換える。
EXPRESSによる定義
*)
FUNCTION path̲reversed (a̲path : path) : oriented̲path ;
LOCAL
the̲reverse : oriented̲path ;
END̲LOCAL ;
IF (ʼTOPOLOGY̲SCHEMA. ORIENTED̲PATHʼIN TYPEOF (a̲path)) THEN
the̲reverse : =dummy̲tri ||
path (list̲of̲topology̲reversed (a̲path. edge̲list)) ||
oriented̲path(a̲path\oriented̲path. path̲element,
NOT (a̲path\oriented path. orientation)) ;
ELSE
the̲reverse : =dummy̲tri ||
path (list̲of̲topology̲reversed (a̲path. edge̲list)) ||
oriented̲path (a̲path, FALSE) ;
END̲IF ;
RETURN (the̲reverse) ;
24
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
END̲FUNCTION ;
(*
引数定義の内容を次と置き換える。
the̲reverse:(出力)向きを反転した結果のoriented̲path。
130ページ
5.5.5
関数face̲bound̲reversedのEXPRESSによる定義は,変数the̲reverseを適切に初期化していない。
a̲face̲boundがface outer̲bound型のとき,戻り値も同じ型とする。
EXPRESSによる定義を次と置き換える。
EXPRESSによる定義
*)
FUNCTION face̲bound̲reversed (a̲face̲bound : face̲bound) : face̲bound ;
LOCAL
the̲reverse : face̲bound ;
END̲LOCAL ;
IF (ʼTOPOLOGY̲SCHEMA. FACE̲OUTER̲BOUNDʼIN TYPEOF (a̲face̲bound)) THEN
the̲reverse : =dummy̲tri ||
face̲bound(a̲face̲bound\face̲bound. bound,
NOT (a̲face̲bound\face̲bound. orientation))
|| face̲outer̲bound( ) ;
ELSE
the̲reverse : =dummy̲tri ||
face̲bound (a̲face̲bound. bound,
NOT (a̲face̲bound. orientation)) ;
END̲IF ;
RETURN (the̲reverse) ;
END̲FUNCTION ;
(*
130ページ
5.5.6
関数face̲reversedのEXPRESSによる定義は,変数the̲reverseを適切に初期化してない。戻り値に用い
る変数の型及び局所変数の型の宣言を,関数が実際に戻す値の型に変更する。
次の文章を削除する。
この関数は,向きが反転されている以外,入力されたfaceと等価なfaceを戻す。
代わりに,次の文章を挿入する。
この関数は,向きが反転されている以外,入力されたfaceと等価なoriented̲faceを戻す。
EXPRESSによる定義を次と置き換える。
EXPRESSによる定義
25
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
*)
FUNCTION face̲reversed (a̲face : face) : oriented̲face ;
LOCAL
the̲reverse : oriented̲face ;
END̲LOCAL ;
IF (ʼTOPOLOGY̲SCHEMA. ORIENTED̲FACEʼIN TYPEOF (a̲face)) THEN
the̲reverse : =dummy̲tri ||
face (set̲of̲topology̲reversed (a̲face. bounds)) ||
oriented̲face (a̲face\oriented̲face. face̲element,
NOT (a̲face\oriented̲face. orientation)) ;
ELSE
the̲reverse : =dummy̲tri ||
face (set̲of̲topology̲reversed (a̲face. bounds)) ||
oriented̲face (a̲face, FALSE) ;
END̲IF ;
RETURN (the̲reverse) ;
END̲FUNCTION ;
(*
引数定義の内容を次と置き換える。
the̲reverse:(出力)向きを反転した結果のoriented̲face。
131ページ
5.5.7
関数shell̲reversedのEXPRESSによる定義は,変数the̲reverseを適切に初期化しておらず,計算途中の
値を代入することもない。2個の新しい関数を呼ぶことで,関数の構造を簡潔なものとする。
次の文章を削除する。
この関数は,向きが反転されている以外,入力されたshellと等価なshellを戻す。
代わりに,次の文章を挿入する。
この関数は,向きが反転されている以外,入力されたshellと等価なoriented̲open̲shell又は
oriented̲closed̲shellを戻す。
EXPRESSによる定義を次と置き換える。
EXPRESSによる定義
*)
FUNCTION shell̲reversed (a̲shell : shell) : shell ;
IF (ʼTOPOLOGY̲SCHEMA. OPEN̲SHELLʼIN TYPEOF (a̲shell)) THEN
RETURN (open̲shell̲reversed (a̲shell)) ;
ELSE
IF (ʼTOPOLOGY̲SCHEMA. CLOSED̲SHELLʼIN TYPEOF (a̲shell)) THEN
RETURN (closed̲shell̲reversed (a̲shell)) ;
ELSE
26
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
RETURN (?) ;
ENDIF ;
END̲IF ;
END̲FUNCTION ;
(*
引数定義から,the̲reverseを削除して,次と置き換える。
:(出力)向きを反転した結果。
参考 Technical corrigendum 2には,引数定義の変更は含まれていないが,“EXPRESSによる定義”で
は局所変数the̲reverseが削除されたにもかかわらず訂正されていなかったので,上記のように
した。
132ページ
5.5.8
この追補による変更で示されている通り,topology̲schemaでは新しい関数を必要とする。5.5.8〜5.5.20
の箇条番号を順に付け直してそれぞれ5.5.10〜5.5.22とし,次の箇条を5.5.8及び5.5.9として,挿入する。
5.5.8
closed̲shell̲reversed この関数は,各要素の向きが反転されている以外,入力されたclosed̲shell
と等価なoriented̲closed̲shellを戻す。
EXPRESSによる定義
*)
FUNCTION closed̲shell̲reversed (a̲shell : closed̲shell) :
oriented̲closed̲shell ;
LOCAL
the̲reverse : oriented̲closed̲shell ;
END̲LOCAL ;
IF (ʼTOPOLOGY̲SCHEMA. ORIENTED̲CLOSED̲SHELLʼIN TYPEOF (a̲shell)) THEN
the̲reverse : =dummy̲tri ||
connected̲face̲set (
a̲shell\connected̲face̲set. cfs̲faces) ||
closed̲shell( ) || oriented̲closed̲shell (
a̲shell\oriented̲closed̲shell. closed̲shell̲element,
NOT (a̲shell\oriented̲closed̲shell. orientation)) ;
ELSE
the̲reverse : =dummy̲tri ||
connected̲face̲set (
a̲shell\connected̲face̲set. cfs̲faces) ||
closed̲shell( ) ||
oriented̲closed̲shell (a̲shell, FALSE) ;
END̲IF ;
RETURN (the̲reverse) ;
END̲FUNCTION ;
27
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
(*
引数定義
a̲shell:(入力)向きが逆にされるclosed̲shell。
the̲reverse:(出力)向きを反転した結果。
5.5.9
open̲shell̲reversed この関数は,各要素の向きが反転されている以外,入力されたopen̲shellと
等価なoriented̲open̲shellを戻す。
EXPRESSによる定義
*)
FUNCTION open̲shell̲reversed (a̲shell : open shell) :
oriented̲open̲shell ;
LOCAL
the̲reverse : oriented̲open̲shell ;
END̲LOCAL ;
IF (ʼTOPOLOGY̲SCHEMA. ORIENTED̲OPEN̲SHELLʼIN TYPEOF (a̲shell)) THEN
the̲reverse : =dummy̲tri ||
connected̲face̲set (
a̲shell\connected̲face̲set. cfs̲faces) ||
open̲shell ( ) || oriented̲open̲shell (
a̲shell\oriented̲open̲shell. open̲shell̲element,
(NOT (a̲shell\oriented̲open̲shell. orientation))) ;
ELSE
the̲reverse : =dummy̲tri ||
connected̲face̲set (
a̲shell\connected̲face̲set. cfs̲faces) ||
open̲shell ( ) ||
oriented̲open̲shell (a̲shell, FALSE) ;
END̲IF ;
RETURN (the̲reverse) ;
END̲FUNCTION ;
(*
引数定義
a̲shell:(入力)向きが逆にされるopen̲shell。
the̲reverse:(出力)向きを反転した結果。
133ページ
5.5.10
関数boolean̲chooseのEXPRFSSによる定義は,ラベル付けされていない総称データ型を戻り値として
いる。JIS B 3700-11の9.5.3.2の規則及び制約(b)によると,関数の戻り値に総称データ型を用いるとき,
型ラベルが必要であり,実引数に対して宣言される型ラベルを参照しなければならない。実引数と戻り値
とは,与えられた型ラベルでなければならない。ここで用いる型ラベルは“item”とする。EXPRESSによ
28
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
る定義を次と置き換える。
EXPRESSによる定義
*)
FUNCTION boolean̲choose (b : boolean ;
choice1, choice2 : generic : item) : generic : item ;
IF b THEN
RETURN (choice1) ;
ELSE
RETURN (choice2) ;
END̲IF ;
END̲FUNCTION ;
(*
136ページ
5.5.17
関数mixed̲loop̲type̲setのEXPRESSによる定義は,使用していない変数の宣言を含んでいる。EXPRESS
による定義を次と置き換える。
EXPRESSによる定義
*)
FUNCTION mixed̲loop̲type̲set (1 : SET [0 : ?] OF loop) : LOGICAL ;
LOCAL
poly̲loop̲type : LOGICAL ;
END̲LOCAL ;
IF (SIZEOF(1) <=1) THEN
RETURN (FALSE) ;
END̲IF ;
poly̲loop̲type : = (ʼTOPOLOGY̲SCHEMA. POLY̲LOOPʼIN TYPEOF (1 [1])) ;
REPEAT i : =2 TO SIZEOF (1) ;
IF ((ʼTOPOLOGY̲SCHEMA. POLY̲LOOPʼIN TYPEOF(1 [i]))
< > poly̲loop̲type) THEN
RETURN (TRUE) ;
END̲IF ;
END̲REPEAT ;
RETURN (FALSE) ;
END̲FUNCTION ;
(*
152ページ
6.4.15
29
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
エンティティrevolved̲face̲solidのEXPRESSによる定義は,属性axis̲lineを適切に初期化しない。
EXPRESSによる定義を次と置き換える。
EXPRESSによる定義
*)
ENTITY revolved̲face̲solid
SUBTYPE OF (swept̲face̲solid) ;
axis : axis1̲placement ;
angle : plane̲angle̲measure ;
DERIVE
axis̲line : line : =dummy̲gri || curve( ) || line(axis. location,
dummy̲gri || vector (axis. z, 1.0)) ;
END̲ENTITY ;
(*
154ページ
6.4.18
エンティティrevolved̲area̲solidのEXPRESSによる定義は,属性axis̲lineを適切に初期化しない。
EXPRESSによる定義を次と置き換える。
EXPRESSによる定義
*)
ENTITY revolved̲area̲solid
SUBTYPE OF (swept̲area̲solid) ;
axis : axis1̲placement ;
angle : plane̲angle̲measure ;
DERIVE
axis̲line : line : =dummy̲gri || curve( ) || line (axis. location,
dummy̲gri || vector (axis. z, 1.0)) ;
END̲ENTITY ;
(*
160ページ
6.5.1
関数acyclic̲solid̲replicaのEXPRESSによる定義は,エンティティsolid̲replicaのスキーマを適切に参照
していない。EXPRESSによる定義を次と置き換える。
EXPRESSによる定義
*)
FUNCTION acyclic̲solid̲replica (rep : solid̲replica ;
parent : solid̲model) : BOOLEAN ;
IF NOT ((ʼGEOMETRIC̲MODEL̲SCHEMA. SOLID̲REPLICAʼ) IN
TYPEOF (parent)) THEN
30
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
RETURN (TRUE) ;
END̲IF ;
(*parentがsolid̲replica型でなければTRUEを戻す。*)
IF (parent : = : rep) THEN
RETURN (FALSE) ;
(*parentが同じsolid̲replicaならばFALSEを戻す。
それ以外の場合は,parent自身のparent̲solidで再び関数を呼ぶ。*)
ELSE RETURN (acyclic̲solid̲replica (rep,
parent\solid̲replica. parent̲solid)) ;
END̲IF ;
END̲FUNCTION ;
(*
160ページ
6.5.2
関数acyclic̲set̲replicaのEXPRESSによる定義は,エンティティgeometric̲set̲replicaのスキーマを適切
に参照していない。EXPRFSSによる定義を次と置き換える。
EXPRESSによる定義
*)
FUNCTION acyclic̲set̲replica (rep : geometric̲set̲replica ;
parent : geometric̲set) : BOOLEAN ;
IF NOT ((ʼGEOMETRIC̲MODEL̲SCHEMA. GEOMETRIC̲SET̲REPLICAʼ) IN
TYPEOF (parent)) THEN
RETURN (TRUE) ;
END̲IF ;
(*parentがgeometric̲set̲replica型でなければ,TRUEを戻す。*)
IF (parent : = : rep) THEN
RETURN (FALSE) ;
(*parentが同じgeometric̲set̲replicaならばFALSEを戻す。
それ以外の場合は,parent自身のparent̲setで再び関数を呼ぶ。*)
ELSE RETURN (acyclic̲set̲replica (rep,
parent\geometric̲set̲replica. parent̲set)) ;
END̲IF ;
END̲FUNCTION ;
(*
162ページ
6.5.5
関数build̲transformed̲setのEXPRESSによる定義は,使用していない変数の宣言を含んでいる。EXPRFSS
による定義を次と置き換える。
31
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
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+curve̲replica (s [j], tr) : ELSE
IF (ʼGEOMETRY̲SCHEMA. POINTʼ IN TYPEOF (s [j])) THEN
trset : =trset+point̲replica (s [j], tr) : ELSE
IF ('GEOMETRY̲SCHEMA. SURFACEʼIN TYPEOF (s [j])) THEN
trset : =trset+surface̲replica(s [j] ,
tr || cartesian̲transformation̲operator̲3d (?)) ;
END̲IF ;
END̲IF ;
END̲IF ;
END̲REPEAT ;
RETURN (trset) ;
END̲FUNCTION ;
(*
163ページ
6.5.5
3個のAICの分冊が参照している関数msb̲shellsが必要である。次に示す箇条を箇条6.5.5の直後に,挿
入する。
6.5.6
msb̲shells この関数は,manifold̲solid̲brepの定義に用いられているすべてのclosed̲shellの集合
を生成する。manifold̲solid̲brepの下位型brep̲with̲voidsの場合にも生成する。
EXPRESSによる定義
*)
FUNCTION msb̲shells (brep : manifold̲solid̲brep) :
SET [1 : ?] OF closed̲shell ;
IF SIZEOF (QUERY (msbtype <* TYPEOF (brep) |
msbtype LIKEʼ*BREP̲WITH̲VOIDSʼ)) >=1 THEN
RETURN (brep\brep̲with̲voids. voids+brep. outer) ;
ELSE
RETURN ([brep. outer]) ;
END̲IF ;
32
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
END̲FUNCTION ;
(*
引数定義
brep:(入力)closed̲shellの集合を求めるmanifold̲solid̲brep。
:(出力)brepを定義するすべてのclosed̲shellの集合。
参考 Technical corrigendum 2には,引数定義で出力用の局所変数の名称としてresultを用いているが,
“EXPRESSによる定義”では局所変数resultを用いていないことから,上記のようにした。
168ページ
附属書B
この追補で認識された変更に伴い,文書識別子及びスキーマの情報オブジェクト識別子が変更された。
この規格のオブジェクト識別子に関する記述を次と置き換える。
開放型システムで情報オブジェクトをあいまいさなく識別するために,次のオブジェクト識別子をこの
規格自身に割り当てる。
{iso standard 10303 part (42) version (3)}
この値の意味は,ISO/IEC 8824-1で定義され,JIS B 3700-1で規定されている。
geometry̲schemaのオブジェクト識別子に関する記述を次と置き換える。
開放型システムでgeometry̲schema(4.参照)をあいまいさなく識別するために,geometry̲schemaに対
して,次のオブジェクト識別子が割り当てられている。
{iso standard 10303 part (42) version (3) object (1) geometry-schema (1)}
この値の意味は,ISO/IEC 8824-1で定義され,JIS B 3700-1で規定されている。
topology̲schemaのオブジェクト識別子に関する記述を次と置き換える。
開放型システムでtopology̲schema(5.参照)をあいまいさなく識別するために,topology̲schemaに対し
て,次のオブジェクト識別子が割り当てられている。
{iso standard 10303 part (42) version (3) object (1) topology-schema (2)}
この値の意味は,ISO/IEC 8824-1で定義され,JIS B 3700-1で規定されている。
geometric̲model̲schemaのオブジェクト識別子に関する記述を次と置き換える。
開放型システムでgeometric̲model̲schema(6.参照)をあいまいさなく識別するために,
geometric̲model̲schemaに対して,次のオブジェクト識別子が割り当てられている。
{iso standard 10303 part (42) version (3) object (1) geometric-model-schema (3)}
この値の意味は,ISO/IEC 8824-1で定義され,JIS B 3700-1で規定されている。
167ページ
附属書C
この附属書の内容を次と置き換える。
この附属書は,EXPRESSエンティティの名称に対応する短縮名の一覧,及びこの規格におけるEXPRESS
による定義の一覧を示す。ただし,注釈又はその他の説明文は,含まれていない。この附属書は,計算機
可読形式だけで提供され,次のURLで見ることができる。
短縮名 :http://www.mel.nist.gov/div826/subject/apde/snr/
EXPRESS
:http://www.mel.nist.gov/step/parts/part042/is/tc2/
33
B 3700-42 : 2002 (ISO 10303-42 : 1994/Cor.1 : 1999/Cor.2 : 1999)
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
これらのサイトに接続するのが困難な場合には,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と置き
換える。