<?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: transaction manager help in Inventor Programming - iLogic, Macros, AddIns &amp; Apprentice</title>
    <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/transaction-manager-help/m-p/8579301#M94145</link>
    <description>&lt;P&gt;Hi again&amp;nbsp;@Anonymous&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here is the simplest example of a transaction I can provide:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;Option Explicit On
Public Sub Main()
    If TypeOf ThisApplication.ActiveDocument Is PartDocument Then

        Dim pyramidheight As String = InputBox("How high?", "Pyramid height", "10")
        GeneratePyramid(pyramidheight)
    Else
        MessageBox.Show("Suggest you create a new part file and run this rule again!")
    End If
End Sub

Public Sub GeneratePyramid(ByVal pyramidHeight As String)

    Dim height As Integer = Convert.ToInt32(pyramidheight)
    Dim rowCount As Integer = 1
    Dim spacing As Double = 10 'units = cm
    Dim oPartDocument As PartDocument = ThisApplication.ActiveDocument
    Dim oCompDef As PartComponentDefinition = oPartDocument.ComponentDefinition
    Dim oTrans As TransientGeometry = ThisApplication.TransientGeometry

    &lt;FONT color="#FF0000"&gt;Dim trans As Transaction = ThisApplication.TransactionManager.StartTransaction(oPartDocument, "Create pyramid of points")&lt;/FONT&gt;

    'i = row
    'j = column
    Dim XSpacing As Double = 0
    Dim YSpacing As Double = 0
    Dim ZSpacing As Double = 0
    For i As Integer = height To 0 Step -1
        'Dim tmpPoint As Point = ThisApplication.TransientGeometry.CreatePoint(0, 0, 0)


        For j As Integer = 1 To i
            Dim wp As WorkPoint = oCompDef.WorkPoints.AddFixed(oTrans.CreatePoint(XSpacing, YSpacing, ZSpacing))
			wp.Name = "WP" &amp;amp; i.ToString() &amp;amp; "." &amp;amp; j.ToString()
            'set up X Spacing
            XSpacing += spacing
        Next

        'For j As Integer = 1 To rowCount
        YSpacing += spacing
        XSpacing = (spacing * rowCount) / 2
        'Next
        rowCount += 1
    Next

&lt;FONT color="#FF0000"&gt;    trans.End()&lt;/FONT&gt;
End Sub

Sub updatestatusbar(ByVal message As String)
    ThisApplication.statusbartext = message
End Sub

Sub updatestatusbar(ByVal percent As Double, ByVal message As String)
    ThisApplication.statusbartext = message + " (" &amp;amp; percent.ToString("P1") + ")"
End Sub&lt;/PRE&gt;
&lt;P&gt;This process is explained in more detail on the following page:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://help.autodesk.com/view/INVNTOR/2019/ENU/?guid=GUID-991ABB26-6113-4E27-83F8-1699F259772E" target="_blank" rel="noopener"&gt;http://help.autodesk.com/view/INVNTOR/2019/ENU/?guid=GUID-991ABB26-6113-4E27-83F8-1699F259772E&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img class="lia-deferred-image lia-image-emoji" src="https://forums.autodesk.com/html/@B4D44A73814D7FC0D950DEDFACB97081/emoticons/1f642.png" alt=":slightly_smiling_face:" title=":slightly_smiling_face:" /&gt;&lt;/P&gt;</description>
    <pubDate>Thu, 07 Feb 2019 10:13:53 GMT</pubDate>
    <dc:creator>AlexFielder</dc:creator>
    <dc:date>2019-02-07T10:13:53Z</dc:date>
    <item>
      <title>transaction manager help</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/transaction-manager-help/m-p/8578011#M94135</link>
      <description>&lt;DIV class="lia-message-subject lia-component-message-view-widget-subject"&gt;
&lt;DIV class="MessageSubject"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV id="messageBodySimpleDisplay" class="lia-message-body lia-component-body-signature-highlight-escalation"&gt;
&lt;DIV class="lia-message-body-content"&gt;
&lt;P&gt;I am using code to check hole size and alignment of assembly. the only problem is when I click to undo I have to click it more times than I actually can. I have been trying to set up a transaction&amp;nbsp;within the code so it groups the rule altogether this is my code is there any way to do this since&amp;nbsp; sub&amp;nbsp;commands&lt;/P&gt;
&lt;PRE&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;main&lt;/SPAN&gt;
	 &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt; 

 &lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;face&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;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;, 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;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; = 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;/DIV&gt;
