<?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: iLogic visibilty search going wrong in Inventor Programming Forum</title>
    <link>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-visibilty-search-going-wrong/m-p/10092881#M53130</link>
    <description>&lt;P&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/5657854"&gt;@peter.ensing&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have tried creating something, please test it and see if this works. Unfortunately, I have not got time to test it.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;Class&lt;/SPAN&gt; &lt;SPAN&gt;MassCalc&lt;/SPAN&gt;
	&lt;SPAN&gt;Shared&lt;/SPAN&gt; &lt;SPAN&gt;total&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;
&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;Main&lt;/SPAN&gt;


&lt;SPAN&gt;'Simplyfied value code:&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oAsmDoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyDocument&lt;/SPAN&gt;
&lt;SPAN&gt;oAsmDoc&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;objDef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyComponentDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;oAsmDoc&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;

&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;objComp&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt;
&lt;SPAN&gt;Call&lt;/SPAN&gt; &lt;SPAN&gt;TraverseAssembly&lt;/SPAN&gt;(&lt;SPAN&gt;oAsmDoc&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;, 1)

&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;sTotal&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;Nothing&lt;/SPAN&gt;
	&lt;SPAN&gt;sTotal&lt;/SPAN&gt; = &lt;SPAN&gt;total&lt;/SPAN&gt;

&lt;SPAN&gt;MessageBox&lt;/SPAN&gt;.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;sTotal&lt;/SPAN&gt;, &lt;SPAN&gt;"Total weight"&lt;/SPAN&gt;)
&lt;SPAN&gt;InventorVb&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentUpdate&lt;/SPAN&gt;()
&lt;SPAN&gt;total&lt;/SPAN&gt; = 0
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;


