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