Mantis issue 0021423: MakeScaleAlongAxes does not work.

This commit is contained in:
jfa 2012-05-21 10:21:41 +00:00
parent 17ec6b3223
commit 320d3b31cb
14 changed files with 9 additions and 2176 deletions

View File

@ -1,111 +0,0 @@
// File: BRepBuilderAPI_GTransform_21423.cxx
// Created: Mon Dec 30 17:12:14 1996
// Author: Stagiaire Mary FABIEN
// <fbi@zozox.paris1.matra-dtv.fr>
#include <BRepBuilderAPI_GTransform_21423.hxx>
#include <Standard_NoSuchObject.hxx>
#include <gp_GTrsf.hxx>
#include <TopoDS_Shape.hxx>
#include <TopTools_ListOfShape.hxx>
#include <TopTools_ListIteratorOfListOfShape.hxx>
#include <BRepTools_GTrsfModification.hxx>
#include <BRepTools_NurbsConvertModification_21423.hxx>
#include <BRepBuilderAPI_NurbsConvert_21423.hxx>
#include <gp.hxx>
#include <BRep_Builder.hxx>
#include <TopoDS.hxx>
//=======================================================================
//function : BRepBuilderAPI_GTransform_21423
//purpose :
//=======================================================================
BRepBuilderAPI_GTransform_21423::BRepBuilderAPI_GTransform_21423 (const gp_GTrsf& T) :
myGTrsf(T)
{
myModification = new BRepTools_GTrsfModification(T);
}
//=======================================================================
//function : BRepBuilderAPI_GTransform_21423
//purpose :
//=======================================================================
BRepBuilderAPI_GTransform_21423::BRepBuilderAPI_GTransform_21423 (const TopoDS_Shape& S,
const gp_GTrsf& T,
const Standard_Boolean Copy) :
myGTrsf(T)
{
myModification = new BRepTools_GTrsfModification(T);
Perform(S,Copy);
}
//=======================================================================
//function : Perform
//purpose :
//=======================================================================
void BRepBuilderAPI_GTransform_21423::Perform(const TopoDS_Shape& S,
const Standard_Boolean Copy)
{
BRepBuilderAPI_NurbsConvert_21423 nc;
nc.Perform(S, Copy);
myHist.Add(S,nc);
TopoDS_Shape Slocal = nc.Shape();
Handle(BRepTools_GTrsfModification) theModif =
Handle(BRepTools_GTrsfModification)::DownCast(myModification);
theModif->GTrsf() = myGTrsf;
DoModif(Slocal,myModification);
// myHist.Filter (Shape());
}
//=======================================================================
//function : Modified
//purpose :
//=======================================================================
const TopTools_ListOfShape& BRepBuilderAPI_GTransform_21423::Modified
(const TopoDS_Shape& F)
{
myGenerated.Clear();
const TopTools_DataMapOfShapeListOfShape& M = myHist.Modification();
if (M.IsBound(F)) {
TopTools_ListOfShape Li;
TopTools_ListIteratorOfListOfShape itL(M(F));
for (;itL.More();itL.Next())
Li.Assign(BRepBuilderAPI_ModifyShape_21423::Modified(itL.Value()));
}
return myGenerated;
}
//=======================================================================
//function : ModifiedShape
//purpose :
//=======================================================================
const TopoDS_Shape& BRepBuilderAPI_GTransform_21423::ModifiedShape
(const TopoDS_Shape& S) const
{
const TopTools_DataMapOfShapeListOfShape &aMapModif = myHist.Modification();
TopoDS_Shape aShape = S;
if (aMapModif.IsBound(S)) {
const TopTools_ListOfShape &aListModShape = aMapModif(S);
Standard_Integer aNbShapes = aListModShape.Extent();
if (aNbShapes > 0)
aShape = aListModShape.First();
}
return BRepBuilderAPI_ModifyShape_21423::ModifiedShape(aShape);
}

View File

@ -1,137 +0,0 @@
// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to
// this header file considered to be the "object code" form of the original source.
#ifndef _BRepBuilderAPI_GTransform_21423_HeaderFile
#define _BRepBuilderAPI_GTransform_21423_HeaderFile
#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_Macro_HeaderFile
#include <Standard_Macro.hxx>
#endif
#ifndef _gp_GTrsf_HeaderFile
#include <gp_GTrsf.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _BRepBuilderAPI_Collect_HeaderFile
#include <BRepBuilderAPI_Collect.hxx>
#endif
#ifndef _BRepBuilderAPI_ModifyShape_21423_HeaderFile
#include <BRepBuilderAPI_ModifyShape_21423.hxx>
#endif
class Standard_NoSuchObject;
class gp_GTrsf;
class TopoDS_Shape;
class TopTools_ListOfShape;
//! Geometric transformation on a shape. <br>
//! The transformation to be applied is defined as a gp_GTrsf <br>
//! transformation. It may be: <br>
//! - a transformation equivalent to a gp_Trsf transformation, the <br>
//! most common case: you should , however, use a BRepAPI_Transform <br>
//! object to perform this kind of transformation; or <br>
//! - an affinity, or <br>
//! - more generally, any type of point transformation which may <br>
//! be defined by a three row, four column matrix of transformation. <br>
//! In the last two cases, the underlying geometry of the <br>
//! following shapes may change: <br>
//! - a curve which supports an edge of the shape, or <br>
//! - a surface which supports a face of the shape; <br>
//! For example, a circle may be transformed into an ellipse when <br>
//! applying an affinity transformation. <br>
//! The transformation is applied to: <br>
//! - all the curves which support edges of the shape, and <br>
//! - all the surfaces which support faces of the shape. <br>
//! A GTransform object provides a framework for: <br>
//! - defining the geometric transformation to be applied, <br>
//! - implementing the transformation algorithm, and <br>
//! - consulting the result. <br>
class BRepBuilderAPI_GTransform_21423 : public BRepBuilderAPI_ModifyShape_21423 {
public:
void* operator new(size_t,void* anAddress)
{
return anAddress;
}
void* operator new(size_t size)
{
return Standard::Allocate(size);
}
void operator delete(void *anAddress)
{
if (anAddress) Standard::Free((Standard_Address&)anAddress);
}
//! Constructs a framework for applying the geometric <br>
//! transformation T to a shape. Use the function <br>
//! Perform to define the shape to transform. <br>
Standard_EXPORT BRepBuilderAPI_GTransform_21423(const gp_GTrsf& T);
//! Constructs a framework for applying the geometric <br>
//! transformation T to a shape, and applies it to the shape S. <br>
//! - If the transformation T is direct and isometric (i.e. if <br>
//! the determinant of the vectorial part of T is equal to <br>
//! 1.), and if Copy equals false (default value), the <br>
//! resulting shape is the same as the original but with <br>
//! a new location assigned to it. <br>
//! - In all other cases, the transformation is applied to <br>
//! a duplicate of S. <br>
//! Use the function Shape to access the result. <br>
//! Note: the constructed framework can be reused to <br>
//! apply the same geometric transformation to other <br>
//! shapes: just specify them with the function Perform. <br>
Standard_EXPORT BRepBuilderAPI_GTransform_21423(const TopoDS_Shape& S,const gp_GTrsf& T,const Standard_Boolean Copy = Standard_False);
//! Applies the geometric transformation defined at the <br>
//! time of construction of this framework to the shape S. <br>
//! - If the transformation T is direct and isometric (i.e. if <br>
//! the determinant of the vectorial part of T is equal to <br>
//! 1.), and if Copy equals false (default value), the <br>
//! resulting shape is the same as the original but with <br>
//! a new location assigned to it. <br>
//! - In all other cases, the transformation is applied to a duplicate of S. <br>
//! Use the function Shape to access the result. <br>
//! Note: this framework can be reused to apply the same <br>
//! geometric transformation to other shapes: just specify <br>
//! them by calling the function Perform again. <br>
Standard_EXPORT void Perform(const TopoDS_Shape& S,const Standard_Boolean Copy = Standard_False) ;
//! Returns the list of shapes modified from the shape <br>
//! <S>. <br>
Standard_EXPORT virtual const TopTools_ListOfShape& Modified(const TopoDS_Shape& S) ;
//! Returns the modified shape corresponding to <S>. <br>
Standard_EXPORT virtual const TopoDS_Shape& ModifiedShape(const TopoDS_Shape& S) const;
protected:
private:
gp_GTrsf myGTrsf;
Standard_Boolean myUseModif;
BRepBuilderAPI_Collect myHist;
};
// other Inline functions and methods (like "C++: function call" methods)
#endif

View File

