<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: I need help: Hole alignment checker for misaligned holes in Inventor Programming Forum</title>
    <link>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8576591#M79231</link>
    <description>&lt;P&gt;sorry I have never posted a file on here. this&amp;nbsp;file has code ran once on it&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 06 Feb 2019 12:03:40 GMT</pubDate>
    <dc:creator>Anonymous</dc:creator>
    <dc:date>2019-02-06T12:03:40Z</dc:date>
    <item>
      <title>I need help: Hole alignment checker for misaligned holes</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8573734#M79222</link>
      <description>&lt;P&gt;We recently had a problem with a job at work. where a few of the holes on a bar did not align with the sheet it was bolted to. no one noticed till after we&amp;nbsp;received&amp;nbsp;the parts from the&amp;nbsp;machine shop. One of my friends was telling me about solid works&amp;nbsp;hole alignment checker.&amp;nbsp; I was wondering could I simulate this so I started searching the forums and this what i&amp;nbsp;found.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://forums.autodesk.com/t5/inventor-customization/axial-alignment-of-holes/m-p/7203162" target="_blank" rel="noopener"&gt;https://forums.autodesk.com/t5/inventor-customization/axial-alignment-of-holes/m-p/7203162&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;I am New to VBA&amp;nbsp;so I truly do not understand it the code 100%. when I place the code in inventor says it no longer supports set command.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;(Could this be done using Ilogic)&lt;/STRONG&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 05 Feb 2019 12:16:15 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8573734#M79222</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-02-05T12:16:15Z</dc:date>
    </item>
    <item>
      <title>Re: I need help: Hole alignment checker for misaligned holes</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8574136#M79223</link>
      <description>&lt;P&gt;Hi&amp;nbsp;@Anonymous&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The code listed in that thread starts off as VBA (you can tell this because they make use of "set") and then migrates to VB.NET (which should work within Inventor's iLogic toolset):&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;Private Sub Body_Faces()
        Dim m_Inventor As Inventor.Application
        m_Inventor = System.Runtime.InteropServices.Marshal.GetActiveObject("Inventor.Application")

        If System.IO.File.Exists("c:\Temp\Bohrungen.txt") Then
            System.IO.File.Delete("c:\Temp\Bohrungen.txt")
        End If


        Dim file As System.IO.StreamWriter
        file = My.Computer.FileSystem.OpenTextFileWriter("c:\Temp\Bohrungen.txt", True)

        Dim oDoc As AssemblyDocument
        oDoc = m_Inventor.ActiveDocument

        Dim oCompdef As AssemblyComponentDefinition
        oCompdef = oDoc.ComponentDefinition

        Dim oBody1 As SurfaceBody
        Dim oBody2 As SurfaceBody

        oBody1 = m_Inventor.CommandManager.Pick(SelectionFilterEnum.kPartBodyFilter, "Select first body")
        oBody2 = m_Inventor.CommandManager.Pick(SelectionFilterEnum.kPartBodyFilter, "Select a body to compare")

        Dim oFace1 As Face
        Dim oFace2 As Face
        Dim oFaceColl1 As ObjectCollection
        oFaceColl1 = m_Inventor.TransientObjects.CreateObjectCollection()
        Dim oFaceColl2 As ObjectCollection
        oFaceColl2 = m_Inventor.TransientObjects.CreateObjectCollection()
        Dim oAxis1 As WorkAxis
        Dim oAxisColl1 As ObjectCollection
        oAxisColl1 = m_Inventor.TransientObjects.CreateObjectCollection()
        Dim oAxis2 As WorkAxis
        Dim oAxisColl2 As ObjectCollection
        oAxisColl2 = m_Inventor.TransientObjects.CreateObjectCollection()

        For Each oFace1 In oBody1.Faces
            If oFace1.SurfaceType = SurfaceTypeEnum.kCylinderSurface Then
                oAxis1 = oCompdef.WorkAxes.AddFixed(oFace1.Geometry.BasePoint, oFace1.Geometry.AxisVector)

                If IsAxisDuplicate(oAxis1, oAxisColl1) = False Then

                    oAxisColl1.Add(oAxis1)
                    oFaceColl1.Add(oFace1)

                Else
                    oAxis1.Delete()
                End If
            End If
        Next

        For Each oFace2 In oBody2.Faces
            If oFace2.SurfaceType = SurfaceTypeEnum.kCylinderSurface Then
                oAxis2 = oCompdef.WorkAxes.AddFixed(oFace2.Geometry.BasePoint, oFace2.Geometry.AxisVector)

                If IsAxisDuplicate(oAxis2, oAxisColl2) = False Then

                    oAxisColl2.Add(oAxis2)
                    oFaceColl2.Add(oFace2)

                Else
                    oAxis2.Delete()
                End If
            End If
        Next

        For i As Integer = 1 To oAxisColl1.Count
            oAxis1 = oAxisColl1.Item(i)
            Dim j As Integer = 0
            j = CompareAlignment(oAxis1, oAxisColl2)
            If j &amp;gt; 0 Then
                oFace1 = oFaceColl1.Item(i)
                oFace2 = oFaceColl2.Item(j)
                CompareFace(oFace1, oFace2, file)
                oFace1.AttributeSets.Add("Aligned")
                oFace2.AttributeSets.Add("Aligned")
            End If
        Next

        For Each oFace1 In oFaceColl1
            If oFace1.AttributeSets.Count = 0 Then
                Dim oHoleFeature As HoleFeature
                oHoleFeature = oFace1.CreatedByFeature

                Dim dia As Double
                dia = oHoleFeature.HoleDiameter.Value * 10 ' Converting cm to mm
                file.WriteLine("Hole diameter of plate 1 = " &amp;amp; "Ø" &amp;amp; dia &amp;amp; " - " &amp;amp; oHoleFeature.ExtendedName &amp;amp; " =&amp;gt; misaligned")
            End If
        Next

        For Each oFace2 In oFaceColl2
            If oFace2.AttributeSets.Count = 0 Then
                Dim oHoleFeature As HoleFeature
                oHoleFeature = oFace2.CreatedByFeature

                Dim dia As Double
                dia = oHoleFeature.HoleDiameter.Value * 10 ' Converting cm to mm
                file.WriteLine("Hole diameter of plate 2 = " &amp;amp; "Ø" &amp;amp; dia &amp;amp; " - " &amp;amp; oHoleFeature.ExtendedName &amp;amp; " =&amp;gt; misaligned")
            End If
        Next

        CleanAxis(oAxisColl1)
        CleanAxis(oAxisColl2)

        m_Inventor.StatusBarText = "Ausgabe in  c:\Temp\Bohrungen.txt"
        file.Close()
        Process.Start("c:\Temp\Bohrungen.txt")

    End Sub
    Public Sub CleanAxis(ByVal oAxisColl As ObjectCollection)
        For Each oAxis As WorkAxis In oAxisColl
            oAxis.Delete()
        Next
    End Sub
    Public Sub CompareFace(ByVal oFace1 As Face, ByVal oFace2 As Face, ByVal file As System.IO.StreamWriter)

        Dim oHoleFeature1 As HoleFeature
        oHoleFeature1 = oFace1.CreatedByFeature

        Dim dia1 As Double
        dia1 = oHoleFeature1.HoleDiameter.Value
        dia1 = dia1 * 10 'Converting cm to mm

        Dim oHoleFeature2 As HoleFeature
        oHoleFeature2 = oFace2.CreatedByFeature

        Dim dia2 As Double
        dia2 = oHoleFeature2.HoleDiameter.Value
        dia2 = dia2 * 10 'Converting cm to mm

        If Math.Round(dia1, 4) = Math.Round(dia2, 4) Then
            Debug.Print("Hole diameter of plate 1 = " &amp;amp; dia1 &amp;amp; " compared with Hole diameter of plate 2 = " &amp;amp; dia2 &amp;amp; " =&amp;gt; OK - Default")
            file.WriteLine("Hole diameter of plate 1 = " &amp;amp; "Ø" &amp;amp; dia1 &amp;amp; " - " &amp;amp; oHoleFeature1.ExtendedName &amp;amp; " compared with Hole diameter of plate 2 = " &amp;amp; "Ø" &amp;amp; dia2 &amp;amp; " - " &amp;amp; oHoleFeature2.ExtendedName &amp;amp; " =&amp;gt; OK - Default")
        ElseIf Math.Round(dia1, 4) &amp;gt;= Math.Round(dia2, 4) And Math.Round(dia1, 4) &amp;lt;= Math.Round(dia2, 4) + 0.5 Then
            Debug.Print("Hole diameter of plate 1 = " &amp;amp; dia1 &amp;amp; " compared with Hole diameter of plate 2 = " &amp;amp; dia2 &amp;amp; " =&amp;gt; OK - Special Type")
            file.WriteLine("Hole diameter of plate 1 = " &amp;amp; "Ø" &amp;amp; dia1 &amp;amp; " - " &amp;amp; oHoleFeature1.ExtendedName &amp;amp; " compared with Hole diameter of plate 2 = " &amp;amp; "Ø" &amp;amp; dia2 &amp;amp; " - " &amp;amp; oHoleFeature2.ExtendedName &amp;amp; " =&amp;gt; OK - Special Type")
        Else
            Debug.Print("Hole diameter of plate 1 = " &amp;amp; dia1 &amp;amp; " compared with Hole diameter of plate 2 = " &amp;amp; dia2 &amp;amp; " =&amp;gt; Not OK")
            file.WriteLine("Hole diameter of plate 1 = " &amp;amp; "Ø" &amp;amp; dia1 &amp;amp; " - " &amp;amp; oHoleFeature1.ExtendedName &amp;amp; " compared with Hole diameter of plate 2 = " &amp;amp; "Ø" &amp;amp; dia2 &amp;amp; " - " &amp;amp; oHoleFeature2.ExtendedName &amp;amp; " =&amp;gt; Not OK")
        End If
    End Sub
    Public Function CompareAlignment(ByVal oAxis As WorkAxis, ByVal oAxisCollection As ObjectCollection) As Integer
        For i As Integer = 1 To oAxisCollection.Count
            Dim axis As WorkAxis
            axis = oAxisCollection.Item(i)
            If oAxis.Line.IsColinearTo(axis.Line) Then
                Return i
                Exit Function
            End If
        Next

        Return 0
    End Function

    Public Function IsAxisDuplicate(ByVal oAxis As WorkAxis, ByVal oAxisColl As ObjectCollection) As Boolean
        If oAxisColl.Count &amp;gt; 0 Then
            For i As Integer = 1 To oAxisColl.Count
                Dim Axis As WorkAxis
                Axis = oAxisColl.Item(i)
                If Axis.Line.IsColinearTo(oAxis.Line) Then
                    Return True
                End If
            Next
            Return False
        Else
            Return False
        End If
    End Function&lt;/PRE&gt;
&lt;P&gt;If you have some sample files or a pack &amp;amp; go assembly you can share that might help me/anyone else test that my above iLogic statement is in fact true.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Alex.&lt;/P&gt;</description>
      <pubDate>Tue, 05 Feb 2019 14:31:18 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8574136#M79223</guid>
      <dc:creator>AlexFielder</dc:creator>
      <dc:date>2019-02-05T14:31:18Z</dc:date>
    </item>
    <item>
      <title>Re: I need help: Hole alignment checker for misaligned holes</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8574503#M79224</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Align error.PNG" style="width: 999px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/599532i48440520CE9686EE/image-size/large?v=v2&amp;amp;px=999" role="button" title="Align error.PNG" alt="Align error.PNG" /&gt;&lt;/span&gt;This is the error I'm receiving. i assume it has to do with the way it is calling out the objects. thank you for the help&lt;/P&gt;</description>
      <pubDate>Tue, 05 Feb 2019 16:21:34 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8574503#M79224</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-02-05T16:21:34Z</dc:date>
    </item>
    <item>
      <title>Re: I need help: Hole alignment checker for misaligned holes</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8574517#M79225</link>
      <description>&lt;P&gt;That's easy* - simply change the first method to "Sub Main()" and it'll work.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This usually happens when you copy in a pure VB.NET (or VBA) rule. iLogic will throw this message as it effectively compiles the rule into a .dll of its own, so needs "Sub Main()" to know where the entry point is when you're using "Sub" or "Function" methods.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;*It's only easy if you know how.&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 05 Feb 2019 16:25:21 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8574517#M79225</guid>
      <dc:creator>AlexFielder</dc:creator>
      <dc:date>2019-02-05T16:25:21Z</dc:date>
    </item>
    <item>
      <title>Re: I need help: Hole alignment checker for misaligned holes</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8574905#M79226</link>
      <description>&lt;P&gt;Thank you for all the help i have minor issues now, sub main was the key to get it working.&lt;/P&gt;
&lt;P&gt;so know&amp;nbsp; all the code is not triggering its giving an error&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;main&lt;/SPAN&gt;()
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;Application&lt;/SPAN&gt;
        &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt; = &lt;SPAN&gt;System&lt;/SPAN&gt;.&lt;SPAN&gt;Runtime&lt;/SPAN&gt;.&lt;SPAN&gt;InteropServices&lt;/SPAN&gt;.&lt;SPAN&gt;Marshal&lt;/SPAN&gt;.&lt;SPAN&gt;GetActiveObject&lt;/SPAN&gt;(&lt;SPAN&gt;"Inventor.Application"&lt;/SPAN&gt;)

        &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;System&lt;/SPAN&gt;.&lt;SPAN&gt;IO&lt;/SPAN&gt;.&lt;SPAN&gt;File&lt;/SPAN&gt;.&lt;SPAN&gt;Exists&lt;/SPAN&gt;(&lt;SPAN&gt;"c:\Temp\Bohrungen.txt"&lt;/SPAN&gt;) &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;System&lt;/SPAN&gt;.&lt;SPAN&gt;IO&lt;/SPAN&gt;.&lt;SPAN&gt;File&lt;/SPAN&gt;.&lt;SPAN&gt;Delete&lt;/SPAN&gt;(&lt;SPAN&gt;"c:\Temp\Bohrungen.txt"&lt;/SPAN&gt;)
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;


        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;file&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;System&lt;/SPAN&gt;.&lt;SPAN&gt;IO&lt;/SPAN&gt;.&lt;SPAN&gt;StreamWriter&lt;/SPAN&gt;
        &lt;SPAN&gt;file&lt;/SPAN&gt; = &lt;SPAN&gt;My&lt;/SPAN&gt;.&lt;SPAN&gt;Computer&lt;/SPAN&gt;.&lt;SPAN&gt;FileSystem&lt;/SPAN&gt;.&lt;SPAN&gt;OpenTextFileWriter&lt;/SPAN&gt;(&lt;SPAN&gt;"c:\Temp\Bohrungen.txt"&lt;/SPAN&gt;, &lt;SPAN&gt;True&lt;/SPAN&gt;)

        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oDoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyDocument&lt;/SPAN&gt;
        &lt;SPAN&gt;oDoc&lt;/SPAN&gt; = &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;ActiveDocument&lt;/SPAN&gt;

        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oCompdef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyComponentDefinition&lt;/SPAN&gt;
        &lt;SPAN&gt;oCompdef&lt;/SPAN&gt; = &lt;SPAN&gt;oDoc&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;

        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oBody1&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oBody2&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt;

        &lt;SPAN&gt;oBody1&lt;/SPAN&gt; = &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;CommandManager&lt;/SPAN&gt;.&lt;SPAN&gt;Pick&lt;/SPAN&gt;(&lt;SPAN&gt;SelectionFilterEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kPartBodyFilter&lt;/SPAN&gt;, &lt;SPAN&gt;"Select first body"&lt;/SPAN&gt;)
        &lt;SPAN&gt;oBody2&lt;/SPAN&gt; = &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;CommandManager&lt;/SPAN&gt;.&lt;SPAN&gt;Pick&lt;/SPAN&gt;(&lt;SPAN&gt;SelectionFilterEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kPartBodyFilter&lt;/SPAN&gt;, &lt;SPAN&gt;"Select a body to compare"&lt;/SPAN&gt;)

        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oFace1&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Face&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oFace2&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Face&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oFaceColl1&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt;
        &lt;SPAN&gt;oFaceColl1&lt;/SPAN&gt; = &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;.&lt;SPAN&gt;CreateObjectCollection&lt;/SPAN&gt;()
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oFaceColl2&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt;
        &lt;SPAN&gt;oFaceColl2&lt;/SPAN&gt; = &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;.&lt;SPAN&gt;CreateObjectCollection&lt;/SPAN&gt;()
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oAxis1&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;WorkAxis&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oAxisColl1&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt;
        &lt;SPAN&gt;oAxisColl1&lt;/SPAN&gt; = &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;.&lt;SPAN&gt;CreateObjectCollection&lt;/SPAN&gt;()
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oAxis2&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;WorkAxis&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oAxisColl2&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt;
        &lt;SPAN&gt;oAxisColl2&lt;/SPAN&gt; = &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;.&lt;SPAN&gt;CreateObjectCollection&lt;/SPAN&gt;()

        &lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oFace1&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oBody1&lt;/SPAN&gt;.&lt;SPAN&gt;Faces&lt;/SPAN&gt;
            &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oFace1&lt;/SPAN&gt;.&lt;SPAN&gt;SurfaceType&lt;/SPAN&gt; = &lt;SPAN&gt;SurfaceTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kCylinderSurface&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
                &lt;SPAN&gt;oAxis1&lt;/SPAN&gt; = &lt;SPAN&gt;oCompdef&lt;/SPAN&gt;.&lt;SPAN&gt;WorkAxes&lt;/SPAN&gt;.&lt;SPAN&gt;AddFixed&lt;/SPAN&gt;(&lt;SPAN&gt;oFace1&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;BasePoint&lt;/SPAN&gt;, &lt;SPAN&gt;oFace1&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;AxisVector&lt;/SPAN&gt;)

                &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;IsAxisDuplicate&lt;/SPAN&gt;(&lt;SPAN&gt;oAxis1&lt;/SPAN&gt;, &lt;SPAN&gt;oAxisColl1&lt;/SPAN&gt;) = &lt;SPAN&gt;False&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;

                    &lt;SPAN&gt;oAxisColl1&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;oAxis1&lt;/SPAN&gt;)
                    &lt;SPAN&gt;oFaceColl1&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;oFace1&lt;/SPAN&gt;)

                &lt;SPAN&gt;Else&lt;/SPAN&gt;
                    &lt;SPAN&gt;oAxis1&lt;/SPAN&gt;.&lt;SPAN&gt;Delete&lt;/SPAN&gt;()
                &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
        &lt;SPAN&gt;Next&lt;/SPAN&gt;

        &lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oFace2&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oBody2&lt;/SPAN&gt;.&lt;SPAN&gt;Faces&lt;/SPAN&gt;
            &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oFace2&lt;/SPAN&gt;.&lt;SPAN&gt;SurfaceType&lt;/SPAN&gt; = &lt;SPAN&gt;SurfaceTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kCylinderSurface&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
                &lt;SPAN&gt;oAxis2&lt;/SPAN&gt; = &lt;SPAN&gt;oCompdef&lt;/SPAN&gt;.&lt;SPAN&gt;WorkAxes&lt;/SPAN&gt;.&lt;SPAN&gt;AddFixed&lt;/SPAN&gt;(&lt;SPAN&gt;oFace2&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;BasePoint&lt;/SPAN&gt;, &lt;SPAN&gt;oFace2&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;AxisVector&lt;/SPAN&gt;)

                &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;IsAxisDuplicate&lt;/SPAN&gt;(&lt;SPAN&gt;oAxis2&lt;/SPAN&gt;, &lt;SPAN&gt;oAxisColl2&lt;/SPAN&gt;) = &lt;SPAN&gt;False&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;

                    &lt;SPAN&gt;oAxisColl2&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;oAxis2&lt;/SPAN&gt;)
                    &lt;SPAN&gt;oFaceColl2&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;oFace2&lt;/SPAN&gt;)

                &lt;SPAN&gt;Else&lt;/SPAN&gt;
                    &lt;SPAN&gt;oAxis2&lt;/SPAN&gt;.&lt;SPAN&gt;Delete&lt;/SPAN&gt;()
                &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
        &lt;SPAN&gt;Next&lt;/SPAN&gt;

        &lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;i&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt; = 1 &lt;SPAN&gt;To&lt;/SPAN&gt; &lt;SPAN&gt;oAxisColl1&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt;
            &lt;SPAN&gt;oAxis1&lt;/SPAN&gt; = &lt;SPAN&gt;oAxisColl1&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;)
            &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;j&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt; = 0
            &lt;SPAN&gt;j&lt;/SPAN&gt; = &lt;SPAN&gt;CompareAlignment&lt;/SPAN&gt;(&lt;SPAN&gt;oAxis1&lt;/SPAN&gt;, &lt;SPAN&gt;oAxisColl2&lt;/SPAN&gt;)
            &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;j&lt;/SPAN&gt; &amp;gt; 0 &lt;SPAN&gt;Then&lt;/SPAN&gt;
                &lt;SPAN&gt;oFace1&lt;/SPAN&gt; = &lt;SPAN&gt;oFaceColl1&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;)
                &lt;SPAN&gt;oFace2&lt;/SPAN&gt; = &lt;SPAN&gt;oFaceColl2&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;j&lt;/SPAN&gt;)
                &lt;SPAN&gt;CompareFace&lt;/SPAN&gt;(&lt;SPAN&gt;oFace1&lt;/SPAN&gt;, &lt;SPAN&gt;oFace2&lt;/SPAN&gt;, &lt;SPAN&gt;file&lt;/SPAN&gt;)
                &lt;SPAN&gt;oFace1&lt;/SPAN&gt;.&lt;SPAN&gt;AttributeSets&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;"Aligned"&lt;/SPAN&gt;)
                &lt;SPAN&gt;oFace2&lt;/SPAN&gt;.&lt;SPAN&gt;AttributeSets&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;"Aligned"&lt;/SPAN&gt;)
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
        &lt;SPAN&gt;Next&lt;/SPAN&gt;

        &lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oFace1&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oFaceColl1&lt;/SPAN&gt;
            &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oFace1&lt;/SPAN&gt;.&lt;SPAN&gt;AttributeSets&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt; = 0 &lt;SPAN&gt;Then&lt;/SPAN&gt;
                &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oHoleFeature&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;HoleFeature&lt;/SPAN&gt;
                &lt;SPAN&gt;oHoleFeature&lt;/SPAN&gt; = &lt;SPAN&gt;oFace1&lt;/SPAN&gt;.&lt;SPAN&gt;CreatedByFeature&lt;/SPAN&gt;

                &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;dia&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;
                &lt;SPAN&gt;dia&lt;/SPAN&gt; = &lt;SPAN&gt;oHoleFeature&lt;/SPAN&gt;.&lt;SPAN&gt;HoleDiameter&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt; * 10 &lt;SPAN&gt;' Converting cm to mm&lt;/SPAN&gt;
                &lt;SPAN&gt;file&lt;/SPAN&gt;.&lt;SPAN&gt;WriteLine&lt;/SPAN&gt;(&lt;SPAN&gt;"Hole diameter of plate 1 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"Ø"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" - "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oHoleFeature&lt;/SPAN&gt;.&lt;SPAN&gt;ExtendedName&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" =&amp;gt; misaligned"&lt;/SPAN&gt;)
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
        &lt;SPAN&gt;Next&lt;/SPAN&gt;

        &lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oFace2&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oFaceColl2&lt;/SPAN&gt;
            &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oFace2&lt;/SPAN&gt;.&lt;SPAN&gt;AttributeSets&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt; = 0 &lt;SPAN&gt;Then&lt;/SPAN&gt;
                &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oHoleFeature&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;HoleFeature&lt;/SPAN&gt;
                &lt;SPAN&gt;oHoleFeature&lt;/SPAN&gt; = &lt;SPAN&gt;oFace2&lt;/SPAN&gt;.&lt;SPAN&gt;CreatedByFeature&lt;/SPAN&gt;

                &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;dia&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;
                &lt;SPAN&gt;dia&lt;/SPAN&gt; = &lt;SPAN&gt;oHoleFeature&lt;/SPAN&gt;.&lt;SPAN&gt;HoleDiameter&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt; * 10 &lt;SPAN&gt;' Converting cm to mm&lt;/SPAN&gt;
                &lt;SPAN&gt;file&lt;/SPAN&gt;.&lt;SPAN&gt;WriteLine&lt;/SPAN&gt;(&lt;SPAN&gt;"Hole diameter of plate 2 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"Ø"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" - "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oHoleFeature&lt;/SPAN&gt;.&lt;SPAN&gt;ExtendedName&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" =&amp;gt; misaligned"&lt;/SPAN&gt;)
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
        &lt;SPAN&gt;Next&lt;/SPAN&gt;

        &lt;SPAN&gt;CleanAxis&lt;/SPAN&gt;(&lt;SPAN&gt;oAxisColl1&lt;/SPAN&gt;)
        &lt;SPAN&gt;CleanAxis&lt;/SPAN&gt;(&lt;SPAN&gt;oAxisColl2&lt;/SPAN&gt;)

        &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;StatusBarText&lt;/SPAN&gt; = &lt;SPAN&gt;"Ausgabe in  c:\Temp\Bohrungen.txt"&lt;/SPAN&gt;
        &lt;SPAN&gt;file&lt;/SPAN&gt;.&lt;SPAN&gt;Close&lt;/SPAN&gt;()
        &lt;SPAN&gt;Process&lt;/SPAN&gt;.&lt;SPAN&gt;Start&lt;/SPAN&gt;(&lt;SPAN&gt;"c:\Temp\Bohrungen.txt"&lt;/SPAN&gt;)

    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;
    &lt;SPAN&gt;Public&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;CleanAxis&lt;/SPAN&gt;(&lt;SPAN&gt;ByVal&lt;/SPAN&gt; &lt;SPAN&gt;oAxisColl&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt;)
        &lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oAxis&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;WorkAxis&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oAxisColl&lt;/SPAN&gt;
            &lt;SPAN&gt;oAxis&lt;/SPAN&gt;.&lt;SPAN&gt;Delete&lt;/SPAN&gt;()
        &lt;SPAN&gt;Next&lt;/SPAN&gt;
    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;
    &lt;SPAN&gt;Public&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;CompareFace&lt;/SPAN&gt;(&lt;SPAN&gt;ByVal&lt;/SPAN&gt; &lt;SPAN&gt;oFace1&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Face&lt;/SPAN&gt;, &lt;SPAN&gt;ByVal&lt;/SPAN&gt; &lt;SPAN&gt;oFace2&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Face&lt;/SPAN&gt;, &lt;SPAN&gt;ByVal&lt;/SPAN&gt; &lt;SPAN&gt;File&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;System&lt;/SPAN&gt;.&lt;SPAN&gt;IO&lt;/SPAN&gt;.&lt;SPAN&gt;StreamWriter&lt;/SPAN&gt;)

        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oHoleFeature1&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;HoleFeature&lt;/SPAN&gt;
        &lt;SPAN&gt;oHoleFeature1&lt;/SPAN&gt; = &lt;SPAN&gt;oFace1&lt;/SPAN&gt;.&lt;SPAN&gt;CreatedByFeature&lt;/SPAN&gt;

        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;dia1&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;
        &lt;SPAN&gt;dia1&lt;/SPAN&gt; = &lt;SPAN&gt;oHoleFeature1&lt;/SPAN&gt;.&lt;SPAN&gt;HoleDiameter&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;
        &lt;SPAN&gt;dia1&lt;/SPAN&gt; = &lt;SPAN&gt;dia1&lt;/SPAN&gt; * 10 &lt;SPAN&gt;'Converting cm to mm&lt;/SPAN&gt;

        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oHoleFeature2&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;HoleFeature&lt;/SPAN&gt;
        &lt;SPAN&gt;oHoleFeature2&lt;/SPAN&gt; = &lt;SPAN&gt;oFace2&lt;/SPAN&gt;.&lt;SPAN&gt;CreatedByFeature&lt;/SPAN&gt;

        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;dia2&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;
        &lt;SPAN&gt;dia2&lt;/SPAN&gt; = &lt;SPAN&gt;oHoleFeature2&lt;/SPAN&gt;.&lt;SPAN&gt;HoleDiameter&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;
        &lt;SPAN&gt;dia2&lt;/SPAN&gt; = &lt;SPAN&gt;dia2&lt;/SPAN&gt; * 10 &lt;SPAN&gt;'Converting cm to mm&lt;/SPAN&gt;

        &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;dia1&lt;/SPAN&gt;, 4) = &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;dia2&lt;/SPAN&gt;, 4) &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;Debug&lt;/SPAN&gt;.&lt;SPAN&gt;Print&lt;/SPAN&gt;(&lt;SPAN&gt;"Hole diameter of plate 1 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia1&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" compared with Hole diameter of plate 2 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia2&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" =&amp;gt; OK - Default"&lt;/SPAN&gt;)
            &lt;SPAN&gt;file&lt;/SPAN&gt;.&lt;SPAN&gt;WriteLine&lt;/SPAN&gt;(&lt;SPAN&gt;"Hole diameter of plate 1 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"Ø"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia1&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" - "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oHoleFeature1&lt;/SPAN&gt;.&lt;SPAN&gt;ExtendedName&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" compared with Hole diameter of plate 2 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"Ø"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia2&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" - "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oHoleFeature2&lt;/SPAN&gt;.&lt;SPAN&gt;ExtendedName&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" =&amp;gt; OK - Default"&lt;/SPAN&gt;)
        &lt;SPAN&gt;ElseIf&lt;/SPAN&gt; &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;dia1&lt;/SPAN&gt;, 4) &amp;gt;= &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;dia2&lt;/SPAN&gt;, 4) &lt;SPAN&gt;And&lt;/SPAN&gt; &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;dia1&lt;/SPAN&gt;, 4) &amp;lt;= &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;dia2&lt;/SPAN&gt;, 4) + 0.5 &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;Debug&lt;/SPAN&gt;.&lt;SPAN&gt;Print&lt;/SPAN&gt;(&lt;SPAN&gt;"Hole diameter of plate 1 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia1&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" compared with Hole diameter of plate 2 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia2&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" =&amp;gt; OK - Special Type"&lt;/SPAN&gt;)
            &lt;SPAN&gt;file&lt;/SPAN&gt;.&lt;SPAN&gt;WriteLine&lt;/SPAN&gt;(&lt;SPAN&gt;"Hole diameter of plate 1 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"Ø"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia1&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" - "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oHoleFeature1&lt;/SPAN&gt;.&lt;SPAN&gt;ExtendedName&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" compared with Hole diameter of plate 2 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"Ø"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia2&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" - "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oHoleFeature2&lt;/SPAN&gt;.&lt;SPAN&gt;ExtendedName&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" =&amp;gt; OK - Special Type"&lt;/SPAN&gt;)
        &lt;SPAN&gt;Else&lt;/SPAN&gt;
            &lt;SPAN&gt;Debug&lt;/SPAN&gt;.&lt;SPAN&gt;Print&lt;/SPAN&gt;(&lt;SPAN&gt;"Hole diameter of plate 1 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia1&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" compared with Hole diameter of plate 2 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia2&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" =&amp;gt; Not OK"&lt;/SPAN&gt;)
            &lt;SPAN&gt;file&lt;/SPAN&gt;.&lt;SPAN&gt;WriteLine&lt;/SPAN&gt;(&lt;SPAN&gt;"Hole diameter of plate 1 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"Ø"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia1&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" - "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oHoleFeature1&lt;/SPAN&gt;.&lt;SPAN&gt;ExtendedName&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" compared with Hole diameter of plate 2 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"Ø"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia2&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" - "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oHoleFeature2&lt;/SPAN&gt;.&lt;SPAN&gt;ExtendedName&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" =&amp;gt; Not OK"&lt;/SPAN&gt;)
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;
    &lt;SPAN&gt;Public&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;CompareAlignment&lt;/SPAN&gt;(&lt;SPAN&gt;ByVal&lt;/SPAN&gt; &lt;SPAN&gt;oAxis&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;WorkAxis&lt;/SPAN&gt;, &lt;SPAN&gt;ByVal&lt;/SPAN&gt; &lt;SPAN&gt;oAxisCollection&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt;) &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt;
        &lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;i&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt; = 1 &lt;SPAN&gt;To&lt;/SPAN&gt; &lt;SPAN&gt;oAxisCollection&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt;
            &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;axis&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;WorkAxis&lt;/SPAN&gt;
            &lt;SPAN&gt;axis&lt;/SPAN&gt; = &lt;SPAN&gt;oAxisCollection&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;)
            &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oAxis&lt;/SPAN&gt;.&lt;SPAN&gt;Line&lt;/SPAN&gt;.&lt;SPAN&gt;IsColinearTo&lt;/SPAN&gt;(&lt;SPAN&gt;axis&lt;/SPAN&gt;.&lt;SPAN&gt;Line&lt;/SPAN&gt;) &lt;SPAN&gt;Then&lt;/SPAN&gt;
                &lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;i&lt;/SPAN&gt;
                &lt;SPAN&gt;Exit&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
        &lt;SPAN&gt;Next&lt;/SPAN&gt;

        &lt;SPAN&gt;Return&lt;/SPAN&gt; 0
    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;

    &lt;SPAN&gt;Public&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;IsAxisDuplicate&lt;/SPAN&gt;(&lt;SPAN&gt;ByVal&lt;/SPAN&gt; &lt;SPAN&gt;oAxis&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;WorkAxis&lt;/SPAN&gt;, &lt;SPAN&gt;ByVal&lt;/SPAN&gt; &lt;SPAN&gt;oAxisColl&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt;) &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Boolean&lt;/SPAN&gt;
        &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oAxisColl&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt; &amp;gt; 0 &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;i&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt; = 1 &lt;SPAN&gt;To&lt;/SPAN&gt; &lt;SPAN&gt;oAxisColl&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt;
                &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;Axis&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;WorkAxis&lt;/SPAN&gt;
                &lt;SPAN&gt;Axis&lt;/SPAN&gt; = &lt;SPAN&gt;oAxisColl&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;)
                &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Axis&lt;/SPAN&gt;.&lt;SPAN&gt;Line&lt;/SPAN&gt;.&lt;SPAN&gt;IsColinearTo&lt;/SPAN&gt;(&lt;SPAN&gt;oAxis&lt;/SPAN&gt;.&lt;SPAN&gt;Line&lt;/SPAN&gt;) &lt;SPAN&gt;Then&lt;/SPAN&gt;
                    &lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;True&lt;/SPAN&gt;
                &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
            &lt;SPAN&gt;Next&lt;/SPAN&gt;
            &lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;False&lt;/SPAN&gt;
        &lt;SPAN&gt;Else&lt;/SPAN&gt;
            &lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;False&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="error 1.PNG" style="width: 999px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/599596iCD37321E33AD7C3E/image-size/large?v=v2&amp;amp;px=999" role="button" title="error 1.PNG" alt="error 1.PNG" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="error 2.PNG" style="width: 999px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/599597i242CB084FB079E2F/image-size/large?v=v2&amp;amp;px=999" role="button" title="error 2.PNG" alt="error 2.PNG" /&gt;&lt;/span&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 05 Feb 2019 18:55:02 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8574905#M79226</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-02-05T18:55:02Z</dc:date>
    </item>
    <item>
      <title>Re: I need help: Hole alignment checker for misaligned holes</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8576272#M79227</link>
      <description>&lt;P&gt;It's probably due to the VB.NET code originally having been written to control Inventor from an external .exe - here's a diff I just made with my suggested changes:&lt;/P&gt;
