Inventor / iLogic :選択したスケッチを非表示画層にするルール
Inventor Forum に「Ilogicのルールでスケッチフィーチャの表示非表示を制御できる構文は存在するのでしょうか?」という質問があった。ちょっと面白いテーマだったので、iLogicルールを作ってみた。
Inventorの図面ドキュメントの投影図に書かれた外形線は、DrawingCurveSegment というオブジェクトになっている。このオブジェクトには、Visible というプロパティがあり、True / False で表示をコントロールできる。ただし、いったん消してしまうともとに戻すのがちょっと面倒そうだ。なので、Layer プロパティを使ったルールにしてみた。つまり、選択したオブジェクトの画層を別の画層 _invisible に変更するという処理を行い、あとでその画層をON/OFFすることで表示をコントロールするやり方だ。
選択するときは、一度に複数のオブジェクトを選択したいだろうし、どれを選んだかわかるように色も変えたいと欲張ったので、ちょっと長いルールになったしまった。
Sub Main
'図面ドキュメントオブジェクトを取得
Dim oDrawDoc As DrawingDocument = Nothing
Dim invApp As Inventor.Application = ThisApplication
Try
' oDrawDoc = ThisDrawing.Document
oDrawDoc = invApp.ActiveDocument
Catch Ex As Exception
MsgBox("現在のドキュメントが図面ドキュメントではありません", , "Sample")
Exit Sub
End Try
'選択したスケッチを非表示画層に変更
Dim oDrawingCurveSegment As Inventor.DrawingCurveSegment = Nothing
Dim oLAY As Inventor.Layer = oDrawDoc.StylesManager.Layers.Item("Visible (ISO)")
Dim oLayInvisible As Inventor.Layer = Nothing
Dim oRed As Color = invApp.TransientObjects.CreateColor(255, 0, 0)
Try
oLayInvisible = oDrawDoc.StylesManager.Layers.Item("_invisible")
Catch Ex As Exception
oLayInvisible = oLAY.Copy("_invisible")
End Try
oLayInvisible.Visible = True
oLayInvisible.Color = oRed
Do
Try
oDrawingCurveSegment = invApp.CommandManager.Pick(SelectionFilterEnum.kDrawingCurveSegmentFilter, "Select Sketch (ESC to quit)")
If oDrawingCurveSegment Is Nothing Then Exit Do
oLAY = oDrawingCurveSegment.Layer
Catch ex As Exception
Exit Do
End Try
oDrawingCurveSegment.Layer = oLayInvisible
Loop
oLayInvisible.Visible = False
End Sub
使い方は以下の動画を参照ください。
役に立った!という記事にはぜひサポートお願いします。サポート頂けると大変に励みになります。