&lt;/DIV&gt;</description>
      <pubDate>Wed, 06 Feb 2019 19:31:06 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/transaction-manager-help/m-p/8578011#M94135</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-02-06T19:31:06Z</dc:date>
    </item>
    <item>
      <title>Re: transaction manager help</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/transaction-manager-help/m-p/8579301#M94145</link>
      <description>&lt;P&gt;Hi again&amp;nbsp;@Anonymous&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here is the simplest example of a transaction I can provide:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;Option Explicit On
Public Sub Main()
    If TypeOf ThisApplication.ActiveDocument Is PartDocument Then

        Dim pyramidheight As String = InputBox("How high?", "Pyramid height", "10")
        GeneratePyramid(pyramidheight)
    Else
        MessageBox.Show("Suggest you create a new part file and run this rule again!")
    End If
End Sub

Public Sub GeneratePyramid(ByVal pyramidHeight As String)

    Dim height As Integer = Convert.ToInt32(pyramidheight)
    Dim rowCount As Integer = 1
    Dim spacing As Double = 10 'units = cm
    Dim oPartDocument As PartDocument = ThisApplication.ActiveDocument
    Dim oCompDef As PartComponentDefinition = oPartDocument.ComponentDefinition
    Dim oTrans As TransientGeometry = ThisApplication.TransientGeometry

    &lt;FONT color="#FF0000"&gt;Dim trans As Transaction = ThisApplication.TransactionManager.StartTransaction(oPartDocument, "Create pyramid of points")&lt;/FONT&gt;

    'i = row
    'j = column
    Dim XSpacing As Double = 0
    Dim YSpacing As Double = 0
    Dim ZSpacing As Double = 0
    For i As Integer = height To 0 Step -1
        'Dim tmpPoint As Point = ThisApplication.TransientGeometry.CreatePoint(0, 0, 0)


        For j As Integer = 1 To i
            Dim wp As WorkPoint = oCompDef.WorkPoints.AddFixed(oTrans.CreatePoint(XSpacing, YSpacing, ZSpacing))
			wp.Name = "WP" &amp;amp; i.ToString() &amp;amp; "." &amp;amp; j.ToString()
            'set up X Spacing
            XSpacing += spacing
        Next

        'For j As Integer = 1 To rowCount
        YSpacing += spacing
        XSpacing = (spacing * rowCount) / 2
        'Next
        rowCount += 1
    Next

&lt;FONT color="#FF0000"&gt;    trans.End()&lt;/FONT&gt;
End Sub

Sub updatestatusbar(ByVal message As String)
    ThisApplication.statusbartext = message
End Sub

Sub updatestatusbar(ByVal percent As Double, ByVal message As String)
    ThisApplication.statusbartext = message + " (" &amp;amp; percent.ToString("P1") + ")"
