Autodesk Inventorで図面を描く際、2D CADへの受け渡しの都合などで、複数のレイヤ(画層)を作る事があります。
標準機能では、一枚ずつ新規作成して名前を変える作業が必要です。
沢山あると一枚ずつ作るのは大変なので、ilogicを使って一括作成する方法を紹介します。
仕上がり結果
連番の複数枚のレイヤが、一回の実行で作成されました。

以下、方法です。
方法1. 連番で作る場合
作るもの
この例では、「parts1~parts5」の5枚のレイヤを作ります。
レイヤの名前の付け方は、”parts”は共通、後ろの数字は連番です。
- parts1
- parts2
- parts3
- parts4
- parts5
図面画面に入る
図面作成画面に入って下さい。

パラメーターに、項目を作る
Inventorのパラメーターウィンドウを呼出し、項目を作ります。
【管理タブ】→【パラメータ】でウィンドウが出てきます。
【数値を追加】を選択します。
名前はnumberとしておきます。
単位は無し。unitlessを選ばないとエラーが出ます。

数値には、作りたい枚数を入れて下さい。
今回は5枚作るので、5と入力します。
ilogic編集画面を出す
左側のInventorブラウザ欄(操作履歴が出てる領域)の、ilogicタブをクリックして下さい。
無ければ、+マークを押すと出せます。
そして、【ルールタブ】の領域で右クリック。【ルールを追加】を選択して下さい。
ルールの名前は、好きに付けて下さい。デフォルトのままでも良いです。

コードを書く
処理の内容を指示するコードを書きます。

処理の流れは、こんな感じです。
- Step1処理の対象を指示いま開いているファイルの図面を指定
- Step2見本となるレイヤを指定例では、Visible (ISO)というレイヤをコピー元とします。
- Step3FORループ開始末尾の番号が、パラメータに入力した値に達するまで繰り返します。
Sub Main()
'処理の対象を指定する。(この場合は、いま開いている図面)
Dim oDrawDoc As DrawingDocument
oDrawDoc = ThisApplication.ActiveDocument
'基になる既存のレイヤを指定する。この例は"Visible (ISO)"をコピー元とする。
Dim oLayer As Layer
oLayer = oDrawDoc.StylesManager.Layers.Item("Visible (ISO)")
'”number”というパラメータに指定した数に達するまで、レイヤを作り続ける。
For i = 1 To number
Dim oNewLayer As Layer
oNewLayer = oLayer.Copy("part"&i)
Next
End Sub
コードは、下記のAutodeskのヘルプページ、およびilogic標準搭載のスニペットを参考にしました。

実行
最後に、【保存して実行】を押せば実行されます。

方法2. 任意の名前で作る場合
方法1.のような連番ではなく、すべて任意の名前を付けたい場合もあるかもしれません。その場合も、対処可能です。
作るもの
この例では、以下の5枚のレイヤを作ります。
- リンゴ
- バナナ
- オレンジ
- ブドウ
- イチゴ
パラメーターに、項目を作る
方法1.と同じく、まずは図面作成画面に入ってパラメータを編集します。
【管理タブ】→【パラメータ】でウィンドウが出てきます。
【数値を追加】ではなく、【テキストを追加】を選びます。(右の三角をクリックすれば選択できます)
パラメータ名は、testにしておきます。

計算式の欄を右クリックし、【マルチバリュー】を選択して、出てきた画面にレイヤ名を入力します。
レイヤ名は、一項目ずつ改行して下さい。
入力したら【追加】を押したのち、【OK】で閉じます。

コード
入力するコードは、下記の通りです。方法1と同じく、ilogicのコード入力欄に記入して下さい。
方法1.との違いは、マルチバリュー(testという一つのパラメータに複数のレイヤ名を詰め込んでいる)なので、配列リスト型の変数に、値を格納しています。
'マルチバリューのパラメーターから、レイヤを作成する
Sub Main()
'処理の対象を指定する。(この場合は、いま開いている図面)
Dim oDrawDoc As DrawingDocument
oDrawDoc = ThisApplication.ActiveDocument
'基になる既存のレイヤを指定する。この例は"Visible (ISO)"をコピー元とする。
Dim oLayer As Layer
oLayer = oDrawDoc.StylesManager.Layers.Item("Visible (ISO)")
'”test”というパラメータに入力した値を、”values”という変数に格納する
Dim values As New ArrayList
values = MultiValue.List("test")
'”values”の値を名前に使い、順次新規レイヤを作成する
For Each xVal In values
Dim oNewLayer As Layer
oNewLayer = oLayer.Copy(xVal)
Next
End Sub
コードは、下記のAutodeskのヘルプページ、およびilogic標準搭載のスニペットを参考にしました。

実行
最後に、【保存して実行】を押せば実行されます。

レイヤが作成されました

さいごに
2D CAD(AutoCAD等)へ受け渡す必要がある案件では、レイヤ名を細かく指定したいことがあります。そんな際に、役立っています。