@ -1,144 +0,0 @@
// File: BRepBuilderAPI_ModifyShape_21423.cxx
// Created: Fri Dec 2 10:37:08 1994
// Author: Jacques GOUSSARD
// <jag@topsn2>
#include <BRepBuilderAPI_ModifyShape_21423.hxx>
#include <BRepTools_Modification.hxx>
#include <TopoDS_Shape.hxx>
#include <TopTools_ListOfShape.hxx>
#include <Standard_NullObject.hxx>
#include <Standard_NoSuchObject.hxx>
//=======================================================================
//function : BRepBuilderAPI_ModifyShape_21423
//purpose :
//=======================================================================
BRepBuilderAPI_ModifyShape_21423::BRepBuilderAPI_ModifyShape_21423 () {}
//=======================================================================
//function : BRepBuilderAPI_ModifyShape_21423
//purpose :
//=======================================================================
BRepBuilderAPI_ModifyShape_21423::BRepBuilderAPI_ModifyShape_21423 (const TopoDS_Shape& S):
myModifier(S), myInitialShape(S)
{}
//=======================================================================
//function : BRepBuilderAPI_ModifyShape_21423
//purpose :
//=======================================================================
BRepBuilderAPI_ModifyShape_21423::BRepBuilderAPI_ModifyShape_21423
(const Handle(BRepTools_Modification)& M)
{
myModification = M;
}
//=======================================================================
//function : BRepBuilderAPI_ModifyShape_21423
//purpose :
//=======================================================================
BRepBuilderAPI_ModifyShape_21423::BRepBuilderAPI_ModifyShape_21423
(const TopoDS_Shape& S,
const Handle(BRepTools_Modification)& M): myModifier(S),myInitialShape(S)
{
myModification = M;
DoModif();
}
//=======================================================================
//function : DoModif
//purpose :
//=======================================================================
void BRepBuilderAPI_ModifyShape_21423::DoModif ()
{
if (myInitialShape.IsNull() || myModification.IsNull()) {
Standard_NullObject::Raise();
}
myModifier.Perform(myModification);
if (myModifier.IsDone()) {
Done();
myShape = myModifier.ModifiedShape(myInitialShape);
}
else {
NotDone();
}
}
//=======================================================================
//function : DoModif
//purpose :
//=======================================================================
void BRepBuilderAPI_ModifyShape_21423::DoModif (const TopoDS_Shape& S)
{
if (!S.IsEqual(myInitialShape) || !IsDone()) {
myInitialShape = S;
myModifier.Init(S);
DoModif();
}
}
//=======================================================================
//function : DoModif
//purpose :
//=======================================================================
void BRepBuilderAPI_ModifyShape_21423::DoModif (const Handle(BRepTools_Modification)& M)
{
myModification = M;
DoModif();
}
//=======================================================================
//function : DoModif
//purpose :
//=======================================================================
void BRepBuilderAPI_ModifyShape_21423::DoModif (const TopoDS_Shape& S,
const Handle(BRepTools_Modification)& M)
{
myInitialShape = S;
myModifier.Init(S);
myModification = M;
DoModif();
}
//=======================================================================
//function : ModifiedShape
//purpose :
//=======================================================================
const TopoDS_Shape& BRepBuilderAPI_ModifyShape_21423::ModifiedShape
(const TopoDS_Shape& S) const
{
return myModifier.ModifiedShape(S);
}
//=======================================================================
//function : Modified
//purpose :
//=======================================================================
const TopTools_ListOfShape& BRepBuilderAPI_ModifyShape_21423::Modified
(const TopoDS_Shape& F)
{
myGenerated.Clear();
myGenerated.Append(myModifier.ModifiedShape(F));
return myGenerated;
}

View File

@ -1,129 +0,0 @@
// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to
// this header file considered to be the "object code" form of the original source.
#ifndef _BRepBuilderAPI_ModifyShape_21423_HeaderFile
#define _BRepBuilderAPI_ModifyShape_21423_HeaderFile
#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_Macro_HeaderFile
#include <Standard_Macro.hxx>
#endif
#ifndef _BRepTools_Modifier_21423_HeaderFile
#include <BRepTools_Modifier_21423.hxx>
#endif
#ifndef _TopoDS_Shape_HeaderFile
#include <TopoDS_Shape.hxx>
#endif
#ifndef _Handle_BRepTools_Modification_HeaderFile
#include <Handle_BRepTools_Modification.hxx>
#endif
#ifndef _BRepBuilderAPI_MakeShape_HeaderFile
#include <BRepBuilderAPI_MakeShape.hxx>
#endif
class BRepTools_Modification;
class Standard_NullObject;
class Standard_NoSuchObject;
class TopoDS_Shape;
class TopTools_ListOfShape;
//! Implements the methods of MakeShape for the <br>
//! constant topology modifications. The methods are <br>
//! implemented when the modification uses a Modifier <br>
//! from BRepTools. Some of them have to be redefined <br>
//! if the modification is implemented with another <br>
//! tool (see Transform from BRepBuilderAPI for example). <br>
//! The BRepBuilderAPI package provides the following <br>
//! frameworks to perform modifications of this sort: <br>
//! - BRepBuilderAPI_Copy to produce the copy of a shape, <br>
//! - BRepBuilderAPI_Transform and <br>
//! BRepBuilderAPI_GTransform to apply a geometric <br>
//! transformation to a shape, <br>
//! - BRepBuilderAPI_NurbsConvert_21423 to convert the <br>
//! whole geometry of a shape into NURBS geometry, <br>
//! - BRepOffsetAPI_DraftAngle to build a tapered shape. <br>
class BRepBuilderAPI_ModifyShape_21423 : public BRepBuilderAPI_MakeShape {
public:
void* operator new(size_t,void* anAddress)
{
return anAddress;
}
void* operator new(size_t size)
{
return Standard::Allocate(size);
}
void operator delete(void *anAddress)
{
if (anAddress) Standard::Free((Standard_Address&)anAddress);
}
//! Returns the list of shapes modified from the shape <br>
//! <S>. <br>
Standard_EXPORT virtual const TopTools_ListOfShape& Modified(const TopoDS_Shape& S) ;
//! Returns the modified shape corresponding to <S>. <br>
//! S can correspond to the entire initial shape or to its sub-shape. <br>
//! Exceptions <br>
//! Standard_NoSuchObject if S is not the initial shape or <br>
//! a sub-shape of the initial shape to which the <br>
//! transformation has been applied. Raises NoSuchObject from Standard <br>
//! if S is not the initial shape or a sub-shape <br>
//! of the initial shape. <br>
Standard_EXPORT virtual const TopoDS_Shape& ModifiedShape(const TopoDS_Shape& S) const;
protected:
//! Empty constructor. <br>
Standard_EXPORT BRepBuilderAPI_ModifyShape_21423();
//! Initializes the modifier with the Shape <S>, and <br>
//! set the field <myInitialShape> to <S>. <br>
Standard_EXPORT BRepBuilderAPI_ModifyShape_21423(const TopoDS_Shape& S);
//! Set the field <myModification> with <M>. <br>
Standard_EXPORT BRepBuilderAPI_ModifyShape_21423(const Handle(BRepTools_Modification)& M);
//! Initializes the modifier with the Shape <S>, and <br>
//! set the field <myInitialShape> to <S>, and set the <br>
//! field <myModification> with <M>, the performs the <br>
//! modification. <br>
Standard_EXPORT BRepBuilderAPI_ModifyShape_21423(const TopoDS_Shape& S,const Handle(BRepTools_Modification)& M);
//! Performs the previously given modification on the <br>
//! shape <S>. <br>
Standard_EXPORT void DoModif(const TopoDS_Shape& S) ;
//! Performs the modification <M> on a previously <br>
//! given shape. <br>
Standard_EXPORT void DoModif(const Handle(BRepTools_Modification)& M) ;
//! Performs the modification <M> on the shape <S>. <br>
Standard_EXPORT void DoModif(const TopoDS_Shape& S,const Handle(BRepTools_Modification)& M) ;
BRepTools_Modifier_21423 myModifier;
TopoDS_Shape myInitialShape;
Handle_BRepTools_Modification myModification;
private:
Standard_EXPORT void DoModif() ;
};
// other Inline functions and methods (like "C++: function call" methods)
#endif

View File

@ -1,58 +0,0 @@
// File: BRepBuilderAPI_NurbsConvert_21423.cxx
// Created: Fri Dec 9 09:14:55 1994
// Author: Jacques GOUSSARD
// <jag@topsn2>
#include <BRepBuilderAPI_NurbsConvert_21423.hxx>
#include <TopoDS_Shape.hxx>
#include <BRepLib.hxx>
#include <TopAbs.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Edge.hxx>
#include <TopTools_MapOfShape.hxx>
#include <TopExp_Explorer.hxx>
#include <BRep_Builder.hxx>
#include <BRepTools_NurbsConvertModification_21423.hxx>
//=======================================================================
//function : BRepBuilderAPI_NurbsConvert_21423
//purpose :
//=======================================================================
BRepBuilderAPI_NurbsConvert_21423::BRepBuilderAPI_NurbsConvert_21423 ()
{
myModification = new BRepTools_NurbsConvertModification_21423();
}
//=======================================================================
//function : BRepBuilderAPI_NurbsConvert_21423
//purpose :
//=======================================================================
BRepBuilderAPI_NurbsConvert_21423::BRepBuilderAPI_NurbsConvert_21423 (const TopoDS_Shape& S,
const Standard_Boolean Copy)
{
myModification = new BRepTools_NurbsConvertModification_21423();
Perform(S,Copy);
}
//=======================================================================
//function : Perform
//purpose :
//=======================================================================
void BRepBuilderAPI_NurbsConvert_21423::Perform(const TopoDS_Shape& S,
const Standard_Boolean Copy)
{
Handle(BRepTools_NurbsConvertModification_21423) theModif =
Handle(BRepTools_NurbsConvertModification_21423)::DownCast(myModification);
DoModif(S,myModification);
}

View File