&lt;P&gt;&lt;A href="https://www.diffchecker.com/aFbbGegb" target="_blank"&gt;https://www.diffchecker.com/aFbbGegb&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;and here's the changed code:&lt;/P&gt;
&lt;PRE&gt;Sub main()
        
        If System.IO.File.Exists("c:\Temp\Bohrungen.txt") Then
            System.IO.File.Delete("c:\Temp\Bohrungen.txt")
        End If


        Dim file As System.IO.StreamWriter
        file = My.Computer.FileSystem.OpenTextFileWriter("c:\Temp\Bohrungen.txt", True)

        Dim oDoc As AssemblyDocument
        oDoc = ThisApplication.ActiveDocument

        Dim oCompdef As AssemblyComponentDefinition
        oCompdef = oDoc.ComponentDefinition

        Dim oBody1 As SurfaceBody
        Dim oBody2 As SurfaceBody

        oBody1 = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kPartBodyFilter, "Select first body")
        oBody2 = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kPartBodyFilter, "Select a body to compare")

        Dim oFace1 As Face
        Dim oFace2 As Face
        Dim oFaceColl1 As ObjectCollection
        oFaceColl1 = ThisApplication.TransientObjects.CreateObjectCollection()
        Dim oFaceColl2 As ObjectCollection
        oFaceColl2 = ThisApplication.TransientObjects.CreateObjectCollection()
        Dim oAxis1 As WorkAxis
        Dim oAxisColl1 As ObjectCollection
        oAxisColl1 = ThisApplication.TransientObjects.CreateObjectCollection()
        Dim oAxis2 As WorkAxis
        Dim oAxisColl2 As ObjectCollection
        oAxisColl2 = ThisApplication.TransientObjects.CreateObjectCollection()

        For Each oFace1 In oBody1.Faces
            If oFace1.SurfaceType = SurfaceTypeEnum.kCylinderSurface Then
                oAxis1 = oCompdef.WorkAxes.AddFixed(oFace1.Geometry.BasePoint, oFace1.Geometry.AxisVector)

                If IsAxisDuplicate(oAxis1, oAxisColl1) = False Then

                    oAxisColl1.Add(oAxis1)
                    oFaceColl1.Add(oFace1)

                Else
                    oAxis1.Delete()
                End If
            End If
        Next

        For Each oFace2 In oBody2.Faces
            If oFace2.SurfaceType = SurfaceTypeEnum.kCylinderSurface Then
                oAxis2 = oCompdef.WorkAxes.AddFixed(oFace2.Geometry.BasePoint, oFace2.Geometry.AxisVector)

                If IsAxisDuplicate(oAxis2, oAxisColl2) = False Then

                    oAxisColl2.Add(oAxis2)
                    oFaceColl2.Add(oFace2)

                Else
                    oAxis2.Delete()
                End If
            End If
        Next

        For i As Integer = 1 To oAxisColl1.Count
            oAxis1 = oAxisColl1.Item(i)
            Dim j As Integer = 0
            j = CompareAlignment(oAxis1, oAxisColl2)
            If j &amp;gt; 0 Then
                oFace1 = oFaceColl1.Item(i)
                oFace2 = oFaceColl2.Item(j)
                CompareFace(oFace1, oFace2, file)
                oFace1.AttributeSets.Add("Aligned")
                oFace2.AttributeSets.Add("Aligned")
            End If
        Next

        For Each oFace1 In oFaceColl1
            If oFace1.AttributeSets.Count = 0 Then
                Dim oHoleFeature As HoleFeature
                oHoleFeature = oFace1.CreatedByFeature

                Dim dia As Double
                dia = oHoleFeature.HoleDiameter.Value * 10 ' Converting cm to mm
                file.WriteLine("Hole diameter of plate 1 = " &amp;amp; "Ø" &amp;amp; dia &amp;amp; " - " &amp;amp; oHoleFeature.ExtendedName &amp;amp; " =&amp;gt; misaligned")
            End If
        Next

        For Each oFace2 In oFaceColl2
            If oFace2.AttributeSets.Count = 0 Then
                Dim oHoleFeature As HoleFeature
                oHoleFeature = oFace2.CreatedByFeature

                Dim dia As Double
                dia = oHoleFeature.HoleDiameter.Value * 10 ' Converting cm to mm
                file.WriteLine("Hole diameter of plate 2 = " &amp;amp; "Ø" &amp;amp; dia &amp;amp; " - " &amp;amp; oHoleFeature.ExtendedName &amp;amp; " =&amp;gt; misaligned")
            End If
        Next

        CleanAxis(oAxisColl1)
        CleanAxis(oAxisColl2)

        ThisApplication.StatusBarText = "Ausgabe in  c:\Temp\Bohrungen.txt"
        file.Close()
        Process.Start("c:\Temp\Bohrungen.txt")

    End Sub
    Public Sub CleanAxis(ByVal oAxisColl As ObjectCollection)
        For Each oAxis As WorkAxis In oAxisColl
            oAxis.Delete()
        Next
    End Sub
    Public Sub CompareFace(ByVal oFace1 As Face, ByVal oFace2 As Face, ByVal File As System.IO.StreamWriter)

        Dim oHoleFeature1 As HoleFeature
        oHoleFeature1 = oFace1.CreatedByFeature

        Dim dia1 As Double
        dia1 = oHoleFeature1.HoleDiameter.Value
        dia1 = dia1 * 10 'Converting cm to mm

        Dim oHoleFeature2 As HoleFeature
        oHoleFeature2 = oFace2.CreatedByFeature

        Dim dia2 As Double
        dia2 = oHoleFeature2.HoleDiameter.Value
        dia2 = dia2 * 10 'Converting cm to mm

        If Math.Round(dia1, 4) = Math.Round(dia2, 4) Then
            Debug.Print("Hole diameter of plate 1 = " &amp;amp; dia1 &amp;amp; " compared with Hole diameter of plate 2 = " &amp;amp; dia2 &amp;amp; " =&amp;gt; OK - Default")
            file.WriteLine("Hole diameter of plate 1 = " &amp;amp; "Ø" &amp;amp; dia1 &amp;amp; " - " &amp;amp; oHoleFeature1.ExtendedName &amp;amp; " compared with Hole diameter of plate 2 = " &amp;amp; "Ø" &amp;amp; dia2 &amp;amp; " - " &amp;amp; oHoleFeature2.ExtendedName &amp;amp; " =&amp;gt; OK - Default")
        ElseIf Math.Round(dia1, 4) &amp;gt;= Math.Round(dia2, 4) And Math.Round(dia1, 4) &amp;lt;= Math.Round(dia2, 4) + 0.5 Then
            Debug.Print("Hole diameter of plate 1 = " &amp;amp; dia1 &amp;amp; " compared with Hole diameter of plate 2 = " &amp;amp; dia2 &amp;amp; " =&amp;gt; OK - Special Type")
            file.WriteLine("Hole diameter of plate 1 = " &amp;amp; "Ø" &amp;amp; dia1 &amp;amp; " - " &amp;amp; oHoleFeature1.ExtendedName &amp;amp; " compared with Hole diameter of plate 2 = " &amp;amp; "Ø" &amp;amp; dia2 &amp;amp; " - " &amp;amp; oHoleFeature2.ExtendedName &amp;amp; " =&amp;gt; OK - Special Type")
        Else
            Debug.Print("Hole diameter of plate 1 = " &amp;amp; dia1 &amp;amp; " compared with Hole diameter of plate 2 = " &amp;amp; dia2 &amp;amp; " =&amp;gt; Not OK")
            file.WriteLine("Hole diameter of plate 1 = " &amp;amp; "Ø" &amp;amp; dia1 &amp;amp; " - " &amp;amp; oHoleFeature1.ExtendedName &amp;amp; " compared with Hole diameter of plate 2 = " &amp;amp; "Ø" &amp;amp; dia2 &amp;amp; " - " &amp;amp; oHoleFeature2.ExtendedName &amp;amp; " =&amp;gt; Not OK")
        End If
    End Sub
    Public Function CompareAlignment(ByVal oAxis As WorkAxis, ByVal oAxisCollection As ObjectCollection) As Integer
        For i As Integer = 1 To oAxisCollection.Count
            Dim axis As WorkAxis
            axis = oAxisCollection.Item(i)
            If oAxis.Line.IsColinearTo(axis.Line) Then
                Return i
                Exit Function
            End If
        Next

        Return 0
    End Function

    Public Function IsAxisDuplicate(ByVal oAxis As WorkAxis, ByVal oAxisColl As ObjectCollection) As Boolean
        If oAxisColl.Count &amp;gt; 0 Then
            For i As Integer = 1 To oAxisColl.Count
                Dim Axis As WorkAxis
                Axis = oAxisColl.Item(i)
                If Axis.Line.IsColinearTo(oAxis.Line) Then
                    Return True
                End If
            Next
            Return False
        Else
            Return False
        End If
    End Function&lt;/PRE&gt;
