<?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: flat pattern extents when part not fully created in Inventor Programming - iLogic, Macros, AddIns &amp; Apprentice</title>
    <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/flat-pattern-extents-when-part-not-fully-created/m-p/10636762#M129165</link>
    <description>&lt;P&gt;Thank you Michael, I didn't know it had the API.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I still get errors, only when there isn't a flat pattern available and can't figure it out... Unspecified Error (Exception from HRESULT: 0x80004005 (E_FAIL)).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;' Code to write "Stock Size" iProperty&lt;/SPAN&gt;

&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;Main&lt;/SPAN&gt;()
	
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;invdoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Document&lt;/SPAN&gt;
&lt;SPAN&gt;invdoc&lt;/SPAN&gt; = &lt;SPAN&gt;ThisDoc&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt;

&lt;SPAN&gt;'Function GetUserParams returns UserParameters Collection&lt;/SPAN&gt;
&lt;SPAN&gt;oUserParams&lt;/SPAN&gt; = &lt;SPAN&gt;GetUserParams&lt;/SPAN&gt;(&lt;SPAN&gt;invdoc&lt;/SPAN&gt;)
 
&lt;SPAN&gt;'Function FindParameter returns the looked for parameter&lt;/SPAN&gt;
&lt;SPAN&gt;paraFL&lt;/SPAN&gt; = &lt;SPAN&gt;FindParameter&lt;/SPAN&gt;(&lt;SPAN&gt;invdoc&lt;/SPAN&gt;, &lt;SPAN&gt;"FL"&lt;/SPAN&gt;)
  
&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;paraFL&lt;/SPAN&gt; &lt;SPAN&gt;IsNot&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; 
	&lt;SPAN&gt;'MessageBox.Show("Parameter does exist", "Title")&lt;/SPAN&gt;
&lt;SPAN&gt;Else&lt;/SPAN&gt;
	&lt;SPAN&gt;'MessageBox.Show("Parameter does not exist", "Title")&lt;/SPAN&gt;
	&lt;SPAN&gt;paraFL&lt;/SPAN&gt; = &lt;SPAN&gt;oUserParams&lt;/SPAN&gt;.&lt;SPAN&gt;AddByValue&lt;/SPAN&gt;(&lt;SPAN&gt;"FL"&lt;/SPAN&gt;, 0, &lt;SPAN&gt;UnitsTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kInchLengthUnits&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;oPart&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartDocument&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;oSS&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;StockSize&lt;/SPAN&gt;(&lt;SPAN&gt;oPart&lt;/SPAN&gt;)
	&lt;SPAN&gt;Logger&lt;/SPAN&gt;.&lt;SPAN&gt;Info&lt;/SPAN&gt;(&lt;SPAN&gt;oSS&lt;/SPAN&gt;)

&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;

&lt;SPAN&gt;'See if parameter FL exists&lt;/SPAN&gt;
&lt;SPAN&gt;Public&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;FindParameter&lt;/SPAN&gt;(&lt;SPAN&gt;invdoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt;, &lt;SPAN&gt;strParameter&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;) &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;

&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;cd&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;Nothing&lt;/SPAN&gt;
&lt;SPAN&gt;Select&lt;/SPAN&gt; &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;invdoc&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentType&lt;/SPAN&gt;
    &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;Is&lt;/SPAN&gt; = &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kAssemblyDocumentObject&lt;/SPAN&gt;
		&lt;SPAN&gt;'MessageBox.Show("Is a Assembly", "Title")&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;docAssembly&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;AssemblyDocument&lt;/SPAN&gt; = &lt;SPAN&gt;invdoc&lt;/SPAN&gt;
        &lt;SPAN&gt;cd&lt;/SPAN&gt; = &lt;SPAN&gt;docAssembly&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
    &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;Is&lt;/SPAN&gt; = &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kPartDocumentObject&lt;/SPAN&gt;
		&lt;SPAN&gt;'MessageBox.Show("Is a Part", "Title")&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;docPart&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;PartDocument&lt;/SPAN&gt; = &lt;SPAN&gt;invdoc&lt;/SPAN&gt;
        &lt;SPAN&gt;cd&lt;/SPAN&gt; = &lt;SPAN&gt;docPart&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Select&lt;/SPAN&gt;
&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;cd&lt;/SPAN&gt; &lt;SPAN&gt;IsNot&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&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;param&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;Parameter&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;cd&lt;/SPAN&gt;.&lt;SPAN&gt;Parameters&lt;/SPAN&gt;
        &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;param&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;strParameter&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;param&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;Return&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&lt;/SPAN&gt;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;

&lt;SPAN&gt;'Get user parameters collection&lt;/SPAN&gt;
&lt;SPAN&gt;Public&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;GetUserParams&lt;/SPAN&gt;(&lt;SPAN&gt;invdoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt;) &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;UserParameters&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;cd&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;Nothing&lt;/SPAN&gt;
    &lt;SPAN&gt;Select&lt;/SPAN&gt; &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;invdoc&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentType&lt;/SPAN&gt;
        &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;Is&lt;/SPAN&gt; = &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kAssemblyDocumentObject&lt;/SPAN&gt;
            &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;docAssembly&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;AssemblyDocument&lt;/SPAN&gt; = &lt;SPAN&gt;invdoc&lt;/SPAN&gt;
            &lt;SPAN&gt;cd&lt;/SPAN&gt; = &lt;SPAN&gt;docAssembly&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
        &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;Is&lt;/SPAN&gt; = &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kPartDocumentObject&lt;/SPAN&gt;
            &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;docPart&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;PartDocument&lt;/SPAN&gt; = &lt;SPAN&gt;invdoc&lt;/SPAN&gt;
            &lt;SPAN&gt;cd&lt;/SPAN&gt; = &lt;SPAN&gt;docPart&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Select&lt;/SPAN&gt;
   
   &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;cd&lt;/SPAN&gt; &lt;SPAN&gt;IsNot&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;BR /&gt;&lt;/SPAN&gt;
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oParams&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Parameters&lt;/SPAN&gt;
			&lt;SPAN&gt;oParams&lt;/SPAN&gt; = &lt;SPAN&gt;cd&lt;/SPAN&gt;.&lt;SPAN&gt;Parameters&lt;/SPAN&gt;
			
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oUserParams&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;UserParameters&lt;/SPAN&gt;
			&lt;SPAN&gt;oUserParams&lt;/SPAN&gt; = &lt;SPAN&gt;oParams&lt;/SPAN&gt;.&lt;SPAN&gt;UserParameters&lt;/SPAN&gt;
             &lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;oUserParams&lt;/SPAN&gt;
    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
	 &lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&lt;/SPAN&gt;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;BR /&gt;&lt;/SPAN&gt;
&lt;SPAN&gt;Private&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;StockSize&lt;/SPAN&gt;(&lt;SPAN&gt;part&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartDocument&lt;/SPAN&gt;) &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oStock&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;getstock&lt;/SPAN&gt;(&lt;SPAN&gt;part&lt;/SPAN&gt;)
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;propertyName&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;"STOCK SIZE"&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;PropertyValue&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;oStock&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oCProps&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PropertySet&lt;/SPAN&gt; = &lt;SPAN&gt;part&lt;/SPAN&gt;.&lt;SPAN&gt;PropertySets&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;"Inventor User Defined Properties"&lt;/SPAN&gt;)
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oSSProp&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;Property&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oExists&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Boolean&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt;
	&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oCProp&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;Property&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oCProps&lt;/SPAN&gt;
		&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oCProp&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;propertyName&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
			&lt;SPAN&gt;oSSProp&lt;/SPAN&gt; = &lt;SPAN&gt;oCProp&lt;/SPAN&gt;
			&lt;SPAN&gt;oSSProp&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt; = &lt;SPAN&gt;PropertyValue&lt;/SPAN&gt;
			&lt;SPAN&gt;oExists&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
		&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
	&lt;SPAN&gt;Next&lt;/SPAN&gt;
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oExists&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
		&lt;SPAN&gt;oSSProp&lt;/SPAN&gt; = &lt;SPAN&gt;oCProps&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;propertyName&lt;/SPAN&gt;, &lt;SPAN&gt;propertyName&lt;/SPAN&gt;)
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;

	&lt;SPAN&gt;StockSize&lt;/SPAN&gt; = &lt;SPAN&gt;oSSProp&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;

