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

C#ATIA

↑タイトル詐欺 主に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メソッドは通過点の変更のため、処理後の状態は間違っていません
でした。 (でも、望んでいる結果ではない・・・)

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