@ -1,95 +0,0 @@
// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to
// this header file considered to be the "object code" form of the original source.
#ifndef _BRepBuilderAPI_NurbsConvert_21423_HeaderFile
#define _BRepBuilderAPI_NurbsConvert_21423_HeaderFile
#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_Macro_HeaderFile
#include <Standard_Macro.hxx>
#endif
#ifndef _BRepBuilderAPI_ModifyShape_21423_HeaderFile
#include <BRepBuilderAPI_ModifyShape_21423.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
class TopoDS_Shape;
//! Conversion of the complete geometry of a shape into <br>
//! NURBS geometry. For example, all curves supporting <br>
//! edges of the basis shape are converted into BSpline <br>
//! curves, and all surfaces supporting its faces are <br>
//! converted into BSpline surfaces. <br>
class BRepBuilderAPI_NurbsConvert_21423 : public BRepBuilderAPI_ModifyShape_21423 {
public:
void* operator new(size_t,void* anAddress)
{
return anAddress;
}
void* operator new(size_t size)
{
return Standard::Allocate(size);
}
void operator delete(void *anAddress)
{
if (anAddress) Standard::Free((Standard_Address&)anAddress);
}
//! Constructs a framework for converting the geometry of a <br>
//! shape into NURBS geometry. Use the function Perform <br>
//! to define the shape to convert. <br>
Standard_EXPORT BRepBuilderAPI_NurbsConvert_21423();
//! Builds a new shape by converting the geometry of the <br>
//! shape S into NURBS geometry. Specifically, all curves <br>
//! supporting edges of S are converted into BSpline <br>
//! curves, and all surfaces supporting its faces are <br>
//! converted into BSpline surfaces. <br>
//! Use the function Shape to access the new shape. <br>
//! Note: the constructed framework can be reused to <br>
//! convert other shapes. You specify these with the <br>
//! function Perform. <br>
Standard_EXPORT BRepBuilderAPI_NurbsConvert_21423(const TopoDS_Shape& S,const Standard_Boolean Copy = Standard_False);
//! Builds a new shape by converting the geometry of the <br>
//! shape S into NURBS geometry. <br>
//! Specifically, all curves supporting edges of S are <br>
//! converted into BSpline curves, and all surfaces <br>
//! supporting its faces are converted into BSpline surfaces. <br>
//! Use the function Shape to access the new shape. <br>
//! Note: this framework can be reused to convert other <br>
//! shapes: you specify them by calling the function Perform again. <br>
Standard_EXPORT void Perform(const TopoDS_Shape& S,const Standard_Boolean Copy = Standard_False) ;
protected:
private:
};
// other Inline functions and methods (like "C++: function call" methods)
#endif

View File

