こちらの続きです。
表題欄の細々した項目をパラメータで変更する2 - C#ATIA
表題欄用のパラメータが必要なのですが、DrawのパラメータってPartと違って
コピペ出来ないのですね。知りませんでした。
こんな感じのものを作りたいんですよ。
毎回作るのは面倒な為、マクロで作っちゃいます。
'vba Option Explicit '作成用のパラメーター名 Private Const ALLKEYS = "date,custamer,partname,partnumber,drawnumber,material" Sub CATMain() 'ドキュメントのチェック をしたかったらKCL使ってね ' If Not CanExecute("DrawingDocument") Then Exit Sub 'ドキュメント Dim dDoc As DrawingDocument Set dDoc = CATIA.ActiveDocument 'キーワード Dim keys As Variant keys = Split(ALLKEYS, ",") 'パラメータ Dim prms As Parameters Set prms = dDoc.Parameters.RootParameterSet.AllParameters 'パラメータ作成-値は空 Dim i As Long Dim prm As Parameter For i = 0 To UBound(keys) If Not isExists(prms, keys(i)) Then Set prm = prms.CreateString(CStr(keys(i)), "") prm.Rename CStr(keys(i)) End If Next End Sub 'パラメータの有無 Private Function isExists( _ ByVal prms As Parameters, _ ByVal name As String) _ As Boolean isExists = True Dim prm As Parameter On Error Resume Next Set prm = prms.Item(name) On Error GoTo 0 If prm Is Nothing Then isExists = False End If End Function
定数 "ALLKEYS” の中の名前のパラメータを作っています。
今後、追加も削除もここ一行の修正で良いので楽です。
・・・これをsplitして配列作る方法は、海外の何処かで見かけて
感心しました。pythonじゃこんな事しないけど、VBAエディタの
貧弱さから考えると、この方法が一番楽な気がしてます。
パラメータを作成した直後にリネームしているのですが、
素のままだと、表示上は ”date” でも内部的に "drawing.date" に
なってしまい都合悪かったので。(設定の影響かも知れません)