&lt;SPAN&gt;'Write stock size for each part shape&lt;/SPAN&gt;
&lt;SPAN&gt;Private&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;getstock&lt;/SPAN&gt;(&lt;SPAN&gt;part&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartDocument&lt;/SPAN&gt;) &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;

&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oFL&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"FL"&lt;/SPAN&gt;)
	
&lt;SPAN&gt;Select&lt;/SPAN&gt; &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;iProperties&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;"Inventor User Defined Properties"&lt;/SPAN&gt;, &lt;SPAN&gt;"Product"&lt;/SPAN&gt;)

	&lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;"01 Sheet Metal"&lt;/SPAN&gt;
	
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;opart&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartDocument&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;smCompDef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SheetMetalComponentDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;opart&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;smlength&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;SheetMetal&lt;/SPAN&gt;.&lt;SPAN&gt;FlatExtentsLength&lt;/SPAN&gt; &lt;SPAN&gt;'sheet metal flat pattern length&lt;/SPAN&gt;
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;smwidth&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;SheetMetal&lt;/SPAN&gt;.&lt;SPAN&gt;FlatExtentsWidth&lt;/SPAN&gt; &lt;SPAN&gt;'sheet metal flat pattern width&lt;/SPAN&gt;
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;AreaPronest&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = (&lt;SPAN&gt;smlength&lt;/SPAN&gt; + &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"Thickness"&lt;/SPAN&gt;)) * (&lt;SPAN&gt;smwidth&lt;/SPAN&gt; + &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"Thickness"&lt;/SPAN&gt;)) / 144
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oSMthk&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"Thickness"&lt;/SPAN&gt;)
		&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;smCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;HasFlatPattern&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;	
			&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"Thickness"&lt;/SPAN&gt;) &amp;gt;= 0.1875 &lt;SPAN&gt;Then&lt;/SPAN&gt;
				&lt;SPAN&gt;getstock&lt;/SPAN&gt; =&lt;SPAN&gt;"Plate, "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;oSMthk&lt;/SPAN&gt;, &lt;SPAN&gt;"0.000"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" thk x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;AreaPronest&lt;/SPAN&gt;, &lt;SPAN&gt;"0.00"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" ft^2"&lt;/SPAN&gt;
			&lt;SPAN&gt;Else&lt;/SPAN&gt;
				&lt;SPAN&gt;getstock&lt;/SPAN&gt; =&lt;SPAN&gt;"Sheet Metal, "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;oSMthk&lt;/SPAN&gt;, &lt;SPAN&gt;"0.000"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" thk x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;AreaPronest&lt;/SPAN&gt;, &lt;SPAN&gt;"0.00"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" ft^2"&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;Case&lt;/SPAN&gt; &lt;SPAN&gt;"02 Pipe"&lt;/SPAN&gt;
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oPipeD&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"G_D_Nom"&lt;/SPAN&gt;)
		&lt;SPAN&gt;oL&lt;/SPAN&gt; = &lt;SPAN&gt;FormatAsFraction&lt;/SPAN&gt;(&lt;SPAN&gt;oPipeD&lt;/SPAN&gt;)
		&lt;SPAN&gt;getstock&lt;/SPAN&gt; = &lt;SPAN&gt;"Pipe, "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oL&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" sch."&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"Schedule"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;oFL&lt;/SPAN&gt;, &lt;SPAN&gt;"0.00"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;End Select&lt;BR /&gt;End Function&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 21 Sep 2021 11:59:42 GMT</pubDate>
    <dc:creator>emanuel.c</dc:creator>
    <dc:date>2021-09-21T11:59:42Z</dc:date>
    <item>
      <title>flat pattern extents when part not fully created</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/flat-pattern-extents-when-part-not-fully-created/m-p/10634975#M129130</link>
      <description>&lt;P&gt;I have this piece of code (part of a function which returns "getstock")&amp;nbsp;to calculate the area of the flat patterns of sheet metal, with an additional kerf, the thickness dimension. It works well, however I need to add some error exits and I'm not sure what exactly should be done. The code is triggered on Save. Basically, if the sheet metal is not yet created and I wish to save the part for the sake of the sketch it will trigger errors because there are no flat pattern extents. I could let the error be and keep on, but sometimes I may create sketches on sheet metal to drive other parts in the model.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Do I need to go with searching to see if those parameters (flat pattern extends) exist? I tried the If IsNot but that doesn't seem to work. What's the way to do it? Thank you much!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;smlength&lt;/SPAN&gt; = &lt;SPAN&gt;SheetMetal&lt;/SPAN&gt;.&lt;SPAN&gt;FlatExtentsLength&lt;/SPAN&gt; &lt;SPAN&gt;'sheet metal flat pattern length&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;smwidth&lt;/SPAN&gt; = &lt;SPAN&gt;SheetMetal&lt;/SPAN&gt;.&lt;SPAN&gt;FlatExtentsWidth&lt;/SPAN&gt; &lt;SPAN&gt;'sheet metal flat pattern width&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;AreaPronest&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = (&lt;SPAN&gt;smlength&lt;/SPAN&gt; + &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"Thickness"&lt;/SPAN&gt;)) * (&lt;SPAN&gt;smwidth&lt;/SPAN&gt; + &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"Thickness"&lt;/SPAN&gt;)) / 144
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oSMthk&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"Thickness"&lt;/SPAN&gt;)
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"Thickness"&lt;/SPAN&gt;) &amp;gt;= 0.1875 &lt;SPAN&gt;Then&lt;/SPAN&gt;
		&lt;SPAN&gt;getstock&lt;/SPAN&gt; =&lt;SPAN&gt;"Plate, "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;oSMthk&lt;/SPAN&gt;, &lt;SPAN&gt;"0.000"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" thk x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;AreaPronest&lt;/SPAN&gt;, &lt;SPAN&gt;"0.00"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" ft^2"&lt;/SPAN&gt;
	&lt;SPAN&gt;Else&lt;/SPAN&gt;
		&lt;SPAN&gt;getstock&lt;/SPAN&gt; =&lt;SPAN&gt;"Sheet Metal, "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;oSMthk&lt;/SPAN&gt;, &lt;SPAN&gt;"0.000"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" thk x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;AreaPronest&lt;/SPAN&gt;, &lt;SPAN&gt;"0.00"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" ft^2"&lt;/SPAN&gt;
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 20 Sep 2021 18:05:12 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/flat-pattern-extents-when-part-not-fully-created/m-p/10634975#M129130</guid>
      <dc:creator>emanuel.c</dc:creator>
      <dc:date>2021-09-20T18:05:12Z</dc:date>
    </item>
    <item>
      <title>Re: flat pattern extents when part not fully created</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/flat-pattern-extents-when-part-not-fully-created/m-p/10635075#M129132</link>
      <description>&lt;P&gt;Might try a change with how you're declaring &amp;amp; defining the variable.&amp;nbsp; There's also a Boolean to lookup if there's a current flat sheet metal pattern you can look up and use, I don't recall it off the top of my head.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;smlength as Single 'or Double&lt;BR /&gt;Dim smwidth as Single 'or Double&lt;BR /&gt;Try&lt;BR /&gt;    smlength = SheetMetal.FlatExtentsLength&lt;BR /&gt;    smwidth = SheetMetal.FlatExtentsWidth&lt;BR /&gt;Catch&lt;BR /&gt;End Try&lt;/SPAN&gt;&amp;nbsp;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 20 Sep 2021 18:50:45 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/flat-pattern-extents-when-part-not-fully-created/m-p/10635075#M129132</guid>
      <dc:creator>llorden4</dc:creator>
      <dc:date>2021-09-20T18:50:45Z</dc:date>
    </item>
    <item>
      <title>Re: flat pattern extents when part not fully created</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/flat-pattern-extents-when-part-not-fully-created/m-p/10635081#M129133</link>
      <description>&lt;P&gt;Since this is only part of a larger function, and I also don't know what the rest of the main may look like, the simplest thing I can think of it to just put that bit of code within a Try...Catch...End Try block of code, so that it will 'handle' the error the way you choose to.&amp;nbsp; You can put whatever you want in the Catch portion of that block of code, and it will do that when the Try portion fails.&amp;nbsp; I usually include a MsgBox with something specific, and maybe error details, then usually a line to either exit the rule, or exit the Sub/Function it is in, but that's up to you.&amp;nbsp; Here's what it might look like:&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;Try
	Dim smlength = SheetMetal.FlatExtentsLength 'sheet metal flat pattern length
	Dim smwidth = SheetMetal.FlatExtentsWidth 'sheet metal flat pattern width
	Dim AreaPronest As Double = (smlength + Parameter("Thickness")) * (smwidth + Parameter("Thickness")) / 144
	Dim oSMthk As Double = Parameter("Thickness")
	If Parameter("Thickness") &amp;gt;= 0.1875 Then
		getstock ="Plate, " &amp;amp; Format(oSMthk, "0.000") &amp;amp; " thk x " &amp;amp; Format(AreaPronest, "0.00") &amp;amp; " ft^2"
	Else
		getstock ="Sheet Metal, " &amp;amp; Format(oSMthk, "0.000") &amp;amp; " thk x " &amp;amp; Format(AreaPronest, "0.00") &amp;amp; " ft^2"
	End If