&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;TraverseAssembly&lt;/SPAN&gt;(&lt;SPAN&gt;Occurrences&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrences&lt;/SPAN&gt;,&lt;SPAN&gt;Level&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;val&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;
        &lt;SPAN&gt;' Iterate through all of the occurrence in this collection.  This&lt;/SPAN&gt;
        &lt;SPAN&gt;' represents the occurrences at the top level of an assembly.&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;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;Occurrences&lt;/SPAN&gt;
            &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;ParentOccurrence&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;If&lt;/SPAN&gt; &lt;SPAN&gt;Component&lt;/SPAN&gt;.&lt;SPAN&gt;Visible&lt;/SPAN&gt;(&lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;) = &lt;SPAN&gt;True&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; &lt;SPAN&gt;val&lt;/SPAN&gt;=&lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;MassProperties&lt;/SPAN&gt;.&lt;SPAN&gt;Mass&lt;/SPAN&gt;
						&lt;SPAN&gt;total&lt;/SPAN&gt; = &lt;SPAN&gt;total&lt;/SPAN&gt; + &lt;SPAN&gt;val&lt;/SPAN&gt;
						&lt;SPAN&gt;'MessageBox.Show(oOcc.Name &amp;amp; "-" &amp;amp; total)&lt;/SPAN&gt;
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
            &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;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;Then&lt;/SPAN&gt;
                &lt;SPAN&gt;Call&lt;/SPAN&gt; &lt;SPAN&gt;TraverseAssembly&lt;/SPAN&gt;(&lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;SubOccurrences&lt;/SPAN&gt;, &lt;SPAN&gt;Level&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;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;Hope this will help you.&lt;/P&gt;</description>
    <pubDate>Thu, 18 Feb 2021 12:05:30 GMT</pubDate>
    <dc:creator>dutt.thakar</dc:creator>
    <dc:date>2021-02-18T12:05:30Z</dc:date>
    <item>
      <title>iLogic visibilty search going wrong</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-visibilty-search-going-wrong/m-p/10089943#M53129</link>
      <description>&lt;P&gt;Hello all!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm trying to get an iLogic rule to work but cant find out whats going wrong.&lt;/P&gt;&lt;P&gt;To let it find all parts in an assembly incl. sub assemblies is not very difficult but when I added a visibilty filter to it some weird stuff happend.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It should iterate through the whole assembly to see if a part is visible (or not) and if its visible the mass weight is added to a double to sum up everything and get a total weight string of all thats visible in the current view representation.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It goes wrong at subassemblies, the code seems to ignore parts that are used multiple times in that subassembly.&lt;/P&gt;&lt;P&gt;I tested the code with an adjusment to get a list of part names instead of the total mass sum. At the master view rep I get a list of all part names like it should do. When I switch to a view rep it shows a list of the names of all unique parts excl. multiple used parts instead of incl multiple used parts. it ignores a hidden subassembly and adds some parts to the list but it does correctly excludes&amp;nbsp; parts in the direct main assembly that are hidden... I just cant wrap my mind around it what I told the code to do with this outcome.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Something is not right in the code, but I do no understand what is going wrong.&lt;/P&gt;&lt;P&gt;I added all 3 version of the code I tried for testing. The simplyfied code is where I want to go to, but maybe this just simply wont work.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;'Simplyfied value code:&lt;BR /&gt;objDef&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;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oLeafOccs&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrencesEnumerator&lt;/SPAN&gt;
&lt;SPAN&gt;oLeafOccs&lt;/SPAN&gt; = &lt;SPAN&gt;objDef&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;.&lt;SPAN&gt;AllLeafOccurrences&lt;/SPAN&gt;
Dim objComp As ComponentOccurrence&lt;BR /&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;val&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;total&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = 0
	&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;objComp&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oLeafOccs&lt;/SPAN&gt;
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Component&lt;/SPAN&gt;.&lt;SPAN&gt;Visible&lt;/SPAN&gt;(&lt;SPAN&gt;objComp&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;) = &lt;SPAN&gt;True&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; &lt;SPAN&gt;val&lt;/SPAN&gt;=&lt;SPAN&gt;objComp&lt;/SPAN&gt;.&lt;SPAN&gt;MassProperties&lt;/SPAN&gt;.&lt;SPAN&gt;Mass&lt;/SPAN&gt;
	&lt;SPAN&gt;total&lt;/SPAN&gt;=&lt;SPAN&gt;total&lt;/SPAN&gt;+&lt;SPAN&gt;val&lt;/SPAN&gt;	
	&lt;SPAN&gt;Next&lt;/SPAN&gt;

&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;sTotal&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;
	&lt;SPAN&gt;sTotal&lt;/SPAN&gt; = &lt;SPAN&gt;total&lt;/SPAN&gt;

&lt;SPAN&gt;MessageBox&lt;/SPAN&gt;.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;sTotal&lt;/SPAN&gt;, &lt;SPAN&gt;"Total weight"&lt;/SPAN&gt;)
&lt;SPAN&gt;InventorVb&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentUpdate&lt;/SPAN&gt;()&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;'Value code:&lt;BR /&gt;objApp&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;
&lt;SPAN&gt;objApp&lt;/SPAN&gt;.&lt;SPAN&gt;ScreenUpdating&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt;
&lt;SPAN&gt;objApp&lt;/SPAN&gt;.&lt;SPAN&gt;SilentOperation&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
&lt;SPAN&gt;objDef&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;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oLeafOccs&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrencesEnumerator&lt;/SPAN&gt;
&lt;SPAN&gt;oLeafOccs&lt;/SPAN&gt; = &lt;SPAN&gt;objDef&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;.&lt;SPAN&gt;AllLeafOccurrences&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;objComp&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;lisOccs&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;New&lt;/SPAN&gt; &lt;SPAN&gt;ArrayList&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;val&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;total&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = 0

	&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;objComp&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oLeafOccs&lt;/SPAN&gt;
		&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Component&lt;/SPAN&gt;.&lt;SPAN&gt;Visible&lt;/SPAN&gt;(&lt;SPAN&gt;objComp&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;) = &lt;SPAN&gt;True&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; &lt;SPAN&gt;lisOccs&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;objComp&lt;/SPAN&gt;.&lt;SPAN&gt;MassProperties&lt;/SPAN&gt;.&lt;SPAN&gt;Mass&lt;/SPAN&gt;)
	&lt;SPAN&gt;Next&lt;/SPAN&gt;

&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;sNames&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;

