source typo fixes pt2 (only on py3 merged code)
This commit is contained in:
parent
06b10a4061
commit
0485edd560
|
@ -5,7 +5,7 @@ gathered after examining and removing most of the warnings emitted
|
||||||
by Doxygen. For information on (re)building the source docs, see
|
by Doxygen. For information on (re)building the source docs, see
|
||||||
\ref makingdocs
|
\ref makingdocs
|
||||||
|
|
||||||
- Pay attention to warnings emited by doxygen when building the doc.
|
- Pay attention to warnings emitted by doxygen when building the doc.
|
||||||
The item giving rise to the warning will be skipped and will not be
|
The item giving rise to the warning will be skipped and will not be
|
||||||
documented !
|
documented !
|
||||||
|
|
||||||
|
|
|
@ -334,7 +334,7 @@ typedef unsigned __int64 uint64_t;
|
||||||
//# pragma warning( disable : 4503 )
|
//# pragma warning( disable : 4503 )
|
||||||
//# pragma warning( disable : 4786 ) // specifier longer then 255 chars
|
//# pragma warning( disable : 4786 ) // specifier longer then 255 chars
|
||||||
//# pragma warning( disable : 4290 ) // not implemented throw specification
|
//# pragma warning( disable : 4290 ) // not implemented throw specification
|
||||||
# pragma warning( disable : 4996 ) // supress depricated warning for e.g. open()
|
# pragma warning( disable : 4996 ) // suppress depricated warning for e.g. open()
|
||||||
#if defined(WIN64) || defined(_WIN64) || defined(__WIN64__)
|
#if defined(WIN64) || defined(_WIN64) || defined(__WIN64__)
|
||||||
# pragma warning( disable : 4244 )
|
# pragma warning( disable : 4244 )
|
||||||
# pragma warning( disable : 4267 )
|
# pragma warning( disable : 4267 )
|
||||||
|
|
|
@ -3145,7 +3145,7 @@ static PyObject * useMesh(PyObject *self, PyObject *args)
|
||||||
// Count of Triangles
|
// Count of Triangles
|
||||||
m.CountFacets();
|
m.CountFacets();
|
||||||
|
|
||||||
// Neigbour triangles
|
// Neighbour triangles
|
||||||
unsigned long idx1,idx2,idx3,idx=0;
|
unsigned long idx1,idx2,idx3,idx=0;
|
||||||
m.GetFacetNeighbours(idx,idx1,idx2,idx3);
|
m.GetFacetNeighbours(idx,idx1,idx2,idx3);
|
||||||
|
|
||||||
|
|
|
@ -849,7 +849,7 @@ void Approximate::ErrorApprox()
|
||||||
|
|
||||||
anOutputFile << "Constructing" << std::endl;
|
anOutputFile << "Constructing" << std::endl;
|
||||||
ublas::matrix<double> C_Temp(NumOfPoints,3);
|
ublas::matrix<double> C_Temp(NumOfPoints,3);
|
||||||
anOutputFile << "C_Temp succesfully constructed" << std::endl;
|
anOutputFile << "C_Temp successfully constructed" << std::endl;
|
||||||
//Time saving... C_Temp matrix is constant for all time
|
//Time saving... C_Temp matrix is constant for all time
|
||||||
|
|
||||||
anOutputFile << "number of points: " << NumOfPoints << std::endl;
|
anOutputFile << "number of points: " << NumOfPoints << std::endl;
|
||||||
|
@ -868,7 +868,7 @@ void Approximate::ErrorApprox()
|
||||||
anOutputFile << "size(B_Matrix): " << NumOfPoints << " x " << (MainNurb.MaxU+1)*(MainNurb.MaxV+1) << std::endl;
|
anOutputFile << "size(B_Matrix): " << NumOfPoints << " x " << (MainNurb.MaxU+1)*(MainNurb.MaxV+1) << std::endl;
|
||||||
ublas::matrix<double> B_Matrix(NumOfPoints,(MainNurb.MaxU+1)*(MainNurb.MaxV+1));
|
ublas::matrix<double> B_Matrix(NumOfPoints,(MainNurb.MaxU+1)*(MainNurb.MaxV+1));
|
||||||
anOutputFile << "********************************" << endl;
|
anOutputFile << "********************************" << endl;
|
||||||
anOutputFile << "B_Matrix succesfully constructed" << std::endl;
|
anOutputFile << "B_Matrix successfully constructed" << std::endl;
|
||||||
anOutputFile << "Preparing B-Matrix..." << std::endl;
|
anOutputFile << "Preparing B-Matrix..." << std::endl;
|
||||||
|
|
||||||
std::vector<double> N_u(MainNurb.MaxU+1, 0.0);
|
std::vector<double> N_u(MainNurb.MaxU+1, 0.0);
|
||||||
|
@ -941,7 +941,7 @@ void Approximate::ErrorApprox()
|
||||||
G_Matrix.resize(1,1, false);
|
G_Matrix.resize(1,1, false);
|
||||||
G_Matrix.clear();
|
G_Matrix.clear();
|
||||||
ublas::compressed_matrix<double> E_Matrix((MainNurb.MaxU+1)*(MainNurb.MaxV+1), (MainNurb.MaxU+1)*(MainNurb.MaxV+1));
|
ublas::compressed_matrix<double> E_Matrix((MainNurb.MaxU+1)*(MainNurb.MaxV+1), (MainNurb.MaxU+1)*(MainNurb.MaxV+1));
|
||||||
anOutputFile << "E_Matrix succesfully constructed" << std::endl;
|
anOutputFile << "E_Matrix successfully constructed" << std::endl;
|
||||||
anOutputFile << "Smoothing..." << std::endl;
|
anOutputFile << "Smoothing..." << std::endl;
|
||||||
eFair2(E_Matrix);
|
eFair2(E_Matrix);
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
/**************APPROX.H*********************
|
/**************APPROX.H*********************
|
||||||
*Class Approximate, inheriting from Routines
|
*Class Approximate, inheriting from Routines
|
||||||
*Dependancies:- BOOST, ATLAS, UMFPACK, BLAS
|
*Dependencies:- BOOST, ATLAS, UMFPACK, BLAS
|
||||||
* LAPACK
|
* LAPACK
|
||||||
********************************************/
|
********************************************/
|
||||||
|
|
||||||
|
|
|
@ -92,7 +92,7 @@ class Geom_BSplineCurve;
|
||||||
|
|
||||||
//! The Curve from BRepAdaptor allows to use a Wire of the BRep topology
|
//! The Curve from BRepAdaptor allows to use a Wire of the BRep topology
|
||||||
//! like a 3D curve. <br>
|
//! like a 3D curve. <br>
|
||||||
//! Warning: With this class of curve, C0 and C1 continuities
|
//! Warning: With this class of curve, C0 and C1 continuities
|
||||||
//! are not assumed. So be careful with some algorithm!
|
//! are not assumed. So be careful with some algorithm!
|
||||||
class BRepAdaptor_CompCurve2 : public Adaptor3d_Curve
|
class BRepAdaptor_CompCurve2 : public Adaptor3d_Curve
|
||||||
{
|
{
|
||||||
|
@ -120,7 +120,7 @@ public:
|
||||||
|
|
||||||
Standard_EXPORT BRepAdaptor_CompCurve2(const TopoDS_Wire& W,const Standard_Boolean KnotByCurvilinearAbcissa = Standard_False);
|
Standard_EXPORT BRepAdaptor_CompCurve2(const TopoDS_Wire& W,const Standard_Boolean KnotByCurvilinearAbcissa = Standard_False);
|
||||||
|
|
||||||
//! Creates a Curve to acces to the geometry of edge \p W.
|
//! Creates a Curve to access to the geometry of edge \p W.
|
||||||
Standard_EXPORT BRepAdaptor_CompCurve2(const TopoDS_Wire& W,const Standard_Boolean KnotByCurvilinearAbcissa,const Standard_Real First,const Standard_Real Last,const Standard_Real Tol);
|
Standard_EXPORT BRepAdaptor_CompCurve2(const TopoDS_Wire& W,const Standard_Boolean KnotByCurvilinearAbcissa,const Standard_Real First,const Standard_Real Last,const Standard_Real Tol);
|
||||||
|
|
||||||
//! Sets the wire \p W.
|
//! Sets the wire \p W.
|
||||||
|
@ -153,9 +153,9 @@ public:
|
||||||
//! May be one if Continuity(me) >= \<S\>
|
//! May be one if Continuity(me) >= \<S\>
|
||||||
Standard_EXPORT Standard_Integer NbIntervals(const GeomAbs_Shape S) ;
|
Standard_EXPORT Standard_Integer NbIntervals(const GeomAbs_Shape S) ;
|
||||||
|
|
||||||
//! Stores in \<T\> the parameters bounding the intervals of continuity \<S\>. <br>
|
//! Stores in \<T\> the parameters bounding the intervals of continuity \<S\>. <br>
|
||||||
|
|
||||||
//! The array must provide enough room to accomodate for the parameters.
|
//! The array must provide enough room to accommodate for the parameters.
|
||||||
//! i.e. T.Length() > NbIntervals()
|
//! i.e. T.Length() > NbIntervals()
|
||||||
Standard_EXPORT void Intervals(TColStd_Array1OfReal& T,const GeomAbs_Shape S) ;
|
Standard_EXPORT void Intervals(TColStd_Array1OfReal& T,const GeomAbs_Shape S) ;
|
||||||
|
|
||||||
|
|
|
@ -2184,8 +2184,8 @@ std::vector<double> SpringbackCorrection::MeshCurvature(const TopoDS_Face& aFace
|
||||||
bool SpringbackCorrection::MirrorMesh(std::vector<double> error)
|
bool SpringbackCorrection::MirrorMesh(std::vector<double> error)
|
||||||
{
|
{
|
||||||
// Flags: 0 - not yet checked
|
// Flags: 0 - not yet checked
|
||||||
// 1 - no correction applied, but neccessary
|
// 1 - no correction applied, but necessary
|
||||||
// 2 - first correction applied and still neccessary
|
// 2 - first correction applied and still necessary
|
||||||
// 3 - done successfully
|
// 3 - done successfully
|
||||||
// 4 - done without success
|
// 4 - done without success
|
||||||
// 5 - boundary point
|
// 5 - boundary point
|
||||||
|
|
|
@ -43,7 +43,7 @@ class MeshFacet;
|
||||||
# define cMin 15.0
|
# define cMin 15.0
|
||||||
# define toolRad 5.0
|
# define toolRad 5.0
|
||||||
|
|
||||||
/** @brief a struct refering to the edges of the input-shape
|
/** @brief a struct referring to the edges of the input-shape
|
||||||
|
|
||||||
@param anEdge edge
|
@param anEdge edge
|
||||||
@param aFace vector of faces limited by edge
|
@param aFace vector of faces limited by edge
|
||||||
|
@ -60,7 +60,7 @@ struct EdgeStruct
|
||||||
double MinOffset;
|
double MinOffset;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** @brief a struct refering to the mesh-points of the input-shape
|
/** @brief a struct referring to the mesh-points of the input-shape
|
||||||
|
|
||||||
@param index index of the mesh-point
|
@param index index of the mesh-point
|
||||||
@param minCurv minimum curvature-radius
|
@param minCurv minimum curvature-radius
|
||||||
|
@ -196,7 +196,7 @@ public:
|
||||||
//bool InsideCheck(Base::Vector3f pnt, Base::Vector3f normal, std::vector<Base::Vector3f> Neib);
|
//bool InsideCheck(Base::Vector3f pnt, Base::Vector3f normal, std::vector<Base::Vector3f> Neib);
|
||||||
|
|
||||||
//MeshCore::MeshKernel BuildMesh(Handle_Poly_Triangulation aTri, std::vector<Base::Vector3f> TrPoints);
|
//MeshCore::MeshKernel BuildMesh(Handle_Poly_Triangulation aTri, std::vector<Base::Vector3f> TrPoints);
|
||||||
/** @brief returns index-value wich specifies the boundary-points of the
|
/** @brief returns index-value which specifies the boundary-points of the
|
||||||
input-mesh
|
input-mesh
|
||||||
|
|
||||||
@param mesh input-mesh
|
@param mesh input-mesh
|
||||||
|
@ -207,7 +207,7 @@ public:
|
||||||
/** @brief smooths input-mesh
|
/** @brief smooths input-mesh
|
||||||
|
|
||||||
@param mesh input-mesh
|
@param mesh input-mesh
|
||||||
@param maxTranslation value wich stands for the maximum deviation
|
@param maxTranslation value which stands for the maximum deviation
|
||||||
from the initial-mesh
|
from the initial-mesh
|
||||||
*/
|
*/
|
||||||
bool SmoothMesh(MeshCore::MeshKernel &mesh, double maxTranslation);
|
bool SmoothMesh(MeshCore::MeshKernel &mesh, double maxTranslation);
|
||||||
|
@ -216,7 +216,7 @@ public:
|
||||||
@param mesh input-mesh
|
@param mesh input-mesh
|
||||||
@param indicies vector of indicies of the mesh-points for
|
@param indicies vector of indicies of the mesh-points for
|
||||||
smoothing
|
smoothing
|
||||||
@param maxTranslation value wich stands for the maximum deviation
|
@param maxTranslation value which stands for the maximum deviation
|
||||||
from the initial-mesh
|
from the initial-mesh
|
||||||
*/
|
*/
|
||||||
bool SmoothMesh(MeshCore::MeshKernel &mesh, std::vector<int> indicies, double maxTranslation);
|
bool SmoothMesh(MeshCore::MeshKernel &mesh, std::vector<int> indicies, double maxTranslation);
|
||||||
|
@ -305,7 +305,7 @@ private:
|
||||||
//std::vector<MeshCore::MeshFacet> m_RegionBounds;
|
//std::vector<MeshCore::MeshFacet> m_RegionBounds;
|
||||||
/** @brief external setting-parameters*/
|
/** @brief external setting-parameters*/
|
||||||
CuttingToolsSettings m_set;
|
CuttingToolsSettings m_set;
|
||||||
/** @brief index wich specifies the current ring-neighbourhood for the
|
/** @brief index which specifies the current ring-neighbourhood for the
|
||||||
region-growing-algorithm*/
|
region-growing-algorithm*/
|
||||||
int m_RingCurrent;
|
int m_RingCurrent;
|
||||||
private:
|
private:
|
||||||
|
@ -328,12 +328,12 @@ private:
|
||||||
points */
|
points */
|
||||||
std::vector<double> m_Offset;
|
std::vector<double> m_Offset;
|
||||||
public:
|
public:
|
||||||
/** @brief map wich links mesh-point to mesh-index*/
|
/** @brief map which links mesh-point to mesh-index*/
|
||||||
std::map<Base::Vector3f,MeshPnt,MeshPntLess > MeshMap;
|
std::map<Base::Vector3f,MeshPnt,MeshPntLess > MeshMap;
|
||||||
/** @brief map over all edges*/
|
/** @brief map over all edges*/
|
||||||
std::map<TopoDS_Edge, std::vector<double>, Edge_Less> EdgeMap;
|
std::map<TopoDS_Edge, std::vector<double>, Edge_Less> EdgeMap;
|
||||||
|
|
||||||
/** @brief vector containing the user-specified faces wich stands fix
|
/** @brief vector containing the user-specified faces which stands fix
|
||||||
during the springback-correction*/
|
during the springback-correction*/
|
||||||
std::vector<TopoDS_Face> m_FixFaces;
|
std::vector<TopoDS_Face> m_FixFaces;
|
||||||
};
|
};
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
It takes a mesh and a Topo_Shape as it's input parameter.
|
It takes a mesh and a Topo_Shape as it's input parameter.
|
||||||
|
|
||||||
As output, it gives a transformed mesh (rotation + translation)
|
As output, it gives a transformed mesh (rotation + translation)
|
||||||
based on a weighted ICP-Algorithm (ICP: Iterative Closed Point) wich fits the
|
based on a weighted ICP-Algorithm (ICP: Iterative Closed Point) which fits the
|
||||||
Topo_Shape
|
Topo_Shape
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -110,7 +110,7 @@ public:
|
||||||
|
|
||||||
\param shape specifies the shape to be tesselated
|
\param shape specifies the shape to be tesselated
|
||||||
\param mesh output-mesh to store the computed triangulation
|
\param mesh output-mesh to store the computed triangulation
|
||||||
\param deflection parameter wich determines the accuracy of the
|
\param deflection parameter which determines the accuracy of the
|
||||||
triangulation
|
triangulation
|
||||||
*/
|
*/
|
||||||
static bool Tesselate_Shape(const TopoDS_Shape &shape, MeshCore::MeshKernel &mesh, float deflection);
|
static bool Tesselate_Shape(const TopoDS_Shape &shape, MeshCore::MeshKernel &mesh, float deflection);
|
||||||
|
@ -119,7 +119,7 @@ public:
|
||||||
|
|
||||||
\param aface specifies the face to be tesselated
|
\param aface specifies the face to be tesselated
|
||||||
\param mesh output-mesh to store the computed triangulation
|
\param mesh output-mesh to store the computed triangulation
|
||||||
\param deflection parameter wich determines the accuracy of the
|
\param deflection parameter which determines the accuracy of the
|
||||||
triangulation
|
triangulation
|
||||||
*/
|
*/
|
||||||
static bool Tesselate_Face (const TopoDS_Face &aface, MeshCore::MeshKernel &mesh, float deflection);
|
static bool Tesselate_Face (const TopoDS_Face &aface, MeshCore::MeshKernel &mesh, float deflection);
|
||||||
|
|
|
@ -56,7 +56,7 @@ path_simulate::path_simulate(const std::vector<Handle_Geom_BSplineCurve> &BSplin
|
||||||
m_it1 = m_BSplineTop.begin();
|
m_it1 = m_BSplineTop.begin();
|
||||||
m_it2 = m_BSplineBottom.begin();
|
m_it2 = m_BSplineBottom.begin();
|
||||||
|
|
||||||
//Initalise some vars
|
//Initialise some vars
|
||||||
gp_Pnt p(0,0,0);
|
gp_Pnt p(0,0,0);
|
||||||
gp_Pnt q(0,0,0);
|
gp_Pnt q(0,0,0);
|
||||||
|
|
||||||
|
@ -117,7 +117,7 @@ double path_simulate::GetLength(GeomAdaptor_Curve& curve, const Standard_Real st
|
||||||
|
|
||||||
if ( eParam > lastParameter )
|
if ( eParam > lastParameter )
|
||||||
{
|
{
|
||||||
//get the first part of the lenght
|
//get the first part of the length
|
||||||
Standard_Real l1 = GetLength(curve,firstParameter,eParam-lastParameter);
|
Standard_Real l1 = GetLength(curve,firstParameter,eParam-lastParameter);
|
||||||
Standard_Real l2 = GetLength(curve,sParam,lastParameter);
|
Standard_Real l2 = GetLength(curve,sParam,lastParameter);
|
||||||
return l1 + l2;
|
return l1 + l2;
|
||||||
|
|
|
@ -34,14 +34,14 @@
|
||||||
|
|
||||||
/*! \brief The main class for the path_simulate routine
|
/*! \brief The main class for the path_simulate routine
|
||||||
|
|
||||||
As it's input parameters it takes one respectivly two vectors of B-Spline
|
As it's input parameters it takes one respectively two vectors of B-Spline
|
||||||
Curves (describing the Tool-Paths for the IBU-simulation), two values
|
Curves (describing the Tool-Paths for the IBU-simulation), two values
|
||||||
a_max and v_max of type double, wich stands for the maximum allowable
|
a_max and v_max of type double, which stands for the maximum allowable
|
||||||
acceleration and velocity of the tool-movement and one value m_step of
|
acceleration and velocity of the tool-movement and one value m_step of
|
||||||
type double, specifying the step-length of the time-output-vector.
|
type double, specifying the step-length of the time-output-vector.
|
||||||
|
|
||||||
As output, it gives one respectivly two output-files for the simulation
|
As output, it gives one respectively two output-files for the simulation
|
||||||
process containing a two-dimensional vector of time vs. velocity wich
|
process containing a two-dimensional vector of time vs. velocity which
|
||||||
describes the tool-movement.
|
describes the tool-movement.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ public:
|
||||||
paths of the master-tool
|
paths of the master-tool
|
||||||
@param BSplineBottom vector of B-Spline-Curves describing the tool-
|
@param BSplineBottom vector of B-Spline-Curves describing the tool-
|
||||||
paths of the slave-tool
|
paths of the slave-tool
|
||||||
@param set a struct wich also includes the parameters
|
@param set a struct which also includes the parameters
|
||||||
a_max and v_max
|
a_max and v_max
|
||||||
*/
|
*/
|
||||||
path_simulate(const std::vector<Handle_Geom_BSplineCurve>& BSplineTop,
|
path_simulate(const std::vector<Handle_Geom_BSplineCurve>& BSplineTop,
|
||||||
|
@ -120,7 +120,7 @@ public:
|
||||||
@param c
|
@param c
|
||||||
@param outputstyle false: simulation, true: robot
|
@param outputstyle false: simulation, true: robot
|
||||||
@param tool false: master, true: slave
|
@param tool false: master, true: slave
|
||||||
@param beamfl specifies an additional outputvalue wich
|
@param beamfl specifies an additional outputvalue which
|
||||||
determines the waiting-status of the tool
|
determines the waiting-status of the tool
|
||||||
movement
|
movement
|
||||||
\todo undocumented parameter c
|
\todo undocumented parameter c
|
||||||
|
@ -256,16 +256,16 @@ private:
|
||||||
/** @brief flag specifying moving-direction (clockwise vs. anticlockwise)
|
/** @brief flag specifying moving-direction (clockwise vs. anticlockwise)
|
||||||
*/
|
*/
|
||||||
bool m_dir;
|
bool m_dir;
|
||||||
/** @brief vector in wich the lengths of the seperated curve-segments for
|
/** @brief vector in which the lengths of the separated curve-segments for
|
||||||
the master-tool are stored*/
|
the master-tool are stored*/
|
||||||
std::vector<std::vector<double> > m_length_ma;
|
std::vector<std::vector<double> > m_length_ma;
|
||||||
/** @brief vector in wich the lengths of the seperated curve-segments for
|
/** @brief vector in which the lengths of the separated curve-segments for
|
||||||
the slave-tool are stored*/
|
the slave-tool are stored*/
|
||||||
std::vector<std::vector<double> > m_length_sl;
|
std::vector<std::vector<double> > m_length_sl;
|
||||||
/** @brief vector of acceleration-values regarding to the seperated curve
|
/** @brief vector of acceleration-values regarding to the separated curve
|
||||||
segments for the master-tool*/
|
segments for the master-tool*/
|
||||||
std::vector<std::vector<double> > m_accel_ma;
|
std::vector<std::vector<double> > m_accel_ma;
|
||||||
/** @brief vector of acceleration-values regarding to the seperated curve
|
/** @brief vector of acceleration-values regarding to the separated curve
|
||||||
segments for the slave-tool*/
|
segments for the slave-tool*/
|
||||||
std::vector<std::vector<double> > m_accel_sl;
|
std::vector<std::vector<double> > m_accel_sl;
|
||||||
/** @brief Matrix of three velocity-values regarding to the curves and curve-segments for the master-tool*/
|
/** @brief Matrix of three velocity-values regarding to the curves and curve-segments for the master-tool*/
|
||||||
|
@ -277,7 +277,7 @@ private:
|
||||||
double m_vmax;
|
double m_vmax;
|
||||||
/** @brief maximum allowable resulting acceleration of the tool*/
|
/** @brief maximum allowable resulting acceleration of the tool*/
|
||||||
double m_amax;
|
double m_amax;
|
||||||
/** @brief pathtolerance wich is set (in subject to m_vmax and m_amax)
|
/** @brief pathtolerance which is set (in subject to m_vmax and m_amax)
|
||||||
before and after a critical region*/
|
before and after a critical region*/
|
||||||
double m_boundTol;
|
double m_boundTol;
|
||||||
/** @brief acceleration-parameter used in GetVelocity() and GetDistance()
|
/** @brief acceleration-parameter used in GetVelocity() and GetDistance()
|
||||||
|
@ -323,7 +323,7 @@ private:
|
||||||
std::vector<std::vector<double> > CompBounds(bool tool, std::vector<double> knots);
|
std::vector<std::vector<double> > CompBounds(bool tool, std::vector<double> knots);
|
||||||
/** @brief Generates output for the current tool-path*/
|
/** @brief Generates output for the current tool-path*/
|
||||||
bool CompPath(bool tool);
|
bool CompPath(bool tool);
|
||||||
/** @brief determines wich tool should wait (feature-based-stategy only)*/
|
/** @brief determines which tool should wait (feature-based-stategy only)*/
|
||||||
bool StartingTool();
|
bool StartingTool();
|
||||||
/** @brief vector containing start- and end-times for the master-curves*/
|
/** @brief vector containing start- and end-times for the master-curves*/
|
||||||
std::vector<std::pair<float,float> > m_PathTimes_Master;
|
std::vector<std::pair<float,float> > m_PathTimes_Master;
|
||||||
|
|
|
@ -38,7 +38,7 @@ using namespace boost::numeric;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*! \brief Numerical Intergration according to trapezoid rules
|
/*! \brief Numerical Integration according to trapezoid rules
|
||||||
|
|
||||||
This routine assumes that the Intergral values are already corresponding with WithRespectTo
|
This routine assumes that the Intergral values are already corresponding with WithRespectTo
|
||||||
i.e: Intergral[i] == Intergral(WithRespectTo[i]);
|
i.e: Intergral[i] == Intergral(WithRespectTo[i]);
|
||||||
|
@ -135,7 +135,7 @@ void Routines::CramerSolve(std::vector< std::vector<double> > &RHS1, std::vector
|
||||||
|
|
||||||
/*! \brief Calculate angle between two vectors
|
/*! \brief Calculate angle between two vectors
|
||||||
|
|
||||||
Dependancies: Vector3D definitions and routines
|
Dependencies: Vector3D definitions and routines
|
||||||
*/
|
*/
|
||||||
double Routines::CalcAngle(Base::Vector3f a,Base::Vector3f b,Base::Vector3f c)
|
double Routines::CalcAngle(Base::Vector3f a,Base::Vector3f b,Base::Vector3f c)
|
||||||
{
|
{
|
||||||
|
|
|
@ -51,7 +51,7 @@ using namespace CompleteGui;
|
||||||
qApp->translate("Workbench", "&Drafting");
|
qApp->translate("Workbench", "&Drafting");
|
||||||
qApp->translate("Workbench", "Sketch based");
|
qApp->translate("Workbench", "Sketch based");
|
||||||
qApp->translate("Workbench", "Primitives");
|
qApp->translate("Workbench", "Primitives");
|
||||||
qApp->translate("Workbench", "Object appearence");
|
qApp->translate("Workbench", "Object appearance");
|
||||||
qApp->translate("Workbench", "Wire Tools");
|
qApp->translate("Workbench", "Wire Tools");
|
||||||
// taken from TestGui.py
|
// taken from TestGui.py
|
||||||
qApp->translate("Test_Test", "Self-test...");
|
qApp->translate("Test_Test", "Self-test...");
|
||||||
|
@ -373,7 +373,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const
|
||||||
Drafting->setCommand("&Drafting");
|
Drafting->setCommand("&Drafting");
|
||||||
|
|
||||||
Gui::MenuItem* DraftContext = new Gui::MenuItem();
|
Gui::MenuItem* DraftContext = new Gui::MenuItem();
|
||||||
DraftContext->setCommand("Object appearence");
|
DraftContext->setCommand("Object appearance");
|
||||||
|
|
||||||
*DraftContext << "Draft_ApplyStyle" << "Draft_ToggleDisplayMode";
|
*DraftContext << "Draft_ApplyStyle" << "Draft_ToggleDisplayMode";
|
||||||
|
|
||||||
|
|
|
@ -97,7 +97,7 @@ Standard_Integer FeatureImportStep::Execute(void)
|
||||||
//aReader.PrintCheckTransfer (failsonly, IFSelect_ItemsByEntity);
|
//aReader.PrintCheckTransfer (failsonly, IFSelect_ItemsByEntity);
|
||||||
for ( Standard_Integer n = 1; n<= nbr; n++)
|
for ( Standard_Integer n = 1; n<= nbr; n++)
|
||||||
{
|
{
|
||||||
printf("STEP: Transfering Root %d\n",n);
|
printf("STEP: Transferring Root %d\n",n);
|
||||||
aReader.TransferRoot(n);
|
aReader.TransferRoot(n);
|
||||||
// Collecting resulting entities
|
// Collecting resulting entities
|
||||||
Standard_Integer nbs = aReader.NbShapes();
|
Standard_Integer nbs = aReader.NbShapes();
|
||||||
|
@ -107,7 +107,7 @@ Standard_Integer FeatureImportStep::Execute(void)
|
||||||
} else {
|
} else {
|
||||||
for (Standard_Integer i =1; i<=nbs; i++)
|
for (Standard_Integer i =1; i<=nbs; i++)
|
||||||
{
|
{
|
||||||
printf("STEP: Transfering Shape %d\n",n);
|
printf("STEP: Transferring Shape %d\n",n);
|
||||||
aShape=aReader.Shape(i);
|
aShape=aReader.Shape(i);
|
||||||
aHSequenceOfShape->Append(aShape);
|
aHSequenceOfShape->Append(aShape);
|
||||||
}
|
}
|
||||||
|
|
|
@ -127,7 +127,7 @@ class SELECT(object):
|
||||||
|
|
||||||
def get_allowed_basic_types(self):
|
def get_allowed_basic_types(self):
|
||||||
''' if a select contains some subselect, goes down through the different
|
''' if a select contains some subselect, goes down through the different
|
||||||
sublayers untill there is no more '''
|
sublayers until there is no more '''
|
||||||
b = []
|
b = []
|
||||||
_auth_types = self.get_allowed_types()
|
_auth_types = self.get_allowed_types()
|
||||||
for _auth_type in _auth_types:
|
for _auth_type in _auth_types:
|
||||||
|
|
|
@ -130,7 +130,7 @@ class Part21Parser:
|
||||||
line = fp.readline()
|
line = fp.readline()
|
||||||
if not line:
|
if not line:
|
||||||
break
|
break
|
||||||
# there may be a multline definition. In this case, we read lines untill we found
|
# there may be a multline definition. In this case, we read lines until we found
|
||||||
# a ;
|
# a ;
|
||||||
while (line.find(';') == -1): #its a multiline
|
while (line.find(';') == -1): #its a multiline
|
||||||
line = line.replace("\n","").replace("\r","") + fp.readline()
|
line = line.replace("\n","").replace("\r","") + fp.readline()
|
||||||
|
|
|
@ -27,7 +27,7 @@ Usage:
|
||||||
Material [Options] card-file-name
|
Material [Options] card-file-name
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
-c, --output-csv=file-name write a comma seperated grid with the material data
|
-c, --output-csv=file-name write a comma separated grid with the material data
|
||||||
|
|
||||||
Exit:
|
Exit:
|
||||||
0 No Error or Warning found
|
0 No Error or Warning found
|
||||||
|
@ -39,7 +39,7 @@ Examples:
|
||||||
|
|
||||||
Material "StandardMaterial/Steel.FCMat"
|
Material "StandardMaterial/Steel.FCMat"
|
||||||
|
|
||||||
Autor:
|
Author:
|
||||||
(c) 2013 Juergen Riegel
|
(c) 2013 Juergen Riegel
|
||||||
mail@juergen-riegel.net
|
mail@juergen-riegel.net
|
||||||
Licence: LGPL
|
Licence: LGPL
|
||||||
|
@ -104,7 +104,7 @@ if __name__ == '__main__':
|
||||||
print("writing file: " + a + "\n")
|
print("writing file: " + a + "\n")
|
||||||
OutPath = a
|
OutPath = a
|
||||||
|
|
||||||
# runing through the files
|
# running through the files
|
||||||
FileName = args[0]
|
FileName = args[0]
|
||||||
|
|
||||||
kv_map = importFCMat(FileName)
|
kv_map = importFCMat(FileName)
|
||||||
|
|
|
@ -226,7 +226,7 @@ class MaterialEditor:
|
||||||
|
|
||||||
|
|
||||||
def getDict(self):
|
def getDict(self):
|
||||||
"returns a dictionnary from the contents of the editor"
|
"returns a dictionary from the contents of the editor"
|
||||||
d = {}
|
d = {}
|
||||||
for i1 in range(self.widget.Editor.topLevelItemCount()):
|
for i1 in range(self.widget.Editor.topLevelItemCount()):
|
||||||
w = self.widget.Editor.topLevelItem(i1)
|
w = self.widget.Editor.topLevelItem(i1)
|
||||||
|
|
|
@ -370,7 +370,7 @@ Base::Vector3d Measurement::delta() const
|
||||||
|
|
||||||
if(measureType == Points) {
|
if(measureType == Points) {
|
||||||
if(numRefs == 2) {
|
if(numRefs == 2) {
|
||||||
// Keep Seperate case for two points to reduce need for complex algorithm
|
// Keep separate case for two points to reduce need for complex algorithm
|
||||||
TopoDS_Shape shape1 = getShape(objects.at(0), subElements.at(0).c_str());
|
TopoDS_Shape shape1 = getShape(objects.at(0), subElements.at(0).c_str());
|
||||||
TopoDS_Shape shape2 = getShape(objects.at(1), subElements.at(1).c_str());
|
TopoDS_Shape shape2 = getShape(objects.at(1), subElements.at(1).c_str());
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,7 @@ public:
|
||||||
* The point \a rclRes holds the intersection point with the ray and the
|
* The point \a rclRes holds the intersection point with the ray and the
|
||||||
* nearest facet with index \a rulFacet.
|
* nearest facet with index \a rulFacet.
|
||||||
* \note This method tests all facets so it should only be used
|
* \note This method tests all facets so it should only be used
|
||||||
* occassionally.
|
* occasionally.
|
||||||
*/
|
*/
|
||||||
bool NearestFacetOnRay (const Base::Vector3f &rclPt, const Base::Vector3f &rclDir, Base::Vector3f &rclRes,
|
bool NearestFacetOnRay (const Base::Vector3f &rclPt, const Base::Vector3f &rclDir, Base::Vector3f &rclRes,
|
||||||
unsigned long &rulFacet) const;
|
unsigned long &rulFacet) const;
|
||||||
|
|
|
@ -206,7 +206,7 @@ public:
|
||||||
/** Searches for the nearest facet in a given grid element and returns the facet index and the actual distance. */
|
/** Searches for the nearest facet in a given grid element and returns the facet index and the actual distance. */
|
||||||
void SearchNearestFacetInGrid(unsigned long ulX, unsigned long ulY, unsigned long ulZ, const Base::Vector3f &rclPt,
|
void SearchNearestFacetInGrid(unsigned long ulX, unsigned long ulY, unsigned long ulZ, const Base::Vector3f &rclPt,
|
||||||
float &rfMinDist, unsigned long &rulFacetInd) const;
|
float &rfMinDist, unsigned long &rulFacetInd) const;
|
||||||
/** Does basically the same as the method above unless that grid neighbours upto the order of \a ulDistance
|
/** Does basically the same as the method above unless that grid neighbours up to the order of \a ulDistance
|
||||||
* are introduced into the search. */
|
* are introduced into the search. */
|
||||||
void SearchNearestFacetInHull (unsigned long ulX, unsigned long ulY, unsigned long ulZ, unsigned long ulDistance,
|
void SearchNearestFacetInHull (unsigned long ulX, unsigned long ulY, unsigned long ulZ, unsigned long ulDistance,
|
||||||
const Base::Vector3f &rclPt, unsigned long &rulFacetInd, float &rfMinDist) const;
|
const Base::Vector3f &rclPt, unsigned long &rulFacetInd, float &rfMinDist) const;
|
||||||
|
|
|
@ -103,7 +103,7 @@ public:
|
||||||
void RecalcBoundBox (void);
|
void RecalcBoundBox (void);
|
||||||
|
|
||||||
/** Returns the point at the given index. This method is rather slow and should be
|
/** Returns the point at the given index. This method is rather slow and should be
|
||||||
* called occassionally only. For fast access the MeshPointIterator interfsce should
|
* called occasionally only. For fast access the MeshPointIterator interfsce should
|
||||||
* be used.
|
* be used.
|
||||||
*/
|
*/
|
||||||
inline MeshPoint GetPoint (unsigned long ulIndex) const;
|
inline MeshPoint GetPoint (unsigned long ulIndex) const;
|
||||||
|
@ -114,7 +114,7 @@ public:
|
||||||
std::vector<Base::Vector3f> CalcVertexNormals() const;
|
std::vector<Base::Vector3f> CalcVertexNormals() const;
|
||||||
|
|
||||||
/** Returns the facet at the given index. This method is rather slow and should be
|
/** Returns the facet at the given index. This method is rather slow and should be
|
||||||
* called occassionally only. For fast access the MeshFacetIterator interface should
|
* called occasionally only. For fast access the MeshFacetIterator interface should
|
||||||
* be used.
|
* be used.
|
||||||
*/
|
*/
|
||||||
inline MeshGeomFacet GetFacet (unsigned long ulIndex) const;
|
inline MeshGeomFacet GetFacet (unsigned long ulIndex) const;
|
||||||
|
@ -130,7 +130,7 @@ public:
|
||||||
unsigned long &rulNIdx1, unsigned long &rulNIdx2) const;
|
unsigned long &rulNIdx1, unsigned long &rulNIdx2) const;
|
||||||
|
|
||||||
/** Determines all facets that are associated to this point. This method is very
|
/** Determines all facets that are associated to this point. This method is very
|
||||||
* slow and should be called occassionally only.
|
* slow and should be called occasionally only.
|
||||||
*/
|
*/
|
||||||
std::vector<unsigned long> HasFacets (const MeshPointIterator &rclIter) const;
|
std::vector<unsigned long> HasFacets (const MeshPointIterator &rclIter) const;
|
||||||
|
|
||||||
|
@ -267,11 +267,11 @@ public:
|
||||||
/** @name Modification */
|
/** @name Modification */
|
||||||
//@{
|
//@{
|
||||||
/** Adds a single facet to the data structure. This method is very slow and should
|
/** Adds a single facet to the data structure. This method is very slow and should
|
||||||
* be called occassionally only.
|
* be called occasionally only.
|
||||||
*/
|
*/
|
||||||
MeshKernel& operator += (const MeshGeomFacet &rclSFacet);
|
MeshKernel& operator += (const MeshGeomFacet &rclSFacet);
|
||||||
/** Adds a single facet to the data structure. This method is very slow and should
|
/** Adds a single facet to the data structure. This method is very slow and should
|
||||||
* be called occassionally only. This does the same as the += operator above.
|
* be called occasionally only. This does the same as the += operator above.
|
||||||
*/
|
*/
|
||||||
void AddFacet(const MeshGeomFacet &rclSFacet);
|
void AddFacet(const MeshGeomFacet &rclSFacet);
|
||||||
/** Adds an array of facets to the data structure. This method keeps temporarily
|
/** Adds an array of facets to the data structure. This method keeps temporarily
|
||||||
|
@ -300,7 +300,7 @@ public:
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* We have a mesh with p points and f facets where we want append new points and facets to.
|
* We have a mesh with p points and f facets where we want append new points and facets to.
|
||||||
* Let's assume that the first facet of \a rclFAry refereneces the 1st, 2nd and 3rd points
|
* Let's assume that the first facet of \a rclFAry references the 1st, 2nd and 3rd points
|
||||||
* of \a rclPAry then its indices must be p, p+1, p+2 -- not 0,1,2. This is due to the fact
|
* of \a rclPAry then its indices must be p, p+1, p+2 -- not 0,1,2. This is due to the fact
|
||||||
* that facets of \a rclFAry can also reference point indices of the internal point array.
|
* that facets of \a rclFAry can also reference point indices of the internal point array.
|
||||||
* @note This method is quite expensive and should be rarely used.
|
* @note This method is quite expensive and should be rarely used.
|
||||||
|
@ -330,7 +330,7 @@ public:
|
||||||
* \li Adjust the indices of the neighbour facets of all facets.
|
* \li Adjust the indices of the neighbour facets of all facets.
|
||||||
* \li If there is no neighbour facet check if the points can be deleted.
|
* \li If there is no neighbour facet check if the points can be deleted.
|
||||||
* True is returned if the facet could be deleted.
|
* True is returned if the facet could be deleted.
|
||||||
* @note This method is very slow and should only be called occassionally.
|
* @note This method is very slow and should only be called occasionally.
|
||||||
* @note After deletion of the facet \a rclIter becomes invalid and must not
|
* @note After deletion of the facet \a rclIter becomes invalid and must not
|
||||||
* be used before setting to a new position.
|
* be used before setting to a new position.
|
||||||
*/
|
*/
|
||||||
|
@ -343,14 +343,14 @@ public:
|
||||||
* @note This method overwrites the free usable property of each mesh point.
|
* @note This method overwrites the free usable property of each mesh point.
|
||||||
* @note This method also removes points from the structure that are no longer
|
* @note This method also removes points from the structure that are no longer
|
||||||
* referenced by the facets.
|
* referenced by the facets.
|
||||||
* @note This method is very slow and should only be called occassionally.
|
* @note This method is very slow and should only be called occasionally.
|
||||||
*/
|
*/
|
||||||
void DeleteFacets (const std::vector<unsigned long> &raulFacets);
|
void DeleteFacets (const std::vector<unsigned long> &raulFacets);
|
||||||
/** Deletes the point the iterator points to. The deletion of a point requires the following step:
|
/** Deletes the point the iterator points to. The deletion of a point requires the following step:
|
||||||
* \li Find all associated facets to this point.
|
* \li Find all associated facets to this point.
|
||||||
* \li Delete these facets.
|
* \li Delete these facets.
|
||||||
* True is returned if the point could be deleted.
|
* True is returned if the point could be deleted.
|
||||||
* @note This method is very slow and should only be called occassionally.
|
* @note This method is very slow and should only be called occasionally.
|
||||||
* @note After deletion of the point \a rclIter becomes invalid and must not
|
* @note After deletion of the point \a rclIter becomes invalid and must not
|
||||||
* be used before setting to a new position.
|
* be used before setting to a new position.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
|
|
||||||
/*! \namespace Mesh
|
/*! \namespace Mesh
|
||||||
\brief The namespace of the Mesh Aplication layer library
|
\brief The namespace of the Mesh Application layer library
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*! \namespace MeshCore
|
/*! \namespace MeshCore
|
||||||
|
|
|
@ -95,7 +95,7 @@ void GTSAlgos::boolean(const Mesh::MeshObject& ToolMesh, int Type)
|
||||||
//Mesh1.clear();
|
//Mesh1.clear();
|
||||||
//Mesh2.clear();
|
//Mesh2.clear();
|
||||||
|
|
||||||
// check that the surfaces are orientable manifolds
|
// check that the surfaces are orientable manifolds
|
||||||
if (!gts_surface_is_orientable (s1)) {
|
if (!gts_surface_is_orientable (s1)) {
|
||||||
gts_object_destroy (GTS_OBJECT (s1));
|
gts_object_destroy (GTS_OBJECT (s1));
|
||||||
gts_object_destroy (GTS_OBJECT (s2));
|
gts_object_destroy (GTS_OBJECT (s2));
|
||||||
|
@ -107,7 +107,7 @@ void GTSAlgos::boolean(const Mesh::MeshObject& ToolMesh, int Type)
|
||||||
throw Base::Exception("surface 2 is not an orientable manifold\n");
|
throw Base::Exception("surface 2 is not an orientable manifold\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
// check that the surfaces are not self-intersecting
|
// check that the surfaces are not self-intersecting
|
||||||
if (check_self_intersection) {
|
if (check_self_intersection) {
|
||||||
GtsSurface * self_intersects;
|
GtsSurface * self_intersects;
|
||||||
|
|
||||||
|
@ -133,7 +133,7 @@ void GTSAlgos::boolean(const Mesh::MeshObject& ToolMesh, int Type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// build bounding box tree for first surface
|
// build bounding box tree for first surface
|
||||||
tree1 = gts_bb_tree_surface (s1);
|
tree1 = gts_bb_tree_surface (s1);
|
||||||
is_open1 = gts_surface_volume (s1) < 0. ? TRUE : FALSE;
|
is_open1 = gts_surface_volume (s1) < 0. ? TRUE : FALSE;
|
||||||
|
|
||||||
|
@ -177,7 +177,7 @@ void GTSAlgos::boolean(const Mesh::MeshObject& ToolMesh, int Type)
|
||||||
gts_surface_inter_boolean (si, s3, GTS_1_OUT_2);
|
gts_surface_inter_boolean (si, s3, GTS_1_OUT_2);
|
||||||
}
|
}
|
||||||
|
|
||||||
// check that the resulting surface is not self-intersecting
|
// check that the resulting surface is not self-intersecting
|
||||||
if (check_self_intersection) {
|
if (check_self_intersection) {
|
||||||
GtsSurface * self_intersects;
|
GtsSurface * self_intersects;
|
||||||
|
|
||||||
|
@ -192,14 +192,14 @@ void GTSAlgos::boolean(const Mesh::MeshObject& ToolMesh, int Type)
|
||||||
gts_object_destroy (GTS_OBJECT (s3));
|
gts_object_destroy (GTS_OBJECT (s3));
|
||||||
gts_object_destroy (GTS_OBJECT (si));
|
gts_object_destroy (GTS_OBJECT (si));
|
||||||
gts_bb_tree_destroy (tree1, TRUE);
|
gts_bb_tree_destroy (tree1, TRUE);
|
||||||
gts_bb_tree_destroy (tree2, TRUE);
|
gts_bb_tree_destroy (tree2, TRUE);
|
||||||
throw Base::Exception("the resulting surface is self-intersecting\n");
|
throw Base::Exception("the resulting surface is self-intersecting\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// display summary information about the resulting surface
|
// display summary information about the resulting surface
|
||||||
// if (verbose)
|
// if (verbose)
|
||||||
// gts_surface_print_stats (s3, stderr);
|
// gts_surface_print_stats (s3, stderr);
|
||||||
// write resulting surface to standard output
|
// write resulting surface to standard output
|
||||||
|
|
||||||
// get the standard mesh
|
// get the standard mesh
|
||||||
_Mesh.clear();
|
_Mesh.clear();
|
||||||
|
@ -212,9 +212,9 @@ void GTSAlgos::boolean(const Mesh::MeshObject& ToolMesh, int Type)
|
||||||
gts_object_destroy (GTS_OBJECT (s3));
|
gts_object_destroy (GTS_OBJECT (s3));
|
||||||
gts_object_destroy (GTS_OBJECT (si));
|
gts_object_destroy (GTS_OBJECT (si));
|
||||||
|
|
||||||
// destroy bounding box trees (including bounding boxes)
|
// destroy bounding box trees (including bounding boxes)
|
||||||
gts_bb_tree_destroy (tree1, TRUE);
|
gts_bb_tree_destroy (tree1, TRUE);
|
||||||
gts_bb_tree_destroy (tree2, TRUE);
|
gts_bb_tree_destroy (tree2, TRUE);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -223,7 +223,7 @@ void GTSAlgos::boolean(const Mesh::MeshObject& ToolMesh, int Type)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// helper function - construct a Edge out of two Vertexes if not allready there
|
/// helper function - construct a Edge out of two Vertexes if not already there
|
||||||
static GtsEdge * new_edge (GtsVertex * v1, GtsVertex * v2)
|
static GtsEdge * new_edge (GtsVertex * v1, GtsVertex * v2)
|
||||||
{
|
{
|
||||||
GtsSegment * s = gts_vertices_are_connected (v1, v2);
|
GtsSegment * s = gts_vertices_are_connected (v1, v2);
|
||||||
|
@ -258,7 +258,7 @@ GtsSurface* GTSAlgos::createGTSSurface(const Mesh::MeshObject& Mesh)
|
||||||
// cycling through the facets
|
// cycling through the facets
|
||||||
for (unsigned int pFIter = 0;pFIter < Mesh.getKernel().CountFacets(); pFIter++)
|
for (unsigned int pFIter = 0;pFIter < Mesh.getKernel().CountFacets(); pFIter++)
|
||||||
{
|
{
|
||||||
// geting the three points of the facet
|
// getting the three points of the facet
|
||||||
Mesh.getKernel().GetFacetPoints(pFIter,p1,p2,p3);
|
Mesh.getKernel().GetFacetPoints(pFIter,p1,p2,p3);
|
||||||
|
|
||||||
// creating the edges and add the face to the surface
|
// creating the edges and add the face to the surface
|
||||||
|
@ -273,7 +273,7 @@ GtsSurface* GTSAlgos::createGTSSurface(const Mesh::MeshObject& Mesh)
|
||||||
gts_surface_vertex_number(Surf),
|
gts_surface_vertex_number(Surf),
|
||||||
gts_surface_edge_number(Surf),
|
gts_surface_edge_number(Surf),
|
||||||
gts_surface_is_orientable (Surf)?"orientable":"not orientable",
|
gts_surface_is_orientable (Surf)?"orientable":"not orientable",
|
||||||
gts_surface_is_self_intersecting(Surf)?"self-intersections":"no self-intersection" );
|
gts_surface_is_self_intersecting(Surf)?"self-intersections":"no self-intersection" );
|
||||||
|
|
||||||
return Surf;
|
return Surf;
|
||||||
}
|
}
|
||||||
|
@ -302,7 +302,7 @@ void GTSAlgos::fillMeshFromGTSSurface(Mesh::MeshObject& Mesh, GtsSurface* pSurfa
|
||||||
// gts_surface_foreach_vertex(pSurface,(GtsFunc) onVertices,&MeshK);
|
// gts_surface_foreach_vertex(pSurface,(GtsFunc) onVertices,&MeshK);
|
||||||
gts_surface_foreach_face (pSurface, (GtsFunc) onFaces,&VAry);
|
gts_surface_foreach_face (pSurface, (GtsFunc) onFaces,&VAry);
|
||||||
|
|
||||||
// destroy surfaces
|
// destroy surfaces
|
||||||
//gts_object_destroy (GTS_OBJECT (pSurface));
|
//gts_object_destroy (GTS_OBJECT (pSurface));
|
||||||
|
|
||||||
// put the facets the simple way in the mesh, totp is recalculated!
|
// put the facets the simple way in the mesh, totp is recalculated!
|
||||||
|
|
|
@ -438,7 +438,7 @@ plane if none of its neighours is coplanar.</UserDocu>
|
||||||
<Documentation>
|
<Documentation>
|
||||||
<UserDocu>getSegmentsByCurvature(list) -> list
|
<UserDocu>getSegmentsByCurvature(list) -> list
|
||||||
The argument list gives a list if tuples where it defines the preferred maximum curvature,
|
The argument list gives a list if tuples where it defines the preferred maximum curvature,
|
||||||
the preferred minumum curvature, the tolerances and the number of minimum faces for the segment.
|
the preferred minimum curvature, the tolerances and the number of minimum faces for the segment.
|
||||||
Example:
|
Example:
|
||||||
c=(1.0, 0.0, 0.1, 0.1, 500) # search for a cylinder with radius 1.0
|
c=(1.0, 0.0, 0.1, 0.1, 500) # search for a cylinder with radius 1.0
|
||||||
p=(0.0, 0.0, 0.1, 0.1, 500) # search for a plane
|
p=(0.0, 0.0, 0.1, 0.1, 500) # search for a plane
|
||||||
|
|
|
@ -209,7 +209,7 @@ void CmdMeshUnion::activated(int)
|
||||||
if (found) {
|
if (found) {
|
||||||
QMessageBox::critical(Gui::getMainWindow(),
|
QMessageBox::critical(Gui::getMainWindow(),
|
||||||
qApp->translate("Mesh_Union", "OpenSCAD"),
|
qApp->translate("Mesh_Union", "OpenSCAD"),
|
||||||
qApp->translate("Mesh_Union", "Unknwon error occured while running OpenSCAD."));
|
qApp->translate("Mesh_Union", "Unknown error occurred while running OpenSCAD."));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
QMessageBox::warning(Gui::getMainWindow(),
|
QMessageBox::warning(Gui::getMainWindow(),
|
||||||
|
@ -279,7 +279,7 @@ void CmdMeshDifference::activated(int)
|
||||||
if (found) {
|
if (found) {
|
||||||
QMessageBox::critical(Gui::getMainWindow(),
|
QMessageBox::critical(Gui::getMainWindow(),
|
||||||
qApp->translate("Mesh_Union", "OpenSCAD"),
|
qApp->translate("Mesh_Union", "OpenSCAD"),
|
||||||
qApp->translate("Mesh_Union", "Unknwon error occured while running OpenSCAD."));
|
qApp->translate("Mesh_Union", "Unknown error occurred while running OpenSCAD."));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
QMessageBox::warning(Gui::getMainWindow(),
|
QMessageBox::warning(Gui::getMainWindow(),
|
||||||
|
@ -349,7 +349,7 @@ void CmdMeshIntersection::activated(int)
|
||||||
if (found) {
|
if (found) {
|
||||||
QMessageBox::critical(Gui::getMainWindow(),
|
QMessageBox::critical(Gui::getMainWindow(),
|
||||||
qApp->translate("Mesh_Union", "OpenSCAD"),
|
qApp->translate("Mesh_Union", "OpenSCAD"),
|
||||||
qApp->translate("Mesh_Union", "Unknwon error occured while running OpenSCAD."));
|
qApp->translate("Mesh_Union", "Unknown error occurred while running OpenSCAD."));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
QMessageBox::warning(Gui::getMainWindow(),
|
QMessageBox::warning(Gui::getMainWindow(),
|
||||||
|
|
|
@ -23,13 +23,13 @@
|
||||||
|
|
||||||
#include "PreCompiled.h"
|
#include "PreCompiled.h"
|
||||||
|
|
||||||
#ifndef _PreComp_
|
#ifndef _PreComp_
|
||||||
# include <QPushButton>
|
# include <QPushButton>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "RemoveComponents.h"
|
#include "RemoveComponents.h"
|
||||||
#include "ui_RemoveComponents.h"
|
#include "ui_RemoveComponents.h"
|
||||||
#include <Gui/Application.h>
|
#include <Gui/Application.h>
|
||||||
#include <Gui/Document.h>
|
#include <Gui/Document.h>
|
||||||
|
|
||||||
using namespace MeshGui;
|
using namespace MeshGui;
|
||||||
|
@ -44,9 +44,9 @@ RemoveComponents::RemoveComponents(QWidget* parent, Qt::WindowFlags fl)
|
||||||
ui->spSelectComp->setValue(10);
|
ui->spSelectComp->setValue(10);
|
||||||
ui->spDeselectComp->setRange(1, INT_MAX);
|
ui->spDeselectComp->setRange(1, INT_MAX);
|
||||||
ui->spDeselectComp->setValue(10);
|
ui->spDeselectComp->setValue(10);
|
||||||
|
|
||||||
meshSel.setCheckOnlyVisibleTriangles(ui->visibleTriangles->isChecked());
|
meshSel.setCheckOnlyVisibleTriangles(ui->visibleTriangles->isChecked());
|
||||||
meshSel.setCheckOnlyPointToUserTriangles(ui->screenTriangles->isChecked());
|
meshSel.setCheckOnlyPointToUserTriangles(ui->screenTriangles->isChecked());
|
||||||
}
|
}
|
||||||
|
|
||||||
RemoveComponents::~RemoveComponents()
|
RemoveComponents::~RemoveComponents()
|
||||||
|
@ -54,108 +54,108 @@ RemoveComponents::~RemoveComponents()
|
||||||
// no need to delete child widgets, Qt does it all for us
|
// no need to delete child widgets, Qt does it all for us
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoveComponents::changeEvent(QEvent *e)
|
void RemoveComponents::changeEvent(QEvent *e)
|
||||||
{
|
{
|
||||||
if (e->type() == QEvent::LanguageChange) {
|
if (e->type() == QEvent::LanguageChange) {
|
||||||
ui->retranslateUi(this);
|
ui->retranslateUi(this);
|
||||||
}
|
}
|
||||||
QWidget::changeEvent(e);
|
QWidget::changeEvent(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoveComponents::on_selectRegion_clicked()
|
void RemoveComponents::on_selectRegion_clicked()
|
||||||
{
|
{
|
||||||
meshSel.startSelection();
|
meshSel.startSelection();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoveComponents::on_deselectRegion_clicked()
|
void RemoveComponents::on_deselectRegion_clicked()
|
||||||
{
|
{
|
||||||
meshSel.startDeselection();
|
meshSel.startDeselection();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoveComponents::on_selectAll_clicked()
|
void RemoveComponents::on_selectAll_clicked()
|
||||||
{
|
{
|
||||||
// select the complete meshes
|
// select the complete meshes
|
||||||
meshSel.fullSelection();
|
meshSel.fullSelection();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoveComponents::on_deselectAll_clicked()
|
void RemoveComponents::on_deselectAll_clicked()
|
||||||
{
|
{
|
||||||
// deselect all meshes
|
// deselect all meshes
|
||||||
meshSel.clearSelection();
|
meshSel.clearSelection();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoveComponents::on_selectComponents_clicked()
|
void RemoveComponents::on_selectComponents_clicked()
|
||||||
{
|
{
|
||||||
// select components upto a certain size
|
// select components up to a certain size
|
||||||
int size = ui->spSelectComp->value();
|
int size = ui->spSelectComp->value();
|
||||||
meshSel.selectComponent(size);
|
meshSel.selectComponent(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoveComponents::on_deselectComponents_clicked()
|
void RemoveComponents::on_deselectComponents_clicked()
|
||||||
{
|
{
|
||||||
// deselect components from a certain size on
|
// deselect components from a certain size on
|
||||||
int size = ui->spDeselectComp->value();
|
int size = ui->spDeselectComp->value();
|
||||||
meshSel.deselectComponent(size);
|
meshSel.deselectComponent(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoveComponents::on_visibleTriangles_toggled(bool on)
|
void RemoveComponents::on_visibleTriangles_toggled(bool on)
|
||||||
{
|
{
|
||||||
meshSel.setCheckOnlyVisibleTriangles(on);
|
meshSel.setCheckOnlyVisibleTriangles(on);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoveComponents::on_screenTriangles_toggled(bool on)
|
void RemoveComponents::on_screenTriangles_toggled(bool on)
|
||||||
{
|
{
|
||||||
meshSel.setCheckOnlyPointToUserTriangles(on);
|
meshSel.setCheckOnlyPointToUserTriangles(on);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoveComponents::on_cbSelectComp_toggled(bool on)
|
void RemoveComponents::on_cbSelectComp_toggled(bool on)
|
||||||
{
|
{
|
||||||
meshSel.setAddComponentOnClick(on);
|
meshSel.setAddComponentOnClick(on);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoveComponents::on_cbDeselectComp_toggled(bool on)
|
void RemoveComponents::on_cbDeselectComp_toggled(bool on)
|
||||||
{
|
{
|
||||||
meshSel.setRemoveComponentOnClick(on);
|
meshSel.setRemoveComponentOnClick(on);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoveComponents::deleteSelection()
|
void RemoveComponents::deleteSelection()
|
||||||
{
|
{
|
||||||
Gui::Document* doc = Gui::Application::Instance->activeDocument();
|
Gui::Document* doc = Gui::Application::Instance->activeDocument();
|
||||||
if (!doc) return;
|
if (!doc) return;
|
||||||
// delete all selected faces
|
// delete all selected faces
|
||||||
doc->openCommand("Delete selection");
|
doc->openCommand("Delete selection");
|
||||||
bool ok = meshSel.deleteSelection();
|
bool ok = meshSel.deleteSelection();
|
||||||
if (!ok)
|
if (!ok)
|
||||||
doc->abortCommand();
|
doc->abortCommand();
|
||||||
else
|
else
|
||||||
doc->commitCommand();
|
doc->commitCommand();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoveComponents::invertSelection()
|
void RemoveComponents::invertSelection()
|
||||||
{
|
{
|
||||||
meshSel.invertSelection();
|
meshSel.invertSelection();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoveComponents::on_selectTriangle_clicked()
|
void RemoveComponents::on_selectTriangle_clicked()
|
||||||
{
|
{
|
||||||
meshSel.selectTriangle();
|
meshSel.selectTriangle();
|
||||||
meshSel.setAddComponentOnClick(ui->cbSelectComp->isChecked());
|
meshSel.setAddComponentOnClick(ui->cbSelectComp->isChecked());
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoveComponents::on_deselectTriangle_clicked()
|
void RemoveComponents::on_deselectTriangle_clicked()
|
||||||
{
|
{
|
||||||
meshSel.deselectTriangle();
|
meshSel.deselectTriangle();
|
||||||
meshSel.setRemoveComponentOnClick(ui->cbDeselectComp->isChecked());
|
meshSel.setRemoveComponentOnClick(ui->cbDeselectComp->isChecked());
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoveComponents::reject()
|
void RemoveComponents::reject()
|
||||||
{
|
{
|
||||||
// deselect all meshes
|
// deselect all meshes
|
||||||
meshSel.clearSelection();
|
meshSel.clearSelection();
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------------
|
// -------------------------------------------------
|
||||||
|
|
||||||
RemoveComponentsDialog::RemoveComponentsDialog(QWidget* parent, Qt::WindowFlags fl)
|
RemoveComponentsDialog::RemoveComponentsDialog(QWidget* parent, Qt::WindowFlags fl)
|
||||||
: QDialog(parent, fl)
|
: QDialog(parent, fl)
|
||||||
|
@ -204,8 +204,8 @@ void RemoveComponentsDialog::clicked(QAbstractButton* btn)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------
|
// ---------------------------------------
|
||||||
|
|
||||||
/* TRANSLATOR MeshGui::TaskRemoveComponents */
|
/* TRANSLATOR MeshGui::TaskRemoveComponents */
|
||||||
|
|
||||||
TaskRemoveComponents::TaskRemoveComponents()
|
TaskRemoveComponents::TaskRemoveComponents()
|
||||||
{
|
{
|
||||||
|
|
|
@ -60,7 +60,7 @@
|
||||||
<item row="1" column="0">
|
<item row="1" column="0">
|
||||||
<widget class="QLabel" name="label_2">
|
<widget class="QLabel" name="label_2">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Minumum number of faces</string>
|
<string>Minimum number of faces</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
|
@ -443,7 +443,7 @@ void SoFCMeshFaceSet::notify(SoNotList * node)
|
||||||
* If \a simplest is true then the model is built from the bounding box instead.
|
* If \a simplest is true then the model is built from the bounding box instead.
|
||||||
*
|
*
|
||||||
* For every move event the complete data set must be iterated to refresh internal Inventor data @see generatePrimitives().
|
* For every move event the complete data set must be iterated to refresh internal Inventor data @see generatePrimitives().
|
||||||
* Doing this very often for very huge data sets slows down the system noticable. Using a rough model as proxy instead of the orignal
|
* Doing this very often for very huge data sets slows down the system noticeably. Using a rough model as proxy instead of the orignal
|
||||||
* data set can speed up the user interaction extremely.
|
* data set can speed up the user interaction extremely.
|
||||||
* @note The proxy will never be displayed. It's just used for the picking mechanism.
|
* @note The proxy will never be displayed. It's just used for the picking mechanism.
|
||||||
* @note The usage of the proxy might be confusing a little bit due to the fact that some details get lost. So it'll be possible
|
* @note The usage of the proxy might be confusing a little bit due to the fact that some details get lost. So it'll be possible
|
||||||
|
@ -673,7 +673,7 @@ SoFCMeshFaceSet::Binding SoFCMeshFaceSet::findMaterialBinding(SoState * const st
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renders the triangles of the complete mesh.
|
* Renders the triangles of the complete mesh.
|
||||||
* FIXME: Do it the same way as Coin did to have only one implementation which is controled by defines
|
* FIXME: Do it the same way as Coin did to have only one implementation which is controlled by defines
|
||||||
* FIXME: Implement using different values of transparency for each vertex or face
|
* FIXME: Implement using different values of transparency for each vertex or face
|
||||||
*/
|
*/
|
||||||
void SoFCMeshFaceSet::drawFaces(const MeshCore::MeshPointArray * rPoints, const MeshCore::MeshFacetArray* rFacets,
|
void SoFCMeshFaceSet::drawFaces(const MeshCore::MeshPointArray * rPoints, const MeshCore::MeshFacetArray* rFacets,
|
||||||
|
|
|
@ -135,7 +135,7 @@ void SoFCMeshNode::setMesh(const Mesh::MeshObject* mesh)
|
||||||
* If \a simplest is true then the model is built from the bounding box instead.
|
* If \a simplest is true then the model is built from the bounding box instead.
|
||||||
*
|
*
|
||||||
* For every move event the complete data set must be iterated to refresh internal Inventor data @see generatePrimitives().
|
* For every move event the complete data set must be iterated to refresh internal Inventor data @see generatePrimitives().
|
||||||
* Doing this very often for very huge data sets slows down the system noticable. Using a rough model as proxy instead of the orignal
|
* Doing this very often for very huge data sets slows down the system noticeably. Using a rough model as proxy instead of the orignal
|
||||||
* data set can speed up the user interaction extremely.
|
* data set can speed up the user interaction extremely.
|
||||||
* @note The proxy will never be displayed. It's just used for the picking mechanism.
|
* @note The proxy will never be displayed. It's just used for the picking mechanism.
|
||||||
* @note The usage of the proxy might be confusing a little bit due to the fact that some details get lost. So it'll be possible
|
* @note The usage of the proxy might be confusing a little bit due to the fact that some details get lost. So it'll be possible
|
||||||
|
@ -295,18 +295,18 @@ void SoFCMeshNode::GLRender(SoGLRenderAction *action)
|
||||||
SoState* state = action->getState();
|
SoState* state = action->getState();
|
||||||
|
|
||||||
SbBool mode = Gui::SoFCInteractiveElement::get(state);
|
SbBool mode = Gui::SoFCInteractiveElement::get(state);
|
||||||
|
|
||||||
//Binding mbind = this->findMaterialBinding(state);
|
//Binding mbind = this->findMaterialBinding(state);
|
||||||
|
|
||||||
SoMaterialBundle mb(action);
|
SoMaterialBundle mb(action);
|
||||||
//SoTextureCoordinateBundle tb(action, true, false);
|
//SoTextureCoordinateBundle tb(action, true, false);
|
||||||
|
|
||||||
SbBool needNormals = !mb.isColorOnly()/* || tb.isFunction()*/;
|
SbBool needNormals = !mb.isColorOnly()/* || tb.isFunction()*/;
|
||||||
mb.sendFirst(); // make sure we have the correct material
|
mb.sendFirst(); // make sure we have the correct material
|
||||||
|
|
||||||
//SbBool ccw = TRUE;
|
//SbBool ccw = TRUE;
|
||||||
//if (SoShapeHintsElement::getVertexOrdering(state) == SoShapeHintsElement::CLOCKWISE)
|
//if (SoShapeHintsElement::getVertexOrdering(state) == SoShapeHintsElement::CLOCKWISE)
|
||||||
// ccw = FALSE;
|
// ccw = FALSE;
|
||||||
|
|
||||||
if ( mode == false || countTriangles() <= this->MaximumTriangles )
|
if ( mode == false || countTriangles() <= this->MaximumTriangles )
|
||||||
drawFaces(needNormals);
|
drawFaces(needNormals);
|
||||||
|
|
|
@ -682,7 +682,7 @@ SoFCMeshObjectShape::Binding SoFCMeshObjectShape::findMaterialBinding(SoState *
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renders the triangles of the complete mesh.
|
* Renders the triangles of the complete mesh.
|
||||||
* FIXME: Do it the same way as Coin did to have only one implementation which is controled by defines
|
* FIXME: Do it the same way as Coin did to have only one implementation which is controlled by defines
|
||||||
* FIXME: Implement using different values of transparency for each vertex or face
|
* FIXME: Implement using different values of transparency for each vertex or face
|
||||||
*/
|
*/
|
||||||
void SoFCMeshObjectShape::drawFaces(const Mesh::MeshObject * mesh, SoMaterialBundle* mb,
|
void SoFCMeshObjectShape::drawFaces(const Mesh::MeshObject * mesh, SoMaterialBundle* mb,
|
||||||
|
@ -1219,7 +1219,7 @@ SoFCMeshSegmentShape::Binding SoFCMeshSegmentShape::findMaterialBinding(SoState
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renders the triangles of the complete mesh.
|
* Renders the triangles of the complete mesh.
|
||||||
* FIXME: Do it the same way as Coin did to have only one implementation which is controled by defines
|
* FIXME: Do it the same way as Coin did to have only one implementation which is controlled by defines
|
||||||
* FIXME: Implement using different values of transparency for each vertex or face
|
* FIXME: Implement using different values of transparency for each vertex or face
|
||||||
*/
|
*/
|
||||||
void SoFCMeshSegmentShape::drawFaces(const Mesh::MeshObject * mesh, SoMaterialBundle* mb,
|
void SoFCMeshSegmentShape::drawFaces(const Mesh::MeshObject * mesh, SoMaterialBundle* mb,
|
||||||
|
|
|
@ -72,7 +72,7 @@ public:
|
||||||
numFacets = new QLabel();
|
numFacets = new QLabel();
|
||||||
|
|
||||||
labelMin = new QLabel();
|
labelMin = new QLabel();
|
||||||
labelMin->setText(QString::fromLatin1("Minumum bound:"));
|
labelMin->setText(QString::fromLatin1("Minimum bound:"));
|
||||||
|
|
||||||
labelMax = new QLabel();
|
labelMax = new QLabel();
|
||||||
labelMax->setText(QString::fromLatin1("Maximum bound:"));
|
labelMax->setText(QString::fromLatin1("Maximum bound:"));
|
||||||
|
|
|
@ -97,12 +97,12 @@ void MeshAlgos::offsetSpecial2(MeshCore::MeshKernel* Mesh, float fSize)
|
||||||
fliped.insert(it.Position());
|
fliped.insert(it.Position());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// if there are no flipped triangles -> stop
|
// if there are no flipped triangles -> stop
|
||||||
//int f =fliped.size();
|
//int f =fliped.size();
|
||||||
if(fliped.size() == 0)
|
if(fliped.size() == 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
for(std::set<unsigned long>::iterator It= fliped.begin();It!=fliped.end();++It)
|
for(std::set<unsigned long>::iterator It= fliped.begin();It!=fliped.end();++It)
|
||||||
alg.CollapseFacet(*It);
|
alg.CollapseFacet(*It);
|
||||||
fliped.clear();
|
fliped.clear();
|
||||||
|
@ -191,7 +191,7 @@ MeshCore::MeshKernel* MeshAlgos::boolean(MeshCore::MeshKernel* pMesh1,
|
||||||
if (!gts_surface_is_orientable (s1)) {
|
if (!gts_surface_is_orientable (s1)) {
|
||||||
gts_object_destroy (GTS_OBJECT (s1));
|
gts_object_destroy (GTS_OBJECT (s1));
|
||||||
gts_object_destroy (GTS_OBJECT (s2));
|
gts_object_destroy (GTS_OBJECT (s2));
|
||||||
throw "surface 1 is not an orientable manifold\n" ;
|
throw "surface 1 is not an orientable manifold\n";
|
||||||
}
|
}
|
||||||
if (!gts_surface_is_orientable (s2)) {
|
if (!gts_surface_is_orientable (s2)) {
|
||||||
gts_object_destroy (GTS_OBJECT (s1));
|
gts_object_destroy (GTS_OBJECT (s1));
|
||||||
|
@ -221,7 +221,7 @@ MeshCore::MeshKernel* MeshAlgos::boolean(MeshCore::MeshKernel* pMesh1,
|
||||||
gts_object_destroy (GTS_OBJECT (self_intersects));
|
gts_object_destroy (GTS_OBJECT (self_intersects));
|
||||||
gts_object_destroy (GTS_OBJECT (s1));
|
gts_object_destroy (GTS_OBJECT (s1));
|
||||||
gts_object_destroy (GTS_OBJECT (s2));
|
gts_object_destroy (GTS_OBJECT (s2));
|
||||||
throw"surface is self-intersecting\n";
|
throw "surface is self-intersecting\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -240,14 +240,14 @@ MeshCore::MeshKernel* MeshAlgos::boolean(MeshCore::MeshKernel* pMesh1,
|
||||||
gts_object_destroy (GTS_OBJECT (s1));
|
gts_object_destroy (GTS_OBJECT (s1));
|
||||||
gts_object_destroy (GTS_OBJECT (s2));
|
gts_object_destroy (GTS_OBJECT (s2));
|
||||||
gts_bb_tree_destroy (tree1, true);
|
gts_bb_tree_destroy (tree1, true);
|
||||||
gts_bb_tree_destroy (tree2, true);
|
gts_bb_tree_destroy (tree2, true);
|
||||||
throw"the intersection of 1 and 2 is not a closed curve\n";
|
throw"the intersection of 1 and 2 is not a closed curve\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
s3 = gts_surface_new (gts_surface_class (),
|
s3 = gts_surface_new (gts_surface_class (),
|
||||||
gts_face_class (),
|
gts_face_class (),
|
||||||
gts_edge_class (),
|
gts_edge_class (),
|
||||||
gts_vertex_class ());
|
gts_vertex_class ());
|
||||||
if (Type==0) { // union
|
if (Type==0) { // union
|
||||||
gts_surface_inter_boolean (si, s3, GTS_1_OUT_2);
|
gts_surface_inter_boolean (si, s3, GTS_1_OUT_2);
|
||||||
gts_surface_inter_boolean (si, s3, GTS_2_OUT_1);
|
gts_surface_inter_boolean (si, s3, GTS_2_OUT_1);
|
||||||
|
@ -268,7 +268,7 @@ MeshCore::MeshKernel* MeshAlgos::boolean(MeshCore::MeshKernel* pMesh1,
|
||||||
else if (Type==4) { // cut outer
|
else if (Type==4) { // cut outer
|
||||||
gts_surface_inter_boolean (si, s3, GTS_1_OUT_2);
|
gts_surface_inter_boolean (si, s3, GTS_1_OUT_2);
|
||||||
}
|
}
|
||||||
|
|
||||||
// check that the resulting surface is not self-intersecting
|
// check that the resulting surface is not self-intersecting
|
||||||
if (check_self_intersection) {
|
if (check_self_intersection) {
|
||||||
GtsSurface * self_intersects;
|
GtsSurface * self_intersects;
|
||||||
|
@ -284,7 +284,7 @@ MeshCore::MeshKernel* MeshAlgos::boolean(MeshCore::MeshKernel* pMesh1,
|
||||||
gts_object_destroy (GTS_OBJECT (s3));
|
gts_object_destroy (GTS_OBJECT (s3));
|
||||||
gts_object_destroy (GTS_OBJECT (si));
|
gts_object_destroy (GTS_OBJECT (si));
|
||||||
gts_bb_tree_destroy (tree1, true);
|
gts_bb_tree_destroy (tree1, true);
|
||||||
gts_bb_tree_destroy (tree2, true);
|
gts_bb_tree_destroy (tree2, true);
|
||||||
throw "the resulting surface is self-intersecting\n";
|
throw "the resulting surface is self-intersecting\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -305,8 +305,8 @@ MeshCore::MeshKernel* MeshAlgos::boolean(MeshCore::MeshKernel* pMesh1,
|
||||||
|
|
||||||
// destroy bounding box trees (including bounding boxes)
|
// destroy bounding box trees (including bounding boxes)
|
||||||
// gts_bb_tree_destroy (tree1, true);
|
// gts_bb_tree_destroy (tree1, true);
|
||||||
// gts_bb_tree_destroy (tree2, true);
|
// gts_bb_tree_destroy (tree2, true);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
return pMesh1;
|
return pMesh1;
|
||||||
}
|
}
|
||||||
|
@ -315,7 +315,7 @@ MeshCore::MeshKernel* MeshAlgos::boolean(MeshCore::MeshKernel* pMesh1,
|
||||||
#ifdef FC_USE_GTS
|
#ifdef FC_USE_GTS
|
||||||
|
|
||||||
|
|
||||||
/// helper function - construct a Edge out of two Vertexes if not allready there
|
/// helper function - construct a Edge out of two Vertexes if not already there
|
||||||
static GtsEdge * new_edge (GtsVertex * v1, GtsVertex * v2)
|
static GtsEdge * new_edge (GtsVertex * v1, GtsVertex * v2)
|
||||||
{
|
{
|
||||||
GtsSegment * s = gts_vertices_are_connected (v1, v2);
|
GtsSegment * s = gts_vertices_are_connected (v1, v2);
|
||||||
|
@ -363,7 +363,7 @@ GtsSurface* MeshAlgos::createGTSSurface(MeshCore::MeshKernel* Mesh)
|
||||||
gts_surface_vertex_number(Surf),
|
gts_surface_vertex_number(Surf),
|
||||||
gts_surface_edge_number(Surf),
|
gts_surface_edge_number(Surf),
|
||||||
gts_surface_is_orientable (Surf)?"orientable":"not orientable",
|
gts_surface_is_orientable (Surf)?"orientable":"not orientable",
|
||||||
gts_surface_is_self_intersecting(Surf)?"self-intersections":"no self-intersection" );
|
gts_surface_is_self_intersecting(Surf)?"self-intersections":"no self-intersection" );
|
||||||
|
|
||||||
return Surf;
|
return Surf;
|
||||||
|
|
||||||
|
@ -498,7 +498,7 @@ void MeshAlgos::LoftOnCurve(MeshCore::MeshKernel &ResultMesh, const TopoDS_Shape
|
||||||
TopoDS_Vertex V1, V2;
|
TopoDS_Vertex V1, V2;
|
||||||
TopExp::Vertices(Edge, V1, V2);
|
TopExp::Vertices(Edge, V1, V2);
|
||||||
bool bBegin = false,bEnd = false;
|
bool bBegin = false,bEnd = false;
|
||||||
// geting the geometric curve and the interval
|
// getting the geometric curve and the interval
|
||||||
GeomLProp_CLProps prop(BRep_Tool::Curve(Edge,fBegin,fEnd),1,0.0000000001);
|
GeomLProp_CLProps prop(BRep_Tool::Curve(Edge,fBegin,fEnd),1,0.0000000001);
|
||||||
int res = int((fEnd - fBegin)/MaxSize);
|
int res = int((fEnd - fBegin)/MaxSize);
|
||||||
// do at least 2 segments
|
// do at least 2 segments
|
||||||
|
@ -509,7 +509,7 @@ void MeshAlgos::LoftOnCurve(MeshCore::MeshKernel &ResultMesh, const TopoDS_Shape
|
||||||
std::vector<Base::Vector3f> prePoint(poly.size());
|
std::vector<Base::Vector3f> prePoint(poly.size());
|
||||||
std::vector<Base::Vector3f> actPoint(poly.size());
|
std::vector<Base::Vector3f> actPoint(poly.size());
|
||||||
|
|
||||||
// checking if there is already a end to conect
|
// checking if there is already a end to connect
|
||||||
if(ConnectMap.find(V1) != ConnectMap.end() ){
|
if(ConnectMap.find(V1) != ConnectMap.end() ){
|
||||||
bBegin = true;
|
bBegin = true;
|
||||||
prePoint = ConnectMap[V1];
|
prePoint = ConnectMap[V1];
|
||||||
|
@ -532,7 +532,7 @@ void MeshAlgos::LoftOnCurve(MeshCore::MeshKernel &ResultMesh, const TopoDS_Shape
|
||||||
(float)prop.Value().Z());
|
(float)prop.Value().Z());
|
||||||
Base::Vector3f Up (up);
|
Base::Vector3f Up (up);
|
||||||
// normalize and calc the third vector of the plane coordinatesystem
|
// normalize and calc the third vector of the plane coordinatesystem
|
||||||
Tng.Normalize();
|
Tng.Normalize();
|
||||||
Up.Normalize();
|
Up.Normalize();
|
||||||
Base::Vector3f Third(Tng%Up);
|
Base::Vector3f Third(Tng%Up);
|
||||||
|
|
||||||
|
@ -546,7 +546,7 @@ void MeshAlgos::LoftOnCurve(MeshCore::MeshKernel &ResultMesh, const TopoDS_Shape
|
||||||
actPoint[l] = ((Third*It->x)+(Up*It->y)+(Tng*It->z)+Ptn);
|
actPoint[l] = ((Third*It->x)+(Up*It->y)+(Tng*It->z)+Ptn);
|
||||||
|
|
||||||
if(i == res-1 && !bEnd)
|
if(i == res-1 && !bEnd)
|
||||||
// remeber the last row to conect to a otger edge with the same vertex
|
// remember the last row to connect to a otger edge with the same vertex
|
||||||
ConnectMap[V2] = actPoint;
|
ConnectMap[V2] = actPoint;
|
||||||
|
|
||||||
if(i==1 && bBegin)
|
if(i==1 && bBegin)
|
||||||
|
@ -554,16 +554,16 @@ void MeshAlgos::LoftOnCurve(MeshCore::MeshKernel &ResultMesh, const TopoDS_Shape
|
||||||
prePoint = ConnectMap[V1];
|
prePoint = ConnectMap[V1];
|
||||||
|
|
||||||
if(i==0 && !bBegin)
|
if(i==0 && !bBegin)
|
||||||
// remember the first row for conection to a edge with the same vertex
|
// remember the first row for connection to a edge with the same vertex
|
||||||
ConnectMap[V1] = actPoint;
|
ConnectMap[V1] = actPoint;
|
||||||
|
|
||||||
if(i ) // not the first row or somthing to conect to
|
if(i ) // not the first row or something to connect to
|
||||||
{
|
{
|
||||||
for(l=0;l<actPoint.size();l++)
|
for(l=0;l<actPoint.size();l++)
|
||||||
{
|
{
|
||||||
if(l) // not first point in row
|
if(l) // not first point in row
|
||||||
{
|
{
|
||||||
if(i == res-1 && bEnd) // if last row and a end to conect
|
if(i == res-1 && bEnd) // if last row and a end to connect
|
||||||
actPoint = ConnectMap[V2];
|
actPoint = ConnectMap[V2];
|
||||||
|
|
||||||
Base::Vector3f p1 = prePoint[l-1],
|
Base::Vector3f p1 = prePoint[l-1],
|
||||||
|
|
Loading…
Reference in New Issue
Block a user