&lt;P&gt;I basically changed all the references to &lt;EM&gt;&lt;STRONG&gt;m_Inventor&lt;/STRONG&gt;&lt;/EM&gt; to &lt;EM&gt;&lt;STRONG&gt;ThisApplication&lt;/STRONG&gt;&lt;/EM&gt;. It should work with these changes, but let me know if not.&lt;/P&gt;</description>
      <pubDate>Wed, 06 Feb 2019 09:37:38 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8576272#M79227</guid>
      <dc:creator>AlexFielder</dc:creator>
      <dc:date>2019-02-06T09:37:38Z</dc:date>
    </item>
    <item>
      <title>Re: I need help: Hole alignment checker for misaligned holes</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8576474#M79228</link>
      <description>&lt;P&gt;thank you again. still puts out a couple errors&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="error 3.PNG" style="width: 999px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/599826iB6C62E29C6AB665F/image-size/large?v=v2&amp;amp;px=999" role="button" title="error 3.PNG" alt="error 3.PNG" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="error 4.PNG" style="width: 999px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/599827iDF0400235C299F22/image-size/large?v=v2&amp;amp;px=999" role="button" title="error 4.PNG" alt="error 4.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 06 Feb 2019 11:08:36 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8576474#M79228</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-02-06T11:08:36Z</dc:date>
    </item>
    <item>
      <title>Re: I need help: Hole alignment checker for misaligned holes</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8576519#M79229</link>
      <description>&lt;P&gt;The code is attempting to add data to one of the files you had open, are you sure they're not read-only?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Failing that, do you have the time to put together a test assembly that you can share here? I don't currently have time to make one myself.&lt;/P&gt;</description>
      <pubDate>Wed, 06 Feb 2019 11:26:39 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8576519#M79229</guid>
      <dc:creator>AlexFielder</dc:creator>
      <dc:date>2019-02-06T11:26:39Z</dc:date>
    </item>
    <item>
      <title>Re: I need help: Hole alignment checker for misaligned holes</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8576540#M79230</link>
      <description>&lt;P&gt;yes you are correct this was trying to place in a file I do not have so wen tthrough&amp;nbsp;all the code again and here is the one that&amp;nbsp;seems to work.&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;  &lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;main&lt;/SPAN&gt; &lt;SPAN&gt;Body_Faces&lt;/SPAN&gt;()
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;Application&lt;/SPAN&gt;
        &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt; = &lt;SPAN&gt;System&lt;/SPAN&gt;.&lt;SPAN&gt;Runtime&lt;/SPAN&gt;.&lt;SPAN&gt;InteropServices&lt;/SPAN&gt;.&lt;SPAN&gt;Marshal&lt;/SPAN&gt;.&lt;SPAN&gt;GetActiveObject&lt;/SPAN&gt;(&lt;SPAN&gt;"Inventor.Application"&lt;/SPAN&gt;)

        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oDoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyDocument&lt;/SPAN&gt;
        &lt;SPAN&gt;oDoc&lt;/SPAN&gt; = &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;ActiveDocument&lt;/SPAN&gt;

        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oCompdef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyComponentDefinition&lt;/SPAN&gt;
        &lt;SPAN&gt;oCompdef&lt;/SPAN&gt; = &lt;SPAN&gt;oDoc&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;

        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oBody1&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oBody2&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt;

        &lt;SPAN&gt;oBody1&lt;/SPAN&gt; = &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;CommandManager&lt;/SPAN&gt;.&lt;SPAN&gt;Pick&lt;/SPAN&gt;(&lt;SPAN&gt;SelectionFilterEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kPartBodyFilter&lt;/SPAN&gt;, &lt;SPAN&gt;"Select first body"&lt;/SPAN&gt;)
        &lt;SPAN&gt;oBody2&lt;/SPAN&gt; = &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;CommandManager&lt;/SPAN&gt;.&lt;SPAN&gt;Pick&lt;/SPAN&gt;(&lt;SPAN&gt;SelectionFilterEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kPartBodyFilter&lt;/SPAN&gt;, &lt;SPAN&gt;"Select a body to compare"&lt;/SPAN&gt;)

        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oFace&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Face&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oAxis&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;WorkAxis&lt;/SPAN&gt;

        &lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oFace&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oBody1&lt;/SPAN&gt;.&lt;SPAN&gt;Faces&lt;/SPAN&gt;

            &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oFace&lt;/SPAN&gt;.&lt;SPAN&gt;SurfaceType&lt;/SPAN&gt; = &lt;SPAN&gt;SurfaceTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kCylinderSurface&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
                &lt;SPAN&gt;oAxis&lt;/SPAN&gt; = &lt;SPAN&gt;oCompdef&lt;/SPAN&gt;.&lt;SPAN&gt;WorkAxes&lt;/SPAN&gt;.&lt;SPAN&gt;AddFixed&lt;/SPAN&gt;(&lt;SPAN&gt;oFace&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;BasePoint&lt;/SPAN&gt;, &lt;SPAN&gt;oFace&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;AxisVector&lt;/SPAN&gt;)

                &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;comparedFace&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Face&lt;/SPAN&gt;
                &lt;SPAN&gt;comparedFace&lt;/SPAN&gt; = &lt;SPAN&gt;CompareFaces&lt;/SPAN&gt;(&lt;SPAN&gt;oAxis&lt;/SPAN&gt;, &lt;SPAN&gt;oBody2&lt;/SPAN&gt;, &lt;SPAN&gt;oCompdef&lt;/SPAN&gt;)

                &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;comparedFace&lt;/SPAN&gt; &lt;SPAN&gt;Is&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
                    &lt;SPAN&gt;oAxis&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;oAxis&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_misaligned"&lt;/SPAN&gt;
                &lt;SPAN&gt;Else&lt;/SPAN&gt;
                    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oHoleFeature1&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;HoleFeature&lt;/SPAN&gt;
                    &lt;SPAN&gt;oHoleFeature1&lt;/SPAN&gt; = &lt;SPAN&gt;oFace&lt;/SPAN&gt;.&lt;SPAN&gt;CreatedByFeature&lt;/SPAN&gt;

                    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;dia1&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;
                    &lt;SPAN&gt;dia1&lt;/SPAN&gt; = &lt;SPAN&gt;oHoleFeature1&lt;/SPAN&gt;.&lt;SPAN&gt;HoleDiameter&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;
                    &lt;SPAN&gt;dia1&lt;/SPAN&gt; = &lt;SPAN&gt;dia1&lt;/SPAN&gt; * 10 &lt;SPAN&gt;'Converting cm to mm&lt;/SPAN&gt;

                    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oHoleFeature2&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;HoleFeature&lt;/SPAN&gt;
                    &lt;SPAN&gt;oHoleFeature2&lt;/SPAN&gt; = &lt;SPAN&gt;comparedFace&lt;/SPAN&gt;.&lt;SPAN&gt;CreatedByFeature&lt;/SPAN&gt;

                    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;dia2&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;
                    &lt;SPAN&gt;dia2&lt;/SPAN&gt; = &lt;SPAN&gt;oHoleFeature2&lt;/SPAN&gt;.&lt;SPAN&gt;HoleDiameter&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;
                    &lt;SPAN&gt;dia2&lt;/SPAN&gt; = &lt;SPAN&gt;dia2&lt;/SPAN&gt; * 10 &lt;SPAN&gt;'Converting cm to mm&lt;/SPAN&gt;

                    &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;dia1&lt;/SPAN&gt;, 4) = &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;dia2&lt;/SPAN&gt;, 4) &lt;SPAN&gt;Then&lt;/SPAN&gt;
                        &lt;SPAN&gt;Debug&lt;/SPAN&gt;.&lt;SPAN&gt;Print&lt;/SPAN&gt;(&lt;SPAN&gt;"Hole diameter of plate 1 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia1&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" compared with Hole diameter of plate 2 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia2&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" =&amp;gt; OK - Default"&lt;/SPAN&gt;)
                    &lt;SPAN&gt;ElseIf&lt;/SPAN&gt; &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;dia1&lt;/SPAN&gt;, 4) &amp;gt;= &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;dia2&lt;/SPAN&gt;, 4) &lt;SPAN&gt;And&lt;/SPAN&gt; &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;dia1&lt;/SPAN&gt;, 4) &amp;lt;= &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;dia2&lt;/SPAN&gt;, 4) + 0.5 &lt;SPAN&gt;Then&lt;/SPAN&gt;
                        &lt;SPAN&gt;Debug&lt;/SPAN&gt;.&lt;SPAN&gt;Print&lt;/SPAN&gt;(&lt;SPAN&gt;"Hole diameter of plate 1 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia1&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" compared with Hole diameter of plate 2 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia2&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" =&amp;gt; OK - Special Type"&lt;/SPAN&gt;)
                    &lt;SPAN&gt;Else&lt;/SPAN&gt;
                        &lt;SPAN&gt;Debug&lt;/SPAN&gt;.&lt;SPAN&gt;Print&lt;/SPAN&gt;(&lt;SPAN&gt;"Hole diameter of plate 1 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia1&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" compared with Hole diameter of plate 2 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia2&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" =&amp;gt; Not OK"&lt;/SPAN&gt;)
                    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;

                &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;

            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;

        &lt;SPAN&gt;Next&lt;/SPAN&gt;

        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oPane&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;BrowserPane&lt;/SPAN&gt;
        &lt;SPAN&gt;oPane&lt;/SPAN&gt; = &lt;SPAN&gt;oDoc&lt;/SPAN&gt;.&lt;SPAN&gt;BrowserPanes&lt;/SPAN&gt;.&lt;SPAN&gt;ActivePane&lt;/SPAN&gt;

        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;alignedNodes&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt;
        &lt;SPAN&gt;alignedNodes&lt;/SPAN&gt; = &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;.&lt;SPAN&gt;CreateObjectCollection&lt;/SPAN&gt;

        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;misAlignedNodes&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt;
        &lt;SPAN&gt;misAlignedNodes&lt;/SPAN&gt; = &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;.&lt;SPAN&gt;CreateObjectCollection&lt;/SPAN&gt;

        &lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;i&lt;/SPAN&gt; = 4 &lt;SPAN&gt;To&lt;/SPAN&gt; &lt;SPAN&gt;oCompdef&lt;/SPAN&gt;.&lt;SPAN&gt;WorkAxes&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt;
            &lt;SPAN&gt;oAxis&lt;/SPAN&gt; = &lt;SPAN&gt;oCompdef&lt;/SPAN&gt;.&lt;SPAN&gt;WorkAxes&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;)
            &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;misaligned&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Boolean&lt;/SPAN&gt;
            &lt;SPAN&gt;misaligned&lt;/SPAN&gt; = &lt;SPAN&gt;EndsWith&lt;/SPAN&gt;(&lt;SPAN&gt;oAxis&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;, &lt;SPAN&gt;"misaligned"&lt;/SPAN&gt;)

            &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oNode&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;BrowserNode&lt;/SPAN&gt;

            &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;misaligned&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
                &lt;SPAN&gt;oNode&lt;/SPAN&gt; = &lt;SPAN&gt;oPane&lt;/SPAN&gt;.&lt;SPAN&gt;GetBrowserNodeFromObject&lt;/SPAN&gt;(&lt;SPAN&gt;oAxis&lt;/SPAN&gt;)
                &lt;SPAN&gt;misAlignedNodes&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;oNode&lt;/SPAN&gt;)
            &lt;SPAN&gt;Else&lt;/SPAN&gt;
                &lt;SPAN&gt;oNode&lt;/SPAN&gt; = &lt;SPAN&gt;oPane&lt;/SPAN&gt;.&lt;SPAN&gt;GetBrowserNodeFromObject&lt;/SPAN&gt;(&lt;SPAN&gt;oAxis&lt;/SPAN&gt;)
                &lt;SPAN&gt;alignedNodes&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;oNode&lt;/SPAN&gt;)
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;

        &lt;SPAN&gt;Next&lt;/SPAN&gt;

        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;alignedAxes&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;BrowserFolder&lt;/SPAN&gt;
        &lt;SPAN&gt;alignedAxes&lt;/SPAN&gt; = &lt;SPAN&gt;oPane&lt;/SPAN&gt;.&lt;SPAN&gt;AddBrowserFolder&lt;/SPAN&gt;(&lt;SPAN&gt;"Aligned Axes"&lt;/SPAN&gt;, &lt;SPAN&gt;alignedNodes&lt;/SPAN&gt;)

        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;misAlignedAxes&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;BrowserFolder&lt;/SPAN&gt;
        &lt;SPAN&gt;misAlignedAxes&lt;/SPAN&gt; = &lt;SPAN&gt;oPane&lt;/SPAN&gt;.&lt;SPAN&gt;AddBrowserFolder&lt;/SPAN&gt;(&lt;SPAN&gt;"MisAligned Axes"&lt;/SPAN&gt;, &lt;SPAN&gt;misAlignedNodes&lt;/SPAN&gt;)

    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;

    &lt;SPAN&gt;Public&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;CompareFaces&lt;/SPAN&gt;(&lt;SPAN&gt;ByVal&lt;/SPAN&gt; &lt;SPAN&gt;oAxis1&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;WorkAxis&lt;/SPAN&gt;, &lt;SPAN&gt;ByVal&lt;/SPAN&gt; &lt;SPAN&gt;oBody&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt;, &lt;SPAN&gt;ByVal&lt;/SPAN&gt; &lt;SPAN&gt;compDef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyComponentDefinition&lt;/SPAN&gt;) &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Face&lt;/SPAN&gt;
        &lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oFace&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Face&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Faces&lt;/SPAN&gt;
            &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oFace&lt;/SPAN&gt;.&lt;SPAN&gt;SurfaceType&lt;/SPAN&gt; = &lt;SPAN&gt;SurfaceTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kCylinderSurface&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
                &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oAxis&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;WorkAxis&lt;/SPAN&gt;

                &lt;SPAN&gt;oAxis&lt;/SPAN&gt; = &lt;SPAN&gt;compDef&lt;/SPAN&gt;.&lt;SPAN&gt;WorkAxes&lt;/SPAN&gt;.&lt;SPAN&gt;AddFixed&lt;/SPAN&gt;(&lt;SPAN&gt;oFace&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;BasePoint&lt;/SPAN&gt;, &lt;SPAN&gt;oFace&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;AxisVector&lt;/SPAN&gt;)

                &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oAxis&lt;/SPAN&gt;.&lt;SPAN&gt;Line&lt;/SPAN&gt;.&lt;SPAN&gt;IsColinearTo&lt;/SPAN&gt;(&lt;SPAN&gt;oAxis1&lt;/SPAN&gt;.&lt;SPAN&gt;Line&lt;/SPAN&gt;) &lt;SPAN&gt;Then&lt;/SPAN&gt;
                    &lt;SPAN&gt;oAxis&lt;/SPAN&gt;.&lt;SPAN&gt;Delete&lt;/SPAN&gt;()
                    &lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;oFace&lt;/SPAN&gt;
                    &lt;SPAN&gt;Exit&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;
                &lt;SPAN&gt;Else&lt;/SPAN&gt;
                    &lt;SPAN&gt;oAxis&lt;/SPAN&gt;.&lt;SPAN&gt;Delete&lt;/SPAN&gt;()
                &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
        &lt;SPAN&gt;Next&lt;/SPAN&gt;
        &lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&lt;/SPAN&gt;
    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;

    &lt;SPAN&gt;Public&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;EndsWith&lt;/SPAN&gt;(&lt;SPAN&gt;Str&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;, &lt;SPAN&gt;ending&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;) &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Boolean&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;endingLen&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt;
        &lt;SPAN&gt;endingLen&lt;/SPAN&gt; = &lt;SPAN&gt;Len&lt;/SPAN&gt;(&lt;SPAN&gt;ending&lt;/SPAN&gt;)
        &lt;SPAN&gt;EndsWith&lt;/SPAN&gt; = (&lt;SPAN&gt;Microsoft&lt;/SPAN&gt;.&lt;SPAN&gt;VisualBasic&lt;/SPAN&gt;.&lt;SPAN&gt;Right&lt;/SPAN&gt;(&lt;SPAN&gt;Trim&lt;/SPAN&gt;(&lt;SPAN&gt;UCase&lt;/SPAN&gt;(&lt;SPAN&gt;str&lt;/SPAN&gt;)), &lt;SPAN&gt;endingLen&lt;/SPAN&gt;) = &lt;SPAN&gt;UCase&lt;/SPAN&gt;(&lt;SPAN&gt;ending&lt;/SPAN&gt;))
    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 06 Feb 2019 11:40:33 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8576540#M79230</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-02-06T11:40:33Z</dc:date>
    </item>
    <item>
      <title>Re: I need help: Hole alignment checker for misaligned holes</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8576591#M79231</link>
      <description>&lt;P&gt;sorry I have never posted a file on here. this&amp;nbsp;file has code ran once on it&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 06 Feb 2019 12:03:40 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8576591#M79231</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-02-06T12:03:40Z</dc:date>
    </item>
    <item>
      <title>Re: I need help: Hole alignment checker for misaligned holes</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8576598#M79232</link>
      <description>&lt;P&gt;I'm&amp;nbsp;pretty sure I replied to myself&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 06 Feb 2019 12:05:33 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8576598#M79232</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-02-06T12:05:33Z</dc:date>
    </item>
    <item>
      <title>Re: I need help: Hole alignment checker for misaligned holes</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8576916#M79233</link>
      <description>&lt;P&gt;You were nearly there. Try this updated rule:&lt;/P&gt;