Catch oEx As Exception
	MsgBox("Failed to get SheetMetal.FlatExtents size." &amp;amp; vbCrLf &amp;amp; _
	oEx.Message &amp;amp; vbCrLf &amp;amp; oEx.StackTrace, vbExclamation, "iLogic")
	Exit Function
End Try&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;...but you could just comment out the stuff in the Catch portion, if that doesn't suit your needs.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If this solved your problem, or answered your question, please click &lt;SPAN style="background-color: green; color: white;"&gt;&lt;STRONG&gt;ACCEPT SOLUTION&lt;/STRONG&gt;&lt;/SPAN&gt;.&lt;BR /&gt;Or, if this helped you, please click (LIKE or KUDOS) &lt;SPAN&gt;&lt;img class="lia-deferred-image lia-image-emoji" src="https://forums.autodesk.com/html/@7401B55A0A518861312A0F851CD29320/emoticons/1f44d.png" alt=":thumbs_up:" title=":thumbs_up:" /&gt;&lt;/SPAN&gt;.&lt;/P&gt;
&lt;P&gt;If you want and have time, I would appreciate your Vote(s) for &lt;A href="https://forums.autodesk.com/t5/forums/recentpostspage/post-type/message/interaction-style/idea/user-id/7812054/" target="_blank"&gt;My IDEAS &lt;SPAN&gt;&lt;img class="lia-deferred-image lia-image-emoji" src="https://forums.autodesk.com/html/@B166FEBB95D67CFA84899D32D8E17FC1/emoticons/1f4a1.png" alt=":light_bulb:" title=":light_bulb:" /&gt;&lt;/SPAN&gt;&lt;/A&gt;or you can Explore &lt;A href="https://knowledge.autodesk.com/profile/LTSUSR7HXMSAE/articles" target="_blank"&gt;My CONTRIBUTIONS &lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 20 Sep 2021 18:53:27 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/flat-pattern-extents-when-part-not-fully-created/m-p/10635081#M129133</guid>
      <dc:creator>WCrihfield</dc:creator>
      <dc:date>2021-09-20T18:53:27Z</dc:date>
    </item>
    <item>
      <title>Re: flat pattern extents when part not fully created</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/flat-pattern-extents-when-part-not-fully-created/m-p/10635179#M129135</link>
      <description>&lt;P&gt;Hmm, I forgot about the Try Catch, thank you. However I still get an error: Conversion from string "iLogic" to type "Integer" is not valid. Here is the code if there's something else related to it, though I suspected it was because there was no metal to flat bend yet, since it works OK otherwise. I guess if I'd be using VB I could run it line by line to see where the issue is... I'm still working on the code and it's kind of pieced together as best I knew how.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Basically it detects if parameter "FL" exists (which is not needed for flat metal shapes, so it shouldn't be created for sheet metal parts - still need to work on that) then if iProperty "Stock Size" exists it populates that according to iProperty "Product".&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you for helping out!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;' Code to write "Stock Size" iProperty&lt;/SPAN&gt;

&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;Main&lt;/SPAN&gt;()
	
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;invdoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Document&lt;/SPAN&gt;
&lt;SPAN&gt;invdoc&lt;/SPAN&gt; = &lt;SPAN&gt;ThisDoc&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt;

&lt;SPAN&gt;'Function GetUserParams returns UserParameters Collection&lt;/SPAN&gt;
&lt;SPAN&gt;oUserParams&lt;/SPAN&gt; = &lt;SPAN&gt;GetUserParams&lt;/SPAN&gt;(&lt;SPAN&gt;invdoc&lt;/SPAN&gt;)
 
&lt;SPAN&gt;'Function FindParameter returns the looked for parameter&lt;/SPAN&gt;
&lt;SPAN&gt;paraFL&lt;/SPAN&gt; = &lt;SPAN&gt;FindParameter&lt;/SPAN&gt;(&lt;SPAN&gt;invdoc&lt;/SPAN&gt;, &lt;SPAN&gt;"FL"&lt;/SPAN&gt;)
  
&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;paraFL&lt;/SPAN&gt; &lt;SPAN&gt;IsNot&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; 
	&lt;SPAN&gt;'MessageBox.Show("Parameter does exist", "Title")&lt;/SPAN&gt;
&lt;SPAN&gt;Else&lt;/SPAN&gt;
	&lt;SPAN&gt;'MessageBox.Show("Parameter does not exist", "Title")&lt;/SPAN&gt;
	&lt;SPAN&gt;paraFL&lt;/SPAN&gt; = &lt;SPAN&gt;oUserParams&lt;/SPAN&gt;.&lt;SPAN&gt;AddByValue&lt;/SPAN&gt;(&lt;SPAN&gt;"FL"&lt;/SPAN&gt;, 0, &lt;SPAN&gt;UnitsTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kInchLengthUnits&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;oPart&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartDocument&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;oSS&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;StockSize&lt;/SPAN&gt;(&lt;SPAN&gt;oPart&lt;/SPAN&gt;)
	&lt;SPAN&gt;Logger&lt;/SPAN&gt;.&lt;SPAN&gt;Info&lt;/SPAN&gt;(&lt;SPAN&gt;oSS&lt;/SPAN&gt;)

&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;

&lt;SPAN&gt;'See if parameter FL exists&lt;/SPAN&gt;
&lt;SPAN&gt;Public&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;FindParameter&lt;/SPAN&gt;(&lt;SPAN&gt;invdoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt;, &lt;SPAN&gt;strParameter&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;) &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;

&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;cd&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;Nothing&lt;/SPAN&gt;
&lt;SPAN&gt;Select&lt;/SPAN&gt; &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;invdoc&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentType&lt;/SPAN&gt;
    &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;Is&lt;/SPAN&gt; = &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kAssemblyDocumentObject&lt;/SPAN&gt;
		&lt;SPAN&gt;'MessageBox.Show("Is a Assembly", "Title")&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;docAssembly&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;AssemblyDocument&lt;/SPAN&gt; = &lt;SPAN&gt;invdoc&lt;/SPAN&gt;
        &lt;SPAN&gt;cd&lt;/SPAN&gt; = &lt;SPAN&gt;docAssembly&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
    &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;Is&lt;/SPAN&gt; = &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kPartDocumentObject&lt;/SPAN&gt;
		&lt;SPAN&gt;'MessageBox.Show("Is a Part", "Title")&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;docPart&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;PartDocument&lt;/SPAN&gt; = &lt;SPAN&gt;invdoc&lt;/SPAN&gt;
        &lt;SPAN&gt;cd&lt;/SPAN&gt; = &lt;SPAN&gt;docPart&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Select&lt;/SPAN&gt;
&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;cd&lt;/SPAN&gt; &lt;SPAN&gt;IsNot&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&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;param&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;Parameter&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;cd&lt;/SPAN&gt;.&lt;SPAN&gt;Parameters&lt;/SPAN&gt;
        &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;param&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;strParameter&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;param&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;Return&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&lt;/SPAN&gt;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;

&lt;SPAN&gt;'Get user parameters collection&lt;/SPAN&gt;
&lt;SPAN&gt;Public&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;GetUserParams&lt;/SPAN&gt;(&lt;SPAN&gt;invdoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt;) &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;UserParameters&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;cd&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;Nothing&lt;/SPAN&gt;
    &lt;SPAN&gt;Select&lt;/SPAN&gt; &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;invdoc&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentType&lt;/SPAN&gt;
        &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;Is&lt;/SPAN&gt; = &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kAssemblyDocumentObject&lt;/SPAN&gt;
			&lt;SPAN&gt;'MessageBox.Show("Is a Assembly", "Title")&lt;/SPAN&gt;
            &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;docAssembly&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;AssemblyDocument&lt;/SPAN&gt; = &lt;SPAN&gt;invdoc&lt;/SPAN&gt;
            &lt;SPAN&gt;cd&lt;/SPAN&gt; = &lt;SPAN&gt;docAssembly&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
        &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;Is&lt;/SPAN&gt; = &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kPartDocumentObject&lt;/SPAN&gt;
			&lt;SPAN&gt;'MessageBox.Show("Is a Part", "Title")&lt;/SPAN&gt;
            &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;docPart&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;PartDocument&lt;/SPAN&gt; = &lt;SPAN&gt;invdoc&lt;/SPAN&gt;
            &lt;SPAN&gt;cd&lt;/SPAN&gt; = &lt;SPAN&gt;docPart&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Select&lt;/SPAN&gt;
   
   &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;cd&lt;/SPAN&gt; &lt;SPAN&gt;IsNot&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;

			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oParams&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Parameters&lt;/SPAN&gt;
			&lt;SPAN&gt;oParams&lt;/SPAN&gt; = &lt;SPAN&gt;cd&lt;/SPAN&gt;.&lt;SPAN&gt;Parameters&lt;/SPAN&gt;
			
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oUserParams&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;UserParameters&lt;/SPAN&gt;
			&lt;SPAN&gt;oUserParams&lt;/SPAN&gt; = &lt;SPAN&gt;oParams&lt;/SPAN&gt;.&lt;SPAN&gt;UserParameters&lt;/SPAN&gt;
             &lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;oUserParams&lt;/SPAN&gt;
    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
	 &lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&lt;/SPAN&gt;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;



&lt;SPAN&gt;Private&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;StockSize&lt;/SPAN&gt;(&lt;SPAN&gt;part&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartDocument&lt;/SPAN&gt;) &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oStock&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;getstock&lt;/SPAN&gt;(&lt;SPAN&gt;part&lt;/SPAN&gt;)
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;propertyName&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;"STOCK SIZE"&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;PropertyValue&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;oStock&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oCProps&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PropertySet&lt;/SPAN&gt; = &lt;SPAN&gt;part&lt;/SPAN&gt;.&lt;SPAN&gt;PropertySets&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;"Inventor User Defined Properties"&lt;/SPAN&gt;)
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oSSProp&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;Property&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oExists&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Boolean&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt;
	&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oCProp&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;Property&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oCProps&lt;/SPAN&gt;
		&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oCProp&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;propertyName&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
			&lt;SPAN&gt;oSSProp&lt;/SPAN&gt; = &lt;SPAN&gt;oCProp&lt;/SPAN&gt;
			&lt;SPAN&gt;oSSProp&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt; = &lt;SPAN&gt;PropertyValue&lt;/SPAN&gt;
			&lt;SPAN&gt;oExists&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
		&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
	&lt;SPAN&gt;Next&lt;/SPAN&gt;
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oExists&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
		&lt;SPAN&gt;oSSProp&lt;/SPAN&gt; = &lt;SPAN&gt;oCProps&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;propertyName&lt;/SPAN&gt;, &lt;SPAN&gt;propertyName&lt;/SPAN&gt;)
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;

	&lt;SPAN&gt;StockSize&lt;/SPAN&gt; = &lt;SPAN&gt;oSSProp&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;

