これは Nature Engineering Blog祭 のたぶん四日目の記事です。 箸休め回としてハードウェア、特にメカエンジニアリングのツールを紹介します。
メカエンジニアの必須ツールはずばりメカCADです。 しかし、メカエンジニアでメカCADが好きな人は少数派で、おおよそ10%~20%くらいの分布でしょうか。 数年前であれば、レーザー加工機やCNC、最近では3Dプリンターを使うためには必須のツールで、それがきっかけで興味を持った人も多いと思います。
Natureでは Creo/Parametric という、比較的高級なCADを使っています。
Creoの特長の一つとして、豊富なデータム定義があります。 聞きなれない単語が多く出ると思うので、まずはサンプルを交えながらデータムの便利さを紹介します。
データム定義とNature EV
Nature Remoのデータではつまらないと思うので、もうすこしメカメカしいサンプルをつくります。 NatureらしくEVなんてどうでしょうか。 記念すべきNature製EVの壱号機です。
駆動系にはタミヤ標準部品を流用することで保守性も確保しつつ、バッテリーは家庭用コンセントで1時間もあれば充電完了です。
大学では、歯車の作図方法などを学んだりもしますが、 機構エンジニアリングのほとんどは、外製の標準部品や内製のカスタム部品をどこに配置し固定するか、 そのときの製造・組立工程がどうなるか、を考えることが主です。
(他のメカエンジニアリングとしては、駆動系、光学、意匠性、エルゴノミクス、熱力学・熱輸送など多岐にわたります)
CADを用いたモデリングを行ううえで「設計変更に強いデータを作る」ということがよく語られます。 ここでいう設計変更は、企画・仕様が変わる、内蔵するセンサーが変わる、製造工程が変わるといった大掛かりなものだけでなく、 モデリングしながら設計を進め、「ここおかしいな」と思ったときに、そのパラメータを調整し、確認するという、個人やチーム単位でのPDCAをいかに早く回せるか、ということになります。
そのためには、各機能部の設計単位を独立させ疎結合にすることが重要です。 ここで活用するのが「データム定義」です。
簡単な例として先のEVでは、「走破性に難があるため、ホイールベースを調整し運動性能の変化を確認したい」とします。 そのためには、いくつかのパターンのモデルを作成しシミュレーションやプロトタイプを行います。
(感度解析を行うこともありますが簡単な例なので)
先のモデルのモデルツリー(モデリングの履歴)を見てみると、前輪位置に該当するデータム軸が定義されています。
こちらのデータム軸がどう定義されているかというと、HOR (IZONTAL), VER (TICAL) という大元の基準データムからそれぞれ、28mm, 11mmと定義されています。
これを調整すると、この機能部が追従してモデリングされるようになっています。 (後輪は、前輪と対象位置となるようにモデリングしています)
このようにいくつかの、データム定義に機能部をまるまるぶら下げることで、設計パラメータを明確にし設計変更に強いモデルを作れます。
Creoでは、このデータムが先にあげた軸のほかに、平面、点、座標系などを定義できます。ここで、各機能部同士がさらに参照を持つことがあります。 例えば、「後輪は前輪とおなじ地上高だが、車体センターからの距離が異なる」、「モーターは地上高が可変だが、バッテリーはさらにモーターの高さから可変位置にある」などです。 このような関係性を、どのデータムが、どのデータムを参照するかというデータム定義によって表すことができます。
一つの部品に一つのSolid
Creoの特長として、1つの部品(ファイル)は単一のソリッド(Solid)としてを実体を持つということがあります。 ここでソリッドとは、「密度を持つ閉じられた空間(サーフェス群)」です。 これに類似するものとして、「密度を持たないサーフェス群」のキルト(Quilt)や、「平面か曲面か、繋がっているかどうかを問わない、単一の定義と境界を持つ」サーフェスなどがあります。
サーフェスの説明が少し難しいですが、基本構成要素なので例を作りました。 色分けされたものが、それぞれ1つのサーフェスです。 平面か曲面かはわかりやすいですが、左上のピンクのサーフェスは1つのサーフェスですが、2つの境界を持ちます。 ここではそういうもんだと、感じてもらえればOKです。
ここで、EVの後輪のモデリングを見てみます。 後輪部分は、前輪の形状を反転・回転させて流用しています。
この手順は次のようになります。
- 前輪部分のソリッドをキルトとしてコピーを生成
- キルトに反転・回転を加える
- キルトをソリッド化する準備として、境界を閉じる
- ソリッド化することで、実体化する
実体化するまえのキルトを強調したのが次の図です。
つまり1つの部品ファイルとは、「1つの部品内で複数の形状を持ち、複数の形状を集合演算によって1つの実体を生成する」事ができます。 先のデータム基準を用いた形状定義と、キルトを用いた複数の形状の独立・並行生成を組み合わせると、各機能部ごとに疎結合なモデリングが1つのファイル上で行えます。
機能部の疎結合が進むと、設計パラメータの定義、他部品への形状流用、業務分割などを進めやすくなり、最初にあげたPDCAを回すというところに繋がっていきます。
雑感
以上、Creoの特長というよりは、メカCADにてモデリングするときの気を付けていることを2つあげました。 ここでは誰にも伝わらない、自分がモデリングするときのイメージを紹介します。
- 部品ファイルはスーパークラス
- 機能部はサブクラス
- データム定義はイニシャライザー
- 各フィーチャー(押し出し、面取りなど)はメソッド
- ただしメソッドに渡せる引数は、Private プロパティに限る
- メソッド自体を定義することはめったになく、部品クラスから継承された標準メソッドを用いる
- 各クラスは、イニシャライザーとメソッドチェーンによって単一の実体を生成する
他にも、部品ファイルだけでなくアセンブリファイルも含めると、TOP ASSYと呼ばれるエントリポイントの定義や、データム定義をインターフェースとして活用するイメージがついてきます。 どこまでを機能部として独立させるか、依存関係をどのように整理するかといったときに、プラクティスがたくさん見つかるプログラミングの事例を当てはめるて考えることが多いです。 こうやってとらえると少しは、モデリングになじめる人も増えるのではないでしょうか。
最後に
Creoの紹介でしたが、似たような機能はほとんどのCADにも実装されています。 反響があれば、より実務的な内容についても発信していきます。
おまけとして、今回の3Dデータは次のリポジトリで公開されています。 github.com
メイキング映像も順次、公開したいと思います。 少しでも興味を持った方は、ぜひ一緒に「レッツ&ゴー!!」
エンジニア積極採用中です
Natureでは一緒に開発してくれる仲間を募集しています。
カジュアル面談も歓迎なので、ぜひお申し込みください。
Natureのミッション、サービス、組織や文化、福利厚生についてご興味のある方は、ぜひCulture Deckをご覧ください。