C#ATIA

↑タイトル詐欺 主にCATIA V5 の VBA(最近はPMillマクロとFusion360APIが多い)

オプションの設定を切り替える(発見手順)

最近こそ業務の依頼として頂くので、CATIAで2D図を使うようになったのですが
以前からあまり好きではなく、他の2DCADで構わないのであれば他のCADを
使っていました。その理由のひとつが(3Dから投影したもの以外の)線を
ドラッグした際動いちゃう事なんです。

でも、こちらのオプションの設定で固定できる事に気が付きました。
f:id:kandennti:20190301132908p:plain
あ~便利だ、と思ったものの人間はわがままです。ちょっとだけ動かしたいなぁ
と思うんです。その都度オプション開いてONにし動かした後にOFFにするのは
面倒です。(そもそも移動コマンドがもっとまともなら、気にしないのですが)


オプションの設定を知る方法のひとつが、CATSettingsファイルを見る事なのですが
バイナリファイルな為、エディタで開いてもわかりません。
その為、XMLフォーマットに変換する為のプログラムが存在しています。

ここに記載されている、CATBatGenXMLSetがそうです。
Importing and Exporting Settings Files to/from XML Format
インストールフォルダ内のCATIAの実行ファイルと同じフォルダに
入っているはずです。
(逆に XML→CATSettings はCATBatImpXMLSetです。)
でも、個人的な感覚としてCATSettingsファイルは、CATIA起動時に
読み込んで終了時に書き出しており、起動中のCATIAに対しては
何の役にも立たないんです。上記のオプションをマクロで変更したい時
CATSettingsを書き換えても変わってくれないはずです。


マクロの記録をとっても空、Webで検索してもHit無しなので
困って諦めていたのですが、Helpを見るとここにパラメータ値を
エクスポートするボタンがあると記載が有りました。
f:id:kandennti:20190301132942p:plain
エクスポートしてみると何と、catvbsファイルなんです。
これなら届きそうです。

1)変更したいオプションの変更前と変更後をエクスポート。
 上書きしてしまう為、一度行ったものをリネームして二度目を
 実行してください。

2)違いを比較。イロイロ方法はあると思うのですが、コマンドプロンプト
 を起動し、FCで比較しました。
f:id:kandennti:20190301132956p:plain
ネーミングからしてもパラメータ名 ”Drw_settings_DragElts” が
怪しそうなのです。
エディタで開いてみると
f:id:kandennti:20190301133031p:plain
まぁそうね、程度ですけど。

3)エクスポートしたcatvbsの先頭付近を参考にし、入力補完にも助けられ
こんな感じのコードを実行すると無事切り替わりました。

Sub CATMain()

    Dim setctl As SettingControllers
    Set setctl = CATIA.SettingControllers
    
    Dim setPpty As SettingRepository
    Set setPpty = setctl.Item("DraftingOptions")
    
    Dim bl As Boolean
    bl = IIf(setPpty.GetAttr("Drw_settings_DragElts"), _
            False, True)
    
    'キャストする必要有り
    Call setPpty.PutAttr("Drw_settings_DragElts", CBool(bl))

End Sub

試していないので断言できないのですが、今回の事を考えると
マクロでオプションの設定を知ることも変更する事も、
全て可能なのではないかと思います。今更かな?