<?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 Ilogic performance inconsistency - with logs - need help. in Inventor Programming Forum</title>
    <link>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-performance-inconsistency-with-logs-need-help/m-p/14169120#M180928</link>
    <description>&lt;P&gt;Good morning everyone,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;After a bunch of work to create primary templates and framework here at our company. I've run into something quite interesting. First off, the goal, I created configurators allowing fitting placement onto a dome top, and sidewall of our tanks. These were built to be fully parametric allowing direct editing without ever entering the model browser manually. Everything is creatable, and editable based on forms.&lt;BR /&gt;&lt;BR /&gt;When I went to release these to the team, we were unhappy with the single placement runtime. I then refactored them to have as little objects as possible as few API calls required to finish off the fittings. I was able to bring it down to a manageable runtime, then released these templates to our team.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;That brings me to today, where I started on another type of tank top (flat top). Using the same frame work, with copied user parameters and rules. Only to find, for some reason unbeknownst to me, the program runs 8-10x faster overall.&amp;nbsp;All the objects are the same, all the parametric expressions are applied nearly identically, and the feature / body naming is consistent. However, I cannot fathom why the first two templates take so much longer to calculate.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;During my optimization I created a timing program to show overall time, and section time. Allowing me to see where the slow downs were. However, I didn't find one section that stood out. The entire program as a whole simply ran slow. However, with a new template the entire program is now much faster.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;We plan to use the old templates, however, If I can get the runtime of these down to what I experience with this new one. That would be greatly beneficial. I feel that I'm missing something extremely critical. Any help would be appreciated.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;Below are the timing logs, and pictures of what's being created on each. To be clear, there are differences in how the fittings are placed, and some of the math / expressions used to apply the fittings. That is, the geometry to where they must start is different, but the creations themselves are identical. However, you will see from the logs, the time difference doesn't make sense (At least to me). Each fitting being applied is a standard 6" flanged nozzle with 4 plate gussets.&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Dome Fitting Placement timings:&lt;/P&gt;&lt;P&gt;INFO|Start current time: 00:00:00.0000011 Section time: 00:00:00.0000011&lt;BR /&gt;INFO|Bodies collected current time: 00:00:00.0062867 Section time: 00:00:00.0062856&lt;BR /&gt;INFO|Flange type selection finished current time: 00:00:00.0062890 Section time: 00:00:00.0000023&lt;BR /&gt;INFO|Calculations and strings created current time: 00:00:00.0063036 Section time: 00:00:00.0000146&lt;BR /&gt;INFO|expressions created current time: 00:00:00.2463493 Section time: 00:00:00.2400457&lt;BR /&gt;INFO|UCS creation current time: 00:00:00.9397604 Section time: 00:00:00.6934111&lt;BR /&gt;INFO|UCS Name and expressions current time: 00:00:00.9397621 Section time: 00:00:00.0000017&lt;BR /&gt;INFO|Flange sketch objects created current time: 00:00:02.4107226 Section time: 00:00:01.4709605&lt;BR /&gt;INFO|Flange sketch Expressions assigned current time: 00:00:03.2957951 Section time: 00:00:00.8850725&lt;BR /&gt;INFO|Downpipe block current time: 00:00:03.2957958 Section time: 00:00:00.0000007&lt;BR /&gt;INFO|GusBoltSketch projections complete current time: 00:00:03.8060827 Section time: 00:00:00.5102869&lt;BR /&gt;INFO|Gusset + bolt sketch created current time: 00:00:04.2123908 Section time: 00:00:00.4063081&lt;BR /&gt;INFO|Gusset expressions assigned current time: 00:00:04.5047325 Section time: 00:00:00.2923417&lt;BR /&gt;INFO|Flange revolve finished current time: 00:00:04.6569661 Section time: 00:00:00.1522336&lt;BR /&gt;INFO|Bolt hole created current time: 00:00:05.1423473 Section time: 00:00:00.4853812&lt;BR /&gt;INFO|Bolt and pattern created current time: 00:00:05.2934999 Section time: 00:00:00.1511526&lt;BR /&gt;INFO|Tank hole created - Last time measurement before gussets current time: 00:00:05.5953714 Section time: 00:00:00.3018715&lt;BR /&gt;INFO|Trim to tank combine created current time: 00:00:05.9051758 Section time: 00:00:00.3098044&lt;BR /&gt;INFO|agitator flange or solids created. current time: 00:00:05.9051764 Section time: 00:00:00.0000006&lt;BR /&gt;INFO|Feature naming done current time: 00:00:05.9613297 Section time: 00:00:00.0561533&lt;BR /&gt;INFO|Gusset block current time: 00:00:07.9276211 Section time: 00:00:01.9662914&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;INFO|End of program: 00:00:07.9276228&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="J_Pfeifer__0-1781701744188.png" style="width: 400px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1645959i34F8FA3E49A4AD24/image-size/medium?v=v2&amp;amp;px=400" role="button" title="J_Pfeifer__0-1781701744188.png" alt="J_Pfeifer__0-1781701744188.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Sidewall Placement timings:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;INFO|Start current time: 00:00:00.0000007 Section time: 00:00:00.0000007&lt;BR /&gt;INFO|Bodies collected current time: 00:00:00.1209570 Section time: 00:00:00.1209563&lt;BR /&gt;INFO|tangent checks + parameter creation current time: 00:00:00.3945542 Section time: 00:00:00.2735972&lt;BR /&gt;INFO|UCS creation current time: 00:00:01.3236733 Section time: 00:00:00.9291191&lt;BR /&gt;INFO|UCS Name and expressions current time: 00:00:01.7522218 Section time: 00:00:00.4285485&lt;BR /&gt;INFO|Flange sketch objects created current time: 00:00:01.8119610 Section time: 00:00:00.0597392&lt;BR /&gt;INFO|Constraints applied current time: 00:00:02.7656996 Section time: 00:00:00.9537386&lt;BR /&gt;INFO|Flange assignements current time: 00:00:03.6177587 Section time: 00:00:00.8520591&lt;BR /&gt;INFO|Flange sketch parameters updated current time: 00:00:03.8485785 Section time: 00:00:00.2308198&lt;BR /&gt;INFO| Flange revolve finished current time: 00:00:04.1727124 Section time: 00:00:00.3241339&lt;BR /&gt;INFO|GusBoltSketch projections complete current time: 00:00:04.8507958 Section time: 00:00:00.6780834&lt;BR /&gt;INFO| Total bolt, gus, and cut sketch created current time: 00:00:05.6375365 Section time: 00:00:00.7867407&lt;BR /&gt;INFO|Bolt hole created current time: 00:00:06.2011502 Section time: 00:00:00.5636137&lt;BR /&gt;INFO| Bolt and pattern created current time: 00:00:06.4456078 Section time: 00:00:00.2444576&lt;BR /&gt;INFO| Tank hole created - Last time measurement before gussets current time: 00:00:06.9368458 Section time: 00:00:00.4912380&lt;BR /&gt;INFO|Trim completed current time: 00:00:07.2357228 Section time: 00:00:00.2988770&lt;BR /&gt;INFO| Renaming complete current time: 00:00:07.2628682 Section time: 00:00:00.0271454&lt;BR /&gt;INFO|Creating gussets current time: 00:00:07.5037503 Section time: 00:00:00.2408821&lt;BR /&gt;INFO|done creating starting blind current time: 00:00:10.2198876 Section time: 00:00:02.7161373&lt;BR /&gt;INFO|Current ending time current time: 00:00:10.2200407 Section time: 00:00:00.0001531&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;INFO|End of program: 00:00:10.2200413&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="J_Pfeifer__1-1781701789096.png" style="width: 400px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1645960iED1F31F68FB52E6A/image-size/medium?v=v2&amp;amp;px=400" role="button" title="J_Pfeifer__1-1781701789096.png" alt="J_Pfeifer__1-1781701789096.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Flat Top Placement timings:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;INFO|Start current time: 00:00:00.0021513 Section time: 00:00:00.0021513&lt;BR /&gt;INFO|Bodies collected current time: 00:00:00.0054841 Section time: 00:00:00.0033328&lt;BR /&gt;INFO|Flange type selection finished current time: 00:00:00.0084894 Section time: 00:00:00.0030053&lt;BR /&gt;INFO|expressions created current time: 00:00:00.0810707 Section time: 00:00:00.0725813&lt;BR /&gt;INFO|UCS creation current time: 00:00:00.1832772 Section time: 00:00:00.1022065&lt;BR /&gt;INFO|UCS Name and expressions current time: 00:00:00.1854329 Section time: 00:00:00.0021557&lt;BR /&gt;INFO|Flange sketch objects created current time: 00:00:00.4202639 Section time: 00:00:00.2348310&lt;BR /&gt;INFO|Flange sketch Expressions assigned current time: 00:00:00.6249049 Section time: 00:00:00.2046410&lt;BR /&gt;INFO|Downpipe block current time: 00:00:00.6275123 Section time: 00:00:00.0026074&lt;BR /&gt;INFO|GusBoltSketch projections complete current time: 00:00:00.7000802 Section time: 00:00:00.0725679&lt;BR /&gt;INFO|Gusset + bolt sketch created current time: 00:00:00.7882997 Section time: 00:00:00.0882195&lt;BR /&gt;INFO|Gusset expressions assigned current time: 00:00:00.8565726 Section time: 00:00:00.0682729&lt;BR /&gt;INFO|Flange revolve finished current time: 00:00:00.8786062 Section time: 00:00:00.0220336&lt;BR /&gt;INFO|Bolt hole created current time: 00:00:00.9477425 Section time: 00:00:00.0691363&lt;BR /&gt;INFO|Bolt and pattern created current time: 00:00:00.9631923 Section time: 00:00:00.0154498&lt;BR /&gt;INFO|Tank hole created - Last time measurement before gussets current time: 00:00:00.9927119 Section time: 00:00:00.0295196&lt;BR /&gt;INFO|Trim to tank combine created current time: 00:00:01.0152568 Section time: 00:00:00.0225449&lt;BR /&gt;INFO|agitator flange or solids created. current time: 00:00:01.0193598 Section time: 00:00:00.0041030&lt;BR /&gt;INFO|Feature naming done current time: 00:00:01.0487372 Section time: 00:00:00.0293774&lt;BR /&gt;INFO|Gusset block current time: 00:00:01.3994151 Section time: 00:00:00.3506779&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;INFO|End of program: 00:00:01.4013818&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="J_Pfeifer__2-1781701833935.png" style="width: 400px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1645961iF4D8BBA826C96737/image-size/medium?v=v2&amp;amp;px=400" role="button" title="J_Pfeifer__2-1781701833935.png" alt="J_Pfeifer__2-1781701833935.png" /&gt;&lt;/span&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/105031"&gt;@Curtis_Waguespack&lt;/a&gt;&amp;nbsp;&lt;BR /&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/7812054"&gt;@WCrihfield&lt;/a&gt;&amp;nbsp;&lt;BR /&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/5011186"&gt;@JelteDeJong&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
    <pubDate>Wed, 17 Jun 2026 13:19:49 GMT</pubDate>
    <dc:creator>J_Pfeifer_</dc:creator>
    <dc:date>2026-06-17T13:19:49Z</dc:date>
    <item>
      <title>Ilogic performance inconsistency - with logs - need help.</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-performance-inconsistency-with-logs-need-help/m-p/14169120#M180928</link>
      <description>&lt;P&gt;Good morning everyone,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;After a bunch of work to create primary templates and framework here at our company. I've run into something quite interesting. First off, the goal, I created configurators allowing fitting placement onto a dome top, and sidewall of our tanks. These were built to be fully parametric allowing direct editing without ever entering the model browser manually. Everything is creatable, and editable based on forms.&lt;BR /&gt;&lt;BR /&gt;When I went to release these to the team, we were unhappy with the single placement runtime. I then refactored them to have as little objects as possible as few API calls required to finish off the fittings. I was able to bring it down to a manageable runtime, then released these templates to our team.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;That brings me to today, where I started on another type of tank top (flat top). Using the same frame work, with copied user parameters and rules. Only to find, for some reason unbeknownst to me, the program runs 8-10x faster overall.&amp;nbsp;All the objects are the same, all the parametric expressions are applied nearly identically, and the feature / body naming is consistent. However, I cannot fathom why the first two templates take so much longer to calculate.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;During my optimization I created a timing program to show overall time, and section time. Allowing me to see where the slow downs were. However, I didn't find one section that stood out. The entire program as a whole simply ran slow. However, with a new template the entire program is now much faster.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;We plan to use the old templates, however, If I can get the runtime of these down to what I experience with this new one. That would be greatly beneficial. I feel that I'm missing something extremely critical. Any help would be appreciated.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;Below are the timing logs, and pictures of what's being created on each. To be clear, there are differences in how the fittings are placed, and some of the math / expressions used to apply the fittings. That is, the geometry to where they must start is different, but the creations themselves are identical. However, you will see from the logs, the time difference doesn't make sense (At least to me). Each fitting being applied is a standard 6" flanged nozzle with 4 plate gussets.&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Dome Fitting Placement timings:&lt;/P&gt;&lt;P&gt;INFO|Start current time: 00:00:00.0000011 Section time: 00:00:00.0000011&lt;BR /&gt;INFO|Bodies collected current time: 00:00:00.0062867 Section time: 00:00:00.0062856&lt;BR /&gt;INFO|Flange type selection finished current time: 00:00:00.0062890 Section time: 00:00:00.0000023&lt;BR /&gt;INFO|Calculations and strings created current time: 00:00:00.0063036 Section time: 00:00:00.0000146&lt;BR /&gt;INFO|expressions created current time: 00:00:00.2463493 Section time: 00:00:00.2400457&lt;BR /&gt;INFO|UCS creation current time: 00:00:00.9397604 Section time: 00:00:00.6934111&lt;BR /&gt;INFO|UCS Name and expressions current time: 00:00:00.9397621 Section time: 00:00:00.0000017&lt;BR /&gt;INFO|Flange sketch objects created current time: 00:00:02.4107226 Section time: 00:00:01.4709605&lt;BR /&gt;INFO|Flange sketch Expressions assigned current time: 00:00:03.2957951 Section time: 00:00:00.8850725&lt;BR /&gt;INFO|Downpipe block current time: 00:00:03.2957958 Section time: 00:00:00.0000007&lt;BR /&gt;INFO|GusBoltSketch projections complete current time: 00:00:03.8060827 Section time: 00:00:00.5102869&lt;BR /&gt;INFO|Gusset + bolt sketch created current time: 00:00:04.2123908 Section time: 00:00:00.4063081&lt;BR /&gt;INFO|Gusset expressions assigned current time: 00:00:04.5047325 Section time: 00:00:00.2923417&lt;BR /&gt;INFO|Flange revolve finished current time: 00:00:04.6569661 Section time: 00:00:00.1522336&lt;BR /&gt;INFO|Bolt hole created current time: 00:00:05.1423473 Section time: 00:00:00.4853812&lt;BR /&gt;INFO|Bolt and pattern created current time: 00:00:05.2934999 Section time: 00:00:00.1511526&lt;BR /&gt;INFO|Tank hole created - Last time measurement before gussets current time: 00:00:05.5953714 Section time: 00:00:00.3018715&lt;BR /&gt;INFO|Trim to tank combine created current time: 00:00:05.9051758 Section time: 00:00:00.3098044&lt;BR /&gt;INFO|agitator flange or solids created. current time: 00:00:05.9051764 Section time: 00:00:00.0000006&lt;BR /&gt;INFO|Feature naming done current time: 00:00:05.9613297 Section time: 00:00:00.0561533&lt;BR /&gt;INFO|Gusset block current time: 00:00:07.9276211 Section time: 00:00:01.9662914&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;INFO|End of program: 00:00:07.9276228&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="J_Pfeifer__0-1781701744188.png" style="width: 400px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1645959i34F8FA3E49A4AD24/image-size/medium?v=v2&amp;amp;px=400" role="button" title="J_Pfeifer__0-1781701744188.png" alt="J_Pfeifer__0-1781701744188.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Sidewall Placement timings:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;INFO|Start current time: 00:00:00.0000007 Section time: 00:00:00.0000007&lt;BR /&gt;INFO|Bodies collected current time: 00:00:00.1209570 Section time: 00:00:00.1209563&lt;BR /&gt;INFO|tangent checks + parameter creation current time: 00:00:00.3945542 Section time: 00:00:00.2735972&lt;BR /&gt;INFO|UCS creation current time: 00:00:01.3236733 Section time: 00:00:00.9291191&lt;BR /&gt;INFO|UCS Name and expressions current time: 00:00:01.7522218 Section time: 00:00:00.4285485&lt;BR /&gt;INFO|Flange sketch objects created current time: 00:00:01.8119610 Section time: 00:00:00.0597392&lt;BR /&gt;INFO|Constraints applied current time: 00:00:02.7656996 Section time: 00:00:00.9537386&lt;BR /&gt;INFO|Flange assignements current time: 00:00:03.6177587 Section time: 00:00:00.8520591&lt;BR /&gt;INFO|Flange sketch parameters updated current time: 00:00:03.8485785 Section time: 00:00:00.2308198&lt;BR /&gt;INFO| Flange revolve finished current time: 00:00:04.1727124 Section time: 00:00:00.3241339&lt;BR /&gt;INFO|GusBoltSketch projections complete current time: 00:00:04.8507958 Section time: 00:00:00.6780834&lt;BR /&gt;INFO| Total bolt, gus, and cut sketch created current time: 00:00:05.6375365 Section time: 00:00:00.7867407&lt;BR /&gt;INFO|Bolt hole created current time: 00:00:06.2011502 Section time: 00:00:00.5636137&lt;BR /&gt;INFO| Bolt and pattern created current time: 00:00:06.4456078 Section time: 00:00:00.2444576&lt;BR /&gt;INFO| Tank hole created - Last time measurement before gussets current time: 00:00:06.9368458 Section time: 00:00:00.4912380&lt;BR /&gt;INFO|Trim completed current time: 00:00:07.2357228 Section time: 00:00:00.2988770&lt;BR /&gt;INFO| Renaming complete current time: 00:00:07.2628682 Section time: 00:00:00.0271454&lt;BR /&gt;INFO|Creating gussets current time: 00:00:07.5037503 Section time: 00:00:00.2408821&lt;BR /&gt;INFO|done creating starting blind current time: 00:00:10.2198876 Section time: 00:00:02.7161373&lt;BR /&gt;INFO|Current ending time current time: 00:00:10.2200407 Section time: 00:00:00.0001531&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;INFO|End of program: 00:00:10.2200413&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="J_Pfeifer__1-1781701789096.png" style="width: 400px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1645960iED1F31F68FB52E6A/image-size/medium?v=v2&amp;amp;px=400" role="button" title="J_Pfeifer__1-1781701789096.png" alt="J_Pfeifer__1-1781701789096.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Flat Top Placement timings:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;INFO|Start current time: 00:00:00.0021513 Section time: 00:00:00.0021513&lt;BR /&gt;INFO|Bodies collected current time: 00:00:00.0054841 Section time: 00:00:00.0033328&lt;BR /&gt;INFO|Flange type selection finished current time: 00:00:00.0084894 Section time: 00:00:00.0030053&lt;BR /&gt;INFO|expressions created current time: 00:00:00.0810707 Section time: 00:00:00.0725813&lt;BR /&gt;INFO|UCS creation current time: 00:00:00.1832772 Section time: 00:00:00.1022065&lt;BR /&gt;INFO|UCS Name and expressions current time: 00:00:00.1854329 Section time: 00:00:00.0021557&lt;BR /&gt;INFO|Flange sketch objects created current time: 00:00:00.4202639 Section time: 00:00:00.2348310&lt;BR /&gt;INFO|Flange sketch Expressions assigned current time: 00:00:00.6249049 Section time: 00:00:00.2046410&lt;BR /&gt;INFO|Downpipe block current time: 00:00:00.6275123 Section time: 00:00:00.0026074&lt;BR /&gt;INFO|GusBoltSketch projections complete current time: 00:00:00.7000802 Section time: 00:00:00.0725679&lt;BR /&gt;INFO|Gusset + bolt sketch created current time: 00:00:00.7882997 Section time: 00:00:00.0882195&lt;BR /&gt;INFO|Gusset expressions assigned current time: 00:00:00.8565726 Section time: 00:00:00.0682729&lt;BR /&gt;INFO|Flange revolve finished current time: 00:00:00.8786062 Section time: 00:00:00.0220336&lt;BR /&gt;INFO|Bolt hole created current time: 00:00:00.9477425 Section time: 00:00:00.0691363&lt;BR /&gt;INFO|Bolt and pattern created current time: 00:00:00.9631923 Section time: 00:00:00.0154498&lt;BR /&gt;INFO|Tank hole created - Last time measurement before gussets current time: 00:00:00.9927119 Section time: 00:00:00.0295196&lt;BR /&gt;INFO|Trim to tank combine created current time: 00:00:01.0152568 Section time: 00:00:00.0225449&lt;BR /&gt;INFO|agitator flange or solids created. current time: 00:00:01.0193598 Section time: 00:00:00.0041030&lt;BR /&gt;INFO|Feature naming done current time: 00:00:01.0487372 Section time: 00:00:00.0293774&lt;BR /&gt;INFO|Gusset block current time: 00:00:01.3994151 Section time: 00:00:00.3506779&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;INFO|End of program: 00:00:01.4013818&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="J_Pfeifer__2-1781701833935.png" style="width: 400px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1645961iF4D8BBA826C96737/image-size/medium?v=v2&amp;amp;px=400" role="button" title="J_Pfeifer__2-1781701833935.png" alt="J_Pfeifer__2-1781701833935.png" /&gt;&lt;/span&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/105031"&gt;@Curtis_Waguespack&lt;/a&gt;&amp;nbsp;&lt;BR /&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/7812054"&gt;@WCrihfield&lt;/a&gt;&amp;nbsp;&lt;BR /&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/5011186"&gt;@JelteDeJong&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 17 Jun 2026 13:19:49 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-performance-inconsistency-with-logs-need-help/m-p/14169120#M180928</guid>
      <dc:creator>J_Pfeifer_</dc:creator>
      <dc:date>2026-06-17T13:19:49Z</dc:date>
    </item>
    <item>
      <title>Re: Ilogic performance inconsistency - with logs - need help.</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-performance-inconsistency-with-logs-need-help/m-p/14169176#M180930</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/15445461"&gt;@J_Pfeifer_&lt;/a&gt;&amp;nbsp;&lt;BR /&gt;Looking at your timing data, there's no single operation that sticks out. It's basically the same time loss factor everywhere, if you wanna call it that. I'd say the difference isn't in the code but the part itself. Every recompute in Inventor has to solve against the geometry you're working with, and a flat surface is simply way less complex to solve against than your curved surfaces in the dome/side wall. Without seeing your code it's difficult to say where you can save time, but basically generating geometry slows things down. So if you can deffer updates, turn of screen updating, avoid unnecessary document updates etc you could possibly gain some speed. However, given that you're working against a flat surface, which is a way simpler geometry, the flat top will always be faster.&lt;/P&gt;</description>
      <pubDate>Wed, 17 Jun 2026 13:47:32 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-performance-inconsistency-with-logs-need-help/m-p/14169176#M180930</guid>
      <dc:creator>JhoelForshav</dc:creator>
      <dc:date>2026-06-17T13:47:32Z</dc:date>
    </item>
    <item>
      <title>Re: Ilogic performance inconsistency - with logs - need help.</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-performance-inconsistency-with-logs-need-help/m-p/14169201#M180931</link>
      <description>&lt;P&gt;See this is the conclusion I came to back when I first encountered this problem. The company had hired a third party to create templates before my exploration. These ran significantly faster, however they were not parametric or dynamic to the model. They also didn't bother fully constraining the sketches involved. This led me to thinking I was doing something wrong causing the slow down. One could argue that generating this geometry is the incorrect path in general. Something like derived parts or i parts would likely be quicker.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;Basically it boils down to the recalculations being done by the inventor engine. Due to the curved surfaces, and base model geometry, there is a minimum speed that can be achieved? That is, I'm sure there are still places I could optimized, but due to the model's needs the time cost will likely remain no matter my efforts?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have the main sketch creation deferred already, I found marginal gains there. However, screen updating seemed to have little to no effect and introduce lock up risk to the programs. I played around moving the parametric assignments. Trying to get them all to process at the same time. Is there a way to defer the entire document until the end? Or control the document updating more consistently?&lt;BR /&gt;&lt;BR /&gt;I was just flabbergasted to how much faster this was when I got it converted this morning.&lt;BR /&gt;&lt;BR /&gt;People don't like to hit a button to do something and wait. This is also why I made this post. If they have one template that runs in 2 seconds, and others that run in 10 seconds. They're going to ask why, and I need a way to explain that properly to them.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;For fun, below is the main of this application. (Yes, it's likely a mess to most)&lt;/P&gt;&lt;PRE&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;App&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;Application&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oDoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartDocument&lt;/SPAN&gt; = &lt;SPAN&gt;App&lt;/SPAN&gt;.&lt;SPAN&gt;ActiveDocument&lt;/SPAN&gt; 
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oCompDef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartComponentDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;oDoc&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oTO&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;TransientObjects&lt;/SPAN&gt; = &lt;SPAN&gt;App&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oTG&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;TransientGeometry&lt;/SPAN&gt; = &lt;SPAN&gt;App&lt;/SPAN&gt;.&lt;SPAN&gt;TransientGeometry&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;UParams&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;UserParameters&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;Parameters&lt;/SPAN&gt;.&lt;SPAN&gt;UserParameters&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;Trnsmgr&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;TransactionManager&lt;/SPAN&gt; = &lt;SPAN&gt;App&lt;/SPAN&gt;.&lt;SPAN&gt;TransactionManager&lt;/SPAN&gt;

	&lt;SPAN&gt;iLogicVb&lt;/SPAN&gt;.&lt;SPAN&gt;UpdateWhenDone&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
	
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;FittingTransaction&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Transaction&lt;/SPAN&gt; 

