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
以上