1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-09 13:22:24 +03:00

0024002: Overall code and build procedure refactoring -- automatic

Automatic upgrade of OCCT code by command "occt_upgrade . -nocdl":
- WOK-generated header files from inc and sources from drv are moved to src
- CDL files removed
- All packages are converted to nocdlpack
This commit is contained in:
abv
2015-07-12 07:42:38 +03:00
parent 543a996496
commit 42cf5bc1ca
15354 changed files with 623957 additions and 509844 deletions

View File

@@ -1,10 +1,27 @@
IntPolyh_Intersection_1.cxx
IntPolyh_Array.hxx
IntPolyh_ArrayOfSectionLines.hxx
IntPolyh_ArrayOfCouples.hxx
IntPolyh_ArrayOfEdges.hxx
IntPolyh_ArrayOfPoints.hxx
IntPolyh_ArrayOfSectionLines.hxx
IntPolyh_ArrayOfStartPoints.hxx
IntPolyh_ArrayOfTangentZones.hxx
IntPolyh_ArrayOfTriangles.hxx
IntPolyh_Couple.cxx
IntPolyh_Couple.hxx
IntPolyh_Edge.cxx
IntPolyh_Edge.hxx
IntPolyh_Intersection.cxx
IntPolyh_Intersection.hxx
IntPolyh_Intersection_1.cxx
IntPolyh_MaillageAffinage.cxx
IntPolyh_MaillageAffinage.hxx
IntPolyh_PMaillageAffinage.hxx
IntPolyh_Point.cxx
IntPolyh_Point.hxx
IntPolyh_SectionLine.cxx
IntPolyh_SectionLine.hxx
IntPolyh_SeqOfStartPoints.hxx
IntPolyh_StartPoint.cxx
IntPolyh_StartPoint.hxx
IntPolyh_Triangle.cxx
IntPolyh_Triangle.hxx

View File

@@ -1,105 +0,0 @@
-- Created on: 1999-03-03
-- Created by: Fabrice SERVANT
-- Copyright (c) 1999 Matra Datavision
-- Copyright (c) 1999-2014 OPEN CASCADE SAS
--
-- This file is part of Open CASCADE Technology software library.
--
-- 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.
--
-- Alternatively, this file may be used under the terms of Open CASCADE
-- commercial license or contractual agreement.
-- Modified by skv - Thu Sep 25 18:04:05 2003 OCC567
-- Definition of new pointer to MaillageAffinage
-- which is used in Intersection class.
package IntPolyh
---Purpose: This package provides algorithms to compute
-- starting points for the surface surface
-- intersection packages. Those starting points are
-- used if the two surfaces are bi-parametric
-- surfaces (bezier, nurbs, algorithm surfaces ...)
--
-- This package provides methods
--
-- to compute meshes on the two surfaces. The meshes can
-- be refined if necessary. It is the major improvement
-- to the Intf package which gives the same kind of
-- ressources.
--
-- to intersect the two meshes
--
-- to give approximated starting-points. Those points are
-- organised in lines, when the points belong to a same
-- section line, or returned as isolated points when they
-- can neither define a new line nor be linked to an
-- existant line.
--
-- A starting-point contains 3d information, parametric
-- ionformation and quality criterion. (i.e. X,Y,Z, U1,V1,
-- U2,V2, Incidence). Incidence is a real wich gives an
-- estimated angle between the two surfaces near the
-- intersection point.
--
--
uses
TCollection,
TColStd,
gp,
Bnd,
Adaptor3d
is
imported ArrayOfSectionLines from IntPolyh;
imported ArrayOfCouples from IntPolyh;
imported ArrayOfEdges from IntPolyh;
imported ArrayOfPoints from IntPolyh;
imported ArrayOfStartPoints from IntPolyh;
imported ArrayOfTangentZones from IntPolyh;
imported ArrayOfTriangles from IntPolyh;
class Intersection;
------------------------------------------------------------
---- Internal classes and algorithms
------------------------------------------------------------
class Couple;
class Point;
class StartPoint;
imported SeqOfStartPoints;
class Edge;
class Triangle;
class MaillageAffinage;
class SectionLine;
-- class TangentZone; For the moment we use the StartPoint Class
pointer PMaillageAffinage to MaillageAffinage from IntPolyh;
end;

View File

@@ -1,65 +0,0 @@
-- Created on: 1999-04-08
-- Created by: Fabrice SERVANT
-- Copyright (c) 1999 Matra Datavision
-- Copyright (c) 1999-2014 OPEN CASCADE SAS
--
-- This file is part of Open CASCADE Technology software library.
--
-- 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.
--
-- Alternatively, this file may be used under the terms of Open CASCADE
-- commercial license or contractual agreement.
class Couple from IntPolyh
---Purpose: couple of triangles
uses
Pnt from gp
is
Create;
Create(i1,i2: Integer from Standard) ;
FirstValue(me)
returns Integer from Standard
is static;
SecondValue(me)
returns Integer from Standard
is static;
AnalyseFlagValue(me)
returns Integer from Standard
is static;
AngleValue(me)
returns Real from Standard
is static;
SetCoupleValue(me: in out; v,w: Integer from Standard)
is static;
SetAnalyseFlag(me: in out; v: Integer from Standard)
is static;
SetAngleValue(me: in out; ang: Real from Standard)
is static;
Dump(me; v: Integer from Standard)
is static;
fields
t1,t2,ia : Integer from Standard;
angle : Real from Standard;
end Couple from IntPolyh;

View File

@@ -14,9 +14,10 @@
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#include <IntPolyh_Couple.ixx>
#include <stdio.h>
#include <IntPolyh_Couple.hxx>
#include <stdio.h>
IntPolyh_Couple::IntPolyh_Couple() : t1(-1),t2(-1),ia(0),angle(-2.0) { }
IntPolyh_Couple::IntPolyh_Couple(const Standard_Integer a,const Standard_Integer b) : t1(a),t2(b),ia(0),angle(-2.0) { }

View File

@@ -0,0 +1,83 @@
// Created on: 1999-04-08
// Created by: Fabrice SERVANT
// Copyright (c) 1999 Matra Datavision
// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// 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.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#ifndef _IntPolyh_Couple_HeaderFile
#define _IntPolyh_Couple_HeaderFile
#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
#include <Standard_Integer.hxx>
#include <Standard_Real.hxx>
//! couple of triangles
class IntPolyh_Couple
{
public:
DEFINE_STANDARD_ALLOC
Standard_EXPORT IntPolyh_Couple();
Standard_EXPORT IntPolyh_Couple(const Standard_Integer i1, const Standard_Integer i2);
Standard_EXPORT Standard_Integer FirstValue() const;
Standard_EXPORT Standard_Integer SecondValue() const;
Standard_EXPORT Standard_Integer AnalyseFlagValue() const;
Standard_EXPORT Standard_Real AngleValue() const;
Standard_EXPORT void SetCoupleValue (const Standard_Integer v, const Standard_Integer w);
Standard_EXPORT void SetAnalyseFlag (const Standard_Integer v);
Standard_EXPORT void SetAngleValue (const Standard_Real ang);
Standard_EXPORT void Dump (const Standard_Integer v) const;
protected:
private:
Standard_Integer t1;
Standard_Integer t2;
Standard_Integer ia;
Standard_Real angle;
};
#endif // _IntPolyh_Couple_HeaderFile

View File

@@ -1,81 +0,0 @@
-- Created on: 1999-03-05
-- Created by: Fabrice SERVANT
-- Copyright (c) 1999 Matra Datavision
-- Copyright (c) 1999-2014 OPEN CASCADE SAS
--
-- This file is part of Open CASCADE Technology software library.
--
-- 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.
--
-- Alternatively, this file may be used under the terms of Open CASCADE
-- commercial license or contractual agreement.
class Edge from IntPolyh
uses
Pnt from gp
is
Create;
Create(i1,i2,i3,i4: Integer from Standard) ;
FirstPoint(me)
returns Integer from Standard
is static;
SecondPoint(me)
returns Integer from Standard
is static;
FirstTriangle(me)
returns Integer from Standard
is static;
SecondTriangle(me)
returns Integer from Standard
is static;
AnalysisFlag(me)
returns Integer from Standard
is static;
-- GetTriangles(me; T1,T2: Integer from Standard)
-- is static;
SetFirstPoint(me: in out; v: Integer from Standard)
is static;
SetSecondPoint(me: in out; v: Integer from Standard)
is static;
SetFirstTriangle(me: in out; v: Integer from Standard)
is static;
SetSecondTriangle(me: in out; v: Integer from Standard)
is static;
SetAnalysisFlag(me: in out; v: Integer from Standard)
is static;
-- SetTriangles(me: in out; T1,T2: in out Integer from Standard)
-- is static;
Dump(me; v: Integer from Standard)
is static;
fields
p1,p2 : Integer from Standard;
t1,t2 : Integer from Standard;
ia : Integer from Standard;
end Edge from IntPolyh;

View File