&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Transaction_Flip&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; 
  &lt;SPAN&gt;FittingTransaction&lt;/SPAN&gt; = &lt;SPAN&gt;Trnsmgr&lt;/SPAN&gt;.&lt;SPAN&gt;StartTransaction&lt;/SPAN&gt;(&lt;SPAN&gt;oDoc&lt;/SPAN&gt;, &lt;SPAN&gt;"Standard fitting creation"&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;Flange_Face_OD&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;, &lt;SPAN&gt;Flange_Head_Thickness&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;, &lt;SPAN&gt;Flange_Thickness&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;, &lt;SPAN&gt;Bolt_Circle&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;, &lt;SPAN&gt;Bolt_Dia&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;Num_of_Bolts&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt;, &lt;SPAN&gt;GussetProgAngle&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt; = 360
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;GussetBool&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;Dim&lt;/SPAN&gt; &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; 

&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Devoloper_Flip&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; 
	
&lt;SPAN&gt;'	If Rule_Launched = False Then 	&lt;/SPAN&gt;
		&lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; = &lt;SPAN&gt;InputBox&lt;/SPAN&gt;(&lt;SPAN&gt;"Please enter the F# value to name the fitting."&lt;/SPAN&gt;, &lt;SPAN&gt;"Name Fitting"&lt;/SPAN&gt;)
&lt;SPAN&gt;'	Else If Rule_Launched = True Then ' This boolean checks if a rule launched this program. If so it will assume its to recreate an edit.  &lt;/SPAN&gt;
	&lt;SPAN&gt;'	FittingNameInput = CType(Edit_Fitting_List, String)&lt;/SPAN&gt;
		
	&lt;SPAN&gt;'	Flange_Size = Edit_Flange_Size&lt;/SPAN&gt;
	&lt;SPAN&gt;'	Fitting_Height = Edit_Flange_Height&lt;/SPAN&gt;
	&lt;SPAN&gt;'	Fitting_Angle = Edit_Flange_Angle&lt;/SPAN&gt;
	&lt;SPAN&gt;'	Fitting_Offset_Dir = Edit_Fitting_Offset_Dir&lt;/SPAN&gt;
	&lt;SPAN&gt;'	Fitting_Offset = Edit_Fitting_Offset&lt;/SPAN&gt;
&lt;SPAN&gt;'	End If&lt;/SPAN&gt;
	
&lt;SPAN&gt;Else&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Devoloper_Flip&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; 
	&lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; = &lt;SPAN&gt;"F"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;Fitting_Number&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;iWatch&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Stopwatch&lt;/SPAN&gt; = &lt;SPAN&gt;Stopwatch&lt;/SPAN&gt;.&lt;SPAN&gt;StartNew&lt;/SPAN&gt; 
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;PreviousTime&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;TimeSpan&lt;/SPAN&gt; = &lt;SPAN&gt;Nothing&lt;/SPAN&gt;
	
		&lt;SPAN&gt;DisplayTimer&lt;/SPAN&gt;(&lt;SPAN&gt;iWatch&lt;/SPAN&gt;, &lt;SPAN&gt;"Start"&lt;/SPAN&gt;, &lt;SPAN&gt;PreviousTime&lt;/SPAN&gt;)

	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;StringPattern&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;"^[F]\d{1,3}$"&lt;/SPAN&gt;	

	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Regex&lt;/SPAN&gt;.&lt;SPAN&gt;IsMatch&lt;/SPAN&gt;(&lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt;, &lt;SPAN&gt;StringPattern&lt;/SPAN&gt;) &lt;SPAN&gt;Then&lt;/SPAN&gt; 
		
	&lt;SPAN&gt;Else&lt;/SPAN&gt;
		&lt;SPAN&gt;MessageBox&lt;/SPAN&gt;.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;"Incorrect Input, please run program again with different name. F### accepted (CAPS ONLY)"&lt;/SPAN&gt;)
		&lt;SPAN&gt;FittingTransaction&lt;/SPAN&gt;.&lt;SPAN&gt;Abort&lt;/SPAN&gt;()
		
		&lt;SPAN&gt;Exit&lt;/SPAN&gt; &lt;SPAN&gt;Sub&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;InsideBodyCol&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt; = &lt;SPAN&gt;oTO&lt;/SPAN&gt;.&lt;SPAN&gt;CreateObjectCollection&lt;/SPAN&gt; &lt;SPAN&gt;'These collections are used for the combine features&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;OutsideBodyCol&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt; = &lt;SPAN&gt;oTO&lt;/SPAN&gt;.&lt;SPAN&gt;CreateObjectCollection&lt;/SPAN&gt;
		&lt;SPAN&gt;CollectSolids&lt;/SPAN&gt;(&lt;SPAN&gt;InsideBodyCol&lt;/SPAN&gt;, &lt;SPAN&gt;OutsideBodyCol&lt;/SPAN&gt;)
		
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;TankBodyCol&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt; = &lt;SPAN&gt;oTO&lt;/SPAN&gt;.&lt;SPAN&gt;CreateObjectCollection&lt;/SPAN&gt; &lt;SPAN&gt;'This is the primary collection used for the tank hole cut. &lt;/SPAN&gt;
		&lt;SPAN&gt;TankBodyCol&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;SurfaceBodies&lt;/SPAN&gt;(1))
	
	&lt;SPAN&gt;DisplayTimer&lt;/SPAN&gt;(&lt;SPAN&gt;iWatch&lt;/SPAN&gt;, &lt;SPAN&gt;"Bodies collected"&lt;/SPAN&gt;, &lt;SPAN&gt;PreviousTime&lt;/SPAN&gt;)	
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;FlangeType&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;UpperDpFlg&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Boolean&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;LowerDpFlg&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Boolean&lt;/SPAN&gt;
	
