<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Rule to Open Drawing of every part in Assembly in Inventor Programming - iLogic, Macros, AddIns &amp; Apprentice</title>
    <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/rule-to-open-drawing-of-every-part-in-assembly/m-p/12561222#M163747</link>
    <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/13628241"&gt;@david_lowndes&lt;/a&gt;,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I think I use a slightly different method to you, and it's spliced from other rules we currently use so it may be a little longer than necesssary, but I use this to open all existing drawings of parts within an assembly.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;'For mass updating small changes to part/assembly details to their respective Drawings.&lt;/SPAN&gt;

&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;main&lt;/SPAN&gt; &lt;SPAN&gt;'[&lt;/SPAN&gt;
	
	&lt;SPAN&gt;'Create a List of all Componenets&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;ComponentMap&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;NameValueMap&lt;/SPAN&gt; = &lt;SPAN&gt;CreateComponentMap&lt;/SPAN&gt;()
	
	&lt;SPAN&gt;'Check for zero result, run updater&lt;/SPAN&gt;
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Not&lt;/SPAN&gt; &lt;SPAN&gt;ComponentMap&lt;/SPAN&gt; &lt;SPAN&gt;Is&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
		&lt;SPAN&gt;'Check Assembly for files without a drawing&lt;/SPAN&gt;
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;nonIDW&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt; = &lt;SPAN&gt;CheckAssemblyIDW&lt;/SPAN&gt;(&lt;SPAN&gt;ComponentMap&lt;/SPAN&gt;)
		
		&lt;SPAN&gt;UpdaterGo&lt;/SPAN&gt;(&lt;SPAN&gt;ComponentMap&lt;/SPAN&gt;, &lt;SPAN&gt;nonIDW&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;']&lt;/SPAN&gt;

&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;UpdaterGo&lt;/SPAN&gt;(&lt;SPAN&gt;vMap&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;NameValueMap&lt;/SPAN&gt;, &lt;SPAN&gt;nonIDW&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt;)
	
	&lt;SPAN&gt;CreateProgressBar&lt;/SPAN&gt;(&lt;SPAN&gt;"Opening IDWs..."&lt;/SPAN&gt;, &lt;SPAN&gt;"Opened: "&lt;/SPAN&gt;, (&lt;SPAN&gt;vMap&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt;-&lt;SPAN&gt;nonIDW&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;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;vDoc&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;i&lt;/SPAN&gt; = 1 &lt;SPAN&gt;To&lt;/SPAN&gt; &lt;SPAN&gt;vMap&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt;
		
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;vFullFileName&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;vMap&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;)
		
		&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;CheckForFileIDW&lt;/SPAN&gt;(&lt;SPAN&gt;vFullFileName&lt;/SPAN&gt;) = &lt;SPAN&gt;True&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
			
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;idwPathName&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;Left&lt;/SPAN&gt;(&lt;SPAN&gt;vFullFileName&lt;/SPAN&gt;, &lt;SPAN&gt;Len&lt;/SPAN&gt;(&lt;SPAN&gt;vFullFileName&lt;/SPAN&gt;) -3) &amp;amp; &lt;SPAN&gt;"idw"&lt;/SPAN&gt;
			&lt;SPAN&gt;vDoc&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;Documents&lt;/SPAN&gt;.&lt;SPAN&gt;Open&lt;/SPAN&gt;(&lt;SPAN&gt;idwPathName&lt;/SPAN&gt;, &lt;SPAN&gt;True&lt;/SPAN&gt;)
			&lt;SPAN&gt;System&lt;/SPAN&gt;.&lt;SPAN&gt;Threading&lt;/SPAN&gt;.&lt;SPAN&gt;Thread&lt;/SPAN&gt;.&lt;SPAN&gt;CurrentThread&lt;/SPAN&gt;.&lt;SPAN&gt;Sleep&lt;/SPAN&gt;(1000)
			&lt;SPAN&gt;IncrementProgressBar&lt;/SPAN&gt;(1)
			
		&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
		
	&lt;SPAN&gt;Next&lt;/SPAN&gt;
	
	&lt;SPAN&gt;ThisProgressBar&lt;/SPAN&gt;.&lt;SPAN&gt;Close&lt;/SPAN&gt;
	&lt;SPAN&gt;MessageBox&lt;/SPAN&gt;.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;"All Drawings Opened."&lt;/SPAN&gt;, &lt;SPAN&gt;"Update Complete"&lt;/SPAN&gt;, &lt;SPAN&gt;MessageBoxButtons&lt;/SPAN&gt;.&lt;SPAN&gt;OK&lt;/SPAN&gt;, &lt;SPAN&gt;MessageBoxIcon&lt;/SPAN&gt;.&lt;SPAN&gt;Information&lt;/SPAN&gt;)			
	
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;

&lt;SPAN&gt;'Check each file for a corresponding idw&lt;/SPAN&gt;
&lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;CheckForFileIDW&lt;/SPAN&gt;(&lt;SPAN&gt;FileName&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;State&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Boolean&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;idwPathName&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;Left&lt;/SPAN&gt;(&lt;SPAN&gt;FileName&lt;/SPAN&gt;, &lt;SPAN&gt;Len&lt;/SPAN&gt;(&lt;SPAN&gt;FileName&lt;/SPAN&gt;) -3) &amp;amp; &lt;SPAN&gt;"idw"&lt;/SPAN&gt;
	&lt;SPAN&gt;If&lt;/SPAN&gt; (&lt;SPAN&gt;System&lt;/SPAN&gt;.&lt;SPAN&gt;IO&lt;/SPAN&gt;.&lt;SPAN&gt;File&lt;/SPAN&gt;.&lt;SPAN&gt;Exists&lt;/SPAN&gt;(&lt;SPAN&gt;idwPathName&lt;/SPAN&gt;)) = 0 &lt;SPAN&gt;Then&lt;/SPAN&gt;
		&lt;SPAN&gt;State&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt;
		&lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;State&lt;/SPAN&gt;
	&lt;SPAN&gt;Else&lt;/SPAN&gt; 
	&lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;State&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;Function&lt;/SPAN&gt;

&lt;SPAN&gt;'Uses BOM iLogic Rule to produce Component List&lt;/SPAN&gt;
&lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;CreateComponentMap&lt;/SPAN&gt;() &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;NameValueMap&lt;/SPAN&gt;
	
	&lt;SPAN&gt;'Initialise Arguments&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oRuleArguments&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;NameValueMap&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;.&lt;SPAN&gt;CreateNameValueMap&lt;/SPAN&gt;()
	
	&lt;SPAN&gt;'find Project Folder Location in preparation to call external rule&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;IPJ&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;IPJ_Name&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;IPJ_Path&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;FNamePos&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Long&lt;/SPAN&gt;
	&lt;SPAN&gt;'set a reference to the FileLocations object.&lt;/SPAN&gt;
	&lt;SPAN&gt;IPJ&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;FileLocations&lt;/SPAN&gt;.&lt;SPAN&gt;FileLocationsFile&lt;/SPAN&gt;
	&lt;SPAN&gt;'get the location of the last backslash seperator&lt;/SPAN&gt;
	&lt;SPAN&gt;FNamePos&lt;/SPAN&gt; = &lt;SPAN&gt;InStrRev&lt;/SPAN&gt;(&lt;SPAN&gt;IPJ&lt;/SPAN&gt;, &lt;SPAN&gt;"\"&lt;/SPAN&gt;, -1)    
	&lt;SPAN&gt;'get the project file name with the file extension&lt;/SPAN&gt;
	&lt;SPAN&gt;IPJ_Name&lt;/SPAN&gt; = &lt;SPAN&gt;Right&lt;/SPAN&gt;(&lt;SPAN&gt;IPJ&lt;/SPAN&gt;, &lt;SPAN&gt;Len&lt;/SPAN&gt;(&lt;SPAN&gt;IPJ&lt;/SPAN&gt;) - &lt;SPAN&gt;FNamePos&lt;/SPAN&gt;)
	&lt;SPAN&gt;'get the path of the folder containing the project file&lt;/SPAN&gt;
	&lt;SPAN&gt;IPJ_Folder_Location&lt;/SPAN&gt; = &lt;SPAN&gt;Left&lt;/SPAN&gt;(&lt;SPAN&gt;IPJ&lt;/SPAN&gt;, &lt;SPAN&gt;Len&lt;/SPAN&gt;(&lt;SPAN&gt;IPJ&lt;/SPAN&gt;) -&lt;SPAN&gt;Len&lt;/SPAN&gt;(&lt;SPAN&gt;IPJ_Name&lt;/SPAN&gt;))
	&lt;SPAN&gt;'Call External Rule&lt;/SPAN&gt;
	&lt;SPAN&gt;iLogicVb&lt;/SPAN&gt;.&lt;SPAN&gt;RunExternalRule&lt;/SPAN&gt;(&lt;SPAN&gt;IPJ_Folder_Location&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"iLogic Scripts\BOM"&lt;/SPAN&gt;, &lt;SPAN&gt;oRuleArguments&lt;/SPAN&gt;)
	
	&lt;SPAN&gt;'Retreive Result&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;Result&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;NameValueMap&lt;/SPAN&gt;
	&lt;SPAN&gt;Try&lt;/SPAN&gt;
		&lt;SPAN&gt;Result&lt;/SPAN&gt; = &lt;SPAN&gt;CType&lt;/SPAN&gt;(&lt;SPAN&gt;oRuleArguments&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;"BOM"&lt;/SPAN&gt;), &lt;SPAN&gt;NameValueMap&lt;/SPAN&gt;)
	&lt;SPAN&gt;Catch&lt;/SPAN&gt;
		&lt;SPAN&gt;Result&lt;/SPAN&gt; = &lt;SPAN&gt;Nothing&lt;/SPAN&gt;
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;Result&lt;/SPAN&gt;
	
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;

&lt;SPAN&gt;'Cycle through all unique assembly parts to check for an idw&lt;/SPAN&gt;
&lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;CheckAssemblyIDW&lt;/SPAN&gt;(&lt;SPAN&gt;oList&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;NameValueMap&lt;/SPAN&gt;)
	
	&lt;SPAN&gt;oContext&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;.&lt;SPAN&gt;CreateTranslationContext&lt;/SPAN&gt;
	&lt;SPAN&gt;oContext&lt;/SPAN&gt;.&lt;SPAN&gt;Type&lt;/SPAN&gt; = &lt;SPAN&gt;IOMechanismEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kFileBrowseIOMechanism&lt;/SPAN&gt;
	&lt;SPAN&gt;oOptions&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;.&lt;SPAN&gt;CreateNameValueMap&lt;/SPAN&gt;
	&lt;SPAN&gt;oDataMedium&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;.&lt;SPAN&gt;CreateDataMedium&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;Dim&lt;/SPAN&gt; &lt;SPAN&gt;k&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt; = 1
	
	&lt;SPAN&gt;'Dim txtFileName As String =  ThisDoc.PathAndFileName(True) &amp;amp; " No IDWs.txt"&lt;/SPAN&gt;
	
	&lt;SPAN&gt;'oMsg = System.IO.File.CreateText(txtFileName)&lt;/SPAN&gt;
&lt;SPAN&gt;'	oMsg.WriteLine("Parts and Assemblies with No IDW file:")&lt;/SPAN&gt;
	&lt;SPAN&gt;'oMsg.WriteLine("")&lt;/SPAN&gt;
	
	&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;i&lt;/SPAN&gt; = 1 &lt;SPAN&gt;To&lt;/SPAN&gt; &lt;SPAN&gt;oList&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt;
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;vFullFileName&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;oList&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;)
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;idwPathName&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;Left&lt;/SPAN&gt;(&lt;SPAN&gt;vFullFileName&lt;/SPAN&gt;, &lt;SPAN&gt;Len&lt;/SPAN&gt;(&lt;SPAN&gt;vFullFileName&lt;/SPAN&gt;) -3) &amp;amp; &lt;SPAN&gt;"idw"&lt;/SPAN&gt;
		
		&lt;SPAN&gt;'List parts/assemblies without an idw two to a line&lt;/SPAN&gt;
		&lt;SPAN&gt;If&lt;/SPAN&gt; (&lt;SPAN&gt;System&lt;/SPAN&gt;.&lt;SPAN&gt;IO&lt;/SPAN&gt;.&lt;SPAN&gt;File&lt;/SPAN&gt;.&lt;SPAN&gt;Exists&lt;/SPAN&gt;(&lt;SPAN&gt;idwPathName&lt;/SPAN&gt;)) = 0 &lt;SPAN&gt;Then&lt;/SPAN&gt;
				&lt;SPAN&gt;'oMsg.WriteLine(k &amp;amp; ". " &amp;amp; Right(vFullFileName, Len(vFullFileName) -InStrRev(vFullFileName, "\")) &amp;amp; "	")&lt;/SPAN&gt;
				&lt;SPAN&gt;k&lt;/SPAN&gt; = &lt;SPAN&gt;k&lt;/SPAN&gt; + 1
		&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;		
	&lt;SPAN&gt;Next&lt;/SPAN&gt;
	&lt;SPAN&gt;'oMsg.Close&lt;/SPAN&gt;
	&lt;SPAN&gt;'ThisDoc.Launch(txtFileName)&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;k&lt;/SPAN&gt; - 1
	
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;

&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;ThisProgressBar&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;ProgressBar&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;ThisProgressBarMessage&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;ThisProgressBarTotal&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;ThisProgressBarCount&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt;

&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;CreateProgressBar&lt;/SPAN&gt;(&lt;SPAN&gt;Title&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;, &lt;SPAN&gt;Message&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;, &lt;SPAN&gt;Total&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt;)

	&lt;SPAN&gt;ThisProgressBar&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;CreateProgressBar&lt;/SPAN&gt;(&lt;SPAN&gt;False&lt;/SPAN&gt;, &lt;SPAN&gt;Total&lt;/SPAN&gt;, &lt;SPAN&gt;Title&lt;/SPAN&gt;)
	&lt;SPAN&gt;ThisProgressBarMessage&lt;/SPAN&gt; = &lt;SPAN&gt;Message&lt;/SPAN&gt;
	&lt;SPAN&gt;ThisProgressBarTotal&lt;/SPAN&gt; = &lt;SPAN&gt;Total&lt;/SPAN&gt;
	&lt;SPAN&gt;ThisProgressBarCount&lt;/SPAN&gt; = 0
	
	&lt;SPAN&gt;ProgressBarDisplay&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;IncrementProgressBar&lt;/SPAN&gt;(&lt;SPAN&gt;Change&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt;)
	
	&lt;SPAN&gt;ThisProgressBarCount&lt;/SPAN&gt; = &lt;SPAN&gt;ThisProgressBarCount&lt;/SPAN&gt; + &lt;SPAN&gt;Change&lt;/SPAN&gt;
	
	&lt;SPAN&gt;ProgressBarDisplay&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;ProgressBarDisplay&lt;/SPAN&gt;()
	
	&lt;SPAN&gt;ThisProgressBar&lt;/SPAN&gt;.&lt;SPAN&gt;Message&lt;/SPAN&gt; = &lt;SPAN&gt;ThisProgressBarMessage&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;ThisProgressBarCount&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"/"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;ThisProgressBarTotal&lt;/SPAN&gt;
	&lt;SPAN&gt;ThisProgressBar&lt;/SPAN&gt;.&lt;SPAN&gt;UpdateProgress&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;/P&gt;</description>
    <pubDate>Thu, 15 Feb 2024 02:31:54 GMT</pubDate>
    <dc:creator>ross_goldbergQU7DJ</dc:creator>
    <dc:date>2024-02-15T02:31:54Z</dc:date>
    <item>
      <title>Rule to Open Drawing of every part in Assembly</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/rule-to-open-drawing-of-every-part-in-assembly/m-p/12552959#M163569</link>
      <description>&lt;P&gt;Hi.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have written rules to open drawings based on the BOM before, but now I am using vault I am trying to use&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;CommandManager&lt;/SPAN&gt;.&lt;SPAN&gt;ControlDefinitions&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;"VaultOpenDesignDocFromVault"&lt;/SPAN&gt;).&lt;SPAN&gt;Execute&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;I know to get this to work I need to select an Occurrence first, so I am using&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;CommandManager&lt;/SPAN&gt;.&lt;SPAN&gt;DoSelect&lt;/SPAN&gt;(&lt;SPAN&gt;oOcc&lt;/SPAN&gt;)&lt;/PRE&gt;&lt;P&gt;But my rule just keeps opening the same drawing over and over. Do I need to clear the selection somehow?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is the code in question:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;    &lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;i&lt;/SPAN&gt; =1 &lt;SPAN&gt;To&lt;/SPAN&gt; &lt;SPAN&gt;oBOMRows&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt;
    
        
        
        &lt;SPAN&gt;BOMItem&lt;/SPAN&gt; = &lt;SPAN&gt;oBOMView&lt;/SPAN&gt;.&lt;SPAN&gt;BOMRows&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;)
        
        &lt;SPAN&gt;oCompDef&lt;/SPAN&gt; = &lt;SPAN&gt;BOMItem&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinitions&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(1)
        
        &lt;SPAN&gt;'If oCompDef.BOMStructure &amp;lt;&amp;gt; 51972 Then&lt;/SPAN&gt;
        &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;BOMStructure&lt;/SPAN&gt; &amp;lt;&amp;gt; 51973 &lt;SPAN&gt;Then&lt;/SPAN&gt;
        
            &lt;SPAN&gt;PartNum&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;Document&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;Item&lt;/SPAN&gt;(&lt;SPAN&gt;"Part Number"&lt;/SPAN&gt;).&lt;SPAN&gt;Value&lt;/SPAN&gt;
            &lt;SPAN&gt;VenNum&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;Document&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;Item&lt;/SPAN&gt;(&lt;SPAN&gt;"Vendor"&lt;/SPAN&gt;).&lt;SPAN&gt;Value&lt;/SPAN&gt;
            &lt;SPAN&gt;DesNum&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;Document&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;Item&lt;/SPAN&gt;(&lt;SPAN&gt;"Description"&lt;/SPAN&gt;).&lt;SPAN&gt;Value&lt;/SPAN&gt;
            &lt;SPAN&gt;'PartNum = oCompDef.Document.PropertySets.Item(4).Item(2).Value&lt;/SPAN&gt;
                    
            &lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;LongName&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;DesNum&lt;/SPAN&gt; 
            
			&lt;SPAN&gt;Try&lt;/SPAN&gt;
				
				&lt;SPAN&gt;MsgBox&lt;/SPAN&gt;(&lt;SPAN&gt;PartNum&lt;/SPAN&gt;)
				&lt;SPAN&gt;oOcc&lt;/SPAN&gt; = &lt;SPAN&gt;Component&lt;/SPAN&gt;.&lt;SPAN&gt;InventorComponent&lt;/SPAN&gt;(&lt;SPAN&gt;PartNum&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;":1"&lt;/SPAN&gt;)
				
				&lt;SPAN&gt;'MsgBox("Got Occurence of " &amp;amp; PartNum)&lt;/SPAN&gt;
				
				&lt;SPAN&gt;CurrentDocName&lt;/SPAN&gt; = &lt;SPAN&gt;oCompDef&lt;/SPAN&gt;.&lt;SPAN&gt;Document&lt;/SPAN&gt;.&lt;SPAN&gt;FullFileName&lt;/SPAN&gt;
				
				
				
				&lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;CommandManager&lt;/SPAN&gt;.&lt;SPAN&gt;DoSelect&lt;/SPAN&gt;(&lt;SPAN&gt;oOcc&lt;/SPAN&gt;)
				
				
				
				&lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;CommandManager&lt;/SPAN&gt;.&lt;SPAN&gt;ControlDefinitions&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;"VaultOpenDesignDocFromVault"&lt;/SPAN&gt;).&lt;SPAN&gt;Execute&lt;/SPAN&gt;
				
				
				
			&lt;SPAN&gt;Catch&lt;/SPAN&gt;
				
				&lt;SPAN&gt;Msgbox&lt;/SPAN&gt;(&lt;SPAN&gt;"Failed to get"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;PartNum&lt;/SPAN&gt;)
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
			
			                            
            
        &lt;SPAN&gt;Else&lt;/SPAN&gt;
        
            &lt;SPAN&gt;'do nothing&lt;/SPAN&gt;
        
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
		
		&lt;SPAN&gt;Try&lt;/SPAN&gt;
			
			&lt;SPAN&gt;DrawDoc&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;ActiveDocument&lt;/SPAN&gt;
			
			&lt;SPAN&gt;DrawName&lt;/SPAN&gt; = &lt;SPAN&gt;DrawDoc&lt;/SPAN&gt;.&lt;SPAN&gt;FullFileName&lt;/SPAN&gt;
			
			
			
			
			&lt;SPAN&gt;DrawDoc&lt;/SPAN&gt;.&lt;SPAN&gt;Close&lt;/SPAN&gt;
		
		&lt;SPAN&gt;Catch&lt;/SPAN&gt;
			
		&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
		
		
        
    &lt;SPAN&gt;Next&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;Thanks to anyone who can help&lt;/P&gt;</description>
      <pubDate>Sat, 10 Feb 2024 21:58:18 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/rule-to-open-drawing-of-every-part-in-assembly/m-p/12552959#M163569</guid>
      <dc:creator>david_lowndes</dc:creator>
      <dc:date>2024-02-10T21:58:18Z</dc:date>
    </item>
    <item>
      <title>Re: Rule to Open Drawing of every part in Assembly</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/rule-to-open-drawing-of-every-part-in-assembly/m-p/12552978#M163573</link>
      <description>&lt;P&gt;I would use selectset and selectset.select and than run the controldefintion open from vault. Than clear the selectset.&lt;/P&gt;</description>
      <pubDate>Sat, 10 Feb 2024 22:21:56 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/rule-to-open-drawing-of-every-part-in-assembly/m-p/12552978#M163573</guid>
      <dc:creator>bradeneuropeArthur</dc:creator>
      <dc:date>2024-02-10T22:21:56Z</dc:date>
    </item>
    <item>
      <title>Re: Rule to Open Drawing of every part in Assembly</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/rule-to-open-drawing-of-every-part-in-assembly/m-p/12553377#M163576</link>
      <description>&lt;P&gt;Thank you&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Clearing the selectset makes sense.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However, I am having trouble using selectset to select the part to open the drawing of, any advice on this?&lt;/P&gt;</description>
      <pubDate>Sun, 11 Feb 2024 08:59:51 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/rule-to-open-drawing-of-every-part-in-assembly/m-p/12553377#M163576</guid>
      <dc:creator>david_lowndes</dc:creator>
      <dc:date>2024-02-11T08:59:51Z</dc:date>
    </item>
    <item>
      <title>Re: Rule to Open Drawing of every part in Assembly</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/rule-to-open-drawing-of-every-part-in-assembly/m-p/12561222#M163747</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/13628241"&gt;@david_lowndes&lt;/a&gt;,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I think I use a slightly different method to you, and it's spliced from other rules we currently use so it may be a little longer than necesssary, but I use this to open all existing drawings of parts within an assembly.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;'For mass updating small changes to part/assembly details to their respective Drawings.&lt;/SPAN&gt;

