C#ATIA

↑タイトル詐欺 主にFusion360API 偶にCATIA V5 VBA(絶賛ネタ切れ中)

解析表示モードを切り替える

久々にCATIA V5のネタです。

Drawの解析表示モードを切り替える方法を調べました。

最初は "CATIA.StartCommand" でコマンド呼び出せば良いかな?
と試したのですが駄目でした・・・。

そもそも "CATIA.StartCommand" でコマンドで切り替えられても、
現状がどちらか判断出来ないので、ここで失敗して良かったと
後々に思いました。


検索したところ、こちらがHitしました。
COE : Forums : Deactivate "Analysis Dsiplay Mode"
前半部分ではこちらのボタンをWinAPIで押そうとしているようです。

嫌ですよね、WinAPI使うなんて・・・。

そちらサイトに張られていたリンク先にズバリ!の
答えが記載されていました。
Enregistrer sous PDF, noir et blanc

要は、こちらのオプションの設定をマクロで切り替えればOKと
言う事です。

なるほど、こんな事を良く気が付きましたね。


解析表示モードを"On→Off" 又は "Off→On" に切り替えるマクロです。

Sub CATMain()

    Dim mode As Boolean
    mode = switch_analysis_display_mode

    Dim msg As String
    msg = IIf(mode, "オン", "オフ")
    
    MsgBox "解析表示モードを" & msg & "にしました"

End Sub

' Drawの解析表示モードの切り替え
Private Function switch_analysis_display_mode()

    Dim settingControllers1 As SettingControllers
    Dim settingRepository1 As SettingRepository
    
    Set settingControllers1 = CATIA.SettingControllers
    Set settingRepository1 = settingControllers1.Item("DraftingOptions")

    '現状の状態を取得
    Dim state_analysis_display_mode As Boolean
    state_analysis_display_mode = settingRepository1.GetAttr("DimDesignMode")

    If state_analysis_display_mode Then
        'offにする
        switch_analysis_display_mode = False
    Else
        'onにする
        switch_analysis_display_mode = True

    End If

    settingRepository1.PutAttr "DimDesignMode", switch_analysis_display_mode
    settingRepository1.Commit

End Function

"GetAttr" で取得、"PutAttr" で設定です。

なんで "not" が機能しないのかが謎です。もう僕のVBAの知識が駄目かも・・・。