motom
新人さん
オフライン
投稿: 7
I'm a llama!
|
|
アセンブリファイルの中の部品ファイルを開く方法
« 投稿日: 2008/12/26 - 15:22:04 » |
|
初めて投稿させていただきます。 ど素人で恐縮ですが、宜しくご教示下さいませ。
アセンブリファイルの中の部品ファイルにアクセスしたいのですが うまくいきません。 下記プログラムを走らせたところ、記述の最後にある "componentDoc.FirstFeature" で止まってしまいます。
実はこのプログラムでうまくいくデータもあるのです。 なぜ出来たり出来なかったりなのか? どのような仕組みなのか?
さっぱりわかりません。皆様、ご教示の程、宜しくお願い致します
Sub main() Set swApp = CreateObject("SldWorks.Application") Dim errors As Long Dim warnings As Long Set swAssm = swApp.OpenDoc6("C\3D\Assem1.SLDASM", swDocASSEMBLY, swOpenDocOptions_Silent, "", errors, warnings) Dim components As Variant components = swAssm.GetComponents(False) If IsEmpty(components) = True Then Exit Sub End If Dim i As Integer For i = 0 To UBound(components) Dim component As SldWorks.Component2 Set component = components(i) If component Is Nothing Then Exit Sub
End If
Dim componentDoc As SldWorks.PartDoc Set componentDoc = component.GetModelDoc
Dim swFeature As SldWorks.Feature Set swFeature = componentDoc.FirstFeature
(中略)
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:アセンブリファイルの中の部品ファイルを開く方法
« 返信 #1 投稿日: 2008/12/26 - 16:57:30 » |
|
motomさん、はじめまして。
試していないので、性格ではないかもしれませんが、 Dim componentDoc As SldWorks.PartDoc を Dim componentDoc As SldWorks.ModelDoc2 に変えると良いようなきがします。
あと、ForのなかにDimは入れないほうが良いと思う・・・。
|
|
|
|
motom
新人さん
オフライン
投稿: 7
I'm a llama!
|
|
Re:アセンブリファイルの中の部品ファイルを開く方法
« 返信 #2 投稿日: 2008/12/26 - 17:13:53 » |
|
Makoron さん、はじめまして。 早速の回答ありがとうございました!!!
Dim componentDoc As SldWorks.ModelDoc2
に書き換えたのですが、同じところで止まってしまいます。 エラーメッセージは下記の通りです。
実行時エラー'91 オブジェクト変数または With ブロック変数が設定されていません。
それと、 >ForのなかにDimは入れないほうが良いと・・ なのですが、下記のDimの位置がおかしいでしょうか?
Dim componentDoc As SldWorks.ModelDoc2 Set componentDoc = component.GetModelDoc Dim swFeature As SldWorks.Feature Set swFeature = componentDoc.FirstFeature
素人ですみません 宜しくお願い致します。
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:アセンブリファイルの中の部品ファイルを開く方法
« 返信 #3 投稿日: 2009/01/05 - 11:50:18 » |
|
motomさん、あけましておめでとうございます。
実際にマクロ作ってテストしてみました。 結果、 エラーの原因は、アセンブリの構成部品が抑制されている事だと推測します。 >"componentDoc.FirstFeature" で止まってしまいます。 と言うところは、 前の行の"Set componentDoc = component.GetModelDoc"で、構成部品が抑制となっているため componentDoc(ModelDoc2オブジェクト)が取得できずに"Nothing"となってしまい、 "componentDoc.FirstFeature"が実行できない状態だったと考えられます。
この辺りを回避するような、サンプルマクロを作ってみたので参考にしてみてください。
あと、これだけの事にチャレンジできるmotomさんは、ぜんぜん素人ではないと思いますよ これからもがんばってください!
|
|
|
|
motom
新人さん
オフライン
投稿: 7
I'm a llama!
|
|
Re:アセンブリファイルの中の部品ファイルを開く方法
« 返信 #4 投稿日: 2009/01/05 - 14:07:55 » |
|
Makoron さん、あけましておめでとうございます。 そして、回答ありがとうございました!!!
なるほど!!! 試しにライトウェイトを解除したら走りました! は〜。長かったです。本当に助かりました。 Makoronさんが作ってくださったサンプルを解読して 加工させていただきます。
慣れないプログラミングで悪戦苦闘ですが 頑張ります。ありがとうございました。
今後とも宜しくお願い致します。
|
|
|
|