chura
Jr. メンバー  
オフライン
投稿: 25

I'm a llama!
|
 |
座標系からMathTransformへ
« 投稿日: 2004/10/04 - 14:50:33 » |
|
こんにちわ。churaです。
私の理解が浅すぎて見当違いの質問をしているようでしたらすいません。
今、部品に設定した座標系(3Dスケッチ)を最終的にアセンブリにおけるMathTransformとして取得したいと思っています。
しかし、座標系のフィーチャーを取得した直後からこれ以上の情報を取得する方法が見つかりません。そもそもこういった操作のできるものではないのでしょうか?
|
|
|
|
hisa
カタマリの王様!?     
オフライン
投稿: 507

PANDA-Z!!
|
 |
Re:座標系からMathTransformへ
« 返信 #1 投稿日: 2004/10/04 - 17:03:53 » |
|
3Dスケッチは、部品のデフォルトの座標系の上で作成されると思いますので、アセンブリから該当する構成部品のトランスフォームを取得すれば良い・・・はずです(^_^;)
TransForm = Component2.Transform
ちなみに、参照ジオメトリの座標系でしたら
Xform = ModelDoc.GetCoordinateSystemXformByName("座標系の名前") TransForm = MathUtility.CreateTransform (Xform) (Xformは、16の倍精度実数のSAFEARRAY型トランスフォームで、TransFormは、Xformから作成するマス変換トランスフォームオブジェクトです)
にて、マス変換トランスフォームを取得できます。 上記のModelDocオブジェクトは、アセンブリから構成部品を取得して"Component2.GetModelDoc"で構成部品のModelDoc2オブジェクトを取得したものでないとアセンブリから構成部品内にある座標系の取得が出来ません。
今、手元にSolidWorksを触れる環境がなく確認していないため、情報不足な点もあるかもしれませんがヘルプと見比べて参考にしてみてください 
↑ちょっと本文修正しました
|
|
|
|
hisa
カタマリの王様!?     
オフライン
投稿: 507

PANDA-Z!!
|
 |
Re:座標系からMathTransformへ
« 返信 #2 投稿日: 2004/10/04 - 17:46:23 » |
|
追加で、具体的なマス座標変換について自分なりの解釈で少々触れてみます。
上記の手順でマス変換トランスフォームを取得した後は、変換したい座標のMathPointオブジェクトを作成します。
Point(0)=0.01 X座標 Point(1)=0# Y座標 Point(2)=0.02 Z座標
MathPoint = MathUtility.CreatePoint(Point)
そして、作成したMathPointをマス変換トランスフォームで乗じます。
TransMathPoint = MathPoint.MultiplyTransform(TransForm)
乗じた結果TransMathPointが変換後のMathPointオブジェクトです。 ここから"MathPoint.ArrayData"でX,Y,Z座標値を取り出すことが出来ます。
さらには、↑でのTransFormがアセンブリから取得したコンポーネントのマス変換トランスフォームだった場合、アセンブリ座標→コンポーネント座標コンポーネント座標→アセンブリ座標の変換となります。 もし、コンポーネント座標→アセンブリ座標アセンブリ座標→コンポーネント座標としたい場合は、
TransForm = TransForm.Inverse
にて、逆マス変換トランスフォームを作成することで実現可能です。 以上、長くなりましたがこれも参考にしてみてください 
本文中、頻繁に書いてしまいましたがマス変換トランスフォームって変ですね… マス変換変換ですね、これでは  マス変換マトリクスかマストランスフォームが正しいです。ヘルプには前者で記述してあります 
|
|
|
|
chura
Jr. メンバー  
オフライン
投稿: 25

I'm a llama!
|
 |
Re:座標系からMathTransformへ
« 返信 #3 投稿日: 2004/10/04 - 18:09:32 » |
|
hisaさん
ここ数日悩んでいたことが氷解しそうです 
ずーっと、フィーチャーとして取得してから操作することばかり考えていましたが、そういうことなんですね。どうもありがとうございます!
|
|
|
|