2005年5月26日木曜日

SW API「指定点と自由曲面との交点を求める」

SolidWorksの標準機能にはないんだけどAPIを使用したら出来ないかな?
と思うような機能を作っていきます。
特に断りがない場合SolidWorks2005上で動作することとします。

今回のお題目は
「指定点と自由曲面との交点を求める」

SolidWorksの「測定」で「点」と「自由曲面」を与えると自由曲面との最短点との距離を求めることが出来ます。
でも、点をある方向に投影させて自由曲面との交点を求める事は出来ないの?
と考えたのが今回の「お題目」のきっかけでした。

イメージ 1

測定を実行したときの結果


今回は交点の求め方がメインなので投影する方向はZ方向に固定して考えています。
ではどのような手順で実現することが出来るか考えてみましょう。

1.選択点を通る直線を作成する。
  必ず曲面との交点を求めるために直線の始点Zを-1m、終点Zを+1mとします。
  API:Modeler::CreateLine
2.直線のB-Splineデータを取得
  API:Curve::ConvertLineToBCurve
3.B-SplineデータからB-Spline Curveを作成
  API:Modeler::CreateBsplineCurve
4.B-Spline Curveと選択曲面から交点を取得
  API:Surface::IntersectCurve

曲面との交点を求めるために1から3の手順でB-Spline Curveを作成します。
(他に簡単な手順で作成する方法があるかもしれません・・・)

サンプルマクロでは上記処理を実行するために
フォーム上にボタン一つの単純なダイアログを用意しました。
サンプルのダウンロードはこちらから

ボタン押下で処理が実行します。
ボタン押下前に必ず点と曲面を選択状態にしてください。

イメージ 1

実行結果

ちなみにSolid Bodyに対しては RayIntersections で求める事が出来ます。


次回も点と曲面の交点を求める方法について考えてみます