&lt;PRE&gt;Sub Main()
    Dim oDoc As AssemblyDocument
    oDoc = ThisApplication.ActiveDocument

    Dim oCompdef As AssemblyComponentDefinition
    oCompdef = oDoc.ComponentDefinition

    Dim oBody1 As SurfaceBody
    Dim oBody2 As SurfaceBody

    oBody1 = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kPartBodyFilter, "Select first body")
    oBody2 = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kPartBodyFilter, "Select a body to compare")

    Dim oFace As Face
    Dim oAxis As WorkAxis

    For Each oFace In oBody1.Faces

        If oFace.SurfaceType = SurfaceTypeEnum.kCylinderSurface Then
            oAxis = oCompdef.WorkAxes.AddFixed(oFace.Geometry.BasePoint, oFace.Geometry.AxisVector)

            Dim comparedFace As Face
            comparedFace = CompareFaces(oAxis, oBody2, oCompdef)

            If comparedFace Is Nothing Then
                oAxis.Name = oAxis.Name &amp;amp; "_misaligned"
            Else
                Dim oHoleFeature1 As HoleFeature
                oHoleFeature1 = oFace.CreatedByFeature

                Dim dia1 As Double
                dia1 = oHoleFeature1.HoleDiameter.Value
                dia1 = dia1 * 10 'Converting cm to mm

                Dim oHoleFeature2 As HoleFeature
                oHoleFeature2 = comparedFace.CreatedByFeature

                Dim dia2 As Double
                dia2 = oHoleFeature2.HoleDiameter.Value
                dia2 = dia2 * 10 'Converting cm to mm

                If Math.Round(dia1, 4) = Math.Round(dia2, 4) Then
                    Debug.Print("Hole diameter of plate 1 = " &amp;amp; dia1 &amp;amp; " compared with Hole diameter of plate 2 = " &amp;amp; dia2 &amp;amp; " =&amp;gt; OK - Default")
                ElseIf Math.Round(dia1, 4) &amp;gt;= Math.Round(dia2, 4) And Math.Round(dia1, 4) &amp;lt;= Math.Round(dia2, 4) + 0.5 Then
                    Debug.Print("Hole diameter of plate 1 = " &amp;amp; dia1 &amp;amp; " compared with Hole diameter of plate 2 = " &amp;amp; dia2 &amp;amp; " =&amp;gt; OK - Special Type")
                Else
                    Debug.Print("Hole diameter of plate 1 = " &amp;amp; dia1 &amp;amp; " compared with Hole diameter of plate 2 = " &amp;amp; dia2 &amp;amp; " =&amp;gt; Not OK")
                End If

            End If

        End If

    Next

    Dim oPane As BrowserPane
    oPane = oDoc.BrowserPanes.ActivePane

    Dim alignedNodes As ObjectCollection
    alignedNodes = ThisApplication.TransientObjects.CreateObjectCollection

    Dim misAlignedNodes As ObjectCollection
    misAlignedNodes = ThisApplication.TransientObjects.CreateObjectCollection

    For i = 4 To oCompdef.WorkAxes.Count
        oAxis = oCompdef.WorkAxes.Item(i)
        Dim misaligned As Boolean = oAxis.Name.EndsWith("misaligned")
		
        Dim oNode As BrowserNode

        If misaligned = True Then
            oNode = oPane.GetBrowserNodeFromObject(oAxis)
            misAlignedNodes.Add(oNode)
        Else
            oNode = oPane.GetBrowserNodeFromObject(oAxis)
            alignedNodes.Add(oNode)
        End If

    Next

    Dim alignedAxes As BrowserFolder
    alignedAxes = oPane.AddBrowserFolder("Aligned Axes", alignedNodes)

    Dim misAlignedAxes As BrowserFolder
    misAlignedAxes = oPane.AddBrowserFolder("MisAligned Axes", misAlignedNodes)

