こちらのコメントで御質問頂いただきました。
最初の質問の方です。式では該当する機能があるものかどうか、不明です。
マクロであれば形状セット数の取得は簡単に出来ます。
'vba パラメータに形状セット数を表示する Sub CATMain() '本来ならドキュメントの型をチェックすべきです。 'Part以外がアクティブな場合エラーになります。 Dim doc As PartDocument Set doc = CATIA.ActiveDocument Dim pt As Part Set pt = doc.Part Dim prms As Parameters Set prms = pt.Parameters 'パラメータ取得 Dim prm As IntParam Set prm = GetPrm(prms, "形状セット数") '形状セット数 Dim hBdyCount As Long hBdyCount = GetHBodyCount(doc) 'パラメータ値に反映 prm.Value = hBdyCount End Sub Private Function GetHBodyCount( _ ByVal doc As Document) As Long Dim sel As selection Set sel = doc.selection CATIA.HSOSynchronized = False sel.Clear sel.Search "CATPrtSearch.OpenBodyFeature,all" GetHBodyCount = sel.Count2 sel.Clear CATIA.HSOSynchronized = True End Function Private Function GetPrm( _ ByVal prms As Parameters, _ ByVal name As String) As IntParam If IsExistPrm(prms, name) Then Set GetPrm = prms.Item(name) Else Set GetPrm = InitParm(prms, name) End If End Function Private Function IsExistPrm( _ ByVal prms As Parameters, _ ByVal name As String) As Boolean Dim intPrm As IntParam On Error Resume Next Set intPrm = prms.Item(name) On Error GoTo 0 IsExistPrm = IIf(intPrm Is Nothing, False, True) End Function Private Function InitParm( _ ByVal prms As Parameters, _ ByVal name As String) As IntParam Set InitParm = prms.CreateInteger("", 0) InitParm.Rename name End Function
紛らわしい為、パラメータ名は "形状セット数" としました。
Partファイルでのみですが、実行すれば取得できます。
ここで困難なのは "リアルタイムで" の部分です。
プログラム的に考えれば、変化が起きたタイミングの検知し
このマクロを実行すれば良いのですが、通常であれば
イベント処理が真っ先に思いつきます。
が、生憎CATIAのマクロでは、そのようなイベント処理を
行うことは出来ないだろうと思います。
おぼろげな記憶なのですが、やはり "リアルタイムで" を実行する
代案として「unofficial catia user forum」にここなさんが記載していた
アイデアをご紹介します。
作業中に頻繁に使用するショートカットキーがあるでしょうか?
仮にこれが「Treeの表示/非表示」だとします。(僕は偶にです・・・)
デフォルトであれば F3キーとなっています。
このF3キーを押した際、「Treeの表示/非表示」とマクロの実行を
一度で行えるようにする と言うアイデアです。
すんなり出来ない、ショートカットキーのカスタマイズについては
こちらのサイトに詳しく記載されています。
〇CATIAの小技
登録できないアクセサレーターを登録する方法 | CATIAの小技
1)重複したシュートカットキーの登録が出来ない為、一度F3キーを
フリーにします。
日本語環境の場合ですが、「Treeの表示/非表示」は「仕様」と言う
コマンド名です。(知らなかった・・・)
アクセレータに「F3」が記載されていますので、これを空欄にします。
2)「CATIAの小技」さんの手法でツールバーを作成します。
3)「CATIAの小技」さんの手法でツールバーにマクロをD&Dします。
念のため、ツールバーに登録する前は、アクセレータはグレーアウトして
設定できません。
登録するとアクセレータでの設定が可能となりますので、「F3」と
記入すればOKです。
4)これでF3キーでマクロは実行するようになりますが、元の
「Treeの表示/非表示」が出来なくなってしまいます。その為
最初のマクロを少し修正します。
'vba パラメータに形状セット数を表示する Sub CATMain() '本来ならドキュメントの型をチェックすべきです。 'Part以外がアクティブな場合エラーになります。 '仕様コマンド CATIA.StartCommand "仕様" Dim doc As PartDocument Set doc = CATIA.ActiveDocument '以下は同じです ・ ・ ・
このようにすることで、Treeの表示/非表示」とマクロの実行を
一度で行えるようなります。
・・・ちっともリアルタイムには、ならないのですが。