<?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 Renaming components in assembly in Inventor Programming - iLogic, Macros, AddIns &amp; Apprentice</title>
    <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12071362#M154663</link>
    <description>&lt;P&gt;I have tried this code for renaming all components in an assembly :&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;Class&lt;/SPAN&gt; &lt;SPAN&gt;ChgDisplayName&lt;/SPAN&gt;
	&lt;SPAN&gt;Public&lt;/SPAN&gt; &lt;SPAN&gt;name&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;"Part "&lt;/SPAN&gt;
	&lt;SPAN&gt;Public&lt;/SPAN&gt; &lt;SPAN&gt;cpt&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt; = 1
	
	
&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;Main&lt;/SPAN&gt;
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;ActiveDocumentType&lt;/SPAN&gt; &amp;lt;&amp;gt; &lt;SPAN&gt;DocumentTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kAssemblyDocumentObject&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
		&lt;SPAN&gt;MsgBox&lt;/SPAN&gt;(&lt;SPAN&gt;"An Assembly Document must be active for this rule to work. Exiting."&lt;/SPAN&gt;,&lt;SPAN&gt;vbOKOnly&lt;/SPAN&gt;+&lt;SPAN&gt;vbCritical&lt;/SPAN&gt;, &lt;SPAN&gt;"WRONG DOCUMENT TYPE"&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;oADoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyDocument&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;oADef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyComponentDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;oADoc&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt;
	
	&lt;SPAN&gt;'Start a Transaction to bundle all the name changes into a single item in the 'Undo' menu.&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oTransaction&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Transaction&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransactionManager&lt;/SPAN&gt;.&lt;SPAN&gt;StartTransaction&lt;/SPAN&gt;(&lt;SPAN&gt;oADoc&lt;/SPAN&gt;, &lt;SPAN&gt;"Rename Components"&lt;/SPAN&gt;)
		
	&lt;SPAN&gt;'rename all comps in top level first&lt;/SPAN&gt;
	&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oADef&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;
		&lt;SPAN&gt;RenameOcc&lt;/SPAN&gt;(&lt;SPAN&gt;oOcc&lt;/SPAN&gt;)
	&lt;SPAN&gt;Next&lt;/SPAN&gt;
	&lt;SPAN&gt;'now try to rename comps at deeper levels&lt;/SPAN&gt;
	&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oADef&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;
		&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;SubOccurrences&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt; &amp;gt; 0 &lt;SPAN&gt;Then&lt;/SPAN&gt; &lt;SPAN&gt;'it is a sub-assembly&lt;/SPAN&gt;
			&lt;SPAN&gt;'run 'recursive' sub here&lt;/SPAN&gt;
			&lt;SPAN&gt;'and supply the SubOccurrences to it&lt;/SPAN&gt;
			&lt;SPAN&gt;Iterate&lt;/SPAN&gt;(&lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;SubOccurrences&lt;/SPAN&gt;)
		&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
	&lt;SPAN&gt;Next&lt;/SPAN&gt;
	&lt;SPAN&gt;'end the Transaction&lt;/SPAN&gt;
	&lt;SPAN&gt;oTransaction&lt;/SPAN&gt;.&lt;SPAN&gt;End&lt;/SPAN&gt;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;

&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;RenameOcc&lt;/SPAN&gt;(&lt;SPAN&gt;oComp&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt;)
	&lt;SPAN&gt;'create new variable to enable 'Intellisense' recognition&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oCO&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt; = &lt;SPAN&gt;oComp&lt;/SPAN&gt;
	&lt;SPAN&gt;'get the PN&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oCODoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Document&lt;/SPAN&gt; = &lt;SPAN&gt;oCO&lt;/SPAN&gt;.&lt;SPAN&gt;Definition&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt;
	&lt;SPAN&gt;'Dim oPN As String = oCODoc.PropertySets.Item("Design Tracking Properties").Item("Part Number").Value&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oPN&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;name&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;cpt&lt;/SPAN&gt;
	&lt;SPAN&gt;'check if PN is empty (not filled in)&lt;/SPAN&gt;
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oPN&lt;/SPAN&gt; = &lt;SPAN&gt;""&lt;/SPAN&gt; &lt;SPAN&gt;Or&lt;/SPAN&gt; &lt;SPAN&gt;oPN&lt;/SPAN&gt; = &lt;SPAN&gt;" "&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
		&lt;SPAN&gt;MsgBox&lt;/SPAN&gt;(&lt;SPAN&gt;"Occurrence '"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oCO&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"' has an 'Empty' Part Number."&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;vbCrLf&lt;/SPAN&gt; &amp;amp; _
		&lt;SPAN&gt;"Leaving original component name as it was."&lt;/SPAN&gt;, , &lt;SPAN&gt;""&lt;/SPAN&gt;)
		&lt;SPAN&gt;'oPN = oCO.Name&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;'attempt to rename the component&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oWorked&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;Try&lt;/SPAN&gt;
		&lt;SPAN&gt;oCO&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;oPN&lt;/SPAN&gt;
	&lt;SPAN&gt;Catch&lt;/SPAN&gt;
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oInt&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt; = 0
		&lt;SPAN&gt;Do&lt;/SPAN&gt; &lt;SPAN&gt;Until&lt;/SPAN&gt; &lt;SPAN&gt;oWorked&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
			&lt;SPAN&gt;oInt&lt;/SPAN&gt; = &lt;SPAN&gt;oInt&lt;/SPAN&gt; + 1
			&lt;SPAN&gt;Try&lt;/SPAN&gt;
				&lt;SPAN&gt;oCO&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;oPN&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;":"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oInt&lt;/SPAN&gt;
				&lt;SPAN&gt;oWorked&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
			&lt;SPAN&gt;Catch&lt;/SPAN&gt;
				&lt;SPAN&gt;oWorked&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt;
				&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oInt&lt;/SPAN&gt; &amp;gt; 10 &lt;SPAN&gt;Then&lt;/SPAN&gt;
					&lt;SPAN&gt;oWorked&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;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
		&lt;SPAN&gt;Loop&lt;/SPAN&gt;
	&lt;SPAN&gt;Catch&lt;/SPAN&gt;
		&lt;SPAN&gt;MsgBox&lt;/SPAN&gt;(&lt;SPAN&gt;"Failed to rename:  "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oCO&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;,,&lt;SPAN&gt;""&lt;/SPAN&gt;)
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
	
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oWorked&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
		&lt;SPAN&gt;cpt&lt;/SPAN&gt; += 1	
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;

&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;Iterate&lt;/SPAN&gt;(&lt;SPAN&gt;oOccs&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrencesEnumerator&lt;/SPAN&gt;)
	&lt;SPAN&gt;'create new variable to enable 'Intellisense' recognition&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oComps&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrencesEnumerator&lt;/SPAN&gt; = &lt;SPAN&gt;oOccs&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oCO&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt;
	&lt;SPAN&gt;'try to rename all comps at this level first&lt;/SPAN&gt;
	&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oCO&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oComps&lt;/SPAN&gt;
		&lt;SPAN&gt;RenameOcc&lt;/SPAN&gt;(&lt;SPAN&gt;oCO&lt;/SPAN&gt;)
	&lt;SPAN&gt;Next&lt;/SPAN&gt;
	&lt;SPAN&gt;'now loop through again checking for SubOccurrences, then Iterate&lt;/SPAN&gt;
	&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oCO&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oComps&lt;/SPAN&gt;
		&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oCO&lt;/SPAN&gt;.&lt;SPAN&gt;SubOccurrences&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt; &amp;gt; 0 &lt;SPAN&gt;Then&lt;/SPAN&gt; &lt;SPAN&gt;'it is a sub-assembly&lt;/SPAN&gt;
			&lt;SPAN&gt;Iterate&lt;/SPAN&gt;(&lt;SPAN&gt;oCO&lt;/SPAN&gt;.&lt;SPAN&gt;SubOccurrences&lt;/SPAN&gt;)
		&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
	&lt;SPAN&gt;Next&lt;/SPAN&gt;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;

&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Class&lt;/SPAN&gt;
&lt;/PRE&gt;&lt;P&gt;But it don't work for internal parts of an iAssembly :&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2023-06-30_11h26_45.jpg" style="width: 999px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1235249i33D8C5019CEEEB41/image-size/large?v=v2&amp;amp;px=999" role="button" title="2023-06-30_11h26_45.jpg" alt="2023-06-30_11h26_45.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Do you know why ?&lt;/P&gt;&lt;P&gt;Is there a solution ?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 30 Jun 2023 09:31:22 GMT</pubDate>
    <dc:creator>philippe.lagrue</dc:creator>
    <dc:date>2023-06-30T09:31:22Z</dc:date>
    <item>
      <title>Renaming components in assembly</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12071362#M154663</link>
      <description>&lt;P&gt;I have tried this code for renaming all components in an assembly :&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;Class&lt;/SPAN&gt; &lt;SPAN&gt;ChgDisplayName&lt;/SPAN&gt;
	&lt;SPAN&gt;Public&lt;/SPAN&gt; &lt;SPAN&gt;name&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;"Part "&lt;/SPAN&gt;
	&lt;SPAN&gt;Public&lt;/SPAN&gt; &lt;SPAN&gt;cpt&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt; = 1
	
	
&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;Main&lt;/SPAN&gt;
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;ActiveDocumentType&lt;/SPAN&gt; &amp;lt;&amp;gt; &lt;SPAN&gt;DocumentTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kAssemblyDocumentObject&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
		&lt;SPAN&gt;MsgBox&lt;/SPAN&gt;(&lt;SPAN&gt;"An Assembly Document must be active for this rule to work. Exiting."&lt;/SPAN&gt;,&lt;SPAN&gt;vbOKOnly&lt;/SPAN&gt;+&lt;SPAN&gt;vbCritical&lt;/SPAN&gt;, &lt;SPAN&gt;"WRONG DOCUMENT TYPE"&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;oADoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyDocument&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;oADef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyComponentDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;oADoc&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt;
	
	&lt;SPAN&gt;'Start a Transaction to bundle all the name changes into a single item in the 'Undo' menu.&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oTransaction&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Transaction&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransactionManager&lt;/SPAN&gt;.&lt;SPAN&gt;StartTransaction&lt;/SPAN&gt;(&lt;SPAN&gt;oADoc&lt;/SPAN&gt;, &lt;SPAN&gt;"Rename Components"&lt;/SPAN&gt;)
		
	&lt;SPAN&gt;'rename all comps in top level first&lt;/SPAN&gt;
	&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oADef&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;
		&lt;SPAN&gt;RenameOcc&lt;/SPAN&gt;(&lt;SPAN&gt;oOcc&lt;/SPAN&gt;)
	&lt;SPAN&gt;Next&lt;/SPAN&gt;
	&lt;SPAN&gt;'now try to rename comps at deeper levels&lt;/SPAN&gt;
	&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oADef&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;
		&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;SubOccurrences&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt; &amp;gt; 0 &lt;SPAN&gt;Then&lt;/SPAN&gt; &lt;SPAN&gt;'it is a sub-assembly&lt;/SPAN&gt;
			&lt;SPAN&gt;'run 'recursive' sub here&lt;/SPAN&gt;
			&lt;SPAN&gt;'and supply the SubOccurrences to it&lt;/SPAN&gt;
			&lt;SPAN&gt;Iterate&lt;/SPAN&gt;(&lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;SubOccurrences&lt;/SPAN&gt;)
		&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
	&lt;SPAN&gt;Next&lt;/SPAN&gt;
	&lt;SPAN&gt;'end the Transaction&lt;/SPAN&gt;
	&lt;SPAN&gt;oTransaction&lt;/SPAN&gt;.&lt;SPAN&gt;End&lt;/SPAN&gt;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;

&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;RenameOcc&lt;/SPAN&gt;(&lt;SPAN&gt;oComp&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt;)
	&lt;SPAN&gt;'create new variable to enable 'Intellisense' recognition&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oCO&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt; = &lt;SPAN&gt;oComp&lt;/SPAN&gt;
	&lt;SPAN&gt;'get the PN&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oCODoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Document&lt;/SPAN&gt; = &lt;SPAN&gt;oCO&lt;/SPAN&gt;.&lt;SPAN&gt;Definition&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt;
	&lt;SPAN&gt;'Dim oPN As String = oCODoc.PropertySets.Item("Design Tracking Properties").Item("Part Number").Value&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oPN&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;name&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;cpt&lt;/SPAN&gt;
	&lt;SPAN&gt;'check if PN is empty (not filled in)&lt;/SPAN&gt;
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oPN&lt;/SPAN&gt; = &lt;SPAN&gt;""&lt;/SPAN&gt; &lt;SPAN&gt;Or&lt;/SPAN&gt; &lt;SPAN&gt;oPN&lt;/SPAN&gt; = &lt;SPAN&gt;" "&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
		&lt;SPAN&gt;MsgBox&lt;/SPAN&gt;(&lt;SPAN&gt;"Occurrence '"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oCO&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"' has an 'Empty' Part Number."&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;vbCrLf&lt;/SPAN&gt; &amp;amp; _
		&lt;SPAN&gt;"Leaving original component name as it was."&lt;/SPAN&gt;, , &lt;SPAN&gt;""&lt;/SPAN&gt;)
		&lt;SPAN&gt;'oPN = oCO.Name&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;'attempt to rename the component&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oWorked&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;Try&lt;/SPAN&gt;
		&lt;SPAN&gt;oCO&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;oPN&lt;/SPAN&gt;
	&lt;SPAN&gt;Catch&lt;/SPAN&gt;
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oInt&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt; = 0
		&lt;SPAN&gt;Do&lt;/SPAN&gt; &lt;SPAN&gt;Until&lt;/SPAN&gt; &lt;SPAN&gt;oWorked&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
			&lt;SPAN&gt;oInt&lt;/SPAN&gt; = &lt;SPAN&gt;oInt&lt;/SPAN&gt; + 1
			&lt;SPAN&gt;Try&lt;/SPAN&gt;
				&lt;SPAN&gt;oCO&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;oPN&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;":"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oInt&lt;/SPAN&gt;
				&lt;SPAN&gt;oWorked&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
			&lt;SPAN&gt;Catch&lt;/SPAN&gt;
				&lt;SPAN&gt;oWorked&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt;
				&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oInt&lt;/SPAN&gt; &amp;gt; 10 &lt;SPAN&gt;Then&lt;/SPAN&gt;
					&lt;SPAN&gt;oWorked&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;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
		&lt;SPAN&gt;Loop&lt;/SPAN&gt;
	&lt;SPAN&gt;Catch&lt;/SPAN&gt;
		&lt;SPAN&gt;MsgBox&lt;/SPAN&gt;(&lt;SPAN&gt;"Failed to rename:  "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;oCO&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;,,&lt;SPAN&gt;""&lt;/SPAN&gt;)
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
	
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oWorked&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
		&lt;SPAN&gt;cpt&lt;/SPAN&gt; += 1	
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;

&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;Iterate&lt;/SPAN&gt;(&lt;SPAN&gt;oOccs&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrencesEnumerator&lt;/SPAN&gt;)
	&lt;SPAN&gt;'create new variable to enable 'Intellisense' recognition&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oComps&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrencesEnumerator&lt;/SPAN&gt; = &lt;SPAN&gt;oOccs&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oCO&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt;
	&lt;SPAN&gt;'try to rename all comps at this level first&lt;/SPAN&gt;
	&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oCO&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oComps&lt;/SPAN&gt;
		&lt;SPAN&gt;RenameOcc&lt;/SPAN&gt;(&lt;SPAN&gt;oCO&lt;/SPAN&gt;)
	&lt;SPAN&gt;Next&lt;/SPAN&gt;
	&lt;SPAN&gt;'now loop through again checking for SubOccurrences, then Iterate&lt;/SPAN&gt;
	&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oCO&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oComps&lt;/SPAN&gt;
		&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oCO&lt;/SPAN&gt;.&lt;SPAN&gt;SubOccurrences&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt; &amp;gt; 0 &lt;SPAN&gt;Then&lt;/SPAN&gt; &lt;SPAN&gt;'it is a sub-assembly&lt;/SPAN&gt;
			&lt;SPAN&gt;Iterate&lt;/SPAN&gt;(&lt;SPAN&gt;oCO&lt;/SPAN&gt;.&lt;SPAN&gt;SubOccurrences&lt;/SPAN&gt;)
		&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
	&lt;SPAN&gt;Next&lt;/SPAN&gt;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;

&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Class&lt;/SPAN&gt;
&lt;/PRE&gt;&lt;P&gt;But it don't work for internal parts of an iAssembly :&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2023-06-30_11h26_45.jpg" style="width: 999px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1235249i33D8C5019CEEEB41/image-size/large?v=v2&amp;amp;px=999" role="button" title="2023-06-30_11h26_45.jpg" alt="2023-06-30_11h26_45.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Do you know why ?&lt;/P&gt;&lt;P&gt;Is there a solution ?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 30 Jun 2023 09:31:22 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12071362#M154663</guid>
      <dc:creator>philippe.lagrue</dc:creator>
      <dc:date>2023-06-30T09:31:22Z</dc:date>
    </item>
    <item>
      <title>Re: Renaming components in assembly</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12071387#M154664</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;try to use this Sub main instead:&lt;/P&gt;&lt;LI-CODE lang="visual-basic"&gt;Sub Main
	If ThisApplication.ActiveDocumentType &amp;lt;&amp;gt; DocumentTypeEnum.kAssemblyDocumentObject Then
		MsgBox("An Assembly Document must be active for this rule to work. Exiting.",vbOKOnly+vbCritical, "WRONG DOCUMENT TYPE")
		Exit Sub
	End If
	Dim oADoc As AssemblyDocument = ThisApplication.ActiveDocument
	Dim oADef As AssemblyComponentDefinition = oADoc.ComponentDefinition
	'Dim oOcc As ComponentOccurrence
	
	'Start a Transaction to bundle all the name changes into a single item in the 'Undo' menu.
	Dim oTransaction As Transaction = ThisApplication.TransactionManager.StartTransaction(oADoc, "Rename Components")
		
	'rename all comps
	For Each oOcc As ComponentOccurrence In oADef.Occurrences.AllReferencedOccurrences(asmDef).OfType(Of ComponentOccurrence)
	RenameOcc(oOcc)	
	
Next&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 30 Jun 2023 09:49:50 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12071387#M154664</guid>
      <dc:creator>ts2.cad3</dc:creator>
      <dc:date>2023-06-30T09:49:50Z</dc:date>
    </item>
    <item>
      <title>Re: Renaming components in assembly</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12071522#M154665</link>
      <description>&lt;P&gt;Thank you for the answer.&lt;/P&gt;&lt;P&gt;Here is the result (components are partially renamed) :&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2023-06-30_12h40_13.jpg" style="width: 811px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1235276i4289A94A773AD0D1/image-size/large?v=v2&amp;amp;px=999" role="button" title="2023-06-30_12h40_13.jpg" alt="2023-06-30_12h40_13.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;And in fact the program is aborted by this error&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2023-06-30_12h38_31.jpg" style="width: 392px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1235277i17D09C6EC1050528/image-size/large?v=v2&amp;amp;px=999" role="button" title="2023-06-30_12h38_31.jpg" alt="2023-06-30_12h38_31.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;The code modified as you suggest :&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;Main&lt;/SPAN&gt;
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;ActiveDocumentType&lt;/SPAN&gt; &amp;lt;&amp;gt; &lt;SPAN&gt;DocumentTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kAssemblyDocumentObject&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
		&lt;SPAN&gt;MsgBox&lt;/SPAN&gt;(&lt;SPAN&gt;"An Assembly Document must be active for this rule to work. Exiting."&lt;/SPAN&gt;,&lt;SPAN&gt;vbOKOnly&lt;/SPAN&gt;+&lt;SPAN&gt;vbCritical&lt;/SPAN&gt;, &lt;SPAN&gt;"WRONG DOCUMENT TYPE"&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;oADoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyDocument&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;oADef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyComponentDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;oADoc&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
	&lt;SPAN&gt;'Dim oOcc As ComponentOccurrence&lt;/SPAN&gt;
	
	&lt;SPAN&gt;'Start a Transaction to bundle all the name changes into a single item in the 'Undo' menu.&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oTransaction&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Transaction&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransactionManager&lt;/SPAN&gt;.&lt;SPAN&gt;StartTransaction&lt;/SPAN&gt;(&lt;SPAN&gt;oADoc&lt;/SPAN&gt;, &lt;SPAN&gt;"Rename Components"&lt;/SPAN&gt;)
		
	&lt;SPAN&gt;'rename all comps in top level first&lt;/SPAN&gt;
	&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oADef&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;
		&lt;SPAN&gt;RenameOcc&lt;/SPAN&gt;(&lt;SPAN&gt;oOcc&lt;/SPAN&gt;)
	&lt;SPAN&gt;Next&lt;/SPAN&gt;
	&lt;SPAN&gt;'now try to rename comps at deeper levels&lt;/SPAN&gt;
	&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oADef&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;.&lt;SPAN&gt;AllReferencedOccurrences&lt;/SPAN&gt;(&lt;SPAN&gt;asmDef&lt;/SPAN&gt;).&lt;SPAN&gt;OfType&lt;/SPAN&gt;(&lt;SPAN&gt;Of&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt;)
		&lt;SPAN&gt;RenameOcc&lt;/SPAN&gt;(&lt;SPAN&gt;oOcc&lt;/SPAN&gt;)	
	&lt;SPAN&gt;Next&lt;/SPAN&gt;
	
	&lt;SPAN&gt;'end the Transaction&lt;/SPAN&gt;
	&lt;SPAN&gt;oTransaction&lt;/SPAN&gt;.&lt;SPAN&gt;End&lt;/SPAN&gt;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;You can find the assembly in the link below.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 30 Jun 2023 10:56:32 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12071522#M154665</guid>
      <dc:creator>philippe.lagrue</dc:creator>
      <dc:date>2023-06-30T10:56:32Z</dc:date>
    </item>
    <item>
      <title>Re: Renaming components in assembly</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12071663#M154668</link>
      <description>&lt;P&gt;ok some bugs deleted now:&lt;/P&gt;&lt;LI-CODE lang="visual-basic"&gt;Sub Main
	If ThisApplication.ActiveDocumentType &amp;lt;&amp;gt; DocumentTypeEnum.kAssemblyDocumentObject Then
		MsgBox("An Assembly Document must be active for this rule to work. Exiting.",vbOKOnly+vbCritical, "WRONG DOCUMENT TYPE")
		Exit Sub
	End If
	Dim oADoc As AssemblyDocument = ThisApplication.ActiveDocument
	Dim oADef As AssemblyComponentDefinition = oADoc.ComponentDefinition
	'Dim oOcc As ComponentOccurrence
	
	'Start a Transaction to bundle all the name changes into a single item in the 'Undo' menu.
	Dim oTransaction As Transaction = ThisApplication.TransactionManager.StartTransaction(oADoc, "Rename Components")
	'MessageBox.Show("1", "Title")
	
	'rename all comps
	For Each oOcc As ComponentOccurrence In oADef.Occurrences.AllReferencedOccurrences(oADef).OfType(Of ComponentOccurrence)
	RenameOcc(oOcc)	
	
Next
End Sub

Sub RenameOcc(oComp As ComponentOccurrence)
	'MessageBox.Show("2", "Title")
	'create new variable to enable 'Intellisense' recognition
	Dim oCO As ComponentOccurrence = oComp
	'get the PN
	Dim oCODoc As Document = oCO.Definition.Document
	'Dim oPN As String = oCODoc.PropertySets.Item("Design Tracking Properties").Item("Part Number").Value
	Dim oPN As String = name &amp;amp; cpt
	'check if PN is empty (not filled in)
	If oPN = "" Or oPN = " " Then
		'MessageBox.Show("3", "Title")
		MsgBox("Occurrence '" &amp;amp; oCO.Name &amp;amp; "' has an 'Empty' Part Number." &amp;amp; vbCrLf &amp;amp; _
		"Leaving original component name as it was.", , "")
		'oPN = oCO.Name
		Exit Sub
	End If
	
	'attempt to rename the component
	Dim oWorked As Boolean = False
	Try
		oCO.Name = oPN
		'MessageBox.Show("4", "Title")
	Catch
		'MessageBox.Show("5", "Title")
		Dim oInt As Integer = 0
		Do Until oWorked = True
			oInt = oInt + 1
			Try
				oCO.Name = oPN &amp;amp; ":" &amp;amp; oInt
				oWorked = True
			Catch
				oWorked = False
				If oInt &amp;gt; 10 Then
					oWorked = True
				End If
			End Try
		Loop
	Catch
		MsgBox("Failed to rename:  " &amp;amp; oCO.Name,,"")
	End Try
	
	If oWorked Then
		cpt += 1	
	End If
End Sub&lt;/LI-CODE&gt;</description>
      <pubDate>Fri, 30 Jun 2023 12:02:18 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12071663#M154668</guid>
      <dc:creator>ts2.cad3</dc:creator>
      <dc:date>2023-06-30T12:02:18Z</dc:date>
    </item>
    <item>
      <title>Re: Renaming components in assembly</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12071715#M154669</link>
      <description>&lt;P&gt;Hi &lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/10150532"&gt;@philippe.lagrue&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It seems like something like this should be enough to accomplish what you're trying to do?&lt;/P&gt;
&lt;LI-CODE lang="visual-basic"&gt;Dim name As String = "Part"
Dim num As Integer = 1
Dim def As AssemblyComponentDefinition = ThisDoc.Document.ComponentDefinition
For Each oOcc As ComponentOccurrence In def.Occurrences.AllReferencedOccurrences(def)
	Try
		oOcc.Name = name &amp;amp; num
		num += 1
	Catch
		MsgBox("couldn't rename " &amp;amp; oOcc.Name)
	End Try
Next
&lt;/LI-CODE&gt;</description>
      <pubDate>Fri, 30 Jun 2023 12:27:02 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12071715#M154669</guid>
      <dc:creator>JhoelForshav</dc:creator>
      <dc:date>2023-06-30T12:27:02Z</dc:date>
    </item>
    <item>
      <title>Re: Renaming components in assembly</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12071772#M154672</link>
      <description>&lt;P&gt;Thank you for your patience and interest.&lt;/P&gt;&lt;P&gt;The issue remain the same; impossibility to rename the components inside the iAssembly.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2023-06-30_14h44_09.jpg" style="width: 416px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1235324i62CB1C3B8F4AB942/image-size/large?v=v2&amp;amp;px=999" role="button" title="2023-06-30_14h44_09.jpg" alt="2023-06-30_14h44_09.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 30 Jun 2023 12:52:43 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12071772#M154672</guid>
      <dc:creator>philippe.lagrue</dc:creator>
      <dc:date>2023-06-30T12:52:43Z</dc:date>
    </item>
    <item>
      <title>Re: Renaming components in assembly</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12071774#M154673</link>
      <description>&lt;P&gt;Thank you&amp;nbsp;&lt;STRONG&gt;Jhoel.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;But it's not the subject of my worry.&lt;/STRONG&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 30 Jun 2023 12:54:27 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12071774#M154673</guid>
      <dc:creator>philippe.lagrue</dc:creator>
      <dc:date>2023-06-30T12:54:27Z</dc:date>
    </item>
    <item>
      <title>Re: Renaming components in assembly</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12071792#M154674</link>
      <description>&lt;P&gt;I just made a more robust rule that also renames the occurrences in order in the tree. Tried it on an Assembly containing both iParts and iAssemblies and it works well for me:&lt;BR /&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="forumBild.png" style="width: 151px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1235326i7C974B0B54193C55/image-size/large?v=v2&amp;amp;px=999" role="button" title="forumBild.png" alt="forumBild.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;LI-CODE lang="visual-basic"&gt;Class ThisRule
	Dim name As String = "Part"
	Dim num As Integer = 1
	Dim existingOccs As ComponentOccurrencesEnumerator
	Sub Main
		Dim def As AssemblyComponentDefinition = ThisDoc.Document.ComponentDefinition
		existingOccs = def.Occurrences.AllReferencedOccurrences(def)
		For Each oOcc As ComponentOccurrence In def.Occurrences
			TraverseAndSetNames(oOcc)
		Next
	End Sub
	Sub RenameExisting(oName As String)
		Dim existingOccWithName As ComponentOccurrence = existingOccs.OfType(Of ComponentOccurrence).FirstOrDefault(Function(x) x.Name = oName)
		If existingOccWithName IsNot Nothing
			existingOccWithName.Name = oName &amp;amp; "_old"
		End If
	End Sub
	Sub RenameOcc(oOcc As ComponentOccurrence)
		oOcc.Name = name &amp;amp; num
		num += 1
	End Sub
	Sub TraverseAndSetNames(oOcc As ComponentOccurrence)
		RenameExisting(name &amp;amp; num)
		RenameOcc(oOcc)
		If oOcc.DefinitionDocumentType = DocumentTypeEnum.kAssemblyDocumentObject
			For Each sOcc As ComponentOccurrence In oOcc.SubOccurrences
				TraverseAndSetNames(sOcc)
			Next
		End If
	End Sub
End Class&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;Let me know if it works for you or if I've misunderstood what you're trying to do &lt;img class="lia-deferred-image lia-image-emoji" src="https://forums.autodesk.com/html/@B4D44A73814D7FC0D950DEDFACB97081/emoticons/1f642.png" alt=":slightly_smiling_face:" title=":slightly_smiling_face:" /&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 30 Jun 2023 13:04:30 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12071792#M154674</guid>
      <dc:creator>JhoelForshav</dc:creator>
      <dc:date>2023-06-30T13:04:30Z</dc:date>
    </item>
    <item>
      <title>Re: Renaming components in assembly</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12071825#M154677</link>
      <description>&lt;P&gt;Thanks Jhoel, but this rule fail when it try to rename the iAssembly components :&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2023-06-30_15h12_48.jpg" style="width: 955px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1235329iA6DC3E68EBCC42AC/image-size/large?v=v2&amp;amp;px=999" role="button" title="2023-06-30_15h12_48.jpg" alt="2023-06-30_15h12_48.jpg" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2023-06-30_15h13_22.jpg" style="width: 360px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1235330i1D59587581C38D48/image-size/large?v=v2&amp;amp;px=999" role="button" title="2023-06-30_15h13_22.jpg" alt="2023-06-30_15h13_22.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;For information;&amp;nbsp;the link to this assembly is available above: Assembly_02.zip&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 30 Jun 2023 13:20:19 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12071825#M154677</guid>
      <dc:creator>philippe.lagrue</dc:creator>
      <dc:date>2023-06-30T13:20:19Z</dc:date>
    </item>
    <item>
      <title>Re: Renaming components in assembly</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12072007#M154684</link>
      <description>&lt;P&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/10150532"&gt;@philippe.lagrue&lt;/a&gt;&lt;/P&gt;
&lt;P&gt;I managed to change the names in the iAssembly by accessing the factory document of the iAssembly and changing the occurrence name in there. See if this works for you:&lt;/P&gt;
&lt;LI-CODE lang="visual-basic"&gt;Class ThisRule
	Dim name As String = "Part"
	Dim num As Integer = 1
	Dim existingOccs As ComponentOccurrencesEnumerator
	Sub Main
		iLogicvb.UpdateWhenDone = True
		Dim def As AssemblyComponentDefinition = ThisDoc.Document.ComponentDefinition
		existingOccs = def.Occurrences.AllReferencedOccurrences(def)
		For Each oOcc As ComponentOccurrence In def.Occurrences
			TraverseAndSetNames(oOcc)
		Next
	End Sub
	Sub RenameExisting(oName As String, Optional eOccs As ComponentOccurrencesEnumerator = Nothing)
		Dim existingOccWithName As ComponentOccurrence
		If eOccs Is Nothing
			existingOccWithName = existingOccs.OfType(Of ComponentOccurrence).FirstOrDefault(Function(x) x.Name = oName)
		Else
			existingOccWithName = eOccs.OfType(Of ComponentOccurrence).FirstOrDefault(Function(x) x.Name = oName)
		End If
		If existingOccWithName IsNot Nothing
			existingOccWithName.Name = oName &amp;amp; "_old"
		End If
	End Sub
	Sub RenameOcc(oOcc As ComponentOccurrence)
		oOcc.Name = name &amp;amp; num
		num += 1
	End Sub
	Sub TraverseAndSetNames(oOcc As ComponentOccurrence, Optional eOccs As ComponentOccurrencesEnumerator = Nothing)
		RenameExisting(name &amp;amp; num, eOccs)
		RenameOcc(oOcc)
		If oOcc.DefinitionDocumentType = DocumentTypeEnum.kAssemblyDocumentObject
			If oOcc.IsiAssemblyMember
				Dim iAssyMember As iAssemblyMember = oOcc.Definition.iAssemblyMember
				Dim def As AssemblyComponentDefinition = iAssyMember.ReferencedDocumentDescriptor.ReferencedDocument.ComponentDefinition
				For Each sOcc As ComponentOccurrence In def.Occurrences
					TraverseAndSetNames(sOcc, def.Occurrences.AllReferencedOccurrences(def))
				Next
				iAssyMember.ReferencedDocumentDescriptor.ReferencedDocument.Save2(True)
			Else
				For Each sOcc As ComponentOccurrence In oOcc.SubOccurrences
					TraverseAndSetNames(sOcc)
				Next
			End If
		End If
	End Sub
End Class&lt;/LI-CODE&gt;</description>
      <pubDate>Fri, 30 Jun 2023 14:30:23 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12072007#M154684</guid>
      <dc:creator>JhoelForshav</dc:creator>
      <dc:date>2023-06-30T14:30:23Z</dc:date>
    </item>
    <item>
      <title>Re: Renaming components in assembly</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12072053#M154686</link>
      <description>&lt;P&gt;Thank you very much Jhoel, it work nice.&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2023-06-30_16h50_39.jpg" style="width: 390px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1235371i2CC2E86C846E0B9C/image-size/large?v=v2&amp;amp;px=999" role="button" title="2023-06-30_16h50_39.jpg" alt="2023-06-30_16h50_39.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 30 Jun 2023 14:54:12 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12072053#M154686</guid>
      <dc:creator>philippe.lagrue</dc:creator>
      <dc:date>2023-06-30T14:54:12Z</dc:date>
    </item>
    <item>
      <title>Re: Renaming components in assembly</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12072283#M154691</link>
      <description>&lt;P&gt;I try now to convert your code to a VBA macro.&lt;/P&gt;&lt;P&gt;I have some difficulties with this line :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;existingOccWithName = existingOccs.OfType(Of ComponentOccurrence).FirstOrDefault(Function(x) x.Name = oName)&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 30 Jun 2023 16:21:59 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12072283#M154691</guid>
      <dc:creator>philippe.lagrue</dc:creator>
      <dc:date>2023-06-30T16:21:59Z</dc:date>
    </item>
    <item>
      <title>Re: Renaming components in assembly</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12072408#M154697</link>
      <description>&lt;P&gt;Hi &lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/10150532"&gt;@philippe.lagrue&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;VBA doesn't support lambda expressions so we'll have to rewrite the function to instead loop through the ComponentOccurrencesEnumerator to check if there's already an occurrence with the name.&lt;/P&gt;
&lt;P&gt;Something like this should work &lt;img class="lia-deferred-image lia-image-emoji" src="https://forums.autodesk.com/html/@B4D44A73814D7FC0D950DEDFACB97081/emoticons/1f642.png" alt=":slightly_smiling_face:" title=":slightly_smiling_face:" /&gt;&lt;/P&gt;
&lt;LI-CODE lang="visual-basic"&gt;Option Explicit

Dim name As String
Dim num As Integer
Dim existingOccs As ComponentOccurrencesEnumerator

Sub Main()
    Dim def As AssemblyComponentDefinition
    Set def = ThisApplication.ActiveDocument.ComponentDefinition
    Set existingOccs = def.Occurrences.AllReferencedOccurrences(def)
    num = 1
    name = "Part"
    
    Dim oOcc As ComponentOccurrence
    For Each oOcc In def.Occurrences
        TraverseAndSetNames oOcc
    Next oOcc
    def.Document.Update
End Sub

Sub RenameExisting(oName As String, Optional eOccs As ComponentOccurrencesEnumerator = Nothing)
    Dim existingOccWithName As ComponentOccurrence
    Dim oOcc As ComponentOccurrence
    
    If eOccs Is Nothing Then
        For Each oOcc In existingOccs
            If oOcc.name = oName Then
                Set existingOccWithName = oOcc
                Exit For
            End If
        Next oOcc
    Else
        For Each oOcc In eOccs
            If oOcc.name = oName Then
                Set existingOccWithName = oOcc
                Exit For
            End If
        Next oOcc
    End If
    
    If Not existingOccWithName Is Nothing Then
        existingOccWithName.name = oName &amp;amp; "_old"
    End If
End Sub

Sub RenameOcc(oOcc As ComponentOccurrence)
    oOcc.name = name &amp;amp; num
    num = num + 1
End Sub

Sub TraverseAndSetNames(oOcc As ComponentOccurrence, Optional eOccs As ComponentOccurrencesEnumerator = Nothing)
    RenameExisting name &amp;amp; num, eOccs
    RenameOcc oOcc
    
    If oOcc.DefinitionDocumentType = DocumentTypeEnum.kAssemblyDocumentObject Then
        If oOcc.IsiAssemblyMember Then
            Dim iAssyMember As iAssemblyMember
            Set iAssyMember = oOcc.Definition.iAssemblyMember
            Dim def As AssemblyComponentDefinition
            Set def = iAssyMember.ReferencedDocumentDescriptor.ReferencedDocument.ComponentDefinition
            
            Dim iOcc As ComponentOccurrence
            For Each iOcc In def.Occurrences
                TraverseAndSetNames iOcc, def.Occurrences.AllReferencedOccurrences(def)
            Next iOcc
            
            iAssyMember.ReferencedDocumentDescriptor.ReferencedDocument.Save2 True
        Else
            Dim sOcc As ComponentOccurrence
            For Each sOcc In oOcc.SubOccurrences
                TraverseAndSetNames sOcc
            Next sOcc
        End If
    End If
End Sub

&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 30 Jun 2023 17:19:16 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12072408#M154697</guid>
      <dc:creator>JhoelForshav</dc:creator>
      <dc:date>2023-06-30T17:19:16Z</dc:date>
    </item>
    <item>
      <title>Re: Renaming components in assembly</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12073541#M154709</link>
      <description>&lt;DIV class=""&gt;&lt;SPAN class=""&gt;&lt;A href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/5330176" target="_self"&gt;&lt;SPAN class=""&gt;JhoelForshav &lt;/SPAN&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp; that rule work just perfect like any of yours rules. I do have question:&amp;nbsp; running this rule in browser tree is changed name but how that name change into part number?&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;</description>
      <pubDate>Sat, 01 Jul 2023 12:39:57 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12073541#M154709</guid>
      <dc:creator>GosponZ</dc:creator>
      <dc:date>2023-07-01T12:39:57Z</dc:date>
    </item>
    <item>
      <title>Re: Renaming components in assembly</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12076005#M154724</link>
      <description>&lt;P&gt;Great , thank you Jhoel.&lt;/P&gt;</description>
      <pubDate>Mon, 03 Jul 2023 08:52:02 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12076005#M154724</guid>
      <dc:creator>philippe.lagrue</dc:creator>
      <dc:date>2023-07-03T08:52:02Z</dc:date>
    </item>
    <item>
      <title>Re: Renaming components in assembly</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12076865#M154744</link>
      <description>&lt;P&gt;Hi &lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/1097622"&gt;@GosponZ&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If I understand correctly, you want to use the part number as the name of each occurrence in the assembly.&lt;/P&gt;
&lt;P&gt;Something like this should do the trick &lt;img class="lia-deferred-image lia-image-emoji" src="https://forums.autodesk.com/html/@B4D44A73814D7FC0D950DEDFACB97081/emoticons/1f642.png" alt=":slightly_smiling_face:" title=":slightly_smiling_face:" /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;SPAN&gt;Class&lt;/SPAN&gt; &lt;SPAN&gt;ThisRule&lt;/SPAN&gt;
	&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;Main&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;def&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyComponentDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;ThisDoc&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
		&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;def&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;
			&lt;SPAN&gt;TraverseAndSetNames&lt;/SPAN&gt;(&lt;SPAN&gt;oOcc&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;Sub&lt;/SPAN&gt; &lt;SPAN&gt;RenameOcc&lt;/SPAN&gt;(&lt;SPAN&gt;oOcc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt;)
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;partNum&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Definition&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt;.&lt;SPAN&gt;PropertySets&lt;/SPAN&gt;(&lt;SPAN&gt;"{32853F0F-3444-11D1-9E93-0060B03C1CA6}"&lt;/SPAN&gt;).&lt;SPAN&gt;ItemByPropId&lt;/SPAN&gt;(5).&lt;SPAN&gt;Value&lt;/SPAN&gt;
		&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Parent&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;.&lt;SPAN&gt;OfType&lt;/SPAN&gt;(&lt;SPAN&gt;Of&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt;).&lt;SPAN&gt;FirstOrDefault&lt;/SPAN&gt;(&lt;SPAN&gt;Function&lt;/SPAN&gt;(&lt;SPAN&gt;x&lt;/SPAN&gt;) &lt;SPAN&gt;x&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;partNum&lt;/SPAN&gt; &lt;SPAN&gt;Or&lt;/SPAN&gt; &lt;SPAN&gt;x&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;.&lt;SPAN&gt;StartsWith&lt;/SPAN&gt;(&lt;SPAN&gt;partNum&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;":"&lt;/SPAN&gt;)) &lt;SPAN&gt;Is&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&lt;/SPAN&gt;
			&lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;partNum&lt;/SPAN&gt;
		&lt;SPAN&gt;ElseIf&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Parent&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;.&lt;SPAN&gt;OfType&lt;/SPAN&gt;(&lt;SPAN&gt;Of&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt;).&lt;SPAN&gt;FirstOrDefault&lt;/SPAN&gt;(&lt;SPAN&gt;Function&lt;/SPAN&gt;(&lt;SPAN&gt;x&lt;/SPAN&gt;) &lt;SPAN&gt;x&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;partNum&lt;/SPAN&gt; &lt;SPAN&gt;AndAlso&lt;/SPAN&gt; &lt;SPAN&gt;x&lt;/SPAN&gt; &lt;SPAN&gt;IsNot&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt;) &lt;SPAN&gt;Is&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&lt;/SPAN&gt;
			&lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;partNum&lt;/SPAN&gt;
		&lt;SPAN&gt;Else&lt;/SPAN&gt;
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;i&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt; = 1
			&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;eOcc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Parent&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;
				&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;eOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;partNum&lt;/SPAN&gt; &lt;SPAN&gt;Or&lt;/SPAN&gt; &lt;SPAN&gt;eOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;.&lt;SPAN&gt;StartsWith&lt;/SPAN&gt;(&lt;SPAN&gt;partNum&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;":"&lt;/SPAN&gt;)
					&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;eOcc&lt;/SPAN&gt; &lt;SPAN&gt;IsNot&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt;
						&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oName&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;partNum&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;":"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;i&lt;/SPAN&gt;
						&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;existingOcc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt; = &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Parent&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;.&lt;SPAN&gt;OfType&lt;/SPAN&gt;(&lt;SPAN&gt;Of&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt;).&lt;SPAN&gt;FirstOrDefault&lt;/SPAN&gt;(&lt;SPAN&gt;Function&lt;/SPAN&gt;(&lt;SPAN&gt;x&lt;/SPAN&gt;) &lt;SPAN&gt;x&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;oName&lt;/SPAN&gt;)
						&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;existingOcc&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;existingOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;oName&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"_temp"&lt;/SPAN&gt;
						&lt;SPAN&gt;eOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;oName&lt;/SPAN&gt;
						&lt;SPAN&gt;i&lt;/SPAN&gt; += 1
					&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
				&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
			&lt;SPAN&gt;Next&lt;/SPAN&gt;
			&lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt; = &lt;SPAN&gt;partNum&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;":"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;i&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;Sub&lt;/SPAN&gt;
	&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;TraverseAndSetNames&lt;/SPAN&gt;(&lt;SPAN&gt;oOcc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt;)
		&lt;SPAN&gt;RenameOcc&lt;/SPAN&gt;(&lt;SPAN&gt;oOcc&lt;/SPAN&gt;)
		&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;DefinitionDocumentType&lt;/SPAN&gt; = &lt;SPAN&gt;DocumentTypeEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kAssemblyDocumentObject&lt;/SPAN&gt;
			&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;IsiAssemblyMember&lt;/SPAN&gt;
				&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;iAssyMember&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;iAssemblyMember&lt;/SPAN&gt; = &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Definition&lt;/SPAN&gt;.&lt;SPAN&gt;iAssemblyMember&lt;/SPAN&gt;
				&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;def&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyComponentDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;iAssyMember&lt;/SPAN&gt;.&lt;SPAN&gt;ReferencedDocumentDescriptor&lt;/SPAN&gt;.&lt;SPAN&gt;ReferencedDocument&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;
				&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;sOcc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;def&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;
					&lt;SPAN&gt;TraverseAndSetNames&lt;/SPAN&gt;(&lt;SPAN&gt;sOcc&lt;/SPAN&gt;)
				&lt;SPAN&gt;Next&lt;/SPAN&gt;
				&lt;SPAN&gt;iAssyMember&lt;/SPAN&gt;.&lt;SPAN&gt;ReferencedDocumentDescriptor&lt;/SPAN&gt;.&lt;SPAN&gt;ReferencedDocument&lt;/SPAN&gt;.&lt;SPAN&gt;Save2&lt;/SPAN&gt;(&lt;SPAN&gt;True&lt;/SPAN&gt;)
			&lt;SPAN&gt;Else&lt;/SPAN&gt;
				&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;sOcc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;SubOccurrences&lt;/SPAN&gt;
					&lt;SPAN&gt;TraverseAndSetNames&lt;/SPAN&gt;(&lt;SPAN&gt;sOcc&lt;/SPAN&gt;)
				&lt;SPAN&gt;Next&lt;/SPAN&gt;
			&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
		&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Class&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;I had to add numbering to the names if there are multiple occurrences in the same assembly with the same part number. I used a colon as a separator for this (&amp;lt;Part Number&amp;gt;:&amp;lt;Number&amp;gt;). If you use part numbers containing colons maybe use another character for the saparation &lt;img class="lia-deferred-image lia-image-emoji" src="https://forums.autodesk.com/html/@B4D44A73814D7FC0D950DEDFACB97081/emoticons/1f642.png" alt=":slightly_smiling_face:" title=":slightly_smiling_face:" /&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 03 Jul 2023 16:35:17 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12076865#M154744</guid>
      <dc:creator>JhoelForshav</dc:creator>
      <dc:date>2023-07-03T16:35:17Z</dc:date>
    </item>
    <item>
      <title>Re: Renaming components in assembly</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12077010#M154745</link>
      <description>&lt;P&gt;Just opposite.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="GosponZ_0-1688406303730.png" style="width: 600px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1236090i19EA48A9A2F6580E/image-size/medium?v=v2&amp;amp;px=400" role="button" title="GosponZ_0-1688406303730.png" alt="GosponZ_0-1688406303730.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="GosponZ_1-1688406353173.png" style="width: 600px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1236091i3E93AE9A17BBAACB/image-size/medium?v=v2&amp;amp;px=400" role="button" title="GosponZ_1-1688406353173.png" alt="GosponZ_1-1688406353173.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 03 Jul 2023 17:46:02 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/renaming-components-in-assembly/m-p/12077010#M154745</guid>
      <dc:creator>GosponZ</dc:creator>
      <dc:date>2023-07-03T17:46:02Z</dc:date>
    </item>
  </channel>
</rss>