@@ -14,9 +14,10 @@
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#include <IntPolyh_Edge.ixx>
#include <stdio.h>
#include <IntPolyh_Edge.hxx>
#include <stdio.h>
IntPolyh_Edge::IntPolyh_Edge() : p1(-1),p2(-1),t1(-1),t2(-1),ia(-1) { }
IntPolyh_Edge::IntPolyh_Edge(const Standard_Integer a, const Standard_Integer b,

View File

@@ -0,0 +1,89 @@
// Created on: 1999-03-05
// Created by: Fabrice SERVANT
// Copyright (c) 1999 Matra Datavision
// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// 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.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#ifndef _IntPolyh_Edge_HeaderFile
#define _IntPolyh_Edge_HeaderFile
#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
#include <Standard_Integer.hxx>
class IntPolyh_Edge
{
public:
DEFINE_STANDARD_ALLOC
Standard_EXPORT IntPolyh_Edge();
Standard_EXPORT IntPolyh_Edge(const Standard_Integer i1, const Standard_Integer i2, const Standard_Integer i3, const Standard_Integer i4);
Standard_EXPORT Standard_Integer FirstPoint() const;
Standard_EXPORT Standard_Integer SecondPoint() const;
Standard_EXPORT Standard_Integer FirstTriangle() const;
Standard_EXPORT Standard_Integer SecondTriangle() const;
Standard_EXPORT Standard_Integer AnalysisFlag() const;
Standard_EXPORT void SetFirstPoint (const Standard_Integer v);
Standard_EXPORT void SetSecondPoint (const Standard_Integer v);
Standard_EXPORT void SetFirstTriangle (const Standard_Integer v);
Standard_EXPORT void SetSecondTriangle (const Standard_Integer v);
Standard_EXPORT void SetAnalysisFlag (const Standard_Integer v);
Standard_EXPORT void Dump (const Standard_Integer v) const;
protected:
private:
Standard_Integer p1;
Standard_Integer p2;
Standard_Integer t1;
Standard_Integer t2;
Standard_Integer ia;
};
#endif // _IntPolyh_Edge_HeaderFile

View File

@@ -1,231 +0,0 @@
-- Created on: 1999-03-03
-- Created by: Fabrice SERVANT
-- Copyright (c) 1999 Matra Datavision
-- Copyright (c) 1999-2014 OPEN CASCADE SAS
--
-- This file is part of Open CASCADE Technology software library.
--
-- 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.
--
-- Alternatively, this file may be used under the terms of Open CASCADE
-- commercial license or contractual agreement.
-- Modified by skv - Thu Sep 25 17:57:09 2003 OCC567
-- Add two private methods: PerformMaillage(..) and MergeCouples(..) and several
-- private fields. Removed field MaillageS.
-- The method MergeCouples(..) is used
-- to remove same couples of interferable triangles from different
-- MaillageAffinage's in order to avoid taking them into section lines several
-- times.
class Intersection from IntPolyh
---Purpose: the main algorithm. Algorithm outputs are
-- lines and points like describe in the last
-- paragraph. The Algorithm provides direct access to
-- the elements of those lines and points. Other
-- classes of this package are for internal use and
-- only concern the algorithmic part.
uses
Pnt from gp,
HSurface from Adaptor3d,
Array1OfReal from TColStd,
Point from IntPolyh,
Edge from IntPolyh,
Triangle from IntPolyh,
ArrayOfPoints from IntPolyh,
ArrayOfEdges from IntPolyh,
ArrayOfTriangles from IntPolyh,
PMaillageAffinage from IntPolyh,
SectionLine from IntPolyh,
ArrayOfSectionLines from IntPolyh,
--TangentZones from IntPolyh, On utilise la classe StartPoint
ArrayOfTangentZones from IntPolyh,
ArrayOfCouples from IntPolyh
is
Create(S1,S2 : HSurface from Adaptor3d);
---Purpose: Constructor
--
--
Create(S1 : HSurface from Adaptor3d;
NbSU1,NbSV1 : Integer from Standard;
S2 : HSurface from Adaptor3d;
NbSU2,NbSV2 : Integer from Standard);
---Purpose: NbSU1 ... NbSV2 are used to compute the initial
-- samples of the iso parametric meshes on the
-- surfaces.
Create(S1 : HSurface from Adaptor3d;
anUpars1, aVpars1 : Array1OfReal from TColStd;
S2 : HSurface from Adaptor3d;
anUpars2, aVpars2 : Array1OfReal from TColStd);
---Purpose: D1, D2 are used to compute the initial
-- samples of the iso parametric meshes on the
-- surfaces.
Perform(me: in out)
---Purpose: Compute the intersection.
is static;
Perform(me: in out;
Upars1, Vpars1, Upars2, Vpars2 : Array1OfReal from TColStd)
---Purpose: Compute the intersection.
is static;
IsDone(me)
returns Boolean from Standard
is static;
---------------------------------------------------------------
NbSectionLines(me)
returns Integer from Standard
is static;
NbPointsInLine(me; IndexLine: Integer from Standard)
returns Integer from Standard
is static;
GetLinePoint(me; IndexLine,IndexPoint: Integer from Standard;
x,y,z,u1,v1,u2,v2,incidence : out Real from Standard)
is static;
---------------------------------------------------------------
NbTangentZones(me)
returns Integer from Standard
is static;
NbPointsInTangentZone(me; IndexLine: Integer from Standard)
returns Integer from Standard
is static;
GetTangentZonePoint(me; IndexLine,IndexPoint: Integer from Standard;
x,y,z,u1,v1,u2,v2 : out Real from Standard)
is static;
-- Modified by skv - Thu Sep 25 17:57:09 2003 OCC567 Begin
PerformMaillage(me: in out;
isFirstFwd : Boolean from Standard;
isSecondFwd : Boolean from Standard;
MaillageS : in out PMaillageAffinage from IntPolyh)
---Purpose: Computes MaillageAffinage
returns Boolean from Standard
is static private;
PerformMaillage(me: in out; MaillageS: in out PMaillageAffinage from IntPolyh)
---Purpose: The method PerformMaillage(..) is used to compute MaillageAffinage. It is
-- called four times (two times for each surface) for creation of inscribed
-- and circumscribed mesh for each surface.
returns Boolean from Standard
is static private;
-- Modified by skv - Thu Sep 25 17:57:09 2003 OCC567 Begin
PerformMaillage(me: in out;
isFirstFwd : Boolean from Standard;
isSecondFwd : Boolean from Standard;
Upars1, Vpars1, Upars2, Vpars2 : Array1OfReal from TColStd;
MaillageS : in out PMaillageAffinage from IntPolyh)
---Purpose: Computes MaillageAffinage
returns Boolean from Standard
is static private;
PerformMaillage(me: in out; Upars1, Vpars1, Upars2, Vpars2 : Array1OfReal from TColStd;
MaillageS: in out PMaillageAffinage from IntPolyh)
---Purpose: The method PerformMaillage(..) is used to compute MaillageAffinage. It is
-- called four times (two times for each surface) for creation of inscribed
-- and circumscribed mesh for each surface.
returns Boolean from Standard
is static private;
MergeCouples(me; anArrayFF: in out ArrayOfCouples from IntPolyh;
anArrayFR: in out ArrayOfCouples from IntPolyh;
anArrayRF: in out ArrayOfCouples from IntPolyh;
anArrayRR: in out ArrayOfCouples from IntPolyh)
---Purpose: This method analyzes arrays to find same couples. If some
-- are detected it leaves the couple in only one array
-- deleting from others.
is static private;
-- Modified by skv - Thu Sep 25 17:57:11 2003 OCC567 End
-- ofv from
PerformStd(me: in out;
MaillageS: in out PMaillageAffinage from IntPolyh;
NbCouples: in out Integer from Standard)
---Purpose: Process default interference
returns Boolean from Standard
is static private;
PerformAdv(me: in out;
MaillageFF: in out PMaillageAffinage from IntPolyh;
MaillageFR: in out PMaillageAffinage from IntPolyh;
MaillageRF: in out PMaillageAffinage from IntPolyh;
MaillageRR: in out PMaillageAffinage from IntPolyh;
NbCouples : in out Integer from Standard)
---Purpose: Process advanced interference
returns Boolean from Standard
is static private;
PerformStd(me: in out;
Upars1, Vpars1, Upars2, Vpars2 : Array1OfReal from TColStd;
MaillageS: in out PMaillageAffinage from IntPolyh;
NbCouples: in out Integer from Standard)
---Purpose: Process default interference
returns Boolean from Standard
is static private;
PerformAdv(me: in out;
Upars1, Vpars1, Upars2, Vpars2 : Array1OfReal from TColStd;
MaillageFF: in out PMaillageAffinage from IntPolyh;
MaillageFR: in out PMaillageAffinage from IntPolyh;
MaillageRF: in out PMaillageAffinage from IntPolyh;
MaillageRR: in out PMaillageAffinage from IntPolyh;
NbCouples : in out Integer from Standard)
---Purpose: Process advanced interference
returns Boolean from Standard
is static private;
-- ofv to
fields
done : Boolean from Standard;
nbsectionlines : Integer from Standard;
nbtangentzones : Integer from Standard;
TSectionLines : ArrayOfSectionLines from IntPolyh;
TTangentZones : ArrayOfTangentZones from IntPolyh;
-- Modified by skv - Thu Sep 25 17:38:57 2003 OCC567 Begin
-- MaillageS : MaillageAffinage from IntPolyh;
myNbSU1 : Integer from Standard;
myNbSV1 : Integer from Standard;
myNbSU2 : Integer from Standard;
myNbSV2 : Integer from Standard;
-- Modified by skv - Thu Sep 25 17:38:58 2003 OCC567 End
mySurf1 : HSurface from Adaptor3d;
mySurf2 : HSurface from Adaptor3d;
end Intersection from IntPolyh;

View File

@@ -17,11 +17,12 @@
// modified by Edward AGAPOV (eap) Tue Jan 22 12:29:55 2002 (occ53)
// Modified by skv - Thu Sep 25 18:24:29 2003 OCC567
#include <IntPolyh_Intersection.ixx>
#include <Adaptor3d_HSurface.hxx>
#include <IntPolyh_Couple.hxx>
#include <IntPolyh_Intersection.hxx>
#include <IntPolyh_MaillageAffinage.hxx>
#include <IntPolyh_SectionLine.hxx>
#include <IntPolyh_StartPoint.hxx>
#include <IntPolyh_MaillageAffinage.hxx>
#include <IntPolyh_Couple.hxx>
#include <IntPolyh_Triangle.hxx>
Standard_Integer MYDISPLAY = 0;

View File

@@ -0,0 +1,148 @@
// Created on: 1999-03-03
// Created by: Fabrice SERVANT
// Copyright (c) 1999 Matra Datavision
// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// 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.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#ifndef _IntPolyh_Intersection_HeaderFile
#define _IntPolyh_Intersection_HeaderFile
#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
#include <Standard_Boolean.hxx>
#include <Standard_Integer.hxx>
#include <IntPolyh_ArrayOfSectionLines.hxx>
#include <IntPolyh_ArrayOfTangentZones.hxx>
#include <TColStd_Array1OfReal.hxx>
#include <Standard_Real.hxx>
#include <IntPolyh_PMaillageAffinage.hxx>
#include <IntPolyh_ArrayOfCouples.hxx>
class Adaptor3d_HSurface;
//! the main algorithm. Algorithm outputs are
//! lines and points like describe in the last
//! paragraph. The Algorithm provides direct access to
//! the elements of those lines and points. Other
//! classes of this package are for internal use and
//! only concern the algorithmic part.
class IntPolyh_Intersection
{
public:
DEFINE_STANDARD_ALLOC
//! Constructor
Standard_EXPORT IntPolyh_Intersection(const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor3d_HSurface)& S2);
//! NbSU1 ... NbSV2 are used to compute the initial
//! samples of the iso parametric meshes on the
//! surfaces.
Standard_EXPORT IntPolyh_Intersection(const Handle(Adaptor3d_HSurface)& S1, const Standard_Integer NbSU1, const Standard_Integer NbSV1, const Handle(Adaptor3d_HSurface)& S2, const Standard_Integer NbSU2, const Standard_Integer NbSV2);
//! D1, D2 are used to compute the initial
//! samples of the iso parametric meshes on the
//! surfaces.
Standard_EXPORT IntPolyh_Intersection(const Handle(Adaptor3d_HSurface)& S1, const TColStd_Array1OfReal& anUpars1, const TColStd_Array1OfReal& aVpars1, const Handle(Adaptor3d_HSurface)& S2, const TColStd_Array1OfReal& anUpars2, const TColStd_Array1OfReal& aVpars2);
//! Compute the intersection.
Standard_EXPORT void Perform();
//! Compute the intersection.
Standard_EXPORT void Perform (const TColStd_Array1OfReal& Upars1, const TColStd_Array1OfReal& Vpars1, const TColStd_Array1OfReal& Upars2, const TColStd_Array1OfReal& Vpars2);
Standard_EXPORT Standard_Boolean IsDone() const;
Standard_EXPORT Standard_Integer NbSectionLines() const;
Standard_EXPORT Standard_Integer NbPointsInLine (const Standard_Integer IndexLine) const;
Standard_EXPORT void GetLinePoint (const Standard_Integer IndexLine, const Standard_Integer IndexPoint, Standard_Real& x, Standard_Real& y, Standard_Real& z, Standard_Real& u1, Standard_Real& v1, Standard_Real& u2, Standard_Real& v2, Standard_Real& incidence) const;
Standard_EXPORT Standard_Integer NbTangentZones() const;
Standard_EXPORT Standard_Integer NbPointsInTangentZone (const Standard_Integer IndexLine) const;
Standard_EXPORT void GetTangentZonePoint (const Standard_Integer IndexLine, const Standard_Integer IndexPoint, Standard_Real& x, Standard_Real& y, Standard_Real& z, Standard_Real& u1, Standard_Real& v1, Standard_Real& u2, Standard_Real& v2) const;
protected:
private:
//! Computes MaillageAffinage
Standard_EXPORT Standard_Boolean PerformMaillage (const Standard_Boolean isFirstFwd, const Standard_Boolean isSecondFwd, IntPolyh_PMaillageAffinage& MaillageS);
//! The method PerformMaillage(..) is used to compute MaillageAffinage. It is
//! called four times (two times for each surface) for creation of inscribed
//! and circumscribed mesh for each surface.
Standard_EXPORT Standard_Boolean PerformMaillage (IntPolyh_PMaillageAffinage& MaillageS);
//! Computes MaillageAffinage
Standard_EXPORT Standard_Boolean PerformMaillage (const Standard_Boolean isFirstFwd, const Standard_Boolean isSecondFwd, const TColStd_Array1OfReal& Upars1, const TColStd_Array1OfReal& Vpars1, const TColStd_Array1OfReal& Upars2, const TColStd_Array1OfReal& Vpars2, IntPolyh_PMaillageAffinage& MaillageS);
//! The method PerformMaillage(..) is used to compute MaillageAffinage. It is
//! called four times (two times for each surface) for creation of inscribed
//! and circumscribed mesh for each surface.
Standard_EXPORT Standard_Boolean PerformMaillage (const TColStd_Array1OfReal& Upars1, const TColStd_Array1OfReal& Vpars1, const TColStd_Array1OfReal& Upars2, const TColStd_Array1OfReal& Vpars2, IntPolyh_PMaillageAffinage& MaillageS);
//! This method analyzes arrays to find same couples. If some
//! are detected it leaves the couple in only one array
//! deleting from others.
Standard_EXPORT void MergeCouples (IntPolyh_ArrayOfCouples& anArrayFF, IntPolyh_ArrayOfCouples& anArrayFR, IntPolyh_ArrayOfCouples& anArrayRF, IntPolyh_ArrayOfCouples& anArrayRR) const;
//! Process default interference
Standard_EXPORT Standard_Boolean PerformStd (IntPolyh_PMaillageAffinage& MaillageS, Standard_Integer& NbCouples);
//! Process advanced interference
Standard_EXPORT Standard_Boolean PerformAdv (IntPolyh_PMaillageAffinage& MaillageFF, IntPolyh_PMaillageAffinage& MaillageFR, IntPolyh_PMaillageAffinage& MaillageRF, IntPolyh_PMaillageAffinage& MaillageRR, Standard_Integer& NbCouples);
//! Process default interference
Standard_EXPORT Standard_Boolean PerformStd (const TColStd_Array1OfReal& Upars1, const TColStd_Array1OfReal& Vpars1, const TColStd_Array1OfReal& Upars2, const TColStd_Array1OfReal& Vpars2, IntPolyh_PMaillageAffinage& MaillageS, Standard_Integer& NbCouples);
//! Process advanced interference
Standard_EXPORT Standard_Boolean PerformAdv (const TColStd_Array1OfReal& Upars1, const TColStd_Array1OfReal& Vpars1, const TColStd_Array1OfReal& Upars2, const TColStd_Array1OfReal& Vpars2, IntPolyh_PMaillageAffinage& MaillageFF, IntPolyh_PMaillageAffinage& MaillageFR, IntPolyh_PMaillageAffinage& MaillageRF, IntPolyh_PMaillageAffinage& MaillageRR, Standard_Integer& NbCouples);
Standard_Boolean done;
Standard_Integer nbsectionlines;
Standard_Integer nbtangentzones;
IntPolyh_ArrayOfSectionLines TSectionLines;
IntPolyh_ArrayOfTangentZones TTangentZones;
Standard_Integer myNbSU1;
Standard_Integer myNbSV1;
Standard_Integer myNbSU2;
Standard_Integer myNbSV2;
Handle(Adaptor3d_HSurface) mySurf1;
Handle(Adaptor3d_HSurface) mySurf2;
};
#endif // _IntPolyh_Intersection_HeaderFile

