<?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 Creating a iProperty Loop Function in Inventor Programming Forum</title>
    <link>https://forums.autodesk.com/t5/inventor-programming-forum/creating-a-iproperty-loop-function/m-p/11022456#M39257</link>
    <description>&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;I'm trying to figure out how to write an external rule that will look at the top level assembly from which the rule is launched and gather the value that is entered in the Project: Project iproperty field. I want that value fed down to the sub-assembly/ part level Project: Project iproperty field. I assume it will be some sort of loop style function since I won't know exactly how many parts/sub-assemblies will be present in the top level assembly.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="amarinXG8V6_0-1647985673257.png" style="width: 600px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1039499i5D5E742B00CFB84D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="amarinXG8V6_0-1647985673257.png" alt="amarinXG8V6_0-1647985673257.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 22 Mar 2022 21:48:40 GMT</pubDate>
    <dc:creator>amarinXG8V6</dc:creator>
    <dc:date>2022-03-22T21:48:40Z</dc:date>
    <item>
      <title>Creating a iProperty Loop Function</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/creating-a-iproperty-loop-function/m-p/11022456#M39257</link>
      <description>&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;I'm trying to figure out how to write an external rule that will look at the top level assembly from which the rule is launched and gather the value that is entered in the Project: Project iproperty field. I want that value fed down to the sub-assembly/ part level Project: Project iproperty field. I assume it will be some sort of loop style function since I won't know exactly how many parts/sub-assemblies will be present in the top level assembly.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="amarinXG8V6_0-1647985673257.png" style="width: 600px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1039499i5D5E742B00CFB84D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="amarinXG8V6_0-1647985673257.png" alt="amarinXG8V6_0-1647985673257.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 22 Mar 2022 21:48:40 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/creating-a-iproperty-loop-function/m-p/11022456#M39257</guid>
      <dc:creator>amarinXG8V6</dc:creator>
      <dc:date>2022-03-22T21:48:40Z</dc:date>
    </item>
    <item>
      <title>Re: Creating a iProperty Loop Function</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/creating-a-iproperty-loop-function/m-p/11022898#M39258</link>
      <description>&lt;P&gt;&lt;SPAN&gt;For the iproperties I would use&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://modthemachine.typepad.com/my_weblog/2009/03/accessing-assembly-components.html" target="_blank" rel="noopener nofollow noreferrer"&gt;&lt;STRONG&gt;&lt;FONT size="3"&gt;All Referenced Documents (1)&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;FONT size="3"&gt;This targets only the single file even if used in multiple sub assemblies so is the shortest route to target each documents. Then next is to loop through the&amp;nbsp; documents and then actually retrieve the&amp;nbsp;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT size="3"&gt;&lt;A href="https://modthemachine.typepad.com/my_weblog/iproperties/" target="_blank" rel="noopener nofollow noreferrer"&gt;iproperties (2)&lt;/A&gt;.&amp;nbsp;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT size="3"&gt;I have left a document filter in there in case you want to filter for part/assembly documents using "&lt;/FONT&gt;&lt;SPAN&gt;kPartDocumentObject" / "&lt;/SPAN&gt;&lt;SPAN&gt;kAssemblyDocumentObject".&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="3"&gt;.&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oAssyDoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyDocument&lt;/SPAN&gt;
 &lt;SPAN&gt;oAssyDoc&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;ActiveDocument&lt;/SPAN&gt; 
 &lt;SPAN&gt;' Get the Design Tracking property set.&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;AssyDesignPropSet&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PropertySet&lt;/SPAN&gt;
&lt;SPAN&gt;AssyDesignPropSet&lt;/SPAN&gt; = &lt;SPAN&gt;oAssyDoc&lt;/SPAN&gt;.&lt;SPAN&gt;PropertySets&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;"Design Tracking Properties"&lt;/SPAN&gt;) 

&lt;SPAN&gt;' Get the Description property.&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;AssyProj&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;Property&lt;/SPAN&gt;
&lt;SPAN&gt;AssyProj&lt;/SPAN&gt; = &lt;SPAN&gt;AssyDesignPropSet&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;"Project"&lt;/SPAN&gt;)

