Hi, Boyd:<br><br>Thank you for debugging this issue for me, otherwise, it&#39;s a bit difficult to reproduce your work just in cgm.<br><br>I added a function in OCCBody that returns its shape no matter of its shapetype, this way, the function will always return something. Hope it fixed your problem. Please double check on it.<br>
<br>Thanks.<br><br>Jane<br><br><div class="gmail_quote">On Wed, Dec 28, 2011 at 2:44 PM, Boyd Tidwell <span dir="ltr">&lt;<a href="mailto:boyd@csimsoft.com">boyd@csimsoft.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>The following commands:<br><br>     brick width 10<br>     brick width 6 <br>     body 2 move x 8<br>     volume 1 2 size 1<br>     mesh volume 1 2<br>     imprint mesh body 1 2<br><br>cause a crash.  The same commands without the meshing works fine.<br>

<br><br>The actual failure occurs in<br><br> void PartitionSurface::get_parents_virt( DLIList&lt;TopologyBridge*&gt;&amp; result_list )<br><br>On the assert in the following code, tmp_list.size() is zero.<br><br>    for( i = real_surf_shells.size(); i--; )<br>

    {<br>      tmp_list.clean_out();<br>      real_surf_shells.get_and_step()-&gt;get_parents_virt( tmp_list );<br>      assert(tmp_list.size() == 1);<br>      real_surf_vols.append(tmp_list.get());<br>    }<br> <br><br>
A clue to the real problem may be revealed in the method called right before the assert:<br>
<br><br>void OCCShell::get_parents_virt( DLIList&lt;TopologyBridge*&gt;&amp; parents ) <br><br> for(int i = 0; i &lt;  bodies-&gt;size(); i++)<br>  {<br>    body = bodies-&gt;get_and_step();<br>    TopoDS_Compound* shape = body-&gt;get_TopoDS_Shape();             &lt;---- added line<br>

    if (shape == NULL)                                                                       &lt;---- added line<br>      continue;                                                                                   &lt;---- added line<br>

    TopExp::MapShapesAndAncestors(*(body-&gt;get_TopoDS_Shape()),<br>                                     TopAbs_SHELL, TopAbs_SOLID, M);<br>    if (!M.Contains(*(get_TopoDS_Shell())))<br>         continue;<br><br><br>Previously I added the lines to check if  &quot;body-&gt;get_TopoDS_Shape()&quot; 
was returning a NULL pointer.  It seemingly fixed a number of problems. I wish I&#39;d written down the actual things that 
the change fixed.  This might just be a band-aid that hides a deeper 
problem but my tests run much better with the new code in place.  Because the existing code doesn&#39;t check for a null pointer, there seems to be an assumption that it will never be null so the null pointer could be the real problem.  I don&#39;t have enough understanding of the code to know what is correct.<br>

<br>Good Luck and thanks in advance,<br><br>  - Boyd<br>
</blockquote></div><br>