C#ATIA

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

ビューの位置を保存・再現

連日、不慣れなCATIAの2Dをやってきたお陰で、今まで知らなかった
機能に毎日出会ってます。
一度作った断面の位置を、変更する事が出来るなんて知りませんでしたよ・・・。
(SolidWorksFusion360では、普通に出来て羨ましいと思ってました)

相変わらず不満もあるのですが、その一つがマウスで触ってしまうと
イロイロ動いてしまう事です。
こんな感じの図面を作成したとします。
f:id:kandennti:20181102183026p:plain
右と下面図は正面図に依存した位置なのですが、断面図は依存しない
状態です。これってビューの位置をロックすると言う機能は恐らく
無いですよね? ビューをロックしても位置は動いちゃいますよね?

メーカーさんの場合あまりご存じないかも知れませんが、うちのような
孫請け末端にいると図面を位置合わせもせずにコピペで重ねて、
大まかな変更箇所を確認したりするんですよ。原始的ですが。
それを考えると、仮に設計変更が入ったとしてもビューの位置は
ズレて欲しくないんです。(欲を言えば寸法の位置も)
でも、動いちゃうんですよ。(AutoCADとかどうなんだろう?)

腹が立つので、ビューの位置を保存したり再現したりするマクロを
作りました。

※Ver0.0.3に修正した為、こちらをご覧下さい。
ビューの位置を保存・再現2 - C#ATIA

マクロを実行すると、こんなダイアログが出ます。
f:id:kandennti:20181102183052p:plain
最初は別のマクロだったのですが、ビュー位置の保存と再現するマクロを一本化
してしまった上、Formを作りたくないと言う苦肉の策です。
はい - アクティブシート上の記録されているビュー位置を再現
いいえ - アクティブシート上全てのビュー位置を保存
キャンセル - 処理中止
です。

〇保存
表示・非表示問わずに全てのビュー位置を保存します。
保存先はCATDrawingのパラメータに
"views_pos_" + シート名
の文字列型のパラメータを作成します。
パラメータ内のフォーマットは

ビューインターナルネーム,X座標,Y座標@ビューインターナルネーム,X座標,Y座標@・・・

の状態です。ビューもインターナルネームが取得出来るのですね。
その為、ビュー名を変更しても大丈夫です!!

又、同一のパラメータ名のものがある場合は、上書きの確認を行います。
f:id:kandennti:20181102183101p:plain

〇再現
上記のパラメータ名を探し出し確認ダイアログが出現します。
f:id:kandennti:20181102183110p:plain
過去に保存されていない場合は、当然再現は出来ません。
f:id:kandennti:20181102183118p:plain
又、過去に保存したのちにビューが増えている際は、警告が出ます。
f:id:kandennti:20181102183128p:plain
増えているビューに対しては位置の移動は行いません。
削除により減っているビューに対しても当然、何も行いません。

実行後は、移動の有無を表示します。
f:id:kandennti:20181102183136p:plain


確認している限りでのちょっとおかしな部分や問題点です。

〇依存との再現の矛盾
このような状態で位置を保存します。
f:id:kandennti:20181102183146p:plain
最初の状態で、断面は依存していない位置です。
ここで依存状態に戻します。
f:id:kandennti:20181102183202p:plain
依存しているので、断面は手動の場合はX方向しか動きません。
ここで再現させると
f:id:kandennti:20181102183146p:plain
元に戻ります。あくまで記録した位置になります。
但し、メインのビューをちょっとでも動かすと
f:id:kandennti:20181102183214p:plain
Y方向が依存した位置に戻ります。

〇結果のログとの矛盾
先程保存した状態からこんな感じでメインビューを動かし、
再現させます。(依存したビューは付いて来ただけです)
f:id:kandennti:20181102183231p:plain
依存しているビューは動いているのに、ログはこんな感じで
嘘を付きます。
f:id:kandennti:20181102183238p:plain
時間が出来たら直そうかな・・・。

Ver0.0.3で修正しました。

〇シート名を変更する
パラメータ名にシート名が入っている為、シート名を変更すると再現
出来なくなります。
が、上記のルールでパラメータ名を決めている為、パラメータ名を
変更する事で再現出来る様になるはずです。
逆にこれを利用すれば、位置の流用も可能かも。

〇差し替える為の新たなビューが再現されない
何らかの理由でビュー自体を差し替える為、コピーし同一のビュー名に
しても再現はされません。(言葉だと表現しにくいです)
ビュー名の重複(正面図やアイソメ図が複数出来るので)でも再現可能に
する為に、インターナルネームを利用している為です。
事前に「重ねる」等で工夫するしかないです。

〇角度が再現されない
忘れていました・・・スケールも再現しません。
あくまでXY座標だけです。ご要望があればで出来るようにしようかな?
Ver0.0.3で角度の再現は行うように、修正しました。

〇パラメータをロックしなくて良いの?
思ったより困難だったので諦めました。
Macro: Parameter, Remove constant. - DASSAULT: CATIA products - Eng-Tips


ビューの位置ってマクロだとアッサリ取得・設定出来るのですが、
手動だとわかりませんよね? プロパティとか探しても見当たらないんです。
でも、先日知りました。このツールバーで確認も移動も出来るんです。
f:id:kandennti:20181102183252p:plain
海外のサイトで教わっていた人も「そんなツールバー見たことない」って
書いてました。これも連日の発見の一つです。