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

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









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

仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: アセンブリファイルの中の部品ファイルを開く方法 前のトピック 次のトピック
ページ: [1] Page Bottom 返信 返信のお知らせ Print 
   著者  トピック: アセンブリファイルの中の部品ファイルを開く方法  (閲覧数 1673 回)
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さんは、ぜんぜん素人ではないと思いますよ
これからもがんばってください!
 GetComponentFeature.lzh
議長に報告する   記録済み
motom
新人さん
*

オフライン

投稿: 7



I'm a llama!

プロファイルを見る
Re:アセンブリファイルの中の部品ファイルを開く方法
« 返信 #4 投稿日: 2009/01/05 - 14:07:55 »
引用して返信

Makoron さん、あけましておめでとうございます。
そして、回答ありがとうございました!!!

なるほど!!!
試しにライトウェイトを解除したら走りました!
は〜。長かったです。本当に助かりました。
Makoronさんが作ってくださったサンプルを解読して
加工させていただきます。

慣れないプログラミングで悪戦苦闘ですが
頑張ります。ありがとうございました。

今後とも宜しくお願い致します。
議長に報告する   記録済み
ページ: [1] Page Top 返信 返信のお知らせ Print 
仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: アセンブリファイルの中の部品ファイルを開く方法 前のトピック 次のトピック
ジャンプします: