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 とを与える。
2
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];
3
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°未満とする。
4
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°未満とする。
5
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;
6
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;
7
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
8
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に含まれていた内容と同じものである。
9
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;
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 の内容を次のページと置き換える。
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 の下位型
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 の下位型
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 の下位型