Salome HOME
PAL16202,16203 (Propagation 1D on edges group)
[modules/smesh.git] / src / SMESH_I / SMESH_Mesh_i.cxx
index d10e9014114cf702cb973ea2b7c5d13edd497260..8180e43a8587ee8c72a06e9f86307cc7bfaf8170 100644 (file)
@@ -364,9 +364,14 @@ SMESH::Hypothesis_Status SMESH_Mesh_i::AddHypothesis(GEOM::GEOM_Object_ptr aSubS
   if(MYDEBUG) MESSAGE( " AddHypothesis(): status = " << status );
 
   // Update Python script
-  TPythonDump() << "status = " << _this() << ".AddHypothesis( "
-                << aSubShapeObject << ", " << anHyp << " )";
-
+  if(_impl->HasShapeToMesh()) {
+    TPythonDump() << "status = " << _this() << ".AddHypothesis( "
+                  << aSubShapeObject << ", " << anHyp << " )";
+  }
+  else {
+    TPythonDump() << "status = " << _this() << ".AddHypothesis( "<< anHyp << " )";
+  }
+  
   return ConvertHypothesisStatus(status);
 }
 
@@ -382,7 +387,7 @@ SMESH_Hypothesis::Hypothesis_Status
 {
   if(MYDEBUG) MESSAGE("addHypothesis");
 
-  if (CORBA::is_nil(aSubShapeObject))
+  if (CORBA::is_nil(aSubShapeObject) && HasShapeToMesh())
     THROW_SALOME_CORBA_EXCEPTION("bad subShape reference",
                                  SALOME::BAD_PARAM);
 
@@ -394,7 +399,13 @@ SMESH_Hypothesis::Hypothesis_Status
   SMESH_Hypothesis::Hypothesis_Status status = SMESH_Hypothesis::HYP_OK;
   try
   {
-    TopoDS_Shape myLocSubShape = _gen_i->GeomObjectToShape( aSubShapeObject);
+    TopoDS_Shape myLocSubShape;
+    //use PseudoShape in case if mesh has no shape
+    if(HasShapeToMesh())
+      myLocSubShape = _gen_i->GeomObjectToShape( aSubShapeObject);
+    else              
+      myLocSubShape = _impl->GetShapeToMesh();
+    
     int hypId = myHyp->GetId();
     status = _impl->AddHypothesis(myLocSubShape, hypId);
     if ( !SMESH_Hypothesis::IsStatusFatal(status) ) {
@@ -432,8 +443,15 @@ SMESH::Hypothesis_Status SMESH_Mesh_i::RemoveHypothesis(GEOM::GEOM_Object_ptr aS
                                       aSubShapeObject, anHyp );
 
   // Update Python script
+    // Update Python script
+  if(_impl->HasShapeToMesh()) {
   TPythonDump() << "status = " << _this() << ".RemoveHypothesis( "
                 << aSubShapeObject << ", " << anHyp << " )";
+  }
+  else {
+    TPythonDump() << "status = " << _this() << ".RemoveHypothesis( "
+                  << anHyp << " )";
+  }
 
   return ConvertHypothesisStatus(status);
 }
@@ -450,7 +468,7 @@ SMESH_Hypothesis::Hypothesis_Status SMESH_Mesh_i::removeHypothesis(GEOM::GEOM_Ob
        if(MYDEBUG) MESSAGE("removeHypothesis()");
        // **** proposer liste de subShape (selection multiple)
 
-       if (CORBA::is_nil(aSubShapeObject))
+       if (CORBA::is_nil(aSubShapeObject) && HasShapeToMesh())
                THROW_SALOME_CORBA_EXCEPTION("bad subShape reference",
                        SALOME::BAD_PARAM);
 
@@ -462,8 +480,14 @@ SMESH_Hypothesis::Hypothesis_Status SMESH_Mesh_i::removeHypothesis(GEOM::GEOM_Ob
        SMESH_Hypothesis::Hypothesis_Status status = SMESH_Hypothesis::HYP_OK;
        try
        {
-               TopoDS_Shape myLocSubShape = _gen_i->GeomObjectToShape(aSubShapeObject);
-               int hypId = myHyp->GetId();
+                TopoDS_Shape myLocSubShape;
+                //use PseudoShape in case if mesh has no shape
+                if(HasShapeToMesh())
+                  myLocSubShape = _gen_i->GeomObjectToShape( aSubShapeObject);
+                else
+                  myLocSubShape = _impl->GetShapeToMesh();
+                
+                int hypId = myHyp->GetId();
                status = _impl->RemoveHypothesis(myLocSubShape, hypId);
                 if ( !SMESH_Hypothesis::IsStatusFatal(status) )
                   _mapHypo.erase( hypId );
@@ -1368,6 +1392,29 @@ SMESH::SMESH_MeshEditor_ptr SMESH_Mesh_i::GetMeshEditPreviewer()
   return aMesh._retn();
 }
 
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+void SMESH_Mesh_i::SetAutoColor(CORBA::Boolean theAutoColor) throw(SALOME::SALOME_Exception)
+{
+  Unexpect aCatch(SALOME_SalomeException);
+  _impl->SetAutoColor(theAutoColor);
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+CORBA::Boolean SMESH_Mesh_i::GetAutoColor() throw(SALOME::SALOME_Exception)
+{
+  Unexpect aCatch(SALOME_SalomeException);
+  return _impl->GetAutoColor();
+}
+
+
 //=============================================================================
 /*!
  *  Export in different formats
@@ -1561,7 +1608,7 @@ CORBA::Long SMESH_Mesh_i::NbEdgesOfOrder(SMESH::ElementOrder order)
   throw(SALOME::SALOME_Exception)
 {
   Unexpect aCatch(SALOME_SalomeException);
-  return _impl->NbEdges( (::SMESH_Mesh::ElementOrder) order);
+  return _impl->NbEdges( (SMDSAbs_ElementOrder) order);
 }
 
 //=============================================================================
@@ -1597,21 +1644,21 @@ CORBA::Long SMESH_Mesh_i::NbFacesOfOrder(SMESH::ElementOrder order)
   throw(SALOME::SALOME_Exception)
 {
   Unexpect aCatch(SALOME_SalomeException);
-  return _impl->NbFaces( (::SMESH_Mesh::ElementOrder) order);
+  return _impl->NbFaces( (SMDSAbs_ElementOrder) order);
 }
 
 CORBA::Long SMESH_Mesh_i::NbTrianglesOfOrder(SMESH::ElementOrder order)
   throw(SALOME::SALOME_Exception)
 {
   Unexpect aCatch(SALOME_SalomeException);
-  return _impl->NbTriangles( (::SMESH_Mesh::ElementOrder) order);
+  return _impl->NbTriangles( (SMDSAbs_ElementOrder) order);
 }
 
 CORBA::Long SMESH_Mesh_i::NbQuadranglesOfOrder(SMESH::ElementOrder order)
   throw(SALOME::SALOME_Exception)
 {
   Unexpect aCatch(SALOME_SalomeException);
-  return _impl->NbQuadrangles( (::SMESH_Mesh::ElementOrder) order);
+  return _impl->NbQuadrangles( (SMDSAbs_ElementOrder) order);
 }
 
 //=============================================================================
@@ -1659,35 +1706,35 @@ CORBA::Long SMESH_Mesh_i::NbVolumesOfOrder(SMESH::ElementOrder order)
   throw(SALOME::SALOME_Exception)
 {
   Unexpect aCatch(SALOME_SalomeException);
-  return _impl->NbVolumes( (::SMESH_Mesh::ElementOrder) order);
+  return _impl->NbVolumes( (SMDSAbs_ElementOrder) order);
 }
 
 CORBA::Long SMESH_Mesh_i::NbTetrasOfOrder(SMESH::ElementOrder order)
   throw(SALOME::SALOME_Exception)
 {
   Unexpect aCatch(SALOME_SalomeException);
-  return _impl->NbTetras( (::SMESH_Mesh::ElementOrder) order);
+  return _impl->NbTetras( (SMDSAbs_ElementOrder) order);
 }
 
 CORBA::Long SMESH_Mesh_i::NbHexasOfOrder(SMESH::ElementOrder order)
   throw(SALOME::SALOME_Exception)
 {
   Unexpect aCatch(SALOME_SalomeException);
-  return _impl->NbHexas( (::SMESH_Mesh::ElementOrder) order);
+  return _impl->NbHexas( (SMDSAbs_ElementOrder) order);
 }
 
 CORBA::Long SMESH_Mesh_i::NbPyramidsOfOrder(SMESH::ElementOrder order)
   throw(SALOME::SALOME_Exception)
 {
   Unexpect aCatch(SALOME_SalomeException);
-  return _impl->NbPyramids( (::SMESH_Mesh::ElementOrder) order);
+  return _impl->NbPyramids( (SMDSAbs_ElementOrder) order);
 }
 
 CORBA::Long SMESH_Mesh_i::NbPrismsOfOrder(SMESH::ElementOrder order)
   throw(SALOME::SALOME_Exception)
 {
   Unexpect aCatch(SALOME_SalomeException);
-  return _impl->NbPrisms( (::SMESH_Mesh::ElementOrder) order);
+  return _impl->NbPrisms( (SMDSAbs_ElementOrder) order);
 }
 
 //=============================================================================