&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;main&lt;/SPAN&gt; &lt;SPAN&gt;'[&lt;/SPAN&gt;
	
	&lt;SPAN&gt;'Create a List of all Componenets&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;ComponentMap&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;NameValueMap&lt;/SPAN&gt; = &lt;SPAN&gt;CreateComponentMap&lt;/SPAN&gt;()
	
	&lt;SPAN&gt;'Check for zero result, run updater&lt;/SPAN&gt;
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Not&lt;/SPAN&gt; &lt;SPAN&gt;ComponentMap&lt;/SPAN&gt; &lt;SPAN&gt;Is&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
		&lt;SPAN&gt;'Check Assembly for files without a drawing&lt;/SPAN&gt;
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;nonIDW&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt; = &lt;SPAN&gt;CheckAssemblyIDW&lt;/SPAN&gt;(&lt;SPAN&gt;ComponentMap&lt;/SPAN&gt;)
		
		&lt;SPAN&gt;UpdaterGo&lt;/SPAN&gt;(&lt;SPAN&gt;ComponentMap&lt;/SPAN&gt;, &lt;SPAN&gt;nonIDW&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;']&lt;/SPAN&gt;

&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;UpdaterGo&lt;/SPAN&gt;(&lt;SPAN&gt;vMap&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;NameValueMap&lt;/SPAN&gt;, &lt;SPAN&gt;nonIDW&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt;)
	
	&lt;SPAN&gt;CreateProgressBar&lt;/SPAN&gt;(&lt;SPAN&gt;"Opening IDWs..."&lt;/SPAN&gt;, &lt;SPAN&gt;"Opened: "&lt;/SPAN&gt;, (&lt;SPAN&gt;vMap&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt;-&lt;SPAN&gt;nonIDW&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;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;vDoc&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;i&lt;/SPAN&gt; = 1 &lt;SPAN&gt;To&lt;/SPAN&gt; &lt;SPAN&gt;vMap&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt;
		
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;vFullFileName&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;vMap&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;)
		
		&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;CheckForFileIDW&lt;/SPAN&gt;(&lt;SPAN&gt;vFullFileName&lt;/SPAN&gt;) = &lt;SPAN&gt;True&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
			
			&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;idwPathName&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;Left&lt;/SPAN&gt;(&lt;SPAN&gt;vFullFileName&lt;/SPAN&gt;, &lt;SPAN&gt;Len&lt;/SPAN&gt;(&lt;SPAN&gt;vFullFileName&lt;/SPAN&gt;) -3) &amp;amp; &lt;SPAN&gt;"idw"&lt;/SPAN&gt;
			&lt;SPAN&gt;vDoc&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;Documents&lt;/SPAN&gt;.&lt;SPAN&gt;Open&lt;/SPAN&gt;(&lt;SPAN&gt;idwPathName&lt;/SPAN&gt;, &lt;SPAN&gt;True&lt;/SPAN&gt;)
			&lt;SPAN&gt;System&lt;/SPAN&gt;.&lt;SPAN&gt;Threading&lt;/SPAN&gt;.&lt;SPAN&gt;Thread&lt;/SPAN&gt;.&lt;SPAN&gt;CurrentThread&lt;/SPAN&gt;.&lt;SPAN&gt;Sleep&lt;/SPAN&gt;(1000)
			&lt;SPAN&gt;IncrementProgressBar&lt;/SPAN&gt;(1)
			
		&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
		
	&lt;SPAN&gt;Next&lt;/SPAN&gt;
	
	&lt;SPAN&gt;ThisProgressBar&lt;/SPAN&gt;.&lt;SPAN&gt;Close&lt;/SPAN&gt;
	&lt;SPAN&gt;MessageBox&lt;/SPAN&gt;.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;"All Drawings Opened."&lt;/SPAN&gt;, &lt;SPAN&gt;"Update Complete"&lt;/SPAN&gt;, &lt;SPAN&gt;MessageBoxButtons&lt;/SPAN&gt;.&lt;SPAN&gt;OK&lt;/SPAN&gt;, &lt;SPAN&gt;MessageBoxIcon&lt;/SPAN&gt;.&lt;SPAN&gt;Information&lt;/SPAN&gt;)			
	
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;

&lt;SPAN&gt;'Check each file for a corresponding idw&lt;/SPAN&gt;
&lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;CheckForFileIDW&lt;/SPAN&gt;(&lt;SPAN&gt;FileName&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;State&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Boolean&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;idwPathName&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;Left&lt;/SPAN&gt;(&lt;SPAN&gt;FileName&lt;/SPAN&gt;, &lt;SPAN&gt;Len&lt;/SPAN&gt;(&lt;SPAN&gt;FileName&lt;/SPAN&gt;) -3) &amp;amp; &lt;SPAN&gt;"idw"&lt;/SPAN&gt;
	&lt;SPAN&gt;If&lt;/SPAN&gt; (&lt;SPAN&gt;System&lt;/SPAN&gt;.&lt;SPAN&gt;IO&lt;/SPAN&gt;.&lt;SPAN&gt;File&lt;/SPAN&gt;.&lt;SPAN&gt;Exists&lt;/SPAN&gt;(&lt;SPAN&gt;idwPathName&lt;/SPAN&gt;)) = 0 &lt;SPAN&gt;Then&lt;/SPAN&gt;
		&lt;SPAN&gt;State&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt;
		&lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;State&lt;/SPAN&gt;
	&lt;SPAN&gt;Else&lt;/SPAN&gt; 
	&lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;State&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;Function&lt;/SPAN&gt;

&lt;SPAN&gt;'Uses BOM iLogic Rule to produce Component List&lt;/SPAN&gt;
&lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;CreateComponentMap&lt;/SPAN&gt;() &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;NameValueMap&lt;/SPAN&gt;
	
	&lt;SPAN&gt;'Initialise Arguments&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oRuleArguments&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;NameValueMap&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;.&lt;SPAN&gt;CreateNameValueMap&lt;/SPAN&gt;()
	
	&lt;SPAN&gt;'find Project Folder Location in preparation to call external rule&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;IPJ&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;IPJ_Name&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;IPJ_Path&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;FNamePos&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Long&lt;/SPAN&gt;
	&lt;SPAN&gt;'set a reference to the FileLocations object.&lt;/SPAN&gt;
	&lt;SPAN&gt;IPJ&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;FileLocations&lt;/SPAN&gt;.&lt;SPAN&gt;FileLocationsFile&lt;/SPAN&gt;
	&lt;SPAN&gt;'get the location of the last backslash seperator&lt;/SPAN&gt;
	&lt;SPAN&gt;FNamePos&lt;/SPAN&gt; = &lt;SPAN&gt;InStrRev&lt;/SPAN&gt;(&lt;SPAN&gt;IPJ&lt;/SPAN&gt;, &lt;SPAN&gt;"\"&lt;/SPAN&gt;, -1)    
	&lt;SPAN&gt;'get the project file name with the file extension&lt;/SPAN&gt;
	&lt;SPAN&gt;IPJ_Name&lt;/SPAN&gt; = &lt;SPAN&gt;Right&lt;/SPAN&gt;(&lt;SPAN&gt;IPJ&lt;/SPAN&gt;, &lt;SPAN&gt;Len&lt;/SPAN&gt;(&lt;SPAN&gt;IPJ&lt;/SPAN&gt;) - &lt;SPAN&gt;FNamePos&lt;/SPAN&gt;)
	&lt;SPAN&gt;'get the path of the folder containing the project file&lt;/SPAN&gt;
	&lt;SPAN&gt;IPJ_Folder_Location&lt;/SPAN&gt; = &lt;SPAN&gt;Left&lt;/SPAN&gt;(&lt;SPAN&gt;IPJ&lt;/SPAN&gt;, &lt;SPAN&gt;Len&lt;/SPAN&gt;(&lt;SPAN&gt;IPJ&lt;/SPAN&gt;) -&lt;SPAN&gt;Len&lt;/SPAN&gt;(&lt;SPAN&gt;IPJ_Name&lt;/SPAN&gt;))
	&lt;SPAN&gt;'Call External Rule&lt;/SPAN&gt;
	&lt;SPAN&gt;iLogicVb&lt;/SPAN&gt;.&lt;SPAN&gt;RunExternalRule&lt;/SPAN&gt;(&lt;SPAN&gt;IPJ_Folder_Location&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"iLogic Scripts\BOM"&lt;/SPAN&gt;, &lt;SPAN&gt;oRuleArguments&lt;/SPAN&gt;)
	
	&lt;SPAN&gt;'Retreive Result&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;Result&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;NameValueMap&lt;/SPAN&gt;
	&lt;SPAN&gt;Try&lt;/SPAN&gt;
		&lt;SPAN&gt;Result&lt;/SPAN&gt; = &lt;SPAN&gt;CType&lt;/SPAN&gt;(&lt;SPAN&gt;oRuleArguments&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;"BOM"&lt;/SPAN&gt;), &lt;SPAN&gt;NameValueMap&lt;/SPAN&gt;)
	&lt;SPAN&gt;Catch&lt;/SPAN&gt;
		&lt;SPAN&gt;Result&lt;/SPAN&gt; = &lt;SPAN&gt;Nothing&lt;/SPAN&gt;
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Try&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;Result&lt;/SPAN&gt;
	
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;

&lt;SPAN&gt;'Cycle through all unique assembly parts to check for an idw&lt;/SPAN&gt;
&lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;CheckAssemblyIDW&lt;/SPAN&gt;(&lt;SPAN&gt;oList&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;NameValueMap&lt;/SPAN&gt;)
	
	&lt;SPAN&gt;oContext&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;.&lt;SPAN&gt;CreateTranslationContext&lt;/SPAN&gt;
	&lt;SPAN&gt;oContext&lt;/SPAN&gt;.&lt;SPAN&gt;Type&lt;/SPAN&gt; = &lt;SPAN&gt;IOMechanismEnum&lt;/SPAN&gt;.&lt;SPAN&gt;kFileBrowseIOMechanism&lt;/SPAN&gt;
	&lt;SPAN&gt;oOptions&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;.&lt;SPAN&gt;CreateNameValueMap&lt;/SPAN&gt;
	&lt;SPAN&gt;oDataMedium&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;TransientObjects&lt;/SPAN&gt;.&lt;SPAN&gt;CreateDataMedium&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;Dim&lt;/SPAN&gt; &lt;SPAN&gt;k&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt; = 1
	
	&lt;SPAN&gt;'Dim txtFileName As String =  ThisDoc.PathAndFileName(True) &amp;amp; " No IDWs.txt"&lt;/SPAN&gt;
	
	&lt;SPAN&gt;'oMsg = System.IO.File.CreateText(txtFileName)&lt;/SPAN&gt;
&lt;SPAN&gt;'	oMsg.WriteLine("Parts and Assemblies with No IDW file:")&lt;/SPAN&gt;
	&lt;SPAN&gt;'oMsg.WriteLine("")&lt;/SPAN&gt;
	
	&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;i&lt;/SPAN&gt; = 1 &lt;SPAN&gt;To&lt;/SPAN&gt; &lt;SPAN&gt;oList&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt;
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;vFullFileName&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;oList&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;(&lt;SPAN&gt;i&lt;/SPAN&gt;)
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;idwPathName&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;Left&lt;/SPAN&gt;(&lt;SPAN&gt;vFullFileName&lt;/SPAN&gt;, &lt;SPAN&gt;Len&lt;/SPAN&gt;(&lt;SPAN&gt;vFullFileName&lt;/SPAN&gt;) -3) &amp;amp; &lt;SPAN&gt;"idw"&lt;/SPAN&gt;
		
		&lt;SPAN&gt;'List parts/assemblies without an idw two to a line&lt;/SPAN&gt;
		&lt;SPAN&gt;If&lt;/SPAN&gt; (&lt;SPAN&gt;System&lt;/SPAN&gt;.&lt;SPAN&gt;IO&lt;/SPAN&gt;.&lt;SPAN&gt;File&lt;/SPAN&gt;.&lt;SPAN&gt;Exists&lt;/SPAN&gt;(&lt;SPAN&gt;idwPathName&lt;/SPAN&gt;)) = 0 &lt;SPAN&gt;Then&lt;/SPAN&gt;
				&lt;SPAN&gt;'oMsg.WriteLine(k &amp;amp; ". " &amp;amp; Right(vFullFileName, Len(vFullFileName) -InStrRev(vFullFileName, "\")) &amp;amp; "	")&lt;/SPAN&gt;
				&lt;SPAN&gt;k&lt;/SPAN&gt; = &lt;SPAN&gt;k&lt;/SPAN&gt; + 1
		&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;		
	&lt;SPAN&gt;Next&lt;/SPAN&gt;
	&lt;SPAN&gt;'oMsg.Close&lt;/SPAN&gt;
	&lt;SPAN&gt;'ThisDoc.Launch(txtFileName)&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;k&lt;/SPAN&gt; - 1
	
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;

&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;ThisProgressBar&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;ProgressBar&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;ThisProgressBarMessage&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;ThisProgressBarTotal&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;ThisProgressBarCount&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt;

&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;CreateProgressBar&lt;/SPAN&gt;(&lt;SPAN&gt;Title&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;, &lt;SPAN&gt;Message&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;, &lt;SPAN&gt;Total&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt;)

	&lt;SPAN&gt;ThisProgressBar&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;CreateProgressBar&lt;/SPAN&gt;(&lt;SPAN&gt;False&lt;/SPAN&gt;, &lt;SPAN&gt;Total&lt;/SPAN&gt;, &lt;SPAN&gt;Title&lt;/SPAN&gt;)
	&lt;SPAN&gt;ThisProgressBarMessage&lt;/SPAN&gt; = &lt;SPAN&gt;Message&lt;/SPAN&gt;
	&lt;SPAN&gt;ThisProgressBarTotal&lt;/SPAN&gt; = &lt;SPAN&gt;Total&lt;/SPAN&gt;
	&lt;SPAN&gt;ThisProgressBarCount&lt;/SPAN&gt; = 0
	
	&lt;SPAN&gt;ProgressBarDisplay&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;IncrementProgressBar&lt;/SPAN&gt;(&lt;SPAN&gt;Change&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt;)
	
	&lt;SPAN&gt;ThisProgressBarCount&lt;/SPAN&gt; = &lt;SPAN&gt;ThisProgressBarCount&lt;/SPAN&gt; + &lt;SPAN&gt;Change&lt;/SPAN&gt;
	
	&lt;SPAN&gt;ProgressBarDisplay&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;ProgressBarDisplay&lt;/SPAN&gt;()
	
	&lt;SPAN&gt;ThisProgressBar&lt;/SPAN&gt;.&lt;SPAN&gt;Message&lt;/SPAN&gt; = &lt;SPAN&gt;ThisProgressBarMessage&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;ThisProgressBarCount&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"/"&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;ThisProgressBarTotal&lt;/SPAN&gt;
	&lt;SPAN&gt;ThisProgressBar&lt;/SPAN&gt;.&lt;SPAN&gt;UpdateProgress&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;/P&gt;</description>
      <pubDate>Thu, 15 Feb 2024 02:31:54 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/rule-to-open-drawing-of-every-part-in-assembly/m-p/12561222#M163747</guid>
      <dc:creator>ross_goldbergQU7DJ</dc:creator>
      <dc:date>2024-02-15T02:31:54Z</dc:date>
    </item>
  </channel>
</rss>

