towa_nawa
新人さん 
オフライン
投稿: 3

I'm a llama!
|
 |
ASSY上での部品の座標取得
« 投稿日: 2007/02/09 - 17:10:40 » |
|
SolidWorksのAPIを4・5ヶ月前からはじめたのですが、わからないことも多く、 ある事で躓いてしまってこまっていました。 インターネット等で検索しこのサイトを発見し、大変有益な情報が多く感激しています。
過去の質問を見ても、わからないことがあり質問させていただきたい次第です。
Assembly上に、部品をいくつか配置してあるものとします。 いくつかの部品に穴が空いており、その穴の座標を取得したいのですが、 Partファイルの場合の座標取得はできるコードをヘルプ等から発見したのですが Assy上の座標で穴の座標を得る事がどうしてもできません。
どなたか教えていただけないでしょうか?
環境 windows XP sp2 SolidWorks 2004 SP4.1
|
|
|
|
hisa
カタマリの王様!?     
オフライン
投稿: 507

PANDA-Z!!
|
 |
Re:ASSY上での部品の座標取得
« 返信 #1 投稿日: 2007/02/13 - 11:19:37 » |
|
towa_nawaさん、こんにちは 
ASSY上での部品座標取得は、下記の手順で行います。 括弧内は、使用するメソッドの例です。(手順3は状況により結構変化するので省略)
<準備> 1. ASSYモデル取得(SldWorks.ActiveDoc→AssemblyDoc) 2. MathUtility取得(SldWorks.GetMathUtility→MathUtility)※手順5より前であれば前後しても可 3. 対象構成部品取得(Component2) <座標変換> 4. 構成部品のトランスフォーム取得(Component2.Transform2→MathTransform) 5. 構成部品上の座標取得・定義(MathUtility.CreatePoint→MathPoint) 6. 座標にトランスフォームを掛け合わせて部品座標→ASSY座標変換 (MathPoint.MultiplyTransform(MathTransform)→MathPoint) <結果> 7. 必要に応じて座標値取り出し(MathPoint.ArrayData)
ここで言う、MathUtilityはMathPoint・MathTransFormなどを作り出すユーティリティで MathPointは、XYZ座標を計算するためのインターフェイス。 MathTransformは、2つの座標系の関係を表すインターフェイスとなっています。 ちなみに、以前座標系からMathTransformへでも書いており、当時Component2.Transformで ASSY→構成部品としていましたが間違いでしたね… 
構成部品→ASSYの場合は、Component2.Transform2をそのまま使用し、 ASSY→構成部品の場合は、Component2.Transform2.Inverseで逆転させます。
サンプルコードが、SolidWorks2006版のAPIマニュアルにTransform Point from Component Space to Assembly Space Example (VB)として掲載されています。 SolidWorks2004でも問題なく動作すると思います。
|
|
|
|
towa_nawa
新人さん 
オフライン
投稿: 3

I'm a llama!
|
 |
ありがとうございます。
« 返信 #2 投稿日: 2007/02/15 - 00:41:17 » |
|
hisaさん、こんにちは。
丁寧な説明ありがとうございます。教えて頂いたのですぐ実行し、報告するのが礼儀だと 思っておりましたが、少々忙しくまだできていません。大変申し訳ありません。
私は座標変換という考え方をまったくしていませんでした。近日中にhisaさんに教えていただいた 手法を用いてマクロを作成し結果を報告したいと思います。
|
|
|
|
towa_nawa
新人さん 
オフライン
投稿: 3

I'm a llama!
|
 |
Re:ASSY上での部品の座標取得
« 返信 #3 投稿日: 2007/02/27 - 16:32:53 » |
|
大変遅くなって申し訳ありません
hisaさんの言われたとおり実行してみたところ、 assembly上での座標に変換することができました。 hisaさん本当にありがとうございました。
|
|
|
|