mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2025-01-26 12:00:33 +05:00
Issue 0022843: EDF GEOM: [HYDRO] Polyline using a former polyline
- Properly process closed polyline
This commit is contained in:
parent
d99635da98
commit
860d4b3bf2
@ -841,7 +841,8 @@ Handle(TColgp_HArray1OfPnt) CurveCreator_Utils::getPoints
|
|||||||
|
|
||||||
anExp.Next();
|
anExp.Next();
|
||||||
|
|
||||||
if (IsBSpline) {
|
if (IsBSpline)
|
||||||
|
{
|
||||||
// There should be a single BSpline curve in the wire.
|
// There should be a single BSpline curve in the wire.
|
||||||
if (anExp.More()) {
|
if (anExp.More()) {
|
||||||
return aResult;
|
return aResult;
|
||||||
@ -869,16 +870,20 @@ Handle(TColgp_HArray1OfPnt) CurveCreator_Utils::getPoints
|
|||||||
|
|
||||||
IsClosed = aV[0].IsSame(aV[1]) ? true : false;
|
IsClosed = aV[0].IsSame(aV[1]) ? true : false;
|
||||||
|
|
||||||
const Standard_Integer aNbPoints = aBSplCurve->NbKnots();
|
Standard_Integer aNbPoints = aBSplCurve->NbKnots();
|
||||||
TColStd_Array1OfReal aKnots(1, aNbPoints);
|
TColStd_Array1OfReal aKnots(1, aNbPoints);
|
||||||
|
|
||||||
aBSplCurve->Knots(aKnots);
|
aBSplCurve->Knots(aKnots);
|
||||||
aResult = new TColgp_HArray1OfPnt(1, aBSplCurve->NbKnots());
|
|
||||||
|
|
||||||
for (i = aKnots.Lower(); i <= aKnots.Upper(); ++i) {
|
// Don't consider the last point as it coincides with the first
|
||||||
aResult->SetValue(i, aBSplCurve->Value(aKnots.Value(i)));
|
if (IsClosed)
|
||||||
}
|
--aNbPoints;
|
||||||
} else {
|
|
||||||
|
aResult = new TColgp_HArray1OfPnt(1, aNbPoints);
|
||||||
|
for (i = 1; i <= aNbPoints; ++i)
|
||||||
|
aResult->SetValue(i, aBSplCurve->Value( aKnots.Value(i) ));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
// This is a polyline.
|
// This is a polyline.
|
||||||
TopTools_ListOfShape aVertices;
|
TopTools_ListOfShape aVertices;
|
||||||
Standard_Integer aNbVtx = 1;
|
Standard_Integer aNbVtx = 1;
|
||||||
@ -910,6 +915,13 @@ Handle(TColgp_HArray1OfPnt) CurveCreator_Utils::getPoints
|
|||||||
|
|
||||||
IsClosed = aFirstVtx.IsSame(aLastVtx) ? true : false;
|
IsClosed = aFirstVtx.IsSame(aLastVtx) ? true : false;
|
||||||
|
|
||||||
|
// Store a last vertex
|
||||||
|
if (!IsClosed)
|
||||||
|
{
|
||||||
|
aVertices.Append(aLastVtx);
|
||||||
|
aNbVtx++;
|
||||||
|
}
|
||||||
|
|
||||||
// Fill the array of points.
|
// Fill the array of points.
|
||||||
aResult = new TColgp_HArray1OfPnt(1, aNbVtx);
|
aResult = new TColgp_HArray1OfPnt(1, aNbVtx);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user