OCC22294 Problem with reading of attached file with OCCT642
authorEMV <>
Thu, 28 Apr 2011 15:18:41 +0000 (15:18 +0000)
committerbugmaster <bugmaster@opencascade.com>
Mon, 5 Mar 2012 15:27:56 +0000 (19:27 +0400)
src/IGESToBRep/IGESToBRep_TopoCurve.cxx

index 8c5d41b..6d2ef02 100755 (executable)
@@ -98,6 +98,7 @@
 #include <IGESToBRep.hxx>
 #include <IGESToBRep_AlgoContainer.hxx>
 #include <IGESToBRep_ToolContainer.hxx>
+#include <BRepBuilderAPI_Transform.hxx>
 
 //=======================================================================
 //function : IGESToBRep_TopoCurve
@@ -911,10 +912,8 @@ TopoDS_Shape  IGESToBRep_TopoCurve::TransferTopoBasicCurve
   }
 
   IGESToBRep_BasicCurve BC(*this);
-
   // 14.05.2009 skl for OCC21131
   BC.SetModeTransfer(Standard_False);
-
   Handle(Geom_Curve) C = BC.TransferBasicCurve(start);
 
   if (C.IsNull()) {
@@ -1007,15 +1006,21 @@ TopoDS_Shape  IGESToBRep_TopoCurve::TransferTopoBasicCurve
 //  BRep_Builder B;
 //  B.UpdateVertex (V1, epsgeom);
 //  B.UpdateVertex (V2, epsgeom);
-  
-/* 14.05.2009 skl for OCC21131
-  if (start->HasTransf()) {
+  // 14.05.2009 skl for OCC21131
+  // 15.03.2011 emv for OCC22294 begin
+  Standard_Boolean bIsNeedTransf = start->IsKind(STANDARD_TYPE(IGESGeom_SplineCurve));
+  if (start->HasTransf() && bIsNeedTransf) {
     gp_Trsf  T;
     SetEpsilon(1.E-04);
     if (IGESData_ToolLocation::ConvertLocation
-       (GetEpsilon(),start->CompoundLocation(),T, GetUnitFactor())) { 
-      TopLoc_Location L(T);
-      myshape.Move(L);
+       (GetEpsilon(),start->CompoundLocation(),T, GetUnitFactor())) { 
+      //TopLoc_Location L(T);
+      BRepBuilderAPI_Transform trf(T);
+      trf.Perform(myshape);
+      if (trf.IsDone()){
+        myshape = trf.Shape();
+      }
+      //myshape.Move(L);
     }
     else {
       Message_Msg Msg1035("IGES_1035");
@@ -1023,7 +1028,7 @@ TopoDS_Shape  IGESToBRep_TopoCurve::TransferTopoBasicCurve
     }
     //AddWarning(start, "Transformation skipped (not a similarity)");
   }
-*/  
+  //15.03.2011 emv for OCC22294 end
 
   // debug mjm du 26/07/96 en attendant developpement meilleur
   // sur traitement des Wire et non des Edge dans les programmes appelant