View File

@@ -13,11 +13,13 @@
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#include <IntPolyh_Intersection.ixx>
#include <IntPolyh_PMaillageAffinage.hxx>
#include <IntPolyh_MaillageAffinage.hxx>
#include <Adaptor3d_HSurface.hxx>
#include <IntPolyh_ArrayOfCouples.hxx>
#include <IntPolyh_Couple.hxx>
#include <IntPolyh_Intersection.hxx>
#include <IntPolyh_MaillageAffinage.hxx>
#include <IntPolyh_PMaillageAffinage.hxx>
#include <IntPolyh_Triangle.hxx>
Standard_Integer MYPRINT1 = 0;

View File

@@ -1,312 +0,0 @@
-- Created on: 1999-03-03
-- Created by: Fabrice SERVANT
-- Copyright (c) 1999 Matra Datavision
-- Copyright (c) 1999-2014 OPEN CASCADE SAS
--
-- This file is part of Open CASCADE Technology software library.
--
-- 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.
--
-- Alternatively, this file may be used under the terms of Open CASCADE
-- commercial license or contractual agreement.
-- Modified by skv - Thu Sep 25 16:51:09 2003 OCC567
-- The method GetArrayOfCouples() is added. The Boolean flag isShiftFwd is
-- added to the method FillArrayOfPnt(..).
-- The method GetArrayOfCouples() returns array of couples of contact triangles.
-- The flag isShiftFwd shows whether circumscribed (Standard_True) or inscribed
-- (Standard_False) mesh should be constructed.
-- modified by ofv Thu Apr 8 14:45:35 2004 fip
class MaillageAffinage from IntPolyh
---Purpose: Provide the algorythms used in the package
uses
Box from Bnd,
Pnt from gp,
HSurface from Adaptor3d,
TopolTool from Adaptor3d,
Point from IntPolyh,
StartPoint from IntPolyh,
Edge from IntPolyh,
Triangle from IntPolyh,
ArrayOfCouples from IntPolyh,
ArrayOfPoints from IntPolyh,
ArrayOfStartPoints from IntPolyh,
ArrayOfEdges from IntPolyh,
ArrayOfTriangles from IntPolyh,
SectionLine from IntPolyh,
ArrayOfSectionLines from IntPolyh,
ArrayOfTangentZones from IntPolyh,
Array1OfReal from TColStd
is
Create(S1 : HSurface from Adaptor3d;
NbSU1,NbSV1 : Integer from Standard;
S2 : HSurface from Adaptor3d;
NbSU2,NbSV2 : Integer from Standard;
PRINT : Integer from Standard);
Create(S1,S2: HSurface from Adaptor3d;
PRINT : Integer from Standard);
FillArrayOfPnt(me: in out; SurfID: Integer from Standard)
is static;
---Purpose: Compute points on one surface and fill an array of points;
--- standard (default) method
FillArrayOfPnt(me: in out; SurfID : Integer from Standard;
isShiftFwd: Boolean from Standard)
---Purpose: isShiftFwd flag is added. The purpose is to define shift
-- of points along normal to the surface in this point. The
-- shift length represents maximal deflection of triangulation.
-- The direction (forward or reversed regarding to normal
-- direction) is defined by isShiftFwd flag.
is static;
---Purpose: Compute points on one surface and fill an array of points;
--- advanced method
-- IFV start
FillArrayOfPnt(me: in out; SurfID: Integer from Standard;
Upars, Vpars : Array1OfReal from TColStd)
is static;
---Purpose: Compute points on one surface and fill an array of points;
--- standard (default) method
FillArrayOfPnt(me: in out; SurfID : Integer from Standard;
isShiftFwd: Boolean from Standard;
Upars, Vpars : Array1OfReal from TColStd)
---Purpose: isShiftFwd flag is added. The purpose is to define shift
-- of points along normal to the surface in this point. The
-- shift length represents maximal deflection of triangulation.
-- The direction (forward or reversed regarding to normal
-- direction) is defined by isShiftFwd flag.
is static;
---Purpose: Compute points on one surface and fill an array of points;
--- advanced method
-- IFV end
CommonBox(me:in out; B1,B2: Box from Bnd; xMin,yMin,zMin,xMax,yMax,zMax: in out Real from Standard)
is static;
---Purpose: Compute the common box witch is the intersection
-- of the two bounding boxes, and mark the points of
-- the two surfaces that are inside.
FillArrayOfEdges(me: in out; SurfID: Integer from Standard)
is static;
---Purpose: Compute edges from the array of points
FillArrayOfTriangles(me: in out; SurfID: Integer from Standard)
is static;
---Purpose: Compute triangles from the array of points, and --
-- mark the triangles that use marked points by the
-- CommonBox function.
LinkEdges2Triangles(me:in out)
is static;
---Purpose: fill the edge fields in Triangle object for the
-- two array of triangles.
CommonPartRefinement(me: in out)
is static;
---Purpose: Refine systematicaly all marked triangles of both surfaces
LocalSurfaceRefinement(me: in out; SurfId: Integer from Standard)
is static;
---Purpose: Refine systematicaly all marked triangles of ONE surface
ComputeDeflections(me: in out; SurfID: Integer from Standard)
is static;
---Purpose: Compute deflection for all triangles of one
-- surface,and sort min and max of deflections
TrianglesDeflectionsRefinementBSB(me:in out)
is static;
---Purpose: Refine both surfaces using BoundSortBox as --
-- rejection. The criterions used to refine a --
-- triangle are: The deflection The size of the --
-- bounding boxes (one surface may be very small
-- compared to the other)
TriContact(me; P1,P2,P3,Q1,Q2,Q3: Point from IntPolyh;
Angle:in out Real from Standard)
returns Integer from Standard
is static;
---Purpose: This fonction Check if two triangles are in
-- contact or no, return 1 if yes, return 0
-- if no.
TriangleEdgeContact(me; TriSurfID, EdgeIndice: Integer from Standard;
P1,P2,P3,C1,C2,C3,Pe1,Pe2,E,N: Point from IntPolyh;
SP1,SP2: in out StartPoint from IntPolyh)
returns Integer from Standard
is static;
TriangleEdgeContact2(me; TriSurfID, EdgeIndice: Integer from Standard;
Tri1, Tri2: Triangle from IntPolyh;
P1,P2,P3,C1,C2,C3,Pe1,Pe2,E,N: Point from IntPolyh;
SP1,SP2: in out StartPoint from IntPolyh)
returns Integer from Standard
is static;
StartingPointsResearch(me; T1,T2: Integer from Standard;
SP1,SP2: in out StartPoint from IntPolyh)
returns Integer from Standard
is static;
StartingPointsResearch2(me; T1,T2: Integer from Standard;
SP1,SP2: in out StartPoint from IntPolyh)
returns Integer from Standard
is static;
---Purpose: From two triangles compute intersection points.
-- If I found more than two intersection points
-- that's mean that those triangle are coplanar
NextStartingPointsResearch(me; T1,T2: Integer from Standard;
SPInit: StartPoint from IntPolyh;
SPNext: in out StartPoint from IntPolyh)
returns Integer from Standard
is static;
NextStartingPointsResearch2(me; T1,T2: Integer from Standard;
SPInit: StartPoint from IntPolyh;
SPNext: in out StartPoint from IntPolyh)
returns Integer from Standard
is static;
---Purpose: from two triangles and an intersection point I
-- seach the other point (if it exist).
-- This function is used by StartPointChain
TriangleCompare(me :in out)
returns Integer from Standard
is static;
---Purpose: Analyse each couple of triangles from the two --
-- array of triangles, to see if they are in
-- contact, and compute the incidence. Then put
-- couples in contact in the array of couples
TriangleComparePSP(me :in out)
returns Integer from Standard
is static;
---Purpose: The same as TriangleCompare, plus compute the
-- StartPoints without chaining them.
StartPointsCalcul(me)
is static;
---Purpose: From the array of couples compute all the start
-- points and display them on the screen
StartPointsChain(me: in out;
TSectionLines: in out ArrayOfSectionLines from IntPolyh;
TTangentZones: in out ArrayOfTangentZones from IntPolyh)
returns Integer from Standard
is static;
---Purpose: Loop on the array of couples. Compute StartPoints.
-- Try to chain the StartPoints into SectionLines or
-- put the point in the ArrayOfTangentZones if
-- chaining it, is not possible.
GetNextChainStartPoint(me: in out;
SPInit: StartPoint from IntPolyh;
SPNext: in out StartPoint from IntPolyh;
MySectionLine: in out SectionLine from IntPolyh;
TTangentZones: in out ArrayOfTangentZones from IntPolyh;
Prepend : Boolean from Standard = Standard_False)
returns Integer from Standard
is static;
---Purpose: Mainly used by StartPointsChain(), this function
-- try to compute the next StartPoint.
GetArrayOfPoints(me; SurfID: Integer from Standard)
---C++: return const &
returns ArrayOfPoints from IntPolyh
is static;
GetArrayOfEdges(me; SurfID: Integer from Standard)
---C++: return const &
returns ArrayOfEdges from IntPolyh
is static;
GetArrayOfTriangles(me; SurfID: Integer from Standard)
---C++: return const &
returns ArrayOfTriangles from IntPolyh
is static;
GetFinTE(me; SurfID: Integer from Standard)
returns Integer from Standard
is static;
GetFinTT(me; SurfID: Integer from Standard)
returns Integer from Standard
is static;
GetBox(me; SurfID: Integer from Standard)
returns Box from Bnd
is static;
GetBoxDraw(me; SurfID: Integer from Standard)
is static;
GetArrayOfSP(me)
---C++: return const &
returns ArrayOfStartPoints from IntPolyh
is static;
GetArrayOfCouples(me: in out)
---Purpose: This method returns array of couples of contact triangles.
---C++: return &
returns ArrayOfCouples from IntPolyh
is static;
SetEnlargeZone(me: in out; EnlargeZone: in out Boolean from Standard);
GetEnlargeZone(me) returns Boolean from Standard;
GetMinDeflection(me; SurfID: Integer from Standard) returns Real from Standard;
--- Purpose: returns FlecheMin
GetMaxDeflection(me; SurfID: Integer from Standard) returns Real from Standard;
--- Purpose: returns FlecheMax
fields
MaSurface1 : HSurface from Adaptor3d;
MaSurface2 : HSurface from Adaptor3d;
MyBox1 : Box from Bnd;
MyBox2 : Box from Bnd;
NbSamplesU1 : Integer from Standard;
NbSamplesU2 : Integer from Standard;
NbSamplesV1 : Integer from Standard;
NbSamplesV2 : Integer from Standard;
-- Minimal and maximal distance between array of points in
-- the surface (MaSurface1 and MaSurface2 correspondingly) and
-- triangles on it.
FlecheMax1 : Real from Standard;
FlecheMax2 : Real from Standard;
FlecheMin1 : Real from Standard;
FlecheMin2 : Real from Standard;
FlecheMoy1 : Real from Standard;
FlecheMoy2 : Real from Standard;
TPoints1 : ArrayOfPoints from IntPolyh;
TPoints2 : ArrayOfPoints from IntPolyh;
TEdges1 : ArrayOfEdges from IntPolyh;
TEdges2 : ArrayOfEdges from IntPolyh;
TTriangles1 : ArrayOfTriangles from IntPolyh;
TTriangles2 : ArrayOfTriangles from IntPolyh;
TTrianglesContacts : ArrayOfCouples from IntPolyh;
TStartPoints : ArrayOfStartPoints from IntPolyh;
myEnlargeZone : Boolean from Standard;
end Test from IntPolyh;

