<?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: Orientated Minimum Rangebox for Solid Body Faceshell in Inventor Programming Forum</title>
    <link>https://forums.autodesk.com/t5/inventor-programming-forum/orientated-minimum-rangebox-for-solid-body-faceshell/m-p/10670779#M45430</link>
    <description>&lt;P&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/6396632"&gt;@william&lt;/a&gt;&amp;nbsp;I have an iLogic Rule that is halfway there and creates Transient BReps that represent a single faceshell, and uses &lt;EM&gt;OrientedMinimumRangeBox to measure&lt;/EM&gt; that before spitting out the sizes into the solid body name.&amp;nbsp;Below is some of the code that I have done (with some company specific bits stripped out, so it wouldnt run as is). If you ran a For Next Loop that went through all the faceshells in the solid and wrote the data out somewhere that could potentially work for what you need. The oTransSolids.FaceShells sometimes like to error which is why there's a try catch around it. Hopefully this gives a direction somewhat.&lt;/P&gt;&lt;LI-CODE lang="general"&gt;Dim oPartDoc As PartDocument
oPartDoc = ThisApplication.ActiveDocument
oNamer = "Process name"
Dim UNDO As Transaction 
UNDO = ThisApplication.TransactionManager.StartTransaction(oPartDoc, oNamer)

Dim oCompDef As ComponentDefinition
oCompDef = ThisDoc.Document.ComponentDefinition
i = 0

For Each SurfaceBody In oCompDef.SurfaceBodies

Dim oBody As SurfaceBody
Dim oTransBRep As TransientBRep
oTransBRep = ThisApplication.TransientBRep
Dim oTransSolid As SurfaceBody
Dim oTransLump As FaceShell
i = i + 1
oBody = oCompDef.SurfaceBodies.Item(i)
oLumpsCount = oBody.FaceShells.Count

	oTransSolid = oTransBRep.Copy(oBody)
	Try
	oTransFaces = oTransSolid.FaceShells
	Catch
End Try
Try
	oTransLump = oTransFaces.Item(1)
	Dim facesToDelete As ObjectCollection
	facesToDelete = ThisApplication.TransientObjects.CreateFaceCollection
	Dim fc As Face

		For Each fc In oTransLump.Faces
		Call facesToDelete.Add(fc)
		Next

	oTransBRep.DeleteFaces(facesToDelete, False)
	facesToDelete.Clear

	oBox = oTransSolid.OrientedMinimumRangeBox
	oX = (Round(oBox.DirectionOne.Length, 2))*10 
	oY = (Round(oBox.DirectionTwo.Length, 2))*10
	oZ = (Round(oBox.DirectionThree.Length, 2)) * 10

	oTransSolid.Delete
	ooName = "___" &amp;amp; oLumpsCount.ToString &amp;amp; "x" &amp;amp; "[[" &amp;amp; oX.ToString &amp;amp; "mm x " &amp;amp; oY.ToString &amp;amp; "mm x " &amp;amp; oZ.ToString &amp;amp; "mm]]"
	oBody.Name = oBody.Name &amp;amp; ooName
	
Catch
End Try	
End If
End If
Next
UNDO.End&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 06 Oct 2021 15:37:09 GMT</pubDate>
    <dc:creator>josiah.fordCEEGJ</dc:creator>
    <dc:date>2021-10-06T15:37:09Z</dc:date>
    <item>
      <title>Orientated Minimum Rangebox for Solid Body Faceshell</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/orientated-minimum-rangebox-for-solid-body-faceshell/m-p/10638484#M45428</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;BR /&gt;I have a multi body part with a single solid representing multiple timber rails.&amp;nbsp;&lt;/P&gt;&lt;P&gt;What I would like to be able to do is analyse the solid body that represents the rails, and calculate the length/width/thickness for each rail.&amp;nbsp;&lt;BR /&gt;The&amp;nbsp;&lt;EM&gt;SurfaceBody.OrientedMinimumRangeBox Property&amp;nbsp;&lt;/EM&gt;works fine for the whole solid, but I would need to do the same to the faceshells belonging to the solid body.&lt;BR /&gt;The code that I have so far works with the x,y,z co-ordinates of the faceshell, but I would like to know how to get the correct dimensions for a faceshell that is not aligned to the x,y,z axis.&amp;nbsp;&lt;BR /&gt;Part File attached, with rules inside.&lt;/P&gt;&lt;P&gt;Any ideas?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Threads that I have referenced for the code are:&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="https://forums.autodesk.com/t5/inventor-ilogic-api-vba-forum/faceshell-orientedrangebox/m-p/10472442" target="_blank"&gt;https://forums.autodesk.com/t5/inventor-ilogic-api-vba-forum/faceshell-orientedrangebox/m-p/10472442&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="https://forums.autodesk.com/t5/inventor-ilogic-api-vba-forum/getting-accurate-rangebox-xyz-values/m-p/9567646/highlight/true#M111801" target="_blank"&gt;https://forums.autodesk.com/t5/inventor-ilogic-api-vba-forum/getting-accurate-rangebox-xyz-values/m-p/9567646/highlight/true#M111801&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Code Snippet 1 (Faceshell Rangebox)&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;doc&lt;/SPAN&gt; = &lt;SPAN&gt;ThisDoc&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt; 
