From 572db63c30bd786f7149d6dc9b4a83a45cd10bec Mon Sep 17 00:00:00 2001 From: GKA <> Date: Fri, 27 Jan 2012 14:48:21 +0000 Subject: [PATCH] 0022731: Error on attempt to write in IGES 5.3 the attached brep model --- src/BRepToIGESBRep/BRepToIGESBRep_Entity.cxx | 12 +++++++++--- src/IGESControl/IGESControl_Writer.cxx | 8 +++++++- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/BRepToIGESBRep/BRepToIGESBRep_Entity.cxx b/src/BRepToIGESBRep/BRepToIGESBRep_Entity.cxx index e3297c32e6..416c63a2e5 100755 --- a/src/BRepToIGESBRep/BRepToIGESBRep_Entity.cxx +++ b/src/BRepToIGESBRep/BRepToIGESBRep_Entity.cxx @@ -161,6 +161,8 @@ void BRepToIGESBRep_Entity::TransferVertexList() { Standard_Integer nbvertices = myVertices.Extent(); + if(!nbvertices) + return; Handle(TColgp_HArray1OfXYZ) vertices= new TColgp_HArray1OfXYZ(1,nbvertices); Standard_Real Unit = GetUnit(); Standard_Real X,Y,Z; @@ -222,6 +224,8 @@ void BRepToIGESBRep_Entity::TransferEdgeList() Handle(IGESSolid_VertexList) myendlist; Standard_Integer nbedges = myEdges.Extent(); + if(!nbedges) + return; Handle(IGESData_HArray1OfIGESEntity) Curves= new IGESData_HArray1OfIGESEntity(1,nbedges); Handle(IGESSolid_HArray1OfVertexList) startVertexList = @@ -349,6 +353,8 @@ Handle(IGESData_IGESEntity) BRepToIGESBRep_Entity::TransferShape // error message } } + if(res.IsNull()) + return res; TransferVertexList(); TransferEdgeList(); @@ -785,7 +791,7 @@ Handle(IGESData_IGESEntity) BRepToIGESBRep_Entity::TransferCompSolid (const Topo if (nbsolids == 1) { myent = ISolid; } - else { + else if(nbsolids > 1 ){ Handle(IGESBasic_Group) IGroup = new IGESBasic_Group; IGroup->Init(Tab); myent = IGroup; @@ -880,11 +886,11 @@ Handle(IGESData_IGESEntity) BRepToIGESBRep_Entity::TransferCompound (const TopoD Tab->SetValue(itab,item); } } - + if (nbshapes == 1) { res = IShape; } - else { + else if(nbshapes > 1) { Handle(IGESBasic_Group) IGroup = new IGESBasic_Group; IGroup->Init(Tab); res = IGroup; diff --git a/src/IGESControl/IGESControl_Writer.cxx b/src/IGESControl/IGESControl_Writer.cxx index ff29b75976..2e92fe63c6 100755 --- a/src/IGESControl/IGESControl_Writer.cxx +++ b/src/IGESControl/IGESControl_Writer.cxx @@ -110,6 +110,9 @@ Standard_Boolean IGESControl_Writer::AddShape (const TopoDS_Shape& theShape) BRepToIGESBRep_Entity B1; B1.SetTransferProcess(theTP); B1.SetModel(themod); if (thecr) ent = B1.TransferShape(Shape); else ent = B0.TransferShape(Shape); + + if(ent.IsNull()) + return Standard_False; // modified by NIZHNY-EAP Tue Aug 29 11:37:18 2000 ___BEGIN___ XSAlgo::AlgoContainer()->MergeTransferInfo(theTP, info); // modified by NIZHNY-EAP Tue Aug 29 11:37:25 2000 ___END___ @@ -226,9 +229,12 @@ Standard_Boolean IGESControl_Writer::Write { if (!S) return Standard_False; ComputeModel(); + Standard_Integer nbEnt = themod->NbEntities(); #ifdef DEBUG - cout<<" IGES Write : "<NbEntities()<<" ent.s"<< flush; + cout<<" IGES Write : "<