End Sub

Public Function CompareFaces(ByVal oAxis1 As WorkAxis, ByVal oBody As SurfaceBody, ByVal compDef As AssemblyComponentDefinition) As Face
    For Each oFace As Face In oBody.Faces
        If oFace.SurfaceType = SurfaceTypeEnum.kCylinderSurface Then
            Dim oAxis As WorkAxis

            oAxis = compDef.WorkAxes.AddFixed(oFace.Geometry.BasePoint, oFace.Geometry.AxisVector)

            If oAxis.Line.IsColinearTo(oAxis1.Line) Then
                oAxis.Delete()
                Return oFace
                Exit Function
            Else
                oAxis.Delete()
            End If
        End If
    Next
    Return Nothing
End Function&lt;/PRE&gt;
&lt;P&gt;I tried the above on your assembly and it works perfectly. Two suggestions I have which may prove to be useful additions are:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;1. &lt;A href="http://help.autodesk.com/view/INVNTOR/2019/ENU/?guid=GUID-991ABB26-6113-4E27-83F8-1699F259772E" target="_blank" rel="noopener"&gt;Wrap the placement of new work axes in a transaction&lt;/A&gt; so you can undo the creation in one click.&lt;/P&gt;
&lt;P&gt;2. Search for and delete existing renamed work axes and associated folders before adding new.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 06 Feb 2019 14:03:17 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8576916#M79233</guid>
      <dc:creator>AlexFielder</dc:creator>
      <dc:date>2019-02-06T14:03:17Z</dc:date>
    </item>
    <item>
      <title>Re: I need help: Hole alignment checker for misaligned holes</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8576994#M79234</link>
      <description>&lt;P&gt;I really appreciate&amp;nbsp;all the help. there is one section of code I don't&amp;nbsp;understand. I'm&amp;nbsp;pretty sure this is checking and comparing&amp;nbsp;hole diameter but I don't&amp;nbsp;see it showing this data anywhere on the screen. I have so many questions I don't&amp;nbsp;want to take up all your time.&lt;/P&gt;
