X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGEOM_I_Superv%2FGEOM_Superv_i.cc;h=867a5c6f7cea632c19746847fad64ae03b00bc4a;hb=2c3b809cb74cbb115d7d399f22e8d07f0d67e85c;hp=792cbe5ae2efbf0af16cd4296b45b7cd0359f332;hpb=a4aaa470ae85e6bb5bfe9cdd7f9681f88ce41c96;p=modules%2Fgeom.git diff --git a/src/GEOM_I_Superv/GEOM_Superv_i.cc b/src/GEOM_I_Superv/GEOM_Superv_i.cc index 792cbe5ae..867a5c6f7 100644 --- a/src/GEOM_I_Superv/GEOM_Superv_i.cc +++ b/src/GEOM_I_Superv/GEOM_Superv_i.cc @@ -394,13 +394,108 @@ void GEOM_Superv_i::getAdvancedOp() { if (CORBA::is_nil(myGeomEngine)) setGeomEngine(); - // get GEOM_IAdvancedOperations interface + // get GEOM::IAdvancedOperations interface if (CORBA::is_nil(myAdvancedOp) || isNewStudy(myLastStudyID,myStudyID)) { //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS" // Try to get id of the study from the SALOME Session if(myStudyID < 0 ) SetStudyID(-1); - //myAdvancedOp = myGeomEngine->GetIAdvancedOperations(myStudyID); - myAdvancedOp = GEOM::GEOM_IAdvancedOperations::_narrow(myGeomEngine->GetPluginOperations(myStudyID, "AdvancedEngine")); + myAdvancedOp = GEOM::IAdvancedOperations::_narrow(myGeomEngine->GetPluginOperations(myStudyID, "AdvancedEngine")); + } +} + +//============================================================================= +// getSTLPluginOp: +//============================================================================= +void GEOM_Superv_i::getSTLPluginOp() +{ + if (CORBA::is_nil(myGeomEngine)) + setGeomEngine(); + // get GEOM::ISTLOperations interface + if (CORBA::is_nil(mySTLOp) || isNewStudy(myLastStudyID,myStudyID)) { + //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS" + // Try to get id of the study from the SALOME Session + if(myStudyID < 0 ) SetStudyID(-1); + mySTLOp = GEOM::ISTLOperations::_narrow(myGeomEngine->GetPluginOperations(myStudyID, "STLPluginEngine")); + } +} + +//============================================================================= +// getBREPPluginOp: +//============================================================================= +void GEOM_Superv_i::getBREPPluginOp() +{ + if (CORBA::is_nil(myGeomEngine)) + setGeomEngine(); + // get GEOM:IBREPOperations interface + if (CORBA::is_nil(myBREPOp) || isNewStudy(myLastStudyID,myStudyID)) { + //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS" + // Try to get id of the study from the SALOME Session + if(myStudyID < 0 ) SetStudyID(-1); + myBREPOp = GEOM::IBREPOperations::_narrow(myGeomEngine->GetPluginOperations(myStudyID, "BREPPluginEngine")); + } +} + +//============================================================================= +// getSTEPPluginOp: +//============================================================================= +void GEOM_Superv_i::getSTEPPluginOp() +{ + if (CORBA::is_nil(myGeomEngine)) + setGeomEngine(); + // get GEOM::ISTEPOperations interface + if (CORBA::is_nil(mySTEPOp) || isNewStudy(myLastStudyID,myStudyID)) { + //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS" + // Try to get id of the study from the SALOME Session + if(myStudyID < 0 ) SetStudyID(-1); + mySTEPOp = GEOM::ISTEPOperations::_narrow(myGeomEngine->GetPluginOperations(myStudyID, "STEPPluginEngine")); + } +} + +//============================================================================= +// getIGESPluginOp: +//============================================================================= +void GEOM_Superv_i::getIGESPluginOp() +{ + if (CORBA::is_nil(myGeomEngine)) + setGeomEngine(); + // get GEOM::IIGESOperations interface + if (CORBA::is_nil(myIGESOp) || isNewStudy(myLastStudyID,myStudyID)) { + //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS" + // Try to get id of the study from the SALOME Session + if(myStudyID < 0 ) SetStudyID(-1); + myIGESOp = GEOM::IIGESOperations::_narrow(myGeomEngine->GetPluginOperations(myStudyID, "IGESPluginEngine")); + } +} + +//============================================================================= +// getXAOPluginOp: +//============================================================================= +void GEOM_Superv_i::getXAOPluginOp() +{ + if (CORBA::is_nil(myGeomEngine)) + setGeomEngine(); + // get GEOM::IXAOOperations interface + if (CORBA::is_nil(myXAOOp) || isNewStudy(myLastStudyID,myStudyID)) { + //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS" + // Try to get id of the study from the SALOME Session + if(myStudyID < 0 ) SetStudyID(-1); + myXAOOp = GEOM::IXAOOperations::_narrow(myGeomEngine->GetPluginOperations(myStudyID, "XAOPluginEngine")); + } +} + +//============================================================================= +// getVTKPluginOp: +//============================================================================= +void GEOM_Superv_i::getVTKPluginOp() +{ + if (CORBA::is_nil(myGeomEngine)) + setGeomEngine(); + // get GEOM::IVTKOperations interface + if (CORBA::is_nil(myVTKOp) || isNewStudy(myLastStudyID,myStudyID)) { + //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS" + // Try to get id of the study from the SALOME Session + if(myStudyID < 0 ) SetStudyID(-1); + myVTKOp = GEOM::IVTKOperations::_narrow(myGeomEngine->GetPluginOperations(myStudyID, "VTKPluginEngine")); } } @@ -1073,6 +1168,38 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderRH (CORBA::Double theR, return anObj; } +//============================================================================= +// MakeCylinderPntVecRHA: +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderPntVecRHA (GEOM::GEOM_Object_ptr thePnt, + GEOM::GEOM_Object_ptr theAxis, + CORBA::Double theRadius, + CORBA::Double theHeight, + CORBA::Double theAngle) +{ + beginService( " GEOM_Superv_i::MakeCylinderPntVecRHA" ); + MESSAGE("GEOM_Superv_i::MakeCylinderPntVecRHA"); + get3DPrimOp(); + GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderPntVecRHA(thePnt, theAxis, theRadius, theHeight, theAngle); + endService( " GEOM_Superv_i::MakeCylinderPntVecRHA" ); + return anObj; +} + +//============================================================================= +// MakeCylinderRHA: +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderRHA (CORBA::Double theR, + CORBA::Double theH, + CORBA::Double theA) +{ + beginService( " GEOM_Superv_i::MakeCylinderRHA" ); + MESSAGE("GEOM_Superv_i::MakeCylinderRHA"); + get3DPrimOp(); + GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderRHA(theR, theH, theA); + endService( " GEOM_Superv_i::MakeCylinderRHA" ); + return anObj; +} + //============================================================================= // MakeSphere: //============================================================================= @@ -1588,41 +1715,15 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::ImportFile (const char* theFileName, beginService( " GEOM_Superv_i::ImportFile" ); MESSAGE("GEOM_Superv_i::ImportFile"); getInsOp(); - GEOM::ListOfGO* aSeq = myInsOp->ImportFile(theFileName, theFormatName); - GEOM::GEOM_Object_ptr anObj; + GEOM::ListOfGBO_var aSeq = myInsOp->ImportFile(theFileName, theFormatName); + GEOM::GEOM_Object_var anObj; if (aSeq->length() > 0) { - anObj = aSeq->operator[](0); + anObj = GEOM::GEOM_Object::_narrow(aSeq[0]); } endService( " GEOM_Superv_i::ImportFile" ); - return anObj; -} - -//============================================================================= -// ImportTranslators: -//============================================================================= -void GEOM_Superv_i::ImportTranslators (GEOM::string_array_out theFormats, - GEOM::string_array_out thePatterns) -{ - beginService( " GEOM_Superv_i::ImportTranslators" ); - MESSAGE("GEOM_Superv_i::ImportTranslators"); - getInsOp(); - myInsOp->ImportTranslators(theFormats, thePatterns); - endService( " GEOM_Superv_i::ImportTranslators" ); -} - -//============================================================================= -// ExportTranslators: -//============================================================================= -void GEOM_Superv_i::ExportTranslators (GEOM::string_array_out theFormats, - GEOM::string_array_out thePatterns) -{ - beginService( " GEOM_Superv_i::ExportTranslators" ); - MESSAGE("GEOM_Superv_i::ExportTranslators"); - getInsOp(); - myInsOp->ExportTranslators(theFormats, thePatterns); - endService( " GEOM_Superv_i::ExportTranslators" ); + return anObj._retn(); } //============================= TransformOperations =========================== @@ -3335,30 +3436,183 @@ GEOM::GEOM_List_ptr GEOM_Superv_i::GetObjects (GEOM::GEOM_Object_ptr theGroup) return aListPtr->_this(); } +//=============================== Import/Export Operations ============================= +//============================================================================= +// Export STL +//============================================================================= +void GEOM_Superv_i::ExportSTL( GEOM::GEOM_Object_ptr theObject, + const char* theFileName, + const bool theIsASCII, + CORBA::Double theDeflection, + const bool theIsRelative ) +{ + beginService( " GEOM_Superv_i::ExportSTL" ); + MESSAGE("GEOM_Superv_i::ExportSTL"); + getSTLPluginOp(); + mySTLOp->ExportSTL( theObject, theFileName, theIsASCII, theDeflection, theIsRelative ); + endService( " GEOM_Superv_i::ExportSTL" ); +} + +//============================================================================= +// Import STL +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_Superv_i::ImportSTL( const char* theFileName ) +{ + beginService( " GEOM_Superv_i::ImportSTL" ); + MESSAGE("GEOM_Superv_i::ImportSTL"); + getSTLPluginOp(); + GEOM::ListOfGO* aSeq = mySTLOp->ImportSTL(theFileName ); + GEOM::GEOM_Object_ptr anObj; + + if (aSeq->length() > 0) { + anObj = aSeq->operator[](0); + } + + endService( " GEOM_Superv_i::ImportSTL" ); + return anObj; +} + +//============================================================================= +// Export BREP +//============================================================================= +void GEOM_Superv_i::ExportBREP( GEOM::GEOM_Object_ptr theObject, + const char* theFileName ) +{ + beginService( " GEOM_Superv_i::ExportBREP" ); + MESSAGE("GEOM_Superv_i::ExportBREP"); + getBREPPluginOp(); + myBREPOp->ExportBREP( theObject, theFileName ); + endService( " GEOM_Superv_i::ExportBREP" ); +} + +//============================================================================= +// Import BREP +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_Superv_i::ImportBREP( const char* theFileName ) +{ + beginService( " GEOM_Superv_i::ImportBREP" ); + MESSAGE("GEOM_Superv_i::ImportBREP"); + getBREPPluginOp(); + GEOM::ListOfGO* aSeq = myBREPOp->ImportBREP(theFileName ); + GEOM::GEOM_Object_ptr anObj; + + if (aSeq->length() > 0) { + anObj = aSeq->operator[](0); + } + + endService( " GEOM_Superv_i::ImportBREP" ); + return anObj; +} + +//============================================================================= +// Export STEP +//============================================================================= +void GEOM_Superv_i::ExportSTEP( GEOM::GEOM_Object_ptr theObject, + const char* theFileName ) +{ + beginService( " GEOM_Superv_i::ExportSTEP" ); + MESSAGE("GEOM_Superv_i::ExportSTEP"); + getSTEPPluginOp(); + mySTEPOp->ExportSTEP( theObject, theFileName ); + endService( " GEOM_Superv_i::ExportSTEP" ); +} + +//============================================================================= +// Import STEP +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_Superv_i::ImportSTEP( const char* theFileName, + const bool theIsIgnoreUnits ) +{ + beginService( " GEOM_Superv_i::ImportSTEP" ); + MESSAGE("GEOM_Superv_i::ImportSTEP"); + getSTEPPluginOp(); + GEOM::ListOfGO* aSeq = mySTEPOp->ImportSTEP(theFileName, theIsIgnoreUnits ); + GEOM::GEOM_Object_ptr anObj; + + if (aSeq->length() > 0) { + anObj = aSeq->operator[](0); + } + + endService( " GEOM_Superv_i::ImportSTEP" ); + return anObj; +} + +//============================================================================= +// Export IGES +//============================================================================= +void GEOM_Superv_i::ExportIGES( GEOM::GEOM_Object_ptr theObject, + const char* theFileName, + const char* theVersion ) +{ + beginService( " GEOM_Superv_i::ExportIGES" ); + MESSAGE("GEOM_Superv_i::ExportIGES"); + getIGESPluginOp(); + myIGESOp->ExportIGES( theObject, theFileName, theVersion ); + endService( " GEOM_Superv_i::ExportIGES" ); +} + //============================================================================= -// ExportXAO +// Import IGES //============================================================================= -CORBA::Boolean GEOM_Superv_i::ExportXAO (GEOM::GEOM_Object_ptr shape, - const GEOM::ListOfGO& groups, const GEOM::ListOfFields& fields, - const char* author, const char* fileName) +GEOM::GEOM_Object_ptr GEOM_Superv_i::ImportIGES( const char* theFileName, + const bool theIsIgnoreUnits ) +{ + beginService( " GEOM_Superv_i::ImportIGES" ); + MESSAGE("GEOM_Superv_i::ImportIGES"); + getIGESPluginOp(); + GEOM::ListOfGO* aSeq = myIGESOp->ImportIGES(theFileName, theIsIgnoreUnits ); + GEOM::GEOM_Object_ptr anObj; + + if (aSeq->length() > 0) { + anObj = aSeq->operator[](0); + } + + endService( " GEOM_Superv_i::ImportIGES" ); + return anObj; +} + +//============================================================================= +// Export XAO +//============================================================================= +CORBA::Boolean GEOM_Superv_i::ExportXAO( GEOM::GEOM_Object_ptr shape, + const GEOM::ListOfGO& groups, + const GEOM::ListOfFields& fields, + const char* author, const char* fileName ) { beginService( " GEOM_Superv_i::ExportXAO" ); MESSAGE("GEOM_Superv_i::ExportXAO"); - getInsOp(); - CORBA::Boolean isGood = myInsOp->ExportXAO(shape, groups, fields, author, fileName); + getXAOPluginOp(); + CORBA::Boolean isGood = myXAOOp->ExportXAO( shape, groups, fields, author, fileName ); endService( " GEOM_Superv_i::ExportXAO" ); return isGood; } //============================================================================= -// ImportXAO +// Import XAO //============================================================================= -CORBA::Boolean GEOM_Superv_i::ImportXAO (const char* fileName, GEOM::GEOM_Object_out shape, - GEOM::ListOfGO_out subShapes, GEOM::ListOfGO_out groups, GEOM::ListOfFields_out fields) +CORBA::Boolean GEOM_Superv_i::ImportXAO( const char* fileName, + GEOM::GEOM_Object_out shape, + GEOM::ListOfGO_out subShapes, + GEOM::ListOfGO_out groups, + GEOM::ListOfFields_out fields ) { return false; } +//============================================================================= +// Export VTK +//============================================================================= +void GEOM_Superv_i::ExportVTK( GEOM::GEOM_Object_ptr theObject, + const char* theFileName, + CORBA::Double theDeflection ) +{ + beginService( " GEOM_Superv_i::ExportVTK" ); + MESSAGE("GEOM_Superv_i::ExportVTK"); + getVTKPluginOp(); + myVTKOp->ExportVTK( theObject, theFileName, theDeflection ); + endService( " GEOM_Superv_i::ExportVTK" ); +} + //=============================== Advanced Operations ============================= //============================================================================= // MakePipeTShape