mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-04 13:13:25 +03:00
0032133: Modeling Data - Restriction of access to internal arrays for Poly_Triangulation, revision of API
Removed methods from Poly_Triangulation/Poly_PolygonOnTriangulation giving access to internal arrays of 2d and 3d nodes, triangles and normals.
This commit is contained in:
@@ -52,22 +52,18 @@ Standard_Boolean StlAPI_Reader::Read (TopoDS_Shape& theShape,
|
||||
BRep_Builder BuildTool;
|
||||
BuildTool.MakeCompound (aComp);
|
||||
|
||||
const TColgp_Array1OfPnt& aNodes = aMesh->Nodes();
|
||||
const Poly_Array1OfTriangle& aTriangles = aMesh->Triangles();
|
||||
for (Standard_Integer aTriIdx = aTriangles.Lower();
|
||||
aTriIdx <= aTriangles.Upper();
|
||||
++aTriIdx)
|
||||
for (Standard_Integer aTriIdx = 1; aTriIdx <= aMesh->NbTriangles(); ++aTriIdx)
|
||||
{
|
||||
const Poly_Triangle& aTriangle = aTriangles(aTriIdx);
|
||||
const Poly_Triangle aTriangle = aMesh->Triangle (aTriIdx);
|
||||
|
||||
Standard_Integer anId[3];
|
||||
aTriangle.Get(anId[0], anId[1], anId[2]);
|
||||
|
||||
const gp_Pnt& aPnt1 = aNodes (anId[0]);
|
||||
const gp_Pnt& aPnt2 = aNodes (anId[1]);
|
||||
const gp_Pnt& aPnt3 = aNodes (anId[2]);
|
||||
if ((!(aPnt1.IsEqual (aPnt2, 0.0)))
|
||||
&& (!(aPnt1.IsEqual (aPnt3, 0.0))))
|
||||
const gp_Pnt aPnt1 = aMesh->Node (anId[0]);
|
||||
const gp_Pnt aPnt2 = aMesh->Node (anId[1]);
|
||||
const gp_Pnt aPnt3 = aMesh->Node (anId[2]);
|
||||
if (!(aPnt1.IsEqual (aPnt2, 0.0))
|
||||
&& !(aPnt1.IsEqual (aPnt3, 0.0)))
|
||||
{
|
||||
aTriVertexes[0] = BRepBuilderAPI_MakeVertex (aPnt1);
|
||||
aTriVertexes[1] = BRepBuilderAPI_MakeVertex (aPnt2);
|
||||
|
@@ -83,23 +83,20 @@ Standard_Boolean StlAPI_Writer::Write (const TopoDS_Shape& theShape,
|
||||
continue;
|
||||
}
|
||||
|
||||
const TColgp_Array1OfPnt& aNodes = aTriangulation->Nodes();
|
||||
const Poly_Array1OfTriangle& aTriangles = aTriangulation->Triangles();
|
||||
|
||||
// copy nodes
|
||||
gp_Trsf aTrsf = aLoc.Transformation();
|
||||
for (Standard_Integer aNodeIter = aNodes.Lower(); aNodeIter <= aNodes.Upper(); ++aNodeIter)
|
||||
for (Standard_Integer aNodeIter = 1; aNodeIter <= aTriangulation->NbNodes(); ++aNodeIter)
|
||||
{
|
||||
gp_Pnt aPnt = aNodes (aNodeIter);
|
||||
gp_Pnt aPnt = aTriangulation->Node (aNodeIter);
|
||||
aPnt.Transform (aTrsf);
|
||||
aMesh->ChangeNode (aNodeIter + aNodeOffset) = aPnt;
|
||||
aMesh->SetNode (aNodeIter + aNodeOffset, aPnt);
|
||||
}
|
||||
|
||||
// copy triangles
|
||||
const TopAbs_Orientation anOrientation = anExpSF.Current().Orientation();
|
||||
for (Standard_Integer aTriIter = aTriangles.Lower(); aTriIter <= aTriangles.Upper(); ++aTriIter)
|
||||
for (Standard_Integer aTriIter = 1; aTriIter <= aTriangulation->NbTriangles(); ++aTriIter)
|
||||
{
|
||||
Poly_Triangle aTri = aTriangles (aTriIter);
|
||||
Poly_Triangle aTri = aTriangulation->Triangle (aTriIter);
|
||||
|
||||
Standard_Integer anId[3];
|
||||
aTri.Get (anId[0], anId[1], anId[2]);
|
||||
@@ -117,11 +114,11 @@ Standard_Boolean StlAPI_Writer::Write (const TopoDS_Shape& theShape,
|
||||
anId[2] += aNodeOffset;
|
||||
|
||||
aTri.Set (anId[0], anId[1], anId[2]);
|
||||
aMesh->ChangeTriangle (aTriIter + aTriangleOffet) = aTri;
|
||||
aMesh->SetTriangle (aTriIter + aTriangleOffet, aTri);
|
||||
}
|
||||
|
||||
aNodeOffset += aNodes.Size();
|
||||
aTriangleOffet += aTriangles.Size();
|
||||
aNodeOffset += aTriangulation->NbNodes();
|
||||
aTriangleOffet += aTriangulation->NbTriangles();
|
||||
}
|
||||
|
||||
OSD_Path aPath (theFileName);
|
||||
|
Reference in New Issue
Block a user