&lt;PRE&gt;&lt;FONT color="#000000"&gt;
                    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;dia1&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;
                    &lt;SPAN&gt;dia1&lt;/SPAN&gt; = &lt;SPAN&gt;oHoleFeature1&lt;/SPAN&gt;.&lt;SPAN&gt;HoleDiameter&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;
                    &lt;SPAN&gt;dia1&lt;/SPAN&gt; = &lt;SPAN&gt;dia1&lt;/SPAN&gt; * 10 &lt;SPAN&gt;'Converting cm to mm&lt;/SPAN&gt;

                    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oHoleFeature2&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;HoleFeature&lt;/SPAN&gt;
                    &lt;SPAN&gt;oHoleFeature2&lt;/SPAN&gt; = &lt;SPAN&gt;comparedFace&lt;/SPAN&gt;.&lt;SPAN&gt;CreatedByFeature&lt;/SPAN&gt;

                    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;dia2&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;
                    &lt;SPAN&gt;dia2&lt;/SPAN&gt; = &lt;SPAN&gt;oHoleFeature2&lt;/SPAN&gt;.&lt;SPAN&gt;HoleDiameter&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;
                    &lt;SPAN&gt;dia2&lt;/SPAN&gt; = &lt;SPAN&gt;dia2&lt;/SPAN&gt; * 10 &lt;SPAN&gt;'Converting cm to mm&lt;/SPAN&gt;

                    &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;dia1&lt;/SPAN&gt;, 4) = &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;dia2&lt;/SPAN&gt;, 4) &lt;SPAN&gt;Then&lt;/SPAN&gt;
                        &lt;SPAN&gt;Debug&lt;/SPAN&gt;.&lt;SPAN&gt;Print&lt;/SPAN&gt;(&lt;SPAN&gt;"Hole diameter of plate 1 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia1&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" compared with Hole diameter of plate 2 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia2&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" =&amp;gt; OK - Default"&lt;/SPAN&gt;)
                    &lt;SPAN&gt;ElseIf&lt;/SPAN&gt; &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;dia1&lt;/SPAN&gt;, 4) &amp;gt;= &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;dia2&lt;/SPAN&gt;, 4) &lt;SPAN&gt;And&lt;/SPAN&gt; &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;dia1&lt;/SPAN&gt;, 4) &amp;lt;= &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;dia2&lt;/SPAN&gt;, 4) + 0.5 &lt;SPAN&gt;Then&lt;/SPAN&gt;
                        &lt;SPAN&gt;Debug&lt;/SPAN&gt;.&lt;SPAN&gt;Print&lt;/SPAN&gt;(&lt;SPAN&gt;"Hole diameter of plate 1 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia1&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" compared with Hole diameter of plate 2 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia2&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" =&amp;gt; OK - Special Type"&lt;/SPAN&gt;)
                    &lt;SPAN&gt;Else&lt;/SPAN&gt;
                        &lt;SPAN&gt;Debug&lt;/SPAN&gt;.&lt;SPAN&gt;Print&lt;/SPAN&gt;(&lt;SPAN&gt;"Hole diameter of plate 1 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia1&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" compared with Hole diameter of plate 2 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia2&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" =&amp;gt; Not OK"&lt;/SPAN&gt;)
                    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
