タイガーラック クリエイティブブログ
2026
January
22

【Inventor】iLogicで別ルール内のクラスを読み込む方法

今回はInventor内でvb.netのコードを作動させることのできるiLogic内で、特定のルール上から別のルール内に作成したクラスのプロシージャを呼び出す方法を説明していきます。

環境

  • Autodesk Inventor Professional 2025

アセンブリ上のiLogicで別ルールを呼び出し、パーツを配置するスクリプト

構成

ルール名機能
ルール1パーツの配置
ルール2呼び出すパーツの指定、ルール1の呼び出し

ルールを2つ作成し、ルール1内にパーツを追加するプロシージャを作成、ルール2でそのプロシージャを呼び出します。

ルール1

iLogic上部メニュー

ルール1を作成し開いたら、コードを入力する前にエディター上部からオプションタブを開き「そのままのVBコード」にチェックを入れます。

Imports Inventor

Class PlacePartClass
	
	Function PlacePart(oApp As Application, sFilePath As String) As ComponentOccurrence
		Dim oDoc As AssemblyDocument = oApp.ActiveDocument
		Dim oCompDef As AssemblyComponentDefinition = oDoc.ComponentDefinition
		Dim oOccs As ComponentOccurrences = oCompDef.Occurrences
		
		Dim oTG As TransientGeometry = oApp.TransientGeometry
		Dim oMatrix As Matrix = oTG.CreateMatrix
		
		Dim oPart As ComponentOccurrence
		oPart = oOccs.Add(sFilePath, oMatrix)
		
		Return oPart
	End Function
	
End Class

「そのままのVBコード」にチェックを入れていない場合、Imports Inventorを記入しなくても自動でImportsされますが、チェックを入れている場合は記入が必要になります。
Applicationは「そのままのVBコード」にチェックを入れている場合、取得方法が不明(iLogicやInventor APIでの取得方法では取得出来ない)為、ルール2から受け渡します。

アセンブリ内にパーツを配置するには、Document.ComponentDefinition.ComponentOccurrences.Add(<ファイルのパス>, <ポジション>)メゾッドが必要になります。ファイルのパスはString形式で.iptファイルか.iamファイルのパスを指定します。ポジションはMatrixオブジェクトを指定します。Matrixオブジェクトを作成するにはApplication.TransientGeometry.CreateMatrix()メゾッドを使用します。ComponentOccurrences.Addメゾッドで指定するポジションは3DCADで一般的に行われる面拘束のようなものではなく、あくまでパーツを追加する際の初期座標を指定するものなので、Matrix自体の調整は基本的に必要ありません。
配置されたパーツはComponentOccurrence型でComponentOccurrences内に追加されます。

ルール2

AddVbRule "ルール1"

Class RunRuleClass
	
	Dim rule1 As New PlacePartClass
	
	Sub main()
		Dim oApp As Application = ThisApplication
		Dim oDoc As Document = oApp.ActiveDocument

		Dim sFilePath As String
		sFilePath = System.IO.Path.GetDirectoryName(oDoc.FullFileName) & "\Part1.ipt"
		
		Dim oPart = rule1.PlacePart(oApp, sFilePath)
		
		logger.info(oPart.Name)
	End Sub
	
End Class

ルール2では「そのままのVBコード」にチェックを入れず、AddVbRule “ルール名”でルールをインポートし、dim 変数名 as New クラス名で宣言すればプロシージャを呼び出せます。
動作確認の為、ルール1のファンクションから戻り値でComponentOccurrence型のパーツを受け取り、ComponentOccurrence.Nameでアセンブリ内のパーツ名をlogger.infoによりInventor内のログに出力しています。実際に使用する際には拘束設定をする別ルールを用意したりすることになるかと思います。

動作確認

モデルリスト

ルール2を一度実行するとアセンブリ内にPart1:1というパーツが追加され、iLogicログにパーツ名が出力されます。再度実行した場合はPart1:2というパーツが追加されログに出力されます。配置されたパーツの名称は、通常のボタン操作でパーツを配置した際と同じく自動で番号を振られリネームされます。任意で変更したい場合はルール内にoPart.Name = <パーツ名>と追加すれば変更できます。また、アセンブリ内に最初に配置されたパーツは、配置位置を自動で固定されてしまいますが、これはoPart.Grounded = falseと追加すれば固定を解除することが出来ます。

iLogic上で「そのままのVBコード」にチェックを入れるとInventor APIでdllを作成した際の挙動に近い動きをしますが、若干違う部分があるのでルール作成する際は注意してください。

このカテゴリの最新記事

関連記事

SHOP LIST

タイガーラック株式会社

〒577-0056
大阪府東大阪市長堂1-3-14 TOKUYASU Bld.