Salome HOME
Merge remote branch 'origin/V7_dev'
authorvsr <vsr@opencascade.com>
Thu, 26 May 2016 15:29:15 +0000 (18:29 +0300)
committervsr <vsr@opencascade.com>
Thu, 26 May 2016 15:29:15 +0000 (18:29 +0300)
13 files changed:
doc/salome/examples/3dmesh.py
doc/salome/examples/filters_ex01.py
doc/salome/examples/grouping_elements_ex01.py
doc/salome/gui/SMESH/input/smeshpy_interface.doc
doc/salome/gui/SMESH/input/tui_work_on_objects_from_gui.doc
src/Controls/SMESH_Controls.cxx
src/SMESH/SMESH_MeshEditor.cxx
src/SMESH/SMESH_Pattern.cxx
src/SMESHGUI/SMESHGUI_MeshOp.cxx
src/StdMeshers/StdMeshers_Penta_3D.cxx
src/StdMeshers/StdMeshers_Quadrangle_2D.cxx
src/StdMeshers/StdMeshers_ViscousLayers.cxx
src/StdMeshers/StdMeshers_ViscousLayers2D.cxx

index 57a1440e0c554951fd92a49147ae2d8e8bb94216..665534d80700f9e58784827da94735f56ff3976c 100644 (file)
@@ -1,4 +1,4 @@
-# 3d mesh generation
+# 3d mesh generation and mesh exploration
 
 import salome
 salome.salome_init()
@@ -76,3 +76,20 @@ tetra.Compute()
 
 # Create a mesh group of all triangles generated on geom faces present in faces_group
 group = tetra.Group(faces_group)
+
+###
+# Explore the mesh
+###
+
+# Retrieve coordinates of nodes
+coordStr = ""
+for node in tetra.GetNodesId():
+    x,y,z = tetra.GetNodeXYZ( node )
+    coordStr += "%s (%s, %s, %s) " % ( node, x,y,z )
+    pass
+
+# Retrieve nodal connectivity of triangles
+triaStr = ""
+for tria in tetra.GetElementsByType( SMESH.FACE ):
+    nodes = tetra.GetElemNodes( tria )
+    triaStr += "%s (%s, %s, %s) " % ( tria, nodes[0], nodes[1], nodes[2] )
index 7de1cd33addd6c138fb1a2d1abced051f20de470..812e9428878883a49f86ffef2189c7bc7c2d6cc5 100644 (file)
@@ -38,3 +38,7 @@ print "MESH: Min aspect = %s, Max aspect = %s" % ( aspects[0], aspects[1] )
 # get max value of Aspect Ratio of faces in triaGroup
 grAspects = mesh.GetMinMax( SMESH.FT_AspectRatio, triaGroup )
 print "GROUP: Max aspect = %s" % grAspects[1]
+
+# get Aspect Ratio of an element
+aspect = mesh.FunctorValue( SMESH.FT_AspectRatio, ids[0] )
+print "Aspect ratio of the face %s = %s" % ( ids[0], aspect )
index 9181e43dfb8f94fb473a81f69ea726ee1133b292..4016a8359650805d5c358495a735012b7a4fbe27 100644 (file)
@@ -40,7 +40,7 @@ print "size", aGroup.Size()
 print "is empty", aGroup.IsEmpty()
 
 # check of presence of an entity in the group
-aGroup.Add([1,2]) # method specific to the standalone group
+aGroup.Add([1,2]) # Add() method is specific to the standalone group
 print "contains node 2", aGroup.Contains(2)
 
 # get an entity by index
index 92bd2f41da0aaaec4e1355ffcb97bafb05046bee..bbb287f2fb5433a0027ed990dacd3c64757a88e7 100644 (file)
@@ -18,7 +18,7 @@ in the \ref smeshBuilder and \ref StdMeshersBuilder Python packages.
 Class \ref smeshBuilder.smeshBuilder "smeshBuilder" provides an interface to create and handle
 meshes. It can be used to create an empty mesh or to import mesh from the data file.
 