&lt;SPAN&gt;'Try	&lt;/SPAN&gt;
	
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;SharedVariable&lt;/SPAN&gt;.&lt;SPAN&gt;Exists&lt;/SPAN&gt;(&lt;SPAN&gt;"TypeTransfer"&lt;/SPAN&gt;) = &lt;SPAN&gt;False&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; &lt;SPAN&gt;'This checks if there is a type transfer, if so it uses that value from the other creation. Otherwise it then checks if there are downpipes or not involved. Setting the flange type to required input.&lt;/SPAN&gt;
		&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Downpipe_Trigger&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; 
			&lt;SPAN&gt;FlangeType&lt;/SPAN&gt; = &lt;SPAN&gt;"Standard"&lt;/SPAN&gt;
		&lt;SPAN&gt;Else&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Downpipe_Trigger&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; 
			&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Downpipe_Type&lt;/SPAN&gt; = &lt;SPAN&gt;"P.V.C."&lt;/SPAN&gt;
				&lt;SPAN&gt;FlangeType&lt;/SPAN&gt; = &lt;SPAN&gt;"PVC Downpipe"&lt;/SPAN&gt;
				&lt;SPAN&gt;UpperDpFlg&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt;
				&lt;SPAN&gt;LowerDpFlg&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
			&lt;SPAN&gt;Else&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Downpipe_Type&lt;/SPAN&gt; = &lt;SPAN&gt;"F.R.P."&lt;/SPAN&gt;
				&lt;SPAN&gt;FlangeType&lt;/SPAN&gt; = &lt;SPAN&gt;"FRP Downpipe"&lt;/SPAN&gt;
				&lt;SPAN&gt;UpperDpFlg&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt;
				&lt;SPAN&gt;LowerDpFlg&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
			&lt;SPAN&gt;Else&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Downpipe_Type&lt;/SPAN&gt; = &lt;SPAN&gt;"P.V.C. Removable"&lt;/SPAN&gt;
				&lt;SPAN&gt;FlangeType&lt;/SPAN&gt; = &lt;SPAN&gt;"PVC Removable Downpipe"&lt;/SPAN&gt;
				&lt;SPAN&gt;UpperDpFlg&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
				&lt;SPAN&gt;LowerDpFlg&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt;
			&lt;SPAN&gt;Else&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Downpipe_Type&lt;/SPAN&gt; = &lt;SPAN&gt;"F.R.P. Removable"&lt;/SPAN&gt;
				&lt;SPAN&gt;FlangeType&lt;/SPAN&gt; = &lt;SPAN&gt;"FRP Removable Downpipe"&lt;/SPAN&gt;
				&lt;SPAN&gt;UpperDpFlg&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;	
				&lt;SPAN&gt;LowerDpFlg&lt;/SPAN&gt; = &lt;SPAN&gt;False&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;Else&lt;/SPAN&gt; 
		&lt;SPAN&gt;FlangeType&lt;/SPAN&gt; = &lt;SPAN&gt;SharedVariable&lt;/SPAN&gt;(&lt;SPAN&gt;"TypeTransfer"&lt;/SPAN&gt;) 
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt; 
		
		&lt;SPAN&gt;DisplayTimer&lt;/SPAN&gt;(&lt;SPAN&gt;iWatch&lt;/SPAN&gt;, &lt;SPAN&gt;"Flange type selection finished"&lt;/SPAN&gt;, &lt;SPAN&gt;PreviousTime&lt;/SPAN&gt;)
	&lt;SPAN&gt;'Logger.Info("FittingType: " &amp;amp; FlangeType &amp;amp; " Upper flag: " &amp;amp; UpperDpFlg.ToString &amp;amp; " Lower Flag: " &amp;amp; LowerDpFlg.ToString)	&lt;/SPAN&gt;
		
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Downpipe_Trigger&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt; &lt;SPAN&gt;Or&lt;/SPAN&gt; &lt;SPAN&gt;FlangeType&lt;/SPAN&gt; = &lt;SPAN&gt;"Anti-Foam"&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;  &lt;SPAN&gt;'Set the values required when inserting the standard fitting. &lt;/SPAN&gt;
		&lt;SPAN&gt;Trim_Fitting_Tube&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt;
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt; 
	
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Agitator_Flange&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; &lt;SPAN&gt;'Sets the value of the plate gusset to none in order to create the agitator flange solid and items.&lt;/SPAN&gt;
		&lt;SPAN&gt;Gusset_Type&lt;/SPAN&gt; = &lt;SPAN&gt;"None"&lt;/SPAN&gt;
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt; 
		
	&lt;SPAN&gt;SharedVariable&lt;/SPAN&gt;.&lt;SPAN&gt;RemoveAll&lt;/SPAN&gt;() &lt;SPAN&gt;'Used to remove all non needed shared variables from the program when called. &lt;/SPAN&gt;
	
	&lt;SPAN&gt;SharedVariable&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;"FittingName"&lt;/SPAN&gt;) = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt;
	
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Cartesian_Input&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; &lt;SPAN&gt;'converts the cartesian input method into a polar input system allowing for correct placement metrics. &lt;/SPAN&gt;
			
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;iTuple&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Tuple&lt;/SPAN&gt;(&lt;SPAN&gt;Of&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;, &lt;SPAN&gt;Double&lt;/SPAN&gt;) = &lt;SPAN&gt;CartesianToPolar&lt;/SPAN&gt;()
				
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;RadiusCalc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;iTuple&lt;/SPAN&gt;.&lt;SPAN&gt;Item1&lt;/SPAN&gt;
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;AngleCalc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;iTuple&lt;/SPAN&gt;.&lt;SPAN&gt;Item2&lt;/SPAN&gt; * (180 / &lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;PI&lt;/SPAN&gt;)
			
				&lt;SPAN&gt;Fitting_Placement&lt;/SPAN&gt; = &lt;SPAN&gt;RadiusCalc&lt;/SPAN&gt;
				&lt;SPAN&gt;Angle_from_Start&lt;/SPAN&gt; = &lt;SPAN&gt;AngleCalc&lt;/SPAN&gt;
				&lt;SPAN&gt;Plate_Gus_Angle&lt;/SPAN&gt; = &lt;SPAN&gt;AngleCalc&lt;/SPAN&gt;
				
		&lt;SPAN&gt;Else&lt;/SPAN&gt; 
				&lt;SPAN&gt;Plate_Gus_Angle&lt;/SPAN&gt; = 0
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt; 
	
		&lt;SPAN&gt;SelectFittingOptions&lt;/SPAN&gt;(&lt;SPAN&gt;Flange_Face_OD&lt;/SPAN&gt;, &lt;SPAN&gt;Flange_Head_Thickness&lt;/SPAN&gt;, &lt;SPAN&gt;Flange_Thickness&lt;/SPAN&gt;, &lt;SPAN&gt;Bolt_Circle&lt;/SPAN&gt;, &lt;SPAN&gt;Bolt_Dia&lt;/SPAN&gt;, &lt;SPAN&gt;Num_of_Bolts&lt;/SPAN&gt;) &lt;SPAN&gt;'This finds the required values for the flanges being applied. &lt;/SPAN&gt;
		
		&lt;SPAN&gt;'Setup required parameters &lt;/SPAN&gt;
		&lt;SPAN&gt;UParams&lt;/SPAN&gt;.&lt;SPAN&gt;AddByValue&lt;/SPAN&gt;(&lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Flange_Size"&lt;/SPAN&gt;, &lt;SPAN&gt;Flange_Size&lt;/SPAN&gt; * 2.54, &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;UnitsTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kInchLengthUnits&lt;/SPAN&gt;)
		&lt;SPAN&gt;UParams&lt;/SPAN&gt;.&lt;SPAN&gt;AddByValue&lt;/SPAN&gt;(&lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Flange_Face_OD"&lt;/SPAN&gt;, &lt;SPAN&gt;Flange_Face_OD&lt;/SPAN&gt; * 2.54, &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;UnitsTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kInchLengthUnits&lt;/SPAN&gt;)
		&lt;SPAN&gt;UParams&lt;/SPAN&gt;.&lt;SPAN&gt;AddByValue&lt;/SPAN&gt;(&lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Flange_Head_Thickness"&lt;/SPAN&gt;, &lt;SPAN&gt;Flange_Head_Thickness&lt;/SPAN&gt; * 2.54, &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;UnitsTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kInchLengthUnits&lt;/SPAN&gt;)
		&lt;SPAN&gt;UParams&lt;/SPAN&gt;.&lt;SPAN&gt;AddByValue&lt;/SPAN&gt;(&lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Flange_Thickness"&lt;/SPAN&gt;, &lt;SPAN&gt;Flange_Thickness&lt;/SPAN&gt; * 2.54, &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;UnitsTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kInchLengthUnits&lt;/SPAN&gt;)
		&lt;SPAN&gt;UParams&lt;/SPAN&gt;.&lt;SPAN&gt;AddByValue&lt;/SPAN&gt;(&lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Flange_Type"&lt;/SPAN&gt;, &lt;SPAN&gt;FlangeType&lt;/SPAN&gt;, &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;UnitsTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kTextUnits&lt;/SPAN&gt;)
		&lt;SPAN&gt;UParams&lt;/SPAN&gt;.&lt;SPAN&gt;AddByValue&lt;/SPAN&gt;(&lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Bolt_Circle"&lt;/SPAN&gt;, &lt;SPAN&gt;Bolt_Circle&lt;/SPAN&gt; * 2.54, &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;UnitsTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kInchLengthUnits&lt;/SPAN&gt;)
		&lt;SPAN&gt;UParams&lt;/SPAN&gt;.&lt;SPAN&gt;AddByValue&lt;/SPAN&gt;(&lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Bolt_Dia"&lt;/SPAN&gt;, &lt;SPAN&gt;Bolt_Dia&lt;/SPAN&gt; * 2.54, &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;UnitsTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kInchLengthUnits&lt;/SPAN&gt;)
		&lt;SPAN&gt;UParams&lt;/SPAN&gt;.&lt;SPAN&gt;AddByValue&lt;/SPAN&gt;(&lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Num_Of_Bolts"&lt;/SPAN&gt;, &lt;SPAN&gt;Num_of_Bolts&lt;/SPAN&gt;, &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;UnitsTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kUnitlessUnits&lt;/SPAN&gt;)
		&lt;SPAN&gt;UParams&lt;/SPAN&gt;.&lt;SPAN&gt;AddByValue&lt;/SPAN&gt;(&lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Bolt_Angle"&lt;/SPAN&gt;, &lt;SPAN&gt;FindBoltAngle&lt;/SPAN&gt;(&lt;SPAN&gt;Num_of_Bolts&lt;/SPAN&gt;), &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;UnitsTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kDegreeAngleUnits&lt;/SPAN&gt;)
		&lt;SPAN&gt;UParams&lt;/SPAN&gt;.&lt;SPAN&gt;AddByValue&lt;/SPAN&gt;(&lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Gusset_Type"&lt;/SPAN&gt;, &lt;SPAN&gt;Gusset_Type&lt;/SPAN&gt;, &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;UnitsTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kTextUnits&lt;/SPAN&gt;)
		&lt;SPAN&gt;UParams&lt;/SPAN&gt;.&lt;SPAN&gt;AddByValue&lt;/SPAN&gt;(&lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Num_Of_Gus"&lt;/SPAN&gt;, &lt;SPAN&gt;Num_Of_Gus&lt;/SPAN&gt;, &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;UnitsTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kUnitlessUnits&lt;/SPAN&gt;)
		&lt;SPAN&gt;UParams&lt;/SPAN&gt;.&lt;SPAN&gt;AddByValue&lt;/SPAN&gt;(&lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Plate_Gus_Angle"&lt;/SPAN&gt;, &lt;SPAN&gt;Plate_Gus_Angle&lt;/SPAN&gt; * (&lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;PI&lt;/SPAN&gt; / 180), &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;UnitsTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kDegreeAngleUnits&lt;/SPAN&gt;)
		&lt;SPAN&gt;UParams&lt;/SPAN&gt;.&lt;SPAN&gt;AddByValue&lt;/SPAN&gt;(&lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Fitting_Proj"&lt;/SPAN&gt;, 12 * 2.54, &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;UnitsTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kInchLengthUnits&lt;/SPAN&gt;)
		&lt;SPAN&gt;UParams&lt;/SPAN&gt;.&lt;SPAN&gt;AddByValue&lt;/SPAN&gt;(&lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Fitting_Trim"&lt;/SPAN&gt;, &lt;SPAN&gt;Trim_Fitting_Tube&lt;/SPAN&gt;, &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;UnitsTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kBooleanUnits&lt;/SPAN&gt;)
		&lt;SPAN&gt;UParams&lt;/SPAN&gt;.&lt;SPAN&gt;AddByValue&lt;/SPAN&gt;(&lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Fitting_Placement"&lt;/SPAN&gt;, &lt;SPAN&gt;Fitting_Placement&lt;/SPAN&gt; * 2.54, &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;UnitsTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kInchLengthUnits&lt;/SPAN&gt;)
		&lt;SPAN&gt;UParams&lt;/SPAN&gt;.&lt;SPAN&gt;AddByValue&lt;/SPAN&gt;(&lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Fitting_Angle"&lt;/SPAN&gt;, &lt;SPAN&gt;Angle_from_Start&lt;/SPAN&gt; * (&lt;SPAN&gt;Math&lt;/SPAN&gt;.&lt;SPAN&gt;PI&lt;/SPAN&gt; / 180), &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;UnitsTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kDegreeAngleUnits&lt;/SPAN&gt;)
		&lt;SPAN&gt;UParams&lt;/SPAN&gt;.&lt;SPAN&gt;AddByValue&lt;/SPAN&gt;(&lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Blind"&lt;/SPAN&gt;, &lt;SPAN&gt;Blind_Flange&lt;/SPAN&gt;, &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;UnitsTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kBooleanUnits&lt;/SPAN&gt;)
		&lt;SPAN&gt;UParams&lt;/SPAN&gt;.&lt;SPAN&gt;AddByValue&lt;/SPAN&gt;(&lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Fitting_Height"&lt;/SPAN&gt;, 6 * 2.54, &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;UnitsTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kInchLengthUnits&lt;/SPAN&gt;)
		
		&lt;SPAN&gt;'Setup dynamic and special variables 	&lt;/SPAN&gt;
			&lt;SPAN&gt;'UParams.AddByExpression(FittingNameInput &amp;amp; "_Chord_Length", ChordStr, Inventor.UnitsTypeEnum.kInchLengthUnits) &lt;/SPAN&gt;
			&lt;SPAN&gt;'UParams.AddByExpression(FittingNameInput &amp;amp; "_Cir_Seg_h", CirSegStr, Inventor.UnitsTypeEnum.kInchLengthUnits)&lt;/SPAN&gt;
				
		&lt;SPAN&gt;DisplayTimer&lt;/SPAN&gt;(&lt;SPAN&gt;iWatch&lt;/SPAN&gt;, &lt;SPAN&gt;"expressions created"&lt;/SPAN&gt;, &lt;SPAN&gt;PreviousTime&lt;/SPAN&gt;)	
		
&lt;SPAN&gt;'Catch Err As Exception &lt;/SPAN&gt;
&lt;SPAN&gt;'		Call ReportError("Problem establishing parameters", Err, FittingTransaction)		&lt;/SPAN&gt;
&lt;SPAN&gt;'End Try&lt;/SPAN&gt;
			
	&lt;SPAN&gt;'This the actual start of the flange creation. Everything before this is establishing varaibles and saving data internally. &lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oUCSDef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;UserCoordinateSystemDefinition&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oUCS&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;UserCoordinateSystem&lt;/SPAN&gt;
	
&lt;SPAN&gt;'Try	&lt;/SPAN&gt;
		&lt;SPAN&gt;oUCSDef&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;UserCoordinateSystems&lt;/SPAN&gt;.&lt;SPAN&gt;CreateDefinition&lt;/SPAN&gt;() 
	
		&lt;SPAN&gt;oUCS&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;UserCoordinateSystems&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;oUCSDef&lt;/SPAN&gt;) 
			&lt;SPAN&gt;oUCS&lt;/SPAN&gt;.&lt;SPAN&gt;Visible&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt;
		
		&lt;SPAN&gt;DisplayTimer&lt;/SPAN&gt;(&lt;SPAN&gt;iWatch&lt;/SPAN&gt;, &lt;SPAN&gt;"UCS creation"&lt;/SPAN&gt;, &lt;SPAN&gt;PreviousTime&lt;/SPAN&gt;)
		
		&lt;SPAN&gt;SharedVariable&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;"FittingUCS"&lt;/SPAN&gt;) = &lt;SPAN&gt;oUCS&lt;/SPAN&gt;
		
&lt;SPAN&gt;'Catch Err As Exception &lt;/SPAN&gt;
&lt;SPAN&gt;'		Call ReportError("Problem Establishing the UCS object or direction starting points", Err, FittingTransaction)		&lt;/SPAN&gt;
&lt;SPAN&gt;'End Try&lt;/SPAN&gt;

		&lt;SPAN&gt;DisplayTimer&lt;/SPAN&gt;(&lt;SPAN&gt;iWatch&lt;/SPAN&gt;, &lt;SPAN&gt;"UCS Name and expressions"&lt;/SPAN&gt;, &lt;SPAN&gt;PreviousTime&lt;/SPAN&gt;)
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PlanarSketch&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;CenterLine&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SketchLine&lt;/SPAN&gt;, &lt;SPAN&gt;CenterPoint&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SketchPoint&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;TopUCSLine&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SketchLine&lt;/SPAN&gt;, &lt;SPAN&gt;BotUCSLine&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SketchLine&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;FlgRect&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SketchEntitiesEnumerator&lt;/SPAN&gt;, &lt;SPAN&gt;TBRect&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SketchEntitiesEnumerator&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;FlangeIDDim&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DimensionConstraint&lt;/SPAN&gt;, &lt;SPAN&gt;FlangeFaceODDim&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DimensionConstraint&lt;/SPAN&gt;, &lt;SPAN&gt;FlangeHeadThickDim&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DimensionConstraint&lt;/SPAN&gt;, &lt;SPAN&gt;FlangeThickDim&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DimensionConstraint&lt;/SPAN&gt;, &lt;SPAN&gt;FlangePlaceDim&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DimensionConstraint&lt;/SPAN&gt;, &lt;SPAN&gt;FittingDisDim&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DimensionConstraint&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;FittingPlacementDim&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DimensionConstraint&lt;/SPAN&gt;, &lt;SPAN&gt;FittingHeightDim&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DimensionConstraint&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;CenterFittingAxis&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;WorkAxis&lt;/SPAN&gt;
	
&lt;SPAN&gt;'Try		&lt;/SPAN&gt;

		&lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;Sketches&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;oUCS&lt;/SPAN&gt;.&lt;SPAN&gt;YZPlane&lt;/SPAN&gt;)
			
			&lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;DeferUpdates&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
	
		&lt;SPAN&gt;CenterPoint&lt;/SPAN&gt; = &lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;SketchPoints&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;oTG&lt;/SPAN&gt;.&lt;SPAN&gt;CreatePoint2d&lt;/SPAN&gt;(0, 0))
			&lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;GeometricConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddGround&lt;/SPAN&gt;(&lt;SPAN&gt;CenterPoint&lt;/SPAN&gt;)
		
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;CenterStartPoint&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Point2d&lt;/SPAN&gt; = &lt;SPAN&gt;oTG&lt;/SPAN&gt;.&lt;SPAN&gt;CreatePoint2d&lt;/SPAN&gt;(&lt;SPAN&gt;CenterPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;X&lt;/SPAN&gt;, &lt;SPAN&gt;CenterPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;Y&lt;/SPAN&gt; + &lt;SPAN&gt;Fitting_Placement&lt;/SPAN&gt; * 2.54) &lt;SPAN&gt;'This creates the horizontal placement Point&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;CenterEndPoint&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Point2d&lt;/SPAN&gt; = &lt;SPAN&gt;oTG&lt;/SPAN&gt;.&lt;SPAN&gt;CreatePoint2d&lt;/SPAN&gt;(&lt;SPAN&gt;CenterStartPoint&lt;/SPAN&gt;.&lt;SPAN&gt;X&lt;/SPAN&gt; + 6 * 2.54, &lt;SPAN&gt;CenterStartPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Y&lt;/SPAN&gt;) &lt;SPAN&gt;'This creates the vertical placement point&lt;/SPAN&gt;

		&lt;SPAN&gt;CenterLine&lt;/SPAN&gt; = &lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;SketchLines&lt;/SPAN&gt;.&lt;SPAN&gt;AddByTwoPoints&lt;/SPAN&gt;(&lt;SPAN&gt;CenterStartPoint&lt;/SPAN&gt;, &lt;SPAN&gt;CenterEndPoint&lt;/SPAN&gt;)
			&lt;SPAN&gt;CenterLine&lt;/SPAN&gt;.&lt;SPAN&gt;Construction&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
			
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;AttrLineSetName&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"LineSet"&lt;/SPAN&gt;
			
			&lt;SPAN&gt;CenterLine&lt;/SPAN&gt;.&lt;SPAN&gt;AttributeSets&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;AttrLineSetName&lt;/SPAN&gt;)
			
		&lt;SPAN&gt;SharedVariable&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;"CenterLine"&lt;/SPAN&gt;) = &lt;SPAN&gt;CenterLine&lt;/SPAN&gt;	
			
	&lt;SPAN&gt;CenterFittingAxis&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;WorkAxes&lt;/SPAN&gt;.&lt;SPAN&gt;AddByLine&lt;/SPAN&gt;(&lt;SPAN&gt;CenterLine&lt;/SPAN&gt;)	
		&lt;SPAN&gt;CenterFittingAxis&lt;/SPAN&gt;.&lt;SPAN&gt;Visible&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt;
		
		&lt;SPAN&gt;SharedVariable&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;"CenterAxis"&lt;/SPAN&gt;) = &lt;SPAN&gt;CenterFittingAxis&lt;/SPAN&gt;

			&lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;GeometricConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddVerticalAlign&lt;/SPAN&gt;(&lt;SPAN&gt;CenterPoint&lt;/SPAN&gt;, &lt;SPAN&gt;CenterLine&lt;/SPAN&gt;.&lt;SPAN&gt;StartSketchPoint&lt;/SPAN&gt;)
			&lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;GeometricConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddHorizontal&lt;/SPAN&gt;(&lt;SPAN&gt;CenterLine&lt;/SPAN&gt;)
			
				&lt;SPAN&gt;FittingPlacementDim&lt;/SPAN&gt; = &lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;DimensionConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddTwoPointDistance&lt;/SPAN&gt;(&lt;SPAN&gt;CenterPoint&lt;/SPAN&gt;, &lt;SPAN&gt;CenterLine&lt;/SPAN&gt;.&lt;SPAN&gt;StartSketchPoint&lt;/SPAN&gt;, &lt;SPAN&gt;DimensionOrientationEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kVerticalDim&lt;/SPAN&gt;, &lt;SPAN&gt;oTG&lt;/SPAN&gt;.&lt;SPAN&gt;CreatePoint2d&lt;/SPAN&gt;(5, 5))
					&lt;SPAN&gt;FittingPlacementDim&lt;/SPAN&gt;.&lt;SPAN&gt;Parameter&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt; = &lt;SPAN&gt;Fitting_Placement&lt;/SPAN&gt; * 2.54
					
				&lt;SPAN&gt;FittingHeightDim&lt;/SPAN&gt; = &lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;DimensionConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddTwoPointDistance&lt;/SPAN&gt;(&lt;SPAN&gt;CenterLine&lt;/SPAN&gt;.&lt;SPAN&gt;StartSketchPoint&lt;/SPAN&gt;, &lt;SPAN&gt;CenterLine&lt;/SPAN&gt;.&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;, &lt;SPAN&gt;DimensionOrientationEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kHorizontalDim&lt;/SPAN&gt;, &lt;SPAN&gt;oTG&lt;/SPAN&gt;.&lt;SPAN&gt;CreatePoint2d&lt;/SPAN&gt;(10, -10))
			
			&lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;Solve&lt;/SPAN&gt;()
			
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;SFPoint&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Point2d&lt;/SPAN&gt; = &lt;SPAN&gt;oTG&lt;/SPAN&gt;.&lt;SPAN&gt;CreatePoint2d&lt;/SPAN&gt;(&lt;SPAN&gt;CenterLine&lt;/SPAN&gt;.&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;X&lt;/SPAN&gt;, &lt;SPAN&gt;CenterLine&lt;/SPAN&gt;.&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;Y&lt;/SPAN&gt; + (&lt;SPAN&gt;Flange_Size&lt;/SPAN&gt; / 2) * 2.54) &lt;SPAN&gt;'X is up and down, Y is left and right. &lt;/SPAN&gt;
			
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;SFPoint2&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Point2d&lt;/SPAN&gt; = &lt;SPAN&gt;oTG&lt;/SPAN&gt;.&lt;SPAN&gt;CreatePoint2d&lt;/SPAN&gt;(&lt;SPAN&gt;SFPoint&lt;/SPAN&gt;.&lt;SPAN&gt;X&lt;/SPAN&gt; - &lt;SPAN&gt;Flange_Head_Thickness&lt;/SPAN&gt; * 2.54, &lt;SPAN&gt;SFPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Y&lt;/SPAN&gt; + (&lt;SPAN&gt;Flange_Face_OD&lt;/SPAN&gt; - &lt;SPAN&gt;Flange_Size&lt;/SPAN&gt;) / 2 * 2.54)
		
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;TBPoint&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Point2d&lt;/SPAN&gt; = &lt;SPAN&gt;oTG&lt;/SPAN&gt;.&lt;SPAN&gt;CreatePoint2d&lt;/SPAN&gt;(&lt;SPAN&gt;SFPoint&lt;/SPAN&gt;.&lt;SPAN&gt;X&lt;/SPAN&gt; - 12 * 2.54, &lt;SPAN&gt;SFPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Y&lt;/SPAN&gt; + (&lt;SPAN&gt;Flange_Thickness&lt;/SPAN&gt; / 2) * 2.54) &lt;SPAN&gt;'This input distance will need to be changed when a downpipe is created.&lt;/SPAN&gt;
		
			&lt;SPAN&gt;FlgRect&lt;/SPAN&gt; = &lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;SketchLines&lt;/SPAN&gt;.&lt;SPAN&gt;AddAsTwoPointRectangle&lt;/SPAN&gt;(&lt;SPAN&gt;SFPoint&lt;/SPAN&gt;, &lt;SPAN&gt;SFPoint2&lt;/SPAN&gt;)
			
			&lt;SPAN&gt;TBRect&lt;/SPAN&gt; = &lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;SketchLines&lt;/SPAN&gt;.&lt;SPAN&gt;AddAsTwoPointRectangle&lt;/SPAN&gt;(&lt;SPAN&gt;SFPoint&lt;/SPAN&gt;, &lt;SPAN&gt;TBPoint&lt;/SPAN&gt;)
			
		&lt;SPAN&gt;FlangeIDDim&lt;/SPAN&gt; = &lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;DimensionConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddOffset&lt;/SPAN&gt;(&lt;SPAN&gt;FlgRect&lt;/SPAN&gt;(1), &lt;SPAN&gt;CenterLine&lt;/SPAN&gt;, &lt;SPAN&gt;oTG&lt;/SPAN&gt;.&lt;SPAN&gt;CreatePoint2d&lt;/SPAN&gt;(&lt;SPAN&gt;FlgRect&lt;/SPAN&gt;(1).&lt;SPAN&gt;StartSketchPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;X&lt;/SPAN&gt; + 2, &lt;SPAN&gt;FlgRect&lt;/SPAN&gt;(1).&lt;SPAN&gt;StartSketchPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;Y&lt;/SPAN&gt;  + &lt;SPAN&gt;Flange_Size&lt;/SPAN&gt; / 2 * 2.54), &lt;SPAN&gt;True&lt;/SPAN&gt;) 
		
		&lt;SPAN&gt;FlangeFaceODDim&lt;/SPAN&gt; = &lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;DimensionConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddOffset&lt;/SPAN&gt;(&lt;SPAN&gt;FlgRect&lt;/SPAN&gt;(3), &lt;SPAN&gt;CenterLine&lt;/SPAN&gt;, &lt;SPAN&gt;oTG&lt;/SPAN&gt;.&lt;SPAN&gt;CreatePoint2d&lt;/SPAN&gt;(&lt;SPAN&gt;FlgRect&lt;/SPAN&gt;(3).&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;x&lt;/SPAN&gt; + 4, &lt;SPAN&gt;FlgRect&lt;/SPAN&gt;(3).&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;Y&lt;/SPAN&gt; + &lt;SPAN&gt;Flange_Face_OD&lt;/SPAN&gt; / 2 * 2.54), &lt;SPAN&gt;True&lt;/SPAN&gt;)
		
		&lt;SPAN&gt;FlangeHeadThickDim&lt;/SPAN&gt; = &lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;DimensionConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddTwoPointDistance&lt;/SPAN&gt;(&lt;SPAN&gt;FlgRect&lt;/SPAN&gt;(3).&lt;SPAN&gt;StartSketchPoint&lt;/SPAN&gt;, &lt;SPAN&gt;FlgRect&lt;/SPAN&gt;(3).&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;, &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;DimensionOrientationEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kHorizontalDim&lt;/SPAN&gt;, &lt;SPAN&gt;oTG&lt;/SPAN&gt;.&lt;SPAN&gt;CreatePoint2d&lt;/SPAN&gt;(&lt;SPAN&gt;FlgRect&lt;/SPAN&gt;(3).&lt;SPAN&gt;StartSketchPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;X&lt;/SPAN&gt; + &lt;SPAN&gt;Flange__Head_Thickness&lt;/SPAN&gt; / 2, &lt;SPAN&gt;FlgRect&lt;/SPAN&gt;(3).&lt;SPAN&gt;StartSketchPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;Y&lt;/SPAN&gt; - 2))
		
		&lt;SPAN&gt;FlangeThickDim&lt;/SPAN&gt; = &lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;DimensionConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddTwoPointDistance&lt;/SPAN&gt;(&lt;SPAN&gt;TbRect&lt;/SPAN&gt;(2).&lt;SPAN&gt;StartSketchPoint&lt;/SPAN&gt;, &lt;SPAN&gt;TbRect&lt;/SPAN&gt;(2).&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;, &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;DimensionOrientationEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kVerticalDim&lt;/SPAN&gt;, &lt;SPAN&gt;oTG&lt;/SPAN&gt;.&lt;SPAN&gt;CreatePoint2d&lt;/SPAN&gt;(&lt;SPAN&gt;TBrect&lt;/SPAN&gt;(2).&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;X&lt;/SPAN&gt; - &lt;SPAN&gt;Flange_Thickness&lt;/SPAN&gt; / 4, &lt;SPAN&gt;TBRect&lt;/SPAN&gt;(2).&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;Y&lt;/SPAN&gt; - 2))
		
			&lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;GeometricConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddCoincident&lt;/SPAN&gt;(&lt;SPAN&gt;FlgRect&lt;/SPAN&gt;(1).&lt;SPAN&gt;StartSketchPoint&lt;/SPAN&gt;, &lt;SPAN&gt;TBRect&lt;/SPAN&gt;(4))
			&lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;GeometricConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddCoincident&lt;/SPAN&gt;(&lt;SPAN&gt;FlgRect&lt;/SPAN&gt;(1).&lt;SPAN&gt;StartSketchPoint&lt;/SPAN&gt;, &lt;SPAN&gt;TBRect&lt;/SPAN&gt;(1))
			&lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;GeometricConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddVerticalAlign&lt;/SPAN&gt;(&lt;SPAN&gt;FlgRect&lt;/SPAN&gt;(1).&lt;SPAN&gt;StartSketchPoint&lt;/SPAN&gt;, &lt;SPAN&gt;CenterLine&lt;/SPAN&gt;.&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;)
		
		&lt;SPAN&gt;FittingDisDim&lt;/SPAN&gt; = &lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;DimensionConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddTwoPointDistance&lt;/SPAN&gt;(&lt;SPAN&gt;TBRect&lt;/SPAN&gt;(1).&lt;SPAN&gt;StartSketchPoint&lt;/SPAN&gt;, &lt;SPAN&gt;TBRect&lt;/SPAN&gt;(1).&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;, &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;DimensionOrientationEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kHorizontalDim&lt;/SPAN&gt;, &lt;SPAN&gt;oTG&lt;/SPAN&gt;.&lt;SPAN&gt;CreatePoint2d&lt;/SPAN&gt;(&lt;SPAN&gt;TBRect&lt;/SPAN&gt;(1).&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;X&lt;/SPAN&gt; + 6, &lt;SPAN&gt;TBRect&lt;/SPAN&gt;(1).&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;Y&lt;/SPAN&gt; + 2))
			&lt;SPAN&gt;FittingDisDim&lt;/SPAN&gt;.&lt;SPAN&gt;Parameter&lt;/SPAN&gt;.&lt;SPAN&gt;Expression&lt;/SPAN&gt; = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Fitting_Proj"&lt;/SPAN&gt;
			
		&lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;DeferUpdates&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt;	
		
		&lt;SPAN&gt;DisplayTimer&lt;/SPAN&gt;(&lt;SPAN&gt;iWatch&lt;/SPAN&gt;, &lt;SPAN&gt;"Flange sketch objects created"&lt;/SPAN&gt;, &lt;SPAN&gt;PreviousTime&lt;/SPAN&gt;) 
		
						&lt;SPAN&gt;'Apply expressions to the flange revolve creation&lt;/SPAN&gt;
						&lt;SPAN&gt;FittingPlacementDim&lt;/SPAN&gt;.&lt;SPAN&gt;Parameter&lt;/SPAN&gt;.&lt;SPAN&gt;Expression&lt;/SPAN&gt; = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Fitting_Placement"&lt;/SPAN&gt;
						&lt;SPAN&gt;FittingHeightDim&lt;/SPAN&gt;.&lt;SPAN&gt;Parameter&lt;/SPAN&gt;.&lt;SPAN&gt;Expression&lt;/SPAN&gt; = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Fitting_Height"&lt;/SPAN&gt;
						&lt;SPAN&gt;FlangeIDDim&lt;/SPAN&gt;.&lt;SPAN&gt;Parameter&lt;/SPAN&gt;.&lt;SPAN&gt;Expression&lt;/SPAN&gt; = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Flange_Size"&lt;/SPAN&gt;
						&lt;SPAN&gt;FlangeFaceODDim&lt;/SPAN&gt;.&lt;SPAN&gt;Parameter&lt;/SPAN&gt;.&lt;SPAN&gt;Expression&lt;/SPAN&gt; = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Flange_Face_OD"&lt;/SPAN&gt;
						&lt;SPAN&gt;FlangeHeadThickDim&lt;/SPAN&gt;.&lt;SPAN&gt;Parameter&lt;/SPAN&gt;.&lt;SPAN&gt;Expression&lt;/SPAN&gt; = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Flange_Head_Thickness"&lt;/SPAN&gt;
						&lt;SPAN&gt;FlangeThickDim&lt;/SPAN&gt;.&lt;SPAN&gt;Parameter&lt;/SPAN&gt;.&lt;SPAN&gt;Expression&lt;/SPAN&gt; = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Flange_Thickness / 2"&lt;/SPAN&gt;
			
			
		&lt;SPAN&gt;DisplayTimer&lt;/SPAN&gt;(&lt;SPAN&gt;iWatch&lt;/SPAN&gt;, &lt;SPAN&gt;"Flange sketch Expressions assigned"&lt;/SPAN&gt;, &lt;SPAN&gt;PreviousTime&lt;/SPAN&gt;) 
		
			&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;UpperDpFlg&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt; &lt;SPAN&gt;Or&lt;/SPAN&gt; &lt;SPAN&gt;LowerDpFlg&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; 
				
					&lt;SPAN&gt;'Create the UCS lines that represent the UCS placement for downpipes&lt;/SPAN&gt;
					&lt;SPAN&gt;TopUCSLine&lt;/SPAN&gt; = &lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;SketchLines&lt;/SPAN&gt;.&lt;SPAN&gt;AddByTwoPoints&lt;/SPAN&gt;(&lt;SPAN&gt;CenterLine&lt;/SPAN&gt;.&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;, &lt;SPAN&gt;oTG&lt;/SPAN&gt;.&lt;SPAN&gt;CreatePoint2d&lt;/SPAN&gt;(&lt;SPAN&gt;CenterLine&lt;/SPAN&gt;.&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;X&lt;/SPAN&gt;, &lt;SPAN&gt;CenterLine&lt;/SPAN&gt;.&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;Y&lt;/SPAN&gt; + 2.54))	
						&lt;SPAN&gt;TopUCSLine&lt;/SPAN&gt;.&lt;SPAN&gt;Construction&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
					
						&lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;GeometricConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddVertical&lt;/SPAN&gt;(&lt;SPAN&gt;TopUCSLine&lt;/SPAN&gt;)
						
					&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;MiddleBotPoint&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Point2d&lt;/SPAN&gt; = &lt;SPAN&gt;oTG&lt;/SPAN&gt;.&lt;SPAN&gt;CreatePoint2d&lt;/SPAN&gt;(&lt;SPAN&gt;CenterLine&lt;/SPAN&gt;.&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;X&lt;/SPAN&gt; - 12 * 2.54, &lt;SPAN&gt;CenterLine&lt;/SPAN&gt;.&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;Y&lt;/SPAN&gt;)	
					
					&lt;SPAN&gt;BotUCSLine&lt;/SPAN&gt; = &lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;SketchLines&lt;/SPAN&gt;.&lt;SPAN&gt;AddByTwoPoints&lt;/SPAN&gt;(&lt;SPAN&gt;MiddleBotPoint&lt;/SPAN&gt;, &lt;SPAN&gt;oTG&lt;/SPAN&gt;.&lt;SPAN&gt;CreatePoint2d&lt;/SPAN&gt;(&lt;SPAN&gt;CenterLine&lt;/SPAN&gt;.&lt;SPAN&gt;StartSketchPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;X&lt;/SPAN&gt;, &lt;SPAN&gt;CenterLine&lt;/SPAN&gt;.&lt;SPAN&gt;StartSketchPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;Y&lt;/SPAN&gt; + 2.54))
						&lt;SPAN&gt;BotUCSLine&lt;/SPAN&gt;.&lt;SPAN&gt;Construction&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
						
						&lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;GeometricConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddCoincident&lt;/SPAN&gt;(&lt;SPAN&gt;BotUCSLine&lt;/SPAN&gt;.&lt;SPAN&gt;StartSketchPoint&lt;/SPAN&gt;, &lt;SPAN&gt;CenterLine&lt;/SPAN&gt;)
						&lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;GeometricConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddVertical&lt;/SPAN&gt;(&lt;SPAN&gt;BotUCSLine&lt;/SPAN&gt;)
						&lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;GeometricConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddVerticalAlign&lt;/SPAN&gt;(&lt;SPAN&gt;BotUCSLine&lt;/SPAN&gt;.&lt;SPAN&gt;StartSketchPoint&lt;/SPAN&gt;, &lt;SPAN&gt;TbRect&lt;/SPAN&gt;(2).&lt;SPAN&gt;StartSketchPoint&lt;/SPAN&gt;)
						&lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;GeometricConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddHorizontalAlign&lt;/SPAN&gt;(&lt;SPAN&gt;TopUCSLine&lt;/SPAN&gt;.&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;, &lt;SPAN&gt;BotUCSLine&lt;/SPAN&gt;.&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;)
						
					&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;TopSketchPoint&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SketchPoint&lt;/SPAN&gt; = &lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;SketchPoints&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;oTG&lt;/SPAN&gt;.&lt;SPAN&gt;CreatePoint2d&lt;/SPAN&gt;(&lt;SPAN&gt;CenterLine&lt;/SPAN&gt;.&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;X&lt;/SPAN&gt; + 2.54, &lt;SPAN&gt;CenterLine&lt;/SPAN&gt;.&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;Y&lt;/SPAN&gt;))	
							
						&lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;GeometricConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddHorizontalAlign&lt;/SPAN&gt;(&lt;SPAN&gt;TopSketchPoint&lt;/SPAN&gt;, &lt;SPAN&gt;CenterLine&lt;/SPAN&gt;.&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;)	
						
					&lt;SPAN&gt;CreateDpUCS&lt;/SPAN&gt;(&lt;SPAN&gt;UpperDpFlg&lt;/SPAN&gt;, &lt;SPAN&gt;LowerDpFlg&lt;/SPAN&gt;, &lt;SPAN&gt;TopUCSLine&lt;/SPAN&gt;, &lt;SPAN&gt;BotUCSLine&lt;/SPAN&gt;, &lt;SPAN&gt;TopSketchPoint&lt;/SPAN&gt;, &lt;SPAN&gt;FlangeType&lt;/SPAN&gt;, &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;, &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt;)	
						
			&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;		
				
	&lt;SPAN&gt;DisplayTimer&lt;/SPAN&gt;(&lt;SPAN&gt;iWatch&lt;/SPAN&gt;, &lt;SPAN&gt;"Downpipe block"&lt;/SPAN&gt;, &lt;SPAN&gt;PreviousTime&lt;/SPAN&gt;)	
	
&lt;SPAN&gt;'Catch Err As Exception &lt;/SPAN&gt;
&lt;SPAN&gt;'	Call ReportError("Encountered problem creating horizontal placement sketch", Err, FittingTransaction)	&lt;/SPAN&gt;
&lt;SPAN&gt;'End Try		&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;BackFace&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Face&lt;/SPAN&gt;, &lt;SPAN&gt;TopFace&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Face&lt;/SPAN&gt; 

	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;GussetBoltPlane&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;WorkPlane&lt;/SPAN&gt;, &lt;SPAN&gt;GusBoltSketch&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PlanarSketch&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;CenterAxisLine&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SketchLine&lt;/SPAN&gt;, &lt;SPAN&gt;InnerCircle&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SketchCircle&lt;/SPAN&gt;, &lt;SPAN&gt;OuterCircle&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SketchCircle&lt;/SPAN&gt;, &lt;SPAN&gt;BoltCircle&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SketchCircle&lt;/SPAN&gt;, &lt;SPAN&gt;BoltAngleLine&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SketchLine&lt;/SPAN&gt;, &lt;SPAN&gt;StartPlateLine&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SketchLine&lt;/SPAN&gt;, &lt;SPAN&gt;EndPlateLine&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SketchLine&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;EndPlateEnum&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SketchEntitiesEnumerator&lt;/SPAN&gt; 
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;BoltCirDim&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DimensionConstraint&lt;/SPAN&gt;, &lt;SPAN&gt;BoltAngleDim&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DimensionConstraint&lt;/SPAN&gt;, &lt;SPAN&gt;PlateOffsetDim&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DimensionConstraint&lt;/SPAN&gt;, &lt;SPAN&gt;InnerCirDim&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DimensionConstraint&lt;/SPAN&gt;, &lt;SPAN&gt;OutCirDim&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DimensionConstraint&lt;/SPAN&gt;, &lt;SPAN&gt;OffsetTest&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DimensionConstraint&lt;/SPAN&gt;, &lt;SPAN&gt;OffsetTest2&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DimensionConstraint&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;GusAngleDim&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DimensionConstraint&lt;/SPAN&gt; 
	
&lt;SPAN&gt;'	Try&lt;/SPAN&gt;
					&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;TopPlane&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;WorkPlane&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;WorkPlanes&lt;/SPAN&gt;.&lt;SPAN&gt;AddByPlaneAndPoint&lt;/SPAN&gt;(&lt;SPAN&gt;oUCS&lt;/SPAN&gt;.&lt;SPAN&gt;XZPlane&lt;/SPAN&gt;, &lt;SPAN&gt;CenterLine&lt;/SPAN&gt;.&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;)
						&lt;SPAN&gt;TopPlane&lt;/SPAN&gt;.&lt;SPAN&gt;Visible&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt;
						&lt;SPAN&gt;TopPlane&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" Top Plane"&lt;/SPAN&gt;
						&lt;SPAN&gt;SharedVariable&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;"TopPlane"&lt;/SPAN&gt;) = &lt;SPAN&gt;TopPlane&lt;/SPAN&gt;
						
						&lt;SPAN&gt;GussetPlane&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;WorkPlanes&lt;/SPAN&gt;.&lt;SPAN&gt;AddByPlaneAndOffset&lt;/SPAN&gt;(&lt;SPAN&gt;TopPlane&lt;/SPAN&gt;, -2 * 2.54)
							&lt;SPAN&gt;GussetPlane&lt;/SPAN&gt;.&lt;SPAN&gt;Visible&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt;
							
						&lt;SPAN&gt;GusBoltSketch&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;Sketches&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;GussetPlane&lt;/SPAN&gt;)
							&lt;SPAN&gt;GusBoltSketch&lt;/SPAN&gt;.&lt;SPAN&gt;DeferUpdates&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
						
						&lt;SPAN&gt;CenterAxisLine&lt;/SPAN&gt; = &lt;SPAN&gt;GusBoltSketch&lt;/SPAN&gt;.&lt;SPAN&gt;AddByProjectingEntity&lt;/SPAN&gt;(&lt;SPAN&gt;oUCS&lt;/SPAN&gt;.&lt;SPAN&gt;YZPlane&lt;/SPAN&gt;)
							&lt;SPAN&gt;CenterAxisLine&lt;/SPAN&gt;.&lt;SPAN&gt;Construction&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
						
							&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;GusBoltCenterStart&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;SketchPoint&lt;/SPAN&gt; = &lt;SPAN&gt;GusBoltSketch&lt;/SPAN&gt;.&lt;SPAN&gt;AddByProjectingEntity&lt;/SPAN&gt;(&lt;SPAN&gt;CenterFittingAxis&lt;/SPAN&gt;)
							
								&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;GUSCENX&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;GusBoltCenterStart&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;X&lt;/SPAN&gt; &lt;SPAN&gt;'These two double values are to pull the direct point locations from the center. &lt;/SPAN&gt;
								&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;GYSCENY&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;GusBoltCenterStart&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;Y&lt;/SPAN&gt;
							
							&lt;SPAN&gt;InnerCircle&lt;/SPAN&gt; = &lt;SPAN&gt;GusBoltSketch&lt;/SPAN&gt;.&lt;SPAN&gt;SketchCircles&lt;/SPAN&gt;.&lt;SPAN&gt;AddByCenterRadius&lt;/SPAN&gt;(&lt;SPAN&gt;GusBoltCenterStart&lt;/SPAN&gt;, (&lt;SPAN&gt;Flange_Size&lt;/SPAN&gt; + &lt;SPAN&gt;Flange_Thickness&lt;/SPAN&gt;) / 2 * 2.54)
				
							&lt;SPAN&gt;InnerCirDim&lt;/SPAN&gt; = &lt;SPAN&gt;GusBoltSketch&lt;/SPAN&gt;.&lt;SPAN&gt;DimensionConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddDiameter&lt;/SPAN&gt;(&lt;SPAN&gt;InnerCircle&lt;/SPAN&gt;, &lt;SPAN&gt;oTG&lt;/SPAN&gt;.&lt;SPAN&gt;CreatePoint2d&lt;/SPAN&gt;(5, 5))
					
							&lt;SPAN&gt;BoltCircle&lt;/SPAN&gt; = &lt;SPAN&gt;GusBoltSketch&lt;/SPAN&gt;.&lt;SPAN&gt;SketchCircles&lt;/SPAN&gt;.&lt;SPAN&gt;AddByCenterRadius&lt;/SPAN&gt;(&lt;SPAN&gt;GusBoltCenterStart&lt;/SPAN&gt;, &lt;SPAN&gt;Bolt_Circle&lt;/SPAN&gt; / 2 * 2.54)
								&lt;SPAN&gt;BoltCircle&lt;/SPAN&gt;.&lt;SPAN&gt;Construction&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
								
								&lt;SPAN&gt;GusBoltSketch&lt;/SPAN&gt;.&lt;SPAN&gt;GeometricConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddConcentric&lt;/SPAN&gt;(&lt;SPAN&gt;BoltCircle&lt;/SPAN&gt;, &lt;SPAN&gt;InnerCircle&lt;/SPAN&gt;)
								&lt;SPAN&gt;GusBoltSketch&lt;/SPAN&gt;.&lt;SPAN&gt;GeometricConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddCoincident&lt;/SPAN&gt;(&lt;SPAN&gt;InnerCircle&lt;/SPAN&gt;.&lt;SPAN&gt;CenterSketchPoint&lt;/SPAN&gt;, &lt;SPAN&gt;GusBoltCenterStart&lt;/SPAN&gt;)
				
					&lt;SPAN&gt;DisplayTimer&lt;/SPAN&gt;(&lt;SPAN&gt;iWatch&lt;/SPAN&gt;, &lt;SPAN&gt;"GusBoltSketch projections complete"&lt;/SPAN&gt;, &lt;SPAN&gt;PreviousTime&lt;/SPAN&gt;)		
							
								&lt;SPAN&gt;BoltCirDim&lt;/SPAN&gt; = &lt;SPAN&gt;GusBoltSketch&lt;/SPAN&gt;.&lt;SPAN&gt;DimensionConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddDiameter&lt;/SPAN&gt;(&lt;SPAN&gt;BoltCircle&lt;/SPAN&gt;, &lt;SPAN&gt;oTG&lt;/SPAN&gt;.&lt;SPAN&gt;CreatePoint2d&lt;/SPAN&gt;(&lt;SPAN&gt;GUSCENX&lt;/SPAN&gt; - 6, &lt;SPAN&gt;GYSCENY&lt;/SPAN&gt; - 6))
								
							&lt;SPAN&gt;BoltAngleLine&lt;/SPAN&gt; = &lt;SPAN&gt;GusBoltSketch&lt;/SPAN&gt;.&lt;SPAN&gt;SketchLines&lt;/SPAN&gt;.&lt;SPAN&gt;AddByTwoPoints&lt;/SPAN&gt;(&lt;SPAN&gt;GusBoltCenterStart&lt;/SPAN&gt;, &lt;SPAN&gt;oTG&lt;/SPAN&gt;.&lt;SPAN&gt;CreatePoint2d&lt;/SPAN&gt;(&lt;SPAN&gt;GUSCENX&lt;/SPAN&gt; - 5, &lt;SPAN&gt;GYSCENY&lt;/SPAN&gt; - 5))	
								&lt;SPAN&gt;BoltAngleLine&lt;/SPAN&gt;.&lt;SPAN&gt;Construction&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
							
								&lt;SPAN&gt;GusBoltSketch&lt;/SPAN&gt;.&lt;SPAN&gt;GeometricConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddCoincident&lt;/SPAN&gt;(&lt;SPAN&gt;BoltAngleLine&lt;/SPAN&gt;.&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;, &lt;SPAN&gt;BoltCircle&lt;/SPAN&gt;)
								
								&lt;SPAN&gt;SharedVariable&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;(&lt;SPAN&gt;"BoltPoint"&lt;/SPAN&gt;) = &lt;SPAN&gt;BoltAngleLine&lt;/SPAN&gt;.&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt; 
								
								&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;AttrPointSetName&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"boltset"&lt;/SPAN&gt;
								
								&lt;SPAN&gt;BoltAngleLine&lt;/SPAN&gt;.&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;.&lt;SPAN&gt;AttributeSets&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;AttrPointSetName&lt;/SPAN&gt;)
								
							&lt;SPAN&gt;'	For Each oSet As AttributeSet In BoltAngleLine.EndSketchPoint.AttributeSets 'This point gets an attribute in order to confirm the bolt hole location as requried. &lt;/SPAN&gt;
							&lt;SPAN&gt;'	    Logger.Info("Set name: " &amp;amp; oSet.Name)&lt;/SPAN&gt;
							&lt;SPAN&gt;'	Next&lt;/SPAN&gt;
								
							&lt;SPAN&gt;BoltAngleDim&lt;/SPAN&gt; = &lt;SPAN&gt;GusBoltSketch&lt;/SPAN&gt;.&lt;SPAN&gt;DimensionConstraints&lt;/SPAN&gt;.&lt;SPAN&gt;AddTwoLineAngle&lt;/SPAN&gt;(&lt;SPAN&gt;CenterAxisLine&lt;/SPAN&gt;, &lt;SPAN&gt;BoltAngleLine&lt;/SPAN&gt;, &lt;SPAN&gt;oTG&lt;/SPAN&gt;.&lt;SPAN&gt;CreatePoint2d&lt;/SPAN&gt;(&lt;SPAN&gt;GusBoltCenterStart&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;X&lt;/SPAN&gt; -3, &lt;SPAN&gt;GusBoltCenterStart&lt;/SPAN&gt;.&lt;SPAN&gt;Geometry&lt;/SPAN&gt;.&lt;SPAN&gt;Y&lt;/SPAN&gt; -25))&lt;SPAN&gt;'oTG.CreatePoint2d(StartPlateLine.StartSketchPoint.Geometry.X - 3, StartPlateLine.StartSketchPoint.Geometry.Y - 25))&lt;/SPAN&gt;
								&lt;SPAN&gt;BoltAngleDim&lt;/SPAN&gt;.&lt;SPAN&gt;Parameter&lt;/SPAN&gt;.&lt;SPAN&gt;Expression&lt;/SPAN&gt; = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Bolt_Angle -"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Plate_Gus_Angle"&lt;/SPAN&gt;
								
					&lt;SPAN&gt;GusBoltSketch&lt;/SPAN&gt;.&lt;SPAN&gt;DeferUpdates&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt;
						
					&lt;SPAN&gt;DisplayTimer&lt;/SPAN&gt;(&lt;SPAN&gt;iWatch&lt;/SPAN&gt;, &lt;SPAN&gt;"Gusset + bolt sketch created"&lt;/SPAN&gt;, &lt;SPAN&gt;PreviousTime&lt;/SPAN&gt;) 
				
									&lt;SPAN&gt;InnerCirDim&lt;/SPAN&gt;.&lt;SPAN&gt;Parameter&lt;/SPAN&gt;.&lt;SPAN&gt;Expression&lt;/SPAN&gt; = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Flange_Size + "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Flange_Thickness"&lt;/SPAN&gt;
							
									&lt;SPAN&gt;BoltCirDim&lt;/SPAN&gt;.&lt;SPAN&gt;Parameter&lt;/SPAN&gt;.&lt;SPAN&gt;Expression&lt;/SPAN&gt; = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Bolt_Circle"&lt;/SPAN&gt;
					
			&lt;SPAN&gt;DisplayTimer&lt;/SPAN&gt;(&lt;SPAN&gt;iWatch&lt;/SPAN&gt;, &lt;SPAN&gt;"Gusset expressions assigned"&lt;/SPAN&gt;, &lt;SPAN&gt;PreviousTime&lt;/SPAN&gt;)	
							
&lt;SPAN&gt;'	Catch Err As Exception &lt;/SPAN&gt;
&lt;SPAN&gt;'		Call ReportError("Issue creating bolt / gusset sketch", Err, FittingTransaction)			&lt;/SPAN&gt;
&lt;SPAN&gt;'	End Try			&lt;/SPAN&gt;

	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;FlangeCol&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt; = &lt;SPAN&gt;oTO&lt;/SPAN&gt;.&lt;SPAN&gt;CreateObjectCollection&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;FittingProfile&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Profile&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;FlangeRevolve&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;RevolveFeature&lt;/SPAN&gt;
		
&lt;SPAN&gt;'	Try&lt;/SPAN&gt;
			&lt;SPAN&gt;FittingProfile&lt;/SPAN&gt; = &lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;Profiles&lt;/SPAN&gt;.&lt;SPAN&gt;AddForSolid&lt;/SPAN&gt;
			
			&lt;SPAN&gt;FlangeRevolve&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;Features&lt;/SPAN&gt;.&lt;SPAN&gt;RevolveFeatures&lt;/SPAN&gt;.&lt;SPAN&gt;AddFull&lt;/SPAN&gt;(&lt;SPAN&gt;FittingProfile&lt;/SPAN&gt;, &lt;SPAN&gt;CenterLine&lt;/SPAN&gt;, &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;PartFeatureOperationEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kNewBodyOperation&lt;/SPAN&gt;)
		
		&lt;SPAN&gt;DisplayTimer&lt;/SPAN&gt;(&lt;SPAN&gt;iWatch&lt;/SPAN&gt;, &lt;SPAN&gt;"Flange revolve finished"&lt;/SPAN&gt;, &lt;SPAN&gt;PreviousTime&lt;/SPAN&gt;)		
		
&lt;SPAN&gt;'	Catch Err As Exception &lt;/SPAN&gt;
&lt;SPAN&gt;'		Call ReportError("Encountered problem creating horizontal placement sketch", Err, FittingTransaction)			&lt;/SPAN&gt;
&lt;SPAN&gt;'	End Try	&lt;/SPAN&gt;
	
	&lt;SPAN&gt;oUCS&lt;/SPAN&gt;.&lt;SPAN&gt;YAngle&lt;/SPAN&gt;.&lt;SPAN&gt;Expression&lt;/SPAN&gt; = &lt;SPAN&gt;"180 +"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Fitting_Angle"&lt;/SPAN&gt; &lt;SPAN&gt;'Rotate the UCS to the correct orientation before setting the trim, or holes&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;BoltHoleCol&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt; = &lt;SPAN&gt;oTO&lt;/SPAN&gt;.&lt;SPAN&gt;CreateObjectCollection&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;BoltPointCol&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt; = &lt;SPAN&gt;oTO&lt;/SPAN&gt;.&lt;SPAN&gt;CreateObjectCollection&lt;/SPAN&gt; &lt;SPAN&gt;'This object collection holds the primary sketch object we create the hole from. &lt;/SPAN&gt;
		&lt;SPAN&gt;BoltPointCol&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;BoltAngleLine&lt;/SPAN&gt;.&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;)	
			
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;BoltHoleDef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;HolePlacementDefinition&lt;/SPAN&gt;, &lt;SPAN&gt;BoltHole&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;HoleFeature&lt;/SPAN&gt; &lt;SPAN&gt;'The objects that make up the defintion and application of the bolt hole on the object&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;BoltCirPatDef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;CircularPatternFeatureDefinition&lt;/SPAN&gt;, &lt;SPAN&gt;BoltCirPat&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;CircularPatternFeature&lt;/SPAN&gt;
							
&lt;SPAN&gt;'	Try						&lt;/SPAN&gt;
				
					&lt;SPAN&gt;BoltHoleDef&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;Features&lt;/SPAN&gt;.&lt;SPAN&gt;HoleFeatures&lt;/SPAN&gt;.&lt;SPAN&gt;CreateSketchPlacementDefinition&lt;/SPAN&gt;(&lt;SPAN&gt;BoltPointCol&lt;/SPAN&gt;)
					
					&lt;SPAN&gt;BoltHole&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;Features&lt;/SPAN&gt;.&lt;SPAN&gt;HoleFeatures&lt;/SPAN&gt;.&lt;SPAN&gt;AddDrilledByThroughAllExtent&lt;/SPAN&gt;(&lt;SPAN&gt;BoltHoleDef&lt;/SPAN&gt;, &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Bolt_Dia"&lt;/SPAN&gt;, &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;PartFeatureExtentDirectionEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kSymmetricExtentDirection&lt;/SPAN&gt;)	&lt;SPAN&gt;'AddDrilledByDistanceExtent2(BoltHoleDef, Bolt_Dia * 2.54, "6 in", Inventor.PartFeatureExtentDirectionEnum.kNegativeExtentDirection)			'AddDrilledByToFaceExtent2(BoltHoleDef, FittingNameInput &amp;amp; "_Bolt_Dia", FlangeRevolve.Faces.Item(4), True)&lt;/SPAN&gt;
					
						&lt;SPAN&gt;FlangeCol&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;FlangeRevolve&lt;/SPAN&gt;.&lt;SPAN&gt;SurfaceBodies&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(1))					
					
						&lt;SPAN&gt;BoltHole&lt;/SPAN&gt;.&lt;SPAN&gt;SetAffectedBodies&lt;/SPAN&gt;(&lt;SPAN&gt;FlangeCol&lt;/SPAN&gt;)
						
						&lt;SPAN&gt;BoltHoleCol&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;BoltHole&lt;/SPAN&gt;)
						
				&lt;SPAN&gt;DisplayTimer&lt;/SPAN&gt;(&lt;SPAN&gt;iWatch&lt;/SPAN&gt;, &lt;SPAN&gt;"Bolt hole created"&lt;/SPAN&gt;, &lt;SPAN&gt;PreviousTime&lt;/SPAN&gt;)		
						
					&lt;SPAN&gt;BoltCirPatDef&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;Features&lt;/SPAN&gt;.&lt;SPAN&gt;CircularPatternFeatures&lt;/SPAN&gt;.&lt;SPAN&gt;CreateDefinition&lt;/SPAN&gt;(&lt;SPAN&gt;BoltHoleCol&lt;/SPAN&gt;, &lt;SPAN&gt;CenterFittingAxis&lt;/SPAN&gt;, &lt;SPAN&gt;True&lt;/SPAN&gt;, &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_Num_Of_Bolts"&lt;/SPAN&gt;, &lt;SPAN&gt;"360"&lt;/SPAN&gt;)
						&lt;SPAN&gt;BoltCirPatDef&lt;/SPAN&gt;.&lt;SPAN&gt;ComputeType&lt;/SPAN&gt; = &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;PatternComputeTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kOptimizedCompute&lt;/SPAN&gt;
					
					&lt;SPAN&gt;BoltCirPat&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;Features&lt;/SPAN&gt;.&lt;SPAN&gt;CircularPatternFeatures&lt;/SPAN&gt;.&lt;SPAN&gt;AddByDefinition&lt;/SPAN&gt;(&lt;SPAN&gt;BoltCirPatDef&lt;/SPAN&gt;)

				&lt;SPAN&gt;DisplayTimer&lt;/SPAN&gt;(&lt;SPAN&gt;iWatch&lt;/SPAN&gt;, &lt;SPAN&gt;"Bolt and pattern created"&lt;/SPAN&gt;, &lt;SPAN&gt;PreviousTime&lt;/SPAN&gt;)	 
									
&lt;SPAN&gt;'	Catch Err As Exception &lt;/SPAN&gt;
&lt;SPAN&gt;'		Call ReportError("Unable to create bolt hole or bolt pattern", Err, FittingTransaction)			&lt;/SPAN&gt;
&lt;SPAN&gt;'	End Try									&lt;/SPAN&gt;
			
	&lt;SPAN&gt;'Start the creation of the tank hole. &lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;TankCutExtDef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ExtrudeDefinition&lt;/SPAN&gt;, &lt;SPAN&gt;TankCutExt&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ExtrudeFeature&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;InnerCirCol&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ObjectCollection&lt;/SPAN&gt; = &lt;SPAN&gt;oTO&lt;/SPAN&gt;.&lt;SPAN&gt;CreateObjectCollection&lt;/SPAN&gt;	
	
&lt;SPAN&gt;'					Try									&lt;/SPAN&gt;
										
							&lt;SPAN&gt;InnerCirCol&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;InnerCircle&lt;/SPAN&gt;) &lt;SPAN&gt;'Add the circle cut sketch object to be used.&lt;/SPAN&gt;
								
							&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;TankHoleProfile&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Profile&lt;/SPAN&gt; = &lt;SPAN&gt;GusBoltSketch&lt;/SPAN&gt;.&lt;SPAN&gt;Profiles&lt;/SPAN&gt;.&lt;SPAN&gt;AddForSolid&lt;/SPAN&gt;(&lt;SPAN&gt;False&lt;/SPAN&gt;, &lt;SPAN&gt;InnerCirCol&lt;/SPAN&gt;)
							
							&lt;SPAN&gt;TankCutExtDef&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;Features&lt;/SPAN&gt;.&lt;SPAN&gt;ExtrudeFeatures&lt;/SPAN&gt;.&lt;SPAN&gt;CreateExtrudeDefinition&lt;/SPAN&gt;(&lt;SPAN&gt;TankHoleProfile&lt;/SPAN&gt;, &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;PartFeatureOperationEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kCutOperation&lt;/SPAN&gt;)
								&lt;SPAN&gt;TankCutExtDef&lt;/SPAN&gt;.&lt;SPAN&gt;SetDistanceExtent&lt;/SPAN&gt;(24 * 2.54 , &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;PartFeatureExtentDirectionEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kNegativeExtentDirection&lt;/SPAN&gt;)
						
							&lt;SPAN&gt;TankCutExt&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;Features&lt;/SPAN&gt;.&lt;SPAN&gt;ExtrudeFeatures&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;TankCutExtDef&lt;/SPAN&gt;)
						
								&lt;SPAN&gt;TankCutExt&lt;/SPAN&gt;.&lt;SPAN&gt;SetAffectedBodies&lt;/SPAN&gt;(&lt;SPAN&gt;TankBodyCol&lt;/SPAN&gt;)
										
							&lt;SPAN&gt;DisplayTimer&lt;/SPAN&gt;(&lt;SPAN&gt;iWatch&lt;/SPAN&gt;, &lt;SPAN&gt;"Tank hole created - Last time measurement before gussets"&lt;/SPAN&gt;, &lt;SPAN&gt;PreviousTime&lt;/SPAN&gt;)	
							
&lt;SPAN&gt;'					Catch Err As Exception &lt;/SPAN&gt;
&lt;SPAN&gt;'						Call ReportError("Unable to cut tank hole", Err, FittingTransaction)			&lt;/SPAN&gt;
&lt;SPAN&gt;'					End Try		&lt;/SPAN&gt;
					
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;TankTrim&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;CombineFeature&lt;/SPAN&gt;	
	
&lt;SPAN&gt;'		Try&lt;/SPAN&gt;
			&lt;SPAN&gt;TankTrim&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;Features&lt;/SPAN&gt;.&lt;SPAN&gt;CombineFeatures&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;FlangeRevolve&lt;/SPAN&gt;.&lt;SPAN&gt;SurfaceBodies&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(1), &lt;SPAN&gt;InsideBodyCol&lt;/SPAN&gt;, &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;PartFeatureOperationEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kCutOperation&lt;/SPAN&gt;, &lt;SPAN&gt;True&lt;/SPAN&gt;)
&lt;SPAN&gt;'		Catch Err As Exception &lt;/SPAN&gt;
&lt;SPAN&gt;'			Call ReportError("Failed to apply tank trim", Err, FittingTransaction)			&lt;/SPAN&gt;
&lt;SPAN&gt;'		End Try	&lt;/SPAN&gt;
		
			&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Trim_Fitting_Tube&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; &lt;SPAN&gt;'Suppress trim if required.&lt;/SPAN&gt;
				&lt;SPAN&gt;TankTrim&lt;/SPAN&gt;.&lt;SPAN&gt;Suppressed&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;DisplayTimer&lt;/SPAN&gt;(&lt;SPAN&gt;iWatch&lt;/SPAN&gt;, &lt;SPAN&gt;"Trim to tank combine created"&lt;/SPAN&gt;, &lt;SPAN&gt;PreviousTime&lt;/SPAN&gt;) 
	
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Agitator_Flange&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; 	&lt;SPAN&gt;'Create agitator flange if requested&lt;/SPAN&gt;
		&lt;SPAN&gt;CreateAgiFlange&lt;/SPAN&gt;(&lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt;, &lt;SPAN&gt;CenterFittingAxis&lt;/SPAN&gt;, &lt;SPAN&gt;oUCS&lt;/SPAN&gt;, &lt;SPAN&gt;CenterLine&lt;/SPAN&gt;.&lt;SPAN&gt;EndSketchPoint&lt;/SPAN&gt;, &lt;SPAN&gt;OutsideBodyCol&lt;/SPAN&gt;)
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt; 		
	
			&lt;SPAN&gt;DisplayTimer&lt;/SPAN&gt;(&lt;SPAN&gt;iWatch&lt;/SPAN&gt;, &lt;SPAN&gt;"agitator flange or solids created."&lt;/SPAN&gt;, &lt;SPAN&gt;PreviousTime&lt;/SPAN&gt;)
			
	&lt;SPAN&gt;'Fitting item renames:&lt;/SPAN&gt;
	&lt;SPAN&gt;FlangeSketch&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" Flange revolve sketch"&lt;/SPAN&gt;
	&lt;SPAN&gt;CenterFittingAxis&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" Center axis"&lt;/SPAN&gt;
	&lt;SPAN&gt;FlangeRevolve&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" Flange + tube revolve"&lt;/SPAN&gt;
	&lt;SPAN&gt;FlangeRevolve&lt;/SPAN&gt;.&lt;SPAN&gt;SurfaceBodies&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(1).&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" Fitting body"&lt;/SPAN&gt;
	&lt;SPAN&gt;GussetPlane&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" Conical Gusset &amp;amp; bolt sketch plane (Do not edit)"&lt;/SPAN&gt;	
	&lt;SPAN&gt;GusBoltSketch&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" Conical Gusset, tank hole, &amp;amp; bolthole sketch"&lt;/SPAN&gt;
	&lt;SPAN&gt;TankCutExt&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" Tank hole - cut"&lt;/SPAN&gt; 
	&lt;SPAN&gt;BoltHole&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" Bolt hole"&lt;/SPAN&gt;
	&lt;SPAN&gt;BoltCirPat&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" Bolt circular pattern"&lt;/SPAN&gt;
	
	&lt;SPAN&gt;TankTrim&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" Trim to tank (Suppress/Un-suppress)"&lt;/SPAN&gt;
	&lt;SPAN&gt;oUCS&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;FlangeType&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" UCS: "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;FittingNameInput&lt;/SPAN&gt;
	
&lt;SPAN&gt;DisplayTimer&lt;/SPAN&gt;(&lt;SPAN&gt;iWatch&lt;/SPAN&gt;, &lt;SPAN&gt;"Feature naming done"&lt;/SPAN&gt;, &lt;SPAN&gt;PreviousTime&lt;/SPAN&gt;)	&lt;SPAN&gt;'The display timer that shows where we're going on the display stuff entirely.&lt;/SPAN&gt;

	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Gusset_Type&lt;/SPAN&gt; = &lt;SPAN&gt;"Conical"&lt;/SPAN&gt; &lt;SPAN&gt;Or&lt;/SPAN&gt; &lt;SPAN&gt;Gusset_Type&lt;/SPAN&gt; = &lt;SPAN&gt;"Plate"&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; 
		&lt;SPAN&gt;iLogicVb&lt;/SPAN&gt;.&lt;SPAN&gt;RunRule&lt;/SPAN&gt;(&lt;SPAN&gt;"CREATE GUSSETS"&lt;/SPAN&gt;)
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt; 

	&lt;SPAN&gt;DisplayTimer&lt;/SPAN&gt;(&lt;SPAN&gt;iWatch&lt;/SPAN&gt;, &lt;SPAN&gt;"Gusset block"&lt;/SPAN&gt;, &lt;SPAN&gt;PreviousTime&lt;/SPAN&gt;) 

		&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Blind_Flange&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; 
			&lt;SPAN&gt;iLogicVb&lt;/SPAN&gt;.&lt;SPAN&gt;RunRule&lt;/SPAN&gt;(&lt;SPAN&gt;"CREATE BLIND"&lt;/SPAN&gt;)
		&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
			
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;FittingTransaction&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;FittingTransaction&lt;/SPAN&gt;.&lt;SPAN&gt;End&lt;/SPAN&gt;() 
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt; 		

	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Num_Of_Gus&lt;/SPAN&gt; &amp;lt;&amp;gt; 4 &lt;SPAN&gt;Then&lt;/SPAN&gt; &lt;SPAN&gt;'Set the default number of gussets back to 4. &lt;/SPAN&gt;
		&lt;SPAN&gt;Num_Of_Gus&lt;/SPAN&gt; = 4
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt; 

	&lt;SPAN&gt;Logger&lt;/SPAN&gt;.&lt;SPAN&gt;Info&lt;/SPAN&gt;(&lt;SPAN&gt;"End of program: "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;iWatch&lt;/SPAN&gt;.&lt;SPAN&gt;Elapsed&lt;/SPAN&gt;.&lt;SPAN&gt;ToString&lt;/SPAN&gt;)

&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;   &lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 17 Jun 2026 14:09:09 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-performance-inconsistency-with-logs-need-help/m-p/14169201#M180931</guid>
      <dc:creator>J_Pfeifer_</dc:creator>
      <dc:date>2026-06-17T14:09:09Z</dc:date>
    </item>
    <item>
      <title>Re: Ilogic performance inconsistency - with logs - need help.</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-performance-inconsistency-with-logs-need-help/m-p/14169259#M180933</link>
      <description>&lt;P&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/15445461"&gt;@J_Pfeifer_&lt;/a&gt;&amp;nbsp;&lt;BR /&gt;I don't know if there's that much you can do. The geometry generation takes time with complex geometric references.&lt;/P&gt;
&lt;P&gt;One thing I noticed in your code is that you crate a UCS, attach geometry to it and then you re-orient it. That causes an extra regeneration that could be very heavy depending on how complex the geometry that reference it is. If you could have it correctly oriented before "building on it" it that would save some time. Other things like projections, if you dont actually need the projected geometry but only the positions, it could be optimized to instead just calculate the positions (Less geometry to re-evaluate/solve).&lt;/P&gt;
&lt;P&gt;Also, calling external rules from within a rule, with SharedVariable etc is something that in my experience slow things down a bit. It spins up an extra rule context and I&amp;nbsp; believe it causes updates both on calling the rule and returning (But don't quote me on that, this is just a guess based on experience).&lt;BR /&gt;&lt;BR /&gt;All and all I personally don't think a 10 second delay is terrible for generating geometry of this complexity. I'd assume you still save a lot of time compared to doing it manually &lt;span class="lia-unicode-emoji" title=":winking_face:"&gt;😉&lt;/span&gt; But these are the things I noticed that you could look over in order to shave some time off if you feel like it's worth your time.&lt;/P&gt;</description>
      <pubDate>Wed, 17 Jun 2026 14:49:05 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-performance-inconsistency-with-logs-need-help/m-p/14169259#M180933</guid>
      <dc:creator>JhoelForshav</dc:creator>
      <dc:date>2026-06-17T14:49:05Z</dc:date>
    </item>
    <item>
      <title>Re: Ilogic performance inconsistency - with logs - need help.</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-performance-inconsistency-with-logs-need-help/m-p/14169382#M180936</link>
      <description>&lt;P&gt;I tend to agree with most of that too.&amp;nbsp; There are still many opportunities within the last code example you posted to reduce API calls, and a few minor code layout/formatting things that could be changed a bit, but not sure if they would make a significant difference in processing time overall.&amp;nbsp; Any time you are stepping through Object.Property.Object.Property the same way on multiple lines, getting the lowest level common object or property value to a variable, then using that multiple times will cause less API calls, and therefore a little less processing.&amp;nbsp; But whether there are enough of those places in this code, where if they were updated, would make any noticeable difference, I'm not sure.&amp;nbsp; There may also be a few other settings that may make a difference in processing time.&amp;nbsp; For example, in the Document Settings of a Part file, on the Modeling tab, there are a couple settings which you may want to toggle on/off before &amp;amp;/or after your code routine (&lt;A href="https://help.autodesk.com/view/INVNTOR/2027/ENU/?guid=GUID-DC554B33-5373-4809-A2F6-E3157D75A143" target="_blank" rel="noopener"&gt;Link&lt;/A&gt;).&amp;nbsp; Those can also be reached by code, for convenience (&lt;A href="https://help.autodesk.com/view/INVNTOR/2027/ENU/?guid=GUID-ModelingSettings" target="_blank" rel="noopener"&gt;ModelingSettings&lt;/A&gt;).&amp;nbsp; Then there are some settings at the Application Options level, such as the ones related to 'Physical Properties' on the 'General' tab (likely only relevant if saving), and certain other settings that update things visually, like the option on the Part tab for displaying extended information after feature node name in browser, and some of the stuff on the Display tab.&amp;nbsp; But if screen updating is turned off, that may negate most of that stuff.&lt;/P&gt;
&lt;P&gt;I have also noticed minor differences in processing time when using alternate comparison techniques (like using the TypeOf operator) instead of using some of the built-in Enums.&amp;nbsp; One example is the DocumentTypeEnum.&amp;nbsp; I have found it is faster to use TypeOf comparison vs DocumentTypeEnum for determining document type.&amp;nbsp; I'm sure there are other similar minor interactions like that with similar results.&amp;nbsp; It all requires testing &amp;amp; review to determine which ones may be 'worth it' though.&amp;nbsp; Sometimes we may sacrifice processing speed for 'readability', where appropriate, depending on the need/situation.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Minor layout/formatting tweaks like changing this (and similar):&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;Dim FlangeIDDim As DimensionConstraint, FlangeFaceODDim As DimensionConstraint, FlangeHeadThickDim As DimensionConstraint, FlangeThickDim As DimensionConstraint, FlangePlaceDim As DimensionConstraint, FittingDisDim As DimensionConstraint&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;to this:&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;Dim FlangeIDDim, FlangeFaceODDim, FlangeHeadThickDim, FlangeThickDim, FlangePlaceDim, FittingDisDim As DimensionConstraint&lt;/LI-CODE&gt;
&lt;P&gt;...but doing so likely has little or no noticeable performance difference.&amp;nbsp; Declaring multiple variables in one line like this does not necessarily 'reset' their values, if used in a 'loop' scenario, where declaring them on separate lines and setting their values to Nothing would reset them, if needed, at the cost of a longer code.&amp;nbsp; Usually not an issue at all if variables are declared in their proper context (only within the inner-most block of code they are being used within).&lt;/P&gt;</description>
      <pubDate>Wed, 17 Jun 2026 17:00:00 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-performance-inconsistency-with-logs-need-help/m-p/14169382#M180936</guid>
      <dc:creator>WCrihfield</dc:creator>
      <dc:date>2026-06-17T17:00:00Z</dc:date>
    </item>
  </channel>
</rss>