@ -1,539 +0,0 @@
// File: BRepTools_Modifier_21423.cxx
// Created: Thu Aug 25 10:48:00 1994
// Author: Jacques GOUSSARD
// <jag@ecolox>
// IFV 04.06.99 - PRO18974 - processing of INTERNAL shapes.
#include <BRepTools_Modifier_21423.hxx>
//#include <Standard_NoSuchObject.hxx>
#include <BRepTools_Modification.hxx>
#include <TopoDS_Iterator.hxx>
#include <TopoDS_Vertex.hxx>
#include <TopoDS_Edge.hxx>
#include <TopoDS_Face.hxx>
#include <TopoDS_Shape.hxx>
#include <TopExp_Explorer.hxx>
#include <TopTools_DataMapIteratorOfDataMapOfShapeShape.hxx>
#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
#include <TopTools_ListOfShape.hxx>
#include <TopTools_ListIteratorOfListOfShape.hxx>
#include <TColStd_ListOfTransient.hxx>
#include <TColStd_ListIteratorOfListOfTransient.hxx>
#if 0
#include <Poly_Triangulation.hxx>
#include <Poly_Polygon3D.hxx>
#include <BRepMesh_IncrementalMesh.hxx>
#endif
#include <Geom2d_Line.hxx>
#include <BRep_Builder.hxx>
#include <BRep_Tool.hxx>
#include <TopoDS.hxx>
#include <BRepTools.hxx>
#include <TopAbs.hxx>
#include <TopExp.hxx>
#include <gp_Pnt.hxx>
#include <gp.hxx>
#include <Standard_NullObject.hxx>
#include <gp_Trsf.hxx>
#include <BRepTools_TrsfModification.hxx>
//=======================================================================
//function : BRepTools_Modifier_21423
//purpose :
//=======================================================================
BRepTools_Modifier_21423::BRepTools_Modifier_21423 ():myDone(Standard_False)
{}
//=======================================================================
//function : BRepTools_Modifier_21423
//purpose :
//=======================================================================
BRepTools_Modifier_21423::BRepTools_Modifier_21423 (const TopoDS_Shape& S) :
myShape(S),myDone(Standard_False)
{
myMap.Clear();
Put(S);
}
//=======================================================================
//function : BRepTools_Modifier_21423
//purpose :
//=======================================================================
BRepTools_Modifier_21423::BRepTools_Modifier_21423
(const TopoDS_Shape& S,
const Handle(BRepTools_Modification)& M) : myShape(S),myDone(Standard_False)
{
myMap.Clear();
Put(S);
Perform(M);
}
//=======================================================================
//function : Init
//purpose :
//=======================================================================
void BRepTools_Modifier_21423::Init(const TopoDS_Shape& S)
{
myShape = S;
myDone = Standard_False;
myMap.Clear();
Put(S);
}
//=======================================================================
//function : Perform
//purpose :
//=======================================================================
void BRepTools_Modifier_21423::Perform(const Handle(BRepTools_Modification)& M)
{
if (myShape.IsNull()) {
Standard_NullObject::Raise();
}
TopTools_DataMapIteratorOfDataMapOfShapeShape theIter(myMap);
// Set to Null the value of shapes, in case when another modification is applied to the start shape.
if (!theIter.Value().IsNull()) {
while (theIter.More()) {
myMap(theIter.Value()).Nullify();
theIter.Next();
}
theIter.Reset();
}
/*
while (theIter.More()) {
Rebuild(theIter.Key(),M);
theIter.Next();
}
*/
Rebuild(myShape, M, 0.);
if (myShape.ShapeType() == TopAbs_FACE) {
if (myShape.Orientation() == TopAbs_REVERSED) {
myMap(myShape).Reverse();
}
else{
myMap(myShape).Orientation(myShape.Orientation());
}
}
else {
myMap(myShape).Orientation(myShape.Orientation());
}
// Update the continuities
TopTools_IndexedDataMapOfShapeListOfShape theEFMap;
TopExp::MapShapesAndAncestors(myShape,TopAbs_EDGE,TopAbs_FACE,theEFMap);
BRep_Builder B;
/*
Standard_Boolean RecomputeTriangles = Standard_False;
Standard_Real MaxDeflection = RealFirst();
Handle(Poly_Triangulation) Tr;
Handle(Poly_Polygon3D) Po;
TopLoc_Location Loc;
*/
while (theIter.More()) {
const TopoDS_Shape& S = theIter.Key();
/*
if (S.ShapeType() == TopAbs_FACE && !S.IsSame(theIter.Value())) {
Tr = BRep_Tool::Triangulation(TopoDS::Face(S),Loc);
if (!Tr.IsNull()) {
RecomputeTriangles = Standard_True;
MaxDeflection = Max(MaxDeflection,Tr->Deflection());
}
}
else */ if (S.ShapeType() == TopAbs_EDGE && !S.IsSame(theIter.Value())) {
const TopoDS_Edge& edg = TopoDS::Edge(S);
/*
Po = BRep_Tool::Polygon3D(edg,Loc);
if (!Po.IsNull()) {
RecomputeTriangles = Standard_True;
MaxDeflection = Max(MaxDeflection,Po->Deflection());
}
*/
TopTools_ListIteratorOfListOfShape it;
it.Initialize(theEFMap.FindFromKey(edg));
TopoDS_Face F1,F2;
while (it.More() && F2.IsNull()) {
if (F1.IsNull()) {
F1 = TopoDS::Face(it.Value());
}
else {
F2 = TopoDS::Face(it.Value());
}
it.Next();
}
if (!F2.IsNull()) {
const TopoDS_Edge& newedg = TopoDS::Edge(myMap(edg));
const TopoDS_Face& newf1 = TopoDS::Face(myMap(F1));
const TopoDS_Face& newf2 = TopoDS::Face(myMap(F2));
GeomAbs_Shape Newcont = M->Continuity(edg,F1,F2,newedg,newf1,newf2);
if (Newcont > GeomAbs_C0) {
B.Continuity(newedg,newf1,newf2,Newcont);
}
}
}
theIter.Next();
}
/*
if (RecomputeTriangles) {
BRepMesh_IncrementalMesh(myMap(myShape),MaxDeflection);
}
*/
myDone = Standard_True;
}
//=======================================================================
//function : Put
//purpose :
//=======================================================================
void BRepTools_Modifier_21423::Put(const TopoDS_Shape& S)
{
if (!myMap.IsBound(S)) {
myMap.Bind(S,TopoDS_Shape());
for(TopoDS_Iterator theIterator(S,Standard_False);theIterator.More();theIterator.Next()) {
Put(theIterator.Value());
}
}
}
//=======================================================================
//function : Rebuild
//purpose :
//=======================================================================
Standard_Boolean BRepTools_Modifier_21423::Rebuild
(const TopoDS_Shape& S,
const Handle(BRepTools_Modification)& M,
const Standard_Real Tol)
{
TopoDS_Shape& result = myMap(S);
// if (!result.IsNull()) return ! S.IsEqual(result);
if (!result.IsNull()) return ! S.IsSame(result);
Standard_Boolean rebuild = Standard_False, RevWires = Standard_False;
TopAbs_Orientation ResOr = TopAbs_FORWARD;
BRep_Builder B;
Standard_Real tol = Tol;
Standard_Boolean No3DCurve = Standard_False; // en fait, si on n`a pas de
//modif geometry 3d , it is necessary to test the existence of a curve 3d.
// new geometry ?
TopAbs_ShapeEnum ts = S.ShapeType();
switch (ts) {
case TopAbs_FACE:
{
Standard_Boolean RevFace;
Handle(Geom_Surface) surface;
TopLoc_Location location;
rebuild = M->NewSurface(TopoDS::Face(S),surface,location,tol,
RevWires,RevFace);
tol = Max(Tol,tol); //OCC217
if (rebuild) {
B.MakeFace(TopoDS::Face(result),surface,
location.Predivided(S.Location()),tol);
result.Location(S.Location());
// result.Orientation(S.Orientation());
if (RevFace) {
ResOr = TopAbs_REVERSED;
}
// set specifics flags of a Face
B.NaturalRestriction(TopoDS::Face(result),
BRep_Tool::NaturalRestriction(TopoDS::Face(S)));
}
}
break;
case TopAbs_EDGE:
{
Handle(Geom_Curve) curve;
TopLoc_Location location;
rebuild = M->NewCurve(TopoDS::Edge(S),curve,location,tol);
tol = Max(Tol,tol); //OCC217
if (rebuild) {
if (curve.IsNull()) {
B.MakeEdge(TopoDS::Edge(result));
B.Degenerated(TopoDS::Edge(result),
BRep_Tool::Degenerated(TopoDS::Edge(S)));
B.UpdateEdge(TopoDS::Edge(result),tol); //OCC217
No3DCurve = Standard_True;
}
else {
B.MakeEdge(TopoDS::Edge(result),curve,
location.Predivided(S.Location()),tol);
No3DCurve = Standard_False;
}
result.Location(S.Location());
// result.Orientation(S.Orientation());
// set specifics flags of an Edge
B.SameParameter(TopoDS::Edge(result),
BRep_Tool::SameParameter(TopoDS::Edge(S)));
B.SameRange(TopoDS::Edge(result),
BRep_Tool::SameRange(TopoDS::Edge(S)));
}
}
break;
case TopAbs_VERTEX:
{
gp_Pnt vtx;
rebuild = M->NewPoint(TopoDS::Vertex(S),vtx,tol);
tol = Max(Tol, tol); //OCC217
if (rebuild) {
B.MakeVertex(TopoDS::Vertex(result),vtx,tol);
}
}
break;
default:
{
}
}
// rebuild sub-shapes and test new sub-shape ?
Standard_Boolean newgeom = rebuild;
TopoDS_Iterator it;
for (it.Initialize(S, Standard_False); it.More(); it.Next()) {
// always call Rebuild
Standard_Boolean subrebuilt = Rebuild(it.Value(), M, tol);
rebuild = subrebuilt || rebuild ;
}
// make an empty copy
if (rebuild && !newgeom) {
result = S.EmptyCopied();
result.Orientation(TopAbs_FORWARD);
}
// copy the sub-elements
if (rebuild) {
TopAbs_Orientation orient;
for (it.Initialize(S,Standard_False); it.More(); it.Next()) {
orient = it.Value().Orientation();
if (RevWires || myMap(it.Value()).Orientation() == TopAbs_REVERSED) {
orient = TopAbs::Reverse(orient);
}
B.Add(result,myMap(it.Value()).Oriented(orient));
}
if (ts == TopAbs_FACE) {
// pcurves
Handle(Geom2d_Curve) curve2d; //,curve2d1;
TopoDS_Face face = TopoDS::Face(S);
TopAbs_Orientation fcor = face.Orientation();
if(fcor != TopAbs_REVERSED) fcor = TopAbs_FORWARD;
TopExp_Explorer ex(face.Oriented(fcor),TopAbs_EDGE);
for (;ex.More(); ex.Next())
{
const TopoDS_Edge& edge = TopoDS::Edge(ex.Current());
if (M->NewCurve2d(edge, face,TopoDS::Edge(myMap(ex.Current())),
TopoDS::Face(result),curve2d, tol))
{
tol = Max(Tol,tol); //OCC217
// rem dub 16/09/97 : Make constant topology or not make at all.
// Do not make if CopySurface = 1
// Atention, TRUE sewing edges (RealyClosed)
// stay even if CopySurface is true.
// check that edge contains two pcurves on this surface:
// either it is true seam on the current face, or belongs to two faces
// built on that same surface (see OCC21772)
// Note: this check could be made separate method in BRepTools
Standard_Boolean isClosed = Standard_False;
if(BRep_Tool::IsClosed(edge,face))
{
isClosed = ( ! newgeom || BRepTools::IsReallyClosed(edge,face) );
if ( ! isClosed )
{
TopLoc_Location aLoc;
TopoDS_Shape resface = (myMap.IsBound(face) ? myMap(face) : face);
if(resface.IsNull())
resface = face;
Handle(Geom_Surface) aSurf = BRep_Tool::Surface(TopoDS::Face(resface), aLoc);
// check other faces sharing the same surface
TopExp_Explorer aExpF(myShape,TopAbs_FACE);
for( ; aExpF.More() && !isClosed; aExpF.Next())
{
TopoDS_Face anOther = TopoDS::Face(aExpF.Current());
if(anOther.IsSame(face))
continue;
TopoDS_Shape resface2 = (myMap.IsBound(anOther) ? myMap(anOther) : anOther);
if(resface2.IsNull())
resface2 = anOther;
TopLoc_Location anOtherLoc;
Handle(Geom_Surface) anOtherSurf =
BRep_Tool::Surface(TopoDS::Face(resface2), anOtherLoc);
if ( aSurf == anOtherSurf && aLoc.IsEqual (anOtherLoc) )
{
TopExp_Explorer aExpE(anOther,TopAbs_EDGE);
for( ; aExpE.More() && !isClosed ; aExpE.Next())
isClosed = edge.IsSame(aExpE.Current());
}
}
}
}
if (isClosed)
{
TopoDS_Edge CurE = TopoDS::Edge(myMap(edge));
TopoDS_Shape aLocalResult = result;
aLocalResult.Orientation(TopAbs_FORWARD);
TopoDS_Face CurF = TopoDS::Face(aLocalResult);
Handle(Geom2d_Curve) curve2d1, currcurv;
Standard_Real f,l;
if ((!RevWires && fcor != edge.Orientation()) ||
( RevWires && fcor == edge.Orientation())) {
CurE.Orientation(TopAbs_FORWARD);
curve2d1 = BRep_Tool::CurveOnSurface(CurE,CurF,f,l);
if (curve2d1.IsNull()) curve2d1 = new Geom2d_Line(gp::OX2d());
B.UpdateEdge (CurE, curve2d1, curve2d, CurF, tol);
}
else {
CurE.Orientation(TopAbs_REVERSED);
curve2d1 = BRep_Tool::CurveOnSurface(CurE,CurF,f,l);
if (curve2d1.IsNull()) curve2d1 = new Geom2d_Line(gp::OX2d());
B.UpdateEdge (CurE, curve2d, curve2d1, CurF, tol);
}
currcurv = BRep_Tool::CurveOnSurface(edge,face,f,l);
B.Range(edge,f,l);
}
else {
B.UpdateEdge(TopoDS::Edge(myMap(ex.Current())),
curve2d,
TopoDS::Face(result), tol);
}
TopLoc_Location theLoc;
Standard_Real theF,theL;
Handle(Geom_Curve) C3D =
BRep_Tool::Curve(TopoDS::Edge(myMap(ex.Current())),
theLoc,theF,theL);
if (C3D.IsNull()) { // Update vertices
Standard_Real param;
TopExp_Explorer ex2(edge,TopAbs_VERTEX);
while (ex2.More()) {
const TopoDS_Vertex& vertex = TopoDS::Vertex(ex2.Current());
if (!M->NewParameter(vertex, edge, param, tol)) {
//tol = BRep_Tool::Tolerance(vertex);
tol = Max(Tol, BRep_Tool::Tolerance(vertex)); //OCC217
param = BRep_Tool::Parameter(vertex,edge);
}
TopAbs_Orientation vtxrelat = vertex.Orientation();
if (edge.Orientation() == TopAbs_REVERSED) {
// Update considere l'edge FORWARD, et le vertex en relatif
vtxrelat= TopAbs::Reverse(vtxrelat);
}
// if (myMap(edge).Orientation() == TopAbs_REVERSED) {
// vtxrelat= TopAbs::Reverse(vtxrelat);
// }
TopoDS_Vertex aLocalVertex = TopoDS::Vertex(myMap(vertex));
aLocalVertex.Orientation(vtxrelat);
// B.UpdateVertex(TopoDS::Vertex
// (myMap(vertex).Oriented(vtxrelat)),
B.UpdateVertex(aLocalVertex,
param,
TopoDS::Edge(myMap(edge)),
tol);
ex2.Next();
}
}
}
}
}
// else if (ts == TopAbs_EDGE) {
else if (ts == TopAbs_EDGE && !No3DCurve) {
// Vertices
Standard_Real param;
const TopoDS_Edge& edge = TopoDS::Edge(S);
TopAbs_Orientation edor = edge.Orientation();
if(edor != TopAbs_REVERSED) edor = TopAbs_FORWARD;
TopExp_Explorer ex(edge.Oriented(edor), TopAbs_VERTEX);
while (ex.More()) {
const TopoDS_Vertex& vertex = TopoDS::Vertex(ex.Current());
if (!M->NewParameter(vertex, edge, param, tol)) {
//tol = BRep_Tool::Tolerance(vertex);
tol = Max(Tol, BRep_Tool::Tolerance(vertex)); //OCC217
param = BRep_Tool::Parameter(vertex,edge);
}
TopAbs_Orientation vtxrelat = vertex.Orientation();
if (edor == TopAbs_REVERSED) {
// Update considere l'edge FORWARD, et le vertex en relatif
vtxrelat= TopAbs::Reverse(vtxrelat);
}
// if (result.Orientation() == TopAbs_REVERSED) {
// vtxrelat= TopAbs::Reverse(vtxrelat);
// }
TopoDS_Vertex aLocalVertex = TopoDS::Vertex(myMap(vertex));
aLocalVertex.Orientation(vtxrelat);
// B.UpdateVertex(TopoDS::Vertex
// (myMap(vertex).Oriented(vtxrelat)),
B.UpdateVertex(aLocalVertex,
param,
TopoDS::Edge(result),
tol);
ex.Next();
}
}
// update flags
result.Orientable(S.Orientable());
result.Closed(S.Closed());
result.Infinite(S.Infinite());
}
else
result = S;
// Set flag of the shape.
result.Orientation(ResOr);
result.Free (S.Free());
result.Modified (S.Modified());
result.Checked (S.Checked());
result.Orientable(S.Orientable());
result.Closed (S.Closed());
result.Infinite (S.Infinite());
result.Convex (S.Convex());
return rebuild;
}

View File

