最近、モチベーションがダダ下がり。何とかしたい。
久々にCATIAのマクロ作っている最中です。
・・・知らなかった事に遭遇。誰かに相談したい気持ちが山々。
結構敷居の高いDrawのマクロのお話で、こんなDrawファイルでテストしてます。
まぁ何とも味わいの薄いデータです。
目的は単に直線を描きたいだけです。
色々と謎めいた部分が有りますが、要は直線描きたいだけです。
'vba Option Explicit Sub CATMain() Dim doc As DrawingDocument Set doc = CATIA.ActiveDocument Dim vi As Variant 'DrawingView Set vi = doc.sheets.ActiveSheet.views.Item(3) '正面図 Dim xy(4) As Variant 'Double Call vi.Size(xy) Call drawLineTest(vi, xy) End Sub Private Sub drawLineTest( _ ByVal view As DrawingView, _ ByVal area As Variant) 'ロックは強制的に解除 If view.LockStatus Then view.LockStatus = False End If Dim fact As Factory2D Set fact = view.Factory2D Call fact.CreateLine(area(0), area(2), area(1), area(3)) End Sub
最初の画像の赤い矢印部分は
Set vi = doc.sheets.ActiveSheet.views.Item(3) '正面図
ここのビューの取得です。
DrawingSheet.Views(コレクションです)内にはビューが入っていますが、
インデックス順(先頭は1です)の内訳は
1-Main View (Treeに表示されてないやつ) 2-Background View (Treeに表示されてないやつ) 3-Treeの1個目 4-Treeの2個目 ・・・
の様になってます。
で、上記のマクロは問題無く直線を描いてくれます。
本当は、Treeで表示されているビューでは無く、インデックス1の
"Main View" に描きたいんです。
そこで、こんな感じに修正します。
Set vi = doc.sheets.ActiveSheet.views.Item(1) 'Main View
実行すると・・・
まじですか。
同様にインデックス2のBackground Viewでもエラーです。
この二つはFactory2Dが許してくれないんだ・・・知らなかった。
Background Viewで図面枠を描くようなサンプルマクロが何処かに
あったような記憶があるので、Background Viewで直線が描ける
気がするんだけど・・・。