C#ATIA

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

Drawingの直線を移動する1

"Drawingの直線を移動したい" と、ご質問頂いたので挑戦してみました。
結論から書くと、まだ出来上がっておりません。思ったより困難でした。
自宅に帰ってしまったので、記憶だけである程度ご説明します。

ご存知かも知れませんが、Drawingには "移動" コマンドのような機能が
マクロには無いようです。 これは以前 "Unofficial CATIA User Forum" で、
ここなさんが記載していました。 そして代案として、Selectionと
2Dコンポーネントを利用する方法のサンプルを紹介していました。
(僕では絶対に思いつかなかったです・・・)

この方法でも確かに可能なのですが、直線1本を移動させるには
あまりに大げさすぎる為、最終手段としておきます。


まずDrawingの直線(Line2D)についてです。 手動の "直線" コマンドで
始点と終点をクリックすることで作成されますが、その際直線だけではなく
始点と終点となる点(Point2D)も作成されます。
実際にこちらのサンプルでは、この端点から座標値を取得し表示させています。
Drawingのラインの端点座標を取得 - C#ATIA


この事から、最初にこの端点の座標値を変更させれば移動するだろう
と考えました。 幸い、Point2Dオブジェクトであれば、SetDataメソッドで
変更できそうです。 (ここのサイトをリンクさせて良いものだろうか・・・)
r1 Point2D (Object)
実際行ってみると、端点は移動できました。 但し直線は移動しません。
(言葉だけではわかりにくいですが)直線と端点が離れた状態になって
しまいます。

そこで、直線自体の移動を考えました。 Line2DオブジェクトにもSetData
メソッドが存在します。
r1 Line2D (Object)
但し、通過点と始点から終点に向かっての(恐らく単位)ベクトル指定です。
試しに、垂直線に対し "X10Y10" させる様にマクロを作成したところ
X方向は思っている処理が出来ましたが、Y方向は変化無しでした。

実際テストを行っている時は気が付かなかったのですが、Line2Dオブジェクトの
SetDataメソッドは通過点の変更のため、処理後の状態は間違っていません
でした。 (でも、望んでいる結果ではない・・・)

と、取りあえずはここまでです。 時間をみて、もう少し挑戦してみます。