View File

@@ -17,31 +17,29 @@
// modified by Edward AGAPOV (eap) Tue Jan 22 2002 (bug occ53)
// - improve SectionLine table management (avoid memory reallocation)
// - some protection against arrays overflow
// modified by Edward AGAPOV (eap) Thu Feb 14 2002 (occ139)
// - make Section Line parts rightly connected (prepend 2nd part to the 1st)
// - TriangleShape() for debugging purpose
// Modified by skv - Thu Sep 25 17:42:42 2003 OCC567
// modified by ofv Thu Apr 8 14:58:13 2004 fip
#include <IntPolyh_MaillageAffinage.ixx>
#include <Precision.hxx>
#include <gp_Pnt.hxx>
#include <gp.hxx>
#include <TColStd_ListIteratorOfListOfInteger.hxx>
#include <Adaptor3d_HSurface.hxx>
#include <Bnd_BoundSortBox.hxx>
#include <Bnd_HArray1OfBox.hxx>
#include <Bnd_Box.hxx>
#include <Bnd_HArray1OfBox.hxx>
#include <gp.hxx>
#include <gp_Pnt.hxx>
#include <IntCurveSurface_ThePolyhedronOfHInter.hxx>
#include <IntPolyh_ArrayOfCouples.hxx>
#include <IntPolyh_Edge.hxx>
#include <IntPolyh_Couple.hxx>
#include <IntPolyh_Edge.hxx>
#include <IntPolyh_MaillageAffinage.hxx>
#include <IntPolyh_Point.hxx>
#include <IntPolyh_SectionLine.hxx>
#include <IntPolyh_StartPoint.hxx>
#include <IntPolyh_Triangle.hxx>
#include <Precision.hxx>
#include <TColStd_ListIteratorOfListOfInteger.hxx>
static Standard_Real MyTolerance=10.0e-7;
static Standard_Real MyConfusionPrecision=10.0e-12;

View File