&lt;SPAN&gt;'Write stock size for each part shape&lt;/SPAN&gt;
&lt;SPAN&gt;Private&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;getstock&lt;/SPAN&gt;(&lt;SPAN&gt;part&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartDocument&lt;/SPAN&gt;) &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;

&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oFL&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"FL"&lt;/SPAN&gt;)
	
&lt;SPAN&gt;Select&lt;/SPAN&gt; &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;iProperties&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;"Inventor User Defined Properties"&lt;/SPAN&gt;, &lt;SPAN&gt;"Product"&lt;/SPAN&gt;)

	&lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;"01 Sheet Metal"&lt;/SPAN&gt;
	
		&lt;SPAN&gt;Try&lt;/SPAN&gt;
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;smlength&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;SheetMetal&lt;/SPAN&gt;.&lt;SPAN&gt;FlatExtentsLength&lt;/SPAN&gt; &lt;SPAN&gt;'sheet metal flat pattern length&lt;/SPAN&gt;
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;smwidth&lt;/SPAN&gt; &lt;SPAN&gt;as&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;SheetMetal&lt;/SPAN&gt;.&lt;SPAN&gt;FlatExtentsWidth&lt;/SPAN&gt; &lt;SPAN&gt;'sheet metal flat pattern width&lt;/SPAN&gt;
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;AreaPronest&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = (&lt;SPAN&gt;smlength&lt;/SPAN&gt; + &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"Thickness"&lt;/SPAN&gt;)) * (&lt;SPAN&gt;smwidth&lt;/SPAN&gt; + &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"Thickness"&lt;/SPAN&gt;)) / 144
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oSMthk&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"Thickness"&lt;/SPAN&gt;)
			&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"Thickness"&lt;/SPAN&gt;) &amp;gt;= 0.1875 &lt;SPAN&gt;Then&lt;/SPAN&gt;
				&lt;SPAN&gt;getstock&lt;/SPAN&gt; =&lt;SPAN&gt;"Plate, "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;oSMthk&lt;/SPAN&gt;, &lt;SPAN&gt;"0.000"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" thk x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;AreaPronest&lt;/SPAN&gt;, &lt;SPAN&gt;"0.00"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" ft^2"&lt;/SPAN&gt;
			&lt;SPAN&gt;Else&lt;/SPAN&gt;
				&lt;SPAN&gt;getstock&lt;/SPAN&gt; =&lt;SPAN&gt;"Sheet Metal, "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;oSMthk&lt;/SPAN&gt;, &lt;SPAN&gt;"0.000"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" thk x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;AreaPronest&lt;/SPAN&gt;, &lt;SPAN&gt;"0.00"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" ft^2"&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;oEx&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Exception&lt;/SPAN&gt;
			&lt;SPAN&gt;MsgBox&lt;/SPAN&gt;(&lt;SPAN&gt;"Failed to get SheetMetal.FlatExtents size."&lt;/SPAN&gt;, &lt;SPAN&gt;"iLogic"&lt;/SPAN&gt;)
		&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
				
	&lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;"02 Pipe"&lt;/SPAN&gt;
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oPipeD&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"G_D_Nom"&lt;/SPAN&gt;)
		&lt;SPAN&gt;oL&lt;/SPAN&gt; = &lt;SPAN&gt;FormatAsFraction&lt;/SPAN&gt;(&lt;SPAN&gt;oPipeD&lt;/SPAN&gt;)
		&lt;SPAN&gt;getstock&lt;/SPAN&gt; = &lt;SPAN&gt;"Pipe, "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oL&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" sch."&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"Schedule"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;oFL&lt;/SPAN&gt;, &lt;SPAN&gt;"0.00"&lt;/SPAN&gt;)
		
	&lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;"03 Angle"&lt;/SPAN&gt;
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;Athk&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"G_T"&lt;/SPAN&gt;)
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;AH&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"G_H"&lt;/SPAN&gt;)
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;AW&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"G_W"&lt;/SPAN&gt;)
		&lt;SPAN&gt;getstock&lt;/SPAN&gt; = &lt;SPAN&gt;"L "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;AW&lt;/SPAN&gt;, &lt;SPAN&gt;"0.00"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;AH&lt;/SPAN&gt;, &lt;SPAN&gt;"0.00"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;Athk&lt;/SPAN&gt;, &lt;SPAN&gt;"0.00"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;oFL&lt;/SPAN&gt;, &lt;SPAN&gt;"0.00"&lt;/SPAN&gt;)

	&lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;Else&lt;/SPAN&gt;
		&lt;SPAN&gt;getstock&lt;/SPAN&gt; = &lt;SPAN&gt;"not defined"&lt;/SPAN&gt;
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Select&lt;/SPAN&gt;