@ -1,118 +0,0 @@
// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to
// this header file considered to be the "object code" form of the original source.
#ifndef _BRepTools_Modifier_21423_HeaderFile
#define _BRepTools_Modifier_21423_HeaderFile
#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_Macro_HeaderFile
#include <Standard_Macro.hxx>
#endif
#ifndef _TopTools_DataMapOfShapeShape_HeaderFile
#include <TopTools_DataMapOfShapeShape.hxx>
#endif
#ifndef _TopoDS_Shape_HeaderFile
#include <TopoDS_Shape.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _Handle_BRepTools_Modification_HeaderFile
#include <Handle_BRepTools_Modification.hxx>
#endif
#include <Standard_NoSuchObject.hxx>
class Standard_NullObject;
class TopoDS_Shape;
class BRepTools_Modification;
class BRepTools_Modifier_21423 {
public:
void* operator new(size_t,void* anAddress)
{
return anAddress;
}
void* operator new(size_t size)
{
return Standard::Allocate(size);
}
void operator delete(void *anAddress)
{
if (anAddress) Standard::Free((Standard_Address&)anAddress);
}
//! Creates an empty Modifier. <br>
Standard_EXPORT BRepTools_Modifier_21423();
//! Creates a modifier on the shape <S>. <br>
Standard_EXPORT BRepTools_Modifier_21423(const TopoDS_Shape& S);
//! Creates a modifier on the shape <S>, and performs <br>
//! the modifications described by <M>. <br>
Standard_EXPORT BRepTools_Modifier_21423(const TopoDS_Shape& S,const Handle(BRepTools_Modification)& M);
//! Initializes the modifier with the shape <S>. <br>
Standard_EXPORT void Init(const TopoDS_Shape& S) ;
//! Performs the modifications described by <M>. <br>
Standard_EXPORT void Perform(const Handle(BRepTools_Modification)& M) ;
//! Returns Standard_True if the modification has <br>
//! been computed successfully. <br>
//! <br>
Standard_Boolean IsDone() const;
//! Returns the modified shape corresponding to <S>. <br>
const TopoDS_Shape& ModifiedShape(const TopoDS_Shape& S) const;
protected:
private:
Standard_EXPORT void Put(const TopoDS_Shape& S) ;
Standard_EXPORT Standard_Boolean Rebuild (const TopoDS_Shape& S,
const Handle(BRepTools_Modification)& M,
const Standard_Real Tolerance);
TopTools_DataMapOfShapeShape myMap;
TopoDS_Shape myShape;
Standard_Boolean myDone;
};
//=======================================================================
//function : ModifiedShape
//purpose :
//=======================================================================
inline const TopoDS_Shape& BRepTools_Modifier_21423::ModifiedShape
(const TopoDS_Shape& S) const
{
if (!myMap.IsBound(S)) { Standard_NoSuchObject::Raise();}
return myMap(S);
}
//=======================================================================
//function : IsDone
//purpose :
//=======================================================================
inline Standard_Boolean BRepTools_Modifier_21423::IsDone () const
{
return myDone;
}
// other Inline functions and methods (like "C++: function call" methods)
#endif

View File

