X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESH_I%2FSMESH_Gen_i.cxx;h=d9c404cd93a4b90b4425cbecf6cb4fc7b82a0e42;hp=aeed1e4b8c35db49388fa076d59d63fbc6a791ac;hb=30d5082e4a692315bebd1b3dd8fbeaffc8bb8285;hpb=8b4ba0cdff7660465a9ea7b26ef0df0757afed97 diff --git a/src/SMESH_I/SMESH_Gen_i.cxx b/src/SMESH_I/SMESH_Gen_i.cxx index aeed1e4b8..d9c404cd9 100644 --- a/src/SMESH_I/SMESH_Gen_i.cxx +++ b/src/SMESH_I/SMESH_Gen_i.cxx @@ -1,14 +1,32 @@ -using namespace std; -//============================================================================= -// File : SMESH_Gen_i.cxx -// Created : lun mai 6 13:41:35 CEST 2002 -// Author : Paul RASCLE, EDF -// Project : SALOME -// Copyright : EDF 2002 -// $Header$ -//============================================================================= -using namespace std; +// SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// +// +// +// File : SMESH_Gen_i.cxx +// Author : Paul RASCLE, EDF +// Module : SMESH +// $Header$ +using namespace std; #include #include #include @@ -35,6 +53,7 @@ using namespace std; #include "SMESH_LocalLength_i.hxx" #include "SMESH_NumberOfSegments_i.hxx" #include "SMESH_MaxElementArea_i.hxx" +#include "SMESH_MaxElementVolume_i.hxx" #include "SMESHDS_Document.hxx" @@ -447,7 +466,7 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save(SALOMEDS::SComponent_ptr theComponent, //************branch 1 : hypothesis if (gotBranch->Tag()==Tag_HypothesisRoot) { //hypothesis = tag 1 - double length,maxElementsArea; + double length,maxElementsArea,maxElementsVolume; int numberOfSegments; destFile = fopen( hypofile.ToCString() ,"w"); @@ -477,6 +496,11 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save(SALOMEDS::SComponent_ptr theComponent, maxElementsArea = MEA->GetMaxElementArea(); fprintf(destFile,"%f\n",maxElementsArea); } + else if (strcmp(myHyp->GetName(),"MaxElementVolume")==0) { + SMESH::SMESH_MaxElementVolume_var MEV = SMESH::SMESH_MaxElementVolume::_narrow( myHyp ); + maxElementsVolume = MEV->GetMaxElementVolume(); + fprintf(destFile,"%f\n",maxElementsVolume); + } } } fclose(destFile); @@ -553,7 +577,7 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save(SALOMEDS::SComponent_ptr theComponent, int meshId = myMesh->GetId(); SMESH_Mesh_i* meshServant = myStudyContext->mapMesh_i[meshId]; ::SMESH_Mesh& myLocMesh = meshServant->GetImpl(); - Handle(SMESHDS_Mesh) mySMESHDSMesh = myLocMesh.GetMeshDS(); + SMESHDS_Mesh* mySMESHDSMesh = myLocMesh.GetMeshDS(); SCRUTE(mySMESHDSMesh->NbNodes()); if (mySMESHDSMesh->NbNodes()>0) {//checks if the mesh is not empty @@ -831,6 +855,13 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save(SALOMEDS::SComponent_ptr theComponent, return aStreamFile._retn(); } +SALOMEDS::TMPFile* SMESH_Gen_i::SaveASCII(SALOMEDS::SComponent_ptr theComponent, + const char* theURL, + bool isMultiFile) { + SALOMEDS::TMPFile_var aStreamFile = Save(theComponent, theURL, isMultiFile); + return aStreamFile._retn(); +} + //============================================================================= /*! * @@ -920,7 +951,7 @@ bool SMESH_Gen_i::Load(SALOMEDS::SComponent_ptr theComponent, //*************** if (strcmp(name,"Hypothesis")==0) { - double length,maxElementsArea; + double length,maxElementsArea,maxElementsVolume; int numberOfSegments; hdf_group[Tag_HypothesisRoot] = new HDFgroup(name,hdf_file); @@ -975,6 +1006,16 @@ bool SMESH_Gen_i::Load(SALOMEDS::SComponent_ptr theComponent, sprintf(objectId,"%d",MEA->GetId()); _SMESHCorbaObj[string("Hypo_")+string(objectId)] = iorString; } + else if (strcmp(aLine,"MaxElementVolume")==0) { + SMESH::SMESH_Hypothesis_var myHyp = this->CreateHypothesis(aLine,studyId); + SMESH::SMESH_MaxElementVolume_var MEV = SMESH::SMESH_MaxElementVolume::_narrow( myHyp ); + fscanf(loadedFile,"%s",aLine); + maxElementsVolume = atof(aLine); + MEV->SetMaxElementVolume(maxElementsVolume); + string iorString = _orb->object_to_string(MEV); + sprintf(objectId,"%d",MEV->GetId()); + _SMESHCorbaObj[string("Hypo_")+string(objectId)] = iorString; + } } @@ -1111,7 +1152,7 @@ bool SMESH_Gen_i::Load(SALOMEDS::SComponent_ptr theComponent, int meshId = myNewMesh->GetId(); SMESH_Mesh_i* meshServant = myStudyContext->mapMesh_i[meshId]; ::SMESH_Mesh& myLocMesh = meshServant->GetImpl(); - Handle(SMESHDS_Mesh) mySMESHDSMesh = myLocMesh.GetMeshDS(); + SMESHDS_Mesh* mySMESHDSMesh = myLocMesh.GetMeshDS(); DriverMED_R_SMESHDS_Mesh* myReader = new DriverMED_R_SMESHDS_Mesh; @@ -1404,6 +1445,13 @@ bool SMESH_Gen_i::Load(SALOMEDS::SComponent_ptr theComponent, return true; } +bool SMESH_Gen_i::LoadASCII(SALOMEDS::SComponent_ptr theComponent, + const SALOMEDS::TMPFile& theStream, + const char* theURL, + bool isMultiFile) { + return Load(theComponent, theStream, theURL, isMultiFile); +} + //============================================================================= /*! * @@ -1493,7 +1541,8 @@ char* SMESH_Gen_i::ComponentDataType() char* SMESH_Gen_i::IORToLocalPersistentID(SALOMEDS::SObject_ptr theSObject, const char* IORString, - CORBA::Boolean isMultiFile) + CORBA::Boolean isMultiFile, + CORBA::Boolean isASCII) { MESSAGE("SMESH_Gen_i::IORToLocalPersistentID"); @@ -1548,7 +1597,8 @@ char* SMESH_Gen_i::IORToLocalPersistentID(SALOMEDS::SObject_ptr theSObject, char* SMESH_Gen_i::LocalPersistentIDToIOR(SALOMEDS::SObject_ptr theSObject, const char* aLocalPersistentID, - CORBA::Boolean isMultiFile) + CORBA::Boolean isMultiFile, + CORBA::Boolean isASCII) { MESSAGE("SMESH_Gen_i::LocalPersistentIDToIOR"); SCRUTE(aLocalPersistentID);