Commit Graph

208 Commits

Author SHA1 Message Date
eap
b539de9f45 0020959: EDF 1531: HEXA_3D fails on shell
in DependsOn(), do not make a sub-mesh of a not closed SHELL
2010-09-01 11:00:43 +00:00
eap
3a69b3ea0f 0020958: EDF 1529 SMESH : If some faces have been meshed with small
quadrangles Netgen 3D creates pyramids with volume zero and fails

struct SMESH_ElementSearcher
{
+  /*!
+   * \brief Return elements possibly intersecting the line
+   */
+  virtual void GetElementsNearLine( const gp_Ax1&                           line,
+                                    SMDSAbs_ElementType                     type,
+                                    std::vector< const SMDS_MeshElement* >& foundElems)=0;
2010-08-19 09:19:49 +00:00
eap
758a69ebf0 0020951: EDF 1501 SMESH: Conversion linear/quadratic with medium nodes on geometry fails with GHS3D
* Fix splitTrianglesIntoChains()
2010-08-04 12:05:37 +00:00
eap
52be03b564 0020951: EDF 1501 SMESH: Conversion linear/quadratic with medium nodes on geometry fails with GHS3D
* Fix GetNodeUV() for a node on seam edge: enable projection of node in face
 * Fix GetMediumNode(): set a node in volume #1 as well
 * Fix QFace::GetLinkChain(), case of triangles
2010-07-27 13:05:28 +00:00
eap
4ea8012155 0020920: EDF 1478 SMESH: Conversion linear to quadratic fails (BLSURF Mesh)
* fix FixQuadraticElements(): ignore internal chains
2010-07-21 05:45:17 +00:00
eap
cc0f9654b4 0020919: EDF 1472 SMESH: Linear to quadratic conversion fails with hexaedron algorithm
* fix FixQuadraticElements()
2010-07-20 06:06:38 +00:00
eap
90bfbd9c1e improve comment 2010-07-20 06:05:22 +00:00
eap
99adc043fe untabify 2010-07-19 07:57:32 +00:00
vsr
420d105fdb Issue 0020921: EDF 1462 SMESH: Regression in 5.1.4. a quadrangle meshing fails 2010-07-08 06:51:11 +00:00
vsr
32a86c1f4a 0020742: EDF 1270 SMESH : Delete Group with contents and remove Orphan Nodes 2010-07-07 05:32:15 +00:00
vsr
2343a5b385 Fix bug of NodeSearcher: search fails if point is outside the mesh on the distance more than octree node precision value. Version 2 with improved performance. 2010-06-21 07:29:04 +00:00
vsr
97577f2731 Fix bug of NodeSearcher: search fails if point is outside the mesh on the distance more than octree node precision value 2010-06-17 19:00:18 +00:00
vsr
6ea1e8f320 Merge from V5_1_4_BR (5_1_4rc2) 09/06/2010 2010-06-10 06:51:07 +00:00
eap
d0e4aacc56 0020693: EDF 1288 SMESH: Problem to recompute a mesh with a sub-mesh and a conversion linear-quadratic
+  void SetIsModified(bool isModified);
+  bool GetIsModified() const { return _isModified; }
+  bool HasModificationsToDiscard() const;
+  bool                       _isModified; //!< modified since last total re-compute, issue 0020693
2010-05-13 06:18:02 +00:00
vsr
6650dea1f8 Merge from V5_1_4_BR 07/05/2010 2010-05-07 15:08:23 +00:00
eap
a232cd7e03 0020672: EDF 1243 SMESH : Be able to transform mixed mesh
+    void SplitVolumesIntoTetra(in SMESH_IDSource elems, in short methodFlags)
2010-03-30 12:38:16 +00:00
eap
8951a46238 Move from StdMeshers_ProjectionUtils
+  static bool IsSubShape( const TopoDS_Shape& shape, const TopoDS_Shape& mainShape );
+
+  static bool IsSubShape( const TopoDS_Shape& shape, SMESH_Mesh* aMesh );
2010-03-23 14:32:26 +00:00
eap
3a82c6685b 020676: EDF 1212 GEOM: Partition operation creates vertices which causes mesh computation to fail with netgen
* Cash GeomAPI_ProjectPointOnSurf's
 * Make applyFunc() public under name applyIn2D()


+   * \brief Define a pointer to wrapper over a function of gp_XY class,
+   *       suitable to pass as xyFunPtr to applyIn2D().
+   *       For exaple gp_XY_FunPtr(Added) defines pointer gp_XY_Added to function
+   *       calling gp_XY::Added(gp_XY), which is to be used like following
+   *       applyIn2D(surf, uv1, uv2, gp_XY_Added)
+   */
+#define gp_XY_FunPtr(meth) \
+  static gp_XY __gpXY_##meth (const gp_XY& uv1, const gp_XY& uv2) { return uv1.meth( uv2 ); } \
+  static xyFunPtr gp_XY_##meth = & __gpXY_##meth

+  /*!
+   * \brief Perform given operation on two 2d points in parameric space of given surface.
+   *        It takes into account period of the surface. Use gp_XY_FunPtr macro
+   *        to easily define pointer to function of gp_XY class.
+   */
+  static gp_XY applyIn2D(const Handle(Geom_Surface)& surface,
+                         const gp_XY&                uv1,
+                         const gp_XY&                uv2,
+                         xyFunPtr                    fun,
+                         const bool                  resultInPeriod=true);
+
2010-03-23 08:04:58 +00:00
vsr
db9ba2e978 0020801: EDF 1343 SMESH : Segmentation violation during compound od Mesh with 0D elements 2010-03-22 14:30:36 +00:00
eap
43cfddbeaa 0020771: EDF 1322 SMESH : Quadratic/Linear conversion with Medium Nodes on Geometry issue
* Care of period when performing operations on points in parametric space
2010-03-19 14:21:48 +00:00
eap
d5768a3f63 0020676: EDF 1212 GEOM: Partition operation creates vertices which causes mesh computation to fail with netgen
* fix pb of CheckNodeUV() with INTERNAL shapes

+  /*!
+   * \brief Return iterator on ancestors of the given type
+   */
+  static PShapeIteratorPtr GetAncestors(const TopoDS_Shape& shape,
+                                        const SMESH_Mesh&   mesh,
+                                        TopAbs_ShapeEnum    ancestorType);
2010-03-18 09:47:58 +00:00
eap
b51a02ed24 0020676: EDF 1212 GEOM: Partition operation creates vertices which causes mesh computation to fail with netgen
-  TopoDS_Shape GetSubShape() const  { return myShape; }
+  const TopoDS_Shape& GetSubShape() const  { return myShape; }

+typedef SMDS_Iterator<const TopoDS_Shape*>  PShapeIterator;
+typedef boost::shared_ptr< PShapeIterator > PShapeIteratorPtr;

+  /*!
+   * \brief Return iterator on ancestors of the given type
+   */
+  static PShapeIteratorPtr GetAncestors(const TopoDS_Shape& shape,
+                                        const SMESH_Mesh&   mesh,
+                                        TopAbs_ShapeEnum    ancestorType);
2010-03-18 09:46:14 +00:00
eap
331cc524a8 0020676: EDF 1212 GEOM: Partition operation creates vertices which causes mesh computation to fail with netgen
* In GetOrderedEdges(), preview presence of the internal vertex within the face
2010-03-18 09:42:08 +00:00
ana
1839653e13 Windows compatibility 2010-03-16 13:04:00 +00:00
ana
a4a1062443 Windows compatibility 2010-03-15 14:45:59 +00:00
vsr
e2018c0393 Fix compilation problem on Debian Sarge 2010-03-15 09:31:54 +00:00
eap
8baf98a974 +//=======================================================================
+/*!
+ * \brief SMESH_TLink knowing its orientation
+ */
+//=======================================================================
+
+struct SMESH_OrientedLink: public SMESH_TLink
+{
+  bool _reversed;
+  SMESH_OrientedLink(const SMDS_MeshNode* n1, const SMDS_MeshNode* n2 )
+    : SMESH_TLink( n1, n2 ), _reversed( n1 != node1() ) {}
+};
2010-03-12 08:30:20 +00:00
eap
22395fddea /*!
* \brief High level util for effective file reading and other file operations
 */
2010-03-12 08:26:13 +00:00
skl
25722a6cdd Changes for bug 0020734. 2010-03-11 09:36:56 +00:00
eap
78364113e1 0020714: EDF GHS3DPLUGIN: shapeToMesh when creating 3D mesh from 2D mesh
* Fix GetPointState()
2010-03-05 11:13:07 +00:00
eap
8781de04b7 set Kernel_Utils::Localizer before calling algo->Compute() 2010-03-05 07:42:20 +00:00
eap
e1e680f157 0020714: EDF GHS3DPLUGIN: shapeToMesh when creating 3D mesh from 2D mesh
* Add function to find out if the given point is out of closed 2D mesh.

+  virtual TopAbs_State GetPointState(const gp_Pnt& point);
2010-03-04 14:05:05 +00:00
eap
4fadfe037a 0020714: EDF GHS3DPLUGIN: shapeToMesh when creating 3D mesh from 2D mesh
* Fix FaceNormal()
* Add
+  static std::vector< const SMDS_MeshNode*> GetCommonNodes(const SMDS_MeshElement* e1,
+                                                           const SMDS_MeshElement* e2);
2010-03-04 13:57:50 +00:00
eap
8ac52f19a5 remove commented code 2010-03-04 09:59:01 +00:00
eap
859674eaf0 prevent MakeMesh() from crash if myShapeIDMap.IsEmpty() 2010-03-03 13:58:32 +00:00
skl
00c9fb50be Changes for bug 0020753. 2010-03-03 11:01:36 +00:00
eap
f4222ec705 roll back 2010-03-03 09:07:23 +00:00
eap
f01d6dacd5 0020725: EDF 1242 SMESH : Crash avec Convert lin--> quad avec BLSURF/GHS3D on 64bits
0020721: EDF 1233 SMESH : Crash/bad behavior of 'Convert linear Quadratic with Medium Nodes on Geometry' feature with BLSurf/Ghs3D
* Fix GetNodeUV() for the case of surface both U and V periodic.
* Protect QFace::GetBoundaryLink() from infinite recursion.
* Protect QFace::GetLinkChain() from stack overflow.
2010-03-03 09:03:47 +00:00
eap
d5df7d3273 0020725: EDF 1242 SMESH : Crash avec Convert lin--> quad avec BLSURF/GHS3D on 64bits
0020721: EDF 1233 SMESH : Crash/bad behavior of 'Convert linear Quadratic with Medium Nodes on Geometry' feature with BLSurf/Ghs3D
* Fix GetNodeUV() for the case of surface both U and V periodic.
* Protect QFace::GetBoundaryLink() from infinite recursion.
* Protect QFace::GetLinkChain() from stack overflow.
2010-03-03 07:48:07 +00:00
skl
0af7b3cb3d Changes for bug 0020671. 2010-03-03 07:23:24 +00:00
adam
99c3d13441 *** empty log message *** 2010-02-26 16:08:53 +00:00
eap
039a4f4346 + SMESH_Comment & operator=(const SMESH_Comment& c) {
+    _s << c.c_str() ;
+    this->string::operator=( _s.str() );
+    return *this;
+  }
+
2010-02-24 12:44:11 +00:00
eap
a34eac9276 + static bool FaceNormal(const SMDS_MeshElement* F, gp_XYZ& normal, bool normalized=true); 2010-02-24 12:43:56 +00:00
eap
a710674f83 020697: EDF 1248 SMESH: Sub-mesh on group of face not taken into account
* Correct adding geom groups into map of ansestors
2010-02-18 08:29:00 +00:00
eap
84dcc4efcf 0020693: EDF 1288 SMESH: Problem to recompute a mesh with a sub-mesh and a conversion linear-quadratic
* Add CheckNodeU()
* Compute parameters of created medium nodes even in force3d mode
* Leave doxygen-style comments of functions only in the header
2010-02-11 13:16:51 +00:00
eap
7be9f329c4 0020676: EDF 1212 GEOM: Partition operation creates vertices which causes mesh computation to fail with netgen
* Fix GetOrderedEdges(): workaroud for BRepTools_WireExplorer, which return no edges if they are internal
2010-02-11 08:25:06 +00:00
eap
2536cb0c1b Make TNodeXYZ public, which together with SMDS_StdIterator allows getting coordinates of all nodes of mesh element in a couple of lines of code:
typedef SMDS_StdIterator< SMESH_MeshEditor::TNodeXYZ, SMDS_ElemIteratorPtr > TXyzIterator;
  vector<gp_Pnt> coords( TXyzIterator( elem->nodesIterator()), TXyzIterator() );



class SMESH_EXPORT SMESH_MeshEditor
{
public:
+  //------------------------------------------
+  /*!
+   * \brief SMDS_MeshNode -> gp_XYZ convertor
+   */
+  //------------------------------------------
+  struct TNodeXYZ : public gp_XYZ
2010-02-09 11:13:23 +00:00
eap
a3b1bac8a0 020674: EDF 870 SMESH: Mesh generated by Netgen not usable by GHS3D
* Rename HasDegenenaratedEdges() -> HasDegeneratedEdges()
2010-02-01 14:26:09 +00:00
eap
696fa5df7f 020674: EDF 870 SMESH: Mesh generated by Netgen not usable by GHS3D
+   * \brief Check if the shape set through IsQuadraticSubMesh() or SetSubShape()
+   *        has a degenerated edges
+    * \retval bool - true if it has
+   */
+  bool HasDegenenaratedEdges() const { return !myDegenShapeIds.empty(); }
2010-02-01 14:19:06 +00:00
eap
8d99b0dffe 0019296: EDF 681 SMESH - Pre-evaluation of the number of elements before mesh
* Evaluate(): do not call algo->Evaluate() if needed submeshes failed to evaluate
2010-02-01 11:09:38 +00:00