&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;
&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 20 Sep 2021 19:38:18 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/flat-pattern-extents-when-part-not-fully-created/m-p/10635179#M129135</guid>
      <dc:creator>emanuel.c</dc:creator>
      <dc:date>2021-09-20T19:38:18Z</dc:date>
    </item>
    <item>
      <title>Re: flat pattern extents when part not fully created</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/flat-pattern-extents-when-part-not-fully-created/m-p/10636654#M129164</link>
      <description>&lt;P&gt;You can use direct API functions for this.&lt;/P&gt;&lt;P&gt;This sample expects the sheetmetal part is the active document and returns flatpattern dimensions in internal units [cm].&lt;/P&gt;&lt;LI-CODE lang="general"&gt;Dim part As PartDocument = ThisDoc.Document
Dim smCompDef As SheetMetalComponentDefinition = part.ComponentDefinition

Dim length As Double
Dim width As Double
If smCompDef.HasFlatPattern Then
	width = smCompDef.FlatPattern.Width
	length = smCompDef.FlatPattern.Length
End If&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 21 Sep 2021 11:11:51 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/flat-pattern-extents-when-part-not-fully-created/m-p/10636654#M129164</guid>
      <dc:creator>Michael.Navara</dc:creator>
      <dc:date>2021-09-21T11:11:51Z</dc:date>
    </item>
    <item>
      <title>Re: flat pattern extents when part not fully created</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/flat-pattern-extents-when-part-not-fully-created/m-p/10636762#M129165</link>
      <description>&lt;P&gt;Thank you Michael, I didn't know it had the API.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I still get errors, only when there isn't a flat pattern available and can't figure it out... Unspecified Error (Exception from HRESULT: 0x80004005 (E_FAIL)).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;' Code to write "Stock Size" iProperty&lt;/SPAN&gt;