&lt;SPAN&gt;oDef&lt;/SPAN&gt; = &lt;SPAN&gt;doc&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oSB&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt;
&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oSB&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oDef&lt;/SPAN&gt;.&lt;SPAN&gt;SurfaceBodies&lt;/SPAN&gt;
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oSB&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;.&lt;SPAN&gt;Contains&lt;/SPAN&gt;(&lt;SPAN&gt;"REF_RAILS"&lt;/SPAN&gt;) &lt;SPAN&gt;Then&lt;/SPAN&gt;
			&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;fs&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;FaceShell&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oSB&lt;/SPAN&gt;.&lt;SPAN&gt;FaceShells&lt;/SPAN&gt;
				&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;fs&lt;/SPAN&gt;.&lt;SPAN&gt;IsVoid&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; &lt;SPAN&gt;Continue&lt;/SPAN&gt; &lt;SPAN&gt;For&lt;/SPAN&gt;
				&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;DeltaX&lt;/SPAN&gt;, &lt;SPAN&gt;DeltaY&lt;/SPAN&gt;, &lt;SPAN&gt;DeltaZ&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;
				&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;fsBox&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Box&lt;/SPAN&gt; = &lt;SPAN&gt;fs&lt;/SPAN&gt;.&lt;SPAN&gt;RangeBox&lt;/SPAN&gt;
				&lt;SPAN&gt;DeltaX&lt;/SPAN&gt; = &lt;SPAN&gt;fsBox&lt;/SPAN&gt;.&lt;SPAN&gt;MaxPoint&lt;/SPAN&gt;.&lt;SPAN&gt;X&lt;/SPAN&gt; - &lt;SPAN&gt;fsBox&lt;/SPAN&gt;.&lt;SPAN&gt;MinPoint&lt;/SPAN&gt;.&lt;SPAN&gt;X&lt;/SPAN&gt;
				&lt;SPAN&gt;DeltaY&lt;/SPAN&gt; = &lt;SPAN&gt;fsBox&lt;/SPAN&gt;.&lt;SPAN&gt;MaxPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Y&lt;/SPAN&gt; - &lt;SPAN&gt;fsBox&lt;/SPAN&gt;.&lt;SPAN&gt;MinPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Y&lt;/SPAN&gt;
				&lt;SPAN&gt;DeltaZ&lt;/SPAN&gt; = &lt;SPAN&gt;fsBox&lt;/SPAN&gt;.&lt;SPAN&gt;MaxPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Z&lt;/SPAN&gt; - &lt;SPAN&gt;fsBox&lt;/SPAN&gt;.&lt;SPAN&gt;MinPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Z&lt;/SPAN&gt;
				&lt;SPAN&gt;' Convert lengths to document's length units.&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;doc&lt;/SPAN&gt;.&lt;SPAN&gt;UnitsOfMeasure&lt;/SPAN&gt;

				&lt;SPAN&gt;DeltaX&lt;/SPAN&gt; = &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;ConvertUnits&lt;/SPAN&gt;(&lt;SPAN&gt;DeltaX&lt;/SPAN&gt;, &lt;SPAN&gt;"cm"&lt;/SPAN&gt;, &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;LengthUnits&lt;/SPAN&gt;)
				&lt;SPAN&gt;DeltaY&lt;/SPAN&gt; = &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;ConvertUnits&lt;/SPAN&gt;(&lt;SPAN&gt;DeltaY&lt;/SPAN&gt;, &lt;SPAN&gt;"cm"&lt;/SPAN&gt;, &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;LengthUnits&lt;/SPAN&gt;)
				&lt;SPAN&gt;DeltaZ&lt;/SPAN&gt; = &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;ConvertUnits&lt;/SPAN&gt;(&lt;SPAN&gt;DeltaZ&lt;/SPAN&gt;, &lt;SPAN&gt;"cm"&lt;/SPAN&gt;, &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;LengthUnits&lt;/SPAN&gt;)

				&lt;SPAN&gt;' Sort lengths from smallest to largest.&lt;/SPAN&gt;
				&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;lengths&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;New&lt;/SPAN&gt; &lt;SPAN&gt;List&lt;/SPAN&gt;(&lt;SPAN&gt;Of&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;) &lt;SPAN&gt;From&lt;/SPAN&gt; {&lt;SPAN&gt;DeltaX&lt;/SPAN&gt;, &lt;SPAN&gt;DeltaY&lt;/SPAN&gt;, &lt;SPAN&gt;DeltaZ&lt;/SPAN&gt; }
				&lt;SPAN&gt;lengths&lt;/SPAN&gt;.&lt;SPAN&gt;Sort&lt;/SPAN&gt;

				&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;minLength&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;lengths&lt;/SPAN&gt;(2)
				&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;midLength&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;lengths&lt;/SPAN&gt;(1)
				&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;maxLength&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;lengths&lt;/SPAN&gt;(0)

				&lt;SPAN&gt;' Display minimum rangebox size.&lt;/SPAN&gt;
				&lt;SPAN&gt;MessageBox&lt;/SPAN&gt;.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;"Rangebox Size: "&lt;/SPAN&gt; &amp;amp;
					&lt;SPAN&gt;minLength&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt;(&lt;SPAN&gt;"#.###"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;midLength&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt;(&lt;SPAN&gt;"#.###"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;maxLength&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt;(&lt;SPAN&gt;"#.###"&lt;/SPAN&gt;),
					&lt;SPAN&gt;oSB&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;, &lt;SPAN&gt;MessageBoxButtons&lt;/SPAN&gt;.&lt;SPAN&gt;OK&lt;/SPAN&gt;, &lt;SPAN&gt;MessageBoxIcon&lt;/SPAN&gt;.&lt;SPAN&gt;Information&lt;/SPAN&gt;)
			&lt;SPAN&gt;Next&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;/PRE&gt;&lt;P&gt;&lt;BR /&gt;Code Snippet 2 (Surface Body Orientated Minimum Rangebox)&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;doc&lt;/SPAN&gt; = &lt;SPAN&gt;ThisDoc&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt; 
&lt;SPAN&gt;oDef&lt;/SPAN&gt; = &lt;SPAN&gt;doc&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;

&lt;SPAN&gt;' Get surface body to measure&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oSB&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt;
&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oSB&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oDef&lt;/SPAN&gt;.&lt;SPAN&gt;SurfaceBodies&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;minBox&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;OrientedBox&lt;/SPAN&gt; = &lt;SPAN&gt;oSB&lt;/SPAN&gt;.&lt;SPAN&gt;OrientedMinimumRangeBox&lt;/SPAN&gt;

	&lt;SPAN&gt;' Get length of each side of mininum range box.&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;dir1&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;minBox&lt;/SPAN&gt;.&lt;SPAN&gt;DirectionOne&lt;/SPAN&gt;.&lt;SPAN&gt;Length&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;dir2&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;minBox&lt;/SPAN&gt;.&lt;SPAN&gt;DirectionTwo&lt;/SPAN&gt;.&lt;SPAN&gt;Length&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;dir3&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;minBox&lt;/SPAN&gt;.&lt;SPAN&gt;DirectionThree&lt;/SPAN&gt;.&lt;SPAN&gt;Length&lt;/SPAN&gt;

	&lt;SPAN&gt;' Convert lengths to document's length units.&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;doc&lt;/SPAN&gt;.&lt;SPAN&gt;UnitsOfMeasure&lt;/SPAN&gt;

	&lt;SPAN&gt;dir1&lt;/SPAN&gt; = &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;ConvertUnits&lt;/SPAN&gt;(&lt;SPAN&gt;dir1&lt;/SPAN&gt;, &lt;SPAN&gt;"cm"&lt;/SPAN&gt;, &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;LengthUnits&lt;/SPAN&gt;)
	&lt;SPAN&gt;dir2&lt;/SPAN&gt; = &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;ConvertUnits&lt;/SPAN&gt;(&lt;SPAN&gt;dir2&lt;/SPAN&gt;, &lt;SPAN&gt;"cm"&lt;/SPAN&gt;, &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;LengthUnits&lt;/SPAN&gt;)
	&lt;SPAN&gt;dir3&lt;/SPAN&gt; = &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;ConvertUnits&lt;/SPAN&gt;(&lt;SPAN&gt;dir3&lt;/SPAN&gt;, &lt;SPAN&gt;"cm"&lt;/SPAN&gt;, &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;LengthUnits&lt;/SPAN&gt;)

	&lt;SPAN&gt;' Sort lengths from smallest to largest.&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;lengths&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;New&lt;/SPAN&gt; &lt;SPAN&gt;List&lt;/SPAN&gt;(&lt;SPAN&gt;Of&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;) &lt;SPAN&gt;From&lt;/SPAN&gt; {&lt;SPAN&gt;dir1&lt;/SPAN&gt;, &lt;SPAN&gt;dir2&lt;/SPAN&gt;, &lt;SPAN&gt;dir3&lt;/SPAN&gt; }
	&lt;SPAN&gt;lengths&lt;/SPAN&gt;.&lt;SPAN&gt;Sort&lt;/SPAN&gt;

	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;minLength&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;lengths&lt;/SPAN&gt;(0)
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;midLength&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;lengths&lt;/SPAN&gt;(1)
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;maxLength&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;lengths&lt;/SPAN&gt;(2)

	&lt;SPAN&gt;' Display minimum rangebox size.&lt;/SPAN&gt;
	&lt;SPAN&gt;MessageBox&lt;/SPAN&gt;.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;" Oriented Minimum Rangebox Size: "&lt;/SPAN&gt; &amp;amp;
		&lt;SPAN&gt;minLength&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt;(&lt;SPAN&gt;"#.###"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;midLength&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt;(&lt;SPAN&gt;"#.###"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;maxLength&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt;(&lt;SPAN&gt;"#.###"&lt;/SPAN&gt;),
		&lt;SPAN&gt;oSB&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;, &lt;SPAN&gt;MessageBoxButtons&lt;/SPAN&gt;.&lt;SPAN&gt;OK&lt;/SPAN&gt;, &lt;SPAN&gt;MessageBoxIcon&lt;/SPAN&gt;.&lt;SPAN&gt;Information&lt;/SPAN&gt;)
&lt;SPAN&gt;Next&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 22 Sep 2021 02:48:51 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/orientated-minimum-rangebox-for-solid-body-faceshell/m-p/10638484#M45428</guid>
      <dc:creator>william</dc:creator>
      <dc:date>2021-09-22T02:48:51Z</dc:date>
    </item>
    <item>
      <title>Re: Orientated Minimum Rangebox for Solid Body Faceshell</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/orientated-minimum-rangebox-for-solid-body-faceshell/m-p/10641216#M45429</link>
      <description>&lt;P&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/5741855"&gt;@BrianEkins&lt;/a&gt;&amp;nbsp;&lt;BR /&gt;You would know if this if it is possible or not. Any suggestions?&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 23 Sep 2021 01:45:04 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/orientated-minimum-rangebox-for-solid-body-faceshell/m-p/10641216#M45429</guid>
      <dc:creator>william</dc:creator>
      <dc:date>2021-09-23T01:45:04Z</dc:date>
    </item>
    <item>
      <title>Re: Orientated Minimum Rangebox for Solid Body Faceshell</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/orientated-minimum-rangebox-for-solid-body-faceshell/m-p/10670779#M45430</link>
      <description>&lt;P&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/6396632"&gt;@william&lt;/a&gt;&amp;nbsp;I have an iLogic Rule that is halfway there and creates Transient BReps that represent a single faceshell, and uses &lt;EM&gt;OrientedMinimumRangeBox to measure&lt;/EM&gt; that before spitting out the sizes into the solid body name.&amp;nbsp;Below is some of the code that I have done (with some company specific bits stripped out, so it wouldnt run as is). If you ran a For Next Loop that went through all the faceshells in the solid and wrote the data out somewhere that could potentially work for what you need. The oTransSolids.FaceShells sometimes like to error which is why there's a try catch around it. Hopefully this gives a direction somewhat.&lt;/P&gt;&lt;LI-CODE lang="general"&gt;Dim oPartDoc As PartDocument
oPartDoc = ThisApplication.ActiveDocument
oNamer = "Process name"
Dim UNDO As Transaction 
UNDO = ThisApplication.TransactionManager.StartTransaction(oPartDoc, oNamer)

Dim oCompDef As ComponentDefinition
oCompDef = ThisDoc.Document.ComponentDefinition
i = 0

For Each SurfaceBody In oCompDef.SurfaceBodies

Dim oBody As SurfaceBody
Dim oTransBRep As TransientBRep
oTransBRep = ThisApplication.TransientBRep
Dim oTransSolid As SurfaceBody
Dim oTransLump As FaceShell
i = i + 1
oBody = oCompDef.SurfaceBodies.Item(i)
oLumpsCount = oBody.FaceShells.Count

	oTransSolid = oTransBRep.Copy(oBody)
	Try
	oTransFaces = oTransSolid.FaceShells
	Catch
End Try
Try
	oTransLump = oTransFaces.Item(1)
	Dim facesToDelete As ObjectCollection
	facesToDelete = ThisApplication.TransientObjects.CreateFaceCollection
	Dim fc As Face

		For Each fc In oTransLump.Faces
		Call facesToDelete.Add(fc)
		Next

	oTransBRep.DeleteFaces(facesToDelete, False)
	facesToDelete.Clear

	oBox = oTransSolid.OrientedMinimumRangeBox
	oX = (Round(oBox.DirectionOne.Length, 2))*10 
	oY = (Round(oBox.DirectionTwo.Length, 2))*10
	oZ = (Round(oBox.DirectionThree.Length, 2)) * 10

	oTransSolid.Delete
	ooName = "___" &amp;amp; oLumpsCount.ToString &amp;amp; "x" &amp;amp; "[[" &amp;amp; oX.ToString &amp;amp; "mm x " &amp;amp; oY.ToString &amp;amp; "mm x " &amp;amp; oZ.ToString &amp;amp; "mm]]"
	oBody.Name = oBody.Name &amp;amp; ooName
	
Catch
End Try	
End If
End If
Next
UNDO.End&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 06 Oct 2021 15:37:09 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/orientated-minimum-rangebox-for-solid-body-faceshell/m-p/10670779#M45430</guid>
      <dc:creator>josiah.fordCEEGJ</dc:creator>
      <dc:date>2021-10-06T15:37:09Z</dc:date>
    </item>
    <item>
      <title>Re: Orientated Minimum Rangebox for Solid Body Faceshell</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/orientated-minimum-rangebox-for-solid-body-faceshell/m-p/10671879#M45431</link>
      <description>&lt;P&gt;This is an example of what I ended up doing in order to fake the OrientedRangeBox for Faceshells:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="general"&gt;Sub Main
	Dim pDoc As PartDocument = TryCast(ThisDoc.Document, PartDocument)
	If IsNothing(pDoc) Then Exit Sub
	
	Dim PickBody As SurfaceBody = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kPartBodyFilter, "Select a Body")
	If IsNothing(PickBody) Then Exit Sub ' If nothing gets selected then we're done
	
	Dim BodyDescription As String = BuildDescription(pDoc.ComponentDefinition, PickBody)
	
	Logger.Trace(BodyDescription)
	
End Sub

Function BuildDescription(pDef As PartComponentDefinition, oSolid As SurfaceBody) As String
	Dim Result As String = Nothing
	Dim BoxCollection As ObjectCollection = ThisApplication.TransientObjects.CreateObjectCollection
	If oSolid.FaceShells.Count &amp;gt; 1
		Logger.Trace("Multi body: " &amp;amp; oSolid.FaceShells.Count)
		For Each fs As FaceShell In oSolid.FaceShells
			'Define Objects to create transient copy
			Dim sbDef As SurfaceBodyDefinition = ThisApplication.TransientBRep.CreateSurfaceBodyDefinition 
			Dim lumpDef As LumpDefinition = sbDef.LumpDefinitions.Add()
			Dim fsDef As FaceShellDefinition = lumpDef.FaceShellDefinitions.Add()
			'Start to fill Definition
			For Each f As Face In fs.Faces
				Dim fDef As FaceDefinition = fsDef.FaceDefinitions.Add(f.Geometry, f.IsParamReversed)
				Dim elDef As EdgeLoopDefinition = fDef.EdgeLoopDefinitions.Add()
				For Each ed As Edge In f.EdgeLoops.Item(1).Edges
					elDef.EdgeUseDefinitions.Add(sbDef.EdgeDefinitions.Add(sbDef.VertexDefinitions.Add(ed.StartVertex.Point), sbDef.VertexDefinitions.Add(ed.StopVertex.Point), ed.Geometry), ed.IsParamReversed)
				Next
			Next
			'Body creation
			Dim oErrors As NameValueMap
			Dim TransBody As SurfaceBody = sbDef.CreateTransientSurfaceBody(oErrors)
			BoxCollection.Add(TransBody.OrientedMinimumRangeBox)
		Next
	Else If oSolid.FaceShells.Count = 1
		Logger.Trace("Single")
		BoxCollection.Add(oSolid.OrientedMinimumRangeBox)
	End If
	For Each ItemRangeBox As OrientedBox In BoxCollection
		Dim AddString As String = FormulateString(ItemRangeBox.DirectionOne.Length, ItemRangeBox.DirectionTwo.Length, ItemRangeBox.DirectionThree.Length)
		Result += AddString
	Next
	Return Result
End Function

Function FormulateString(DoubleX As Double, DoubleY As Double, DoubleZ As Double) As String
	'Logger.Trace("Formulating")
	Dim Result As String = Nothing
	Dim Length, Width, Thickness As Double
	Dim inchOutput As Double = 2.54
	Dim inc As Double = 1/64
	Dim dec As Integer = 9
	
	If DoubleX &amp;gt;= DoubleY And DoubleX &amp;gt;= DoubleZ
		Length = Math.Round(Math.Round((DoubleX / inchOutput),dec)/inc)*inc
		If DoubleY &amp;gt;= DoubleZ
			Width = Math.Round(Math.Round((DoubleY / inchOutput),dec)/inc)*inc
			Thickness = Math.Round(Math.Round((DoubleZ / inchOutput),dec)/inc)*inc
		Else
			Width = Math.Round(Math.Round((DoubleZ / inchOutput),dec)/inc)*inc
			Thickness = Math.Round(Math.Round((DoubleY / inchOutput),dec)/inc)*inc
		End If
	Else If DoubleY &amp;gt;= DoubleX And DoubleY &amp;gt;= DoubleZ
		Length = Math.Round(Math.Round((DoubleY / inchOutput),dec)/inc)*inc
		If DoubleX &amp;gt;= DoubleZ
			Width = Math.Round(Math.Round((DoubleX / inchOutput),dec)/inc)*inc
			Thickness = Math.Round(Math.Round((DoubleZ / inchOutput),dec)/inc)*inc
		Else
			Width = Math.Round(Math.Round((DoubleZ / inchOutput),dec)/inc)*inc
			Thickness = Math.Round(Math.Round((DoubleX / inchOutput),dec)/inc)*inc
		End If
	Else
		Length = Math.Round(Math.Round((DoubleZ / inchOutput),dec)/inc)*inc
		If DoubleX &amp;gt;= DoubleY
			Width = Math.Round(Math.Round((DoubleX / inchOutput),dec)/inc)*inc
			Thickness = Math.Round(Math.Round((DoubleY / inchOutput),dec)/inc)*inc
		Else
			Width = Math.Round(Math.Round((DoubleY / inchOutput),dec)/inc)*inc
			Thickness = Math.Round(Math.Round((DoubleX / inchOutput),dec)/inc)*inc
		End If
	End If
	
	Result = "(1) @ " &amp;amp; Length.ToString &amp;amp; """ x " &amp;amp; Width.ToString &amp;amp; """ x " &amp;amp; Thickness.ToString &amp;amp; ""","
		
	Return Result
End Function&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;The key was learning how to write existing faceshell data out for the FaceShellDefinition.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Let me know if you have any questions.&lt;/P&gt;</description>
      <pubDate>Thu, 07 Oct 2021 01:03:57 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/orientated-minimum-rangebox-for-solid-body-faceshell/m-p/10671879#M45431</guid>
      <dc:creator>J-Camper</dc:creator>
      <dc:date>2021-10-07T01:03:57Z</dc:date>
    </item>
    <item>
      <title>Re: Orientated Minimum Rangebox for Solid Body Faceshell</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/orientated-minimum-rangebox-for-solid-body-faceshell/m-p/10672012#M45432</link>
      <description>&lt;P&gt;it is great to solve。wanderful&lt;/P&gt;</description>
      <pubDate>Thu, 07 Oct 2021 02:37:29 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/orientated-minimum-rangebox-for-solid-body-faceshell/m-p/10672012#M45432</guid>
      <dc:creator>Stakin</dc:creator>
      <dc:date>2021-10-07T02:37:29Z</dc:date>
    </item>
    <item>
      <title>Re: Orientated Minimum Rangebox for Solid Body Faceshell</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/orientated-minimum-rangebox-for-solid-body-faceshell/m-p/10674289#M45433</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/4624498"&gt;@josiah.fordCEEGJ&lt;/a&gt;&amp;nbsp; &amp;amp;&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/4898893"&gt;@J-Camper&lt;/a&gt;&amp;nbsp;&lt;BR /&gt;Thanks for your posts. I havent had a chance to test them yet, but fully intend to do so once I get a spare time from production demands.&amp;nbsp;&lt;BR /&gt;Looks like I should be able to get it to work with what youve shared.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 07 Oct 2021 22:40:00 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/orientated-minimum-rangebox-for-solid-body-faceshell/m-p/10674289#M45433</guid>
      <dc:creator>william</dc:creator>
      <dc:date>2021-10-07T22:40:00Z</dc:date>
    </item>
    <item>
      <title>Re: Orientated Minimum Rangebox for Solid Body Faceshell</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/orientated-minimum-rangebox-for-solid-body-faceshell/m-p/10674671#M45434</link>
      <description>&lt;P&gt;Thank you. Modified code works nicely. See below/attached:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&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;ThisDoc&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
&lt;SPAN&gt;doc&lt;/SPAN&gt; = &lt;SPAN&gt;ThisDoc&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt; 

&lt;SPAN&gt;i&lt;/SPAN&gt; = 0

&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;SurfaceBodies&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oBody&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oTransBRep&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;TransientBRep&lt;/SPAN&gt;
	&lt;SPAN&gt;oTransBRep&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransientBRep&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oTransSolid&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oTransLump&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;FaceShell&lt;/SPAN&gt;
	&lt;SPAN&gt;i&lt;/SPAN&gt; = &lt;SPAN&gt;i&lt;/SPAN&gt; + 1
	&lt;SPAN&gt;oBody&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;SurfaceBodies&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;)
	&lt;SPAN&gt;oLumpsCount&lt;/SPAN&gt; = &lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;FaceShells&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt;

	&lt;SPAN&gt;Try&lt;/SPAN&gt;
		&lt;SPAN&gt;k&lt;/SPAN&gt; = 1
		&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;j&lt;/SPAN&gt; = 0 &lt;SPAN&gt;To&lt;/SPAN&gt; &lt;SPAN&gt;oLumpsCount&lt;/SPAN&gt; - 1
			&lt;SPAN&gt;oTransSolid&lt;/SPAN&gt; = &lt;SPAN&gt;oTransBRep&lt;/SPAN&gt;.&lt;SPAN&gt;Copy&lt;/SPAN&gt;(&lt;SPAN&gt;oBody&lt;/SPAN&gt;)
			&lt;SPAN&gt;oTransFaces&lt;/SPAN&gt; = &lt;SPAN&gt;oTransSolid&lt;/SPAN&gt;.&lt;SPAN&gt;FaceShells&lt;/SPAN&gt;
			
			&lt;SPAN&gt;oTransLump&lt;/SPAN&gt; = &lt;SPAN&gt;oTransFaces&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;k&lt;/SPAN&gt;)
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;facesToDelete&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt;
			&lt;SPAN&gt;facesToDelete&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;.&lt;SPAN&gt;CreateFaceCollection&lt;/SPAN&gt;
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;fc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Face&lt;/SPAN&gt;

				&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;fc&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oTransLump&lt;/SPAN&gt;.&lt;SPAN&gt;Faces&lt;/SPAN&gt;
					&lt;SPAN&gt;Call&lt;/SPAN&gt; &lt;SPAN&gt;facesToDelete&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;fc&lt;/SPAN&gt;)
				&lt;SPAN&gt;Next&lt;/SPAN&gt;
			
			&lt;SPAN&gt;oTransBRep&lt;/SPAN&gt;.&lt;SPAN&gt;DeleteFaces&lt;/SPAN&gt;(&lt;SPAN&gt;facesToDelete&lt;/SPAN&gt;, &lt;SPAN&gt;False&lt;/SPAN&gt;)
			&lt;SPAN&gt;facesToDelete&lt;/SPAN&gt;.&lt;SPAN&gt;Clear&lt;/SPAN&gt;

			&lt;SPAN&gt;oBox&lt;/SPAN&gt; = &lt;SPAN&gt;oTransSolid&lt;/SPAN&gt;.&lt;SPAN&gt;OrientedMinimumRangeBox&lt;/SPAN&gt;
			&lt;SPAN&gt;oTransSolid&lt;/SPAN&gt;.&lt;SPAN&gt;Delete&lt;/SPAN&gt;
			
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;dir1&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;oBox&lt;/SPAN&gt;.&lt;SPAN&gt;DirectionOne&lt;/SPAN&gt;.&lt;SPAN&gt;Length&lt;/SPAN&gt;,2)
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;dir2&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;oBox&lt;/SPAN&gt;.&lt;SPAN&gt;DirectionTwo&lt;/SPAN&gt;.&lt;SPAN&gt;Length&lt;/SPAN&gt;,2)
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;dir3&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;oBox&lt;/SPAN&gt;.&lt;SPAN&gt;DirectionThree&lt;/SPAN&gt;.&lt;SPAN&gt;Length&lt;/SPAN&gt;,2)
			
			&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;doc&lt;/SPAN&gt;.&lt;SPAN&gt;UnitsOfMeasure&lt;/SPAN&gt;

			&lt;SPAN&gt;dir1&lt;/SPAN&gt; = &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;ConvertUnits&lt;/SPAN&gt;(&lt;SPAN&gt;dir1&lt;/SPAN&gt;, &lt;SPAN&gt;"cm"&lt;/SPAN&gt;, &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;LengthUnits&lt;/SPAN&gt;)
			&lt;SPAN&gt;dir2&lt;/SPAN&gt; = &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;ConvertUnits&lt;/SPAN&gt;(&lt;SPAN&gt;dir2&lt;/SPAN&gt;, &lt;SPAN&gt;"cm"&lt;/SPAN&gt;, &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;LengthUnits&lt;/SPAN&gt;)
			&lt;SPAN&gt;dir3&lt;/SPAN&gt; = &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;ConvertUnits&lt;/SPAN&gt;(&lt;SPAN&gt;dir3&lt;/SPAN&gt;, &lt;SPAN&gt;"cm"&lt;/SPAN&gt;, &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;LengthUnits&lt;/SPAN&gt;)

			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;lengths&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;New&lt;/SPAN&gt; &lt;SPAN&gt;List&lt;/SPAN&gt;(&lt;SPAN&gt;Of&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;) &lt;SPAN&gt;From&lt;/SPAN&gt; {&lt;SPAN&gt;dir1&lt;/SPAN&gt;, &lt;SPAN&gt;dir2&lt;/SPAN&gt;, &lt;SPAN&gt;dir3&lt;/SPAN&gt; }
			&lt;SPAN&gt;lengths&lt;/SPAN&gt;.&lt;SPAN&gt;Sort&lt;/SPAN&gt;

			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;minLength&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;lengths&lt;/SPAN&gt;(0)
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;midLength&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;lengths&lt;/SPAN&gt;(1)
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;maxLength&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;lengths&lt;/SPAN&gt;(2)

			&lt;SPAN&gt;' Display minimum rangebox size.&lt;/SPAN&gt;
			&lt;SPAN&gt;ooName&lt;/SPAN&gt; = &lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" - Faceshell "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;k&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" : "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;maxLength&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"mm x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;midLength&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"mm x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;minLength&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"mm"&lt;/SPAN&gt;
			&lt;SPAN&gt;MessageBox&lt;/SPAN&gt;.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;ooName&lt;/SPAN&gt;, &lt;SPAN&gt;"Title"&lt;/SPAN&gt;)
			
			&lt;SPAN&gt;k&lt;/SPAN&gt; = &lt;SPAN&gt;k&lt;/SPAN&gt; + 1
		&lt;SPAN&gt;Next&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;Next&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&lt;BR /&gt;The next step for me is to put that into an assembly, to run on a part file existing in assembly, and create a virtual component with the iproperties matching the length/width/thickness of the faceshell.&lt;/P&gt;</description>
      <pubDate>Fri, 08 Oct 2021 04:45:05 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/orientated-minimum-rangebox-for-solid-body-faceshell/m-p/10674671#M45434</guid>
      <dc:creator>william</dc:creator>
      <dc:date>2021-10-08T04:45:05Z</dc:date>
    </item>
    <item>
      <title>Re: Orientated Minimum Rangebox for Solid Body Faceshell</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/orientated-minimum-rangebox-for-solid-body-faceshell/m-p/10681454#M45435</link>
      <description>&lt;P&gt;Ok I have made some progress with putting this into an assembly.&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am a bit stuck though, it gives errors in various places.&amp;nbsp;&lt;/P&gt;&lt;P&gt;I get the messages with the correct number of faceshells, but then this error on the last component occurrence.&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="general"&gt;at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData&amp;amp; msgData)
