• Blog posts

    Bio

    By Luke Davenport 

    Problem:

    You want to accurately position your Inventor views in 2D sheet space.

     

    Solution:

    Some simple iLogic code to modify the XY position of your views.

     

    Explanation:

    Inventor users don’t often need to accurately position drawing views in 2D sheet space relative to each other. However there are some scenarios we’ve come across where an Inventor drawing is being exported to (or opened in) AutoCAD, and the drawing view needs to be precisely positioned with respect to some other geometry in the drawing. Simply dragging and dropping the Inventor drawing view until the position looks close enough is not an option. So let’s use some simple iLogic code to set the position.

     

    Notes: This code only moves the view to the position specified by the user, it doesn’t lock the position of the view. As far as I’m aware locking the view position (and preventing a user from dragging a view around) is not possible in Inventor (if you know how – let me know!). What the code does do is sets the View Justification to be Fixed, which helps a little with keeping drawing views where they are supposed to be. See this great article from Design and Motion for more info on this setting:

     

    http://bit.ly/1BFjX3X

     

    iLogic Code:

    ' This code allows user to accurately set the lower left corner position of drawing view 1 and drawing view 2 on sheet 1

    ' Be careful when copying and pasting – don’t introduce new lines accidentally……

     

    Dim oView As DrawingView = Nothing

    Dim oBasePosition As Point2d = Nothing

    Dim Title As String = "Cadline iLogic"

    Dim oDrawingViews As DrawingViews = ThisApplication.ActiveDocument.Sheets.Item(1).DrawingViews

    Dim XPos As String

    Dim YPos As String

     

    ' Loop through first two drawing views in first sheet

    For i = 1 To oDrawingViews.Count

       

        ' Reset values for X and Y positions

        XPos = "a"

        YPos = "a"

       

        ' Define drawing view

        oView = oDrawingViews.Item(i)

       

        ' Get user input for X co-ordinate

        Do While Not IsNumeric(XPos)

            XPos = InputBox("Enter X co-ordinate for View " & i & " (" & oView.Name & ")", Title, "50")

            If XPos = "" Then

                Return

            End If

        Loop

           

        ' Get user input for Y co-ordinate

        Do While Not IsNumeric(YPos)

            YPos = InputBox("Enter Y co-ordinate for View " & i & " (" & oView.Name & ")", Title, "50")

            If YPos = "" Then

                Return

            End If

        Loop

       

        ' Correct units

        XPos /= 10

        YPos /= 10

       

        ' Create a new point to move the baseview to.

        oBasePosition = ThisApplication.TransientGeometry.CreatePoint2d()

        oBasePosition.X = XPos + (oView.Width/2)

        oBasePosition.Y = YPos + (oView.Height/2)

       

        'Move the baseview to the new position

        oView.Position = oBasePosition

       

        ' Ensure that the geometry in this view will not move if new geometry is added (and the view size changes as a result)

        ' Note this doesn't prevent a user dragging the view around!

        oView.ViewJustification = ViewJustificationEnum.kFixedViewJustification

     

    Next