Get all components from Assembly by using SolidWorks API 2011 and 2013

Hi,

I'm using SW 2011 SP3 and SW 2013 SP4.

I'm trying to get all components from big assembly and in the end I get different result of number children.

For SW 2011 the result is 7373 components for SW 2013 the result is 1374 components.

Can you explain why I have different results? API for getting components was changed for SW 2011 and SW 2013?

<p><span style="font-size: 10pt; font-family: Consolas;">Take a look at the code below, please: </span><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;">  </span></p><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;"><p><span style="color: #2b91af; font-size: 10pt; font-family: Consolas;">  </span></p><span style="color: #2b91af; font-size: 10pt; font-family: Consolas;"><p>Object <span style="font-size: 10pt; font-family: Consolas;">swDocSpecificationObj = swApp.GetOpenDocSpec(fileName);<br></span><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;">  </span></p><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;"><p>var <span style="font-size: 10pt; font-family: Consolas;">swDocSpecification = (</span><span style="color: #2b91af; font-size: 10pt; font-family: Consolas;">IDocumentSpecification</span><span style="font-size: 10pt; font-family: Consolas;">)swDocSpecificationObj;</span></p></span><p> <span style="font-size: 10pt; font-family: Consolas;">  </span><span style="font-size: 10pt; font-family: Consolas;">swDocSpecification.Silent = </span><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;">true</span><span style="font-size: 10pt; font-family: Consolas;">;</span></p><span style="font-size: 10pt; font-family: Consolas;"><p>   swDocSpecification.ReadOnly = <span style="color: #0000ff; font-size: 10pt; font-family: Consolas;">true</span><span style="font-size: 10pt; font-family: Consolas;">;</span><span style="font-size: 10pt; font-family: Consolas;">  </span></p><span style="font-size: 10pt; font-family: Consolas;"><p>   swDocSpecification.UseLightWeightDefault = <span style="color: #0000ff; font-size: 10pt; font-family: Consolas;">false</span><span style="font-size: 10pt; font-family: Consolas;">;</span>   <span style="font-size: 10pt; font-family: Consolas;">  </span></p><span style="font-size: 10pt; font-family: Consolas;"><p>   swDocSpecification.LightWeight = <span style="color: #0000ff; font-size: 10pt; font-family: Consolas;">false</span><span style="font-size: 10pt; font-family: Consolas;">;<br></span></p><span style=": ; color: #2b91af; font-size: 2; font-family: Consolas;"><p><span style="color: #2b91af; font-size: 10pt; font-family: Consolas;">IModelDoc2</span><span style="font-size: 10pt; font-family: Consolas;"> swDoc = swApp.OpenDoc7(swDocSpecificationObj); // I see here different time of loading for SW 2011 and 2013, maybe this method was modified?</span></p></span></span></span></span></span><p><br> var <span style="font-size: 10pt; font-family: Consolas;">swModel = (</span><span style="color: #2b91af; font-size: 10pt; font-family: Consolas;">ModelDoc2</span><span style="font-size: 10pt; font-family: Consolas;">)swApp.ActiveDoc;<br></span><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;"><br> var <span style="font-size: 10pt; font-family: Consolas;">swConfMgr = (</span><span style="color: #2b91af; font-size: 10pt; font-family: Consolas;">ConfigurationManager</span><span style="font-size: 10pt; font-family: Consolas;">)swModel.ConfigurationManager;</span></span><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;">  </span></p><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;"><p>var<span style="font-size: 10pt; font-family: Consolas;"> activeConfig = (</span><span style="color: #2b91af; font-size: 10pt; font-family: Consolas;">Configuration</span><span style="font-size: 10pt; font-family: Consolas;">)swConfMgr.ActiveConfiguration;</span><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;">  </span></p><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;"><p>var <span style="font-size: 10pt; font-family: Consolas;">rootComponent = (</span><span style="color: #2b91af; font-size: 10pt; font-family: Consolas;">Component2</span><span style="font-size: 10pt; font-family: Consolas;">)activeConfig.GetRootComponent();</span><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;">  </span></p><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;"><p>var <span style="font-size: 10pt; font-family: Consolas;">numComponents = calcComponents(rootComponent, 1);<br><br></span></p><p><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;">  </span></p><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;"><p><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;">int</span><span style="font-size: 10pt; font-family: Consolas;"> calcComponents(</span><span style="color: #2b91af; font-size: 10pt; font-family: Consolas;">IComponent2</span><span style="font-size: 10pt; font-family: Consolas;"> comp, </span><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;">long</span><span style="font-size: 10pt; font-family: Consolas;"> nLevel)<br>{ <br>     i</span><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;">nt</span><span style="font-size: 10pt; font-family: Consolas;"> numComponents = 1;</span><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;">  </span></p><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;"><p>     string<span style="font-size: 10pt; font-family: Consolas;"> sPadStr = </span><span style="color: #a31515; font-size: 10pt; font-family: Consolas;">" "</span><span style="font-size: 10pt; font-family: Consolas;">;</span><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;">  </span></p><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;"><p></p><p>     long <span style="font-size: 10pt; font-family: Consolas;">i = 0;</span><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;">  </span></p><p>     for<span style="font-size: 10pt; font-family: Consolas;">(i = 0; i <= nLevel - 1; i++)<br>     {</span></p><span style="font-size: 10pt; font-family: Consolas;"><p>          sPadStr = sPadStr +  <span style="color: #a31515; font-size: 10pt; font-family: Consolas;">" "</span><span style="font-size: 10pt; font-family: Consolas;">;</span> <span style="font-size: 10pt; font-family: Consolas;"><br>     }<br></span><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;">     </span><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;">var</span><span style="font-size: 10pt; font-family: Consolas;"> children = (</span><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;">object</span><span style="font-size: 10pt; font-family: Consolas;">[])comp.GetChildren();</span><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;">  </span></p><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;"><span style="color: #2b91af; font-size: 10pt; font-family: Consolas;"><p>     </p></span><span style="font-size: 10pt; font-family: Consolas;"><p style="padding-left: 30px;">for<span style="font-size: 10pt; font-family: Consolas;"><span style="font-size: 10pt; font-family: Consolas;">(i = 0; i < children.Length; i++)<br>{</span> </span></p></span><span style="font-size: 10pt; font-family: Consolas;"><p><span style="font-size: 10pt; font-family: Consolas;">          Component2</span><span style="font-size: 10pt; font-family: Consolas;"> swChildComp = (SW.</span><span style="font-size: 10pt; font-family: Consolas;">Component2</span><span style="font-size: 10pt; font-family: Consolas;">)children[i]; </span><span style="font-size: 10pt; font-family: Consolas;">  </span></p><p>          Debug<span style="font-size: 10pt; font-family: Consolas;">.Print(sPadStr + </span><span style="color: #a31515; font-size: 10pt; font-family: Consolas;">"+"</span><span style="font-size: 10pt; font-family: Consolas;"> + swChildComp.Name2 + </span><span style="color: #a31515; font-size: 10pt; font-family: Consolas;">" <"</span><span style="font-size: 10pt; font-family: Consolas;"> + swChildComp.ReferencedConfiguration + </span><span style="color: #a31515; font-size: 10pt; font-family: Consolas;">">"</span><span style="font-size: 10pt; font-family: Consolas;">);<br></span><span style="font-size: 10pt; font-family: Consolas;">         </span></p></span><span style="font-size: 10pt; font-family: Consolas;">numComponents += calcComponents(swChildComp, nLevel + 1); </span><span style="font-size: 10pt; font-family: Consolas;"><p><span style="font-size: 10pt; font-family: Consolas;">    </span><span style="font-size: 10pt; font-family: Consolas;">}<br>    </span><span style="color: #0000ff; font-size: 10pt; font-family: Consolas;">return</span><span style="font-size: 10pt; font-family: Consolas;"> numComponents;<br> }<br></span></p>T<span class="hps">hanks in advance</span></span></span></span></span></span></span></span></span></span></span>
SolidworksApi macros