<?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: An iLogic Rule, From Me, To You! in Inventor Programming - iLogic, Macros, AddIns &amp; Apprentice</title>
    <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/8290804#M89214</link>
    <description>&lt;P&gt;Thank you for your quick reply!&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Below you find the wetransfer link for the assembly.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="https://we.tl/t-fGVjLFsjHm" target="_blank"&gt;https://we.tl/t-fGVjLFsjHm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Kind regards,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Mitchel Stottelaar&lt;/P&gt;</description>
    <pubDate>Tue, 25 Sep 2018 12:41:50 GMT</pubDate>
    <dc:creator>Anonymous</dc:creator>
    <dc:date>2018-09-25T12:41:50Z</dc:date>
    <item>
      <title>iLogic Rule to create description based on dimensions, bounding box, stock number</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/7069140#M72111</link>
      <description>&lt;P&gt;This is my way of giving back to the forum.&lt;/P&gt;
&lt;P&gt;Thanks for all the help!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture.JPG" style="width: 143px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/353709iF45DCB9F54524BF8/image-size/small?v=v2&amp;amp;px=200" role="button" title="Capture.JPG" alt="Capture.JPG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I made an iLogic rule to automatically create descriptions for parts.&lt;/P&gt;
&lt;P&gt;Here's&amp;nbsp;how it&amp;nbsp;works:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;1. Run the rule.&lt;/P&gt;
&lt;P&gt;2. You are prompted to select&amp;nbsp;a line of a part in a drawing view.&lt;/P&gt;
&lt;P&gt;3. An input pox is diplayed&amp;nbsp;with an overridable default description.&lt;/P&gt;
&lt;P&gt;4. Click "OK" and you're done!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The code distinguishes between all of the content center parts in the above list,&lt;/P&gt;
&lt;P&gt;and creates a description based on dimensions/bounding box/stock number&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you have any comments on the code, be sure to let me know &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;
&lt;P&gt;I've tried to add helpful annotations, but know that I'm really not a coder.&lt;/P&gt;
&lt;P&gt;some of this code is just stitched together from&amp;nbsp;other sources.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here ya go:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Code to modify a part's description iPorperty based on shape, created by Jonathan Fowler&lt;/SPAN&gt;
    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Works by selecting a line segment from a part in a drawing view.&lt;/SPAN&gt;

    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Document declaration&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;Inventor&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Document&lt;/SPAN&gt;
    &lt;SPAN&gt;oDoc&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;ActiveDocument&lt;/SPAN&gt;
 
    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Prompt user to pick a line segment&lt;/SPAN&gt;
    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oDrawCurveSeg&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DrawingCurveSegment&lt;/SPAN&gt;
    &lt;SPAN&gt;oDrawCurveSeg&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;CommandManager&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Pick&lt;/SPAN&gt; &lt;SPAN&gt;_&lt;/SPAN&gt;
     &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;Inventor&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;SelectionFilterEnum&lt;/SPAN&gt;&lt;SPAN&gt;.
      &lt;/SPAN&gt;&lt;SPAN&gt;kDrawingCurveSegmentFilter&lt;/SPAN&gt;&lt;SPAN&gt;,
      &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Select a Drawing Curve&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;

    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Get the parent DrawingCurve&lt;/SPAN&gt;
    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oDrawCurve&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DrawingCurve&lt;/SPAN&gt;
    &lt;SPAN&gt;Try&lt;/SPAN&gt;
        &lt;SPAN&gt;oDrawCurve&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oDrawCurveSeg&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Parent&lt;/SPAN&gt;
    &lt;SPAN&gt;Catch&lt;/SPAN&gt; &lt;SPAN&gt;ex&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Exception&lt;/SPAN&gt;
        &lt;SPAN&gt;Exit Sub&lt;/SPAN&gt;
    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;

    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Get the model geometry this curve represents.&lt;/SPAN&gt;
    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oModelGeom&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Object&lt;/SPAN&gt;
    &lt;SPAN&gt;oModelGeom&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oDrawCurve&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;ModelGeometry&lt;/SPAN&gt;
    
    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Check to see if the returned object supports&lt;/SPAN&gt;
    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;the ContainingOccurrence property.&lt;/SPAN&gt;
    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt;
    
    &lt;SPAN&gt;Try&lt;/SPAN&gt;
        &lt;SPAN&gt;oOcc&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oModelGeom&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;ContainingOccurrence&lt;/SPAN&gt;
    &lt;SPAN&gt;Catch&lt;/SPAN&gt; &lt;SPAN&gt;ex&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Exception&lt;/SPAN&gt;
           &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;MessageBox.Show("Problem getting occurrence for: " &amp;amp; partName, "iLogic")&lt;/SPAN&gt;
    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
    
    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Define model geometry&lt;/SPAN&gt;
    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oModelGeometry&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oDrawCurveSeg&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Parent&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;ModelGeometry&lt;/SPAN&gt;
    
    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Define component definition&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;ComponentDefinition&lt;/SPAN&gt;
    &lt;SPAN&gt;oCompDef&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oModelGeometry&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;parent&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;componentdefinition&lt;/SPAN&gt;

    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Get part name&lt;/SPAN&gt;
    &lt;SPAN&gt;partName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Document&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;DisplayName&lt;/SPAN&gt;
    
    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Get the drawing view&lt;/SPAN&gt;
    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oDrwView&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DrawingView&lt;/SPAN&gt;
    &lt;SPAN&gt;oDrwView&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oDrawCurve&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Parent&lt;/SPAN&gt;

    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Define oPart As String&lt;/SPAN&gt;
    &lt;SPAN&gt;oPart&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Document&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;DisplayName&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;.ipt&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
    
    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Declare AutoType, the part shape type to be calculated.&lt;/SPAN&gt;
    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;AutoType&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;
    
    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Define Units of Measure&lt;/SPAN&gt;
    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;uom&lt;/SPAN&gt; &lt;SPAN&gt;as&lt;/SPAN&gt; &lt;SPAN&gt;UnitsOfMeasure&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oDoc&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;UnitsOfMeasure&lt;/SPAN&gt;    
    
    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Declare the range box.&lt;/SPAN&gt;
    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oRB&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Box&lt;/SPAN&gt;
    &lt;SPAN&gt;Try&lt;/SPAN&gt;
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Get the range box, aligned to part UCS, excluding work geometry.&lt;/SPAN&gt;
        &lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;sb&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;SurfaceBodies&lt;/SPAN&gt;
            &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oRB&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;oRB&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;sb&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;RangeBox&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Copy&lt;/SPAN&gt;
            &lt;SPAN&gt;Else&lt;/SPAN&gt;
                &lt;SPAN&gt;oRB&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Extend&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;sb&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;RangeBox&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;MinPoint&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
                &lt;SPAN&gt;oRB&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Extend&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;sb&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;RangeBox&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;MaxPoint&lt;/SPAN&gt;&lt;SPAN&gt;)&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;Catch&lt;/SPAN&gt; &lt;SPAN&gt;ex&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Exception&lt;/SPAN&gt;
        &lt;SPAN&gt;MessageBox&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Show&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Error finding extensions for part: &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;partName&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;iLogic&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;minp&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;point&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oRB&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;minPoint&lt;/SPAN&gt;
    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;maxp&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;point&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oRB&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;maxPoint&lt;/SPAN&gt;
    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;
    &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;

        &lt;SPAN&gt;InventorVb&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;DocumentUpdate&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;
        
        &lt;SPAN&gt;Try&lt;/SPAN&gt;
        &lt;SPAN&gt;oCheckFile&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;iProperties&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Value&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Project&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Part Number&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Catch&lt;/SPAN&gt;
        &lt;SPAN&gt;MessageBox&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Show&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Error finding file for part: &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;partName&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;iLogic&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Exit Sub&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;

        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Get part dimensions&lt;/SPAN&gt;
        &lt;SPAN&gt;dp&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;
        &lt;SPAN&gt;X&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Round&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;uom&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;ConvertUnits&lt;/SPAN&gt; &lt;SPAN&gt;((&lt;/SPAN&gt;&lt;SPAN&gt;maxP&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;X&lt;/SPAN&gt; &lt;SPAN&gt;-&lt;/SPAN&gt; &lt;SPAN&gt;minP&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;X&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;cm&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;uom&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;LengthUnits&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;dp&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Y&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Round&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;uom&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;ConvertUnits&lt;/SPAN&gt; &lt;SPAN&gt;((&lt;/SPAN&gt;&lt;SPAN&gt;maxP&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Y&lt;/SPAN&gt; &lt;SPAN&gt;-&lt;/SPAN&gt; &lt;SPAN&gt;minP&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Y&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;cm&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;uom&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;LengthUnits&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;dp&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Z&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Round&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;uom&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;ConvertUnits&lt;/SPAN&gt; &lt;SPAN&gt;((&lt;/SPAN&gt;&lt;SPAN&gt;maxP&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Z&lt;/SPAN&gt; &lt;SPAN&gt;-&lt;/SPAN&gt; &lt;SPAN&gt;minP&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Z&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;cm&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;uom&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;LengthUnits&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;dp&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
                &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;MessageBox.Show("Extents: " &amp;amp; X &amp;amp; " : " &amp;amp; Y &amp;amp; " : "  &amp;amp; Z, "iLogic")&lt;/SPAN&gt;


        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Sort dimensions largest to smallest&lt;/SPAN&gt;
        &lt;SPAN&gt;Thickness&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;MinOfMany&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;X&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;Y&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;Z&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Length&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;MaxOfMany&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;X&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;Y&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;Z&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Width&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;X&lt;/SPAN&gt;
        &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Thickness&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;X&lt;/SPAN&gt; &lt;SPAN&gt;Or&lt;/SPAN&gt; &lt;SPAN&gt;Length&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;X&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;Width&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Y&lt;/SPAN&gt;
            &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Thickness&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Y&lt;/SPAN&gt; &lt;SPAN&gt;Or&lt;/SPAN&gt; &lt;SPAN&gt;Length&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Y&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;Width&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Z&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;'&lt;/SPAN&gt;&lt;SPAN&gt;Get stock number properties (which are sometimes different to actual dimensions)&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;stockprops&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;
        &lt;SPAN&gt;Try&lt;/SPAN&gt;
            &lt;SPAN&gt;stockprops&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Split&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;iProperties&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Value&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Project&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Stock Number&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;x&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Catch&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;

        &lt;SPAN&gt;Try&lt;/SPAN&gt;
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Use part parameter named "Type", if it exists.&lt;/SPAN&gt;
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;This can be used as an override for a part which is being wrongly assessed.&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Type&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Catch&lt;/SPAN&gt; &lt;SPAN&gt;ex&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Exception&lt;/SPAN&gt;
        
            &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Test for parameters&lt;/SPAN&gt;
            &lt;SPAN&gt;Try&lt;/SPAN&gt;
            &lt;SPAN&gt;parametro&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_NG&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
            &lt;SPAN&gt;G_NG&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt;
            &lt;SPAN&gt;Catch&lt;/SPAN&gt;
            &lt;SPAN&gt;G_NG&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
            
            &lt;SPAN&gt;Try&lt;/SPAN&gt;
            &lt;SPAN&gt;parametro&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_T&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
            &lt;SPAN&gt;G_T&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt;
            &lt;SPAN&gt;Catch&lt;/SPAN&gt;
            &lt;SPAN&gt;G_T&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
            
            &lt;SPAN&gt;Try&lt;/SPAN&gt;
            &lt;SPAN&gt;parametro&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_W&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
            &lt;SPAN&gt;G_W&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt;
            &lt;SPAN&gt;Catch&lt;/SPAN&gt;
            &lt;SPAN&gt;G_W&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
            
            &lt;SPAN&gt;Try&lt;/SPAN&gt;
            &lt;SPAN&gt;parametro&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_ER&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
            &lt;SPAN&gt;G_ER&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt;
            &lt;SPAN&gt;Catch&lt;/SPAN&gt;
            &lt;SPAN&gt;G_ER&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
            
            &lt;SPAN&gt;Try&lt;/SPAN&gt;
            &lt;SPAN&gt;parametro&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_T1&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
            &lt;SPAN&gt;G_T1&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt;
            &lt;SPAN&gt;Catch&lt;/SPAN&gt;
            &lt;SPAN&gt;G_T1&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
            
            &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Compare to expected parameters&lt;/SPAN&gt;
            &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;G_NG&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;AutoType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;PFC&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
            &lt;SPAN&gt;ElseIf&lt;/SPAN&gt; &lt;SPAN&gt;G_T1&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt; &lt;SPAN&gt;And&lt;/SPAN&gt; &lt;SPAN&gt;G_W&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt; &lt;SPAN&gt;And&lt;/SPAN&gt; &lt;SPAN&gt;G_ER&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt; &lt;SPAN&gt;And&lt;/SPAN&gt; &lt;SPAN&gt;G_T&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;AutoType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;RHS&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
            &lt;SPAN&gt;ElseIf&lt;/SPAN&gt; &lt;SPAN&gt;G_T&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt; &lt;SPAN&gt;And&lt;/SPAN&gt; &lt;SPAN&gt;G_W&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;AutoType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;CHS&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
            &lt;SPAN&gt;ElseIf&lt;/SPAN&gt; &lt;SPAN&gt;G_T&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt; &lt;SPAN&gt;And&lt;/SPAN&gt; &lt;SPAN&gt;G_W&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;AutoType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;RD BAR&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;    
            &lt;SPAN&gt;ElseIf&lt;/SPAN&gt; &lt;SPAN&gt;G_T1&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt; &lt;SPAN&gt;And&lt;/SPAN&gt; &lt;SPAN&gt;G_NG&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;AutoType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;UC&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
            &lt;SPAN&gt;ElseIf&lt;/SPAN&gt; &lt;SPAN&gt;G_ER&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;AutoType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;RSA&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
            &lt;SPAN&gt;ElseIf&lt;/SPAN&gt; &lt;SPAN&gt;G_W&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt; &lt;SPAN&gt;And&lt;/SPAN&gt; &lt;SPAN&gt;G_T&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;AutoType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;F BAR&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
            &lt;SPAN&gt;Else&lt;/SPAN&gt;
            &lt;SPAN&gt;AutoType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;""&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;Try&lt;/SPAN&gt;
        
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Set Shape Type&lt;/SPAN&gt;
        &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;AutoType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;""&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Prompt for manual input - in format "PFC", "F BAR", "RD BAR", "UC", etc.&lt;/SPAN&gt;
        &lt;SPAN&gt;oType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;InputBox&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Treat as:&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Part Type&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;AutoType&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Else&lt;/SPAN&gt;
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Use automatically calculated type&lt;/SPAN&gt;
        &lt;SPAN&gt;oType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;AutoType&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
        
    
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Create a default description&lt;/SPAN&gt;
        &lt;SPAN&gt;Select&lt;/SPAN&gt; &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;UCase&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oType&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        
        &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;PLATE&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;PLT &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Thickness&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; THK &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Length&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Width&lt;/SPAN&gt;
        
        &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;F BAR&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;F/BAR &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Width&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Thickness&lt;/SPAN&gt;
        
        &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;CHS&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
        &lt;SPAN&gt;Try&lt;/SPAN&gt; 
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;CHS &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_H&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; OD x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_T&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; WT&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
        &lt;SPAN&gt;Catch&lt;/SPAN&gt;
        &lt;SPAN&gt;MessageBox&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Show&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Error getting parameters&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;iLogic&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;""&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
        
        &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;SHS&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;RHS&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
        &lt;SPAN&gt;Try&lt;/SPAN&gt;
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Distinguish between square and rectangular section&lt;/SPAN&gt;
        &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_W&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_H&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;SHS &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_H&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_W&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_T&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Else&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;RHS &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_H&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_W&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_T&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
        &lt;SPAN&gt;Catch&lt;/SPAN&gt;
        &lt;SPAN&gt;MessageBox&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Show&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Error getting parameters&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;iLogic&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;""&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
        
        &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;RD BAR&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
        &lt;SPAN&gt;Try&lt;/SPAN&gt; 
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;RD BAR DIA. &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_H&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Catch&lt;/SPAN&gt;
        &lt;SPAN&gt;MessageBox&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Show&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Error getting parameters&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;iLogic&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;""&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
        
        &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;RSA&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
        &lt;SPAN&gt;Try&lt;/SPAN&gt; 
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;RSA &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_H&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_W&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_T&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Catch&lt;/SPAN&gt;
        &lt;SPAN&gt;MessageBox&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Show&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Error getting parameters&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;iLogic&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;""&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
        
        &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;PFC&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
        &lt;SPAN&gt;Try&lt;/SPAN&gt; 
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;PFC &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;stockprops&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;stockprops&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;stockprops&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;2&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Catch&lt;/SPAN&gt;
        &lt;SPAN&gt;MessageBox&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Show&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Error getting parameters&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;iLogic&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;""&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;

        &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;UC&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;UB&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
        &lt;SPAN&gt;Try&lt;/SPAN&gt;
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Distinguish between collumn and beam&lt;/SPAN&gt;
        &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Val&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;stockprops&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;))&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;=&lt;/SPAN&gt; &lt;SPAN&gt;Val&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;stockprops&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;SPAN&gt;))&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;UC &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;stockprops&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;stockprops&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;stockprops&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;2&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Else&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;UB &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;stockprops&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;stockprops&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;stockprops&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;2&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
        &lt;SPAN&gt;Catch&lt;/SPAN&gt;
        &lt;SPAN&gt;MessageBox&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Show&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Error getting parameters&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;iLogic&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;""&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;

        &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;Else&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;""&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Select&lt;/SPAN&gt;    
        
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Show input box with default description&lt;/SPAN&gt;
        &lt;SPAN&gt;oNewDescription&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;InputBox&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Description for '&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;partName&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;':&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Description Editor&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;AutoName&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        
        &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oNewDescription&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;""&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Cancel if no description is entered.&lt;/SPAN&gt;
        &lt;SPAN&gt;MessageBox&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Show&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Description change cancelled.&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;iLogic&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Else&lt;/SPAN&gt;
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Change part description&lt;/SPAN&gt;
        &lt;SPAN&gt;iProperties&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Value&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Project&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Description&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oNewDescription&lt;/SPAN&gt;
        &lt;SPAN&gt;InventorVb&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;DocumentUpdate&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Restart to choose next part&lt;/SPAN&gt;
        &lt;SPAN&gt;iLogicVb&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;RunRule&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Dimensions - Individual&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
        &lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 17 Jul 2024 21:25:31 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/7069140#M72111</guid>
      <dc:creator>jmfowler1996</dc:creator>
      <dc:date>2024-07-17T21:25:31Z</dc:date>
    </item>
    <item>
      <title>Re: An iLogic Rule, From Me, To You!</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/7069418#M72113</link>
      <description>&lt;P&gt;An update to make it better at recognizing plate.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Code to modify a part's description iPorperty based on shape.&lt;/SPAN&gt;
    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Works by selecting a line segment from a part in a drawing view.&lt;/SPAN&gt;

    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Document declaration&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;Inventor&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Document&lt;/SPAN&gt;
    &lt;SPAN&gt;oDoc&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;ActiveDocument&lt;/SPAN&gt;
 
    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Prompt user to pick a line segment&lt;/SPAN&gt;
    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oDrawCurveSeg&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DrawingCurveSegment&lt;/SPAN&gt;
    &lt;SPAN&gt;oDrawCurveSeg&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;CommandManager&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Pick&lt;/SPAN&gt; &lt;SPAN&gt;_&lt;/SPAN&gt;
     &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;Inventor&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;SelectionFilterEnum&lt;/SPAN&gt;&lt;SPAN&gt;.
      &lt;/SPAN&gt;&lt;SPAN&gt;kDrawingCurveSegmentFilter&lt;/SPAN&gt;&lt;SPAN&gt;,
      &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Select a Drawing Curve&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;

    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Get the parent DrawingCurve&lt;/SPAN&gt;
    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oDrawCurve&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DrawingCurve&lt;/SPAN&gt;
    &lt;SPAN&gt;Try&lt;/SPAN&gt;
        &lt;SPAN&gt;oDrawCurve&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oDrawCurveSeg&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Parent&lt;/SPAN&gt;
    &lt;SPAN&gt;Catch&lt;/SPAN&gt; &lt;SPAN&gt;ex&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Exception&lt;/SPAN&gt;
        &lt;SPAN&gt;Exit Sub&lt;/SPAN&gt;
    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;

    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Get the model geometry this curve represents.&lt;/SPAN&gt;
    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oModelGeom&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Object&lt;/SPAN&gt;
    &lt;SPAN&gt;oModelGeom&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oDrawCurve&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;ModelGeometry&lt;/SPAN&gt;
    
    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Check to see if the returned object supports&lt;/SPAN&gt;
    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;the ContainingOccurrence property.&lt;/SPAN&gt;
    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt;
    &lt;SPAN&gt;oModelGeom&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oDrawCurve&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;ModelGeometry&lt;/SPAN&gt;
    
    &lt;SPAN&gt;Try&lt;/SPAN&gt;
        &lt;SPAN&gt;oOcc&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oModelGeom&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;ContainingOccurrence&lt;/SPAN&gt;
    &lt;SPAN&gt;Catch&lt;/SPAN&gt; &lt;SPAN&gt;ex&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Exception&lt;/SPAN&gt;
           &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;MessageBox.Show("Problem getting occurrence for: " &amp;amp; partName, "iLogic")&lt;/SPAN&gt;
    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
    
    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Define model geometry&lt;/SPAN&gt;
    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oModelGeometry&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oDrawCurveSeg&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Parent&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;ModelGeometry&lt;/SPAN&gt;
    
    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Define component definition&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;ComponentDefinition&lt;/SPAN&gt;
    &lt;SPAN&gt;oCompDef&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oModelGeometry&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;parent&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;componentdefinition&lt;/SPAN&gt;

    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Get part name&lt;/SPAN&gt;
    &lt;SPAN&gt;partName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Document&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;DisplayName&lt;/SPAN&gt;
    
    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Get the drawing view&lt;/SPAN&gt;
    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oDrwView&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DrawingView&lt;/SPAN&gt;
    &lt;SPAN&gt;oDrwView&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oDrawCurve&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Parent&lt;/SPAN&gt;

    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Define oPart As String&lt;/SPAN&gt;
    &lt;SPAN&gt;oPart&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Document&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;DisplayName&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;.ipt&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;

    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Declare AutoType, the part shape type to be calculated.&lt;/SPAN&gt;
    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;AutoType&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;
    
    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Define Units of Measure&lt;/SPAN&gt;
    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;uom&lt;/SPAN&gt; &lt;SPAN&gt;as&lt;/SPAN&gt; &lt;SPAN&gt;UnitsOfMeasure&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oDoc&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;UnitsOfMeasure&lt;/SPAN&gt;    
    
    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;minp&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;point&lt;/SPAN&gt;
    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;maxp&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;point&lt;/SPAN&gt;
    
    &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Declare the range box.&lt;/SPAN&gt;
    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oRB&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Box&lt;/SPAN&gt;
    &lt;SPAN&gt;Try&lt;/SPAN&gt;
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Get the range box, aligned to part UCS, excluding work geometry.&lt;/SPAN&gt;
        &lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;sb&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;SurfaceBodies&lt;/SPAN&gt;
            &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oRB&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;oRB&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;sb&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;RangeBox&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Copy&lt;/SPAN&gt;
            &lt;SPAN&gt;Else&lt;/SPAN&gt;
                &lt;SPAN&gt;oRB&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Extend&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;sb&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;RangeBox&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;MinPoint&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
                &lt;SPAN&gt;oRB&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Extend&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;sb&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;RangeBox&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;MaxPoint&lt;/SPAN&gt;&lt;SPAN&gt;)&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;minp&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oRB&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;minPoint&lt;/SPAN&gt;
        &lt;SPAN&gt;maxp&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oRB&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;maxPoint&lt;/SPAN&gt;
    
        &lt;SPAN&gt;Catch&lt;/SPAN&gt; &lt;SPAN&gt;ex&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Exception&lt;/SPAN&gt;
        &lt;SPAN&gt;MessageBox&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Show&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Error finding extensions for part: &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;partName&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;iLogic&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Exit Sub&lt;/SPAN&gt;
    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
    
    &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;
    &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;

        &lt;SPAN&gt;InventorVb&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;DocumentUpdate&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;
        
        &lt;SPAN&gt;Try&lt;/SPAN&gt;
        &lt;SPAN&gt;oCheckFile&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;iProperties&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Value&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Project&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Part Number&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Catch&lt;/SPAN&gt;
        &lt;SPAN&gt;MessageBox&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Show&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Error finding file for part: &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;partName&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;iLogic&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Exit Sub&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;

        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Get part dimensions&lt;/SPAN&gt;
        &lt;SPAN&gt;dp&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;
        &lt;SPAN&gt;X&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Round&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;uom&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;ConvertUnits&lt;/SPAN&gt; &lt;SPAN&gt;((&lt;/SPAN&gt;&lt;SPAN&gt;maxP&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;X&lt;/SPAN&gt; &lt;SPAN&gt;-&lt;/SPAN&gt; &lt;SPAN&gt;minP&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;X&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;cm&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;uom&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;LengthUnits&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;dp&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Y&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Round&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;uom&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;ConvertUnits&lt;/SPAN&gt; &lt;SPAN&gt;((&lt;/SPAN&gt;&lt;SPAN&gt;maxP&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Y&lt;/SPAN&gt; &lt;SPAN&gt;-&lt;/SPAN&gt; &lt;SPAN&gt;minP&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Y&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;cm&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;uom&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;LengthUnits&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;dp&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Z&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Round&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;uom&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;ConvertUnits&lt;/SPAN&gt; &lt;SPAN&gt;((&lt;/SPAN&gt;&lt;SPAN&gt;maxP&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Z&lt;/SPAN&gt; &lt;SPAN&gt;-&lt;/SPAN&gt; &lt;SPAN&gt;minP&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Z&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;cm&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;uom&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;LengthUnits&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;dp&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
                &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;MessageBox.Show("Extents: " &amp;amp; X &amp;amp; " : " &amp;amp; Y &amp;amp; " : "  &amp;amp; Z, "iLogic")&lt;/SPAN&gt;


        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Sort dimensions largest to smallest&lt;/SPAN&gt;
        &lt;SPAN&gt;Thickness&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;MinOfMany&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;X&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;Y&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;Z&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Length&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;MaxOfMany&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;X&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;Y&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;Z&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Width&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;X&lt;/SPAN&gt;
        &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Thickness&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;X&lt;/SPAN&gt; &lt;SPAN&gt;Or&lt;/SPAN&gt; &lt;SPAN&gt;Length&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;X&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;Width&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Y&lt;/SPAN&gt;
            &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Thickness&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Y&lt;/SPAN&gt; &lt;SPAN&gt;Or&lt;/SPAN&gt; &lt;SPAN&gt;Length&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Y&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;Width&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Z&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;'&lt;/SPAN&gt;&lt;SPAN&gt;Get stock number properties (which are sometimes different to actual dimensions)&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;stockprops&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;
        &lt;SPAN&gt;Try&lt;/SPAN&gt;
            &lt;SPAN&gt;stockprops&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Split&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;iProperties&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Value&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Project&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Stock Number&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;x&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Catch&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;

        &lt;SPAN&gt;Try&lt;/SPAN&gt;
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Use part parameter named "Type", if it exists.&lt;/SPAN&gt;
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;This can be used as an override for a part which is being wrongly assessed.&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Type&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Catch&lt;/SPAN&gt; &lt;SPAN&gt;ex&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Exception&lt;/SPAN&gt;
        
            &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Test for parameters&lt;/SPAN&gt;
            &lt;SPAN&gt;Try&lt;/SPAN&gt;
            &lt;SPAN&gt;parametro&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_NG&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
            &lt;SPAN&gt;G_NG&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt;
            &lt;SPAN&gt;Catch&lt;/SPAN&gt;
            &lt;SPAN&gt;G_NG&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
            
            &lt;SPAN&gt;Try&lt;/SPAN&gt;
            &lt;SPAN&gt;parametro&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_T&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
            &lt;SPAN&gt;G_T&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt;
            &lt;SPAN&gt;Catch&lt;/SPAN&gt;
            &lt;SPAN&gt;G_T&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
            
            &lt;SPAN&gt;Try&lt;/SPAN&gt;
            &lt;SPAN&gt;parametro&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_W&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
            &lt;SPAN&gt;G_W&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt;
            &lt;SPAN&gt;Catch&lt;/SPAN&gt;
            &lt;SPAN&gt;G_W&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
            
            &lt;SPAN&gt;Try&lt;/SPAN&gt;
            &lt;SPAN&gt;parametro&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_ER&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
            &lt;SPAN&gt;G_ER&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt;
            &lt;SPAN&gt;Catch&lt;/SPAN&gt;
            &lt;SPAN&gt;G_ER&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
            
            &lt;SPAN&gt;Try&lt;/SPAN&gt;
            &lt;SPAN&gt;parametro&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_T1&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
            &lt;SPAN&gt;G_T1&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt;
            &lt;SPAN&gt;Catch&lt;/SPAN&gt;
            &lt;SPAN&gt;G_T1&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
            
            &lt;SPAN&gt;Try&lt;/SPAN&gt;
            &lt;SPAN&gt;parametro&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_H&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
            &lt;SPAN&gt;G_H&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt;
            &lt;SPAN&gt;Catch&lt;/SPAN&gt;
            &lt;SPAN&gt;G_H&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
            
            &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Compare to expected parameters&lt;/SPAN&gt;
            &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;G_NG&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;AutoType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;PFC&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
            &lt;SPAN&gt;ElseIf&lt;/SPAN&gt; &lt;SPAN&gt;G_T1&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt; &lt;SPAN&gt;And&lt;/SPAN&gt; &lt;SPAN&gt;G_W&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt; &lt;SPAN&gt;And&lt;/SPAN&gt; &lt;SPAN&gt;G_ER&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt; &lt;SPAN&gt;And&lt;/SPAN&gt; &lt;SPAN&gt;G_T&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;AutoType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;RHS&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
            &lt;SPAN&gt;ElseIf&lt;/SPAN&gt; &lt;SPAN&gt;G_T&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt; &lt;SPAN&gt;And&lt;/SPAN&gt; &lt;SPAN&gt;G_W&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;AutoType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;CHS&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
            &lt;SPAN&gt;ElseIf&lt;/SPAN&gt; &lt;SPAN&gt;G_T&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt; &lt;SPAN&gt;And&lt;/SPAN&gt; &lt;SPAN&gt;G_W&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt; &lt;SPAN&gt;And&lt;/SPAN&gt; &lt;SPAN&gt;G_H&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;AutoType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;RD BAR&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;    
            &lt;SPAN&gt;ElseIf&lt;/SPAN&gt; &lt;SPAN&gt;G_T1&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt; &lt;SPAN&gt;And&lt;/SPAN&gt; &lt;SPAN&gt;G_NG&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;AutoType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;UC&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
            &lt;SPAN&gt;ElseIf&lt;/SPAN&gt; &lt;SPAN&gt;G_ER&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;AutoType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;RSA&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
            &lt;SPAN&gt;ElseIf&lt;/SPAN&gt; &lt;SPAN&gt;G_W&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt; &lt;SPAN&gt;And&lt;/SPAN&gt; &lt;SPAN&gt;G_T&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;AutoType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;F BAR&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
            &lt;SPAN&gt;ElseIf&lt;/SPAN&gt; &lt;SPAN&gt;G_H&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;AutoType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;PLATE&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
            &lt;SPAN&gt;Else&lt;/SPAN&gt;
            &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;leave blank if no match is found.&lt;/SPAN&gt;
            &lt;SPAN&gt;AutoType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;""&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;Try&lt;/SPAN&gt;
        
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Set Shape Type&lt;/SPAN&gt;
        &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;AutoType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;""&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Prompt for manual input - in format "PFC", "F BAR", "RD BAR", "UC", etc.&lt;/SPAN&gt;
        &lt;SPAN&gt;oType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;InputBox&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Treat as:&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Part Type&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;AutoType&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Else&lt;/SPAN&gt;
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Use automatically calculated type&lt;/SPAN&gt;
        &lt;SPAN&gt;oType&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;AutoType&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
        
    
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Create a default description&lt;/SPAN&gt;
        &lt;SPAN&gt;Select&lt;/SPAN&gt; &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;UCase&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oType&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        
        &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;PLATE&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;PLT &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Thickness&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; THK &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Length&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Width&lt;/SPAN&gt;
        
        &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;F BAR&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;F/BAR &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Width&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Thickness&lt;/SPAN&gt;
        
        &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;CHS&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
        &lt;SPAN&gt;Try&lt;/SPAN&gt; 
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;CHS &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_H&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; OD x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_T&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; WT&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
        &lt;SPAN&gt;Catch&lt;/SPAN&gt;
        &lt;SPAN&gt;MessageBox&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Show&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Error getting parameters&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;iLogic&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;""&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
        
        &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;SHS&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;RHS&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
        &lt;SPAN&gt;Try&lt;/SPAN&gt;
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Distinguish between square and rectangular section&lt;/SPAN&gt;
        &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_W&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_H&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;SHS &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_H&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_W&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_T&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Else&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;RHS &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_H&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_W&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_T&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
        &lt;SPAN&gt;Catch&lt;/SPAN&gt;
        &lt;SPAN&gt;MessageBox&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Show&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Error getting parameters as &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;oType&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;iLogic&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;""&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
        
        &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;RD BAR&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
        &lt;SPAN&gt;Try&lt;/SPAN&gt; 
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;RD BAR DIA. &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_H&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Catch&lt;/SPAN&gt;
        &lt;SPAN&gt;MessageBox&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Show&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Error getting parameters as &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;oType&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;iLogic&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;""&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
        
        &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;RSA&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
        &lt;SPAN&gt;Try&lt;/SPAN&gt; 
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;RSA &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_H&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_W&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;G_T&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Catch&lt;/SPAN&gt;
        &lt;SPAN&gt;MessageBox&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Show&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Error getting parameters as &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;oType&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;iLogic&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;""&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
        
        &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;PFC&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
        &lt;SPAN&gt;Try&lt;/SPAN&gt; 
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;PFC &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;stockprops&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;stockprops&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;stockprops&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;2&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Catch&lt;/SPAN&gt;
        &lt;SPAN&gt;MessageBox&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Show&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Error getting parameters as &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;oType&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;iLogic&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;""&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;

        &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;UC&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;UB&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
        &lt;SPAN&gt;Try&lt;/SPAN&gt;
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Distinguish between collumn and beam&lt;/SPAN&gt;
        &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Val&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;stockprops&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;))&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;=&lt;/SPAN&gt; &lt;SPAN&gt;Val&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;stockprops&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;SPAN&gt;))&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;UC &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;stockprops&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;stockprops&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;stockprops&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;2&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Else&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;UB &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;stockprops&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;stockprops&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt; x &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;stockprops&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;2&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
        &lt;SPAN&gt;Catch&lt;/SPAN&gt;
        &lt;SPAN&gt;MessageBox&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Show&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Error getting parameters as &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;oType&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;iLogic&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;""&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;

        &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;Else&lt;/SPAN&gt;
        &lt;SPAN&gt;AutoName&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;""&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Select&lt;/SPAN&gt;    
        
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Show input box with default description&lt;/SPAN&gt;
        &lt;SPAN&gt;oNewDescription&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;InputBox&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Description for '&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;partName&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;':&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Description Editor&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;AutoName&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        
        &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oNewDescription&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;""&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Cancel if no description is entered.&lt;/SPAN&gt;
        &lt;SPAN&gt;MessageBox&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Show&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Description change cancelled.&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;iLogic&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;Else&lt;/SPAN&gt;
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Change part description&lt;/SPAN&gt;
        &lt;SPAN&gt;iProperties&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Value&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;oPart&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Project&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Description&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;oNewDescription&lt;/SPAN&gt;
        &lt;SPAN&gt;InventorVb&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;DocumentUpdate&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;
        &lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;Restart to choose next part&lt;/SPAN&gt;
        &lt;SPAN&gt;iLogicVb&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;RunRule&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;Dimensions - Individual&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
        
                &lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 08 May 2017 15:32:18 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/7069418#M72113</guid>
      <dc:creator>jmfowler1996</dc:creator>
      <dc:date>2017-05-08T15:32:18Z</dc:date>
    </item>
    <item>
      <title>Re: An iLogic Rule, From Me, To You!</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/7241173#M73631</link>
      <description>&lt;P&gt;Another update.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I wish I could just edit my original post, but I don't seem to be able to, so here's the update:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;	'Code to modify a part's description iPorperty based on shape. Created by Jonathan Fowler.
	'Works by selecting a line segment from a part in a drawing view.

	'Document declaration
    Dim oDoc As Inventor.Document
    oDoc = ThisApplication.ActiveDocument
 
    'Prompt user to pick a line segment
    'Dim oDrawCurveSeg As DrawingCurveSegment
    oDrawCurveSeg = ThisApplication.CommandManager.Pick _
     (Inventor.SelectionFilterEnum.
      kDrawingCurveSegmentFilter,
      "Select a Drawing Curve")

	'Get the parent DrawingCurve
    Dim oDrawCurve As DrawingCurve
	Try
		oDrawCurve = oDrawCurveSeg.Parent
	Catch ex As Exception
		'MessageBox.Show("No drawing curve found.", "iLogic")
		Exit Sub
	End Try

    'Get the model geometry this curve represents.
    Dim oModelGeom As Object
    oModelGeom = oDrawCurve.ModelGeometry
	
	'Check to see if the returned object supports
    'the ContainingOccurrence property.
    Dim oOcc As ComponentOccurrence
	
	Try
    	oOcc = oModelGeom.ContainingOccurrence
    Catch ex As Exception
   		'MessageBox.Show("Problem getting occurrence for: " &amp;amp; partName, "iLogic")
    End Try
	
	'Define model geometry
    Dim oModelGeometry = oDrawCurveSeg.Parent.ModelGeometry
	
	'Define component definition
	Dim oCompDef As ComponentDefinition
    oCompDef = oModelGeometry.parent.componentdefinition

	'Get part name
	partName = oCompDef.Document.DisplayName
	'MessageBox.Show(partName &amp;amp; " selected.", "iLogic")
	
    'Get the drawing view
    Dim oDrwView As DrawingView
    oDrwView = oDrawCurve.Parent

	'Define oPart As String
	oPart = oCompDef.Document.DisplayName &amp;amp; ".ipt"

	'Declare AutoType, the part shape type to be calculated.
	Dim AutoType As String
	
	'Define Units of Measure
	Dim uom as UnitsOfMeasure = oDoc.UnitsOfMeasure	
	
	Dim minp As point
	Dim maxp As point
	
	'Declare the range box.
	Dim oRB As Box
	Try
		'Get the range box, aligned to part UCS, excluding work geometry.
		For Each sb In oCompDef.SurfaceBodies
			If oRB Is Nothing Then
				oRB = sb.RangeBox.Copy
			Else
				oRB.Extend(sb.RangeBox.MinPoint)
				oRB.Extend(sb.RangeBox.MaxPoint)
			End If
		Next
		
		minp = oRB.minPoint
		maxp = oRB.maxPoint
	
		Catch ex As Exception
		MessageBox.Show("Error finding extensions for part: " &amp;amp; partName, "iLogic")
		Exit Sub
	End Try
	
	Dim AutoName As String
	AutoName = "-"

		InventorVb.DocumentUpdate()
		
		Try
		oCheckFile = iProperties.Value(oPart, "Project", "Part Number")
		Catch
		MessageBox.Show("Error finding file for part: " &amp;amp; partName, "iLogic")
		Exit Sub
		End Try

		'Get part dimensions
		dp=0
		X = Round(uom.ConvertUnits ((maxP.X - minP.X), "cm", uom.LengthUnits), dp)
		Y = Round(uom.ConvertUnits ((maxP.Y - minP.Y), "cm", uom.LengthUnits), dp)
		Z = Round(uom.ConvertUnits ((maxP.Z - minP.Z), "cm", uom.LengthUnits), dp)
				'MessageBox.Show("Extents: " &amp;amp; X &amp;amp; " : " &amp;amp; Y &amp;amp; " : "  &amp;amp; Z, "iLogic")
		'Sort dimensions from smallest to largest
		Dim extents As New ArrayList()
		extents.add(X)
		extents.add(Y)
		extents.add(Z)
		extents.Sort()
				'MessageBox.Show("Extents: " &amp;amp; extents(0) &amp;amp; " : " &amp;amp; extents(1) &amp;amp; " : "  &amp;amp; extents(2), "iLogic")
				
		'Assign dimensions
		Thickness = extents(0)
		Width = extents(1)
		Length = extents(2)
		
		'Get stock number properties (which are sometimes different to actual dimensions)
		Dim stockprops() As String
		Try
			stockprops = Split(iProperties.Value(oPart, "Project", "Stock Number"), "x")
		Catch
		End Try
		
		'Get classification for fasteners
		Dim stockclass() As String
		Try
			stockclass = Split(iProperties.Value(oPart, "Project", "Part Number"), "-")
			oClass = stockclass(1)
			oClass = Right(oClass, Len(oClass)-1)
			If InStr(oClass, " ") &amp;gt; 0 Then
			oClass = Left(oClass, InStr(oClass, " ")-1)
			End If
			If Not UCase(Left(oClass, 1)) = "M" Then
			oClass = oClass &amp;amp; """"
			If Not InStr(iProperties.Value(oPart, "Project", "Part Number"), "UNC") = 0 Then
			stand = " UNC"
			End If
			If Not InStr(iProperties.Value(oPart, "Project", "Part Number"), "UNF") = 0 Then
			stand = " UNF"
			End If
			Else
			stand = ""
			
			End If
		Catch
		End Try
		
		Try
		'Use part parameter named "Type", if it exists.
		'This can be used as an override for a part which is being wrongly assessed.
		AutoType = Parameter(oPart, "Type")
		Catch ex As Exception
		
			'Create a list of parameters to check for.
			Dim paramstocheck As New ArrayList()
			
			paramstocheck.add("G_NG")
			paramstocheck.add("G_T")
			paramstocheck.add("G_W")
			paramstocheck.add("G_ER")
			paramstocheck.add("G_T1")
			paramstocheck.add("G_H")
			paramstocheck.add("b")
			paramstocheck.add("NLG")
			paramstocheck.add("SW")
			paramstocheck.add("SD2")
			paramstocheck.add("SEWI")
			paramstocheck.add("KOD")
			paramstocheck.add("FAWI")
			paramstocheck.add("SD2")
			'paramstocheck.add("[NEW PARAMETER TO CHECK]")
			
			'Create a list of parameters found out of those checked.
			Dim params As New ArrayList()
			
			For Each param in paramstocheck
				'MessageBox.Show("Checking for: " &amp;amp; param, "iLogic")
				Try
					parametro = Parameter(oPart, param)
					params.Add(param)
					'MessageBox.Show(param &amp;amp; " = " &amp;amp; parametro, "iLogic")
				Catch
					'MessageBox.Show(param &amp;amp; " doesn't exist.", "iLogic")
				End Try
			Next
			
			If params.Contains("G_NG") Then
			AutoType = "PFC"
			ElseIf (Not params.Contains("G_T1")) And params.Contains("G_W") And (Not params.Contains("G_ER")) And params.Contains("G_T") Then
			AutoType = "RHS"
			ElseIf params.Contains("G_T") And (Not params.Contains("G_W")) Then
			AutoType = "CHS"
			ElseIf (Not params.Contains("G_T")) And (Not params.Contains("G_W")) And params.Contains("G_H") Then
			AutoType = "RD BAR"	
			ElseIf params.Contains("G_T1") And (Not params.Contains("G_NG")) Then
			AutoType = "UC"
			ElseIf params.Contains("G_ER") Or params.Contains("b") Then
			AutoType = "RSA"
			ElseIf params.Contains("G_W") And (Not params.Contains("G_T")) Then
			AutoType = "F BAR"
			ElseIf params.Contains("NLG") And params.Contains("SW")And params.Contains("SD2") Then
			AutoType = "BOLT"
			ElseIf params.Contains("SW") And (Not params.Contains("NLG")) Then
			AutoType = "NUT"
			ElseIf params.Contains("SD2") And (Not params.Contains("NLG")) Then
			AutoType = "WASHER"
			ElseIf params.Contains("SEWI") Then
			AutoType = "C SINK"
			ElseIf params.Contains("KOD") And (Not params.Contains("SEWI")) Then
			AutoType = "SOCKET SCREW"
			ElseIf params.Contains("FAWI") Then
			AutoType = "GRUB"
			ElseIf (Not params.Contains("B_L")) Then
			AutoType = "PLATE"
			
			Else
			'leave blank if no match is found.
			AutoType = ""
			End If

		End Try
		
		'Set Shape Type
		If AutoType = "" Then
		'Prompt for manual input - in format "PFC", "F BAR", "RD BAR", "UC", etc.
		oType = InputBox("Treat as:", "Part Type", AutoType)
		Else
		'Use automatically calculated type
		oType = AutoType
		End If
		
	
		'Create a default description
		Select Case UCase(oType)
		
		Case "PLATE"
		AutoName = "PLT " &amp;amp; Thickness &amp;amp; " THK " &amp;amp; Length &amp;amp; " x " &amp;amp; Width
		
		Case "F BAR"
		AutoName = "F/BAR " &amp;amp; Width &amp;amp; " x " &amp;amp; Thickness
		
		Case "CHS"
		Try 
		AutoName = "CHS " &amp;amp; Parameter(oPart, "G_H") &amp;amp; " OD x " &amp;amp; Parameter(oPart, "G_T") &amp;amp; " WT"
		Catch
		MessageBox.Show("Error getting parameters", "iLogic")
		AutoName = ""
		End Try
		
		Case "SHS", "RHS"
		Try
		'Distinguish between square and rectangular section
		If Parameter(oPart, "G_W") = Parameter(oPart, "G_H") Then
		AutoName = "SHS " &amp;amp; Parameter(oPart, "G_H") &amp;amp; " x " &amp;amp; Parameter(oPart, "G_W") &amp;amp; " x " &amp;amp; Parameter(oPart, "G_T")
		Else
		AutoName = "RHS " &amp;amp; Parameter(oPart, "G_H") &amp;amp; " x " &amp;amp; Parameter(oPart, "G_W") &amp;amp; " x " &amp;amp; Parameter(oPart, "G_T")
		End If
		Catch
		MessageBox.Show("Error getting parameters as " &amp;amp; oType, "iLogic")
		AutoName = ""
		End Try
		
		Case "RD BAR"
		Try 
		AutoName = "RD BAR DIA. " &amp;amp; Parameter(oPart, "G_H")
		Catch
		MessageBox.Show("Error getting parameters as " &amp;amp; oType, "iLogic")
		AutoName = ""
		End Try
		
		Case "RSA"
		Try 
		AutoName = "RSA " &amp;amp; Parameter(oPart, "G_H") &amp;amp; " x " &amp;amp; Parameter(oPart, "G_W") &amp;amp; " x " &amp;amp; Parameter(oPart, "G_T")
		Catch
			Try 
			AutoName = "RSA " &amp;amp; Parameter(oPart, "b") &amp;amp; " x " &amp;amp; Parameter(oPart, "b") &amp;amp; " x " &amp;amp; Parameter(oPart, "ParT")
			Catch
				MessageBox.Show("Error getting parameters as " &amp;amp; oType, "iLogic")
				AutoName = ""
			End Try
		End Try
		
		Case "PFC"
		Try 
		AutoName = "PFC " &amp;amp; stockprops(0) &amp;amp; " x " &amp;amp; stockprops(1) &amp;amp; " x " &amp;amp; stockprops(2)
		Catch
		MessageBox.Show("Error getting parameters as " &amp;amp; oType, "iLogic")
		AutoName = ""
		End Try

		Case "UC", "UB"
		Try
		'Distinguish between collumn and beam
		If Val(stockprops(0)) &amp;lt;= Val(stockprops(1)) Then
		AutoName = "UC " &amp;amp; stockprops(0) &amp;amp; " x " &amp;amp; stockprops(1) &amp;amp; " x " &amp;amp; stockprops(2)
		Else
		AutoName = "UB " &amp;amp; stockprops(0) &amp;amp; " x " &amp;amp; stockprops(1) &amp;amp; " x " &amp;amp; stockprops(2)
		End If
		Catch
		MessageBox.Show("Error getting parameters as " &amp;amp; oType, "iLogic")
		AutoName = ""
		End Try
		
		Case "BOLT"
		Try 
		AutoName = oClass &amp;amp; stand &amp;amp; " HEX BOLT"
		Catch
		MessageBox.Show("Error getting parameters as " &amp;amp; oType, "iLogic")
		AutoName = ""
		End Try
		
		Case "NUT"
		Try 
		AutoName = oClass &amp;amp; stand &amp;amp; " HEX NUT"
		Catch
		MessageBox.Show("Error getting parameters as " &amp;amp; oType, "iLogic")
		AutoName = ""
		End Try
		
		Case "WASHER"
		Try 
		AutoName = oClass &amp;amp; " FLAT WASHER, FORM A"
		Catch
		MessageBox.Show("Error getting parameters as " &amp;amp; oType, "iLogic")
		AutoName = ""
		End Try
		
		Case "C SINK"
		Try 
		AutoName = oClass &amp;amp; stand &amp;amp; " COUNTERSINK SCREW"
		Catch
		MessageBox.Show("Error getting parameters as " &amp;amp; oType, "iLogic")
		AutoName = ""
		End Try
		
		Case "SOCKET SCREW"
		Try 
		AutoName = oClass &amp;amp; stand &amp;amp; " SOCKET SCREW"
		Catch
		MessageBox.Show("Error getting parameters as " &amp;amp; oType, "iLogic")
		AutoName = ""
		End Try
		
		Case "GRUB"
		Try 
		AutoName = oClass &amp;amp; stand &amp;amp; " GRUB SCREW"
		Catch
		MessageBox.Show("Error getting parameters as " &amp;amp; oType, "iLogic")
		AutoName = ""
		End Try
		
		Case Else
		AutoName = ""
		End Select	
		
		'Show input box with default description
		oNewDescription = InputBox("Description for '" &amp;amp; partName &amp;amp; "':", "Description Editor", AutoName)
		
		If oNewDescription = "" Then
		'Cancel if no description is entered.
		MessageBox.Show("Description change cancelled.", "iLogic")
		Else
		'Change part description
		iProperties.Value(oPart, "Project", "Description") = oNewDescription
		InventorVb.DocumentUpdate()
		'Restart to choose next part
		iLogicVb.RunRule("Dimensions - Individual")
		End If
		&lt;/PRE&gt;</description>
      <pubDate>Thu, 20 Jul 2017 08:35:48 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/7241173#M73631</guid>
      <dc:creator>jmfowler1996</dc:creator>
      <dc:date>2017-07-20T08:35:48Z</dc:date>
    </item>
    <item>
      <title>Re: An iLogic Rule, From Me, To You!</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/7242142#M73645</link>
      <description>&lt;P&gt;ProTip:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Code is generally much, much easier to write, edit and refactor if it is laid out for proper encapsulation, instead of all put under one function..&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Seeing that many lines of code put into one function makes my head spin. Especially when trying to figure out what it actually does/how.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Ex:/// When setting autoname fails to set because it has issues finding the parameters, instead of putting the try/catch in EVERY case statement, rewrite it as a function that does the error checking and returns the proper results. Be mindful of whether you want to accomplish this via&amp;nbsp;&lt;/P&gt;
&lt;P&gt;1) A Sub (or occasionally a function) using a input/return variable by reference&lt;/P&gt;
&lt;P&gt;2) A Sub using global variables&lt;/P&gt;
&lt;P&gt;3) A function.&lt;/P&gt;</description>
      <pubDate>Thu, 20 Jul 2017 14:23:35 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/7242142#M73645</guid>
      <dc:creator>MechMachineMan</dc:creator>
      <dc:date>2017-07-20T14:23:35Z</dc:date>
    </item>
    <item>
      <title>Re: An iLogic Rule, From Me, To You!</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/7242822#M73655</link>
      <description>&lt;P&gt;Haha.&lt;/P&gt;
&lt;P&gt;Yeah, it's honestly a miracle that the code isn't in even worse format than it is. I was never taught to code. I just saw other people's iLogic rules and learnt bits and pieces from them.&lt;/P&gt;
&lt;P&gt;Also, I didn't really&amp;nbsp;make this rule for others to use. It was actually&amp;nbsp;just for me. I shared it because it's incredibly handy for me and I know other people might benefit from it. I would like for people to be able to easily mould it to their needs, but I really don't have the experience coding. I find a method that works, and stick with it.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'll definitely keep your tips in mind for future though.&lt;/P&gt;</description>
      <pubDate>Thu, 20 Jul 2017 17:43:49 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/7242822#M73655</guid>
      <dc:creator>jmfowler1996</dc:creator>
      <dc:date>2017-07-20T17:43:49Z</dc:date>
    </item>
    <item>
      <title>Re: An iLogic Rule, From Me, To You!</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/7243057#M73658</link>
      <description>&lt;P&gt;Annnnnd here's what it looks like refactored into a slightly more logical layout.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A ton of redundancy and unused lines were also removed.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;There might be some bugs to fix yet/some extra error checking to add, but at least it should be much, much easier to follow.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;Sub Main()

    Dim oDoc As Inventor.Document
    oDoc = ThisDoc.Document
  	
    oDrawCurveSeg = ThisApplication.CommandManager.Pick(Inventor.SelectionFilterEnum.kDrawingCurveSegmentFilter, "Select a Drawing Curve")

'Input validation
    Dim oDrawCurve As DrawingCurve
	Try
		oDrawCurve = oDrawCurveSeg.Parent
	Catch ex As Exception
		MessageBox.Show("No drawing curve found.", "iLogic")
		Exit Sub
	End Try

	Dim oSelectedModelDoc As Document
	Try
    	oSelectedModelDoc = oDrawCurve.ModelGeometry.Parent.ComponentDefinition.Document
	Catch
			MsgBox("No model assosciated with selected curve found!")
	End Try				
'End of input validation

	'Create a default description
    AutoName = AutoDescriptionBasedonType(oSelectedModelDoc)
	
	oPart = System.IO.Path.GetFileName(oSelectedModelDoc.FullFileName)
	
'Provide final user input to verify name
	oNewDescription = InputBox("Description for '" &amp;amp; oPart &amp;amp; "':", "Description Editor", AutoName)
		
	If oNewDescription = "" Then
		'Cancel if no description is entered.
		MessageBox.Show("Description change cancelled.", "iLogic")
	Else
		'Change part description
		iProperties.Value(oPart, "Project", "Description") = oNewDescription
		InventorVb.DocumentUpdate()
		'Restart to choose next part
		iLogicVb.RunRule("Dimensions - Individual")
	End If
	
End Sub

Sub GetDocDims(oDoc As Document, ByRef Length As String, ByRef Width As String, ByRef Thickness As String)

	'Grab range box of each surface body and combine to get the max range box
	'Get the overall dims using the rangebox max/min points
	'Sort these overall dims from smallest to largest and assign as length width and thickness
	
	Dim oCompDef As ComponentDefinition 
	oCompDef = oDoc.ComponentDefinition
	
	Dim uom as UnitsOfMeasure = oDoc.UnitsOfMeasure	
	
	Dim minp As point
	Dim maxp As point
	
	Dim oRB As Box
	Try
		For Each sb In oCompDef.SurfaceBodies
			If oRB Is Nothing Then
				oRB = sb.RangeBox.Copy
			Else
				oRB.Extend(sb.RangeBox.MinPoint)
				oRB.Extend(sb.RangeBox.MaxPoint)
			End If
		Next
		
		minp = oRB.minPoint
		maxp = oRB.maxPoint
	Catch ex As Exception
		MessageBox.Show("Error finding extensions for part: " &amp;amp; partName, "iLogic")
		Exit Sub
	End Try

	'Get part dimensions
	dp=0
	X = Round(uom.ConvertUnits ((maxP.X - minP.X), "cm", uom.LengthUnits), dp)
	Y = Round(uom.ConvertUnits ((maxP.Y - minP.Y), "cm", uom.LengthUnits), dp)
	Z = Round(uom.ConvertUnits ((maxP.Z - minP.Z), "cm", uom.LengthUnits), dp)

	Dim extents As New ArrayList()
	extents.add(X)
	extents.add(Y)
	extents.add(Z)
	
	extents.Sort()

	Thickness = extents(0)
	Width = extents(1)
	Length = extents(2)
	
End Sub

Sub GetClassAndStandFromProperty(oPN As String, ByRef oClass as String, ByRef stand As String)
		'Get classification for fasteners
		Dim stockclass() As String
		Try
			stockclass = Split(oPN, "-")
			
			oClass = stockclass(1)
			oClass = Right(oClass, Len(oClass)-1)
			
			If InStr(oClass, " ") &amp;gt; 0 Then
				oClass = Left(oClass, InStr(oClass, " ")-1)
			End If
			
			If Not UCase(Left(oClass, 1)) = "M" Then
				oClass = oClass &amp;amp; """"
				If Not InStr(oPN, "UNC") = 0 Then
					stand = " UNC"
				End If
				
				If Not InStr(oPN, "UNF") = 0 Then
					stand = " UNF"
				End If
			Else
				stand = ""
			End If
		Catch
		End Try
End Sub

Function GetParamTypeFromList() As String

	Dim paramstocheck As New ArrayList()
	paramstocheck.add("G_NG")
	paramstocheck.add("G_T")
	paramstocheck.add("G_W")
	paramstocheck.add("G_ER")
	paramstocheck.add("G_T1")
	paramstocheck.add("G_H")
	paramstocheck.add("b")
	paramstocheck.add("NLG")
	paramstocheck.add("SW")
	paramstocheck.add("SD2")
	paramstocheck.add("SEWI")
	paramstocheck.add("KOD")
	paramstocheck.add("FAWI")
	paramstocheck.add("SD2")
	'paramstocheck.add("[NEW PARAMETER TO CHECK]")
	
	'Create a list of parameters found out of those checked.
	Dim params As New ArrayList()
	For Each param in paramstocheck
		'MessageBox.Show("Checking for: " &amp;amp; param, "iLogic")
		Try
			params.Add(param)
		Catch
		End Try
	Next
	
	If params.Contains("G_NG") Then
		AutoType = "PFC"
	ElseIf (Not params.Contains("G_T1")) And params.Contains("G_W") And (Not params.Contains("G_ER")) And params.Contains("G_T") Then
		AutoType = "RHS"
	ElseIf params.Contains("G_T") And (Not params.Contains("G_W")) Then
		AutoType = "CHS"
	ElseIf (Not params.Contains("G_T")) And (Not params.Contains("G_W")) And params.Contains("G_H") Then
		AutoType = "RD BAR"	
	ElseIf params.Contains("G_T1") And (Not params.Contains("G_NG")) Then
		AutoType = "UC"
	ElseIf params.Contains("G_ER") Or params.Contains("b") Then
		AutoType = "RSA"
	ElseIf params.Contains("G_W") And (Not params.Contains("G_T")) Then
		AutoType = "F BAR"
	ElseIf params.Contains("NLG") And params.Contains("SW")And params.Contains("SD2") Then
		AutoType = "BOLT"
	ElseIf params.Contains("SW") And (Not params.Contains("NLG")) Then
		AutoType = "NUT"
	ElseIf params.Contains("SD2") And (Not params.Contains("NLG")) Then
		AutoType = "WASHER"
	ElseIf params.Contains("SEWI") Then
		AutoType = "C SINK"
	ElseIf params.Contains("KOD") And (Not params.Contains("SEWI")) Then
		AutoType = "SOCKET SCREW"
	ElseIf params.Contains("FAWI") Then
		AutoType = "GRUB"
	ElseIf (Not params.Contains("B_L")) Then
		AutoType = "PLATE"
	Else
		AutoType = ""
	End If
	
	Return AutoType
End Function

Function AutoDescriptionBasedonType(oDoc As Document) As String

	'To Auto description, we need dims, classification, standard, and stock number values to check against.
	'We also need to establish a type (which may or may not already be in the part) to establish what we want 
	'the Default description To be

'Value Prep
'[
	

	Dim Length, Width, Thickness As String
	Call GetDocDims(oDoc, Length, Width, Thickness)	
	
	Dim oClass, stand As String
	Dim oPN As String
	oPN = iProperties.Value(oPart, "Project", "Part Number")
	Call GetClassAndStandFromProperty(oPN, oClass, stand)	

	Dim stockprops() As String
	Try
		stockprops = Split(iProperties.Value(oPart, "Project", "Stock Number"), "x")
	Catch
	End Try
']

'Get Type
'[
	Try
		oType = Parameter(oPart, "Type")
	Catch ex As Exception
		oType = GetParamTypeFromList()
	End Try
	
	'Set Shape Type
	If oType = "" Then
		'Prompt for manual input - in format "PFC", "F BAR", "RD BAR", "UC", etc.
		oType = InputBox("Treat as:", "Part Type", AutoType)
	End If
']

	AutoName = ""
	Try	
		Select Case UCase(oType)
			Case "PLATE"
				AutoName = "PLT " &amp;amp; Thickness &amp;amp; " THK " &amp;amp; Length &amp;amp; " x " &amp;amp; Width
				
			Case "F BAR"
				AutoName = "F/BAR " &amp;amp; Width &amp;amp; " x " &amp;amp; Thickness
				
			Case "CHS"
				AutoName = "CHS " &amp;amp; Parameter(oPart, "G_H") &amp;amp; " OD x " &amp;amp; Parameter(oPart, "G_T") &amp;amp; " WT"
				
			Case "SHS", "RHS"
				If Parameter(oPart, "G_W") = Parameter(oPart, "G_H") Then
					AutoName = "SHS " &amp;amp; Parameter(oPart, "G_H") &amp;amp; " x " &amp;amp; Parameter(oPart, "G_W") &amp;amp; " x " &amp;amp; Parameter(oPart, "G_T")
				Else
					AutoName = "RHS " &amp;amp; Parameter(oPart, "G_H") &amp;amp; " x " &amp;amp; Parameter(oPart, "G_W") &amp;amp; " x " &amp;amp; Parameter(oPart, "G_T")
				End If
				
			Case "RD BAR"
					AutoName = "RD BAR DIA. " &amp;amp; Parameter(oPart, "G_H")
					
			Case "RSA"
				Try 
					AutoName = "RSA " &amp;amp; Parameter(oPart, "G_H") &amp;amp; " x " &amp;amp; Parameter(oPart, "G_W") &amp;amp; " x " &amp;amp; Parameter(oPart, "G_T")
				Catch
					AutoName = "RSA " &amp;amp; Parameter(oPart, "b") &amp;amp; " x " &amp;amp; Parameter(oPart, "b") &amp;amp; " x " &amp;amp; Parameter(oPart, "ParT")
				End Try
				
			Case "PFC"
				AutoName = "PFC " &amp;amp; stockprops(0) &amp;amp; " x " &amp;amp; stockprops(1) &amp;amp; " x " &amp;amp; stockprops(2)
			
			Case "UC", "UB"
				'Distinguish between collumn and beam
				If Val(stockprops(0)) &amp;lt;= Val(stockprops(1)) Then
					AutoName = "UC " &amp;amp; stockprops(0) &amp;amp; " x " &amp;amp; stockprops(1) &amp;amp; " x " &amp;amp; stockprops(2)
				Else
					AutoName = "UB " &amp;amp; stockprops(0) &amp;amp; " x " &amp;amp; stockprops(1) &amp;amp; " x " &amp;amp; stockprops(2)
				End If
		
			Case "BOLT"
				AutoName = oClass &amp;amp; stand &amp;amp; " HEX BOLT"
		
			Case "NUT"
				AutoName = oClass &amp;amp; stand &amp;amp; " HEX NUT"
		
			Case "WASHER"
				AutoName = oClass &amp;amp; " FLAT WASHER, FORM A"
		
			Case "C SINK"
				AutoName = oClass &amp;amp; stand &amp;amp; " COUNTERSINK SCREW"
		
			Case "SOCKET SCREW"
				AutoName = oClass &amp;amp; stand &amp;amp; " SOCKET SCREW"
		
			Case "GRUB"
				AutoName = oClass &amp;amp; stand &amp;amp; " GRUB SCREW"
			Case Else
				AutoName = ""
		End Select
	Catch
		AutoName = ""
	End Try
	
	Return AutoName
End Function&lt;/PRE&gt;</description>
      <pubDate>Thu, 20 Jul 2017 19:03:36 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/7243057#M73658</guid>
      <dc:creator>MechMachineMan</dc:creator>
      <dc:date>2017-07-20T19:03:36Z</dc:date>
    </item>
    <item>
      <title>Re: An iLogic Rule, From Me, To You!</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/7243076#M73659</link>
      <description>&lt;P&gt;With how it was written, I definitely had difficulty in understanding why you would go through the trouble of making the whole param array only to check it against itself and apparently establish a type based off of that.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The confusing part is why you didn't just write a simple case/if structure to check the existence of parameters in a part and make a type based off of that.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;ie;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;Sub Main()
    If ParamsExist(oDoc, "G_L", "A_F") = True Then
          Type = "Plastic"
   Else if ParamsExist(oDoc, "b", "t", "k") = True Then
           Type = some custom type
   End if 
End SUb

Function ParamsExist(oDoc, ByVal ParamArray paramstocheck As String()) As Boolean
       For each oParam in paramstocheck
           Try
                 oDoc.Parameters(oParam)
            Catch
                 'Accessing prop failed; it doesn't exist
                 Return False
                 Exit Sub
            End Try
       Next 
       Return True
End Function&lt;/PRE&gt;</description>
      <pubDate>Thu, 20 Jul 2017 19:11:22 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/7243076#M73659</guid>
      <dc:creator>MechMachineMan</dc:creator>
      <dc:date>2017-07-20T19:11:22Z</dc:date>
    </item>
    <item>
      <title>Re: An iLogic Rule, From Me, To You!</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/7243234#M73661</link>
      <description>&lt;P&gt;Why would you torture yourself sorting my code? XD&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks, though. I'll have a thorough look at this hopefully tomorrow. I'm sure I can also learn a lot from seeing what you changed&amp;nbsp;and why.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regarding the param array, I didn't even know how to use functions as you showed. As I say, I only know what I've observed&amp;nbsp;from other rules I've seen.&lt;/P&gt;</description>
      <pubDate>Thu, 20 Jul 2017 20:09:46 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/7243234#M73661</guid>
      <dc:creator>jmfowler1996</dc:creator>
      <dc:date>2017-07-20T20:09:46Z</dc:date>
    </item>
    <item>
      <title>Re: An iLogic Rule, From Me, To You!</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/7244891#M73678</link>
      <description>&lt;P&gt;*There must be a better way than re-posting updates in full below&amp;nbsp;all of the other versions. This is getting ridiculous.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Unfortunately, your code did not work.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I fixed the rule, and created a function to check if parameters exist as you suggested. It works great now and, thanks to your changes, even works for changing the description of standard content centre parts, which wasn't possible before.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;Module mod1

Public oPart As String

End Module

Sub Main()

	Dim oDoc As Inventor.Document
	oDoc = ThisDoc.Document
	
	oDrawCurveSeg = ThisApplication.CommandManager.Pick(Inventor.SelectionFilterEnum.kDrawingCurveSegmentFilter, "Select a Drawing Curve")

'Input validation
	Dim oDrawCurve As DrawingCurve
	Try
		oDrawCurve = oDrawCurveSeg.Parent
	Catch ex As Exception
		'leave empty so that esc key cancels rule without pop-up.
		'MessageBox.Show("No drawing curve found.", "iLogic")
		Exit Sub
	End Try

	Dim oSelectedModelDoc As Document
	Try
		oSelectedModelDoc = oDrawCurve.ModelGeometry.Parent.ComponentDefinition.Document
	Catch
			MsgBox("No model assosciated with selected curve found!")
	End Try
'End of input validation

	oPart = System.IO.Path.GetFileName(oSelectedModelDoc.FullFileName)
	'Create a default description
	AutoName = AutoDescriptionBasedonType(oSelectedModelDoc)
	
	
	
'Provide final user input to verify name
	oNewDescription = InputBox("Description for '" &amp;amp; oPart &amp;amp; "':", "Description Editor", AutoName)
		
	If oNewDescription = "" Then
		'Cancel if no description is entered.
		MessageBox.Show("Description change cancelled.", "iLogic")
	Else
		'Change part description
		iProperties.Value(oPart, "Project", "Description") = oNewDescription
		InventorVb.DocumentUpdate()
		'Restart to choose next part
		iLogicVb.RunRule("Auto-Description")
	End If
	
End Sub

Sub GetDocDims(oDoc As Document, ByRef Length As String, ByRef Width As String, ByRef Thickness As String)

	'Grab range box of each surface body and combine to get the max range box
	'Get the overall dims using the rangebox max/min points
	'Sort these overall dims from smallest to largest and assign as length width and thickness
	
	Dim oCompDef As ComponentDefinition 
	oCompDef = oDoc.ComponentDefinition
	
	Dim uom as UnitsOfMeasure = oDoc.UnitsOfMeasure	
	
	Dim minp As point
	Dim maxp As point
	
	Dim oRB As Box
	Try
		For Each sb In oCompDef.SurfaceBodies
			If oRB Is Nothing Then
				oRB = sb.RangeBox.Copy
			Else
				oRB.Extend(sb.RangeBox.MinPoint)
				oRB.Extend(sb.RangeBox.MaxPoint)
			End If
		Next
		
		minp = oRB.minPoint
		maxp = oRB.maxPoint
	Catch ex As Exception
		MessageBox.Show("Error finding extensions for part: " &amp;amp; partName, "iLogic")
		Exit Sub
	End Try

	'Get part dimensions
	dp=0
	X = Round(uom.ConvertUnits ((maxP.X - minP.X), "cm", uom.LengthUnits), dp)
	Y = Round(uom.ConvertUnits ((maxP.Y - minP.Y), "cm", uom.LengthUnits), dp)
	Z = Round(uom.ConvertUnits ((maxP.Z - minP.Z), "cm", uom.LengthUnits), dp)

	Dim extents As New ArrayList()
	extents.add(X)
	extents.add(Y)
	extents.add(Z)
	
	extents.Sort()

	Thickness = extents(0)
	Width = extents(1)
	Length = extents(2)
	
End Sub

Sub GetClassAndStandFromProperty(oPN As String, ByRef oClass as String, ByRef stand As String)
		'Get classification for fasteners
		Dim stockclass() As String
		Try
			stockclass = Split(oPN, "-")
			
			oClass = stockclass(1)
			oClass = Right(oClass, Len(oClass)-1)
			
			If InStr(oClass, " ") &amp;gt; 0 Then
				oClass = Left(oClass, InStr(oClass, " ")-1)
			End If
			
			If Not UCase(Left(oClass, 1)) = "M" Then
				oClass = oClass &amp;amp; """"
				If Not InStr(oPN, "UNC") = 0 Then
					stand = " UNC"
				End If
				
				If Not InStr(oPN, "UNF") = 0 Then
					stand = " UNF"
				End If
			Else
				stand = ""
			End If
		Catch
		End Try
End Sub

Function GetParamTypeFromList() As String
	
	If ParamsExist(1, "G_NG") Then
		AutoType = "PFC"
	ElseIf ParamsExist(1, "G_W", "G_T") And ParamsExist(0, "G_T1", "G_ER") Then
		AutoType = "RHS"
	ElseIf ParamsExist(1, "G_T") And ParamsExist(0, "G_W") Then
		AutoType = "CHS"
	ElseIf ParamsExist(1, "G_H") And ParamsExist(0, "G_T", "G_W") Then
		AutoType = "RD BAR"	
	ElseIf ParamsExist(1, "G_T1") And ParamsExist(0, "G_NG") Then
		AutoType = "UC"
	ElseIf ParamsExist(1, "G_ER") Or ParamsExist(1, "b") Then
		AutoType = "RSA"
	ElseIf ParamsExist(1, "G_W") And ParamsExist(0, "G_T") Then
		AutoType = "F BAR"
	ElseIf ParamsExist(1, "NLG", "SW", "SD2") Then
		AutoType = "BOLT"
	ElseIf ParamsExist(1, "SW") And ParamsExist(0, "NLG") Then
		AutoType = "NUT"
	ElseIf ParamsExist(1, "SD2") And ParamsExist(0, "NLG") Then
		AutoType = "WASHER"
	ElseIf ParamsExist(1, "SEWI") Then
		AutoType = "C SINK"
	ElseIf ParamsExist(1, "KOD") And ParamsExist(0, "SEWI") Then
		AutoType = "SOCKET SCREW"
	ElseIf ParamsExist(1, "FAWI") Then
		AutoType = "GRUB"
	ElseIf ParamsExist(0, "B_L") Then
		AutoType = "PLATE"
	Else
		AutoType = ""
	End If
	Return AutoType
	
End Function

Function ParamsExist(checkType As Integer, ByVal ParamArray paramstocheck As String()) As Boolean
	For Each oParam in paramstocheck
		'MessageBox.Show("Checking for: " &amp;amp; oParam, "iLogic")
		Try
			testparamexists = Parameter(oPart, oParam)
			If checkType = 0 Then
				Return False
			End If
		Catch
			If checkType = 1 Then
				Return False
			End If
		End Try
	Next
	Return True
End Function

Function AutoDescriptionBasedonType(oDoc As Document) As String
	'To Auto description, we need dims, classification, standard, and stock number values to check against.
	'We also need to establish a type (which may or may not already be in the part) to establish what we want 
	'the Default description To be

'Value Prep
'[
	
	Dim Length, Width, Thickness As String
	Call GetDocDims(oDoc, Length, Width, Thickness)	
	
	Dim oClass, stand As String
	Dim oPN As String
	oPN = iProperties.Value(oPart, "Project", "Part Number")
	Call GetClassAndStandFromProperty(oPN, oClass, stand)	

	Dim stockprops() As String
	Try
		stockprops = Split(iProperties.Value(oPart, "Project", "Stock Number"), "x")
	Catch
	End Try
']

'Get Type
'[

	Try
		oType = Parameter(oPart, "Type")
	Catch ex As Exception
		oType = GetParamTypeFromList()
	End Try

	'Set Shape Type
	If oType = "" Then
		'Prompt for manual input - in format "PFC", "F BAR", "RD BAR", "UC", etc.
		oType = InputBox("Treat as:", "Part Type", AutoType)
	End If
']

	AutoName = ""
	Try	
		Select Case UCase(oType)
			Case "PLATE"
				AutoName = "PLT " &amp;amp; Thickness &amp;amp; " THK " &amp;amp; Length &amp;amp; " x " &amp;amp; Width
				
			Case "F BAR"
				AutoName = "F/BAR " &amp;amp; Width &amp;amp; " x " &amp;amp; Thickness
				
			Case "CHS"
				AutoName = "CHS " &amp;amp; Parameter(oPart, "G_H") &amp;amp; " OD x " &amp;amp; Parameter(oPart, "G_T") &amp;amp; " WT"
				
			Case "SHS", "RHS"
				If Parameter(oPart, "G_W") = Parameter(oPart, "G_H") Then
					AutoName = "SHS " &amp;amp; Parameter(oPart, "G_H") &amp;amp; " x " &amp;amp; Parameter(oPart, "G_W") &amp;amp; " x " &amp;amp; Parameter(oPart, "G_T")
				Else
					AutoName = "RHS " &amp;amp; Parameter(oPart, "G_H") &amp;amp; " x " &amp;amp; Parameter(oPart, "G_W") &amp;amp; " x " &amp;amp; Parameter(oPart, "G_T")
				End If
				
			Case "RD BAR"
					AutoName = "RD BAR DIA. " &amp;amp; Parameter(oPart, "G_H")
					
			Case "RSA"
				Try 
					AutoName = "RSA " &amp;amp; Parameter(oPart, "G_H") &amp;amp; " x " &amp;amp; Parameter(oPart, "G_W") &amp;amp; " x " &amp;amp; Parameter(oPart, "G_T")
				Catch
					AutoName = "RSA " &amp;amp; Parameter(oPart, "b") &amp;amp; " x " &amp;amp; Parameter(oPart, "b") &amp;amp; " x " &amp;amp; Parameter(oPart, "ParT")
				End Try
				
			Case "PFC"
				AutoName = "PFC " &amp;amp; stockprops(0) &amp;amp; " x " &amp;amp; stockprops(1) &amp;amp; " x " &amp;amp; stockprops(2)
			
			Case "UC", "UB"
				'Distinguish between collumn and beam
				If Val(stockprops(0)) &amp;lt;= Val(stockprops(1)) Then
					AutoName = "UC " &amp;amp; stockprops(0) &amp;amp; " x " &amp;amp; stockprops(1) &amp;amp; " x " &amp;amp; stockprops(2)
				Else
					AutoName = "UB " &amp;amp; stockprops(0) &amp;amp; " x " &amp;amp; stockprops(1) &amp;amp; " x " &amp;amp; stockprops(2)
				End If
		
			Case "BOLT"
				AutoName = oClass &amp;amp; stand &amp;amp; " HEX BOLT"
		
			Case "NUT"
				AutoName = oClass &amp;amp; stand &amp;amp; " HEX NUT"
		
			Case "WASHER"
				AutoName = oClass &amp;amp; " FLAT WASHER, FORM A"
		
			Case "C SINK"
				AutoName = oClass &amp;amp; stand &amp;amp; " COUNTERSINK SCREW"
		
			Case "SOCKET SCREW"
				AutoName = oClass &amp;amp; stand &amp;amp; " SHCS"
		
			Case "GRUB"
				AutoName = oClass &amp;amp; stand &amp;amp; " GRUB SCREW"
			Case Else
				AutoName = ""
		End Select
	Catch
		AutoName = ""
	End Try
	
	Return AutoName
End Function&lt;/PRE&gt;</description>
      <pubDate>Fri, 21 Jul 2017 13:19:25 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/7244891#M73678</guid>
      <dc:creator>jmfowler1996</dc:creator>
      <dc:date>2017-07-21T13:19:25Z</dc:date>
    </item>
    <item>
      <title>Re: An iLogic Rule, From Me, To You!</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/7244958#M73679</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/3601631"&gt;@jmfowler1996&lt;/a&gt; wrote:&lt;BR /&gt;
&lt;P&gt;...&amp;nbsp;how to use functions ...&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Hi jmfowler1996,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Just as an FYI for the future as well, have a look at this AU class:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://au.autodesk.com/au-online/classes-on-demand/class-catalog/2013/product-design-suite/ma1936#chapter=0" target="_blank"&gt;http://au.autodesk.com/au-online/classes-on-demand/class-catalog/2013/product-design-suite/ma1936#chapter=0&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I hope this helps.&lt;BR /&gt;Best of luck to you in all of your Inventor pursuits,&lt;BR /&gt;Curtis&lt;BR /&gt;&lt;A href="http://inventortrenches.blogspot.com" target="_blank"&gt;http://inventortrenches.blogspot.com&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 21 Jul 2017 13:36:30 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/7244958#M73679</guid>
      <dc:creator>Curtis_Waguespack</dc:creator>
      <dc:date>2017-07-21T13:36:30Z</dc:date>
    </item>
    <item>
      <title>Re: An iLogic Rule, From Me, To You!</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/7245063#M73680</link>
      <description>&lt;P&gt;Thanks!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I didn't even know that type of thing existed.&lt;/P&gt;
&lt;P&gt;I'll have a look into it.&lt;/P&gt;</description>
      <pubDate>Fri, 21 Jul 2017 14:13:40 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/7245063#M73680</guid>
      <dc:creator>jmfowler1996</dc:creator>
      <dc:date>2017-07-21T14:13:40Z</dc:date>
    </item>
    <item>
      <title>Re: An iLogic Rule, From Me, To You!</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/8290263#M89203</link>
      <description>&lt;P&gt;Dear Jonathan,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you for your Ilogic code. we used part templates for normal parts in that way we always have good dimensions which we can export to an idw. In skeleton models its not helpfull though. I was wondering though if there is a way to reset the value's ? when I adjust a length in my skeleton model and rerun the rule the old dimension value's will not change to accommodate the new value's&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Do you know an idea to reset your rule?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Kind regards,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Mitchel Stottelaar&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 25 Sep 2018 08:46:47 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/8290263#M89203</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2018-09-25T08:46:47Z</dc:date>
    </item>
    <item>
      <title>Re: An iLogic Rule, From Me, To You!</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/8290584#M89208</link>
      <description>&lt;P&gt;Hi.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Can you please attach an example part which the rule isn't working for? It will give me a better idea of what you are meaning, and I can have a look into why it isn't working.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;</description>
      <pubDate>Tue, 25 Sep 2018 11:14:35 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/8290584#M89208</guid>
      <dc:creator>jmfowler1996</dc:creator>
      <dc:date>2018-09-25T11:14:35Z</dc:date>
    </item>
    <item>
      <title>Re: An iLogic Rule, From Me, To You!</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/8290804#M89214</link>
      <description>&lt;P&gt;Thank you for your quick reply!&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Below you find the wetransfer link for the assembly.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="https://we.tl/t-fGVjLFsjHm" target="_blank"&gt;https://we.tl/t-fGVjLFsjHm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Kind regards,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Mitchel Stottelaar&lt;/P&gt;</description>
      <pubDate>Tue, 25 Sep 2018 12:41:50 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/8290804#M89214</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2018-09-25T12:41:50Z</dc:date>
    </item>
    <item>
      <title>Re: An iLogic Rule, From Me, To You!</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/8299255#M89389</link>
      <description>&lt;P&gt;Hello again Mitchel.&lt;/P&gt;&lt;P&gt;Thank you for making the issue very clear in your drawing. It was very useful.&lt;/P&gt;&lt;P&gt;I will address the issues individually:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;1:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;issue: round bar is called out as plate.&lt;/P&gt;&lt;P&gt;Cause:&amp;nbsp;the iLogic code recognises different types of part by checking a&amp;nbsp;part's parameter names. The parameter names in standard round bar taken from the content centre are very different from the names of the parameters in your custom part.&lt;/P&gt;&lt;P&gt;Solution: instead of extruding round bar, use round bar directly from inventor's content centre. In your case, maybe&amp;nbsp;create a frame sketch part with the sketch lines of the&amp;nbsp;frame members (round bars), and insert it into the assembly. You can then use frame generator to create round bars from the content centre.&lt;/P&gt;&lt;P&gt;Alternative Solution: You could technically also create a list of parameters which are the same as those in a content centre round bar, and the code will then recognize it as such.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;2/3:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;issue: plates are called out with incorrect dimensions&lt;/P&gt;&lt;P&gt;cause: this happens when the part's User Coordinate System (UCS) is not aligned with the part.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Solid.JPG" style="width: 663px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/551543i963A26A545ACCDFE/image-size/large?v=v2&amp;amp;px=999" role="button" title="Solid.JPG" alt="Solid.JPG" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Workaround: there currently isn't a good way around this. You could create parts from scratch for diagonally placed parts. If you need them to be linked to the master assembly, you could link the parameters to the original sketch.&lt;/P&gt;&lt;P&gt;Solution: I have an idea about how to create a better workaround for this, based on the user adding a custom user coordinate system and the rule recognising that the latest UCS is the one to be used. I will add it to my long list of things to do!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;*:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;issue: when part dimensions are changed and the rule is re-run, the dimensions given by the rule are outdated.&lt;/P&gt;&lt;P&gt;my comments:&amp;nbsp;I couldn't reproduce this issue. Please see the screencast below where I change the sketch and the rule runs with the correct updated dimensions.&lt;/P&gt;&lt;DIV class="screencast_placeholder"&gt;Screencast will be displayed here after you click Post.&lt;P class="screencast_id"&gt;ee1abc63-2fe2-4eb7-a442-cb5cc3341721&lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;If you mean that you want the sizes in the BoM to update without running the rule again, I will look into it, but I don't think it will be easy.&lt;/P&gt;</description>
      <pubDate>Fri, 28 Sep 2018 12:03:22 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/8299255#M89389</guid>
      <dc:creator>jmfowler1996</dc:creator>
      <dc:date>2018-09-28T12:03:22Z</dc:date>
    </item>
    <item>
      <title>Re: An iLogic Rule, From Me, To You!</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/8299410#M89390</link>
      <description>&lt;P&gt;Okay, it looks like that&amp;nbsp;screencast link didn't work.&lt;/P&gt;&lt;P&gt;The screencast is here:&lt;/P&gt;&lt;P&gt;&lt;A href="https://knowledge.autodesk.com/community/screencast/ee1abc63-2fe2-4eb7-a442-cb5cc3341721" target="_blank" rel="nofollow noopener noreferrer noopener noreferrer"&gt;https://knowledge.autodesk.com/community/screencast/ee1abc63-2fe2-4eb7-a442-cb5cc3341721&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And I will try one last time to embed it in the comment...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV class="iframe-container"&gt;&lt;IFRAME width="640" height="590" src="https://screencast.autodesk.com/Embed/Timeline/ee1abc63-2fe2-4eb7-a442-cb5cc3341721" frameborder="0" scrolling="no" allowfullscreen="allowfullscreen" webkitallowfullscreen="webkitallowfullscreen"&gt;&lt;/IFRAME&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 28 Sep 2018 13:09:37 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-rule-to-create-description-based-on-dimensions-bounding/m-p/8299410#M89390</guid>
      <dc:creator>jmfowler1996</dc:creator>
      <dc:date>2018-09-28T13:09:37Z</dc:date>
    </item>
  </channel>
</rss>