@@ -0,0 +1,238 @@
// Created on: 1999-03-03
// Created by: Fabrice SERVANT
// Copyright (c) 1999 Matra Datavision
// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// 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.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#ifndef _IntPolyh_MaillageAffinage_HeaderFile
#define _IntPolyh_MaillageAffinage_HeaderFile
#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
#include <Bnd_Box.hxx>
#include <Standard_Integer.hxx>
#include <Standard_Real.hxx>
#include <IntPolyh_ArrayOfPoints.hxx>
#include <IntPolyh_ArrayOfEdges.hxx>
#include <IntPolyh_ArrayOfTriangles.hxx>
#include <IntPolyh_ArrayOfCouples.hxx>
#include <IntPolyh_ArrayOfStartPoints.hxx>
#include <Standard_Boolean.hxx>
#include <TColStd_Array1OfReal.hxx>
#include <IntPolyh_ArrayOfSectionLines.hxx>
#include <IntPolyh_ArrayOfTangentZones.hxx>
class Adaptor3d_HSurface;
class Bnd_Box;
class IntPolyh_Point;
class IntPolyh_StartPoint;
class IntPolyh_Triangle;
class IntPolyh_SectionLine;
//! Provide the algorythms used in the package
class IntPolyh_MaillageAffinage
{
public:
DEFINE_STANDARD_ALLOC
Standard_EXPORT IntPolyh_MaillageAffinage(const Handle(Adaptor3d_HSurface)& S1, const Standard_Integer NbSU1, const Standard_Integer NbSV1, const Handle(Adaptor3d_HSurface)& S2, const Standard_Integer NbSU2, const Standard_Integer NbSV2, const Standard_Integer PRINT);
Standard_EXPORT IntPolyh_MaillageAffinage(const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor3d_HSurface)& S2, const Standard_Integer PRINT);
//! Compute points on one surface and fill an array of points;
//! standard (default) method
Standard_EXPORT void FillArrayOfPnt (const Standard_Integer SurfID);
//! isShiftFwd flag is added. The purpose is to define shift
//! of points along normal to the surface in this point. The
//! shift length represents maximal deflection of triangulation.
//! The direction (forward or reversed regarding to normal
//! direction) is defined by isShiftFwd flag.
//! Compute points on one surface and fill an array of points;
//! advanced method
Standard_EXPORT void FillArrayOfPnt (const Standard_Integer SurfID, const Standard_Boolean isShiftFwd);
//! Compute points on one surface and fill an array of points;
//! standard (default) method
Standard_EXPORT void FillArrayOfPnt (const Standard_Integer SurfID, const TColStd_Array1OfReal& Upars, const TColStd_Array1OfReal& Vpars);
//! isShiftFwd flag is added. The purpose is to define shift
//! of points along normal to the surface in this point. The
//! shift length represents maximal deflection of triangulation.
//! The direction (forward or reversed regarding to normal
//! direction) is defined by isShiftFwd flag.
//! Compute points on one surface and fill an array of points;
//! advanced method
Standard_EXPORT void FillArrayOfPnt (const Standard_Integer SurfID, const Standard_Boolean isShiftFwd, const TColStd_Array1OfReal& Upars, const TColStd_Array1OfReal& Vpars);
//! Compute the common box witch is the intersection
//! of the two bounding boxes, and mark the points of
//! the two surfaces that are inside.
Standard_EXPORT void CommonBox (const Bnd_Box& B1, const Bnd_Box& B2, Standard_Real& xMin, Standard_Real& yMin, Standard_Real& zMin, Standard_Real& xMax, Standard_Real& yMax, Standard_Real& zMax);
//! Compute edges from the array of points
Standard_EXPORT void FillArrayOfEdges (const Standard_Integer SurfID);
//! Compute triangles from the array of points, and --
//! mark the triangles that use marked points by the
//! CommonBox function.
Standard_EXPORT void FillArrayOfTriangles (const Standard_Integer SurfID);
//! fill the edge fields in Triangle object for the
//! two array of triangles.
Standard_EXPORT void LinkEdges2Triangles();
//! Refine systematicaly all marked triangles of both surfaces
Standard_EXPORT void CommonPartRefinement();
//! Refine systematicaly all marked triangles of ONE surface
Standard_EXPORT void LocalSurfaceRefinement (const Standard_Integer SurfId);
//! Compute deflection for all triangles of one
//! surface,and sort min and max of deflections
Standard_EXPORT void ComputeDeflections (const Standard_Integer SurfID);
//! Refine both surfaces using BoundSortBox as --
//! rejection. The criterions used to refine a --
//! triangle are: The deflection The size of the --
//! bounding boxes (one surface may be very small
//! compared to the other)
Standard_EXPORT void TrianglesDeflectionsRefinementBSB();
//! This fonction Check if two triangles are in
//! contact or no, return 1 if yes, return 0
//! if no.
Standard_EXPORT Standard_Integer TriContact (const IntPolyh_Point& P1, const IntPolyh_Point& P2, const IntPolyh_Point& P3, const IntPolyh_Point& Q1, const IntPolyh_Point& Q2, const IntPolyh_Point& Q3, Standard_Real& Angle) const;
Standard_EXPORT Standard_Integer TriangleEdgeContact (const Standard_Integer TriSurfID, const Standard_Integer EdgeIndice, const IntPolyh_Point& P1, const IntPolyh_Point& P2, const IntPolyh_Point& P3, const IntPolyh_Point& C1, const IntPolyh_Point& C2, const IntPolyh_Point& C3, const IntPolyh_Point& Pe1, const IntPolyh_Point& Pe2, const IntPolyh_Point& E, const IntPolyh_Point& N, IntPolyh_StartPoint& SP1, IntPolyh_StartPoint& SP2) const;
Standard_EXPORT Standard_Integer TriangleEdgeContact2 (const Standard_Integer TriSurfID, const Standard_Integer EdgeIndice, const IntPolyh_Triangle& Tri1, const IntPolyh_Triangle& Tri2, const IntPolyh_Point& P1, const IntPolyh_Point& P2, const IntPolyh_Point& P3, const IntPolyh_Point& C1, const IntPolyh_Point& C2, const IntPolyh_Point& C3, const IntPolyh_Point& Pe1, const IntPolyh_Point& Pe2, const IntPolyh_Point& E, const IntPolyh_Point& N, IntPolyh_StartPoint& SP1, IntPolyh_StartPoint& SP2) const;
Standard_EXPORT Standard_Integer StartingPointsResearch (const Standard_Integer T1, const Standard_Integer T2, IntPolyh_StartPoint& SP1, IntPolyh_StartPoint& SP2) const;
//! From two triangles compute intersection points.
//! If I found more than two intersection points
//! that's mean that those triangle are coplanar
Standard_EXPORT Standard_Integer StartingPointsResearch2 (const Standard_Integer T1, const Standard_Integer T2, IntPolyh_StartPoint& SP1, IntPolyh_StartPoint& SP2) const;
Standard_EXPORT Standard_Integer NextStartingPointsResearch (const Standard_Integer T1, const Standard_Integer T2, const IntPolyh_StartPoint& SPInit, IntPolyh_StartPoint& SPNext) const;
//! from two triangles and an intersection point I
//! seach the other point (if it exist).
//! This function is used by StartPointChain
Standard_EXPORT Standard_Integer NextStartingPointsResearch2 (const Standard_Integer T1, const Standard_Integer T2, const IntPolyh_StartPoint& SPInit, IntPolyh_StartPoint& SPNext) const;
//! Analyse each couple of triangles from the two --
//! array of triangles, to see if they are in
//! contact, and compute the incidence. Then put
//! couples in contact in the array of couples
Standard_EXPORT Standard_Integer TriangleCompare();
//! The same as TriangleCompare, plus compute the
//! StartPoints without chaining them.
Standard_EXPORT Standard_Integer TriangleComparePSP();
//! From the array of couples compute all the start
//! points and display them on the screen
Standard_EXPORT void StartPointsCalcul() const;
//! Loop on the array of couples. Compute StartPoints.
//! Try to chain the StartPoints into SectionLines or
//! put the point in the ArrayOfTangentZones if
//! chaining it, is not possible.
Standard_EXPORT Standard_Integer StartPointsChain (IntPolyh_ArrayOfSectionLines& TSectionLines, IntPolyh_ArrayOfTangentZones& TTangentZones);
//! Mainly used by StartPointsChain(), this function
//! try to compute the next StartPoint.
Standard_EXPORT Standard_Integer GetNextChainStartPoint (const IntPolyh_StartPoint& SPInit, IntPolyh_StartPoint& SPNext, IntPolyh_SectionLine& MySectionLine, IntPolyh_ArrayOfTangentZones& TTangentZones, const Standard_Boolean Prepend = Standard_False);
Standard_EXPORT const IntPolyh_ArrayOfPoints& GetArrayOfPoints (const Standard_Integer SurfID) const;
Standard_EXPORT const IntPolyh_ArrayOfEdges& GetArrayOfEdges (const Standard_Integer SurfID) const;
Standard_EXPORT const IntPolyh_ArrayOfTriangles& GetArrayOfTriangles (const Standard_Integer SurfID) const;
Standard_EXPORT Standard_Integer GetFinTE (const Standard_Integer SurfID) const;
Standard_EXPORT Standard_Integer GetFinTT (const Standard_Integer SurfID) const;
Standard_EXPORT Bnd_Box GetBox (const Standard_Integer SurfID) const;
Standard_EXPORT void GetBoxDraw (const Standard_Integer SurfID) const;
Standard_EXPORT const IntPolyh_ArrayOfStartPoints& GetArrayOfSP() const;
//! This method returns array of couples of contact triangles.
Standard_EXPORT IntPolyh_ArrayOfCouples& GetArrayOfCouples();
Standard_EXPORT void SetEnlargeZone (Standard_Boolean& EnlargeZone);
Standard_EXPORT Standard_Boolean GetEnlargeZone() const;
//! returns FlecheMin
Standard_EXPORT Standard_Real GetMinDeflection (const Standard_Integer SurfID) const;
//! returns FlecheMax
Standard_EXPORT Standard_Real GetMaxDeflection (const Standard_Integer SurfID) const;
protected:
private:
Handle(Adaptor3d_HSurface) MaSurface1;
Handle(Adaptor3d_HSurface) MaSurface2;
Bnd_Box MyBox1;
Bnd_Box MyBox2;
Standard_Integer NbSamplesU1;
Standard_Integer NbSamplesU2;
Standard_Integer NbSamplesV1;
Standard_Integer NbSamplesV2;
Standard_Real FlecheMax1;
Standard_Real FlecheMax2;
Standard_Real FlecheMin1;
Standard_Real FlecheMin2;
Standard_Real FlecheMoy1;
Standard_Real FlecheMoy2;
IntPolyh_ArrayOfPoints TPoints1;
IntPolyh_ArrayOfPoints TPoints2;
IntPolyh_ArrayOfEdges TEdges1;
IntPolyh_ArrayOfEdges TEdges2;
IntPolyh_ArrayOfTriangles TTriangles1;
IntPolyh_ArrayOfTriangles TTriangles2;
IntPolyh_ArrayOfCouples TTrianglesContacts;
IntPolyh_ArrayOfStartPoints TStartPoints;
Standard_Boolean myEnlargeZone;
};
#endif // _IntPolyh_MaillageAffinage_HeaderFile

View File

@@ -0,0 +1,23 @@
// Created on: 1999-03-03
// Created by: Fabrice SERVANT
// Copyright (c) 1999 Matra Datavision
// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// 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.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#ifndef _IntPolyh_PMaillageAffinage_HeaderFile
#define _IntPolyh_PMaillageAffinage_HeaderFile
class IntPolyh_MaillageAffinage;
typedef IntPolyh_MaillageAffinage* IntPolyh_PMaillageAffinage;
#endif // _IntPolyh_PMaillageAffinage_HeaderFile

View File