@ -1,662 +0,0 @@
// File: BRepTools_NurbsConvertModification_21423.cxx
// Created: Fri Jul 12 10:16:32 1996
// Author: Stagiaire Mary FABIEN
// <fbi@animax.paris1.matra-dtv.fr>
#include <BRepTools_NurbsConvertModification_21423.hxx>
#include <TopoDS_Edge.hxx>
#include <TopoDS_Face.hxx>
#include <TopoDS_Vertex.hxx>
#include <TopLoc_Location.hxx>
#include <Geom_Curve.hxx>
#include <Geom_Surface.hxx>
#include <Geom2d_Curve.hxx>
#include <gp_Pnt.hxx>
#ifndef _Standard_Type_HeaderFile
#include <Standard_Type.hxx>
#endif
IMPLEMENT_STANDARD_TYPE(BRepTools_NurbsConvertModification_21423)
IMPLEMENT_STANDARD_SUPERTYPE_ARRAY()
STANDARD_TYPE(BRepTools_Modification),
STANDARD_TYPE(MMgt_TShared),
STANDARD_TYPE(Standard_Transient),
IMPLEMENT_STANDARD_SUPERTYPE_ARRAY_END()
IMPLEMENT_STANDARD_TYPE_END(BRepTools_NurbsConvertModification_21423)
IMPLEMENT_DOWNCAST(BRepTools_NurbsConvertModification_21423,Standard_Transient)
IMPLEMENT_STANDARD_RTTI(BRepTools_NurbsConvertModification_21423)
#include <BRepTools.hxx>
#include <Standard_NoSuchObject.hxx>
#include <Geom_TrimmedCurve.hxx>
#include <Geom2d_TrimmedCurve.hxx>
#include <Geom_RectangularTrimmedSurface.hxx>
#include <Geom_BSplineSurface.hxx>
#include <Geom_BSplineCurve.hxx>
#include <Geom_BezierSurface.hxx>
#include <Geom_BezierCurve.hxx>
#include <Geom2d_BSplineCurve.hxx>
#include <GeomConvert.hxx>
#include <Geom2dConvert.hxx>
#include <Geom_Plane.hxx>
#include <Geom_Line.hxx>
#include <Geom2dAdaptor_Curve.hxx>
#include <GeomAdaptor_Curve.hxx>
#include <GeomAdaptor_Surface.hxx>
#include <Geom2dAdaptor_HCurve.hxx>
#include <Geom2dAdaptor_HCurve.hxx>
#include <GeomAdaptor_HCurve.hxx>
#include <GeomAdaptor_HSurface.hxx>
#include <BSplCLib.hxx>
#include <Approx_SameParameter.hxx>
#include <BRep_Tool.hxx>
#include <Extrema_LocateExtPC.hxx>
#include <OSD_Chronometer.hxx>
#include <gp_GTrsf2d.hxx>
#include <gp_TrsfForm.hxx>
#include <TopAbs.hxx>
#include <TopoDS.hxx>
#include <TopTools_ListIteratorOfListOfShape.hxx>
#include <TColStd_ListIteratorOfListOfTransient.hxx>
#include <ProjLib_ComputeApprox.hxx>
#include <ProjLib_ComputeApproxOnPolarSurface.hxx>
#include <ElSLib.hxx>
#include <BSplCLib.hxx>
#include <Geom_Circle.hxx>
#include <Geom_Ellipse.hxx>
#include <Geom_CylindricalSurface.hxx>
#include <TColStd_Array1OfReal.hxx>
#include <BRep_TEdge.hxx>
#include <BRep_GCurve.hxx>
#include <BRep_ListIteratorOfListOfCurveRepresentation.hxx>
#include <BRepAdaptor_Surface.hxx>
static void GeomLib_ChangeUBounds(Handle(Geom_BSplineSurface)& aSurface,
const Standard_Real newU1,
const Standard_Real newU2)
{
TColStd_Array1OfReal knots(1,aSurface->NbUKnots()) ;
aSurface->UKnots(knots) ;
BSplCLib::Reparametrize(newU1,
newU2,
knots) ;
aSurface->SetUKnots(knots) ;
}
static void GeomLib_ChangeVBounds(Handle(Geom_BSplineSurface)& aSurface,
const Standard_Real newV1,
const Standard_Real newV2)
{
TColStd_Array1OfReal knots(1,aSurface->NbVKnots()) ;
aSurface->VKnots(knots) ;
BSplCLib::Reparametrize(newV1,
newV2,
knots) ;
aSurface->SetVKnots(knots) ;
}
//=======================================================================
//function : BRepTools_NurbsConvertModification_21423
//purpose :
//=======================================================================
BRepTools_NurbsConvertModification_21423::BRepTools_NurbsConvertModification_21423()
{
}
//=======================================================================
//function : NewSurface
//purpose :
//=======================================================================
Standard_Boolean BRepTools_NurbsConvertModification_21423::NewSurface
(const TopoDS_Face& F,
Handle(Geom_Surface)& S,
TopLoc_Location& L,
Standard_Real& Tol,
Standard_Boolean& RevWires,
Standard_Boolean& RevFace)
{
Standard_Real U1, U2, curvU1, curvU2, surfU1, surfU2, UTol;
Standard_Real V1, V2, curvV1, curvV2, surfV1, surfV2, VTol;
RevWires = Standard_False;
RevFace = Standard_False;
Handle(Geom_Surface) SS = BRep_Tool::Surface(F,L);
Handle(Standard_Type) TheTypeSS = SS->DynamicType();
if ((TheTypeSS == STANDARD_TYPE(Geom_BSplineSurface)) ||
(TheTypeSS == STANDARD_TYPE(Geom_BezierSurface))) {
return Standard_False;
}
S = SS;
BRepTools::UVBounds(F,curvU1,curvU2,curvV1,curvV2);
Tol = BRep_Tool::Tolerance(F);
Standard_Real TolPar = 0.1*Tol;
Standard_Boolean IsUp = S->IsUPeriodic(), IsVp = S->IsVPeriodic();
//OCC466(apo)->
U1 = curvU1; U2 = curvU2;
V1 = curvV1; V2 = curvV2;
SS->Bounds(surfU1,surfU2,surfV1,surfV2);
if(!IsUp){
U1 = Max(surfU1,curvU1);
U2 = Min(surfU2,curvU2);
}
if(!IsVp){
V1 = Max(surfV1,curvV1);
V2 = Min(surfV2,curvV2);
}
//<-OCC466(apo)
if(IsUp && IsVp) {
Standard_Real dU = Abs(U2 - U1), dV = Abs(V2 - V1);
Standard_Real Up = S->UPeriod(), Vp = S->VPeriod();
if(Abs(dU - Up) <= TolPar && U2 <= Up) {
if(Abs(dV - Vp) <= TolPar && V2 <= Vp) { }
else {
SS = new Geom_RectangularTrimmedSurface(S, V1+1e-9, V2-1e-9, Standard_False);
}
}
else {
if(Abs(dV - Vp) <= TolPar && V2 <= Vp)
SS = new Geom_RectangularTrimmedSurface(S, U1+1e-9, U2-1e-9, Standard_True);
else
SS = new Geom_RectangularTrimmedSurface(S, U1+1e-9, U2-1e-9, V1+1e-9, V2-1e-9);
}
}
if(IsUp && !IsVp) {
Standard_Real dU = Abs(U2 - U1);
Standard_Real Up = S->UPeriod();
if(Abs(dU - Up) <= TolPar && U2 <= Up)
SS = new Geom_RectangularTrimmedSurface(S, V1+1e-9, V2-1e-9, Standard_False);
else
SS = new Geom_RectangularTrimmedSurface(S, U1+1e-9, U2-1e-9, V1+1e-9, V2-1e-9);
}
if(!IsUp && IsVp) {
Standard_Real dV = Abs(V2 - V1);
Standard_Real Vp = S->VPeriod();
if(Abs(dV - Vp) <= TolPar && V2 <= Vp)
SS = new Geom_RectangularTrimmedSurface(S, U1+1e-9, U2-1e-9, Standard_True);
else
SS = new Geom_RectangularTrimmedSurface(S, U1+1e-9, U2-1e-9, V1+1e-9, V2-1e-9);
}
if(!IsUp && !IsVp) {
SS = new Geom_RectangularTrimmedSurface(S, U1+1e-9, U2-1e-9, V1+1e-9, V2-1e-9);
}
SS->Bounds(surfU1,surfU2,surfV1,surfV2) ;
S = GeomConvert::SurfaceToBSplineSurface(SS);
Handle(Geom_BSplineSurface) BS = Handle(Geom_BSplineSurface)::DownCast(S) ;
BS->Resolution(Tol, UTol, VTol) ;
//
// on recadre les bornes de S sinon les anciennes PCurves sont aux fraises
//
if (Abs(curvU1-surfU1) > UTol && !BS->IsUPeriodic()) {
GeomLib_ChangeUBounds(BS, U1,U2) ;
}
if (Abs(curvV1-surfV1) > VTol && !BS->IsVPeriodic()) {
GeomLib_ChangeVBounds(BS, V1, V2) ;
}
////modified by jgv, 17.11.11 for SALOME only, bug 21423////
BRepAdaptor_Surface BAsurf(F);
if (BAsurf.GetType() == GeomAbs_Sphere)
{ //from OCC217
Standard_Real dTol = 1e-9/Sqrt(UTol*UTol+VTol*VTol)*2.0;
Tol *= Max(dTol,1.0);
}
////////////////////////////////////////////////////////////
return Standard_True;
}
static Standard_Boolean IsConvert(const TopoDS_Edge& E)
{
Standard_Boolean isConvert = Standard_False;
Handle(BRep_TEdge)& TE = *((Handle(BRep_TEdge)*)&E.TShape());
// iterate on pcurves
BRep_ListIteratorOfListOfCurveRepresentation itcr(TE->Curves());
for ( ; itcr.More() && !isConvert; itcr.Next() ) {
Handle(BRep_GCurve) GC = Handle(BRep_GCurve)::DownCast(itcr.Value());
if ( GC.IsNull() || ! GC->IsCurveOnSurface() ) continue;
Handle(Geom_Surface) aSurface = GC->Surface();
Handle(Geom2d_Curve) aCurve2d = GC->PCurve();
isConvert =((!aSurface->IsKind(STANDARD_TYPE(Geom_BSplineSurface)) &&
!aSurface->IsKind(STANDARD_TYPE(Geom_BezierSurface))) ||
(!aCurve2d->IsKind(STANDARD_TYPE(Geom2d_BSplineCurve)) &&
!aCurve2d->IsKind(STANDARD_TYPE(Geom2d_BezierCurve))));
}
return isConvert;
}
//=======================================================================
//function : NewCurve
//purpose :
//=======================================================================
Standard_Boolean BRepTools_NurbsConvertModification_21423::NewCurve
(const TopoDS_Edge& E,
Handle(Geom_Curve)& C,
TopLoc_Location& L,
Standard_Real& Tol)
{
Tol = BRep_Tool::Tolerance(E);
if(BRep_Tool::Degenerated(E)) {
C.Nullify();
L.Identity();
return Standard_True;
}
Standard_Real f, l;
Handle(Geom_Curve) Caux = BRep_Tool::Curve(E, L, f, l);
if ( Caux.IsNull()) {
L.Identity();
return Standard_False;
}
Handle(Standard_Type) TheType = Caux->DynamicType();
if ((TheType == STANDARD_TYPE(Geom_BSplineCurve)) ||
(TheType == STANDARD_TYPE(Geom_BezierCurve))) {
if(IsConvert(E)) {
C = Handle(Geom_Curve)::DownCast(Caux->Copy());
return Standard_True;
}
return Standard_False;
}
C = Caux;
Standard_Real TolPar = Tol *.1;
if(C->IsPeriodic()) {
Standard_Real p = C->Period();
Standard_Real d = Abs(l - f);
if(Abs(d - p) <= TolPar && l <= p) {}
else
C = new Geom_TrimmedCurve(C, f, l);
}
else
C = new Geom_TrimmedCurve(C, f, l);
//modif WOK++ portage hp (fbi du 14/03/97)
// gp_Trsf trsf(L);
// gp_Trsf trsf = L.Transformation();
// C = GeomConvert::CurveToBSplineCurve(C,Convert_QuasiAngular);
C = GeomConvert::CurveToBSplineCurve(C);
Standard_Real fnew = C->FirstParameter(), lnew = C->LastParameter(), UTol;
Handle(Geom_BSplineCurve) BC = Handle(Geom_BSplineCurve)::DownCast(C) ;
if(!BC->IsPeriodic()) {
BC->Resolution(Tol, UTol) ;
if(Abs(f - fnew) > UTol || Abs(l - lnew) > UTol) {
TColStd_Array1OfReal knots(1,BC->NbKnots()) ;
BC->Knots(knots) ;
BSplCLib::Reparametrize(f, l, knots) ;
BC->SetKnots(knots) ;
}
}
if(!myMap.Contains(Caux)) {
myMap.Add(Caux,C);
}
return Standard_True ;
}
//=======================================================================
//function : NewPoint
//purpose :
//=======================================================================
Standard_Boolean BRepTools_NurbsConvertModification_21423::NewPoint
//(const TopoDS_Vertex& V,
(const TopoDS_Vertex& ,
// gp_Pnt& P,
gp_Pnt& ,
// Standard_Real& Tol)
Standard_Real& )
{
return Standard_False;
}
//=======================================================================
//function : NewCurve2d
//purpose :
//=======================================================================
Standard_Boolean BRepTools_NurbsConvertModification_21423::NewCurve2d
(const TopoDS_Edge& E,
const TopoDS_Face& F,
const TopoDS_Edge& newE,
const TopoDS_Face& newF,
Handle(Geom2d_Curve)& Curve2d,
Standard_Real& Tol)
{
////modified by jgv, 17.11.11 for SALOME only, bug 21423////
Tol = BRep_Tool::Tolerance(E);
BRepAdaptor_Surface BAsurf(F);
if (BAsurf.GetType() == GeomAbs_Sphere)
Tol = Max(Max(BRep_Tool::Tolerance(E),BRep_Tool::Tolerance(F)),
Max(BRep_Tool::Tolerance(newE),BRep_Tool::Tolerance(newF))
); //from OCC217
////////////////////////////////////////////////////////////
Standard_Real f2d,l2d;
Handle(Geom2d_Curve) C2d = BRep_Tool::CurveOnSurface(E,F,f2d,l2d);
Standard_Real f3d,l3d;
TopLoc_Location Loc;
Handle(Geom_Curve) C3d = BRep_Tool::Curve(E, Loc, f3d,l3d);
Standard_Boolean isConvert2d = ((!C3d.IsNull() && !C3d->IsKind(STANDARD_TYPE(Geom_BSplineCurve)) &&
!C3d->IsKind(STANDARD_TYPE(Geom_BezierCurve))) ||
IsConvert(E));
if(BRep_Tool::Degenerated(E)) {
//Curve2d = C2d;
if(!C2d->IsKind(STANDARD_TYPE(Geom2d_TrimmedCurve)))
{
Handle(Geom2d_TrimmedCurve) aTrimC = new Geom2d_TrimmedCurve(C2d,f2d,l2d);
C2d = aTrimC;
}
Curve2d = Geom2dConvert::CurveToBSplineCurve(C2d);
return Standard_True;
}
if(!BRepTools::IsReallyClosed(E,F)) {
Handle(Standard_Type) TheTypeC2d = C2d->DynamicType();
if(TheTypeC2d == STANDARD_TYPE(Geom2d_TrimmedCurve)) {
Handle(Geom2d_TrimmedCurve) TC = Handle(Geom2d_TrimmedCurve)::DownCast(C2d);
C2d = TC->BasisCurve();
}
Standard_Real fc = C2d->FirstParameter(), lc = C2d->LastParameter();
if(!C2d->IsPeriodic()) {
if(fc - f2d > Precision::PConfusion()) f2d = fc;
if(l2d - lc > Precision::PConfusion()) l2d = lc;
}
C2d = new Geom2d_TrimmedCurve(C2d, f2d, l2d);
Geom2dAdaptor_Curve G2dAC(C2d, f2d, l2d);
Handle(Geom2dAdaptor_HCurve) G2dAHC = new Geom2dAdaptor_HCurve(G2dAC);
TopLoc_Location Loc;
Handle(Geom_Curve) C3d = BRep_Tool::Curve(E, Loc, f3d,l3d);
if(!newE.IsNull()) {
C3d = BRep_Tool::Curve(newE, f3d, l3d);
}
else {
C3d = BRep_Tool::Curve(E,f3d,l3d);
}
GeomAdaptor_Curve G3dAC(C3d, f3d, l3d);
Handle(GeomAdaptor_HCurve) G3dAHC = new GeomAdaptor_HCurve(G3dAC);
Standard_Real Uinf, Usup, Vinf, Vsup, u = 0, v = 0;
Handle(Geom_Surface) S = BRep_Tool::Surface(F);
Handle(Standard_Type) myT = S->DynamicType();
if(myT != STANDARD_TYPE(Geom_Plane)) {
if(newF.IsNull()) {
Handle(Standard_Type) st = C2d->DynamicType();
if ((st == STANDARD_TYPE(Geom2d_BSplineCurve)) ||
(st == STANDARD_TYPE(Geom2d_BezierCurve))) {
if(isConvert2d) {
Curve2d = Handle(Geom2d_Curve)::DownCast(C2d->Copy());
return Standard_True;
}
return Standard_False;
}
}
else {
S = BRep_Tool::Surface(newF);
}
S->Bounds(Uinf, Usup, Vinf, Vsup);
Uinf -= 1e-9; Usup += 1e-9; Vinf -= 1e-9; Vsup += 1e-9;
u = (Usup - Uinf)*0.1;
v = (Vsup - Vinf)*0.1;
if(S->IsUPeriodic()) {
Standard_Real uperiod = S->UPeriod();
if(uperiod < (Usup+2*u-Uinf)) {
if(uperiod <= (Usup-Uinf)) {
u = 0;
}
else {
u = (uperiod-(Usup-Uinf))*0.5;
}
}
}
if(S->IsVPeriodic()) {
Standard_Real vperiod = S->VPeriod();
if(vperiod < (Vsup+2*v-Vinf)) {
if(vperiod <= (Vsup-Vinf)) {
v = 0;
}
else {
v = (vperiod-(Vsup-Vinf))*0.5;
}
}
}
}
else {
S = BRep_Tool::Surface(F);// Si S est un plan, pas de changement de parametrisation
GeomAdaptor_Surface GAS(S);
Handle(GeomAdaptor_HSurface) GAHS = new GeomAdaptor_HSurface(GAS);
ProjLib_ComputeApprox ProjOnCurve(G3dAHC,GAHS,Tol);
if(ProjOnCurve.BSpline().IsNull()) {
Curve2d = Geom2dConvert::CurveToBSplineCurve(ProjOnCurve.Bezier());
return Standard_True;
}
Curve2d = ProjOnCurve.BSpline();
return Standard_True;
}
GeomAdaptor_Surface GAS(S,Uinf-u,Usup+u,Vinf-v,Vsup+v);
Handle(GeomAdaptor_HSurface) GAHS = new GeomAdaptor_HSurface(GAS);
ProjLib_ComputeApproxOnPolarSurface ProjOnCurve(G2dAHC,G3dAHC,GAHS,Tol);
if(ProjOnCurve.IsDone()) {
Curve2d = ProjOnCurve.BSpline();
return Standard_True;
}
else {
Curve2d = Geom2dConvert::CurveToBSplineCurve(C2d);
return Standard_True;
}
}
else {
TopTools_ListIteratorOfListOfShape itled;
TColStd_ListIteratorOfListOfTransient itlcu;
for (itled.Initialize(myled), itlcu.Initialize(mylcu);
itled.More(); // itlcu.More()
itled.Next(),itlcu.Next()) {
if (itled.Value().IsSame(E)) {
// deja traitee
break;
}
}
if (!itled.More()) { // on stocke l`edge et la curve2d
Handle(Geom2d_Curve) C2dBis;
Standard_Real f3d,l3d,f2dBis,l2dBis;
C2d = new Geom2d_TrimmedCurve(C2d, f2d, l2d);
Geom2dAdaptor_Curve G2dAC(C2d, f2d, l2d);
Handle(Geom2dAdaptor_HCurve) G2dAHC = new Geom2dAdaptor_HCurve(G2dAC);
TopoDS_Edge ERevers = E;
ERevers.Reverse();
// TopoDS_Edge ERevers = TopoDS::Edge(E.Reversed());
C2dBis = BRep_Tool::CurveOnSurface(ERevers,F,f2dBis,l2dBis);
Handle(Standard_Type) TheTypeC2dBis = C2dBis->DynamicType();
C2dBis = new Geom2d_TrimmedCurve(C2dBis,f2dBis, l2dBis);
Geom2dAdaptor_Curve G2dACBis(C2dBis, f2dBis, l2dBis);
Handle(Geom2dAdaptor_HCurve) G2dAHCBis = new Geom2dAdaptor_HCurve(G2dACBis);
TopLoc_Location Loc;
Handle(Geom_Curve) C3d = BRep_Tool::Curve(E, f3d,l3d);
if(C3d.IsNull()) {
if(isConvert2d) {
Curve2d = Handle(Geom2d_Curve)::DownCast(C2d->Copy());
return Standard_True;
}
return Standard_False;
}
if(!newE.IsNull()) {
C3d = BRep_Tool::Curve(newE, f3d,l3d);
}
GeomAdaptor_Curve G3dAC(C3d, f3d, l3d);
Handle(GeomAdaptor_HCurve) G3dAHC = new GeomAdaptor_HCurve(G3dAC);
Handle(Geom_Surface) S = BRep_Tool::Surface(F);
Handle(Standard_Type) myT = S->DynamicType();
if(newF.IsNull()) {
mylcu.Append(C2dBis);
Handle(Standard_Type) st = C2d->DynamicType();
if ((st == STANDARD_TYPE(Geom2d_BSplineCurve)) ||
(st == STANDARD_TYPE(Geom2d_BezierCurve))) {
if(isConvert2d) {
Curve2d = Handle(Geom2d_Curve)::DownCast(C2d->Copy());
return Standard_True;
}
return Standard_False;
}
}
else {
S = BRep_Tool::Surface(newF);// S est une BSplineSurface : pas besoin de la trimmed
}
Standard_Real Uinf, Usup, Vinf, Vsup, u = 0, v = 0;
S->Bounds(Uinf, Usup, Vinf, Vsup);
Uinf -= 1e-9; Usup += 1e-9; Vinf -= 1e-9; Vsup += 1e-9;
u = (Usup - Uinf)*0.1;
v = (Vsup - Vinf)*0.1;
if(S->IsUPeriodic()) {
Standard_Real uperiod = S->UPeriod();
if(uperiod < (Usup+2*u-Uinf))
if(uperiod <= (Usup-Uinf))
u = 0;
else
u = (uperiod-(Usup-Uinf))*0.5;
}
if(S->IsVPeriodic()) {
Standard_Real vperiod = S->VPeriod();
if(vperiod < (Vsup+2*v-Vinf))
if(vperiod <= (Vsup-Vinf))
v = 0;
else
v = (vperiod-(Vsup-Vinf))*0.5;
}
GeomAdaptor_Surface GAS(S, Uinf-u,Usup+u,Vinf-v,Vsup+v);
Handle(GeomAdaptor_HSurface) GAHS = new GeomAdaptor_HSurface(GAS);
myled.Append(E);
ProjLib_ComputeApproxOnPolarSurface
ProjOnCurve(G2dAHC,G2dAHCBis,G3dAHC,GAHS,Tol);
if(ProjOnCurve.IsDone()) {
Curve2d = ProjOnCurve.BSpline();
mylcu.Append(ProjOnCurve.Curve2d());
return Standard_True;
}
else {
Curve2d = Geom2dConvert::CurveToBSplineCurve(C2d);
mylcu.Append(C2dBis);
return Standard_True;
}
}
else { // on est au 2ieme tour
C2d = Handle(Geom2d_Curve)::DownCast(itlcu.Value());
Handle(Standard_Type) st = C2d->DynamicType();
if (!(st == STANDARD_TYPE(Geom2d_BSplineCurve)) &&
!(st == STANDARD_TYPE(Geom2d_BezierCurve))) {
return Standard_False;
}
Curve2d = Geom2dConvert::CurveToBSplineCurve(C2d);
return Standard_True;
}
}
Curve2d = C2d;
return Standard_True;
}
//=======================================================================
//function : NewParameter
//purpose :
//=======================================================================
Standard_Boolean BRepTools_NurbsConvertModification_21423::NewParameter
(const TopoDS_Vertex& V,
const TopoDS_Edge& E,
Standard_Real& P,
Standard_Real& Tol)
{
if(BRep_Tool::Degenerated(E))
return Standard_False;
Standard_Real f, l, param = BRep_Tool::Parameter(V,E);
TopLoc_Location L;
Handle(Geom_Curve) gc = BRep_Tool::Curve(E, L, f, l);
if(!myMap.Contains(gc))
return Standard_False;
Handle(Geom_BSplineCurve) gcc =
Handle(Geom_BSplineCurve)::DownCast(myMap.FindFromKey(gc));
gcc = Handle(Geom_BSplineCurve)::DownCast(gcc->Transformed(L.Transformation()));
GeomAdaptor_Curve ac(gcc);
gp_Pnt pnt = BRep_Tool::Pnt(V);
Extrema_LocateExtPC proj(pnt, ac, param, f, l, Tol);
if(proj.IsDone()) {
Standard_Real Dist2Min = proj.SquareDistance();
if (Dist2Min < Tol*Tol) {
// Standard_Real U_final_point,V_final_point;
P = proj.Point().Parameter();
return Standard_True;
}
}
return Standard_False;
}
//=======================================================================
//function : Continuity
//purpose :
//=======================================================================
GeomAbs_Shape BRepTools_NurbsConvertModification_21423::Continuity
(const TopoDS_Edge& E,
const TopoDS_Face& F1,
const TopoDS_Face& F2,
const TopoDS_Edge&,
const TopoDS_Face&,
const TopoDS_Face&)
{
return BRep_Tool::Continuity(E,F1,F2);
}

