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のインデックスと一致したスタディに切り替わるかも
確認してください。
これらの確認が問題なければ、動きそうな気がします...
でも動いてないので別の問題があるかもしれません...