@@ -1,142 +0,0 @@
-- Created on: 1999-03-05
-- Created by: Fabrice SERVANT
-- Copyright (c) 1999 Matra Datavision
-- Copyright (c) 1999-2014 OPEN CASCADE SAS
--
-- This file is part of Open CASCADE Technology software library.
--
-- 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.
--
-- Alternatively, this file may be used under the terms of Open CASCADE
-- commercial license or contractual agreement.
class Point from IntPolyh
uses
Pnt from gp,
HSurface from Adaptor3d
is
Create;
Create(xx,yy,zz,uu,vv : Real from Standard);
X(me)
returns Real from Standard
is static;
Y(me)
returns Real from Standard
is static;
Z(me)
returns Real from Standard
is static;
U(me)
returns Real from Standard
is static;
V(me)
returns Real from Standard
is static;
PartOfCommon(me)
returns Integer from Standard
is static;
Equal(me: in out; Pt: Point from IntPolyh)
---C++: alias operator =
is static;
Set(me: in out; v1,v2,v3,v4,v5: Real from Standard; II: Integer from Standard = 1)
is static;
SetX(me: in out; v: Real from Standard)
is static;
SetY(me: in out; v: Real from Standard)
is static;
SetZ(me: in out; v: Real from Standard)
is static;
SetU(me: in out; v: Real from Standard)
is static;
SetV(me: in out; v: Real from Standard)
is static;
SetPartOfCommon(me :in out; ii: Integer from Standard)
is static;
Middle(me: in out; MySurface: HSurface from Adaptor3d; P1,P2: Point from IntPolyh)
is static;
Add(me; P1: Point from IntPolyh)
---C++: alias operator +
returns Point from IntPolyh
is static;
Sub(me; P1: Point from IntPolyh)
---C++: alias operator -
returns Point from IntPolyh
is static;
Divide(me; rr: Real from Standard)
---C++: alias operator /
returns Point from IntPolyh
is static;
Multiplication(me; rr: Real from Standard)
---C++: alias operator *
returns Point from IntPolyh
is static;
SquareModulus(me)
returns Real from Standard
is static;
SquareDistance(me; P2: Point from IntPolyh)
returns Real from Standard
is static;
Dot(me; P2: Point from IntPolyh)
returns Real from Standard
is static;
Cross(me:in out; P1,P2: Point from IntPolyh)
is static;
Dump(me)
is static;
Dump(me; i: Integer from Standard)
is static;
--modified by NIZNHY-PKV Fri Jan 20 12:11:36 2012 f
SetDegenerated(me:out;
theFlag:Boolean from Standard);
Degenerated(me)
returns Boolean from Standard;
--modified by NIZNHY-PKV Fri Jan 20 12:12:07 2012t
fields
x,y,z,u,v : Real from Standard;
POC : Integer from Standard;
--modified by NIZNHY-PKV Fri Jan 20 12:17:39 2012f
myDegenerated : Boolean from Standard;
--modified by NIZNHY-PKV Fri Jan 20 12:17:41 2012t
end Point from IntPolyh;

View File

@@ -14,11 +14,11 @@
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#include <IntPolyh_Point.ixx>
#include <Adaptor3d_HSurface.hxx>
#include <IntPolyh_Point.hxx>
#include <stdio.h>
//=======================================================================
//function : IntPolyh_Point
//purpose :

View File

@@ -0,0 +1,146 @@
// Created on: 1999-03-05
// Created by: Fabrice SERVANT
// Copyright (c) 1999 Matra Datavision
// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// 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.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#ifndef _IntPolyh_Point_HeaderFile
#define _IntPolyh_Point_HeaderFile
#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
#include <Standard_Real.hxx>
#include <Standard_Integer.hxx>
#include <Standard_Boolean.hxx>
class Adaptor3d_HSurface;
class IntPolyh_Point
{
public:
DEFINE_STANDARD_ALLOC
Standard_EXPORT IntPolyh_Point();
Standard_EXPORT IntPolyh_Point(const Standard_Real xx, const Standard_Real yy, const Standard_Real zz, const Standard_Real uu, const Standard_Real vv);
Standard_EXPORT Standard_Real X() const;
Standard_EXPORT Standard_Real Y() const;
Standard_EXPORT Standard_Real Z() const;
Standard_EXPORT Standard_Real U() const;
Standard_EXPORT Standard_Real V() const;
Standard_EXPORT Standard_Integer PartOfCommon() const;
Standard_EXPORT void Equal (const IntPolyh_Point& Pt);
void operator = (const IntPolyh_Point& Pt)
{
Equal(Pt);
}
Standard_EXPORT void Set (const Standard_Real v1, const Standard_Real v2, const Standard_Real v3, const Standard_Real v4, const Standard_Real v5, const Standard_Integer II = 1);
Standard_EXPORT void SetX (const Standard_Real v);
Standard_EXPORT void SetY (const Standard_Real v);
Standard_EXPORT void SetZ (const Standard_Real v);
Standard_EXPORT void SetU (const Standard_Real v);
Standard_EXPORT void SetV (const Standard_Real v);
Standard_EXPORT void SetPartOfCommon (const Standard_Integer ii);
Standard_EXPORT void Middle (const Handle(Adaptor3d_HSurface)& MySurface, const IntPolyh_Point& P1, const IntPolyh_Point& P2);
Standard_EXPORT IntPolyh_Point Add (const IntPolyh_Point& P1) const;
IntPolyh_Point operator + (const IntPolyh_Point& P1) const
{
return Add(P1);
}
Standard_EXPORT IntPolyh_Point Sub (const IntPolyh_Point& P1) const;
IntPolyh_Point operator - (const IntPolyh_Point& P1) const
{
return Sub(P1);
}
Standard_EXPORT IntPolyh_Point Divide (const Standard_Real rr) const;
IntPolyh_Point operator / (const Standard_Real rr) const
{
return Divide(rr);
}
Standard_EXPORT IntPolyh_Point Multiplication (const Standard_Real rr) const;
IntPolyh_Point operator * (const Standard_Real rr) const
{
return Multiplication(rr);
}
Standard_EXPORT Standard_Real SquareModulus() const;
Standard_EXPORT Standard_Real SquareDistance (const IntPolyh_Point& P2) const;
Standard_EXPORT Standard_Real Dot (const IntPolyh_Point& P2) const;
Standard_EXPORT void Cross (const IntPolyh_Point& P1, const IntPolyh_Point& P2);
Standard_EXPORT void Dump() const;
Standard_EXPORT void Dump (const Standard_Integer i) const;
Standard_EXPORT void SetDegenerated (const Standard_Boolean theFlag);
Standard_EXPORT Standard_Boolean Degenerated() const;
protected:
private:
Standard_Real x;
Standard_Real y;
Standard_Real z;
Standard_Real u;
Standard_Real v;
Standard_Integer POC;
Standard_Boolean myDegenerated;
};
#endif // _IntPolyh_Point_HeaderFile

View File

@@ -1,83 +0,0 @@
-- Created on: 1999-04-06
-- Created by: Fabrice SERVANT
-- Copyright (c) 1999 Matra Datavision
-- Copyright (c) 1999-2014 OPEN CASCADE SAS
--
-- This file is part of Open CASCADE Technology software library.
--
-- 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.
--
-- Alternatively, this file may be used under the terms of Open CASCADE
-- commercial license or contractual agreement.
-- modified by Edward AGAPOV (eap) Thu Feb 14 2002 (occ139)
-- Add Prepend(), replace array with sequence
class SectionLine from IntPolyh
uses
SeqOfStartPoints from IntPolyh,
StartPoint from IntPolyh
is
Create;
Create(nn : Integer from Standard) ;
Init(me: in out; nn: Integer from Standard)
is static;
Value(me; nn: Integer from Standard)
---C++: alias operator []
---C++: return const &
returns StartPoint from IntPolyh
is static;
ChangeValue(me: in out; nn: Integer from Standard)
---C++: alias operator []
---C++: return &
returns StartPoint from IntPolyh
is static;
Copy(me: in out; Other : SectionLine from IntPolyh)
---C++: alias operator =
---C++: return &
returns SectionLine from IntPolyh
is static;
GetN(me)
returns Integer from Standard
is static;
NbStartPoints(me)
returns Integer from Standard
is static;
IncrementNbStartPoints(me: in out)
is static;
Destroy(me: in out)
---C++: alias ~
is static;
Dump(me)
is static;
Prepend(me:in out; SP: StartPoint from IntPolyh)
is static;
fields
-- n,nbstartpoints : Integer from Standard;
-- ptr :Address from Standard;
mySeqOfSPoints : SeqOfStartPoints from IntPolyh;
end SectionLine from IntPolyh;

View File

@@ -17,15 +17,15 @@
// modified by Edward AGAPOV (eap) Thu Feb 14 2002 (occ139)
// Add Prepend(), replace array with sequence
#include <IntPolyh_StartPoint.ixx>
#include <IntPolyh_SectionLine.ixx>
#include <stdio.h>
#include <IntPolyh_SectionLine.hxx>
#include <IntPolyh_StartPoint.hxx>
#include <IntPolyh_Triangle.hxx>
#include <stdio.h>
//=======================================================================
//function : IntPolyh_SectionLine
//purpose :
//=======================================================================
IntPolyh_SectionLine::IntPolyh_SectionLine() /*: n(0),nbstartpoints(0),ptr(0)*/ { }
//=======================================================================

View File

@@ -0,0 +1,101 @@
// Created on: 1999-04-06
// Created by: Fabrice SERVANT
// Copyright (c) 1999 Matra Datavision
// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// 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.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#ifndef _IntPolyh_SectionLine_HeaderFile
#define _IntPolyh_SectionLine_HeaderFile
#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
#include <IntPolyh_SeqOfStartPoints.hxx>
#include <Standard_Integer.hxx>
class IntPolyh_StartPoint;
class IntPolyh_SectionLine
{
public:
DEFINE_STANDARD_ALLOC
Standard_EXPORT IntPolyh_SectionLine();
Standard_EXPORT IntPolyh_SectionLine(const Standard_Integer nn);
Standard_EXPORT void Init (const Standard_Integer nn);
Standard_EXPORT const IntPolyh_StartPoint& Value (const Standard_Integer nn) const;
const IntPolyh_StartPoint& operator [] (const Standard_Integer nn) const
{
return Value(nn);
}
Standard_EXPORT IntPolyh_StartPoint& ChangeValue (const Standard_Integer nn);
IntPolyh_StartPoint& operator [] (const Standard_Integer nn)
{
return ChangeValue(nn);
}
Standard_EXPORT IntPolyh_SectionLine& Copy (const IntPolyh_SectionLine& Other);
IntPolyh_SectionLine& operator = (const IntPolyh_SectionLine& Other)
{
return Copy(Other);
}
Standard_EXPORT Standard_Integer GetN() const;
Standard_EXPORT Standard_Integer NbStartPoints() const;
Standard_EXPORT void IncrementNbStartPoints();
Standard_EXPORT void Destroy();
~IntPolyh_SectionLine()
{
Destroy();
}
Standard_EXPORT void Dump() const;
Standard_EXPORT void Prepend (const IntPolyh_StartPoint& SP);
protected:
private:
IntPolyh_SeqOfStartPoints mySeqOfSPoints;
};
#endif // _IntPolyh_SectionLine_HeaderFile