&lt;/FONT&gt;
                &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;

            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;

   &amp;nbsp;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 06 Feb 2019 14:23:20 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8576994#M79234</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-02-06T14:23:20Z</dc:date>
    </item>
    <item>
      <title>Re: I need help: Hole alignment checker for misaligned holes</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8577066#M79235</link>
      <description>&lt;P&gt;If you were using Inventor 2019, you could pipe the output from the iLogic to the iLogic logging panel. You can swap the "debug.print()" for messagebox.show() if you want to prompt the user in lieu of using Inventor 2019.&lt;/P&gt;</description>
      <pubDate>Wed, 06 Feb 2019 14:44:22 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8577066#M79235</guid>
      <dc:creator>AlexFielder</dc:creator>
      <dc:date>2019-02-06T14:44:22Z</dc:date>
    </item>
    <item>
      <title>Re: I need help: Hole alignment checker for misaligned holes</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8577127#M79236</link>
      <description>&lt;P&gt;yes that&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="error 5.PNG" style="width: 943px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/599968i5CE14CDD055310E0/image-size/large?v=v2&amp;amp;px=999" role="button" title="error 5.PNG" alt="error 5.PNG" /&gt;&lt;/span&gt; worked perfect&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 06 Feb 2019 15:02:50 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8577127#M79236</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-02-06T15:02:50Z</dc:date>
    </item>
    <item>
      <title>Re: I need help: Hole alignment checker for misaligned holes</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8577957#M79237</link>
      <description>&lt;P&gt;is using sub. like running three separate instances of code? when I place my transaction code can I add it to a new submenu and add otrans.end&amp;nbsp; &amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 06 Feb 2019 19:16:14 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8577957#M79237</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-02-06T19:16:14Z</dc:date>
    </item>
    <item>
      <title>Hole alignment checker for misaligned holes (Finished product)</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8581074#M79238</link>
      <description>&lt;P&gt;here is finished code with transaction&amp;nbsp;modifier to undo all steps in one click&lt;/P&gt;