-As soon as mesh is created, it is possible to manage it via its own
+As soon as mesh is created, it is possible to manage it via its own
 methods, described in class \ref smeshBuilder.Mesh "Mesh" documentation.
 
 Class \ref smeshstudytools.SMeshStudyTools "SMeshStudyTools" provides several methods to manipulate mesh objects in Salome study. 
@@ -57,7 +57,7 @@ A usual workflow to generate a mesh on geometry is following:
     <pre>
       \ref Mesh.Compute "mesh.Compute"()
     </pre>
-    </li>
+  </li>
 </ol>
 
 An easiest way to start with Python scripting is to do something in
@@ -68,7 +68,8 @@ by calling \a dir() Python built-in function.
 
 All methods of the Mesh Group can be found in \ref tui_create_standalone_group sample script.
 
-An example below demonstrates usage of the Python API for 3d mesh generation. 
+An example below demonstrates usage of the Python API for 3d mesh
+generation and for retrieving information on mesh nodes and elements.
 
 \anchor example_3d_mesh
 <h2>Example of 3d mesh generation:</h2>
index 569d821a91f89bb732c02ae920f71e071aa4a3ac..ddd1658a7f54985e28cf3eaca0ef1ed882a8ebc3 100644 (file)
@@ -4,16 +4,23 @@
 
 It is sometimes useful to work alternatively in the GUI of SALOME and in the Python Console. To fetch an object from the TUI simply type:
 
-\code
-myMesh_ref = salome.IDToObject("ID")  
-// were ID is the string looking like "0:1:2:3" that appears in the object browser in the Entry column 
-// ( If hidden show it by right clicking and checking the checkbox Entry)
+\code{.py}
+myMesh_ref = salome.IDToObject( ID )
+# were ID is a string looking like "0:1:2:3" that appears in the Object Browser in the Entry column.
+# ( If hidden, show it by right clicking and checking the checkbox Entry )
 myMesh = smesh.Mesh(myMesh_ref)
 \endcode
 or 
-\code
+\code{.py}
 myMesh_ref = salome.myStudy.FindObjectByPath("/Mesh/myMesh").GetObject() 
-// "/Mesh/myMesh" is the path to the desired object in the object browser
+#'/Mesh/myMesh' is a path to the desired object in the Object Browser
+myMesh = smesh.Mesh(myMesh_ref)
+\endcode
+or 
+\code{.py}
+# get a selected mesh
+from salome.gui import helper
+myMesh_ref = helper.getSObjectSelected()[0].GetObject() 
 myMesh = smesh.Mesh(myMesh_ref)
 \endcode
 
