見出し画像

Inventor / iLogic : BOMパーツで色分け

以前に、コンポーネントで色分けをする iLogic ルールを作りました。

実際に使ってみると、ちょっと不満が出てきました。同じ部品でも違う色で色分けされてしまうのが面白くありません。

コンポーネントオカレンス単位では無く、ファイル単位で処理をすれば良いのですが、それだと一体として扱いたいサブアセンブリが色分けされません。やはりBOMのパーツ単位で色分けしたいと思いました。

ところで、違うファイル名でも、パーツの部品番号プロパティを同じにしてやると、BOM上は同じ部品として扱われます。ここもうまく処理する必要があります。

また、外観ですが、予めファイル内にコピーしておいた外観を利用する方法だと、事前に外観のコピーをする必要があります。ここも、自動処理したいです。

いろいろ苦労して、思ったものが出来きました。

ちょっとコードが大きくなってしまいました。iLogicルールにしては長すぎます。それで、今回は、iLogic から、色分け処理をするDLLを参照する形で作ってみました。

まず、クラスライブラリを参照するルールを記述します。

'クラスライブラリの参照
AddReference "ColorMapBom.dll"

次に、そのクラスライブラリから、色分け処理を呼ぶという形です。

Sub main
	
'Ver 1.0 By Yoji Tanaka AT 21/11/10

   'BOM(パーツレベル)の部品単位で色分けする。

   Dim oClass As New ColorMapBom.Class_ColorMapByBOM
   oClass.InvApp = ThisApplication
   oClass.BOM_PART_COLORMAP_MAIN()
   MsgBox("DONE!", , "BOMパーツ単位で色分け”)
	
End Sub

DLL ファイルの場所の設定は、リボンで、[ツール]タブ [オプション]パネル [iLogic 環境設定]の順にクリックします。iLogic アドイン DLL フォルダに既定のフォルダが表示されています。
通常、C:\Program Files\Autodesk\Inventor 202x\Bin\iLogicAdd です。

DLLは以下からダウンロードできます。
問題なく動くと思いますが、なにか問題あれば教えてください。また、こうすると良いとかありましたら是非フィードバックお願いします。なお、利用はダウンロードご本人に限ります。2次配布はNGです。不明の点があれば、事前にご連絡ください。


※ 2021/11/20 追記

コメント欄にフィードバックを頂きました。部品単位ではなく、直下のアセンブリモデルの単位で色分けしたい。という事でした。

それで、BOMの構成リストを基に色分け出来る様にしてみました。こんな感じになります。

※ 2021/11/21 追記

BOMの構成リスト対応版はこちら

iLogicルールは、パーツなのか構成なのかの記述を追加します。構成の場合、

'クラスライブラリの参照
AddReference "ColorMapBom_Take3.dll"

Sub main
	
'Ver 1.0 By Yoji Tanaka AT 21/11/10

   'BOMの構成単位で色分けする。

   Dim oClass As New ColorMapBom_Take3.Class_ColorMapByBOM
   
	oClass.InvApp = ThisApplication
	oClass.BomViewType = BOMViewTypeEnum.kStructuredBOMViewType 
	
	oClass.BOM_PART_COLORMAP_MAIN()

	
   MsgBox("DONE!", , "BOM Structure単位で色分け”)
	
End Sub

パーツの場合は、

'クラスライブラリの参照
AddReference "ColorMapBom_Take3.dll"

Sub main
	
'Ver 1.0 By Yoji Tanaka AT 21/11/10

   'BOM(パーツレベル)の部品単位で色分けする。
		
   Dim oClass As New ColorMapBom_Take3.Class_ColorMapByBOM
   
	oClass.InvApp = ThisApplication
	oClass.BomViewType = BOMViewTypeEnum.kPartsOnlyBOMViewType 
	
	oClass.BOM_PART_COLORMAP_MAIN()

   MsgBox("DONE!", , "BOMパーツ単位で色分け”)
	
End Sub

以上


役に立った!という記事にはぜひサポートお願いします。サポート頂けると大変に励みになります。