&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;Main&lt;/SPAN&gt;()
	
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;invdoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Document&lt;/SPAN&gt;
&lt;SPAN&gt;invdoc&lt;/SPAN&gt; = &lt;SPAN&gt;ThisDoc&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt;

&lt;SPAN&gt;'Function GetUserParams returns UserParameters Collection&lt;/SPAN&gt;
&lt;SPAN&gt;oUserParams&lt;/SPAN&gt; = &lt;SPAN&gt;GetUserParams&lt;/SPAN&gt;(&lt;SPAN&gt;invdoc&lt;/SPAN&gt;)
 
&lt;SPAN&gt;'Function FindParameter returns the looked for parameter&lt;/SPAN&gt;
&lt;SPAN&gt;paraFL&lt;/SPAN&gt; = &lt;SPAN&gt;FindParameter&lt;/SPAN&gt;(&lt;SPAN&gt;invdoc&lt;/SPAN&gt;, &lt;SPAN&gt;"FL"&lt;/SPAN&gt;)
  
&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;paraFL&lt;/SPAN&gt; &lt;SPAN&gt;IsNot&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; 
	&lt;SPAN&gt;'MessageBox.Show("Parameter does exist", "Title")&lt;/SPAN&gt;
&lt;SPAN&gt;Else&lt;/SPAN&gt;
	&lt;SPAN&gt;'MessageBox.Show("Parameter does not exist", "Title")&lt;/SPAN&gt;
	&lt;SPAN&gt;paraFL&lt;/SPAN&gt; = &lt;SPAN&gt;oUserParams&lt;/SPAN&gt;.&lt;SPAN&gt;AddByValue&lt;/SPAN&gt;(&lt;SPAN&gt;"FL"&lt;/SPAN&gt;, 0, &lt;SPAN&gt;UnitsTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kInchLengthUnits&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;oPart&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartDocument&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;oSS&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;StockSize&lt;/SPAN&gt;(&lt;SPAN&gt;oPart&lt;/SPAN&gt;)
	&lt;SPAN&gt;Logger&lt;/SPAN&gt;.&lt;SPAN&gt;Info&lt;/SPAN&gt;(&lt;SPAN&gt;oSS&lt;/SPAN&gt;)

&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;

&lt;SPAN&gt;'See if parameter FL exists&lt;/SPAN&gt;
&lt;SPAN&gt;Public&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;FindParameter&lt;/SPAN&gt;(&lt;SPAN&gt;invdoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt;, &lt;SPAN&gt;strParameter&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;) &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;

&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;cd&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;Nothing&lt;/SPAN&gt;
&lt;SPAN&gt;Select&lt;/SPAN&gt; &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;invdoc&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentType&lt;/SPAN&gt;
    &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;Is&lt;/SPAN&gt; = &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kAssemblyDocumentObject&lt;/SPAN&gt;
		&lt;SPAN&gt;'MessageBox.Show("Is a Assembly", "Title")&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;docAssembly&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;AssemblyDocument&lt;/SPAN&gt; = &lt;SPAN&gt;invdoc&lt;/SPAN&gt;
        &lt;SPAN&gt;cd&lt;/SPAN&gt; = &lt;SPAN&gt;docAssembly&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
    &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;Is&lt;/SPAN&gt; = &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kPartDocumentObject&lt;/SPAN&gt;
		&lt;SPAN&gt;'MessageBox.Show("Is a Part", "Title")&lt;/SPAN&gt;
        &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;docPart&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;PartDocument&lt;/SPAN&gt; = &lt;SPAN&gt;invdoc&lt;/SPAN&gt;
        &lt;SPAN&gt;cd&lt;/SPAN&gt; = &lt;SPAN&gt;docPart&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Select&lt;/SPAN&gt;
&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;cd&lt;/SPAN&gt; &lt;SPAN&gt;IsNot&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&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;param&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;Parameter&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;cd&lt;/SPAN&gt;.&lt;SPAN&gt;Parameters&lt;/SPAN&gt;
        &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;param&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;strParameter&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;param&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;Return&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&lt;/SPAN&gt;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;

&lt;SPAN&gt;'Get user parameters collection&lt;/SPAN&gt;
&lt;SPAN&gt;Public&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;GetUserParams&lt;/SPAN&gt;(&lt;SPAN&gt;invdoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt;) &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;UserParameters&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;cd&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;Nothing&lt;/SPAN&gt;
    &lt;SPAN&gt;Select&lt;/SPAN&gt; &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;invdoc&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentType&lt;/SPAN&gt;
        &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;Is&lt;/SPAN&gt; = &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kAssemblyDocumentObject&lt;/SPAN&gt;
            &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;docAssembly&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;AssemblyDocument&lt;/SPAN&gt; = &lt;SPAN&gt;invdoc&lt;/SPAN&gt;
            &lt;SPAN&gt;cd&lt;/SPAN&gt; = &lt;SPAN&gt;docAssembly&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
        &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;Is&lt;/SPAN&gt; = &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kPartDocumentObject&lt;/SPAN&gt;
            &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;docPart&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;PartDocument&lt;/SPAN&gt; = &lt;SPAN&gt;invdoc&lt;/SPAN&gt;
            &lt;SPAN&gt;cd&lt;/SPAN&gt; = &lt;SPAN&gt;docPart&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Select&lt;/SPAN&gt;
   
   &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;cd&lt;/SPAN&gt; &lt;SPAN&gt;IsNot&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;BR /&gt;&lt;/SPAN&gt;
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oParams&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Parameters&lt;/SPAN&gt;
			&lt;SPAN&gt;oParams&lt;/SPAN&gt; = &lt;SPAN&gt;cd&lt;/SPAN&gt;.&lt;SPAN&gt;Parameters&lt;/SPAN&gt;
			
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oUserParams&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;UserParameters&lt;/SPAN&gt;
			&lt;SPAN&gt;oUserParams&lt;/SPAN&gt; = &lt;SPAN&gt;oParams&lt;/SPAN&gt;.&lt;SPAN&gt;UserParameters&lt;/SPAN&gt;
             &lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;oUserParams&lt;/SPAN&gt;
    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
	 &lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&lt;/SPAN&gt;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;BR /&gt;&lt;/SPAN&gt;
&lt;SPAN&gt;Private&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;StockSize&lt;/SPAN&gt;(&lt;SPAN&gt;part&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartDocument&lt;/SPAN&gt;) &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oStock&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;getstock&lt;/SPAN&gt;(&lt;SPAN&gt;part&lt;/SPAN&gt;)
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;propertyName&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;"STOCK SIZE"&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;PropertyValue&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;oStock&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oCProps&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PropertySet&lt;/SPAN&gt; = &lt;SPAN&gt;part&lt;/SPAN&gt;.&lt;SPAN&gt;PropertySets&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;"Inventor User Defined Properties"&lt;/SPAN&gt;)
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oSSProp&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;Property&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oExists&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Boolean&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt;
	&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oCProp&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;Property&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oCProps&lt;/SPAN&gt;
		&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oCProp&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;propertyName&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
			&lt;SPAN&gt;oSSProp&lt;/SPAN&gt; = &lt;SPAN&gt;oCProp&lt;/SPAN&gt;
			&lt;SPAN&gt;oSSProp&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt; = &lt;SPAN&gt;PropertyValue&lt;/SPAN&gt;
			&lt;SPAN&gt;oExists&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
		&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
	&lt;SPAN&gt;Next&lt;/SPAN&gt;
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oExists&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
		&lt;SPAN&gt;oSSProp&lt;/SPAN&gt; = &lt;SPAN&gt;oCProps&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;propertyName&lt;/SPAN&gt;, &lt;SPAN&gt;propertyName&lt;/SPAN&gt;)
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;

	&lt;SPAN&gt;StockSize&lt;/SPAN&gt; = &lt;SPAN&gt;oSSProp&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;