at Inventor.SurfaceBody.get_FaceShells()
at ThisRule.Main()
at Autodesk.iLogic.Exec.AppDomExec.ExecRuleInAssembly(Assembly assem)
at iLogic.RuleEvalContainer.ExecRuleEval(String execRule)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also it is not getting the correct quantities on the bom.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/4624498"&gt;@josiah.fordCEEGJ&lt;/a&gt;&amp;nbsp;&amp;amp;&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/4898893"&gt;@J-Camper&lt;/a&gt;&amp;nbsp; -any ideas?&lt;/P&gt;&lt;P&gt;The code is pretty muddly, but hopefully the intent is clear enough.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Files attached. Hopefully this will be useful to someone else also.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;'Rev 0 - 211012 - WI - Initial Issue&lt;/SPAN&gt;

&lt;SPAN&gt;'Notes: &lt;/SPAN&gt;
&lt;SPAN&gt;'Solid body names must be named with the following method: REF_RAIL_ &amp;lt;insert solid body identifier here&amp;gt;&lt;/SPAN&gt;
&lt;SPAN&gt;'The use of underscore for the seperator in the solid body name must be used. &lt;/SPAN&gt;

&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;ActiveDocumentType&lt;/SPAN&gt; &amp;lt;&amp;gt; &lt;SPAN&gt;kAssemblyDocumentObject&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
    &lt;SPAN&gt;MessageBox&lt;/SPAN&gt;.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;"This rule can only be run in an assembly environment"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;vbNewLine&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"The rule will exit..."&lt;/SPAN&gt;, &lt;SPAN&gt;"Error Handling"&lt;/SPAN&gt;,&lt;SPAN&gt;MessageBoxButtons&lt;/SPAN&gt;.&lt;SPAN&gt;OK&lt;/SPAN&gt;,&lt;SPAN&gt;MessageBoxIcon&lt;/SPAN&gt;.&lt;SPAN&gt;Error&lt;/SPAN&gt;)
    &lt;SPAN&gt;Return&lt;/SPAN&gt;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;

&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oAsm&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyDocument&lt;/SPAN&gt; = &lt;SPAN&gt;ThisDoc&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oMatrix&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Matrix&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransientGeometry&lt;/SPAN&gt;.&lt;SPAN&gt;CreateMatrix&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oAsmCompDef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyComponentDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;ActiveDocument&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&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;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oOccs&lt;/SPAN&gt; = &lt;SPAN&gt;oAsmCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;
&lt;SPAN&gt;doc&lt;/SPAN&gt; = &lt;SPAN&gt;ThisDoc&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt; 
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;MyArrayList&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;New&lt;/SPAN&gt; &lt;SPAN&gt;ArrayList&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;MyArrayQTY&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;New&lt;/SPAN&gt; &lt;SPAN&gt;ArrayList&lt;/SPAN&gt;

