3Dシンボルを3Dの領域内に整列するには

ホーム フォーラム マリオネット 3Dシンボルを3Dの領域内に整列するには

1件の返信スレッドを表示中
  • 投稿者
    投稿
    • #9633
      yukiko.m
      参加者

      はじめまして。

      マリオネットを触り始めたばかりの初心者です。ある程度ベクターワークスはできますが、プログラミングに関してはど素人です。

      3Dの箱の中に3Dシンボルが何個はいるか?というものを組みたいと考えております。トラックの荷台サイズの箱をつくり、その中に様々な3Dシンボルを整列して入れていき、トラックの積みを最適化&台数の把握をしたい、という実務的要望から、マリオネットを触れていくことになりました。

      講座にありましたコントロールジオメトリの解説の、タイルを領域内に敷き詰める、部分を参考にできないかと考えましたが、

      ・3D領域をつくりたい

      ・領域内に複数のシンボルを並べたい

      ・領域で入らなかったもの(領域線切れてしまうもの)を切り捨てにして次の箱へカウントしたい

      ・カウントしたものをワークシートに出力したい

      など、非常に壁が多くあります。

      ヒントになるような、シンボルの整列事例等ありましたら、教えていただけると嬉しいです。

      日々こちらのブログと研究開発のノードリファレンスの一覧をにらめっこしています。奥が深く、図面を作図するのとはまた別の面白さで、もっともっと勉強して、実務要望に応えるものをつくっていきたいです。

      どうぞ宜しくお願いいたします。

    • #9645
      木原 和信
      参加者

      yukiko.m様

       

      お世話になります。

      エーアンドエー研究開発部です。

       

      マリオネットご活用いただきありがとうございます。

      プログラミング初心者の方にも、マリオネットに興味を持っていただけること大変嬉しく思います。

       

      さて、ご質問の3Dの箱の中に3Dシンボルが何個はいるか?についてですが、これは一般的に「詰め込み問題」と言われる課題でして、トラックの積み付けの最適化に関してはAIを用いた専用ツールなどもある非常に難しい問題です。

      段階を分けて、手作業も含めながら、例えば「シンボルを行列状に並べるだけ」のように自動化できそうなところを絞ってマリオネットを組んでみるとうまくいくかもしれません。

      こうすればできますとお答えするのは難しいですが、ご質問にあった各項目について参考になりそうなノードをご紹介いたします。

       

      3D領域をつくりたい

      柱状体であれば3D領域として使用できるかもしれません。ソリッド状であれば「Solid Boolean」ノードを用いて、3D領域内に別のソリッド図形があるとき、重なった部分の図形を抽出することができます。

      • Extrude:柱状体を作成します。
      • Solid Boolean:3D図形のかみ合わせ、削り取り、抜き取りを実行できます。

       

      領域内に複数のシンボルを並べたい

      トラックの荷台のように直方体であれば、幅・高さ・奥行きの寸法から3次元グリッド状の座標リストを作成することができます。この座標のリストから荷物を配置する座標を抽出します。

      座標が抽出できたら、Symbolノードでシンボル名と座標を指定してシンボルを配置します。

      • Symbol:図面にシンボルを配置します。
      • Mix2:「cross reference」モードでは、2つのリストを組み合わせて2次元のリストを作成することができます。mix2の結果に対してもう一度mix2ノードを使用すれば3次元のリストを作成することができます。

       

      領域で入らなかったもの(領域線切れてしまうもの)を切り捨てにして次の箱へカウントしたい

      2Dの点であれば、「Is In or On Poly」ノードを使って領域の内外判定をすることができますが、3Dでさらに質量のあるオブジェクトとなると、別の方法を考えなければなりません。

      手作業でやる場合は、荷物のバウンダリングボックスと領域のバウンダリングボックスを比較して、座標値の大小から荷物がはみ出しているどうかを判定する方法が考えられます。

      また、前述の通り「Solid Boolean」ノードを使用して領域に含まれるソリッドを抽出することができます。この抽出したソリッドを抽出前のソリッドと比較して体積が減っていれば、領域に収まっていないと判定することができます。

      • Is In or On Poly:指定した点(座標)が2D多角形の内側にあるかどうかを判定します。
      • Get Bounding Box:図形のバンダリングボックスを取得します(2D限定です)。
      • Get 3D Info:図形の幅・高さ・奥行きを取得します。

       

      カウントしたものをワークシートに出力したい

      ワークシートにデータを書き込むノードがありますのでご活用ください。

      • Set Cell Formula:指定したワークシートの指定したセルに値を書き込みます。

       

      以上、ご参考になれば幸いです。

      ご不明な点ございましたらお気軽にご相談ください。

1件の返信スレッドを表示中
  • このトピックに返信するにはログインが必要です。