&lt;SPAN&gt;'Get all of the referenced documents.&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oRefDocs&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DocumentsEnumerator&lt;/SPAN&gt;
&lt;SPAN&gt;oRefDocs&lt;/SPAN&gt; = &lt;SPAN&gt;oAssyDoc&lt;/SPAN&gt;.&lt;SPAN&gt;AllReferencedDocuments&lt;/SPAN&gt;

&lt;SPAN&gt;'Iterate through the list of documents.&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oRefDoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Document&lt;/SPAN&gt;
&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oRefDoc&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oRefDocs&lt;/SPAN&gt;
	&lt;SPAN&gt;' If oRefDoc.DocumentType = DocumentTypeEnum.kPartDocumentObject Then&lt;/SPAN&gt;
&lt;SPAN&gt;'		Logger.Info("DisplayName: "&amp;amp; oRefDoc.DisplayName)'FileName&lt;/SPAN&gt;
&lt;SPAN&gt;'		Logger.Info("FullFileName: "&amp;amp; oRefDoc.FullFileName)'FilePath&lt;/SPAN&gt;

        &lt;SPAN&gt;' Get the Design Tracking property set.&lt;/SPAN&gt;
       &amp;nbsp; &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;DesignTrackPropSet&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PropertySet&lt;/SPAN&gt;
         &lt;SPAN&gt;DesignTrackPropSet&lt;/SPAN&gt; = &lt;SPAN&gt;oRefDoc&lt;/SPAN&gt;.&lt;SPAN&gt;PropertySets&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;"Design Tracking Properties"&lt;/SPAN&gt;) 

       &lt;SPAN&gt;' Get the Description property.&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;             &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;RefProj&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;Property&lt;/SPAN&gt;
       &amp;nbsp; &lt;SPAN&gt;RefProj&lt;/SPAN&gt; = &lt;SPAN&gt;DesignTrackPropSet&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;"Project"&lt;/SPAN&gt;)
   		&lt;SPAN&gt;Try&lt;/SPAN&gt;
			&lt;SPAN&gt;RefProj&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt; = &lt;SPAN&gt;AssyProj&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;
		&lt;SPAN&gt;Catch&lt;/SPAN&gt;
			&lt;SPAN&gt;Logger&lt;/SPAN&gt;.&lt;SPAN&gt;Info&lt;/SPAN&gt;(&lt;SPAN&gt;"Read Only - "&lt;/SPAN&gt;&amp;amp; &lt;SPAN&gt;oRefDoc&lt;/SPAN&gt;.&lt;SPAN&gt;DisplayName&lt;/SPAN&gt; )
		&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
    &lt;SPAN&gt;'End If&lt;/SPAN&gt;
&lt;SPAN&gt;Next&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;Also you can use a function with Vb.Net to reduce extra lines required and to also work with other iproperties easily.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&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;oAssyDoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyDocument&lt;/SPAN&gt;
&lt;SPAN&gt;oAssyDoc&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;ActiveDocument&lt;/SPAN&gt; 
 
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oAssyProj&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;[Property]&lt;/SPAN&gt;
&lt;SPAN&gt;oAssyProj&lt;/SPAN&gt;= &lt;SPAN&gt;GetiProp&lt;/SPAN&gt;(&lt;SPAN&gt;oAssyDoc&lt;/SPAN&gt;,&lt;SPAN&gt;"Project"&lt;/SPAN&gt;)
&lt;SPAN&gt;Logger&lt;/SPAN&gt;.&lt;SPAN&gt;Info&lt;/SPAN&gt;(&lt;SPAN&gt;oAssyProj&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;)


&lt;SPAN&gt;'Get all of the referenced documents.&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oRefDocs&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DocumentsEnumerator&lt;/SPAN&gt;
&lt;SPAN&gt;oRefDocs&lt;/SPAN&gt; = &lt;SPAN&gt;oAssyDoc&lt;/SPAN&gt;.&lt;SPAN&gt;AllReferencedDocuments&lt;/SPAN&gt;

