CSVファイルにある点群データから歯車のスケッチを描き押し出しを行いたいのですがImport spline CSVでは単なる直線が描写されるだけで終わってしまいます.どのようにすればきれいに点同市をなめらかにつなぐことができるでしょうか?
解決済! 解決策の投稿を見る。
回答者: jsugano_igears. 解決策の投稿を見る。
@tasuke1shunta さん、
Import Spline CSVの仕様が良く分かっていないのですが、おそらく下記赤丸のところに余分な点群があるのでどこをどう繋いだらいいか分からなくてスプライン曲線が生成されないのではないでしょうか。
@tasuke1shunta さん、
CSVデータからはみ出ている点群を削除して1歯分だけ残しました。これをImport Spline CSVを使って読み込むとこんな感じになります。
直線を加えて押し出しました。このとき2つの直線間角度はきっちり7.5度になるように寸法拘束しています。
Import Spline CSVを使うと元データより10倍の大きさになるので尺度コマンドで1/10にしておきます。
円形状パターンコピーと結合。
これで完成です。
(余分な線は消したものとして)
importSplineCSVは、1ファイルで1本のフィット点スプラインを作成します。フィット点スプラインというのは、3次から5次(多分3次)曲線を1本または複数を曲率連続でつないだものです。
いっぽうで、歯車の曲線は、A歯先円弧、Bインボリュート曲線、Cトロコイド曲線、D歯底円弧から成り立ち、AB間は不連続、BC,CD間は接線連続です。そのため、厳密にいうと、A,B,C,Dでそれぞれ別のCSVファイルにして、importSplineCSVに読み込ませることが良いと思います。
まあ、BCD間は1本にしてもそんなにわからないとは思います(アンダーカット歯車除く)。
それでAB間ですが、尖りのある曲線は3次曲線では表現できません。それで、ここをスプラインでつなぐと丸みがつきます。つまり歯先に突起が付くことになります。これを許容するなら1本でつなげば良いし、正確にしたいなら分けたほうがいいのではないでしょうか。
ちなみに自分で作っている歯車ソフトはA,Dは円弧、B,Cは2本のスプラインに分けています。BC間は、アンダーカットのある歯車だと不連続になることも理由の一つですが。
@tasuke1shunta さん
ご質問の趣旨の確認ですが、見た目に下図のようになっていて、曲線のように見えないという意味でしょうか。
それでしたら、節点の密度を少なくすると、曲線らしくなります。
(オリジナルの節点数は263ではなく109でした。訂正します)
一番右は、オリジナルで節点密度が濃すぎるために、3次曲線の表現力が生かせていないように見えます。曲率分布もちょっとおかしいです。節点間隔を荒くすると、ベジエ曲線が補間して滑らかな曲線になります。曲率分布をみてもなめらかな曲線だと分かります。元の節点は直線近似前提で節点密度をあげたのかもしれません。
どの程度荒くしてよいのかは、元の曲線からのずれの程度から判断します。例えば最大で誤差10μmに収まる節点数を試行して求めるということが考えられます。
(前回の回答を一部修正します)
まず次の図を見ていただきたいのですが、中央の図は、正しく計算されたインボリュート部70点とその曲率分布です。きれいな曲率分布を描きます(これは各点から基礎円までの接線長さの逆数に比例します)。このときのxy座標の有効桁は15桁あります。(数値計算の結果を丸めていない)
次に一番右端の図は、同じインボリュートですが、有効桁5桁にした場合です。mm単位だと、0.001または0.0001のオーダーです。それだけで曲率分布が暴れます。ピッチが細かいために誤差に敏感になるのだと思います。
そして、最初の投稿に添付されたデータの有効桁は5桁で、一番左端の図です。これより、曲率分布が乱れた原因は、有効桁が少ないことが原因の可能性があります。
CSVの実際の数値を下図に示します。
オリジナルはmm単位ですが、右2つはFusionに読み込むことを考えてcm単位にしています。
もともと「歯のたけ」が2.25mmですから、100個のデータに分割すると0.0225のオーダが必要で、さらに曲率計算が入ると、微小から微小を引き算するので桁おちしてしまったかもしれません。
その回避のためコンピュータで数値計算する際は「倍精度(double)」にするのですが、これが小数以下15桁となります。
上記で用いた正確なインボリュート部の座標は、ここで入手可能です。(自分のサイトです。現在は30点までの分割に設定しています)
「ブラウザで歯形創成図描画:インボリュート曲線とトロコイド曲線を体験」
https://involutegearsoft.hatenablog.com/entry/2024/06/01/041023
前回分では、有効桁5桁と小数点以下15桁しか見ておらず、その間のどこが良いのか不明なままでした。
その確認のため、正しいインボリュート15桁データから、小数点以下1位から8位までの8組の座標データを作成して、Fusionで評価しました。
結果、少なくとも小数点以下第5位が必要で、それ未満の場合とは明確に差がありました。
推定理由です。前回書いたように2.25mmの歯を100分割すると0.0225オーダとなります。つまり小数第4位を確定しなければならず、それには、第5位まで求めて四捨五入しなければならないと思うのですが、どうでしょうか。
前回桁落ちがどうとか書きましたが、撤回します。問題は四捨五入または有効桁打ち切りの操作によって歯形が崩れることにあり、それが、必要精度より大きいか小さいかだと思います。
最後に、今回の検討による歯車モデル作成のお勧めは以下の通りです。
・歯車全体を1本のスプラインで結ぶことは避ける。(元のデータでは、たまにスプラインにならず、線分で構成されることがありました。また15000点は重すぎること、スプライン計算に時間がかかることも避けたい)
・座標値は確実に最小長さの要件を満足する桁数にする
・1枚の歯について、少なくともエッジ部は分割して輪郭作成し、押し出しで3D化、円形状配置、結合する(adachitec7さん説明通り)
・曲線や曲面が滑らかかどうかは、スケッチパレットの「曲率コーム」、ソリッドかサーフェスなら「検査」→「アイソカーブ解析」で判断
お探しの情報が見つからないときは、コミュニティで質問しましょう。困っている人がいたら、情報を教えてあげましょう。