C#ATIA

↑タイトル詐欺 主にFusion360API 偶にCATIA V5 VBA(絶賛ネタ切れ中)

ほぼプルリバースエンジニアリング5

こちらの続きです。
ほぼプルリバースエンジニアリング4 - C#ATIA

先日の分割・一致作戦が中々良かったので
別のデータで練習しました。

十数年前、業務でヒーヒー言いながら行った某キャラクターの一部です。
もう時効でしょう。一部だし。

スキャンからCADデータにすること自体も、専用ソフトを利用したとはいえ
不慣れな為大変でしたが、”出来るだけエッジを出して♡” の一言。


実際行った事がある方はわかると思うのですが、スキャンデータでエッジを
出すのは至難の業です。
工業製品では無いので寸法はうるさくないのですが、とにかく時間がかかり
他に2名程手伝ってもらいました。

データの履歴を見てもらえばわかると思いますが、今回は手とブレスレットを
別で作っているのでエッジが簡単に出ます。

指の間がハッキリしてないけど、個人的にはこれで十分かな。
何せ、三度目の挑戦でやっと完成したものでして・・・・。

ほぼプルリバースエンジニアリング4

こちらの続きです。
ほぼプルリバースエンジニアリング3 - C#ATIA

作戦を元に戻します。

フォームの面の数を増やせば(分割しまくる)メッシュとの一致率は
高まるのですが、
・データ重くなる
・面の滑らかさが失われる
・フォームボディをBRepに変換する際の面の数に制限有り(確か)

この際、メッシュとの一致を高めることを優先しつつ面数の制限の
回避を考えてみました。
・・・手間がかかるので、親指付近のみです。


まず、こんな感じで2個のフォームボディを作ります。

どうやって? ほぼプルで、気合です。
但し、以前の物より面を多く分割しています。

面数制限ウンヌンとは別に、極端に形状が変化するものを
1個のフォームボディで作るのが難しい・・・。

ここで一度フォームの編集から抜けます。


続いて間を埋める部分を作りますが、新たなフォームを
作成して作ります。こんな感じで大体の形です。

最近まで知らなかったのですが、フォームの修正-一致
コマンドはBRepのエッジも利用出来るのですね。
スケッチの線だけかと思ってました。

しかもスケッチ線では出来なかった ”連続性” がBRepの
エッジだと利用出来ます。しかもG2まである。

つまり、両脇は一致で他の部分はプルで、整えつつ何度か
実行するとそれなりに出来ました。



名前を修正しました。
Mesh:シルバー 元のメッシュボディ
Form1:黒 本気のザックリ、ほぼプル
Via MeshLab:黄 MeshLab経由
Form2:緑 分割した、一致・ほぼプル


メッシュとの一致率はかなり良くなり、データサイズもそれ程
大きくありませんでした。
但し、手間がかかる・・・。(指1本で2時間ぐらい)

ほぼプルリバースエンジニアリング3

こちらの続きです。
ほぼプルリバースエンジニアリング2 - C#ATIA

昨日のMeshLabの方法を試してみました。
クアッドメッシュ - C#ATIA
※MeshLabのインストールからやりましたが、今時のソフトと異なり
 非常に軽量ですね。

"Turn into Quad-Dominant mesh" では、フォームへの変換でエラーとなりました。
見た目で明らかにクアッドになっていない面がチラホラありました。

MeshLabの良い部分は、複数のアルゴリズムを持たせている事です。
クアッドメッシュ関連はこの辺かな?

確かメッシュ→フォーム化の場合、面の数も制限があったはずなので
メッシュを大幅に減らし、"Tri to Quad by 4-8 Subdivision" を利用して
フォーム化したところ、成功しました。

フォームで大雑把にプルした上→BRepの変換も成功したのがこちら。


"Via MeshLab"と言うBodyが今回のものです。

GrabCADにもアップしました。
Free CAD Designs, Files & 3D Models | The GrabCAD Community Library

もちろん、それなりに分割した上で変換しプルしているので、
メッシュとの一致率は高いはずです。
さらに手間や作業時間も少ないです。

しかし、ファイルサイズは10倍です。

Fusion360上でもデータが重く、操作しにくい。

MeshLabに限らず、クアッドメッシュ経由にするとこんな傾向になるはず。
個人的には、嫌かな・・・。(一つの武器としては良いかも)

クアッドメッシュ

クアッドメッシュ(頂点が4のポリゴン)嫌いなんですが、
Fusion360のフォームにするにはクアッドにする必要があるんです。

手軽なものが無いかと探した所、MeshLabで可能だとの情報を発見。
STLをクアッドメッシュに変換してFusion360でいじり倒す準備をする|はるかぜポポポ|note

知らなかった・・。
MeshLabは、結構前に完成状態のような感じですが、ゆっくりペースで
開発?修正?はされている印象です。

先日、python向けライブラリ?の "PyMeshLab" が公開されている事を
発見したんですよ。
GitHub - cnr-isti-vclab/PyMeshLab: The open source mesh processing python library
"PyMeshLab" については日本語での情報が無さそうです・・・。


最初のリンク先のクアッドメッシュへ変換しているコマンド
"Turn into Quad-Dominant mesh"
っぽいものをドキュメントで検索すると
"meshing_tri_to_quad_dominant" が該当しそうな予感しかない。
List of Filters — PyMeshLab documentation

Fusion360STL(OBJ)エクスポート

PyMeshLabでインポート・クアッド変換・エクスポート

Fusion360でクアッドとして再インポート

と言うシナリオがAPIで可能な気がしてならない・・・。

ほぼプルリバースエンジニアリング2

こちらの続きです。
ほぼプルリバースエンジニアリング1 - C#ATIA

あちらのアドイン全然上手く行かない・・・。
進展どころか後退している。

と言う事で、こちらを。


上のやつ、あまり操作方法分かっていないのですが、
表示した際、メッシュとソリッドが重なって表示されています。
単体で表示させる場合は、

下の方の”モデル ブラウザ”をクリックすると新たにダイアログが
表示されるので、その中にボディのリストが表示されます。
”Body7” が作ったソリッドで、"Untitled008" がメッシュです。

ほぼプルリバースエンジニアリング1

11ちょっと必要になりそうな予感がしているので練習中。

ほぼプルコマンドです。
面をもっと割ればもっとマッチするのですが・・・。

綺麗に作る為には三角面作っちゃいけないと分かりつつも
作っちゃう。


※追記です。
恥ずかしながら、grabcadにアップしてみました。
Free CAD Designs, Files & 3D Models | The GrabCAD Community Library

腕全体の物は、1日半ぐらいかな?
親指だけのものは、1.5時間ぐらい。

曲線の長さと同期させる6

こちらの続きです。
曲線の長さと同期させる5 - C#ATIA

牛歩より遅いペースなので、亀歩ペースです。


同期・監視しているパラメータ情報を表示させるためのダイアログを
作成中なのですが、やっと・・・やっとここまで出来ました。

ダイアログがでかい・・・おしゃれじゃないな。

"Python -> Javascript" 事態は、ほぼ解決しそうな雰囲気。Reactと
言いますか、Javascript自体で悩む事が多く
Javascript出来る奴、天才”
と何度も脳裏に浮かびます・・・。