&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oAsmCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;TypeOf&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Definition&lt;/SPAN&gt; &lt;SPAN&gt;Is&lt;/SPAN&gt; &lt;SPAN&gt;VirtualComponentDefinition&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
		&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;.&lt;SPAN&gt;Contains&lt;/SPAN&gt;(&lt;SPAN&gt;"REF_RAIL"&lt;/SPAN&gt;) &lt;SPAN&gt;Then&lt;/SPAN&gt;
			&lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Delete&lt;/SPAN&gt;
	
		&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
&lt;SPAN&gt;Next&lt;/SPAN&gt;


&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oAsmCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;TypeOf&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Definition&lt;/SPAN&gt; &lt;SPAN&gt;Is&lt;/SPAN&gt; &lt;SPAN&gt;VirtualComponentDefinition&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
	&lt;SPAN&gt;Else&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;PartComponentDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Definition&lt;/SPAN&gt;
		&lt;SPAN&gt;oDoc&lt;/SPAN&gt; = &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Definition&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt;
		&lt;SPAN&gt;i&lt;/SPAN&gt; = 0
		&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;SurfaceBodies&lt;/SPAN&gt;
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oBody&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt;
			&lt;SPAN&gt;i&lt;/SPAN&gt; = &lt;SPAN&gt;i&lt;/SPAN&gt; + 1
			&lt;SPAN&gt;oBody&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;SurfaceBodies&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;)
			&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;.&lt;SPAN&gt;Contains&lt;/SPAN&gt;(&lt;SPAN&gt;"REF_RAIL"&lt;/SPAN&gt;) &lt;SPAN&gt;Then&lt;/SPAN&gt;
				&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oTransBRep&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;TransientBRep&lt;/SPAN&gt;
				&lt;SPAN&gt;oTransBRep&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransientBRep&lt;/SPAN&gt;
				&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oTransSolid&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt;
				&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oTransLump&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;FaceShell&lt;/SPAN&gt;
				&lt;SPAN&gt;oLumpsCount&lt;/SPAN&gt; = &lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;FaceShells&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt;
				
					&lt;SPAN&gt;strParentDescription&lt;/SPAN&gt; = &lt;SPAN&gt;iProperties&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;, &lt;SPAN&gt;"Project"&lt;/SPAN&gt;, &lt;SPAN&gt;"Description"&lt;/SPAN&gt;)
					&lt;SPAN&gt;strParentName&lt;/SPAN&gt; = &lt;SPAN&gt;oDoc&lt;/SPAN&gt;.&lt;SPAN&gt;FullFileName&lt;/SPAN&gt;
					&lt;SPAN&gt;strSBName&lt;/SPAN&gt; = &lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;
					&lt;SPAN&gt;strSBNameArray&lt;/SPAN&gt; = &lt;SPAN&gt;strSBName&lt;/SPAN&gt;.&lt;SPAN&gt;Split&lt;/SPAN&gt;(&lt;SPAN&gt;"_"&lt;/SPAN&gt;)
						&lt;SPAN&gt;Try&lt;/SPAN&gt;
							&lt;SPAN&gt;strSolidBodyIdentifier&lt;/SPAN&gt; = &lt;SPAN&gt;strSBNameArray&lt;/SPAN&gt;(2)
						&lt;SPAN&gt;Catch&lt;/SPAN&gt;
							&lt;SPAN&gt;strSolidBodyIdentifier&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;MessageBox&lt;/SPAN&gt;.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" = "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oLumpsCount&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" Faceshells"&lt;/SPAN&gt;,&lt;SPAN&gt;"Error Checking"&lt;/SPAN&gt;)
				&lt;SPAN&gt;'Try&lt;/SPAN&gt;
					&lt;SPAN&gt;k&lt;/SPAN&gt; = 1
					&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oLumpsCount&lt;/SPAN&gt; &amp;lt;= 1 &lt;SPAN&gt;Then&lt;/SPAN&gt;
						&lt;SPAN&gt;Counter&lt;/SPAN&gt; = 0
					&lt;SPAN&gt;Else&lt;/SPAN&gt;
						&lt;SPAN&gt;Counter&lt;/SPAN&gt; = &lt;SPAN&gt;oLumpsCount&lt;/SPAN&gt; - 1
					&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
					&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;j&lt;/SPAN&gt; = 0 &lt;SPAN&gt;To&lt;/SPAN&gt; &lt;SPAN&gt;Counter&lt;/SPAN&gt;
						&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oLumpsCount&lt;/SPAN&gt; &amp;lt;= 1 &lt;SPAN&gt;Then&lt;/SPAN&gt;
							&lt;SPAN&gt;oBox&lt;/SPAN&gt; = &lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;OrientedMinimumRangeBox&lt;/SPAN&gt;
						&lt;SPAN&gt;Else&lt;/SPAN&gt;
							&lt;SPAN&gt;oTransSolid&lt;/SPAN&gt; = &lt;SPAN&gt;oTransBRep&lt;/SPAN&gt;.&lt;SPAN&gt;Copy&lt;/SPAN&gt;(&lt;SPAN&gt;oBody&lt;/SPAN&gt;)
							&lt;SPAN&gt;oTransFaces&lt;/SPAN&gt; = &lt;SPAN&gt;oTransSolid&lt;/SPAN&gt;.&lt;SPAN&gt;FaceShells&lt;/SPAN&gt;
							&lt;SPAN&gt;oTransLump&lt;/SPAN&gt; = &lt;SPAN&gt;oTransFaces&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;k&lt;/SPAN&gt;)
							&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;facesToDelete&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt;
							&lt;SPAN&gt;facesToDelete&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;.&lt;SPAN&gt;CreateFaceCollection&lt;/SPAN&gt;
							&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;fc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Face&lt;/SPAN&gt;

								&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;fc&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oTransLump&lt;/SPAN&gt;.&lt;SPAN&gt;Faces&lt;/SPAN&gt;
									&lt;SPAN&gt;Call&lt;/SPAN&gt; &lt;SPAN&gt;facesToDelete&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;fc&lt;/SPAN&gt;)
								&lt;SPAN&gt;Next&lt;/SPAN&gt;
							
							&lt;SPAN&gt;oTransBRep&lt;/SPAN&gt;.&lt;SPAN&gt;DeleteFaces&lt;/SPAN&gt;(&lt;SPAN&gt;facesToDelete&lt;/SPAN&gt;, &lt;SPAN&gt;False&lt;/SPAN&gt;)
							&lt;SPAN&gt;facesToDelete&lt;/SPAN&gt;.&lt;SPAN&gt;Clear&lt;/SPAN&gt;

							&lt;SPAN&gt;oBox&lt;/SPAN&gt; = &lt;SPAN&gt;oTransSolid&lt;/SPAN&gt;.&lt;SPAN&gt;OrientedMinimumRangeBox&lt;/SPAN&gt;
							&lt;SPAN&gt;oTransSolid&lt;/SPAN&gt;.&lt;SPAN&gt;Delete&lt;/SPAN&gt;							
						&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;

						
						&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;dir1&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;oBox&lt;/SPAN&gt;.&lt;SPAN&gt;DirectionOne&lt;/SPAN&gt;.&lt;SPAN&gt;Length&lt;/SPAN&gt;,2)
						&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;dir2&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;oBox&lt;/SPAN&gt;.&lt;SPAN&gt;DirectionTwo&lt;/SPAN&gt;.&lt;SPAN&gt;Length&lt;/SPAN&gt;,2)
						&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;dir3&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;oBox&lt;/SPAN&gt;.&lt;SPAN&gt;DirectionThree&lt;/SPAN&gt;.&lt;SPAN&gt;Length&lt;/SPAN&gt;,2)
						
						&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;doc&lt;/SPAN&gt;.&lt;SPAN&gt;UnitsOfMeasure&lt;/SPAN&gt;

						&lt;SPAN&gt;dir1&lt;/SPAN&gt; = &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;ConvertUnits&lt;/SPAN&gt;(&lt;SPAN&gt;dir1&lt;/SPAN&gt;, &lt;SPAN&gt;"cm"&lt;/SPAN&gt;, &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;LengthUnits&lt;/SPAN&gt;)
						&lt;SPAN&gt;dir2&lt;/SPAN&gt; = &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;ConvertUnits&lt;/SPAN&gt;(&lt;SPAN&gt;dir2&lt;/SPAN&gt;, &lt;SPAN&gt;"cm"&lt;/SPAN&gt;, &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;LengthUnits&lt;/SPAN&gt;)
						&lt;SPAN&gt;dir3&lt;/SPAN&gt; = &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;ConvertUnits&lt;/SPAN&gt;(&lt;SPAN&gt;dir3&lt;/SPAN&gt;, &lt;SPAN&gt;"cm"&lt;/SPAN&gt;, &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;LengthUnits&lt;/SPAN&gt;)

						&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;lengths&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;New&lt;/SPAN&gt; &lt;SPAN&gt;List&lt;/SPAN&gt;(&lt;SPAN&gt;Of&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;) &lt;SPAN&gt;From&lt;/SPAN&gt; {&lt;SPAN&gt;dir1&lt;/SPAN&gt;, &lt;SPAN&gt;dir2&lt;/SPAN&gt;, &lt;SPAN&gt;dir3&lt;/SPAN&gt; }
						&lt;SPAN&gt;lengths&lt;/SPAN&gt;.&lt;SPAN&gt;Sort&lt;/SPAN&gt;

						&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;minLength&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;lengths&lt;/SPAN&gt;(0)
						&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;midLength&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;lengths&lt;/SPAN&gt;(1)
						&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;maxLength&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;lengths&lt;/SPAN&gt;(2)
						
						&lt;SPAN&gt;strDimensions&lt;/SPAN&gt; = &lt;SPAN&gt;midLength&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" X "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;minLength&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" - "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;maxLength&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt;
						&lt;SPAN&gt;strArrayString&lt;/SPAN&gt; = &lt;SPAN&gt;strDimensions&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;";"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;strParentDescription&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;";"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;strParentName&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;";"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;strSolidBodyIdentifier&lt;/SPAN&gt;
						&lt;SPAN&gt;MyArrayList&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;strArrayString&lt;/SPAN&gt;)
						&lt;SPAN&gt;MyArrayQTY&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(1)
						&lt;SPAN&gt;k&lt;/SPAN&gt; = &lt;SPAN&gt;k&lt;/SPAN&gt; + 1
					&lt;SPAN&gt;Next&lt;/SPAN&gt;
				&lt;SPAN&gt;'Catch&lt;/SPAN&gt;
				&lt;SPAN&gt;'End Try	&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;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
&lt;SPAN&gt;Next&lt;/SPAN&gt;

&lt;SPAN&gt;''Error Checking code - to see what the array values are&lt;/SPAN&gt;
&lt;SPAN&gt;'oWrite = System.IO.File.CreateText(ThisDoc.PathAndFileName(False) &amp;amp; ".txt")&lt;/SPAN&gt;
&lt;SPAN&gt;'For i = 0 To MyArrayList.Count - 1&lt;/SPAN&gt;
&lt;SPAN&gt;'	oWrite.WriteLine(MyArrayList.Item(i))&lt;/SPAN&gt;
&lt;SPAN&gt;'Next&lt;/SPAN&gt;
&lt;SPAN&gt;'oWrite.Close()&lt;/SPAN&gt;
&lt;SPAN&gt;'ThisDoc.Launch(ThisDoc.PathAndFileName(False) &amp;amp; ".txt")&lt;/SPAN&gt;

&lt;SPAN&gt;'Searching for duplicate entries in the array and removing them, also adding the qty's together for duplicates&lt;/SPAN&gt;
&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;i&lt;/SPAN&gt; = 0 &lt;SPAN&gt;To&lt;/SPAN&gt; &lt;SPAN&gt;MyArrayList&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt; - 1
&lt;SPAN&gt;Try&lt;/SPAN&gt;
		&lt;SPAN&gt;ArraySearchItem&lt;/SPAN&gt; = &lt;SPAN&gt;MyArrayList&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;)
		&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;j&lt;/SPAN&gt; = 0 &lt;SPAN&gt;To&lt;/SPAN&gt; &lt;SPAN&gt;MyArrayList&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt; - 1
			
			&lt;SPAN&gt;Try&lt;/SPAN&gt;
				
				&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;ArraySearchItem&lt;/SPAN&gt; &amp;lt;&amp;gt; &lt;SPAN&gt;MyArrayList&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;j&lt;/SPAN&gt;) &lt;SPAN&gt;Then&lt;/SPAN&gt;

				&lt;SPAN&gt;Else&lt;/SPAN&gt;
					&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;i&lt;/SPAN&gt; = &lt;SPAN&gt;j&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
						&lt;SPAN&gt;'Ignore&lt;/SPAN&gt;
					&lt;SPAN&gt;Else&lt;/SPAN&gt;
						&lt;SPAN&gt;MyArrayList&lt;/SPAN&gt;.&lt;SPAN&gt;RemoveAt&lt;/SPAN&gt;(&lt;SPAN&gt;j&lt;/SPAN&gt;)
						&lt;SPAN&gt;MyArrayQTY&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;) = &lt;SPAN&gt;MyArrayQTY&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;) + &lt;SPAN&gt;MyArrayQTY&lt;/SPAN&gt;(&lt;SPAN&gt;j&lt;/SPAN&gt;)
						&lt;SPAN&gt;MyArrayQTY&lt;/SPAN&gt;.&lt;SPAN&gt;RemoveAt&lt;/SPAN&gt;(&lt;SPAN&gt;j&lt;/SPAN&gt;)