index e4efffe41c6dadb48bb69d664735b293289f60ee..f14444d584f6a17876718736f419a15495c6a433 100644 (file)
@@ -1869,7 +1869,7 @@ void Length2D::GetValues(TValues& theValues)
     }
     else {
       SMDS_ElemIteratorPtr aNodesIter = anElem->nodesIterator();
-      long aNodeId[2];
+      long aNodeId[2] = {0,0};
       gp_Pnt P[3];
 
       double aLength;
index e4f2bda0016f622017fc722f46e86d4370c17b7b..5969649c0fc4d14099f0a406c5f5c71c6da239f4 100644 (file)
@@ -2124,7 +2124,7 @@ namespace
 
     // No adjacent prisms. Select a variant with a best aspect ratio.
 
-    double badness[2] = { 0, 0 };
+    double badness[2] = { 0., 0. };
     static SMESH::Controls::NumericalFunctorPtr aspectRatio( new SMESH::Controls::AspectRatio);
     const SMDS_MeshNode** nodes = vol.GetNodes();
     for ( int variant = 0; variant < nbVariants; ++variant )
index f38622a34e046e9a36e9b9d507179c36a702acca..c317869bc546c079aec808ccd951790a3d054784 100644 (file)
@@ -660,7 +660,7 @@ bool SMESH_Pattern::Load (SMESH_Mesh*        theMesh,
       const TopoDS_Vertex v = TopoDS::Vertex( vExp.Current() );
       gp_Pnt2d uv = BRep_Tool::Parameters( v, face );
       double minDist = DBL_MAX;
-      int index;
+      int index = 0;
       vector< TPoint >::const_iterator pVecIt = myPoints.begin();
       for ( iPoint = 0; pVecIt != myPoints.end(); pVecIt++, iPoint++ ) {
         double dist = uv.SquareDistance( (*pVecIt).myInitUV );
index 33472f9376b1a90d751693c1ae75e9ec3431236a..b6c53436919659381b67d54b348281e1d3c4cec3 100644 (file)
@@ -2726,7 +2726,7 @@ void SMESHGUI_MeshOp::setFilteredAlgoData( const int theTabIndex, const int theI
   }
   else
   {
-    HypothesisData* anCurrentAlgo;
+    HypothesisData* anCurrentAlgo = 0;
     bool isReqDisBound = true;
     QString anCurrentCompareType = anCompareType;
     isNone = currentHyp( aDim, Algo ) < 0;
index 8a852edb9af21ab99a2ccf99c84e66e8353cee4a..6b4ca9b05e642344835405813495ef71e8ed17bb 100644 (file)
@@ -360,7 +360,7 @@ void StdMeshers_Penta_3D::MakeNodes()
     // set XYZ on horizontal edges and get node columns of faces:
     // 2 columns for each face, between which a base node is located
     vector<const SMDS_MeshNode*>* nColumns[8];
-    double ratio[ NB_WALL_FACES ]; // base node position between columns [0.-1.]
+    double ratio[ NB_WALL_FACES ] = {0,0,0,0}; // base node position between columns [0.-1.]
     if ( createNode ) {
       for ( k = 0; k < NB_WALL_FACES ; ++k ) {
         ratio[ k ] = SetHorizEdgeXYZ (aBNXYZ, wallFaceID[ k ],
index 955fc11473dab13d350b0d50d1efa403ef267674..e9e6ad82744158deec6e4d168e76324b3eb57343 100644 (file)
@@ -3300,7 +3300,7 @@ bool StdMeshers_Quadrangle_2D::computeReduced (SMESH_Mesh &        aMesh,
 
     UVPtStruct nullUVPtStruct;
     nullUVPtStruct.node = 0;
-    nullUVPtStruct.x = nullUVPtStruct.y = nullUVPtStruct.u = nullUVPtStruct.y = 0;
+    nullUVPtStruct.x = nullUVPtStruct.y = nullUVPtStruct.u = nullUVPtStruct.v = 0;
     nullUVPtStruct.param = 0;
     
 
index 1b4e6ab04f25408466f1f7018a60571a60a1b11d..9ee7df1c98a4f7d51f1e23c170661379d3b0ad1d 100644 (file)
@@ -94,7 +94,7 @@
 #include <string>
 
 #ifdef _DEBUG_
-#define __myDEBUG
+//#define __myDEBUG
 //#define __NOT_INVALIDATE_BAD_SMOOTH
 #endif
 
index 4e78b7157b52a5b3eb869b48ef60cdee994ae9f3..cd91c7391554e5aa63b773be64867eee028acf3e 100644 (file)
@@ -300,7 +300,7 @@ namespace VISCOUS_2D
     double   _D;               // _vec1.Crossed( _vec2 )
     double   _param1, _param2; // intersection param on _seg1 and _seg2
 
-    _SegmentIntersection(): _param1(0), _param2(0), _D(0) {}
+    _SegmentIntersection(): _D(0), _param1(0), _param2(0) {}
 
     bool Compute(const _Segment& seg1, const _Segment& seg2, bool seg2IsRay = false )
     {
@@ -562,7 +562,7 @@ void StdMeshers_ViscousLayers2D::SetProxyMeshOfEdge( const StdMeshers_FaceSide&
 // --------------------------------------------------------------------------------
 bool StdMeshers_ViscousLayers2D::HasProxyMesh( const TopoDS_Face& face, SMESH_Mesh& mesh )
 {
-  return VISCOUS_2D::_ProxyMeshHolder::FindProxyMeshOfFace( face, mesh );
+  return VISCOUS_2D::_ProxyMeshHolder::FindProxyMeshOfFace( face, mesh ).get();
 }
 // --------------------------------------------------------------------------------
 SMESH_ComputeErrorPtr