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
コメント
西田様
アドバイスありがとうございます。
simulationのライセンスが帰ってきたら試してみたいと思います。
何とかやりたいことが実現できそうな気がしてきましたので試すのが楽しみです!
スタディのタブを切り替えるだけで良いんですかね?
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")
山本様
アドバイスありがとうございます。
今はsimulationライセンスを別の人が使っているので、ライセンスが帰ってきたら早速試したいと思います。
正解はわかっていませんが、『この辺が怪しいです』部分を確認するとして、
『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のインデックスと一致したスタディに切り替わるかも
確認してください。
これらの確認が問題なければ、動きそうな気がします...
でも動いてないので別の問題があるかもしれません...