&lt;SPAN&gt;'						MessageBox.Show("Duplicate found: " &amp;amp; _&lt;/SPAN&gt;
&lt;SPAN&gt;'						vbNewLine &amp;amp; "MyArrayList.Item(" &amp;amp; i &amp;amp; ") = " &amp;amp; ArraySearchItem &amp;amp; _&lt;/SPAN&gt;
&lt;SPAN&gt;'						vbNewLine &amp;amp; "MyArrayList.Item(" &amp;amp; j &amp;amp; ") = " &amp;amp; MyArrayList.Item(j) &amp;amp; _&lt;/SPAN&gt;
&lt;SPAN&gt;'						vbNewLine &amp;amp; "MyArrayQTY(" &amp;amp; i &amp;amp; ") = " &amp;amp; MyArrayQTY(i), "Title")&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;Catch&lt;/SPAN&gt;
			&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
		&lt;SPAN&gt;Next&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;Next&lt;/SPAN&gt;

&lt;SPAN&gt;'MessageBox.Show(MyArrayList.Count)&lt;/SPAN&gt;
&lt;SPAN&gt;'For i = 0 To MyArrayList.Count -1&lt;/SPAN&gt;
&lt;SPAN&gt;'	MessageBox.Show(MyArrayList.Item(i) &amp;amp; vbNewLine &amp;amp; MyArrayQTY.Item(i))&lt;/SPAN&gt;
&lt;SPAN&gt;'Next&lt;/SPAN&gt;

&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;i&lt;/SPAN&gt; = 0 &lt;SPAN&gt;To&lt;/SPAN&gt; &lt;SPAN&gt;MyArrayList&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt; - 1
	&lt;SPAN&gt;strSBNameArray&lt;/SPAN&gt; = &lt;SPAN&gt;MyArrayList&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;).&lt;SPAN&gt;Split&lt;/SPAN&gt;(&lt;SPAN&gt;";"&lt;/SPAN&gt;)
	&lt;SPAN&gt;strDimensions&lt;/SPAN&gt; = &lt;SPAN&gt;strSBNameArray&lt;/SPAN&gt;(0)
	&lt;SPAN&gt;strParentDescription&lt;/SPAN&gt; = &lt;SPAN&gt;strSBNameArray&lt;/SPAN&gt;(1)
	&lt;SPAN&gt;strParentName&lt;/SPAN&gt; = &lt;SPAN&gt;strSBNameArray&lt;/SPAN&gt;(2)
	&lt;SPAN&gt;strSolidBodyIdentifier&lt;/SPAN&gt; = &lt;SPAN&gt;strSBNameArray&lt;/SPAN&gt;(3)
	
	&lt;SPAN&gt;oOccVirt&lt;/SPAN&gt; = &lt;SPAN&gt;oAsm&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;.&lt;SPAN&gt;AddVirtual&lt;/SPAN&gt;(&lt;SPAN&gt;"REF_RAIL "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;i&lt;/SPAN&gt;, &lt;SPAN&gt;oMatrix&lt;/SPAN&gt;)
	&lt;SPAN&gt;strOccName&lt;/SPAN&gt; = &lt;SPAN&gt;oOccVirt&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;
	&lt;SPAN&gt;iProperties&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;strOccName&lt;/SPAN&gt;, &lt;SPAN&gt;"Project"&lt;/SPAN&gt;, &lt;SPAN&gt;"Part Number"&lt;/SPAN&gt;) = &lt;SPAN&gt;"REF_RAIL "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;i&lt;/SPAN&gt;
	&lt;SPAN&gt;iProperties&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;strOccName&lt;/SPAN&gt;, &lt;SPAN&gt;"Project"&lt;/SPAN&gt;, &lt;SPAN&gt;"Stock Number"&lt;/SPAN&gt;) = &lt;SPAN&gt;strDimensions&lt;/SPAN&gt;
	&lt;SPAN&gt;iProperties&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;strOccName&lt;/SPAN&gt;, &lt;SPAN&gt;"Project"&lt;/SPAN&gt;, &lt;SPAN&gt;"Description"&lt;/SPAN&gt;) = &lt;SPAN&gt;strSolidBodyIdentifier&lt;/SPAN&gt;
	&lt;SPAN&gt;iProperties&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;strOccName&lt;/SPAN&gt;, &lt;SPAN&gt;"Custom"&lt;/SPAN&gt;, &lt;SPAN&gt;"Parent"&lt;/SPAN&gt;) = &lt;SPAN&gt;strParentDescription&lt;/SPAN&gt;
	&lt;SPAN&gt;ThisBOM&lt;/SPAN&gt;.&lt;SPAN&gt;OverrideQuantity&lt;/SPAN&gt;(&lt;SPAN&gt;"Model Data"&lt;/SPAN&gt;,&lt;SPAN&gt;"REF_RAIL "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;i&lt;/SPAN&gt;,&lt;SPAN&gt;MyArrayQTY&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;))
&lt;SPAN&gt;Next&lt;/SPAN&gt;

&lt;SPAN&gt;MyArrayList&lt;/SPAN&gt;.&lt;SPAN&gt;Clear&lt;/SPAN&gt;
&lt;SPAN&gt;MyArrayQTY&lt;/SPAN&gt;.&lt;SPAN&gt;Clear&lt;/SPAN&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 11 Oct 2021 21:26:14 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/orientated-minimum-rangebox-for-solid-body-faceshell/m-p/10681454#M45435</guid>
      <dc:creator>william</dc:creator>
      <dc:date>2021-10-11T21:26:14Z</dc:date>
    </item>
    <item>
      <title>Re: Orientated Minimum Rangebox for Solid Body Faceshell</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/orientated-minimum-rangebox-for-solid-body-faceshell/m-p/10682265#M45436</link>
      <description>&lt;P&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/6396632"&gt;@william&lt;/a&gt;&amp;nbsp;I get the same error, even when just running in a single multi-body part, by all accounts it seems to fail on a selection of random solids, which changes every run. So in my case it's the line "&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;oTransFaces&lt;/SPAN&gt; = &lt;SPAN&gt;oTransSolid&lt;/SPAN&gt;.&lt;SPAN&gt;FaceShell&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;every time, this is the exact point where it fails, its like it can't find the faceshell, or is getting confused somewhere. So I wrote a try catch around a couple different parts which identifies the ones that error, leaves them alone except for marking them and then runs a seperate rule that goes through and targets only those solids...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The full stable (but still quite messy, I'm very much an amatuer) code is below.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oPartDoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartDocument&lt;/SPAN&gt;
&lt;SPAN&gt;oPartDoc&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;ActiveDocument&lt;/SPAN&gt;
&lt;SPAN&gt;oNamer&lt;/SPAN&gt; = &lt;SPAN&gt;"MultiMeasure"&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;UNDO&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Transaction&lt;/SPAN&gt; 
&lt;SPAN&gt;UNDO&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransactionManager&lt;/SPAN&gt;.&lt;SPAN&gt;StartTransaction&lt;/SPAN&gt;(&lt;SPAN&gt;oPartDoc&lt;/SPAN&gt;, &lt;SPAN&gt;oNamer&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;ThisDoc&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
&lt;SPAN&gt;i&lt;/SPAN&gt; = 0

&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;SurfaceBodies&lt;/SPAN&gt;

&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oBody&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oTransBRep&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;TransientBRep&lt;/SPAN&gt;
&lt;SPAN&gt;oTransBRep&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransientBRep&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oTransSolid&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oTransLump&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;FaceShell&lt;/SPAN&gt;
&lt;SPAN&gt;i&lt;/SPAN&gt; = &lt;SPAN&gt;i&lt;/SPAN&gt; + 1
&lt;SPAN&gt;oBody&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;SurfaceBodies&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;)
&lt;SPAN&gt;oLumpsCount&lt;/SPAN&gt; = &lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;FaceShells&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt;
&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Right&lt;/SPAN&gt;(&lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;, 2) = &lt;SPAN&gt;"]]"&lt;/SPAN&gt;
&lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;Left&lt;/SPAN&gt;(&lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;, &lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;.&lt;SPAN&gt;IndexOf&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;If&lt;/SPAN&gt; &lt;SPAN&gt;Left&lt;/SPAN&gt;(&lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;, 1) = &lt;SPAN&gt;"'"&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;

	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oLumpsCount&lt;/SPAN&gt; &amp;lt; 2 &lt;SPAN&gt;Then&lt;/SPAN&gt;

	&lt;SPAN&gt;oBox&lt;/SPAN&gt; = &lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;OrientedMinimumRangeBox&lt;/SPAN&gt;
	&lt;SPAN&gt;oX&lt;/SPAN&gt; = (&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;oBox&lt;/SPAN&gt;.&lt;SPAN&gt;DirectionOne&lt;/SPAN&gt;.&lt;SPAN&gt;Length&lt;/SPAN&gt;, 2))*10 
	&lt;SPAN&gt;oY&lt;/SPAN&gt; = (&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;oBox&lt;/SPAN&gt;.&lt;SPAN&gt;DirectionTwo&lt;/SPAN&gt;.&lt;SPAN&gt;Length&lt;/SPAN&gt;, 2))*10
	&lt;SPAN&gt;oZ&lt;/SPAN&gt; = (&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;oBox&lt;/SPAN&gt;.&lt;SPAN&gt;DirectionThree&lt;/SPAN&gt;.&lt;SPAN&gt;Length&lt;/SPAN&gt;, 2)) * 10
	&lt;SPAN&gt;ooName&lt;/SPAN&gt; = &lt;SPAN&gt;"___1x[["&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oX&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"mm x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oY&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"mm x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oZ&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"mm]]"&lt;/SPAN&gt;
	&lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;ooName&lt;/SPAN&gt;

	&lt;SPAN&gt;Else&lt;/SPAN&gt;

	&lt;SPAN&gt;oTransSolid&lt;/SPAN&gt; = &lt;SPAN&gt;oTransBRep&lt;/SPAN&gt;.&lt;SPAN&gt;Copy&lt;/SPAN&gt;(&lt;SPAN&gt;oBody&lt;/SPAN&gt;)
	&lt;SPAN&gt;Try&lt;/SPAN&gt;
	&lt;SPAN&gt;oTransFaces&lt;/SPAN&gt; = &lt;SPAN&gt;oTransSolid&lt;/SPAN&gt;.&lt;SPAN&gt;FaceShells&lt;/SPAN&gt;
	&lt;SPAN&gt;Catch&lt;/SPAN&gt;
	&lt;SPAN&gt;ooName&lt;/SPAN&gt; = &lt;SPAN&gt;"___"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oLumpsCount&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"x"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"[[ERROR]]"&lt;/SPAN&gt;
	&lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;ooName&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;oTransLump&lt;/SPAN&gt; = &lt;SPAN&gt;oTransFaces&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(1)
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;facesToDelete&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt;
	&lt;SPAN&gt;facesToDelete&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;.&lt;SPAN&gt;CreateFaceCollection&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;fc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Face&lt;/SPAN&gt;

		&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;fc&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oTransLump&lt;/SPAN&gt;.&lt;SPAN&gt;Faces&lt;/SPAN&gt;
		&lt;SPAN&gt;Call&lt;/SPAN&gt; &lt;SPAN&gt;facesToDelete&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;fc&lt;/SPAN&gt;)
		&lt;SPAN&gt;Next&lt;/SPAN&gt;

	&lt;SPAN&gt;oTransBRep&lt;/SPAN&gt;.&lt;SPAN&gt;DeleteFaces&lt;/SPAN&gt;(&lt;SPAN&gt;facesToDelete&lt;/SPAN&gt;, &lt;SPAN&gt;False&lt;/SPAN&gt;)
	&lt;SPAN&gt;facesToDelete&lt;/SPAN&gt;.&lt;SPAN&gt;Clear&lt;/SPAN&gt;

	&lt;SPAN&gt;oBox&lt;/SPAN&gt; = &lt;SPAN&gt;oTransSolid&lt;/SPAN&gt;.&lt;SPAN&gt;OrientedMinimumRangeBox&lt;/SPAN&gt;
	&lt;SPAN&gt;oX&lt;/SPAN&gt; = (&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;oBox&lt;/SPAN&gt;.&lt;SPAN&gt;DirectionOne&lt;/SPAN&gt;.&lt;SPAN&gt;Length&lt;/SPAN&gt;, 2))*10 
	&lt;SPAN&gt;oY&lt;/SPAN&gt; = (&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;oBox&lt;/SPAN&gt;.&lt;SPAN&gt;DirectionTwo&lt;/SPAN&gt;.&lt;SPAN&gt;Length&lt;/SPAN&gt;, 2))*10
	&lt;SPAN&gt;oZ&lt;/SPAN&gt; = (&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;oBox&lt;/SPAN&gt;.&lt;SPAN&gt;DirectionThree&lt;/SPAN&gt;.&lt;SPAN&gt;Length&lt;/SPAN&gt;, 2)) * 10

	&lt;SPAN&gt;oTransSolid&lt;/SPAN&gt;.&lt;SPAN&gt;Delete&lt;/SPAN&gt;
	&lt;SPAN&gt;ooName&lt;/SPAN&gt; = &lt;SPAN&gt;"___"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oLumpsCount&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"x"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"[["&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oX&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"mm x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oY&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"mm x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oZ&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"mm]]"&lt;/SPAN&gt;
	&lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;ooName&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;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;

