Automating Detail Views With iLogic

I converted an Inventor API sample for creating detail views to iLogic. Initially it took me 2 minutes, and I had the code working well, but the sample code is for a detail view with a rectangular boundary, as shown below.

I don’t use the rectangular version, so I spent a good 30 minutes figuring out how to get a circular boundary as shown in the animated GIF below.

Click here for higher resolution version

You may be wondering what the secret was. The CircularFence option is listed as a Boolean in the API help. This means that it’s set to “True” for circular and “False” for rectangular.

My iLogic code contains both circular and rectangular options, I have commented out the rectangular part. As the code is mostly from the Inventor API sample, it is quite well commented.

Here is the iLogic code:

'This version of iLogic code by @ClintBrown3D, based on Inventor API sample
'Originally Published at https://clintbrown.co.uk/automating-detail-views-with-ilogic

    ' Set a reference to the drawing document - This assumes a drawing document is active.
    Dim oDrawDoc As DrawingDocument
    oDrawDoc = ThisApplication.ActiveDocument

    ' Select a drawing view.
    Dim oDrawingView As DrawingView
    oDrawingView = ThisApplication.CommandManager.Pick(kDrawingViewFilter, "Select a drawing view.")
        
    'Set a reference to the active sheet.
    Dim oSheet As Sheet
    oSheet = oDrawingView.Parent

    ' Set a reference to the center of the base view.
    Dim oPoint As Point2d
    oPoint = oDrawingView.Center
    
    ' Translate point by a distance equal to the width of the view. This will be the placement point of the detail view.
    oPoint.X = oPoint.X + oDrawingView.Width
    
    ' Arbitrarily find an arc within the selected drawing view. The detail view will include this arc.
    Dim oCurve As DrawingCurve
    Dim oArcCurve As DrawingCurve
    For Each oCurve In oDrawingView.DrawingCurves
        If oCurve.CurveType = kCircularArcCurve Then
            oArcCurve = oCurve
            Exit For
        End If
    Next
    
    If Not oArcCurve Is Nothing Then ' Use the range of the arc in sheet space to calculate the detail view box.
        Dim oCornerOne As Point2d
        oCornerOne = oArcCurve.Evaluator2D.RangeBox.MinPoint
        oCornerOne.X = oCornerOne.X - 1
        oCornerOne.Y = oCornerOne.Y - 1
        
        Dim oCornerTwo As Point2d
        oCornerTwo = oArcCurve.Evaluator2D.RangeBox.MaxPoint
        oCornerTwo.X = oCornerTwo.X' + 1
        oCornerTwo.Y = oCornerTwo.Y' + 1

        Dim oDetailView As DetailDrawingView
		
		' Create the detail view with a Circular cutout
		oDetailView = oSheet.DrawingViews.AddDetailView(oDrawingView, oPoint, kFromBaseDrawingViewStyle, True, oCornerTwo, 1, , oDrawingView.Scale * 2, True,,False)

        ' Create the detail view with a rectangular box.
'		oDetailView = oSheet.DrawingViews.AddDetailView(oDrawingView, oPoint,kFromBaseDrawingViewStyle, False, oCornerOne, oCornerTwo, , oDrawingView.Scale * 2)
    Else
        MsgBox("No arc was found in the selected drawing view.")
    End If

Notes:

This version of the code was briefly tested in Inventor 2021.

Please note that I cannot offer any additional support, this blog post is offered as-is, and is aimed at the more advanced user.

As always, please test all iLogic code extensively on non-production files. Do not use any code in a production environment until YOU have thoroughly tested it and have verified that it works as expected. Always back up any data before running any experimental code. You are ultimately responsible for any iLogic code that you run, so make sure you test it thoroughly!