&lt;SPAN&gt;'Write stock size for each part shape&lt;/SPAN&gt;
&lt;SPAN&gt;Private&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;getstock&lt;/SPAN&gt;(&lt;SPAN&gt;part&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartDocument&lt;/SPAN&gt;) &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;

&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oFL&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"FL"&lt;/SPAN&gt;)
	
&lt;SPAN&gt;Select&lt;/SPAN&gt; &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;iProperties&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;"Inventor User Defined Properties"&lt;/SPAN&gt;, &lt;SPAN&gt;"Product"&lt;/SPAN&gt;)

	&lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;"01 Sheet Metal"&lt;/SPAN&gt;
	
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;opart&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartDocument&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;smCompDef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SheetMetalComponentDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;opart&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;smlength&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;SheetMetal&lt;/SPAN&gt;.&lt;SPAN&gt;FlatExtentsLength&lt;/SPAN&gt; &lt;SPAN&gt;'sheet metal flat pattern length&lt;/SPAN&gt;
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;smwidth&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;SheetMetal&lt;/SPAN&gt;.&lt;SPAN&gt;FlatExtentsWidth&lt;/SPAN&gt; &lt;SPAN&gt;'sheet metal flat pattern width&lt;/SPAN&gt;
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;AreaPronest&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = (&lt;SPAN&gt;smlength&lt;/SPAN&gt; + &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"Thickness"&lt;/SPAN&gt;)) * (&lt;SPAN&gt;smwidth&lt;/SPAN&gt; + &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"Thickness"&lt;/SPAN&gt;)) / 144
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oSMthk&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"Thickness"&lt;/SPAN&gt;)
		&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;smCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;HasFlatPattern&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;	
			&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"Thickness"&lt;/SPAN&gt;) &amp;gt;= 0.1875 &lt;SPAN&gt;Then&lt;/SPAN&gt;
				&lt;SPAN&gt;getstock&lt;/SPAN&gt; =&lt;SPAN&gt;"Plate, "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;oSMthk&lt;/SPAN&gt;, &lt;SPAN&gt;"0.000"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" thk x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;AreaPronest&lt;/SPAN&gt;, &lt;SPAN&gt;"0.00"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" ft^2"&lt;/SPAN&gt;
			&lt;SPAN&gt;Else&lt;/SPAN&gt;
				&lt;SPAN&gt;getstock&lt;/SPAN&gt; =&lt;SPAN&gt;"Sheet Metal, "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;oSMthk&lt;/SPAN&gt;, &lt;SPAN&gt;"0.000"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" thk x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;AreaPronest&lt;/SPAN&gt;, &lt;SPAN&gt;"0.00"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" ft^2"&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;Case&lt;/SPAN&gt; &lt;SPAN&gt;"02 Pipe"&lt;/SPAN&gt;
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oPipeD&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"G_D_Nom"&lt;/SPAN&gt;)
		&lt;SPAN&gt;oL&lt;/SPAN&gt; = &lt;SPAN&gt;FormatAsFraction&lt;/SPAN&gt;(&lt;SPAN&gt;oPipeD&lt;/SPAN&gt;)
		&lt;SPAN&gt;getstock&lt;/SPAN&gt; = &lt;SPAN&gt;"Pipe, "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oL&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" sch."&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"Schedule"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;oFL&lt;/SPAN&gt;, &lt;SPAN&gt;"0.00"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;End Select&lt;BR /&gt;End Function&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 21 Sep 2021 11:59:42 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/flat-pattern-extents-when-part-not-fully-created/m-p/10636762#M129165</guid>
      <dc:creator>emanuel.c</dc:creator>
      <dc:date>2021-09-21T11:59:42Z</dc:date>
    </item>
    <item>
      <title>Re: flat pattern extents when part not fully created</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/flat-pattern-extents-when-part-not-fully-created/m-p/10649508#M129353</link>
      <description>&lt;P&gt;Hi &lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/7488742"&gt;@emanuel.c&lt;/a&gt;.&amp;nbsp; Within your 'getstock' function, you are checking '&lt;SPAN&gt;smCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;HasFlatPattern' several lines after you have already attempted to extract data from the FlatPattern with the '&lt;/SPAN&gt;&lt;SPAN&gt;SheetMetal&lt;/SPAN&gt;.&lt;SPAN&gt;FlatExtentsLength' &amp;amp; '&lt;/SPAN&gt;&lt;SPAN&gt;SheetMetal&lt;/SPAN&gt;.&lt;SPAN&gt;FlatExtentsWidth' lines.&amp;nbsp; This is obviously not proper logic.&amp;nbsp; You should be checking for the existence of a FlatPattern before trying to use it or extract data from it.&amp;nbsp; Then, if not found, either include some code (like Unfold) to create the FlatPattern before trying to access it, or avoid attempting to access it at all.&amp;nbsp; Because when you try to access/use it, and it doesn't exist yet, it will throw an error.&amp;nbsp; Just one observation.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 27 Sep 2021 11:33:50 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/flat-pattern-extents-when-part-not-fully-created/m-p/10649508#M129353</guid>
      <dc:creator>WCrihfield</dc:creator>
      <dc:date>2021-09-27T11:33:50Z</dc:date>
    </item>
    <item>
      <title>Re: flat pattern extents when part not fully created</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/flat-pattern-extents-when-part-not-fully-created/m-p/10649769#M129359</link>
      <description>&lt;P&gt;Yes, thanks Chris. I noticed that later and corrected it, then it worked great. I also added a Try - Catch in there because I needed it to try to create a flat pattern in case a sheet metal body was built but flat pattern wasn't made yet.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;opart&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartDocument&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;smCompDef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SheetMetalComponentDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;opart&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;smlength&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;smwidth&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;oSMthk&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"Thickness"&lt;/SPAN&gt;)