&lt;SPAN&gt;'Iterate through the list of documents.&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oRefDoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Document&lt;/SPAN&gt;
&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oRefDoc&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oRefDocs&lt;/SPAN&gt;
	&lt;SPAN&gt;' If oRefDoc.DocumentType = DocumentTypeEnum.kPartDocumentObject Then&lt;/SPAN&gt;
		&lt;SPAN&gt;'Logger.Info("DisplayName: "&amp;amp; oRefDoc.DisplayName)'FileName&lt;/SPAN&gt;
		&lt;SPAN&gt;'Logger.Info("FullDocumentName: "&amp;amp; oRefDoc.FullDocumentName)'FilePath&lt;/SPAN&gt;
 
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oRefProjNo&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;[Property]&lt;/SPAN&gt;
		&lt;SPAN&gt;oRefProjNo&lt;/SPAN&gt; = &lt;SPAN&gt;GetiProp&lt;/SPAN&gt;(&lt;SPAN&gt;oRefDoc&lt;/SPAN&gt;,&lt;SPAN&gt;"Project"&lt;/SPAN&gt;)

		&lt;SPAN&gt;Try&lt;/SPAN&gt;				 
		&lt;SPAN&gt;oRefProjNo&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt; = &lt;SPAN&gt;oAssyProj&lt;/SPAN&gt;.&lt;SPAN&gt;Value&lt;/SPAN&gt;
		&lt;SPAN&gt;Catch&lt;/SPAN&gt;
		&lt;SPAN&gt;Logger&lt;/SPAN&gt;.&lt;SPAN&gt;Info&lt;/SPAN&gt;(&lt;SPAN&gt;"Read Only - "&lt;/SPAN&gt;&amp;amp; &lt;SPAN&gt;oRefDoc&lt;/SPAN&gt;.&lt;SPAN&gt;DisplayName&lt;/SPAN&gt; )
		&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
      &lt;SPAN&gt;'End If&lt;/SPAN&gt;
&lt;SPAN&gt;Next&lt;/SPAN&gt;


&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;

&lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;GetiProp&lt;/SPAN&gt;(&lt;SPAN&gt;oDoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Document&lt;/SPAN&gt;,&lt;SPAN&gt;iPropName&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;)&lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;[Property]&lt;/SPAN&gt;
	
	 &lt;SPAN&gt;' Get the Design Tracking property set.&lt;/SPAN&gt;
   &amp;nbsp; &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;DesignTrackPropSet&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PropertySet&lt;/SPAN&gt;
     &lt;SPAN&gt;DesignTrackPropSet&lt;/SPAN&gt; = &lt;SPAN&gt;oDoc&lt;/SPAN&gt;.&lt;SPAN&gt;PropertySets&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;"Design Tracking Properties"&lt;/SPAN&gt;) 

     &lt;SPAN&gt;' Get the Description property.&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oProjProp&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;Property&lt;/SPAN&gt;
     &lt;SPAN&gt;oProjProp&lt;/SPAN&gt; = &lt;SPAN&gt;DesignTrackPropSet&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;iPropName&lt;/SPAN&gt;)
	 &lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;oProjProp&lt;/SPAN&gt;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 23 Mar 2022 05:21:18 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/creating-a-iproperty-loop-function/m-p/11022898#M39258</guid>
      <dc:creator>A.Acheson</dc:creator>
      <dc:date>2022-03-23T05:21:18Z</dc:date>
    </item>
    <item>
      <title>Re: Creating a iProperty Loop Function</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/creating-a-iproperty-loop-function/m-p/11026994#M39259</link>
      <description>Hi &lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/7946284"&gt;@A.Acheson&lt;/a&gt;,&lt;BR /&gt;&lt;BR /&gt;I tried the first portion of code the you provided and it worked great! Thank you for the support. Have a good day.</description>
      <pubDate>Thu, 24 Mar 2022 17:29:17 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/creating-a-iproperty-loop-function/m-p/11026994#M39259</guid>
      <dc:creator>amarinXG8V6</dc:creator>
      <dc:date>2022-03-24T17:29:17Z</dc:date>
    </item>
    <item>
      <title>Re: Creating a iProperty Loop Function</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/creating-a-iproperty-loop-function/m-p/11552914#M39260</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;Is it also possible to change the iproperty of the fist level children only. So if there is a subassembly within the main assembly to not alter the iproperties of parts within it?&lt;/P&gt;</description>
      <pubDate>Tue, 15 Nov 2022 08:18:26 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/creating-a-iproperty-loop-function/m-p/11552914#M39260</guid>
      <dc:creator>c.bloedorn</dc:creator>
      <dc:date>2022-11-15T08:18:26Z</dc:date>
    </item>
  </channel>
</rss>

