何れ使うつもりなので作成しているのですが、目的のバルーンを
マクロで見つけて、リフレームオンしたいんです。
試しにコンテキストメニューを見てみると、無いです。
あまり気にしたことが無かったのですが、無いんですね。
試しに、パワー入力等を行う為の右下の部分
(名称不明・・ドキュメントには記載されているかも)
c:"コマンドID"
※ダブルクォーテーションは不要です
でコマンドを呼び出せます。
コマンドIDについては、メニューのこちらを調べるか
こちらをご覧ください。
コマンドID - C#ATIA
で、リフレームオンの言語依存無しのコマンドIDは、
CATAfrReframeOnPSOHdr
でした。
試しに、バルーンを選択した状態でリフレームオンしてみると、
(矢印部が選択済み)
ん~バルーンと言うよりバルーンが有るビューがリフレームオン
している感じです。
こんな状態でリフレームオンしても同じ状態になるので
リフレームオンが機能していないわけでは無さそうなのですが、
期待は裏切られます。
※バルーンだけではなく、線などの要素でも同じ結果でした。
仕方が無いので、マクロで
'vba 'アクティブなシートの最初のバルーンを画面中央に持ってくる Option Explicit Sub CATMain() Dim dDoc As DrawingDocument Set dDoc = CATIA.ActiveDocument Dim sel As Selection Set sel = dDoc.Selection CATIA.HSOSynchronized = False sel.Clear sel.Add dDoc.sheets.ActiveSheet sel.Search "CATDrwSearch.DrwBalloon,sel" Dim balloons As Collection Set balloons = New Collection Dim i As Long For i = 1 To sel.Count2 balloons.Add sel.Item(i).value Next sel.Clear CATIA.HSOSynchronized = True ' 1個目のバルーン Dim balloon As DrawingText Set balloon = balloons.Item(1) ' 1個目のバルーンが画面中央になるように移動 ' ズームはしない reframe_on_like_balloon balloon End Sub Private Sub reframe_on_like_balloon( _ ByVal balloon As DrawingText) Dim view As DrawingView Set view = balloon.Parent.Parent Dim pos As Variant pos = Array( _ balloon.x + view.x, _ balloon.y + view.y _ ) set_view_origin pos CATIA.ActiveDocument.Selection.Add balloon End Sub Private Sub set_view_origin( _ ByVal positionAry As Variant) Dim viewer As Variant ' SpacesViewer Set viewer = CATIA.ActiveWindow.ActiveViewer 'http://catiadoc.free.fr/online/interfaces/interface_Viewpoint2D.htm Dim vp As Variant ' Viewpoint2D Set vp = viewer.Viewpoint2D vp.PutOrigin positionAry 'vp.Zoom = 1# End Sub
何とも中途半端なのですが、目的のバルーンが画面の中央なるように
画面を動かし、少しでも気が付きやすいように選択済みにして終了します。
本当はズームもしたいのですが、何を目安にどれぐらいズームすれば
良いのかが分からないのです。
せめて、この枠のサイズ等が取得出来れば良いのですが、
ちょっと見つからないです。
後はフォントのサイズと文字数、ビューとシートのスケールから
それっぽい数値を導き出すしかないのかな・・・。
キッチリしたサイズでは無くて良いのですが。
これが可能だと、重複したバルーンを見つけたり、目的のテキストを探したり
出来て便利だと思うんですけどね。
(検索だと文字での検索できないですよね?)