見出し画像

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

使い方は以下の動画を参照ください。



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