View File

@@ -1,153 +0,0 @@
-- Created on: 1999-04-06
-- Created by: Fabrice SERVANT
-- Copyright (c) 1999 Matra Datavision
-- Copyright (c) 1999-2014 OPEN CASCADE SAS
--
-- This file is part of Open CASCADE Technology software library.
--
-- 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.
--
-- Alternatively, this file may be used under the terms of Open CASCADE
-- commercial license or contractual agreement.
class StartPoint from IntPolyh
uses
Triangle from IntPolyh
is
Create;
Create(xx,yy,zz,uu1,vv1,uu2,vv2 : Real from Standard;
T1,E1: Integer from Standard;
LAM1 : Real from Standard;
T2,E2: Integer from Standard;
LAM2 : Real from Standard;
List : Integer from Standard);
X(me)
returns Real from Standard
is static;
Y(me)
returns Real from Standard
is static;
Z(me)
returns Real from Standard
is static;
U1(me)
returns Real from Standard
is static;
V1(me)
returns Real from Standard
is static;
U2(me)
returns Real from Standard
is static;
V2(me)
returns Real from Standard
is static;
T1(me)
returns Integer from Standard
is static;
E1(me)
returns Integer from Standard
is static;
Lambda1(me)
returns Real from Standard
is static;
T2(me)
returns Integer from Standard
is static;
E2(me)
returns Integer from Standard
is static;
Lambda2(me)
returns Real from Standard
is static;
GetAngle(me)
returns Real from Standard
is static;
ChainList(me)
returns Integer from Standard;
GetEdgePoints(me; Triangle: Triangle from IntPolyh;
FirstEdgePoint,SecondEdgePoint,LastPoint: in out Integer from Standard)
returns Integer from Standard
is static;
Equal(me: in out; StPt: StartPoint from IntPolyh)
---C++: alias operator =
is static;
SetXYZ(me: in out; XX,YY,ZZ: Real from Standard)
is static;
SetUV1(me: in out; UU1,VV1: Real from Standard)
is static;
SetUV2(me: in out; UU2,VV2: Real from Standard)
is static;
SetEdge1(me: in out; IE1: Integer from Standard)
is static;
SetLambda1(me: in out; LAM1: Real from Standard)
is static;
SetEdge2(me: in out; IE2: Integer from Standard)
is static;
SetLambda2(me: in out; LAM2: Real from Standard)
is static;
SetCoupleValue(me: in out; IT1,IT2: Integer from Standard)
is static;
SetAngle(me : in out; ang:Real from Standard)
is static;
SetChainList(me: in out; ChList: Integer from Standard)
is static;
CheckSameSP(me; SP: StartPoint from IntPolyh)
returns Integer from Standard
is static;
Dump(me)
is static;
Dump(me; i: Integer from Standard)
is static;
fields
x,y,z,u1,v1,u2,v2 : Real from Standard;
lambda1,lambda2,angle : Real from Standard;--angle: cos angle normales triangles
t1,e1,t2,e2,chainlist : Integer from Standard;
end StartPoint from IntPolyh;

View File

@@ -14,10 +14,12 @@
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#include <IntPolyh_StartPoint.ixx>
//#include <Precision.hxx>
#include <stdio.h>
#include <IntPolyh_StartPoint.hxx>
#include <IntPolyh_Triangle.hxx>
#include <stdio.h>
//#include <Precision.hxx>
#define MyConfusionPrecision 10.0e-12
IntPolyh_StartPoint::IntPolyh_StartPoint() : x(0),y(0),z(0),u1(0),v1(0),u2(0),v2(0),

View File

@@ -0,0 +1,143 @@
// Created on: 1999-04-06
// Created by: Fabrice SERVANT
// Copyright (c) 1999 Matra Datavision
// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// 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.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#ifndef _IntPolyh_StartPoint_HeaderFile
#define _IntPolyh_StartPoint_HeaderFile
#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
#include <Standard_Real.hxx>
#include <Standard_Integer.hxx>
class IntPolyh_Triangle;
class IntPolyh_StartPoint
{
public:
DEFINE_STANDARD_ALLOC
Standard_EXPORT IntPolyh_StartPoint();
Standard_EXPORT IntPolyh_StartPoint(const Standard_Real xx, const Standard_Real yy, const Standard_Real zz, const Standard_Real uu1, const Standard_Real vv1, const Standard_Real uu2, const Standard_Real vv2, const Standard_Integer T1, const Standard_Integer E1, const Standard_Real LAM1, const Standard_Integer T2, const Standard_Integer E2, const Standard_Real LAM2, const Standard_Integer List);
Standard_EXPORT Standard_Real X() const;
Standard_EXPORT Standard_Real Y() const;
Standard_EXPORT Standard_Real Z() const;
Standard_EXPORT Standard_Real U1() const;
Standard_EXPORT Standard_Real V1() const;
Standard_EXPORT Standard_Real U2() const;
Standard_EXPORT Standard_Real V2() const;
Standard_EXPORT Standard_Integer T1() const;
Standard_EXPORT Standard_Integer E1() const;
Standard_EXPORT Standard_Real Lambda1() const;
Standard_EXPORT Standard_Integer T2() const;
Standard_EXPORT Standard_Integer E2() const;
Standard_EXPORT Standard_Real Lambda2() const;
Standard_EXPORT Standard_Real GetAngle() const;
Standard_EXPORT Standard_Integer ChainList() const;
Standard_EXPORT Standard_Integer GetEdgePoints (const IntPolyh_Triangle& Triangle, Standard_Integer& FirstEdgePoint, Standard_Integer& SecondEdgePoint, Standard_Integer& LastPoint) const;
Standard_EXPORT void Equal (const IntPolyh_StartPoint& StPt);
void operator = (const IntPolyh_StartPoint& StPt)
{
Equal(StPt);
}
Standard_EXPORT void SetXYZ (const Standard_Real XX, const Standard_Real YY, const Standard_Real ZZ);
Standard_EXPORT void SetUV1 (const Standard_Real UU1, const Standard_Real VV1);
Standard_EXPORT void SetUV2 (const Standard_Real UU2, const Standard_Real VV2);
Standard_EXPORT void SetEdge1 (const Standard_Integer IE1);
Standard_EXPORT void SetLambda1 (const Standard_Real LAM1);
Standard_EXPORT void SetEdge2 (const Standard_Integer IE2);
Standard_EXPORT void SetLambda2 (const Standard_Real LAM2);
Standard_EXPORT void SetCoupleValue (const Standard_Integer IT1, const Standard_Integer IT2);
Standard_EXPORT void SetAngle (const Standard_Real ang);
Standard_EXPORT void SetChainList (const Standard_Integer ChList);
Standard_EXPORT Standard_Integer CheckSameSP (const IntPolyh_StartPoint& SP) const;
Standard_EXPORT void Dump() const;
Standard_EXPORT void Dump (const Standard_Integer i) const;
protected:
private:
Standard_Real x;
Standard_Real y;
Standard_Real z;
Standard_Real u1;
Standard_Real v1;
Standard_Real u2;
Standard_Real v2;
Standard_Real lambda1;
Standard_Real lambda2;
Standard_Real angle;
Standard_Integer t1;
Standard_Integer e1;
Standard_Integer t2;
Standard_Integer e2;
Standard_Integer chainlist;
};
#endif // _IntPolyh_StartPoint_HeaderFile

View File