View File

@ -1,141 +0,0 @@
// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to
// this header file considered to be the "object code" form of the original source.
#ifndef _BRepTools_NurbsConvertModification_21423_HeaderFile
#define _BRepTools_NurbsConvertModification_21423_HeaderFile
#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_DefineHandle_HeaderFile
#include <Standard_DefineHandle.hxx>
#endif
#ifndef _Handle_BRepTools_NurbsConvertModification_21423_HeaderFile
#include <Handle_BRepTools_NurbsConvertModification_21423.hxx>
#endif
#ifndef _TopTools_ListOfShape_HeaderFile
#include <TopTools_ListOfShape.hxx>
#endif
#ifndef _TColStd_ListOfTransient_HeaderFile
#include <TColStd_ListOfTransient.hxx>
#endif
#ifndef _TColStd_IndexedDataMapOfTransientTransient_HeaderFile
#include <TColStd_IndexedDataMapOfTransientTransient.hxx>
#endif
#ifndef _BRepTools_Modification_HeaderFile
#include <BRepTools_Modification.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _Handle_Geom_Surface_HeaderFile
#include <Handle_Geom_Surface.hxx>
#endif
#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _Handle_Geom_Curve_HeaderFile
#include <Handle_Geom_Curve.hxx>
#endif
#ifndef _Handle_Geom2d_Curve_HeaderFile
#include <Handle_Geom2d_Curve.hxx>
#endif
#ifndef _GeomAbs_Shape_HeaderFile
#include <GeomAbs_Shape.hxx>
#endif
class TopoDS_Face;
class Geom_Surface;
class TopLoc_Location;
class TopoDS_Edge;
class Geom_Curve;
class TopoDS_Vertex;
class gp_Pnt;
class Geom2d_Curve;
//! Defines a modification of the geometry by a Trsf <br>
//! from gp. All methods return True and transform the <br>
//! geometry. <br>
class BRepTools_NurbsConvertModification_21423 : public BRepTools_Modification {
public:
Standard_EXPORT BRepTools_NurbsConvertModification_21423();
//! Returns Standard_True if the face <F> has been <br>
//! modified. In this case, <S> is the new geometric <br>
//! support of the face, <L> the new location,<Tol> <br>
//! the new tolerance.<RevWires> has to be set to <br>
//! Standard_True when the modification reverses the <br>
//! normal of the surface.(the wires have to be <br>
//! reversed). <RevFace> has to be set to <br>
//! Standard_True if the orientation of the modified <br>
//! face changes in the shells which contain it. -- <br>
//! Here, <RevFace> will return Standard_True if the <br>
//! -- gp_Trsf is negative. <br>
Standard_EXPORT Standard_Boolean NewSurface(const TopoDS_Face& F,Handle(Geom_Surface)& S,TopLoc_Location& L,Standard_Real& Tol,Standard_Boolean& RevWires,Standard_Boolean& RevFace) ;
//! Returns Standard_True if the edge <E> has been <br>
//! modified. In this case, <C> is the new geometric <br>
//! support of the edge, <L> the new location, <Tol> <br>
//! the new tolerance. Otherwise, returns <br>
//! Standard_False, and <C>, <L>, <Tol> are not <br>
//! significant. <br>
Standard_EXPORT Standard_Boolean NewCurve(const TopoDS_Edge& E,Handle(Geom_Curve)& C,TopLoc_Location& L,Standard_Real& Tol) ;
//! Returns Standard_True if the vertex <V> has been <br>
//! modified. In this case, <P> is the new geometric <br>
//! support of the vertex, <Tol> the new tolerance. <br>
//! Otherwise, returns Standard_False, and <P>, <Tol> <br>
//! are not significant. <br>
Standard_EXPORT Standard_Boolean NewPoint(const TopoDS_Vertex& V,gp_Pnt& P,Standard_Real& Tol) ;
//! Returns Standard_True if the edge <E> has a new <br>
//! curve on surface on the face <F>.In this case, <C> <br>
//! is the new geometric support of the edge, <L> the <br>
//! new location, <Tol> the new tolerance. <br>
//! Otherwise, returns Standard_False, and <C>, <L>, <br>
//! <Tol> are not significant. <br>
Standard_EXPORT Standard_Boolean NewCurve2d(const TopoDS_Edge& E,const TopoDS_Face& F,const TopoDS_Edge& NewE,const TopoDS_Face& NewF,Handle(Geom2d_Curve)& C,Standard_Real& Tol) ;
//! Returns Standard_True if the Vertex <V> has a new <br>
//! parameter on the edge <E>. In this case, <P> is <br>
//! the parameter, <Tol> the new tolerance. <br>
//! Otherwise, returns Standard_False, and <P>, <Tol> <br>
//! are not significant. <br>
Standard_EXPORT Standard_Boolean NewParameter(const TopoDS_Vertex& V,const TopoDS_Edge& E,Standard_Real& P,Standard_Real& Tol) ;
//! Returns the continuity of <NewE> between <NewF1> <br>
//! and <NewF2>. <br>
//! <br>
//! <NewE> is the new edge created from <E>. <NewF1> <br>
//! (resp. <NewF2>) is the new face created from <F1> <br>
//! (resp. <F2>). <br>
Standard_EXPORT GeomAbs_Shape Continuity(const TopoDS_Edge& E,const TopoDS_Face& F1,const TopoDS_Face& F2,const TopoDS_Edge& NewE,const TopoDS_Face& NewF1,const TopoDS_Face& NewF2) ;
DEFINE_STANDARD_RTTI(BRepTools_NurbsConvertModification_21423)
protected:
private:
TopTools_ListOfShape myled;
TColStd_ListOfTransient mylcu;
TColStd_IndexedDataMapOfTransientTransient myMap;
};
// other Inline functions and methods (like "C++: function call" methods)
#endif

