<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;"><DIV><BR>Sure, I'll look into this case tomorrow. Thanks for the model and your time finding it.</DIV>
<DIV> </DIV>
<DIV>Jane<BR>--- On <B>Thu, 8/11/11, Hong-Jun Kim <I><hongjun@mcs.anl.gov></I></B> wrote:<BR></DIV>
<BLOCKQUOTE style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: rgb(16,16,255) 2px solid"><BR>From: Hong-Jun Kim <hongjun@mcs.anl.gov><BR>Subject: Re: [cgma-dev] r5088 - cgm/trunk/geom/OCC<BR>To: jiangtao_ma@yahoo.com<BR>Cc: cgma-dev@mcs.anl.gov<BR>Date: Thursday, August 11, 2011, 5:12 PM<BR><BR>
<DIV class=plainMail>Hi, jane<BR><BR>I attached a step geometry file (with a picture) having problem in OCC kernel.<BR>It passes the "test_edge_orient" in ACIS kernel but doesn't in OCC.<BR>Could you please check this file?<BR>Thanks.<BR><BR>Hong-Jun<BR><BR>----- Original Message -----<BR>From: "Hong-Jun Kim" <<A href="http://us.mc1616.mail.yahoo.com/mc/compose?to=hongjun@mcs.anl.gov" ymailto="mailto:hongjun@mcs.anl.gov">hongjun@mcs.anl.gov</A>><BR>To: <A href="http://us.mc1616.mail.yahoo.com/mc/compose?to=cgma-dev@mcs.anl.gov" ymailto="mailto:cgma-dev@mcs.anl.gov">cgma-dev@mcs.anl.gov</A><BR>Sent: Thursday, August 11, 2011 3:06:25 PM<BR>Subject: Re: [cgma-dev] r5088 - cgm/trunk/geom/OCC<BR><BR>Thank you for this change.<BR><BR>I am testing it with complex geometries and it looks there are some improvement but it is not working for some cases.<BR>I am still finding where the problem is coming from and let me inform you the
result.<BR>Thanks.<BR><BR>Hong-Jun<BR><BR>----- Original Message -----<BR>> From: "jiangtao ma" <<A href="http://us.mc1616.mail.yahoo.com/mc/compose?to=jiangtao_ma@yahoo.com" ymailto="mailto:jiangtao_ma@yahoo.com">jiangtao_ma@yahoo.com</A>><BR>> To: <A href="http://us.mc1616.mail.yahoo.com/mc/compose?to=cgma-dev@mcs.anl.gov" ymailto="mailto:cgma-dev@mcs.anl.gov">cgma-dev@mcs.anl.gov</A><BR>> Sent: Thursday, August 11, 2011 9:21:55 AM<BR>> Subject: [cgma-dev] r5088 - cgm/trunk/geom/OCC<BR>> Author: janehu<BR>> Date: 2011-08-11 09:21:55 -0500 (Thu, 11 Aug 2011)<BR>> New Revision: 5088<BR>> <BR>> Modified:<BR>> cgm/trunk/geom/OCC/OCCCurve.cpp<BR>> cgm/trunk/geom/OCC/OCCModifyEngine.cpp<BR>> cgm/trunk/geom/OCC/OCCQueryEngine.cpp<BR>> cgm/trunk/geom/OCC/OCCSurface.cpp<BR>> Log:<BR>> Added changes to make coedge and loop direction correct. For surfaces,<BR>> opposite to acis where face is always forward
direction respect to its<BR>> volume, OCC surfaces and shell might be reversed direction with<BR>> respect to its solid. This may cause volume mesh fail, I am looking<BR>> into it now, and might need to change some logic in the geom level of<BR>> cgm.<BR>> <BR>> Modified: cgm/trunk/geom/OCC/OCCCurve.cpp<BR>> ===================================================================<BR>> --- cgm/trunk/geom/OCC/OCCCurve.cpp 2011-08-09 22:27:32 UTC (rev 5087)<BR>> +++ cgm/trunk/geom/OCC/OCCCurve.cpp 2011-08-11 14:21:55 UTC (rev 5088)<BR>> @@ -123,10 +123,10 @@<BR>> <BR>> void OCCCurve::set_TopoDS_Edge(TopoDS_Edge edge)<BR>> {<BR>> - if(edge.IsEqual(*myTopoDSEdge))<BR>> + if(edge.IsSame(*myTopoDSEdge))<BR>> return;<BR>> <BR>> - if(!edge.IsSame(*myTopoDSEdge))<BR>> + else<BR>> {<BR>> DLIList<OCCPoint*> points ;<BR>> this->get_points(points);<BR>> @@ -737,8 +737,7 @@<BR>> double
OCCCurve::start_param()<BR>> {<BR>> double start = 0.0, end = 0.0;<BR>> -<BR>> - get_param_range( start, end );<BR>> + get_param_range( start, end );<BR>> return start;<BR>> }<BR>> <BR>> @@ -781,29 +780,22 @@<BR>> {<BR>> TopTools_IndexedMapOfShape M;<BR>> TopExp::MapShapes(*myTopoDSEdge, TopAbs_VERTEX, M);<BR>> - TopologyBridge *point1, *point2;<BR>> - if (M.Extent()==1) {<BR>> - point1 = OCCQueryEngine::instance()->occ_to_cgm(M(1));<BR>> - if (point1)<BR>> - children.append_unique(point1);<BR>> - } else if (M.Extent()==2) {<BR>> - if ( fabs(BRep_Tool::Parameter(TopoDS::Vertex(M(1)),<BR>> *myTopoDSEdge)-start_param()) ><BR>> - fabs(BRep_Tool::Parameter(TopoDS::Vertex(M(2)),<BR>> *myTopoDSEdge)-start_param()) ) {<BR>> - point1 = OCCQueryEngine::instance()->occ_to_cgm(M(2));<BR>> - point2 = OCCQueryEngine::instance()->occ_to_cgm(M(1));<BR>> - } else {<BR>> - point1 =
OCCQueryEngine::instance()->occ_to_cgm(M(1));<BR>> - point2 = OCCQueryEngine::instance()->occ_to_cgm(M(2));<BR>> - }<BR>> - if (point1 && point1 == point2) {<BR>> - children.append_unique(point1);<BR>> - } else {<BR>> - if (point1)<BR>> - children.append_unique(point1);<BR>> - if (point2)<BR></DIV></BLOCKQUOTE></td></tr></table>