@@ -1,209 +0,0 @@
-- Created on: 1999-03-05
-- Created by: Fabrice SERVANT
-- Copyright (c) 1999 Matra Datavision
-- Copyright (c) 1999-2014 OPEN CASCADE SAS
--
-- This file is part of Open CASCADE Technology software library.
--
-- 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.
--
-- Alternatively, this file may be used under the terms of Open CASCADE
-- commercial license or contractual agreement.
class Triangle from IntPolyh
uses
HSurface from Adaptor3d,
Point from IntPolyh,
ArrayOfPoints from IntPolyh,
StartPoint from IntPolyh,
ArrayOfEdges from IntPolyh,
ArrayOfCouples from IntPolyh,
ArrayOfTriangles from IntPolyh,
Box from Bnd
is
Create;
Create(i1,i2,i3: Integer from Standard);
FirstPoint(me)
returns Integer from Standard
is static;
SecondPoint(me)
returns Integer from Standard
is static;
ThirdPoint(me)
returns Integer from Standard
is static;
FirstEdge(me)
returns Integer from Standard
is static;
FirstEdgeOrientation(me)
returns Integer from Standard
is static;
SecondEdge(me)
returns Integer from Standard
is static;
SecondEdgeOrientation(me)
returns Integer from Standard
is static;
ThirdEdge(me)
returns Integer from Standard
is static;
ThirdEdgeOrientation(me)
returns Integer from Standard
is static;
GetFleche(me)
returns Real from Standard
is static;
IndiceIntersectionPossible(me)
returns Integer from Standard
is static;
IndiceIntersection(me)
returns Integer from Standard
is static;
SetFirstPoint(me: in out; v: Integer from Standard)
is static;
SetSecondPoint(me: in out; v: Integer from Standard)
is static;
SetThirdPoint(me: in out; v: Integer from Standard)
is static;
SetFirstEdge(me: in out; v,s: Integer from Standard)
is static;
SetSecondEdge(me: in out; v,s: Integer from Standard)
is static;
SetThirdEdge(me: in out; v,s: Integer from Standard)
is static;
SetFleche(me: in out; v: Real from Standard)
is static;
SetIndiceIntersectionPossible(me: in out; v: Integer from Standard)
is static;
SetIndiceIntersection(me: in out; v: Integer from Standard)
is static;
GetEdgeNumber(me;v: Integer from Standard )
returns Integer from Standard
is static;
SetEdge(me: in out; v,en: Integer from Standard )
is static;
GetEdgeOrientation(me;v: Integer from Standard )
returns Integer from Standard
is static;
SetEdgeOrientation(me: in out; v,oe: Integer from Standard )
is static;
TriangleDeflection(me : in out; MaSurface:HSurface from Adaptor3d;
TP : ArrayOfPoints from IntPolyh)
is static;
CheckCommonEdge(me; PE1,PE2,P3,Index: Integer from Standard;
TTriangles: ArrayOfTriangles from IntPolyh)
returns Integer from Standard
is static;
-- GetNextTriangle(me; NumTri,PE1,PE2,P3,FinTT,NbSamplesU,NbSamplesV: Integer from Standard;
-- TTriangles: ArrayOfTriangles from IntPolyh)
-- returns Integer from Standard
-- is static;
GetNextTriangle2(me; NumTri,NumEdge: Integer from Standard;
TEdges: ArrayOfEdges from IntPolyh)
returns Integer from Standard
is static;
MiddleRefinement(me: in out; TriangleNumber: Integer from Standard;
MySurface:HSurface from Adaptor3d;
TPoints: in out ArrayOfPoints from IntPolyh;
TTriangles: in out ArrayOfTriangles from IntPolyh;
TEdges: in out ArrayOfEdges from IntPolyh)
is static;
MultipleMiddleRefinement(me: in out;
NombreAffinages,TriangleNumber: Integer from Standard;
MySurface:HSurface from Adaptor3d;
TPoints: in out ArrayOfPoints from IntPolyh;
TTriangles: in out ArrayOfTriangles from IntPolyh;
TEdges: in out ArrayOfEdges from IntPolyh)
is static;
CompareBoxTriangle(me; b: Box from Bnd;
TPoints: ArrayOfPoints from IntPolyh)
returns Integer from Standard
is static;
MultipleMiddleRefinement2(me: in out;
RefineCriterion: Real from Standard;
thebox: Box from Bnd;
TriangleNumber: Integer from Standard;
MySurface:HSurface from Adaptor3d;
TPoints: in out ArrayOfPoints from IntPolyh;
TTriangles: in out ArrayOfTriangles from IntPolyh;
TEdges: in out ArrayOfEdges from IntPolyh)
is static;
GetNextChainTriangle(me; SPIni: StartPoint from IntPolyh; LastTTC: Integer from Standard;
TriContactsArray: in out ArrayOfCouples from IntPolyh;
TTriangles1, TTriangles2: ArrayOfTriangles from IntPolyh;
NumContact,NextTriangle: in out Integer from Standard)
returns Integer from Standard
is static;
LinkEdges2Triangle(me: in out; TEdges: ArrayOfEdges from IntPolyh;
ed1,ed2,ed3: Integer from Standard)
is static;
SetEdgeandOrientation(me: in out; Edge: Integer from Standard;
TEdges: ArrayOfEdges from IntPolyh)
is static;
Dump(me; v: Integer from Standard)
is static;
DumpFleche(me; v: Integer from Standard)
is static;
fields
p1,p2,p3,e1,oe1,e2,oe2,e3,oe3,II,IP : Integer from Standard;
Fleche : Real from Standard;
end Triangle from IntPolyh;
-- The code is inside, but as it is not used for my algorythms I leave
-- it as a comment.
--
-- RefinementG(me: in out; SurfID: Integer from Standard; T: in out
-- Triangle from IntPolyh) is static;

View File

@@ -14,13 +14,16 @@
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#include <IntPolyh_Triangle.ixx>
#include <IntPolyh_Point.ixx>
#include <IntPolyh_Edge.ixx>
#include <IntPolyh_StartPoint.ixx>
#include <IntPolyh_Couple.ixx>
#include <stdio.h>
#include <Adaptor3d_HSurface.hxx>
#include <Bnd_Box.hxx>
#include <IntPolyh_Couple.hxx>
#include <IntPolyh_Edge.hxx>
#include <IntPolyh_Point.hxx>
#include <IntPolyh_StartPoint.hxx>
#include <IntPolyh_Triangle.hxx>
#include <stdio.h>
#define MyTolerance 10.0e-7
#define MyConfusionPrecision 10.0e-12
#define SquareMyConfusionPrecision 10.0e-24

View File

@@ -0,0 +1,156 @@
// Created on: 1999-03-05
// Created by: Fabrice SERVANT
// Copyright (c) 1999 Matra Datavision
// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// 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.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#ifndef _IntPolyh_Triangle_HeaderFile
#define _IntPolyh_Triangle_HeaderFile
#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
#include <Standard_Integer.hxx>
#include <Standard_Real.hxx>
#include <IntPolyh_ArrayOfPoints.hxx>
#include <IntPolyh_ArrayOfTriangles.hxx>
#include <IntPolyh_ArrayOfEdges.hxx>
#include <IntPolyh_ArrayOfCouples.hxx>
class Adaptor3d_HSurface;
class Bnd_Box;
class IntPolyh_StartPoint;
class IntPolyh_Triangle
{
public:
DEFINE_STANDARD_ALLOC
Standard_EXPORT IntPolyh_Triangle();
Standard_EXPORT IntPolyh_Triangle(const Standard_Integer i1, const Standard_Integer i2, const Standard_Integer i3);
Standard_EXPORT Standard_Integer FirstPoint() const;
Standard_EXPORT Standard_Integer SecondPoint() const;
Standard_EXPORT Standard_Integer ThirdPoint() const;
Standard_EXPORT Standard_Integer FirstEdge() const;
Standard_EXPORT Standard_Integer FirstEdgeOrientation() const;
Standard_EXPORT Standard_Integer SecondEdge() const;
Standard_EXPORT Standard_Integer SecondEdgeOrientation() const;
Standard_EXPORT Standard_Integer ThirdEdge() const;
Standard_EXPORT Standard_Integer ThirdEdgeOrientation() const;
Standard_EXPORT Standard_Real GetFleche() const;
Standard_EXPORT Standard_Integer IndiceIntersectionPossible() const;
Standard_EXPORT Standard_Integer IndiceIntersection() const;
Standard_EXPORT void SetFirstPoint (const Standard_Integer v);
Standard_EXPORT void SetSecondPoint (const Standard_Integer v);
Standard_EXPORT void SetThirdPoint (const Standard_Integer v);
Standard_EXPORT void SetFirstEdge (const Standard_Integer v, const Standard_Integer s);
Standard_EXPORT void SetSecondEdge (const Standard_Integer v, const Standard_Integer s);
Standard_EXPORT void SetThirdEdge (const Standard_Integer v, const Standard_Integer s);
Standard_EXPORT void SetFleche (const Standard_Real v);
Standard_EXPORT void SetIndiceIntersectionPossible (const Standard_Integer v);
Standard_EXPORT void SetIndiceIntersection (const Standard_Integer v);
Standard_EXPORT Standard_Integer GetEdgeNumber (const Standard_Integer v) const;
Standard_EXPORT void SetEdge (const Standard_Integer v, const Standard_Integer en);
Standard_EXPORT Standard_Integer GetEdgeOrientation (const Standard_Integer v) const;
Standard_EXPORT void SetEdgeOrientation (const Standard_Integer v, const Standard_Integer oe);
Standard_EXPORT void TriangleDeflection (const Handle(Adaptor3d_HSurface)& MaSurface, const IntPolyh_ArrayOfPoints& TP);
Standard_EXPORT Standard_Integer CheckCommonEdge (const Standard_Integer PE1, const Standard_Integer PE2, const Standard_Integer P3, const Standard_Integer Index, const IntPolyh_ArrayOfTriangles& TTriangles) const;
Standard_EXPORT Standard_Integer GetNextTriangle2 (const Standard_Integer NumTri, const Standard_Integer NumEdge, const IntPolyh_ArrayOfEdges& TEdges) const;
Standard_EXPORT void MiddleRefinement (const Standard_Integer TriangleNumber, const Handle(Adaptor3d_HSurface)& MySurface, IntPolyh_ArrayOfPoints& TPoints, IntPolyh_ArrayOfTriangles& TTriangles, IntPolyh_ArrayOfEdges& TEdges);
Standard_EXPORT void MultipleMiddleRefinement (const Standard_Integer NombreAffinages, const Standard_Integer TriangleNumber, const Handle(Adaptor3d_HSurface)& MySurface, IntPolyh_ArrayOfPoints& TPoints, IntPolyh_ArrayOfTriangles& TTriangles, IntPolyh_ArrayOfEdges& TEdges);
Standard_EXPORT Standard_Integer CompareBoxTriangle (const Bnd_Box& b, const IntPolyh_ArrayOfPoints& TPoints) const;
Standard_EXPORT void MultipleMiddleRefinement2 (const Standard_Real RefineCriterion, const Bnd_Box& thebox, const Standard_Integer TriangleNumber, const Handle(Adaptor3d_HSurface)& MySurface, IntPolyh_ArrayOfPoints& TPoints, IntPolyh_ArrayOfTriangles& TTriangles, IntPolyh_ArrayOfEdges& TEdges);
Standard_EXPORT Standard_Integer GetNextChainTriangle (const IntPolyh_StartPoint& SPIni, const Standard_Integer LastTTC, IntPolyh_ArrayOfCouples& TriContactsArray, const IntPolyh_ArrayOfTriangles& TTriangles1, const IntPolyh_ArrayOfTriangles& TTriangles2, Standard_Integer& NumContact, Standard_Integer& NextTriangle) const;
Standard_EXPORT void LinkEdges2Triangle (const IntPolyh_ArrayOfEdges& TEdges, const Standard_Integer ed1, const Standard_Integer ed2, const Standard_Integer ed3);
Standard_EXPORT void SetEdgeandOrientation (const Standard_Integer Edge, const IntPolyh_ArrayOfEdges& TEdges);
Standard_EXPORT void Dump (const Standard_Integer v) const;
Standard_EXPORT void DumpFleche (const Standard_Integer v) const;
protected:
private:
Standard_Integer p1;
Standard_Integer p2;
Standard_Integer p3;
Standard_Integer e1;
Standard_Integer oe1;
Standard_Integer e2;
Standard_Integer oe2;
Standard_Integer e3;
Standard_Integer oe3;
Standard_Integer II;
Standard_Integer IP;
Standard_Real Fleche;
};
#endif // _IntPolyh_Triangle_HeaderFile