<?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/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>
    <dc:creator>emanuel.c</dc:creator>
    <dc:date>2021-09-27T13:38:41Z</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>

