// Created on: 1993-05-07
// Created by: Jacques GOUSSARD
// Copyright (c) 1993-1999 Matra Datavision
-// Copyright (c) 1999-2012 OPEN CASCADE SAS
+// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
-// The content of this file is subject to the Open CASCADE Technology Public
-// License Version 6.5 (the "License"). You may not use the content of this file
-// except in compliance with the License. Please obtain a copy of the License
-// at http://www.opencascade.org and read it completely before using this file.
+// This file is part of Open CASCADE Technology software library.
//
-// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
-// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
//
-// The Original Code and all software distributed under the License is
-// distributed on an "AS IS" basis, without warranty of any kind, and the
-// Initial Developer hereby disclaims all such warranties, including without
-// limitation, any warranties of merchantability, fitness for a particular
-// purpose or non-infringement. Please see the License for the specific terms
-// and conditions governing the rights and limitations under the License.
-
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
// ----------------------------------------------------------------------
//-- lbr: Modifs importantes du 16-17 Nov 95
#include <IntPatch_CSFunction.hxx>
#include <IntPatch_CurvIntSurf.hxx>
+#define myInfinite 1.e15 // the same as was in Adaptor3d_TopolTool
static void Recadre(GeomAbs_SurfaceType typeS1,
GeomAbs_SurfaceType typeS2,
const Standard_Boolean OnFirst,
Standard_Real& U, Standard_Real& V)
{
+ Handle(IntPatch_WLine) wlin = Handle(IntPatch_WLine)::DownCast(L);
+ Handle(IntPatch_RLine) rlin = Handle(IntPatch_RLine)::DownCast(L);
IntPatch_IType typL = L->ArcType();
- const Handle(IntPatch_WLine)& wlin = (const Handle(IntPatch_WLine)&)L;
- const Handle(IntPatch_RLine)& rlin = (const Handle(IntPatch_RLine)&)L;
Standard_Integer Nbptlin = (typL == IntPatch_Walking
? wlin->NbPnts()
: rlin->NbPnts());
// Dans le cas d une ligne de cheminement, il faudrait voir la projection
// et le calcul de la tangente.
- const Handle(IntPatch_RLine)& rlin = (*((Handle(IntPatch_RLine)*)&L)); //-- aucune verification n est
- const Handle(IntPatch_WLine)& wlin = (*((Handle(IntPatch_WLine)*)&L)); //-- faite au cast.
+ Handle(IntPatch_RLine) rlin (Handle(IntPatch_RLine)::DownCast (L)); //-- aucune verification n est
+ Handle(IntPatch_WLine) wlin (Handle(IntPatch_WLine)::DownCast (L)); //-- faite au cast.
gp_Pnt ptbid;
gp_Vec d1u,d1v;
gp_Pnt2d p2d;
const Handle(Adaptor3d_TopolTool)& Domain,
const Handle(Adaptor3d_HSurface)& OtherSurf,
const Standard_Boolean OnFirst,
- const Standard_Real Tol )
+ const Standard_Real Tol,
+ const Standard_Boolean hasBeenAdded)
{
// Domain est le domaine de restriction de la surface Surf.
Standard_Integer i,j,k;
TColgp_SequenceOfPnt locpt;
TColgp_SequenceOfPnt2d locpt2;
- const Handle(IntPatch_RLine)& rlin = (*((Handle(IntPatch_RLine)*)&L)); //-- aucune verification n est
- const Handle(IntPatch_WLine)& wlin = (*((Handle(IntPatch_WLine)*)&L)); //-- faite au cast.
+ Handle(IntPatch_RLine) rlin (Handle(IntPatch_RLine)::DownCast (L)); //-- aucune verification n est
+ Handle(IntPatch_WLine) wlin (Handle(IntPatch_WLine)::DownCast (L)); //-- faite au cast.
Standard_Integer Nbvtx =0;
Standard_Integer Nbptlin =0;
Standard_Real tolPLin = Surf->UResolution(Precision::Confusion());
Standard_Real VRes = Surf->VResolution(edgeTol);
IntPatch_HInterTool::Bounds(arc,PFirst,PLast);
- if (Precision::IsNegativeInfinite(PFirst) ||
- Precision::IsPositiveInfinite(PLast)) {
- //-- cout<<" IntPatch_RstInt::PutVertexOnLine ---> Restrictions Infinies :"<<endl;
- return;
- }
+ if(Precision::IsNegativeInfinite(PFirst))
+ PFirst = -myInfinite;
+ if(Precision::IsPositiveInfinite(PLast))
+ PLast = myInfinite;
+ //if (Precision::IsNegativeInfinite(PFirst) ||
+ // Precision::IsPositiveInfinite(PLast)) {
+ // //-- cout<<" IntPatch_RstInt::PutVertexOnLine ---> Restrictions Infinies :"<<endl;
+ // return;
+ //}
Standard_Boolean isVFirst = Standard_False, isVLast = Standard_False;
gp_Pnt2d p2dFirst,p2dLast;
(!Domain->Has3d() && Standard_Integer(nptCh)+1 < Nbptlin);
if (!isNptLow && !IsSegment2dSmall(Brise,UMinAr,UMaxAr,tolU,tolV)) {
// treat both ends
- Standard_Real UMinChP,UMaxChP,UMinArP,UMaxArP;
- UMinChP = IntegerPart(UMinCh); UMinArP = IntegerPart(UMinAr);
- UMaxChP = IntegerPart(UMaxCh); UMaxArP = IntegerPart(UMaxAr);
- Standard_Integer irangCh1,irangCh2,irangAr1,irangAr2;
- irangCh1 = Standard_Integer(UMinChP)+1; irangCh2 = Standard_Integer(UMaxChP)+1;
- irangAr1 = Standard_Integer(UMinArP)+1; irangAr2 = Standard_Integer(UMaxArP)+1;
- UMinChP = UMinCh - UMinChP; UMinArP = UMinAr - UMinArP;
+ Standard_Real UMinChP,UMinArP,UMaxArP;
+ UMinChP = IntegerPart(UMinCh);
+ UMinArP = IntegerPart(UMinAr);
+ UMaxArP = IntegerPart(UMaxAr);
+ Standard_Integer irangAr1,irangAr2;
+ irangAr1 = Standard_Integer(UMinArP)+1;
+ irangAr2 = Standard_Integer(UMaxArP)+1;
+ UMinChP = UMinCh - UMinChP;
+ UMinArP = UMinAr - UMinArP;
//UMaxChP = UMaxCh - UMaxChP; UMaxArP = UMaxAr - UMaxArP;
const Standard_Real eps = 1e-10;
// Standard_Boolean isChExtr1 = irangCh1==1 && UMinChP<eps;
*/
wlin->SetPeriod(pu1,pv1,pu2,pv2);
- wlin->ComputeVertexParameters(Tol);
+ wlin->ComputeVertexParameters(Tol, hasBeenAdded);
}
else {
-#ifdef DEB
- //if(rlin->NbVertex()==0) {
- // cout<<" \n *** IntPatch RstInt.gxx : nbvtx = 0 sur rline *** \n"<<endl;
- //}
-#endif
rlin->ComputeVertexParameters(Tol);
}
}