&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;smCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;HasFlatPattern&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;			
	&lt;SPAN&gt;smlength&lt;/SPAN&gt; = (&lt;SPAN&gt;smCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;FlatPattern&lt;/SPAN&gt;.&lt;SPAN&gt;Length&lt;/SPAN&gt; + &lt;SPAN&gt;oSMthk&lt;/SPAN&gt;) / 2.54
	&lt;SPAN&gt;smwidth&lt;/SPAN&gt; = (&lt;SPAN&gt;smCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;FlatPattern&lt;/SPAN&gt;.&lt;SPAN&gt;Width&lt;/SPAN&gt; + &lt;SPAN&gt;oSMthk&lt;/SPAN&gt;) / 2.54
	&lt;SPAN&gt;Else&lt;/SPAN&gt;
	&lt;SPAN&gt;Try&lt;/SPAN&gt;
		&lt;SPAN&gt;smCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;Unfold&lt;/SPAN&gt;()
		&lt;SPAN&gt;smlength&lt;/SPAN&gt; = (&lt;SPAN&gt;smCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;FlatPattern&lt;/SPAN&gt;.&lt;SPAN&gt;Length&lt;/SPAN&gt; + &lt;SPAN&gt;oSMthk&lt;/SPAN&gt;) / 2.54
		&lt;SPAN&gt;smwidth&lt;/SPAN&gt; = (&lt;SPAN&gt;smCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;FlatPattern&lt;/SPAN&gt;.&lt;SPAN&gt;Width&lt;/SPAN&gt; + &lt;SPAN&gt;oSMthk&lt;/SPAN&gt;) / 2.54
	&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;Dim&lt;/SPAN&gt; &lt;SPAN&gt;AreaPronest&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;smlength&lt;/SPAN&gt; * &lt;SPAN&gt;smwidth&lt;/SPAN&gt; / 144
		
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Parameter&lt;/SPAN&gt;(&lt;SPAN&gt;"Thickness"&lt;/SPAN&gt;) &amp;gt;= 0.1875 &lt;SPAN&gt;Then&lt;/SPAN&gt;
		&lt;SPAN&gt;getstock&lt;/SPAN&gt; =&lt;SPAN&gt;"Plate, "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;oSMthk&lt;/SPAN&gt;, &lt;SPAN&gt;"0.000"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" thk x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;AreaPronest&lt;/SPAN&gt;, &lt;SPAN&gt;"0.00"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" ft^2"&lt;/SPAN&gt;
	&lt;SPAN&gt;Else&lt;/SPAN&gt;
		&lt;SPAN&gt;getstock&lt;/SPAN&gt; =&lt;SPAN&gt;"Sheet Metal, "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;oSMthk&lt;/SPAN&gt;, &lt;SPAN&gt;"0.000"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" thk x "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Format&lt;/SPAN&gt;(&lt;SPAN&gt;AreaPronest&lt;/SPAN&gt;, &lt;SPAN&gt;"0.00"&lt;/SPAN&gt;) &amp;amp; &lt;SPAN&gt;" ft^2"&lt;/SPAN&gt;
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 27 Sep 2021 13:18:17 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/flat-pattern-extents-when-part-not-fully-created/m-p/10649769#M129359</guid>
      <dc:creator>emanuel.c</dc:creator>
      <dc:date>2021-09-27T13:18:17Z</dc:date>
    </item>
    <item>
      <title>Re: flat pattern extents when part not fully created</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/flat-pattern-extents-when-part-not-fully-created/m-p/10649817#M129361</link>
      <description>&lt;P&gt;Wow, I can't believe it can be this troublesome... The issue now is, if a flat pattern already exists but the part size may have changed it doesn't update the smCompDef.FlatPattern Length and Width...&lt;/P&gt;</description>
      <pubDate>Mon, 27 Sep 2021 13:38:41 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/flat-pattern-extents-when-part-not-fully-created/m-p/10649817#M129361</guid>
      <dc:creator>emanuel.c</dc:creator>
      <dc:date>2021-09-27T13:38:41Z</dc:date>
    </item>
    <item>
      <title>Re: flat pattern extents when part not fully created</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/flat-pattern-extents-when-part-not-fully-created/m-p/10649922#M129364</link>
      <description>&lt;P&gt;Hmm I guess I can use the brackets () to update:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;opart&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartDocument&lt;/SPAN&gt; = &lt;SPAN&gt;ThisDoc&lt;/SPAN&gt;.&lt;SPAN&gt;Document()&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN&gt;smlength&lt;/SPAN&gt; = (&lt;SPAN&gt;smCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;FlatPattern&lt;/SPAN&gt;.&lt;SPAN&gt;Length()&lt;/SPAN&gt; + &lt;SPAN&gt;oSMthk&lt;/SPAN&gt;) / 2.54
&lt;SPAN&gt;smwidth&lt;/SPAN&gt; = (&lt;SPAN&gt;smCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;FlatPattern&lt;/SPAN&gt;.&lt;SPAN&gt;Width()&lt;/SPAN&gt; + &lt;SPAN&gt;oSMthk&lt;/SPAN&gt;) / 2.54&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 27 Sep 2021 14:20:13 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/flat-pattern-extents-when-part-not-fully-created/m-p/10649922#M129364</guid>
      <dc:creator>emanuel.c</dc:creator>
      <dc:date>2021-09-27T14:20:13Z</dc:date>
    </item>
  </channel>
</rss>