View File

@ -339,6 +339,12 @@ TopoDS_Shape GEOMImpl_GlueDriver::GlueFaces (const TopoDS_Shape& theShape,
// 2. Detect interferred shapes
aGA.Detect();
//Standard_Integer iWrnDetect = aGA.WarningStatus();
//if (iWrnDetect == 2) {
// Standard_Failure::Raise("GLUE_ERROR_STICKED_SHAPES");
//}
Standard_Integer iErr = aGA.ErrorStatus();
if (iErr) {
switch (iErr) {

View File

@ -31,7 +31,7 @@
#include <ShapeFix_ShapeTolerance.hxx>
#include <BRepBuilderAPI_Transform.hxx>
#include <BRepBuilderAPI_GTransform_21423.hxx>
#include <BRepBuilderAPI_GTransform.hxx>
#include <BRep_Tool.hxx>
#include <BRepAlgo.hxx>
#include <BRepCheck_Analyzer.hxx>
@ -165,7 +165,7 @@ Standard_Integer GEOMImpl_ScaleDriver::Execute(TFunction_Logbook& log) const
}
}
BRepBuilderAPI_GTransform_21423 aBRepGTrsf (aShapeBase, aGTrsf, Standard_False);
BRepBuilderAPI_GTransform aBRepGTrsf (aShapeBase, aGTrsf, Standard_False);
if (!aBRepGTrsf.IsDone())
Standard_ConstructionError::Raise("Scaling not done");
aShape = aBRepGTrsf.Shape();

View File

@ -1,27 +0,0 @@
// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to
// this header file considered to be the "object code" form of the original source.
#ifndef _Handle_BRepTools_NurbsConvertModification_21423_HeaderFile
#define _Handle_BRepTools_NurbsConvertModification_21423_HeaderFile
#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_DefineHandle_HeaderFile
#include <Standard_DefineHandle.hxx>
#endif
#ifndef _Handle_BRepTools_Modification_HeaderFile
#include <Handle_BRepTools_Modification.hxx>
#endif
class Standard_Transient;
class Handle(Standard_Type);
class Handle(BRepTools_Modification);
class BRepTools_NurbsConvertModification_21423;
DEFINE_STANDARD_HANDLE(BRepTools_NurbsConvertModification_21423,BRepTools_Modification)
#endif

View File

@ -15,7 +15,6 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
# GEOM GEOM : implementaion of GEOM_Gen.idl
# File : Makefile.in
@ -28,7 +27,7 @@ include $(top_srcdir)/adm_local/unix/make_common_starter.am
# Libraries targets
lib_LTLIBRARIES = libGEOMimpl.la
# header files
# header files
salomeinclude_HEADERS = \
GEOMImpl_Gen.hxx \
GEOMImpl_IBasicOperations.hxx \
@ -103,12 +102,6 @@ salomeinclude_HEADERS = \
GEOMImpl_MirrorDriver.hxx \
GEOMImpl_ProjectionDriver.hxx \
GEOMImpl_OffsetDriver.hxx \
BRepBuilderAPI_GTransform_21423.hxx \
BRepBuilderAPI_ModifyShape_21423.hxx \
BRepBuilderAPI_NurbsConvert_21423.hxx \
BRepTools_Modifier_21423.hxx \
BRepTools_NurbsConvertModification_21423.hxx \
Handle_BRepTools_NurbsConvertModification_21423.hxx \
GEOMImpl_ScaleDriver.hxx \
GEOMImpl_PositionDriver.hxx \
GEOMImpl_BoxDriver.hxx \
@ -179,11 +172,6 @@ dist_libGEOMimpl_la_SOURCES = \
GEOMImpl_MirrorDriver.cxx \
GEOMImpl_ProjectionDriver.cxx \
GEOMImpl_OffsetDriver.cxx \
BRepBuilderAPI_GTransform_21423.cxx \
BRepBuilderAPI_ModifyShape_21423.cxx \
BRepBuilderAPI_NurbsConvert_21423.cxx \
BRepTools_Modifier_21423.cxx \
BRepTools_NurbsConvertModification_21423.cxx \
GEOMImpl_ScaleDriver.cxx \
GEOMImpl_PositionDriver.cxx \
GEOMImpl_BoxDriver.cxx \