Simulationでstudyをマクロから選択したい

Simulationでstudyをマクロから選択したいのですがどのメソッドを使えば良いのかわからないので

もしわかる方がいらっしゃったらご教授頂けないでしょうか。

やりたいことはstudyが以上に沢山あるので(72個!)下のタブから選択するのが面倒なので

フォームのリストボックスからstudyを選択できるようにしたい。

フォームを作るところまではうまく行ったのですがリストボックスのインデックスから

対応するstudyを選択するところでつまづいています。

Private Sub StudyListBox1_Click()

Dim SwApp As SldWorks.SldWorks
Dim Part As SldWorks.ModelDoc2
Dim COSMOSWORKS As CosmosWorksLib.COSMOSWORKS
Dim CWAddinCallBack As CosmosWorksLib.CWAddinCallBack
Dim ActDoc As CosmosWorksLib.CWModelDoc
Dim StudyMngr As CosmosWorksLib.CWStudyManager
Dim Study As CosmosWorksLib.CWStudy
Dim Count As Integer
Dim sStudyName As String
Dim i As Long
Dim Selected As Integer

 

'Connect to SOLIDWORKS
Set SwApp = Application.SldWorks
If SwApp Is Nothing Then Exit Sub

'Get active document
Set Part = SwApp.ActiveDoc
If Part Is Nothing Then Exit Sub
'Add-in callback
Set CWAddinCallBack = SwApp.GetAddInObject("CosmosWorks.CosmosWorks")
If CWAddinCallBack Is Nothing Then Exit Sub
Set COSMOSWORKS = CWAddinCallBack.COSMOSWORKS
If COSMOSWORKS Is Nothing Then Exit Sub

'Get active document
Set ActDoc = COSMOSWORKS.ActiveDoc()
If ActDoc Is Nothing Then Exit Sub


Set StudyMngr = ActDoc.StudyManager()
If StudyMngr Is Nothing Then Exit Sub

Count = StudyMngr.StudyCount

Selected = StudyListBox1.ListIndex

Set Study = StudyMngr.GetStudy(Selected)'←この辺が怪しいです
Study.ActivateConfiguration'←この辺が怪しいです
StudyMngr.ActiveStudy = Selected'←この辺が怪しいです


End Sub

コメント

コメント表示順: リミット: オートロード:
  • 柴田幸 28 日前

    西田様

    アドバイスありがとうございます。

    simulationのライセンスが帰ってきたら試してみたいと思います。

    何とかやりたいことが実現できそうな気がしてきましたので試すのが楽しみです!

  • 西田将也 29 日前

    スタディのタブを切り替えるだけで良いんですかね?
    ICWStudyManager.ActiveStudy にセッターもありそうなので,
    柴田さん最後の行のStudyMngr.ActiveStudy=XX でできそうです。

    (APIヘルプ抜粋)
    > ActiveStudy Property (ICWStudyManager)
    > Gets or sets the index of the active study.

    で,やってみたら結果的に手動で数字変えたらタブ切り替えることはできました。
    ひとつだけ,柴田さん書かれてるCosmosWorksLibってのがどこにあるかわからなかったのでそれ関連の定義はぜんぶobjectにして,
    AddInObjectは公式ヘルプのサンプルコード参考にSldWorks.Simulationにしました。
    Set CWAddinCallBack = SwApp.GetAddInObject("SldWorks.Simulation")

     

     

  • 柴田幸 33 日前

    山本様

    アドバイスありがとうございます。

    今はsimulationライセンスを別の人が使っているので、ライセンスが帰ってきたら早速試したいと思います。

  • 山本誠 34 日前

    正解はわかっていませんが、『この辺が怪しいです』部分を確認するとして、
    『Selected = StudyListBox1.ListIndex』行の下に

    Dim Names As string
    For i=0 To Selected -1
        Set Study = StudyMngr.GetStudy(i)
        Names = Names & i & ":" & Study.Name & vbcrlf
    Next

    を入れてみて、Next終わった後のNamesが72個分入っているかを確認してください。

    そのあと、リストボックスのインデックスとNamesに書き出されたインデックス(i)が
    一致しているかを確認してください。

    あと...
    Study.ActivateConfiguration の部分は理解できていないのでとばします(^^;)

    そして、
    StudyMngr.ActiveStudy = Selected
    のSelectedを手動で1とか2にして、Namesのインデックスと一致したスタディに切り替わるかも
    確認してください。

    これらの確認が問題なければ、動きそうな気がします...
    でも動いてないので別の問題があるかもしれません...