&lt;PRE&gt; &lt;BR /&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;Main&lt;/SPAN&gt;()
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;Application&lt;/SPAN&gt;
        &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt; = &lt;SPAN&gt;System&lt;/SPAN&gt;.&lt;SPAN&gt;Runtime&lt;/SPAN&gt;.&lt;SPAN&gt;InteropServices&lt;/SPAN&gt;.&lt;SPAN&gt;Marshal&lt;/SPAN&gt;.&lt;SPAN&gt;GetActiveObject&lt;/SPAN&gt;(&lt;SPAN&gt;"Inventor.Application"&lt;/SPAN&gt;)
		
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oDoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyDocument&lt;/SPAN&gt;
        &lt;SPAN&gt;oDoc&lt;/SPAN&gt; = &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;ActiveDocument&lt;/SPAN&gt;

        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oCompdef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyComponentDefinition&lt;/SPAN&gt;
        &lt;SPAN&gt;oCompdef&lt;/SPAN&gt; = &lt;SPAN&gt;oDoc&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;

        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oBody1&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oBody2&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt;

        &lt;SPAN&gt;oBody1&lt;/SPAN&gt; = &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;CommandManager&lt;/SPAN&gt;.&lt;SPAN&gt;Pick&lt;/SPAN&gt;(&lt;SPAN&gt;SelectionFilterEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kPartBodyFilter&lt;/SPAN&gt;, &lt;SPAN&gt;"Select first body"&lt;/SPAN&gt;)
        &lt;SPAN&gt;oBody2&lt;/SPAN&gt; = &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;CommandManager&lt;/SPAN&gt;.&lt;SPAN&gt;Pick&lt;/SPAN&gt;(&lt;SPAN&gt;SelectionFilterEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kPartBodyFilter&lt;/SPAN&gt;, &lt;SPAN&gt;"Select a body to compare"&lt;/SPAN&gt;)

        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oFace&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Face&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oAxis&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;WorkAxis&lt;/SPAN&gt;
		
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;trans&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Transaction&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransactionManager&lt;/SPAN&gt;.&lt;SPAN&gt;StartTransaction&lt;/SPAN&gt;(&lt;SPAN&gt;oDoc&lt;/SPAN&gt;, &lt;SPAN&gt;"Hole Alignment"&lt;/SPAN&gt;)
		

        &lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oFace&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oBody1&lt;/SPAN&gt;.&lt;SPAN&gt;Faces&lt;/SPAN&gt;
			

            &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oFace&lt;/SPAN&gt;.&lt;SPAN&gt;SurfaceType&lt;/SPAN&gt; = &lt;SPAN&gt;SurfaceTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kCylinderSurface&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
                &lt;SPAN&gt;oAxis&lt;/SPAN&gt; = &lt;SPAN&gt;oCompdef&lt;/SPAN&gt;.&lt;SPAN&gt;WorkAxes&lt;/SPAN&gt;.&lt;SPAN&gt;AddFixed&lt;/SPAN&gt;(&lt;SPAN&gt;oFace&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;BasePoint&lt;/SPAN&gt;, &lt;SPAN&gt;oFace&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;AxisVector&lt;/SPAN&gt;)

                &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;comparedFace&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Face&lt;/SPAN&gt;
                &lt;SPAN&gt;comparedFace&lt;/SPAN&gt; = &lt;SPAN&gt;CompareFaces&lt;/SPAN&gt;(&lt;SPAN&gt;oAxis&lt;/SPAN&gt;, &lt;SPAN&gt;oBody2&lt;/SPAN&gt;, &lt;SPAN&gt;oCompdef&lt;/SPAN&gt;)

                &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;comparedFace&lt;/SPAN&gt; &lt;SPAN&gt;Is&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
                    &lt;SPAN&gt;oAxis&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;oAxis&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_misaligned"&lt;/SPAN&gt;
                &lt;SPAN&gt;Else&lt;/SPAN&gt;
                    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oHoleFeature1&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;HoleFeature&lt;/SPAN&gt;
                    &lt;SPAN&gt;oHoleFeature1&lt;/SPAN&gt; = &lt;SPAN&gt;oFace&lt;/SPAN&gt;.&lt;SPAN&gt;CreatedByFeature&lt;/SPAN&gt;

                    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;dia1&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;
                    &lt;SPAN&gt;dia1&lt;/SPAN&gt; = &lt;SPAN&gt;oHoleFeature1&lt;/SPAN&gt;.&lt;SPAN&gt;HoleDiameter&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;
                    &lt;SPAN&gt;dia1&lt;/SPAN&gt; = &lt;SPAN&gt;dia1&lt;/SPAN&gt; * &lt;SPAN&gt;10&lt;/SPAN&gt; &lt;SPAN&gt;'Converting cm to mm&lt;/SPAN&gt;

                    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oHoleFeature2&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;HoleFeature&lt;/SPAN&gt;
                    &lt;SPAN&gt;oHoleFeature2&lt;/SPAN&gt; = &lt;SPAN&gt;comparedFace&lt;/SPAN&gt;.&lt;SPAN&gt;CreatedByFeature&lt;/SPAN&gt;

                    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;dia2&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;
                    &lt;SPAN&gt;dia2&lt;/SPAN&gt; = &lt;SPAN&gt;oHoleFeature2&lt;/SPAN&gt;.&lt;SPAN&gt;HoleDiameter&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;
                    &lt;SPAN&gt;dia2&lt;/SPAN&gt; = &lt;SPAN&gt;dia2&lt;/SPAN&gt; * &lt;SPAN&gt;10&lt;/SPAN&gt; &lt;SPAN&gt;'Converting cm to mm&lt;/SPAN&gt;

                    &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;dia1&lt;/SPAN&gt;, &lt;SPAN&gt;4&lt;/SPAN&gt;) = &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;dia2&lt;/SPAN&gt;, &lt;SPAN&gt;4&lt;/SPAN&gt;) &lt;SPAN&gt;Then&lt;/SPAN&gt;
                        &lt;SPAN&gt;messagebox&lt;/SPAN&gt;.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;"Hole diameter of plate 1 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia1&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" compared with Hole diameter of plate 2 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia2&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" =&amp;gt; OK - Default"&lt;/SPAN&gt;)
                    &lt;SPAN&gt;ElseIf&lt;/SPAN&gt; &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;dia1&lt;/SPAN&gt;, &lt;SPAN&gt;4&lt;/SPAN&gt;) &amp;gt;= &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;dia2&lt;/SPAN&gt;, &lt;SPAN&gt;4&lt;/SPAN&gt;) &lt;SPAN&gt;And&lt;/SPAN&gt; &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;dia1&lt;/SPAN&gt;, &lt;SPAN&gt;4&lt;/SPAN&gt;) &amp;lt;= &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;dia2&lt;/SPAN&gt;, &lt;SPAN&gt;4&lt;/SPAN&gt;) + &lt;SPAN&gt;0.5&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
                        &lt;SPAN&gt;messagebox&lt;/SPAN&gt;.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;"Hole diameter of plate 1 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia1&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" compared with Hole diameter of plate 2 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia2&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" =&amp;gt; OK - Special Type"&lt;/SPAN&gt;)
                    &lt;SPAN&gt;Else&lt;/SPAN&gt;
                        &lt;SPAN&gt;messagebox&lt;/SPAN&gt;.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;"Hole diameter of plate 1 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia1&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" compared with Hole diameter of plate 2 = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;dia2&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" =&amp;gt; Not OK"&lt;/SPAN&gt;)
                    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;

                &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;

            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;

        &lt;SPAN&gt;Next&lt;/SPAN&gt;

        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oPane&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;BrowserPane&lt;/SPAN&gt;
        &lt;SPAN&gt;oPane&lt;/SPAN&gt; = &lt;SPAN&gt;oDoc&lt;/SPAN&gt;.&lt;SPAN&gt;BrowserPanes&lt;/SPAN&gt;.&lt;SPAN&gt;ActivePane&lt;/SPAN&gt;

        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;alignedNodes&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt;
        &lt;SPAN&gt;alignedNodes&lt;/SPAN&gt; = &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;.&lt;SPAN&gt;CreateObjectCollection&lt;/SPAN&gt;

        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;misAlignedNodes&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt;
        &lt;SPAN&gt;misAlignedNodes&lt;/SPAN&gt; = &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;.&lt;SPAN&gt;CreateObjectCollection&lt;/SPAN&gt;

        &lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;i&lt;/SPAN&gt; = &lt;SPAN&gt;4&lt;/SPAN&gt; &lt;SPAN&gt;To&lt;/SPAN&gt; &lt;SPAN&gt;oCompdef&lt;/SPAN&gt;.&lt;SPAN&gt;WorkAxes&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt;
            &lt;SPAN&gt;oAxis&lt;/SPAN&gt; = &lt;SPAN&gt;oCompdef&lt;/SPAN&gt;.&lt;SPAN&gt;WorkAxes&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;)
            &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;misaligned&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Boolean&lt;/SPAN&gt;
            &lt;SPAN&gt;misaligned&lt;/SPAN&gt; = &lt;SPAN&gt;EndsWith&lt;/SPAN&gt;(&lt;SPAN&gt;oAxis&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;, &lt;SPAN&gt;"misaligned"&lt;/SPAN&gt;)

            &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oNode&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;BrowserNode&lt;/SPAN&gt;

            &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;misaligned&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
                &lt;SPAN&gt;oNode&lt;/SPAN&gt; = &lt;SPAN&gt;oPane&lt;/SPAN&gt;.&lt;SPAN&gt;GetBrowserNodeFromObject&lt;/SPAN&gt;(&lt;SPAN&gt;oAxis&lt;/SPAN&gt;)
                &lt;SPAN&gt;misAlignedNodes&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;oNode&lt;/SPAN&gt;)
            &lt;SPAN&gt;Else&lt;/SPAN&gt;
                &lt;SPAN&gt;oNode&lt;/SPAN&gt; = &lt;SPAN&gt;oPane&lt;/SPAN&gt;.&lt;SPAN&gt;GetBrowserNodeFromObject&lt;/SPAN&gt;(&lt;SPAN&gt;oAxis&lt;/SPAN&gt;)
                &lt;SPAN&gt;alignedNodes&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;oNode&lt;/SPAN&gt;)
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;

        &lt;SPAN&gt;Next&lt;/SPAN&gt;
		
		
		
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;alignedAxes&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;BrowserFolder&lt;/SPAN&gt;
        &lt;SPAN&gt;alignedAxes&lt;/SPAN&gt; = &lt;SPAN&gt;oPane&lt;/SPAN&gt;.&lt;SPAN&gt;AddBrowserFolder&lt;/SPAN&gt;(&lt;SPAN&gt;"Aligned Axes"&lt;/SPAN&gt;, &lt;SPAN&gt;alignedNodes&lt;/SPAN&gt;)

        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;misAlignedAxes&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;BrowserFolder&lt;/SPAN&gt;
        &lt;SPAN&gt;misAlignedAxes&lt;/SPAN&gt; = &lt;SPAN&gt;oPane&lt;/SPAN&gt;.&lt;SPAN&gt;AddBrowserFolder&lt;/SPAN&gt;(&lt;SPAN&gt;"MisAligned Axes"&lt;/SPAN&gt;, &lt;SPAN&gt;misAlignedNodes&lt;/SPAN&gt;)
		
		&lt;SPAN&gt;trans&lt;/SPAN&gt;.&lt;SPAN&gt;End&lt;/SPAN&gt;()

    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;

    &lt;SPAN&gt;Public&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;CompareFaces&lt;/SPAN&gt;(&lt;SPAN&gt;ByVal&lt;/SPAN&gt; &lt;SPAN&gt;oAxis1&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;WorkAxis&lt;/SPAN&gt;, &lt;SPAN&gt;ByVal&lt;/SPAN&gt; &lt;SPAN&gt;oBody&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt;, &lt;SPAN&gt;ByVal&lt;/SPAN&gt; &lt;SPAN&gt;compDef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyComponentDefinition&lt;/SPAN&gt;) &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Face&lt;/SPAN&gt;
        &lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oFace&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Face&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Faces&lt;/SPAN&gt;
            &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oFace&lt;/SPAN&gt;.&lt;SPAN&gt;SurfaceType&lt;/SPAN&gt; = &lt;SPAN&gt;SurfaceTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kCylinderSurface&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
                &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oAxis&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;WorkAxis&lt;/SPAN&gt;

                &lt;SPAN&gt;oAxis&lt;/SPAN&gt; = &lt;SPAN&gt;compDef&lt;/SPAN&gt;.&lt;SPAN&gt;WorkAxes&lt;/SPAN&gt;.&lt;SPAN&gt;AddFixed&lt;/SPAN&gt;(&lt;SPAN&gt;oFace&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;BasePoint&lt;/SPAN&gt;, &lt;SPAN&gt;oFace&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;AxisVector&lt;/SPAN&gt;)

                &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oAxis&lt;/SPAN&gt;.&lt;SPAN&gt;Line&lt;/SPAN&gt;.&lt;SPAN&gt;IsColinearTo&lt;/SPAN&gt;(&lt;SPAN&gt;oAxis1&lt;/SPAN&gt;.&lt;SPAN&gt;Line&lt;/SPAN&gt;) &lt;SPAN&gt;Then&lt;/SPAN&gt;
                    &lt;SPAN&gt;oAxis&lt;/SPAN&gt;.&lt;SPAN&gt;Delete&lt;/SPAN&gt;()
                    &lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;oFace&lt;/SPAN&gt;
                    &lt;SPAN&gt;Exit&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;
                &lt;SPAN&gt;Else&lt;/SPAN&gt;
                    &lt;SPAN&gt;oAxis&lt;/SPAN&gt;.&lt;SPAN&gt;Delete&lt;/SPAN&gt;()
                &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
        &lt;SPAN&gt;Next&lt;/SPAN&gt;
        &lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&lt;/SPAN&gt;
		
		&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;

    &lt;SPAN&gt;Public&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;EndsWith&lt;/SPAN&gt;(&lt;SPAN&gt;Str&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;, &lt;SPAN&gt;ending&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;) &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Boolean&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;endingLen&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt;
        &lt;SPAN&gt;endingLen&lt;/SPAN&gt; = &lt;SPAN&gt;Len&lt;/SPAN&gt;(&lt;SPAN&gt;ending&lt;/SPAN&gt;)
        &lt;SPAN&gt;EndsWith&lt;/SPAN&gt; = (&lt;SPAN&gt;Microsoft&lt;/SPAN&gt;.&lt;SPAN&gt;VisualBasic&lt;/SPAN&gt;.&lt;SPAN&gt;Right&lt;/SPAN&gt;(&lt;SPAN&gt;Trim&lt;/SPAN&gt;(&lt;SPAN&gt;UCase&lt;/SPAN&gt;(&lt;SPAN&gt;Str&lt;/SPAN&gt;)), &lt;SPAN&gt;endingLen&lt;/SPAN&gt;) = &lt;SPAN&gt;UCase&lt;/SPAN&gt;(&lt;SPAN&gt;ending&lt;/SPAN&gt;))
    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 07 Feb 2019 20:17:23 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8581074#M79238</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-02-07T20:17:23Z</dc:date>
    </item>
    <item>
      <title>Re: I need help: Hole alignment checker for misaligned holes</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8595882#M79239</link>
      <description>&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Just got back to this project, I'm&amp;nbsp;having an error after I opened original template back up&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;from all that have read online it has to do with how I'm&amp;nbsp;choosing my&amp;nbsp;document.&lt;/P&gt;
&lt;P&gt;I tried placing this code and I received&amp;nbsp;line errors&amp;nbsp;after that.&lt;/P&gt;
&lt;PRE&gt;  &lt;SPAN&gt;oDoc&lt;/SPAN&gt; = &lt;SPAN&gt;m_Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;ActiveDocument is there another way this could be written &lt;BR /&gt;  oDoc = thisapplication.activedocument &lt;BR /&gt;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="error 1.PNG" style="width: 567px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/602977iD592DE365D3AEC78/image-size/large?v=v2&amp;amp;px=999" role="button" title="error 1.PNG" alt="error 1.PNG" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="error 2.PNG" style="width: 553px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/602978i6DF2E04208141014/image-size/large?v=v2&amp;amp;px=999" role="button" title="error 2.PNG" alt="error 2.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 14 Feb 2019 13:44:17 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8595882#M79239</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-02-14T13:44:17Z</dc:date>
    </item>
    <item>
      <title>Re: I need help: Hole alignment checker for misaligned holes</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8595896#M79240</link>
      <description>&lt;P&gt;This is exactly what I changed when we last spoke. I don't think you clicked the "diff" link I shared which showed this:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2019-02-14 13_46_13-Saved diff aFbbGegb - Diff Checker.png" style="width: 999px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/602980i12A76B175CFA9B6F/image-size/large?v=v2&amp;amp;px=999" role="button" title="2019-02-14 13_46_13-Saved diff aFbbGegb - Diff Checker.png" alt="2019-02-14 13_46_13-Saved diff aFbbGegb - Diff Checker.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;diff link is here once again for your perusal:&amp;nbsp;&lt;A href="https://www.diffchecker.com/aFbbGegb" target="_blank"&gt;https://www.diffchecker.com/aFbbGegb&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 14 Feb 2019 13:48:03 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8595896#M79240</guid>
      <dc:creator>AlexFielder</dc:creator>
      <dc:date>2019-02-14T13:48:03Z</dc:date>
    </item>
    <item>
      <title>Re: I need help: Hole alignment checker for misaligned holes</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8596067#M79241</link>
      <description>&lt;P&gt;so anywhere I have m.invetor&amp;nbsp;I need to use &lt;SPAN&gt;ThisApplication. since I did not change all the places I was throwing an error correct?. I only replaced the first one that would explain the reason I was&amp;nbsp;getting the error. I'm&amp;nbsp;going to try it now&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 14 Feb 2019 14:46:31 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/i-need-help-hole-alignment-checker-for-misaligned-holes/m-p/8596067#M79241</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-02-14T14:46:31Z</dc:date>
    </item>
  </channel>
</rss>