&lt;SPAN&gt;Else&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Left&lt;/SPAN&gt;(&lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;, 1) = &lt;SPAN&gt;"#"&lt;/SPAN&gt;
&lt;SPAN&gt;ooName&lt;/SPAN&gt; = &lt;SPAN&gt;"___[[x"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oLumpsCount&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"]]"&lt;/SPAN&gt;
&lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;ooName&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;iLogicVb&lt;/SPAN&gt;.&lt;SPAN&gt;RunExternalRule&lt;/SPAN&gt;(&lt;SPAN&gt;"Multi-Measure_ERRORS"&lt;/SPAN&gt;)

&lt;SPAN&gt;UNDO&lt;/SPAN&gt;.&lt;SPAN&gt;End&lt;/SPAN&gt;
&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;and once that names the bodies it couldn't do on that run I run the slightly modified "&lt;SPAN&gt;Multi-Measure_ERRORS&lt;/SPAN&gt;" code below.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oPartDoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartDocument&lt;/SPAN&gt;
&lt;SPAN&gt;oPartDoc&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;ActiveDocument&lt;/SPAN&gt;
&lt;SPAN&gt;oNamer&lt;/SPAN&gt; = &lt;SPAN&gt;"Error-Catch"&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;UNDO&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Transaction&lt;/SPAN&gt; 
&lt;SPAN&gt;UNDO&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransactionManager&lt;/SPAN&gt;.&lt;SPAN&gt;StartTransaction&lt;/SPAN&gt;(&lt;SPAN&gt;oPartDoc&lt;/SPAN&gt;, &lt;SPAN&gt;oNamer&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;ThisDoc&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
&lt;SPAN&gt;i&lt;/SPAN&gt; = 0

&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;SurfaceBodies&lt;/SPAN&gt;

&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oBody&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oTransBRep&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;TransientBRep&lt;/SPAN&gt;
&lt;SPAN&gt;oTransBRep&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransientBRep&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oTransSolid&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oTransLump&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;FaceShell&lt;/SPAN&gt;
&lt;SPAN&gt;i&lt;/SPAN&gt; = &lt;SPAN&gt;i&lt;/SPAN&gt; + 1
&lt;SPAN&gt;oBody&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;SurfaceBodies&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;)
&lt;SPAN&gt;oLumpsCount&lt;/SPAN&gt; = &lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;FaceShells&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt;

&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Right&lt;/SPAN&gt;(&lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;, 9) = &lt;SPAN&gt;"[[ERROR]]"&lt;/SPAN&gt;

	&lt;SPAN&gt;oTransSolid&lt;/SPAN&gt; = &lt;SPAN&gt;oTransBRep&lt;/SPAN&gt;.&lt;SPAN&gt;Copy&lt;/SPAN&gt;(&lt;SPAN&gt;oBody&lt;/SPAN&gt;)
	&lt;SPAN&gt;Try&lt;/SPAN&gt;
	&lt;SPAN&gt;oTransFaces&lt;/SPAN&gt; = &lt;SPAN&gt;oTransSolid&lt;/SPAN&gt;.&lt;SPAN&gt;FaceShells&lt;/SPAN&gt;
	&lt;SPAN&gt;Catch&lt;/SPAN&gt;
	&lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;Left&lt;/SPAN&gt;(&lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;, &lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;.&lt;SPAN&gt;IndexOf&lt;/SPAN&gt;(&lt;SPAN&gt;"___"&lt;/SPAN&gt;))
	&lt;SPAN&gt;ooName&lt;/SPAN&gt; = &lt;SPAN&gt;"___"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oLumpsCount&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"x"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"[[ERROR]]"&lt;/SPAN&gt;
	&lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;ooName&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;oTransLump&lt;/SPAN&gt; = &lt;SPAN&gt;oTransFaces&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(1)
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;facesToDelete&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt;
	&lt;SPAN&gt;facesToDelete&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;.&lt;SPAN&gt;CreateFaceCollection&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;fc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Face&lt;/SPAN&gt;

		&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;fc&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oTransLump&lt;/SPAN&gt;.&lt;SPAN&gt;Faces&lt;/SPAN&gt;
		&lt;SPAN&gt;Call&lt;/SPAN&gt; &lt;SPAN&gt;facesToDelete&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;fc&lt;/SPAN&gt;)
		&lt;SPAN&gt;Next&lt;/SPAN&gt;

	&lt;SPAN&gt;oTransBRep&lt;/SPAN&gt;.&lt;SPAN&gt;DeleteFaces&lt;/SPAN&gt;(&lt;SPAN&gt;facesToDelete&lt;/SPAN&gt;, &lt;SPAN&gt;False&lt;/SPAN&gt;)
	&lt;SPAN&gt;facesToDelete&lt;/SPAN&gt;.&lt;SPAN&gt;Clear&lt;/SPAN&gt;

	&lt;SPAN&gt;oBox&lt;/SPAN&gt; = &lt;SPAN&gt;oTransSolid&lt;/SPAN&gt;.&lt;SPAN&gt;OrientedMinimumRangeBox&lt;/SPAN&gt;
	&lt;SPAN&gt;oX&lt;/SPAN&gt; = (&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;oBox&lt;/SPAN&gt;.&lt;SPAN&gt;DirectionOne&lt;/SPAN&gt;.&lt;SPAN&gt;Length&lt;/SPAN&gt;, 2))*10 
	&lt;SPAN&gt;oY&lt;/SPAN&gt; = (&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;oBox&lt;/SPAN&gt;.&lt;SPAN&gt;DirectionTwo&lt;/SPAN&gt;.&lt;SPAN&gt;Length&lt;/SPAN&gt;, 2))*10
	&lt;SPAN&gt;oZ&lt;/SPAN&gt; = (&lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;oBox&lt;/SPAN&gt;.&lt;SPAN&gt;DirectionThree&lt;/SPAN&gt;.&lt;SPAN&gt;Length&lt;/SPAN&gt;, 2)) * 10

	&lt;SPAN&gt;oTransSolid&lt;/SPAN&gt;.&lt;SPAN&gt;Delete&lt;/SPAN&gt;
	&lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;Left&lt;/SPAN&gt;(&lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;, &lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;.&lt;SPAN&gt;IndexOf&lt;/SPAN&gt;(&lt;SPAN&gt;"___"&lt;/SPAN&gt;))
	&lt;SPAN&gt;ooName&lt;/SPAN&gt; = &lt;SPAN&gt;"___"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oLumpsCount&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"x"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"[["&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oX&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"mm x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oY&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"mm x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oZ&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"mm]]"&lt;/SPAN&gt;
	&lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;ooName&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;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;

&lt;SPAN&gt;Next&lt;/SPAN&gt;

&lt;SPAN&gt;UNDO&lt;/SPAN&gt;.&lt;SPAN&gt;End&lt;/SPAN&gt;
&lt;/PRE&gt;&lt;P&gt;and that usually cleans up all the ones it couldn't on the first run. As I said it seems to randomly error and so this method has been working perfectly for me on a few very different models. There is definitely a way to combine the codes together to run as one, but I haven't had the chance to colate them yet.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hope this helps! I only figured this out fully and got it stable last week!&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 12 Oct 2021 07:14:35 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/orientated-minimum-rangebox-for-solid-body-faceshell/m-p/10682265#M45436</guid>
      <dc:creator>josiah.fordCEEGJ</dc:creator>
      <dc:date>2021-10-12T07:14:35Z</dc:date>
    </item>
    <item>
      <title>Re: Orientated Minimum Rangebox for Solid Body Faceshell</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/orientated-minimum-rangebox-for-solid-body-faceshell/m-p/10682976#M45437</link>
      <description>&lt;P&gt;I was getting issues with some bodies, I think the combine cut feature was a problem i identified, when I was still trying to use the delete face method.&amp;nbsp; The transient body creation method i posted earlier is much more robust then the delete face method.&amp;nbsp; I'm currently using it in my own custom rules.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is a bit of an extension to the code i posted before, where it will run in part or assembly:&lt;/P&gt;&lt;LI-CODE lang="general"&gt;Sub Main
	
	Dim aDoc As AssemblyDocument = TryCast(ThisApplication.ActiveDocument, AssemblyDocument)
	If Not IsNothing(aDoc) Then Call AssemblyEnvironment(aDoc)
	
	Dim pDoc As PartDocument = TryCast(ThisDoc.Document, PartDocument)
	If Not IsNothing(pDoc) Then Call PartEnvironment(pDoc)
	
End Sub

Sub AssemblyEnvironment(oDoc As AssemblyDocument)
Selection:	  
	Dim PickCO As ComponentOccurrence = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kAssemblyLeafOccurrenceFilter, "Select Part with body to extract")
	If IsNothing(PickCO) Then Exit Sub ' If nothing gets selected then we're done
	If PickCO.Definition.Document.DocumentType &amp;lt;&amp;gt; kPartDocumentObject Then If MessageBox.Show("Selected Occurence is not a part document.  Would you like to pick a different occurrence?", "Re-Pick?", MessageBoxButtons.YesNo) = vbYes Then GoTo Selection Else Exit Sub
	
	Dim pDef As PartComponentDefinition = PickCO.Definition
	Dim solidList As New List(Of String)
	Dim Correspondence As New List (Of Integer)
	
	For Each b As SurfaceBody In pDef.SurfaceBodies
		solidList.Add(b.Name &amp;amp; ":" &amp;amp; solidList.Count+1)
	Next
	
	If solidList.Count &amp;lt; 1 Then Logger.Trace("No Solids") : Exit Sub
	Dim pickedName As String = InputListBox("Select a Body to extract for Purchase List", solidList, solidList.Item(0), Title := "Solid Body Selection", ListName := "Available Bodies")
	If IsNothing(pickedName) Then Logger.Trace("No Selection") : Exit Sub
	
	Dim bodyIndex As Integer = CInt(Right(pickedName, pickedName.Length - pickedName.LastIndexOf(":") -1))
	
	Dim PickedSolid As SurfaceBody = pDef.SurfaceBodies.Item(bodyIndex)
	
	Dim BodyDescription As String = BuildDescription(pDef, PickedSolid)
	Logger.Trace(BodyDescription)
	
End Sub

Sub PartEnvironment(oDoc As PartDocument)
	
	Dim PickBody As SurfaceBody = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kPartBodyFilter, "Select a Body")
	If IsNothing(PickBody) Then Exit Sub ' If nothing gets selected then we're done
	
	Dim BodyDescription As String = BuildDescription(oDoc.ComponentDefinition, PickBody)
	Logger.Trace(BodyDescription)
	
End Sub

