スパイラルベベルギア

このチュートリアルは,OpenCascadeLinkを使った,スパイラルベベルギヤ(まがりばかさ歯車)の生成方法を示すためのものである.その形状と作成過程は,コンピュータを使用した設計(CAD)のチュートリアル[1]に基づく.

1.gif

歯車の作成は,数ステップに分けて行う.まず,軸(シャフト)を作成する.次に歯車(ギア)を作成する.軸と歯車を繋げる.軸にボスを加え,最後に歯車に穴を開ける.

パッケージをロードする.

軸は,X-Z平面の横断面を指定して作成する.この横断面が,X軸の周りで回転させて作成する立体の基礎となる.

2.gif

横断面は,2つの線分と1つの半円からなる.

軸の横断面を指定する.

ここで線分の方向が重要となる.線分の方向が逆であると,回転の結果できる立体は,軸外の領域を指定することになる.線分の方向が逆向きになっている場合には,回転軸を正反対の方向にすればよい.こうすれば,線分を再度指定せずに済む.

横断面を指定する.
軸の横断面を可視化する.
横断面から OpenCascade オブジェクトを作成する.
線分を組み合せて,1つのワイヤオブジェクトにする.

OpenCascadeShapeUnionを使って線分を組み合せて単一のオブジェクトにすることも可能だが, そうするとOpenCascadeShapeUnionが複合物を返す.複合物だと,中に何があるのかが分かりにくい.

次に,横断面をX軸に沿って回転軸の周りで回転させる.

回転軸を作成する.
回転軸の周りで横断面の回転スイープを作成する.
作成した形状オブジェクトのタイプを調べる.

横断面を回転させて出来たものは,殻である.回転させた入力がワイヤであったからである.しかし,ここで必要なのは中空ではない立体である.

殻から立体を作成し,タイプを調べる.

横断面を作成するもう一つの方法として,Polygonを使うこともできる.これらは,面タイプの OpenCascade オブジェクトであり,回転させると OpenCascade の立体になる.

境界要素メッシュを抽出する.
軸の境界要素メッシュを可視化する.

意図した通りに境界メッシュが構築できたかどうかを確かめるために,完全な要素メッシュを生成する.

完全な要素メッシュを作成する.

デフォルトよりも小さい"LinearDeflection"の値で境界要素メッシュを作成した場合には,警告メッセージは表示されない.

歯車

歯車の作成は,2ステップで行う.まず,歯車の歯の半分をYZ平面でモデル化する.半分の歯は,円の3つのセクションを組み合せることによって構築する.この半分の歯を軸で鏡映して完全な歯を作る.この1つの歯を回転させ,YZ平面で歯車の歯一式を作る.その後,YZ平面の歯車をYZ平面に平行な2つめの平面で平行移動,回転,スケールさせる.この過程をもう一度繰り返して,YZ平面に平行な3つ目の平面に3つ目の歯一式を作る.実際の歯車は,これらの平面を押し出す形で作成する.これでロフトが作成される.

4.gif

歯車の歯

歯車の歯は,3つの円を交差させ,その境界部分を取ることで作成する.

5.gif

まず,2Dでの歯車の歯の生成の過程を示すことから始める.

長さの異なる半径を定義する.
交差点を指定する.
指定の交差点を通り,指定の半径 r3 を持つ3つ目の円の座標を求める.
3つの円と関連する交差点を可視化する.
p3 から3つの円について弧の角度を計算する.
歯車の歯の半分を形成する円弧を可視化する.
半分の歯を鏡映させ,歯を回転させて,歯車の歯一式を作る.

次に,この方法を3Dに応用する.Wolfram言語には,3Dで使えるCircleプリミティブがないので,OpenCascadeLinkを使う.プリミティブを使うと,円が通過する座標を指定することができる.

3つ目の弧の端点を計算する.
OpenCascadeの3DのCircleプリミティブを設定する.
OpenCascadeの形状オブジェクトを作成する.
弧のセグメントから単一のワイヤを作る.
結果のタイプを調べる.

次に,半分の歯をZ軸に沿って鏡映させる.

Z軸の方向に回転変換を設定する.
半分の歯と鏡映された半分の歯を組み合せて,完全な歯車の歯を作成する.
2π/8のステップでX軸方向に回転変換を設定する.
X軸の周りで単一の歯を数回回転させて,YZ軸で歯車の輪郭のワイヤを作成する.

3Dで作成した歯車の輪郭を可視化するために, X軸方向に平坦な輪郭を拡張させる.この作業は可視化のために行うことであり,歯車の構築には必要ない.

3Dの歯車の輪郭を軸と一緒に可視化する.

平面を作成する

歯車の輪郭を作った後は,その輪郭をスケール,回転,平行移動させて,互いに平行な歯車の輪郭をYZ平面に作成する.

2つ目の歯車の輪郭を作成する.
3つ目の歯車の輪郭を作成する.
歯車の輪郭を可視化する.
YZ平面で歯車の輪郭を通る曲面を作成して,完全な3Dの歯車を作成する.
境界要素メッシュを抽出する.
歯車の境界要素メッシュを可視化する.

意図した通りに境界メッシュが構築されたことを確かめるために,完全な要素メッシュを生成する.

完全な要素メッシュを作成する.

組み合せる

これで軸と歯車を組み合せることができる.

軸と歯車の和を作成する.
境界要素メッシュを抽出する.
軸と歯車の和の境界要素メッシュを可視化する.

意図した通りに境界メッシュが構築されたことを確かめるために,完全な要素メッシュを生成する.

完全な要素メッシュを作成する.

ボス

ボスを作るために使われるCuboidを作成する.
かさ歯車(ベベルギア)と単一のボスを可視化する.
ボスが軸の曲面と正しく交差することを確かめる.
13個のボスを作成する.
かさ歯車とボスの和を形成する.
境界要素メッシュを抽出する.
軸と歯車の和の境界要素メッシュを可視化する.

意図した通りに境界メッシュが構築されたことを確かめるために,完全な要素メッシュを生成する.

完全な要素メッシュを作成する.

中空軸

オブジェクトに穴を開けるために使うCylinderを作成する.
かさ歯車と,せん孔のための円柱を可視化する.
かさ歯車と円柱の差を作成する.
境界要素メッシュを抽出する.
軸と歯車の和の境界要素メッシュを可視化する.

意図した通りに境界メッシュが構築されたことを確かめるために,完全な要素メッシュを生成する.

完全な要素メッシュを作成する.
細分化された曲面近似の境界要素メッシュを抽出する.
完全なメッシュを作成し,かさ歯車を可視化する.

初期化

以下のヘルパ関数は,3D空間で円を可視化するためのものである.

参考文献

[1] https://www.youtube.com/watch?v=VihInzgm0QA