Reading and writing of triangle_strips and triangle_fans has been corrected in RWStepVisual_RWComplexTriangulatedFace.cxx file. And corresponding corrections have been added to other files.
#include <Standard_Real.hxx>
#include <StepVisual_FaceOrSurface.hxx>
#include <TColStd_HArray1OfInteger.hxx>
-#include <TColStd_HArray2OfInteger.hxx>
+#include <TColStd_HArray1OfTransient.hxx>
//=======================================================================
//function : RWStepVisual_RWComplexTriangulatedFace
}
}
- Handle(TColStd_HArray2OfInteger) aTriangleStrips;
+ Handle(TColStd_HArray1OfTransient) aTriangleStrips;
Standard_Integer sub7 = 0;
if (theData->ReadSubList(theNum, 7, "triangle_strips", theCheck, sub7))
{
Standard_Integer nb0 = theData->NbParams(sub7);
- Standard_Integer nbj0 = theData->NbParams(theData->ParamNumber(sub7,1));
- aTriangleStrips = new TColStd_HArray2OfInteger(1, nb0, 1, nbj0);
+ aTriangleStrips = new TColStd_HArray1OfTransient(1, nb0);
for (Standard_Integer i0 = 1; i0 <= nb0; i0++)
{
+ Standard_Integer nbj0 = theData->NbParams(theData->ParamNumber(sub7, i0));
+ Handle(TColStd_HArray1OfInteger) aSingleTriangleStrip = new TColStd_HArray1OfInteger(1, nbj0);
Standard_Integer subj7 = 0;
if ( theData->ReadSubList (sub7, i0, "sub-part(triangle_strips)", theCheck, subj7) ) {
Standard_Integer num4 = subj7;
{
Standard_Integer anIt0;
theData->ReadInteger(num4, j0, "integer", theCheck, anIt0);
- aTriangleStrips->SetValue(i0,j0, anIt0);
+ aSingleTriangleStrip->SetValue(j0, anIt0);
}
+ aTriangleStrips->SetValue(i0, aSingleTriangleStrip);
}
}
}
- Handle(TColStd_HArray2OfInteger) aTriangleFans;
+ Handle(TColStd_HArray1OfTransient) aTriangleFans;
Standard_Integer sub8 = 0;
if (theData->ReadSubList(theNum, 8, "triangle_fans", theCheck, sub8))
{
Standard_Integer nb0 = theData->NbParams(sub8);
- Standard_Integer nbj0 = theData->NbParams(theData->ParamNumber(sub8,1));
- aTriangleFans = new TColStd_HArray2OfInteger(1, nb0, 1, nbj0);
+ aTriangleFans = new TColStd_HArray1OfTransient(1, nb0);
for (Standard_Integer i0 = 1; i0 <= nb0; i0++)
{
+ Standard_Integer nbj0 = theData->NbParams(theData->ParamNumber(sub8, i0));
+ Handle(TColStd_HArray1OfInteger) aSingleTriangleFan = new TColStd_HArray1OfInteger(1, nbj0);
Standard_Integer subj8 = 0;
if ( theData->ReadSubList (sub8, i0, "sub-part(triangle_fans)", theCheck, subj8) ) {
Standard_Integer num4 = subj8;
{
Standard_Integer anIt0;
theData->ReadInteger(num4, j0, "integer", theCheck, anIt0);
- aTriangleFans->SetValue(i0,j0, anIt0);
+ aSingleTriangleFan->SetValue(j0, anIt0);
}
+ aTriangleFans->SetValue(i0, aSingleTriangleFan);
}
}
}
theSW.CloseSub();
theSW.OpenSub();
- for (Standard_Integer i6 = 1; i6 <= theEnt->TriangleStrips()->RowLength(); i6++)
+ for (Standard_Integer i6 = 1; i6 <= theEnt->NbTriangleStrips(); i6++)
{
theSW.NewLine(Standard_False);
theSW.OpenSub();
- for (Standard_Integer j6 = 1; j6 <= theEnt->TriangleStrips()->ColLength(); j6++)
+ Handle(TColStd_HArray1OfInteger) aTriangleStrip = Handle(TColStd_HArray1OfInteger)::DownCast(theEnt->TriangleStrips()->Value(i6));
+ for (Standard_Integer j6 = 1; j6 <= aTriangleStrip->Length(); j6++)
{
- Standard_Integer Var0 = theEnt->TriangleStrips()->Value(i6,j6);
+ Standard_Integer Var0 = aTriangleStrip->Value(j6);
theSW.Send(Var0);
}
theSW.CloseSub();
theSW.CloseSub();
theSW.OpenSub();
- for (Standard_Integer i7 = 1; i7 <= theEnt->TriangleFans()->RowLength(); i7++)
+ for (Standard_Integer i7 = 1; i7 <= theEnt->NbTriangleFans(); i7++)
{
theSW.NewLine(Standard_False);
theSW.OpenSub();
- for (Standard_Integer j7 = 1; j7 <= theEnt->TriangleFans()->ColLength(); j7++)
+ Handle(TColStd_HArray1OfInteger) aTriangleFan = Handle(TColStd_HArray1OfInteger)::DownCast(theEnt->TriangleFans()->Value(i7));
+ for (Standard_Integer j7 = 1; j7 <= aTriangleFan->Length(); j7++)
{
- Standard_Integer Var0 = theEnt->TriangleFans()->Value(i7,j7);
+ Standard_Integer Var0 = aTriangleFan->Value(j7);
theSW.Send(Var0);
}
theSW.CloseSub();
{
// Inherited fields of Representation
-
- for (Standard_Integer i1 = 1; i1 <= theEnt->StepRepr_Representation::Items()->Length(); i1++)
+ if (!theEnt->StepRepr_Representation::Items().IsNull())
{
- Handle(StepRepr_RepresentationItem) Var0 = theEnt->StepRepr_Representation::Items()->Value(i1);
- theIter.AddItem(Var0);
+ for (Standard_Integer i1 = 1; i1 <= theEnt->StepRepr_Representation::Items()->Length(); i1++)
+ {
+ Handle(StepRepr_RepresentationItem) Var0 = theEnt->StepRepr_Representation::Items()->Value(i1);
+ theIter.AddItem(Var0);
+ }
}
theIter.AddItem(theEnt->StepRepr_Representation::ContextOfItems());
// To proceed with I-DEAS-like STP (ssv; 15.11.2010)
//#define DEBUG
// ============================================================================
-// Method : StepToTopoDS_TranslateFace::StepToTopoDS_TranslateFace
+// Method : StepToTopoDS_TranslateFace
// Purpose : Empty Constructor
// ============================================================================
StepToTopoDS_TranslateFace::StepToTopoDS_TranslateFace()
{
Handle(StepVisual_CoordinatesList) aCoords = theTF->Coordinates();
Handle(TColgp_HArray1OfXYZ) aNodes = aCoords->Points();
- Handle(TColStd_HArray2OfInteger) aTriaStrips = theTF->TriangleStrips();
- Handle(TColStd_HArray2OfInteger) aTriaFans = theTF->TriangleFans();
+ Handle(TColStd_HArray1OfTransient) aTriaStrips = theTF->TriangleStrips();
+ Handle(TColStd_HArray1OfTransient) aTriaFans = theTF->TriangleFans();
const Standard_Boolean aHasUVNodes = Standard_False;
const Standard_Boolean aHasNormals = (theTF->NbNormals() > 0);
Standard_Integer aNbTriaStrips = 0;
for (Standard_Integer i = 1; i <= theTF->NbTriangleStrips(); ++i)
{
- for (Standard_Integer j = 3; j <= aTriaStrips->UpperCol(); j += 2)
+ Handle(TColStd_HArray1OfInteger) aTriangleStrip = Handle(TColStd_HArray1OfInteger)::DownCast(aTriaStrips->Value(i));
+ for (Standard_Integer j = 3; j <= aTriangleStrip->Length(); j += 2)
{
- if (aTriaStrips->Value(i, j) != aTriaStrips->Value(i, j - 2) &&
- aTriaStrips->Value(i, j) != aTriaStrips->Value(i, j - 1))
+ if (aTriangleStrip->Value(j) != aTriangleStrip->Value(j - 2) &&
+ aTriangleStrip->Value(j) != aTriangleStrip->Value(j - 1))
++aNbTriaStrips;
}
- for (Standard_Integer j = 4; j <= aTriaStrips->UpperCol(); j += 2)
+ for (Standard_Integer j = 4; j <= aTriangleStrip->Length(); j += 2)
{
- if (aTriaStrips->Value(i, j) != aTriaStrips->Value(i, j - 2) &&
- aTriaStrips->Value(i, j) != aTriaStrips->Value(i, j - 1))
+ if (aTriangleStrip->Value(j) != aTriangleStrip->Value(j - 2) &&
+ aTriangleStrip->Value(j) != aTriangleStrip->Value(j - 1))
++aNbTriaStrips;
}
}
Standard_Integer aNbTriaFans = 0;
for (Standard_Integer i = 1; i <= theTF->NbTriangleFans(); ++i)
{
- Standard_Integer v1 = aTriaStrips->Value(i, 1);
- for (Standard_Integer j = 3; j <= aTriaStrips->UpperCol(); ++j)
- {
- if (aTriaStrips->Value(i, j) != v1 && aTriaStrips->Value(i, j - 1) != v1)
- ++aNbTriaFans;
- }
+ Handle(TColStd_HArray1OfInteger) aTriangleFan = Handle(TColStd_HArray1OfInteger)::DownCast(aTriaFans->Value(i));
+ aNbTriaFans += aTriangleFan->Length() - 2;
}
Handle(Poly_Triangulation) aMesh = new Poly_Triangulation(theTF->NbPnindex(),
aMesh->SetNode(j, aLF * aPoint);
}
- Standard_Integer k = 1;
- for (Standard_Integer i = 1; i <= theTF->NbTriangleStrips(); ++i)
+ Standard_Integer aTriangleIndex = 1;
+ for (Standard_Integer aTrianStripIndex = 1; aTrianStripIndex <= theTF->NbTriangleStrips(); ++aTrianStripIndex)
{
- for (Standard_Integer j = 3; j <= aTriaStrips->UpperCol(); j += 2)
+ Handle(TColStd_HArray1OfInteger) aTriangleStrip = Handle(TColStd_HArray1OfInteger)::DownCast(aTriaStrips->Value(aTrianStripIndex));
+ for (Standard_Integer anIndex = 3; anIndex <= aTriangleStrip->Length(); anIndex += 2)
+ {
+ if (aTriangleStrip->Value(anIndex) != aTriangleStrip->Value(anIndex - 2) &&
+ aTriangleStrip->Value(anIndex) != aTriangleStrip->Value(anIndex - 1))
+ {
+ aMesh->SetTriangle(aTriangleIndex++, Poly_Triangle(aTriangleStrip->Value(anIndex - 2),
+ aTriangleStrip->Value(anIndex),
+ aTriangleStrip->Value(anIndex - 1)));
+ }
+ }
+ for (Standard_Integer anIndex = 4; anIndex <= aTriangleStrip->Length(); anIndex += 2)
{
- if (aTriaStrips->Value(i, j) != aTriaStrips->Value(i, j - 2) &&
- aTriaStrips->Value(i, j) != aTriaStrips->Value(i, j - 1))
+ if (aTriangleStrip->Value(anIndex) != aTriangleStrip->Value(anIndex - 2) &&
+ aTriangleStrip->Value(anIndex) != aTriangleStrip->Value(anIndex - 1))
{
- aMesh->SetTriangle(k++, Poly_Triangle(aTriaStrips->Value(i, j - 2),
- aTriaStrips->Value(i, j),
- aTriaStrips->Value(i, j - 1)));
+ aMesh->SetTriangle(aTriangleIndex++, Poly_Triangle(aTriangleStrip->Value(anIndex - 2),
+ aTriangleStrip->Value(anIndex - 1),
+ aTriangleStrip->Value(anIndex)));
}
}
- for (Standard_Integer j = 4; j <= aTriaStrips->UpperCol(); j += 2)
+ }
+ for (Standard_Integer aTrianFanIndex = 1; aTrianFanIndex <= theTF->NbTriangleFans(); ++aTrianFanIndex)
+ {
+ Handle(TColStd_HArray1OfInteger) aTriangleFan = Handle(TColStd_HArray1OfInteger)::DownCast(aTriaFans->Value(aTrianFanIndex));
+ for (Standard_Integer anIndex = 3; anIndex <= aTriangleFan->Length(); ++anIndex)
{
- if (aTriaStrips->Value(i, j) != aTriaStrips->Value(i, j - 2) &&
- aTriaStrips->Value(i, j) != aTriaStrips->Value(i, j - 1))
+ if (aTriangleFan->Value(anIndex) != aTriangleFan->Value(anIndex - 2) &&
+ aTriangleFan->Value(anIndex - 1) != aTriangleFan->Value(anIndex - 2))
{
- aMesh->SetTriangle(k++, Poly_Triangle(aTriaStrips->Value(i, j - 2),
- aTriaStrips->Value(i, j - 1),
- aTriaStrips->Value(i, j)));
+ aMesh->SetTriangle(aTriangleIndex++, Poly_Triangle(aTriangleFan->Value(1),
+ aTriangleFan->Value(anIndex),
+ aTriangleFan->Value(anIndex - 1)));
}
}
}
const Standard_Boolean theHasTessellatedFace_GeometricLink,
const StepVisual_FaceOrSurface& theTessellatedFace_GeometricLink,
const Handle(TColStd_HArray1OfInteger)& thePnindex,
- const Handle(TColStd_HArray2OfInteger)& theTriangleStrips,
- const Handle(TColStd_HArray2OfInteger)& theTriangleFans)
+ const Handle(TColStd_HArray1OfTransient)& theTriangleStrips,
+ const Handle(TColStd_HArray1OfTransient)& theTriangleFans)
{
StepVisual_TessellatedFace::Init(theRepresentationItem_Name,
theTessellatedFace_Coordinates,
//purpose :
//=======================================================================
-Handle(TColStd_HArray2OfInteger) StepVisual_ComplexTriangulatedFace::TriangleStrips () const
+Handle(TColStd_HArray1OfTransient) StepVisual_ComplexTriangulatedFace::TriangleStrips () const
{
return myTriangleStrips;
}
//purpose :
//=======================================================================
-void StepVisual_ComplexTriangulatedFace::SetTriangleStrips(const Handle(TColStd_HArray2OfInteger)& theTriangleStrips)
+void StepVisual_ComplexTriangulatedFace::SetTriangleStrips(const Handle(TColStd_HArray1OfTransient)& theTriangleStrips)
{
myTriangleStrips = theTriangleStrips;
}
{
return 0;
}
- return myTriangleStrips->ColLength();
+ return myTriangleStrips->Length();
}
//=======================================================================
//purpose :
//=======================================================================
-Handle(TColStd_HArray2OfInteger) StepVisual_ComplexTriangulatedFace::TriangleFans () const
+Handle(TColStd_HArray1OfTransient) StepVisual_ComplexTriangulatedFace::TriangleFans () const
{
return myTriangleFans;
}
//purpose :
//=======================================================================
-void StepVisual_ComplexTriangulatedFace::SetTriangleFans(const Handle(TColStd_HArray2OfInteger)& theTriangleFans)
+void StepVisual_ComplexTriangulatedFace::SetTriangleFans(const Handle(TColStd_HArray1OfTransient)& theTriangleFans)
{
myTriangleFans = theTriangleFans;
}
{
return 0;
}
- return myTriangleFans->ColLength();
+ return myTriangleFans->Length();
}
#include <StepVisual_TessellatedFace.hxx>
#include <TColStd_HArray1OfInteger.hxx>
-#include <TColStd_HArray2OfInteger.hxx>
+#include <TColStd_HArray1OfTransient.hxx>
DEFINE_STANDARD_HANDLE(StepVisual_ComplexTriangulatedFace, StepVisual_TessellatedFace)
const Standard_Boolean theHasTessellatedFace_GeometricLink,
const StepVisual_FaceOrSurface& theTessellatedFace_GeometricLink,
const Handle(TColStd_HArray1OfInteger)& thePnindex,
- const Handle(TColStd_HArray2OfInteger)& theTriangleStrips,
- const Handle(TColStd_HArray2OfInteger)& theTriangleFans);
+ const Handle(TColStd_HArray1OfTransient)& theTriangleStrips,
+ const Handle(TColStd_HArray1OfTransient)& theTriangleFans);
//! Returns field Pnindex
Standard_EXPORT Handle(TColStd_HArray1OfInteger) Pnindex() const;
Standard_EXPORT Standard_Integer PnindexValue(const Standard_Integer theNum) const;
//! Returns field TriangleStrips
- Standard_EXPORT Handle(TColStd_HArray2OfInteger) TriangleStrips() const;
+ Standard_EXPORT Handle(TColStd_HArray1OfTransient) TriangleStrips() const;
//! Sets field TriangleStrips
- Standard_EXPORT void SetTriangleStrips (const Handle(TColStd_HArray2OfInteger)& theTriangleStrips);
+ Standard_EXPORT void SetTriangleStrips (const Handle(TColStd_HArray1OfTransient)& theTriangleStrips);
//! Returns number of TriangleStrips
Standard_EXPORT Standard_Integer NbTriangleStrips() const;
//! Returns field TriangleFans
- Standard_EXPORT Handle(TColStd_HArray2OfInteger) TriangleFans() const;
+ Standard_EXPORT Handle(TColStd_HArray1OfTransient) TriangleFans() const;
//! Sets field TriangleFans
- Standard_EXPORT void SetTriangleFans (const Handle(TColStd_HArray2OfInteger)& theTriangleFans);
+ Standard_EXPORT void SetTriangleFans (const Handle(TColStd_HArray1OfTransient)& theTriangleFans);
//! Returns number of TriangleFans
Standard_EXPORT Standard_Integer NbTriangleFans() const;
private:
Handle(TColStd_HArray1OfInteger) myPnindex;
- Handle(TColStd_HArray2OfInteger) myTriangleStrips;
- Handle(TColStd_HArray2OfInteger) myTriangleFans;
+ Handle(TColStd_HArray1OfTransient) myTriangleStrips;
+ Handle(TColStd_HArray1OfTransient) myTriangleFans;
};
set nb_faces 273
set nb_nodes 3788
-set nb_triangles 2893
+set nb_triangles 3377