Function BuildDescription(pDef As PartComponentDefinition, oSolid As SurfaceBody) As String
	Dim Result As String = Nothing
	Dim BoxCollection As ObjectCollection = ThisApplication.TransientObjects.CreateObjectCollection
	If oSolid.FaceShells.Count &amp;gt; 1
		Logger.Trace("Multi body: " &amp;amp; oSolid.FaceShells.Count)
		For Each fs As FaceShell In oSolid.FaceShells
			'Define Objects to create transient copy
			Dim sbDef As SurfaceBodyDefinition = ThisApplication.TransientBRep.CreateSurfaceBodyDefinition 
			Dim lumpDef As LumpDefinition = sbDef.LumpDefinitions.Add()
			Dim fsDef As FaceShellDefinition = lumpDef.FaceShellDefinitions.Add()
			'Start to fill Definition
			For Each f As Face In fs.Faces
				Dim fDef As FaceDefinition = fsDef.FaceDefinitions.Add(f.Geometry, f.IsParamReversed)
				Dim elDef As EdgeLoopDefinition = fDef.EdgeLoopDefinitions.Add()
				For Each ed As Edge In f.EdgeLoops.Item(1).Edges
					elDef.EdgeUseDefinitions.Add(sbDef.EdgeDefinitions.Add(sbDef.VertexDefinitions.Add(ed.StartVertex.Point), sbDef.VertexDefinitions.Add(ed.StopVertex.Point), ed.Geometry), ed.IsParamReversed)
				Next
			Next
			'Body creation
			Dim oErrors As NameValueMap
			Dim TransBody As SurfaceBody = sbDef.CreateTransientSurfaceBody(oErrors)
			BoxCollection.Add(TransBody.OrientedMinimumRangeBox)
		Next
	Else If oSolid.FaceShells.Count = 1
		Logger.Trace("Single")
		BoxCollection.Add(oSolid.OrientedMinimumRangeBox)
	End If
	For Each ItemRangeBox As OrientedBox In BoxCollection
		Dim AddString As String = FormulateString(ItemRangeBox.DirectionOne.Length, ItemRangeBox.DirectionTwo.Length, ItemRangeBox.DirectionThree.Length)
		Result += AddString
	Next
	Return Result
End Function

Function FormulateString(DoubleX As Double, DoubleY As Double, DoubleZ As Double) As String
	'Logger.Trace("Formulating")
	Dim Result As String = Nothing
	Dim Length, Width, Thickness As Double
	Dim inchOutput As Double = 2.54
	Dim inc As Double = 1/64
	Dim dec As Integer = 9
	
	If DoubleX &amp;gt;= DoubleY And DoubleX &amp;gt;= DoubleZ
		Length = Math.Round(Math.Round((DoubleX / inchOutput),dec)/inc)*inc
		If DoubleY &amp;gt;= DoubleZ
			Width = Math.Round(Math.Round((DoubleY / inchOutput),dec)/inc)*inc
			Thickness = Math.Round(Math.Round((DoubleZ / inchOutput),dec)/inc)*inc
		Else
			Width = Math.Round(Math.Round((DoubleZ / inchOutput),dec)/inc)*inc
			Thickness = Math.Round(Math.Round((DoubleY / inchOutput),dec)/inc)*inc
		End If
	Else If DoubleY &amp;gt;= DoubleX And DoubleY &amp;gt;= DoubleZ
		Length = Math.Round(Math.Round((DoubleY / inchOutput),dec)/inc)*inc
		If DoubleX &amp;gt;= DoubleZ
			Width = Math.Round(Math.Round((DoubleX / inchOutput),dec)/inc)*inc
			Thickness = Math.Round(Math.Round((DoubleZ / inchOutput),dec)/inc)*inc
		Else
			Width = Math.Round(Math.Round((DoubleZ / inchOutput),dec)/inc)*inc
			Thickness = Math.Round(Math.Round((DoubleX / inchOutput),dec)/inc)*inc
		End If
	Else
		Length = Math.Round(Math.Round((DoubleZ / inchOutput),dec)/inc)*inc
		If DoubleX &amp;gt;= DoubleY
			Width = Math.Round(Math.Round((DoubleX / inchOutput),dec)/inc)*inc
			Thickness = Math.Round(Math.Round((DoubleY / inchOutput),dec)/inc)*inc
		Else
			Width = Math.Round(Math.Round((DoubleY / inchOutput),dec)/inc)*inc
			Thickness = Math.Round(Math.Round((DoubleX / inchOutput),dec)/inc)*inc
		End If
	End If
	
	Result = "(1) @ " &amp;amp; Length.ToString &amp;amp; """ x " &amp;amp; Width.ToString &amp;amp; """ x " &amp;amp; Thickness.ToString &amp;amp; ""","
		
	Return Result
End Function&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The occurrence &amp;amp; body selection methods can be changed to a loop if desired and I'm currently just outputting a single string with the dimensions of each faceshell.&amp;nbsp; You will have to implement your actual reporting method, but it should be pretty easy.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If you have any questions, please let me know.&lt;/P&gt;</description>
      <pubDate>Tue, 12 Oct 2021 12:52:58 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/orientated-minimum-rangebox-for-solid-body-faceshell/m-p/10682976#M45437</guid>
      <dc:creator>J-Camper</dc:creator>
      <dc:date>2021-10-12T12:52:58Z</dc:date>
    </item>
    <item>
      <title>Re: Orientated Minimum Rangebox for Solid Body Faceshell</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/orientated-minimum-rangebox-for-solid-body-faceshell/m-p/10687223#M45438</link>
      <description>&lt;P&gt;Thanks.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Working well. Should save a lot of time, not having to manually detail cutlists.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Your pointers on the&amp;nbsp;&lt;SPAN&gt;transient body creation method removed the instability with the delete face method.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Code below.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;'Rev 0 - 211012 - WI - Initial Issue&lt;/SPAN&gt;

&lt;SPAN&gt;'Notes: &lt;/SPAN&gt;
&lt;SPAN&gt;'Solid body names must be named with the following method: REF_RAIL_ &amp;lt;insert solid body identifier here&amp;gt;&lt;/SPAN&gt;
&lt;SPAN&gt;'The use of underscore for the seperator in the solid body name must be used. &lt;/SPAN&gt;

&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;ActiveDocumentType&lt;/SPAN&gt; &amp;lt;&amp;gt; &lt;SPAN&gt;kAssemblyDocumentObject&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
    &lt;SPAN&gt;MessageBox&lt;/SPAN&gt;.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;"This rule can only be run in an assembly environment"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;vbNewLine&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"The rule will exit..."&lt;/SPAN&gt;, &lt;SPAN&gt;"Error Handling"&lt;/SPAN&gt;,&lt;SPAN&gt;MessageBoxButtons&lt;/SPAN&gt;.&lt;SPAN&gt;OK&lt;/SPAN&gt;,&lt;SPAN&gt;MessageBoxIcon&lt;/SPAN&gt;.&lt;SPAN&gt;Error&lt;/SPAN&gt;)
    &lt;SPAN&gt;Return&lt;/SPAN&gt;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;

&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oAsm&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyDocument&lt;/SPAN&gt; = &lt;SPAN&gt;ThisDoc&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oMatrix&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Matrix&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransientGeometry&lt;/SPAN&gt;.&lt;SPAN&gt;CreateMatrix&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oAsmCompDef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyComponentDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;ActiveDocument&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&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;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oOccs&lt;/SPAN&gt; = &lt;SPAN&gt;oAsmCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;
&lt;SPAN&gt;doc&lt;/SPAN&gt; = &lt;SPAN&gt;ThisDoc&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt; 
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;MyArrayList&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;New&lt;/SPAN&gt; &lt;SPAN&gt;ArrayList&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;MyArrayQTY&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;New&lt;/SPAN&gt; &lt;SPAN&gt;ArrayList&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;MyArrayDeleteList&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;New&lt;/SPAN&gt; &lt;SPAN&gt;ArrayList&lt;/SPAN&gt;

&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oAsmCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;TypeOf&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Definition&lt;/SPAN&gt; &lt;SPAN&gt;Is&lt;/SPAN&gt; &lt;SPAN&gt;VirtualComponentDefinition&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
		&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;.&lt;SPAN&gt;Contains&lt;/SPAN&gt;(&lt;SPAN&gt;"REF_RAIL"&lt;/SPAN&gt;) &lt;SPAN&gt;Then&lt;/SPAN&gt;
			&lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Delete&lt;/SPAN&gt;
	
		&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
&lt;SPAN&gt;Next&lt;/SPAN&gt;