&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;val&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;lisOccs&lt;/SPAN&gt;

	&lt;SPAN&gt;sNames&lt;/SPAN&gt; = &lt;SPAN&gt;sNames&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"; "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;val&lt;/SPAN&gt;

&lt;SPAN&gt;Next&lt;/SPAN&gt; 


&lt;SPAN&gt;MessageBox&lt;/SPAN&gt;.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;sNames&lt;/SPAN&gt;, &lt;SPAN&gt;"Title"&lt;/SPAN&gt;)
&lt;SPAN&gt;objApp&lt;/SPAN&gt;.&lt;SPAN&gt;ScreenUpdating&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
&lt;SPAN&gt;objApp&lt;/SPAN&gt;.&lt;SPAN&gt;SilentOperation&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt;
&lt;SPAN&gt;InventorVb&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentUpdate&lt;/SPAN&gt;()&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;'Partname code:&lt;BR /&gt;objApp&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;
&lt;SPAN&gt;objApp&lt;/SPAN&gt;.&lt;SPAN&gt;ScreenUpdating&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt;
&lt;SPAN&gt;objApp&lt;/SPAN&gt;.&lt;SPAN&gt;SilentOperation&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
&lt;SPAN&gt;objDef&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;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oLeafOccs&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrencesEnumerator&lt;/SPAN&gt;
&lt;SPAN&gt;oLeafOccs&lt;/SPAN&gt; = &lt;SPAN&gt;objDef&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;.&lt;SPAN&gt;AllLeafOccurrences&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;objComp&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;lisOccs&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;New&lt;/SPAN&gt; &lt;SPAN&gt;ArrayList&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;val&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;total&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = 0

	&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;objComp&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oLeafOccs&lt;/SPAN&gt;
		&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Component&lt;/SPAN&gt;.&lt;SPAN&gt;Visible&lt;/SPAN&gt;(&lt;SPAN&gt;objComp&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;) = &lt;SPAN&gt;True&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; &lt;SPAN&gt;lisOccs&lt;/SPAN&gt;.&lt;SPAN&gt;Add&lt;/SPAN&gt;(&lt;SPAN&gt;objComp&lt;/SPAN&gt;)
	&lt;SPAN&gt;Next&lt;/SPAN&gt;

&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;sNames&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;

&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;objComp&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;lisOccs&lt;/SPAN&gt;
	&lt;SPAN&gt;'objComp.Delete&lt;/SPAN&gt;
	&lt;SPAN&gt;sNames&lt;/SPAN&gt; = &lt;SPAN&gt;sNames&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"; "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;objComp&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;

&lt;SPAN&gt;Next&lt;/SPAN&gt; 


&lt;SPAN&gt;MessageBox&lt;/SPAN&gt;.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;sNames&lt;/SPAN&gt;, &lt;SPAN&gt;"Title"&lt;/SPAN&gt;)
&lt;SPAN&gt;objApp&lt;/SPAN&gt;.&lt;SPAN&gt;ScreenUpdating&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt;
&lt;SPAN&gt;objApp&lt;/SPAN&gt;.&lt;SPAN&gt;SilentOperation&lt;/SPAN&gt; = &lt;SPAN&gt;False&lt;/SPAN&gt;
&lt;SPAN&gt;InventorVb&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentUpdate&lt;/SPAN&gt;()&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 17 Feb 2021 13:21:08 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-visibilty-search-going-wrong/m-p/10089943#M53129</guid>
      <dc:creator>peter.ensing</dc:creator>
      <dc:date>2021-02-17T13:21:08Z</dc:date>
    </item>
    <item>
      <title>Re: iLogic visibilty search going wrong</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-visibilty-search-going-wrong/m-p/10092881#M53130</link>
      <description>&lt;P&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/5657854"&gt;@peter.ensing&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have tried creating something, please test it and see if this works. Unfortunately, I have not got time to test it.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;Class&lt;/SPAN&gt; &lt;SPAN&gt;MassCalc&lt;/SPAN&gt;
	&lt;SPAN&gt;Shared&lt;/SPAN&gt; &lt;SPAN&gt;total&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;