End Sub&lt;/PRE&gt;
&lt;P&gt;This process is explained in more detail on the following page:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://help.autodesk.com/view/INVNTOR/2019/ENU/?guid=GUID-991ABB26-6113-4E27-83F8-1699F259772E" target="_blank" rel="noopener"&gt;http://help.autodesk.com/view/INVNTOR/2019/ENU/?guid=GUID-991ABB26-6113-4E27-83F8-1699F259772E&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img class="lia-deferred-image lia-image-emoji" src="https://forums.autodesk.com/html/@B4D44A73814D7FC0D950DEDFACB97081/emoticons/1f642.png" alt=":slightly_smiling_face:" title=":slightly_smiling_face:" /&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 07 Feb 2019 10:13:53 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/transaction-manager-help/m-p/8579301#M94145</guid>
      <dc:creator>AlexFielder</dc:creator>
      <dc:date>2019-02-07T10:13:53Z</dc:date>
    </item>
    <item>
      <title>Re: transaction manager help</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/transaction-manager-help/m-p/8579465#M94146</link>
      <description>&lt;P&gt;Thank you again&amp;nbsp;for all the help. The reason I posted I keep getting an error every time I try to place a transaction here is the error I keep receiving. I didn't&amp;nbsp;know if i needed to place a transaction&amp;nbsp;in each sub step of code&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="error 6.PNG" style="width: 635px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/600318i49C6E5ED5D16E669/image-size/large?v=v2&amp;amp;px=999" role="button" title="error 6.PNG" alt="error 6.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 07 Feb 2019 11:50:09 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/transaction-manager-help/m-p/8579465#M94146</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-02-07T11:50:09Z</dc:date>
    </item>
    <item>
      <title>Re: transaction manager help</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/transaction-manager-help/m-p/8579491#M94147</link>
      <description>&lt;P&gt;Post the code you have and I'll take a look.&lt;/P&gt;</description>
      <pubDate>Thu, 07 Feb 2019 11:54:21 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/transaction-manager-help/m-p/8579491#M94147</guid>
      <dc:creator>AlexFielder</dc:creator>
      <dc:date>2019-02-07T11:54:21Z</dc:date>
    </item>
    <item>
      <title>Re: transaction manager help</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/transaction-manager-help/m-p/8579574#M94148</link>
      <description>&lt;P&gt;ok here we go&amp;nbsp;&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;FONT color="#FF0000"&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;oPartDocument&lt;/SPAN&gt;, &lt;SPAN&gt;"Hole Alignment"&lt;/SPAN&gt;)
		&lt;/FONT&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;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;, 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;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; = 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;FONT color="#FF0000"&gt;&lt;SPAN&gt;trans&lt;/SPAN&gt;.&lt;SPAN&gt;end&lt;/SPAN&gt;&lt;/FONT&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;</description>
      <pubDate>Thu, 07 Feb 2019 12:27:15 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/transaction-manager-help/m-p/8579574#M94148</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-02-07T12:27:15Z</dc:date>
    </item>
    <item>
      <title>Re: transaction manager help</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/transaction-manager-help/m-p/8579594#M94149</link>
      <description>&lt;P&gt;Does that work then? It looks like it will to my eyes.&lt;/P&gt;</description>
      <pubDate>Thu, 07 Feb 2019 12:34:40 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/transaction-manager-help/m-p/8579594#M94149</guid>
      <dc:creator>AlexFielder</dc:creator>
      <dc:date>2019-02-07T12:34:40Z</dc:date>
    </item>
    <item>
      <title>Re: transaction manager help</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/transaction-manager-help/m-p/8579636#M94150</link>
      <description>&lt;P&gt;From everything i was reading,&amp;nbsp;I thought I was doing it right. but I still was getting the same error.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;(is there a simple way to go from vba&amp;nbsp;to vba.net)&lt;/P&gt;</description>
      <pubDate>Thu, 07 Feb 2019 12:51:34 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/transaction-manager-help/m-p/8579636#M94150</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-02-07T12:51:34Z</dc:date>
    </item>
    <item>
      <title>Re: transaction manager help</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/transaction-manager-help/m-p/8579660#M94151</link>
      <description>&lt;P&gt;You've got one error which can be fixed like this:&lt;/P&gt;
&lt;P&gt;Change this:&lt;/P&gt;
&lt;PRE&gt;Dim trans As Transaction = ThisApplication.TransactionManager.StartTransaction(oPartDocument, "Hole Alignment")&lt;/PRE&gt;
&lt;P&gt;To this:&lt;/P&gt;
&lt;PRE&gt;Dim trans As Transaction = ThisApplication.TransactionManager.StartTransaction(oDoc, "Hole Alignment")&lt;/PRE&gt;
&lt;P&gt;&lt;img class="lia-deferred-image lia-image-emoji" src="https://forums.autodesk.com/html/@B4D44A73814D7FC0D950DEDFACB97081/emoticons/1f642.png" alt=":slightly_smiling_face:" title=":slightly_smiling_face:" /&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 07 Feb 2019 13:01:10 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/transaction-manager-help/m-p/8579660#M94151</guid>
      <dc:creator>AlexFielder</dc:creator>
      <dc:date>2019-02-07T13:01:10Z</dc:date>
    </item>
    <item>
      <title>Re: transaction manager help</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/transaction-manager-help/m-p/8579724#M94152</link>
      <description>&lt;P&gt;yes that works perfectly&amp;nbsp;&lt;img id="smileyhappy" class="emoticon emoticon-smileyhappy" src="https://forums.autodesk.com/i/smilies/16x16_smiley-happy.png" alt="Smiley Happy" title="Smiley Happy" /&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 07 Feb 2019 13:24:05 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/transaction-manager-help/m-p/8579724#M94152</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-02-07T13:24:05Z</dc:date>
    </item>
  </channel>
</rss>