&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oAsmCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;TypeOf&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Definition&lt;/SPAN&gt; &lt;SPAN&gt;Is&lt;/SPAN&gt; &lt;SPAN&gt;VirtualComponentDefinition&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
	&lt;SPAN&gt;Else&lt;/SPAN&gt;
		&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;BOMStructure&lt;/SPAN&gt; = &lt;SPAN&gt;kReferenceBOMStructure&lt;/SPAN&gt;
			&lt;SPAN&gt;'Ignore parts with Bom set to reference&lt;/SPAN&gt;
		&lt;SPAN&gt;Else&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;PartComponentDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Definition&lt;/SPAN&gt;
			&lt;SPAN&gt;oDoc&lt;/SPAN&gt; = &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Definition&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt;
			&lt;SPAN&gt;i&lt;/SPAN&gt; = 0
			&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;SurfaceBodies&lt;/SPAN&gt;
				&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oBody&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt;
				&lt;SPAN&gt;i&lt;/SPAN&gt; = &lt;SPAN&gt;i&lt;/SPAN&gt; + 1
				&lt;SPAN&gt;oBody&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;SurfaceBodies&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;)
				&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;.&lt;SPAN&gt;Contains&lt;/SPAN&gt;(&lt;SPAN&gt;"REF_RAIL"&lt;/SPAN&gt;) &lt;SPAN&gt;Then&lt;/SPAN&gt;
					&lt;SPAN&gt;strParentDescription&lt;/SPAN&gt; = &lt;SPAN&gt;iProperties&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;, &lt;SPAN&gt;"Project"&lt;/SPAN&gt;, &lt;SPAN&gt;"Description"&lt;/SPAN&gt;)
					&lt;SPAN&gt;strParentName&lt;/SPAN&gt; = &lt;SPAN&gt;oDoc&lt;/SPAN&gt;.&lt;SPAN&gt;FullFileName&lt;/SPAN&gt;
					&lt;SPAN&gt;strSBName&lt;/SPAN&gt; = &lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;
					&lt;SPAN&gt;strSBNameArray&lt;/SPAN&gt; = &lt;SPAN&gt;strSBName&lt;/SPAN&gt;.&lt;SPAN&gt;Split&lt;/SPAN&gt;(&lt;SPAN&gt;"_"&lt;/SPAN&gt;)
						&lt;SPAN&gt;Try&lt;/SPAN&gt;
							&lt;SPAN&gt;strSolidBodyIdentifier&lt;/SPAN&gt; = &lt;SPAN&gt;strSBNameArray&lt;/SPAN&gt;(2)
						&lt;SPAN&gt;Catch&lt;/SPAN&gt;
							&lt;SPAN&gt;strSolidBodyIdentifier&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;BoxCollection&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;.&lt;SPAN&gt;CreateObjectCollection&lt;/SPAN&gt;
								&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;fs&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;FaceShell&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oBody&lt;/SPAN&gt;.&lt;SPAN&gt;FaceShells&lt;/SPAN&gt;
									&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;sbDef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBodyDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransientBRep&lt;/SPAN&gt;.&lt;SPAN&gt;CreateSurfaceBodyDefinition&lt;/SPAN&gt; 
									&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;lumpDef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;LumpDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;sbDef&lt;/SPAN&gt;.&lt;SPAN&gt;LumpDefinitions&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;()
									&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;fsDef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;FaceShellDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;lumpDef&lt;/SPAN&gt;.&lt;SPAN&gt;FaceShellDefinitions&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;()
										&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;f&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Face&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;fs&lt;/SPAN&gt;.&lt;SPAN&gt;Faces&lt;/SPAN&gt;
											&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;fDef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;FaceDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;fsDef&lt;/SPAN&gt;.&lt;SPAN&gt;FaceDefinitions&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;f&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;, &lt;SPAN&gt;f&lt;/SPAN&gt;.&lt;SPAN&gt;IsParamReversed&lt;/SPAN&gt;)
											&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;elDef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;EdgeLoopDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;fDef&lt;/SPAN&gt;.&lt;SPAN&gt;EdgeLoopDefinitions&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;()
												&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;ed&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Edge&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;f&lt;/SPAN&gt;.&lt;SPAN&gt;EdgeLoops&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(1).&lt;SPAN&gt;Edges&lt;/SPAN&gt;
													&lt;SPAN&gt;elDef&lt;/SPAN&gt;.&lt;SPAN&gt;EdgeUseDefinitions&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;sbDef&lt;/SPAN&gt;.&lt;SPAN&gt;EdgeDefinitions&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;sbDef&lt;/SPAN&gt;.&lt;SPAN&gt;VertexDefinitions&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;ed&lt;/SPAN&gt;.&lt;SPAN&gt;StartVertex&lt;/SPAN&gt;.&lt;SPAN&gt;Point&lt;/SPAN&gt;), &lt;SPAN&gt;sbDef&lt;/SPAN&gt;.&lt;SPAN&gt;VertexDefinitions&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;ed&lt;/SPAN&gt;.&lt;SPAN&gt;StopVertex&lt;/SPAN&gt;.&lt;SPAN&gt;Point&lt;/SPAN&gt;), &lt;SPAN&gt;ed&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;), &lt;SPAN&gt;ed&lt;/SPAN&gt;.&lt;SPAN&gt;IsParamReversed&lt;/SPAN&gt;)
												&lt;SPAN&gt;Next&lt;/SPAN&gt;
										&lt;SPAN&gt;Next&lt;/SPAN&gt;
									&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oErrors&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;NameValueMap&lt;/SPAN&gt;
									&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;TransBody&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SurfaceBody&lt;/SPAN&gt; = &lt;SPAN&gt;sbDef&lt;/SPAN&gt;.&lt;SPAN&gt;CreateTransientSurfaceBody&lt;/SPAN&gt;(&lt;SPAN&gt;oErrors&lt;/SPAN&gt;)
									&lt;SPAN&gt;BoxCollection&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;TransBody&lt;/SPAN&gt;.&lt;SPAN&gt;OrientedMinimumRangeBox&lt;/SPAN&gt;)
								&lt;SPAN&gt;Next&lt;/SPAN&gt;
						&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;ItemRangeBox&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;OrientedBox&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;BoxCollection&lt;/SPAN&gt;
							&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;dir1&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;ItemRangeBox&lt;/SPAN&gt;.&lt;SPAN&gt;DirectionOne&lt;/SPAN&gt;.&lt;SPAN&gt;Length&lt;/SPAN&gt;,2)
							&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;dir2&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;ItemRangeBox&lt;/SPAN&gt;.&lt;SPAN&gt;DirectionTwo&lt;/SPAN&gt;.&lt;SPAN&gt;Length&lt;/SPAN&gt;,2)
							&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;dir3&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;Round&lt;/SPAN&gt;(&lt;SPAN&gt;ItemRangeBox&lt;/SPAN&gt;.&lt;SPAN&gt;DirectionThree&lt;/SPAN&gt;.&lt;SPAN&gt;Length&lt;/SPAN&gt;,2)
							
							&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;doc&lt;/SPAN&gt;.&lt;SPAN&gt;UnitsOfMeasure&lt;/SPAN&gt;

							&lt;SPAN&gt;dir1&lt;/SPAN&gt; = &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;ConvertUnits&lt;/SPAN&gt;(&lt;SPAN&gt;dir1&lt;/SPAN&gt;, &lt;SPAN&gt;"cm"&lt;/SPAN&gt;, &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;LengthUnits&lt;/SPAN&gt;)
							&lt;SPAN&gt;dir2&lt;/SPAN&gt; = &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;ConvertUnits&lt;/SPAN&gt;(&lt;SPAN&gt;dir2&lt;/SPAN&gt;, &lt;SPAN&gt;"cm"&lt;/SPAN&gt;, &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;LengthUnits&lt;/SPAN&gt;)
							&lt;SPAN&gt;dir3&lt;/SPAN&gt; = &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;ConvertUnits&lt;/SPAN&gt;(&lt;SPAN&gt;dir3&lt;/SPAN&gt;, &lt;SPAN&gt;"cm"&lt;/SPAN&gt;, &lt;SPAN&gt;uom&lt;/SPAN&gt;.&lt;SPAN&gt;LengthUnits&lt;/SPAN&gt;)

							&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;lengths&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;New&lt;/SPAN&gt; &lt;SPAN&gt;List&lt;/SPAN&gt;(&lt;SPAN&gt;Of&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;) &lt;SPAN&gt;From&lt;/SPAN&gt; {&lt;SPAN&gt;dir1&lt;/SPAN&gt;, &lt;SPAN&gt;dir2&lt;/SPAN&gt;, &lt;SPAN&gt;dir3&lt;/SPAN&gt; }
							&lt;SPAN&gt;lengths&lt;/SPAN&gt;.&lt;SPAN&gt;Sort&lt;/SPAN&gt;

							&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;minLength&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;lengths&lt;/SPAN&gt;(0)
							&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;midLength&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;lengths&lt;/SPAN&gt;(1)
							&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;maxLength&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;lengths&lt;/SPAN&gt;(2)
							
							&lt;SPAN&gt;strDimensions&lt;/SPAN&gt; = &lt;SPAN&gt;midLength&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" X "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;minLength&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" - "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;maxLength&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt;
							&lt;SPAN&gt;strArrayString&lt;/SPAN&gt; = &lt;SPAN&gt;strDimensions&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;";"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;strParentDescription&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;";"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;strParentName&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;";"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;strSolidBodyIdentifier&lt;/SPAN&gt;
							&lt;SPAN&gt;MyArrayList&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;strArrayString&lt;/SPAN&gt;)
							&lt;SPAN&gt;MyArrayQTY&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(1)
						&lt;SPAN&gt;Next&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;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
&lt;SPAN&gt;Next&lt;/SPAN&gt;

&lt;SPAN&gt;MyArrayList&lt;/SPAN&gt;.&lt;SPAN&gt;Sort&lt;/SPAN&gt;()
	&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;i&lt;/SPAN&gt; = 0 &lt;SPAN&gt;To&lt;/SPAN&gt; &lt;SPAN&gt;MyArrayList&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt; - 1
		&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;i&lt;/SPAN&gt; = 0
		&lt;SPAN&gt;Else&lt;/SPAN&gt;
			&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;MyArrayList&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;) = &lt;SPAN&gt;MyArrayList&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt; - 1) &lt;SPAN&gt;Then&lt;/SPAN&gt;
				&lt;SPAN&gt;MyArrayDeleteList&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;-1)
				&lt;SPAN&gt;MyArrayQTY&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;) = &lt;SPAN&gt;MyArrayQTY&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;) + &lt;SPAN&gt;MyArrayQTY&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;-1)
			&lt;SPAN&gt;Else&lt;/SPAN&gt;
			&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
		&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
	&lt;SPAN&gt;Next&lt;/SPAN&gt;
		&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;i&lt;/SPAN&gt; = 0 &lt;SPAN&gt;To&lt;/SPAN&gt; &lt;SPAN&gt;MyArrayDeleteList&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt; - 1
			&lt;SPAN&gt;MyArrayList&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;MyArrayDeleteList&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;)) = &lt;SPAN&gt;"Delete"&lt;/SPAN&gt;
			&lt;SPAN&gt;MyArrayQTY&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;MyArrayDeleteList&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;)) = &lt;SPAN&gt;"Delete"&lt;/SPAN&gt;
		&lt;SPAN&gt;Next&lt;/SPAN&gt;
			&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;i&lt;/SPAN&gt; = (&lt;SPAN&gt;MyArrayList&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt; - 1) &lt;SPAN&gt;To&lt;/SPAN&gt; 0 &lt;SPAN&gt;Step&lt;/SPAN&gt; -1
				&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;MyArrayList&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;) = &lt;SPAN&gt;"Delete"&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
					&lt;SPAN&gt;MyArrayList&lt;/SPAN&gt;.&lt;SPAN&gt;RemoveAt&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;)
					&lt;SPAN&gt;MyArrayQTY&lt;/SPAN&gt;.&lt;SPAN&gt;RemoveAt&lt;/SPAN&gt;(&lt;SPAN&gt;i&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;''Error Checking code - to see what the array values are&lt;/SPAN&gt;
&lt;SPAN&gt;'oWrite = System.IO.File.CreateText(ThisDoc.PathAndFileName(False) &amp;amp; ".txt")&lt;/SPAN&gt;
&lt;SPAN&gt;'For i = 0 To MyArrayList.Count - 1&lt;/SPAN&gt;
&lt;SPAN&gt;'	oWrite.WriteLine(MyArrayQTY(i) &amp;amp; " X " &amp;amp; MyArrayList.Item(i))&lt;/SPAN&gt;
&lt;SPAN&gt;'Next&lt;/SPAN&gt;
&lt;SPAN&gt;'oWrite.Close()&lt;/SPAN&gt;
&lt;SPAN&gt;'ThisDoc.Launch(ThisDoc.PathAndFileName(False) &amp;amp; ".txt")&lt;/SPAN&gt;

&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;i&lt;/SPAN&gt; = 0 &lt;SPAN&gt;To&lt;/SPAN&gt; &lt;SPAN&gt;MyArrayList&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt; - 1
	&lt;SPAN&gt;strSBNameArray&lt;/SPAN&gt; = &lt;SPAN&gt;MyArrayList&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;).&lt;SPAN&gt;Split&lt;/SPAN&gt;(&lt;SPAN&gt;";"&lt;/SPAN&gt;)
	&lt;SPAN&gt;strDimensions&lt;/SPAN&gt; = &lt;SPAN&gt;strSBNameArray&lt;/SPAN&gt;(0)
	&lt;SPAN&gt;strParentDescription&lt;/SPAN&gt; = &lt;SPAN&gt;strSBNameArray&lt;/SPAN&gt;(1)
	&lt;SPAN&gt;strParentName&lt;/SPAN&gt; = &lt;SPAN&gt;strSBNameArray&lt;/SPAN&gt;(2)
	&lt;SPAN&gt;strSolidBodyIdentifier&lt;/SPAN&gt; = &lt;SPAN&gt;strSBNameArray&lt;/SPAN&gt;(3)
	
	&lt;SPAN&gt;oOccVirt&lt;/SPAN&gt; = &lt;SPAN&gt;oAsm&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;.&lt;SPAN&gt;AddVirtual&lt;/SPAN&gt;(&lt;SPAN&gt;"REF_RAIL "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;i&lt;/SPAN&gt;, &lt;SPAN&gt;oMatrix&lt;/SPAN&gt;)
	&lt;SPAN&gt;strOccName&lt;/SPAN&gt; = &lt;SPAN&gt;oOccVirt&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;
	&lt;SPAN&gt;iProperties&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;strOccName&lt;/SPAN&gt;, &lt;SPAN&gt;"Project"&lt;/SPAN&gt;, &lt;SPAN&gt;"Part Number"&lt;/SPAN&gt;) = &lt;SPAN&gt;"REF_RAIL "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;i&lt;/SPAN&gt;
	&lt;SPAN&gt;iProperties&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;strOccName&lt;/SPAN&gt;, &lt;SPAN&gt;"Project"&lt;/SPAN&gt;, &lt;SPAN&gt;"Stock Number"&lt;/SPAN&gt;) = &lt;SPAN&gt;strDimensions&lt;/SPAN&gt;
	&lt;SPAN&gt;iProperties&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;strOccName&lt;/SPAN&gt;, &lt;SPAN&gt;"Project"&lt;/SPAN&gt;, &lt;SPAN&gt;"Description"&lt;/SPAN&gt;) = &lt;SPAN&gt;strSolidBodyIdentifier&lt;/SPAN&gt;
	&lt;SPAN&gt;iProperties&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;strOccName&lt;/SPAN&gt;, &lt;SPAN&gt;"Custom"&lt;/SPAN&gt;, &lt;SPAN&gt;"Parent"&lt;/SPAN&gt;) = &lt;SPAN&gt;strParentDescription&lt;/SPAN&gt;
	&lt;SPAN&gt;ThisBOM&lt;/SPAN&gt;.&lt;SPAN&gt;OverrideQuantity&lt;/SPAN&gt;(&lt;SPAN&gt;"Model Data"&lt;/SPAN&gt;,&lt;SPAN&gt;"REF_RAIL "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;i&lt;/SPAN&gt;,&lt;SPAN&gt;MyArrayQTY&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;))
&lt;SPAN&gt;Next&lt;/SPAN&gt;

&lt;SPAN&gt;MyArrayList&lt;/SPAN&gt;.&lt;SPAN&gt;Clear&lt;/SPAN&gt;
&lt;SPAN&gt;MyArrayQTY&lt;/SPAN&gt;.&lt;SPAN&gt;Clear&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 14 Oct 2021 04:20:28 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/orientated-minimum-rangebox-for-solid-body-faceshell/m-p/10687223#M45438</guid>
      <dc:creator>william</dc:creator>
      <dc:date>2021-10-14T04:20:28Z</dc:date>
    </item>
  </channel>
</rss>