&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;Main&lt;/SPAN&gt;


&lt;SPAN&gt;'Simplyfied value code:&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oAsmDoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyDocument&lt;/SPAN&gt;
&lt;SPAN&gt;oAsmDoc&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;objDef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyComponentDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;oAsmDoc&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;

&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;objComp&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt;
&lt;SPAN&gt;Call&lt;/SPAN&gt; &lt;SPAN&gt;TraverseAssembly&lt;/SPAN&gt;(&lt;SPAN&gt;oAsmDoc&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;, 1)

&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;sTotal&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;Nothing&lt;/SPAN&gt;
	&lt;SPAN&gt;sTotal&lt;/SPAN&gt; = &lt;SPAN&gt;total&lt;/SPAN&gt;

&lt;SPAN&gt;MessageBox&lt;/SPAN&gt;.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;sTotal&lt;/SPAN&gt;, &lt;SPAN&gt;"Total weight"&lt;/SPAN&gt;)
&lt;SPAN&gt;InventorVb&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentUpdate&lt;/SPAN&gt;()
&lt;SPAN&gt;total&lt;/SPAN&gt; = 0
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;


&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;TraverseAssembly&lt;/SPAN&gt;(&lt;SPAN&gt;Occurrences&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrences&lt;/SPAN&gt;,&lt;SPAN&gt;Level&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;val&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;
        &lt;SPAN&gt;' Iterate through all of the occurrence in this collection.  This&lt;/SPAN&gt;
        &lt;SPAN&gt;' represents the occurrences at the top level of an assembly.&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;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;Occurrences&lt;/SPAN&gt;
            &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;ParentOccurrence&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;If&lt;/SPAN&gt; &lt;SPAN&gt;Component&lt;/SPAN&gt;.&lt;SPAN&gt;Visible&lt;/SPAN&gt;(&lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;) = &lt;SPAN&gt;True&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; &lt;SPAN&gt;val&lt;/SPAN&gt;=&lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;MassProperties&lt;/SPAN&gt;.&lt;SPAN&gt;Mass&lt;/SPAN&gt;
						&lt;SPAN&gt;total&lt;/SPAN&gt; = &lt;SPAN&gt;total&lt;/SPAN&gt; + &lt;SPAN&gt;val&lt;/SPAN&gt;
						&lt;SPAN&gt;'MessageBox.Show(oOcc.Name &amp;amp; "-" &amp;amp; total)&lt;/SPAN&gt;
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
            &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;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;Then&lt;/SPAN&gt;
                &lt;SPAN&gt;Call&lt;/SPAN&gt; &lt;SPAN&gt;TraverseAssembly&lt;/SPAN&gt;(&lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;SubOccurrences&lt;/SPAN&gt;, &lt;SPAN&gt;Level&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;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;Hope this will help you.&lt;/P&gt;</description>
      <pubDate>Thu, 18 Feb 2021 12:05:30 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-visibilty-search-going-wrong/m-p/10092881#M53130</guid>
      <dc:creator>dutt.thakar</dc:creator>
      <dc:date>2021-02-18T12:05:30Z</dc:date>
    </item>
    <item>
      <title>Re: iLogic visibilty search going wrong</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-visibilty-search-going-wrong/m-p/10101184#M53131</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/6518271"&gt;@dutt.thakar&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for your reply and sorry for my late response.&lt;/P&gt;&lt;P&gt;I like your different approach in the code.&lt;/P&gt;&lt;P&gt;It did give me some different results so I changed the code to object names to test what it actually picks up:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;Class&lt;/SPAN&gt; &lt;SPAN&gt;MassCalc&lt;/SPAN&gt;
	&lt;SPAN&gt;Shared&lt;/SPAN&gt; &lt;SPAN&gt;total&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;
&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;Main&lt;/SPAN&gt;


&lt;SPAN&gt;'Simplyfied value code:&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oAsmDoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyDocument&lt;/SPAN&gt;
&lt;SPAN&gt;oAsmDoc&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;objDef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyComponentDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;oAsmDoc&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;

&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;objComp&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt;
&lt;SPAN&gt;Call&lt;/SPAN&gt; &lt;SPAN&gt;TraverseAssembly&lt;/SPAN&gt;(&lt;SPAN&gt;oAsmDoc&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;, 1)

&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;sTotal&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;Nothing&lt;/SPAN&gt;
	&lt;SPAN&gt;sTotal&lt;/SPAN&gt; = &lt;SPAN&gt;total&lt;/SPAN&gt;

&lt;SPAN&gt;MessageBox&lt;/SPAN&gt;.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;sTotal&lt;/SPAN&gt;, &lt;SPAN&gt;"Total weight"&lt;/SPAN&gt;)
&lt;SPAN&gt;InventorVb&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentUpdate&lt;/SPAN&gt;()
&lt;SPAN&gt;total&lt;/SPAN&gt; = &lt;SPAN&gt;Nothing&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;TraverseAssembly&lt;/SPAN&gt;(&lt;SPAN&gt;Occurrences&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrences&lt;/SPAN&gt;,&lt;SPAN&gt;Level&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;val&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;
        &lt;SPAN&gt;' Iterate through all of the occurrence in this collection.  This&lt;/SPAN&gt;
        &lt;SPAN&gt;' represents the occurrences at the top level of an assembly.&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;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;Occurrences&lt;/SPAN&gt;
            &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;ParentOccurrence&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;If&lt;/SPAN&gt; &lt;SPAN&gt;Component&lt;/SPAN&gt;.&lt;SPAN&gt;Visible&lt;/SPAN&gt;(&lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;) = &lt;SPAN&gt;True&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; &lt;SPAN&gt;val&lt;/SPAN&gt;=&lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;
						&lt;SPAN&gt;total&lt;/SPAN&gt; = &lt;SPAN&gt;total&lt;/SPAN&gt; + &lt;SPAN&gt;val&lt;/SPAN&gt;
						&lt;SPAN&gt;'MessageBox.Show(oOcc.Name &amp;amp; "-" &amp;amp; total)&lt;/SPAN&gt;
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
            &lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;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;Then&lt;/SPAN&gt;
                &lt;SPAN&gt;Call&lt;/SPAN&gt; &lt;SPAN&gt;TraverseAssembly&lt;/SPAN&gt;(&lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;SubOccurrences&lt;/SPAN&gt;, &lt;SPAN&gt;Level&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;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;On Master view reps it works fine, it takes all toplevel items in a list.&lt;/P&gt;&lt;P&gt;When I change to a view rep with hidden parts or assemblies the code is doing some weird things I dont understand.&lt;/P&gt;&lt;P&gt;It doesnt matter what I object I hide, the code results are always the same.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;I also tried to change the code a little bit to ignore the assembly object to check and take the parts inside.&amp;nbsp;&lt;/P&gt;&lt;P&gt;It works besides that the results are still weird to me.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Maybe I'll try to rebuild it with VBA to use a debugger to see what actually happens .&lt;/P&gt;&lt;P&gt;Any tips are always welcome, thanks in advance!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;Class&lt;/SPAN&gt; &lt;SPAN&gt;MassCalc&lt;/SPAN&gt;
	&lt;SPAN&gt;Shared&lt;/SPAN&gt; &lt;SPAN&gt;total&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;
&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;Main&lt;/SPAN&gt;


&lt;SPAN&gt;'Simplyfied value code:&lt;/SPAN&gt;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oAsmDoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyDocument&lt;/SPAN&gt;
&lt;SPAN&gt;oAsmDoc&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;objDef&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;AssemblyComponentDefinition&lt;/SPAN&gt; = &lt;SPAN&gt;oAsmDoc&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;

&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;objComp&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrence&lt;/SPAN&gt;
&lt;SPAN&gt;Call&lt;/SPAN&gt; &lt;SPAN&gt;TraverseAssembly&lt;/SPAN&gt;(&lt;SPAN&gt;oAsmDoc&lt;/SPAN&gt;.&lt;SPAN&gt;ComponentDefinition&lt;/SPAN&gt;.&lt;SPAN&gt;Occurrences&lt;/SPAN&gt;, 1)

&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;sTotal&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt; = &lt;SPAN&gt;Nothing&lt;/SPAN&gt;
	&lt;SPAN&gt;sTotal&lt;/SPAN&gt; = &lt;SPAN&gt;total&lt;/SPAN&gt;

&lt;SPAN&gt;MessageBox&lt;/SPAN&gt;.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;sTotal&lt;/SPAN&gt;, &lt;SPAN&gt;"Total weight"&lt;/SPAN&gt;)
&lt;SPAN&gt;InventorVb&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentUpdate&lt;/SPAN&gt;()
&lt;SPAN&gt;total&lt;/SPAN&gt; = &lt;SPAN&gt;Nothing&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;TraverseAssembly&lt;/SPAN&gt;(&lt;SPAN&gt;Occurrences&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;ComponentOccurrences&lt;/SPAN&gt;,&lt;SPAN&gt;Level&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;val&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;
        &lt;SPAN&gt;' Iterate through all of the occurrence in this collection.  This&lt;/SPAN&gt;
        &lt;SPAN&gt;' represents the occurrences at the top level of an assembly.&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;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;Occurrences&lt;/SPAN&gt;
			&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Not&lt;/SPAN&gt; &lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;ParentOccurrence&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;If&lt;/SPAN&gt; &lt;SPAN&gt;Component&lt;/SPAN&gt;.&lt;SPAN&gt;Visible&lt;/SPAN&gt;(&lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;ParentOccurrence&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;)= &lt;SPAN&gt;True&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
                	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Component&lt;/SPAN&gt;.&lt;SPAN&gt;Visible&lt;/SPAN&gt;(&lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;) = &lt;SPAN&gt;True&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; &lt;SPAN&gt;val&lt;/SPAN&gt;=&lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;Name&lt;/SPAN&gt;
						&lt;SPAN&gt;total&lt;/SPAN&gt; = &lt;SPAN&gt;total&lt;/SPAN&gt; + &lt;SPAN&gt;val&lt;/SPAN&gt;
						&lt;SPAN&gt;'MessageBox.Show(oOcc.Name &amp;amp; "-" &amp;amp; total)&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;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;Then&lt;/SPAN&gt;
                &lt;SPAN&gt;Call&lt;/SPAN&gt; &lt;SPAN&gt;TraverseAssembly&lt;/SPAN&gt;(&lt;SPAN&gt;oOcc&lt;/SPAN&gt;.&lt;SPAN&gt;SubOccurrences&lt;/SPAN&gt;, &lt;SPAN&gt;Level&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;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;</description>
      <pubDate>Mon, 22 Feb 2021 08:14:16 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-visibilty-search-going-wrong/m-p/10101184#M53131</guid>
      <dc:creator>peter.ensing</dc:creator>
      <dc:date>2021-02-22T08:14:16Z</dc:date>
    </item>
    <item>
      <title>Re: iLogic visibilty search going wrong</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-visibilty-search-going-wrong/m-p/10104501#M53132</link>
      <description>&lt;P&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/5657854"&gt;@peter.ensing&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Can you record a screencast or explain what kind of weird behaviour you are getting?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It will be easy to understand what is happening and than troubleshooting the problem.&lt;/P&gt;</description>
      <pubDate>Tue, 23 Feb 2021 10:34:56 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-visibilty-search-going-wrong/m-p/10104501#M53132</guid>
      <dc:creator>dutt.thakar</dc:creator>
      <dc:date>2021-02-23T10:34:56Z</dc:date>
    </item>
    <item>
      <title>Re: iLogic visibilty search going wrong</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-visibilty-search-going-wrong/m-p/10133343#M53133</link>
      <description>&lt;P&gt;Hi!&amp;nbsp;&lt;/P&gt;&lt;P&gt;Had some time today and got it working in VBA.&lt;BR /&gt;Not sure this is the common way to get things done but it works like a charm.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;Sub ViewRep_Weight()

Dim val As Double
Dim total As Double

Dim oAsmDoc As AssemblyDocument
Set oAsmDoc = ThisApplication.ActiveDocument
Dim oDoc As Document

Dim oAsmDef As AssemblyComponentDefinition
Set oAsmDef = oAsmDoc.ComponentDefinition
Dim oOccs As ComponentOccurrencesEnumerator
Dim oOcc As ComponentOccurrence

    ' Iterate through all of the referenced documents at
    ' all levels of the assembly.
  For Each oDoc In oAsmDoc.AllReferencedDocuments
         ' Check for part documents.
        If oDoc.DocumentType = kPartDocumentObject Then
        'set Doc to occurrence
        Set oOccs = oAsmDef.Occurrences.AllReferencedOccurrences(oDoc)
        For Each oOcc In oOccs
        'get occurrence weigt
                    val = oOcc.MassProperties.Mass
         'check if part is visible than add occurrence weight to sum
         'Note: BOM reference parts are ignored
                    If oOcc.Visible = True Then If Not oOcc.Definition.BOMStructure = kPhantomBOMStructure Then total = total + val
                    
        Next
        End If

Next
    ' Get the custom property set.
    Dim customPropSet As PropertySet
    Set customPropSet = oAsmDoc.PropertySets.Item("Inventor User Defined Properties")

    ' Get the property named "ViewRep_Weight".
    Dim customProp As Property
    Set customProp = customPropSet.Item("ViewRep_Weight")

customProp.Value = total

total = 0

End Sub&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 05 Mar 2021 15:13:24 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-visibilty-search-going-wrong/m-p/10133343#M53133</guid>
      <dc:creator>peter.ensing</dc:creator>
      <dc:date>2021-03-05T15:13:24Z</dc:date>
    </item>
    <item>
      <title>Re: iLogic visibilty search going wrong</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-visibilty-search-going-wrong/m-p/10133686#M53134</link>
      <description>&lt;P&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/5657854"&gt;@peter.ensing&lt;/a&gt;,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I believe you original simple code will work.&amp;nbsp; The issue was you were adding Val to total regardless of the visibility of a component, without clearing val for each step of the loop.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;When you have:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If [condition] = Boolean Then [result]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You are condensing the entire If statement into a single line.&amp;nbsp; Your For Each loop had the If statement to change "val", but it was always adding to total, and since you aren't clearing it between Occurrences, it was adding whatever the last visible component set "val" to again.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I modified the code to only add "val" to total if it is visible, by expanding the If statement [you could also just clear "val" each time, dealers choice]:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="general"&gt;'Simplyfied value code:
Dim objDef As AssemblyComponentDefinition = ThisDoc.Document.ComponentDefinition
Dim oLeafOccs As ComponentOccurrencesEnumerator = objDef.Occurrences.AllLeafOccurrences
Dim objComp As ComponentOccurrence

Dim val As Double
Dim total As Double = 0
	
For Each objComp In oLeafOccs
	If objComp.Visible = True
		val=objComp.MassProperties.Mass
		total = total + val	
	End If
Next

Dim sTotal As String = total.ToString

MessageBox.Show(sTotal, "Total weight")
InventorVb.DocumentUpdate()&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 05 Mar 2021 17:07:30 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-visibilty-search-going-wrong/m-p/10133686#M53134</guid>
      <dc:creator>J-Camper</dc:creator>
      <dc:date>2021-03-05T17:07:30Z</dc:date>
    </item>
    <item>
      <title>Re: iLogic visibilty search going wrong</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-visibilty-search-going-wrong/m-p/10138048#M53135</link>
      <description>&lt;P&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/4898893"&gt;@J-Camper&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks! That totaly make sense now.&lt;/P&gt;&lt;P&gt;I had the same mistake building up the VBA code but noticed it through debugging and fixed it.&lt;/P&gt;&lt;P&gt;Your adjustment to the iLogic code also works like a charm, I just tested it and the results are what to be expected.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Have a nice day all!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Kind regards,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Peter Ensing&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 08 Mar 2021 07:41:11 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/ilogic-visibilty-search-going-wrong/m-p/10138048#M53135</guid>
      <dc:creator>peter.ensing</dc:creator>
      <dc:date>2021-03-08T07:41:11Z</dc:date>
    </item>
  </channel>
</rss>

