仕事のカタマリにようこそ!  [ ログイン | ユーザ登録 ]
フォーラムから検索

機械用3D-CAD SolidWorks非公認のユーザサイトです
 
 
Web katamari.org
仕事のカタマリ
ホーム リンク集 ダウンロード フォーラム(掲示板) FAQ お問い合わせ









フォーラムニュース: 質問、相談カテゴリに「SolidWorks操作方法」に関するフォーラムを追加しました。(2003/11/27)
いらっしゃい、 ゲストさん. まずはこちら→ ログイン または 登録. 2025/04/20 - 04:51:45
ホーム ヘルプ 検索 ログイン 登録

仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: 座標系からMathTransformへ 前のトピック 次のトピック
ページ: [1] Page Bottom 返信 返信のお知らせ Print 
   著者  トピック: 座標系からMathTransformへ  (閲覧数 3257 回)
chura
Jr. メンバー
**

オフライン

投稿: 25



I'm a llama!

プロファイルを見る
座標系からMathTransformへ
« 投稿日: 2004/10/04 - 14:50:33 »
引用して返信

こんにちわ。churaです。

 私の理解が浅すぎて見当違いの質問をしているようでしたらすいません。

今、部品に設定した座標系(3Dスケッチ)を最終的にアセンブリにおけるMathTransformとして取得したいと思っています。

しかし、座標系のフィーチャーを取得した直後からこれ以上の情報を取得する方法が見つかりません。そもそもこういった操作のできるものではないのでしょうか?

議長に報告する   記録済み
hisa
カタマリの王様!?
*****

オフライン

投稿: 507



PANDA-Z!!

プロファイルを見る WWW
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!!

プロファイルを見る WWW
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さん

ここ数日悩んでいたことが氷解しそうです

ずーっと、フィーチャーとして取得してから操作することばかり考えていましたが、そういうことなんですね。どうもありがとうございます!
議長に報告する   記録済み
ページ: [1] Page Top 返信 返信のお知らせ Print 
仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: 座標系からMathTransformへ 前のトピック 次のトピック
ジャンプします: