読者です 読者をやめる 読者になる 読者になる

C#ATIA

↑タイトル詐欺 主にCATIA V5 の VBA

Viewのロック・アンロック1

図面を作成する場合、通常は3Dとリンクを保って作成するだろうと
思うのですが、Viewのロックを使用するものでしょうか?

自分の場合、昔はリンクを保っていたのですが、起動時間が長くなると
寸法1つ入れるのに、随分と待たされるのが嫌になり、特に理由が
無い限りぶった切りまくりです。
(某メーカーさんでも○○からのデータはリンクを保ち、××からの
データはリンクを切っている と言うお話も聞いたことがあります)

3D側で表示・非表示させたぐらいで、更新待ちになるのが面白くなく
当時Viewのロック・アンロックを切り替えるマクロを作って
使っていました。

'VBA アクティブなシートの全てのビューをロック・アンロック切り替え
Sub CATMain()
    Dim Actdoc As DrawingDocument
    Dim ActSheet As DrawingSheet
    Dim Views As DrawingViews
    
    Set Actdoc = CATIA.ActiveDocument
    Set ActSheet = Actdoc.Sheets.ActiveSheet
    Set Views = ActSheet.Views
    
    If Views.Count < 3 Then Exit Sub
    
    
    Dim View As DrawingView
    Dim msg As String
    Dim Setting As Boolean
    
    Set View = Views.item(3)
    msg = "全てのビューを"
    If View.LockStatus Then
        Setting = False
        msg = msg & "アンロックしました。"
    Else
        Setting = True
        msg = msg & "ロックしました。"
    End If
    
    
    Dim i As Long
    
    For i = 3 To Views.Count
        Set View = Nothing
        Set View = Views.item(i)
        View.LockStatus = Setting
    Next i
    Call MsgBox(msg)
End Sub

大した内容ではないのですが、昔たまたま検索した海外のサイトで
こんな内容のマクロが売っているのを見たことがあります。

Sheets.Itemのインデックスは
1-作業図(Main View)
2-シート背景(Background View)
3-Treeにぶら下がった1個目
:
となっています。
f:id:kandennti:20150427122326j:plain
このインデックス"3"を元に、ロックアンロックを実行しています。


まだ、DrawのマクロはC#化していないので、
単純ですがこれをC#化したいと思います。