moumou
新人さん
オフライン
投稿: 8
I'm a llama!
|
|
アセンブリ上での部品の原点座標の取得
« 投稿日: 2011/09/20 - 16:01:51 » |
|
皆様お忙しいところ失礼します。 アセンブリファイル上で、アセンブリ原点から見た各部品原点を一斉に読み込むマクロを作成したいのですが、 なにぶん素人なのでマクロの作り方がいまいちわかりません。 今現在少しずつマクロを勉強しながら書こうとしていますが、難航しています。
まず部品原点を読んでくれる、solidworksで用意されているマクロ関数はあるのでしょうか? ヘルプなどを探しているのですが、どれがそれに相当するのかわかりません。
今何もかもわからない状態なので、どなたかやり方だけでもご教授して下さる方はいませんでしょうか? 全くの無知なので、わかりやすく教えていただけたらと思います。
よろしくお願いいたします
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:アセンブリ上での部品の原点座標の取得
« 返信 #1 投稿日: 2011/09/20 - 19:15:59 » |
|
moumousさん、はじめまして。
アセンブリ上で部品の原点座標を取得するマクロは、とても難しく、通常のマクロの様に簡単に作成する事が出来ないのです。 (私の現時点では作成する事ができません。)
そこで、逃げの方法になるのですが、 最近、kim_aokiさんが質問された「スケッチで打った点のxyz座標の取得」が同様の内容になり、ここでも、アセンブリ上で3Dスケッチを挿入し、各部品の原点に点を作成してから「点群の座標データのエクセルへの読み込み」のマクロで座標を取得する方法を紹介しています。
|
|
|
|
hisa
カタマリの王様!?
オフライン
投稿: 507
PANDA-Z!!
|
|
Re:アセンブリ上での部品の原点座標の取得
« 返信 #2 投稿日: 2011/09/21 - 17:10:17 » |
|
SolidWorksのAPIヘルプに、ズバリのサンプルがありました
APIヘルプのキーワードからTransformを検索し、その下にあるcomponentsをダブルクリックすると、 該当するトピックの中にGet Transforms of Assembly Components Example (VB)があります。 (ヘルプからそのままコピペすると余計な改行が入ってそのまま実行できないので、ヘルプと見比べて適宜修正して下さい)
結果は、Debug.Printで出力(VBエディタのイミディエイト ウィンドウに表示)されていて、構成部品ごとに Trans = (x.xxxx, x.xxxx, x.xxxx) といった感じで、XYZ座標が表示されています。(コピペできます)
Debug.Printの部分を変えれば結果の表示方法も自由に変えられますよ
|
|
|
|
moumou
新人さん
オフライン
投稿: 8
I'm a llama!
|
|
Re:アセンブリ上での部品の原点座標の取得
« 返信 #3 投稿日: 2011/09/25 - 00:16:52 » |
|
Makoronさん ご回答ありがとうございました。スケッチ点を打つ方法では確かに可能でした。 ありがとうございます。しかしやはりもっと直接的に出力したいと考えています。 ですがこれもいい方法なので参考にさせていただきます。
hisaさん ご回答ありがとうございます。ヘルプからサンプルコードを見つけ、コピーして実行してみましたが、色々エラーが出てしまいました。 多分簡単なことだと思うのですが、自分で訂正してみてもなかなかエラーがなくなりません。出たエラーは以下のものです。
エラー1 -------------------------------------------------------------- Sub OutputCompXform _ ( _
swComp As SldWorks.Component2 _
nLevel As Long _
) --------------------------------------------------------------
エラー2 --------------------------------------------------------------
Debug.Print sPadStr & " Rot1 = (" + _
Str(vXform(0)) + ", " + _
Str(vXform(1)) + ", " + _
Str (vXform(2)) + ")" _ --------------------------------------------------------------
このコードの部分がエラーとして出たところです。コンパイルエラーとして”識別子”が指摘されます。 何か文法上の間違いなんでしょうか? 多分簡単なことだとおもうのですが、なかなかうまく訂正できません。 もしわかるようであれば、教えていただけないでしょうか? 誠にお手数かけますがよろしくお願いします。
|
|
|
|
moumou
新人さん
オフライン
投稿: 8
I'm a llama!
|
|
Re:アセンブリ上での部品の原点座標の取得
« 返信 #4 投稿日: 2011/09/26 - 23:54:44 » |
|
Makoronさん 私が見つけたのは、Get Transforms of Assembly Components Example (VBA)であり、VBではないのですが、VBAでも関係なく動くのでしょうか?今このVBAの方のサンプルプログラムを使用して、前回投稿のようなエラーが出ている状況にいます。
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:アセンブリ上での部品の原点座標の取得
« 返信 #5 投稿日: 2011/09/27 - 08:52:55 » |
|
引用:Makoronさん 私が見つけたのは、Get Transforms of Assembly Components Example (VBA)であり、VBではないのですが、VBAでも関係なく動くのでしょうか?今このVBAの方のサンプルプログラムを使用して、前回投稿のようなエラーが出ている状況にいます。 |
流れからするとhisaさんだと思うのですが、名指しされたので
VBとVBAはほとんど違いがありありませんので、VBと書かれていればVBAと考えてもいいと思います。 (詳しく説明すると長くなるのでWeb検索等で調べてみてください。)
で、エラーに関してですが、書込みにあったそのままであれば、幾つか入力ミスがありますね。 (見ただけで判断しているので、実際のコードで動作するかはかくにんしてないです。)
エラー1 ・カンマが抜けています。 ・_の後は改行しても良いが、その下に空白行が入っている。 -------------------------------------------------------------- Sub OutputCompXform _ ( _ swComp As SldWorks.Component2 , _ nLevel As Long _ ) --------------------------------------------------------------
エラー2 ・最後の _ が不要 -------------------------------------------------------------- Debug.Print sPadStr & " Rot1 = (" + _ Str(vXform(0)) + ", " + _ Str(vXform(1)) + ", " + _ Str (vXform(2)) + ")" --------------------------------------------------------------
|
|
|
|
moumou
新人さん
オフライン
投稿: 8
I'm a llama!
|
|
Re:アセンブリ上での部品の原点座標の取得
« 返信 #6 投稿日: 2011/09/27 - 23:08:06 » |
|
誠に申し訳ありません。 hisaさんとMakoronさんを勘違いして送っていたようです。
無事解決しました。 hisaさん、Makoronさん、本当にありがとうございました。。
|
|
|
|