-// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 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.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
#include "GEOM_Superv_i.hh"
#include "SALOME_LifeCycleCORBA.hxx"
+#include "Utils_CorbaException.hxx"
#include CORBA_SERVER_HEADER(SALOME_Session)
#include "SALOMEDSClient_ClientFactory.hxx"
setGeomEngine();
- myStudyID = -1;
- myLastStudyID = -1;
-
myBasicOp = GEOM::GEOM_IBasicOperations::_nil();
my3DPrimOp = GEOM::GEOM_I3DPrimOperations::_nil();
myBoolOp = GEOM::GEOM_IBooleanOperations::_nil();
myGeomEngine = GEOM::GEOM_Gen::_narrow(comp);
}
-//=============================================================================
-// SetStudyID:
-//=============================================================================
-void GEOM_Superv_i::SetStudyID( CORBA::Long theId )
-{
- // mkr : PAL10770 -->
- myLastStudyID = myStudyID;
-
- CORBA::Object_ptr anObject = name_service->Resolve("/Kernel/Session");
- if ( !CORBA::is_nil(anObject) ) {
- SALOME::Session_var aSession = SALOME::Session::_narrow(anObject);
- if ( !CORBA::is_nil(aSession) ) {
- int aStudyID = aSession->GetActiveStudyId();
- if ( theId != aStudyID && aStudyID > 0) { // mkr : IPAL12128
- MESSAGE("Warning : given study ID theId="<<theId<<" is wrong and will be replaced by the value "<<aStudyID);
- myStudyID = aStudyID;
- }
- else
- myStudyID = theId; // mkr : IPAL12128
- }
- }
-
- if ( isNewStudy(myLastStudyID,myStudyID) ) {
- if (CORBA::is_nil(myGeomEngine)) setGeomEngine();
- std::string anEngine = _orb->object_to_string( myGeomEngine );
-
- CORBA::Object_var anObj = name_service->Resolve("/myStudyManager");
- if ( !CORBA::is_nil(anObj) ) {
- SALOMEDS::StudyManager_var aStudyManager = SALOMEDS::StudyManager::_narrow(anObj);
- if ( !CORBA::is_nil(aStudyManager) ) {
- _PTR(Study) aDSStudy = ClientFactory::Study(aStudyManager->GetStudyByID(myStudyID));
- if ( aDSStudy ) {
- _PTR(SComponent) aSCO = aDSStudy->FindComponent(myGeomEngine->ComponentDataType());
- if ( aSCO ) {
- _PTR(StudyBuilder) aBuilder = aDSStudy->NewBuilder();
- if ( aBuilder ) aBuilder->LoadWith( aSCO, anEngine );
- }
- }
- }
- }
- }
- // mkr : PAL10770 <--
-}
-
//=============================================================================
// CreateListOfGO:
//=============================================================================
if (CORBA::is_nil(myGeomEngine))
setGeomEngine();
// get GEOM_IBasicOperations interface
- if (CORBA::is_nil(myBasicOp) || 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);
- myBasicOp = myGeomEngine->GetIBasicOperations(myStudyID);
+ if (CORBA::is_nil(myBasicOp)) {
+ myBasicOp = myGeomEngine->GetIBasicOperations();
}
}
if (CORBA::is_nil(myGeomEngine))
setGeomEngine();
// get GEOM_I3DPrimOperations interface
- if (CORBA::is_nil(my3DPrimOp) || 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);
- my3DPrimOp = myGeomEngine->GetI3DPrimOperations(myStudyID);
+ if (CORBA::is_nil(my3DPrimOp)) {
+ my3DPrimOp = myGeomEngine->GetI3DPrimOperations();
}
}
if (CORBA::is_nil(myGeomEngine))
setGeomEngine();
// get GEOM_IBooleanOperations interface
- if (CORBA::is_nil(myBoolOp) || 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);
- myBoolOp = myGeomEngine->GetIBooleanOperations(myStudyID);
+ if (CORBA::is_nil(myBoolOp)) {
+ myBoolOp = myGeomEngine->GetIBooleanOperations();
}
}
if (CORBA::is_nil(myGeomEngine))
setGeomEngine();
// get GEOM_IInsertOperations interface
- if (CORBA::is_nil(myInsOp) || 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);
- myInsOp = myGeomEngine->GetIInsertOperations(myStudyID);
+ if (CORBA::is_nil(myInsOp)) {
+ myInsOp = myGeomEngine->GetIInsertOperations();
}
}
if (CORBA::is_nil(myGeomEngine))
setGeomEngine();
// get GEOM_ITransformOperations interface
- if (CORBA::is_nil(myTransfOp) || 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);
- myTransfOp = myGeomEngine->GetITransformOperations(myStudyID);
+ if (CORBA::is_nil(myTransfOp)) {
+ myTransfOp = myGeomEngine->GetITransformOperations();
}
}
if (CORBA::is_nil(myGeomEngine))
setGeomEngine();
// get GEOM_IShapesOperations interface
- if (CORBA::is_nil(myShapesOp) || 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);
- myShapesOp = myGeomEngine->GetIShapesOperations(myStudyID);
+ if (CORBA::is_nil(myShapesOp)) {
+ myShapesOp = myGeomEngine->GetIShapesOperations();
}
}
if (CORBA::is_nil(myGeomEngine))
setGeomEngine();
// get GEOM_IBlocksOperations interface
- if (CORBA::is_nil(myBlocksOp) || 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);
- myBlocksOp = myGeomEngine->GetIBlocksOperations(myStudyID);
+ if (CORBA::is_nil(myBlocksOp)) {
+ myBlocksOp = myGeomEngine->GetIBlocksOperations();
}
}
if (CORBA::is_nil(myGeomEngine))
setGeomEngine();
// get GEOM_ICurvesOperations interface
- if (CORBA::is_nil(myCurvesOp) || 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);
- myCurvesOp = myGeomEngine->GetICurvesOperations(myStudyID);
+ if (CORBA::is_nil(myCurvesOp)) {
+ myCurvesOp = myGeomEngine->GetICurvesOperations();
}
}
if (CORBA::is_nil(myGeomEngine))
setGeomEngine();
// get GEOM_ILocalOperations interface
- if (CORBA::is_nil(myLocalOp) || 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);
- myLocalOp = myGeomEngine->GetILocalOperations(myStudyID);
+ if (CORBA::is_nil(myLocalOp)) {
+ myLocalOp = myGeomEngine->GetILocalOperations();
}
}
if (CORBA::is_nil(myGeomEngine))
setGeomEngine();
// get GEOM_IGroupOperations interface
- if (CORBA::is_nil(myGroupOp) || 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);
- myGroupOp = myGeomEngine->GetIGroupOperations(myStudyID);
+ if (CORBA::is_nil(myGroupOp)) {
+ myGroupOp = myGeomEngine->GetIGroupOperations();
}
}
{
if (CORBA::is_nil(myGeomEngine))
setGeomEngine();
- // 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"));
+ // get GEOM::IAdvancedOperations interface
+ if (CORBA::is_nil(myAdvancedOp)) {
+ myAdvancedOp = GEOM::IAdvancedOperations::_narrow(myGeomEngine->GetPluginOperations("AdvancedEngine"));
}
}
+//=============================================================================
+// getSTLPluginOp:
+//=============================================================================
+void GEOM_Superv_i::getSTLPluginOp()
+{
+ if (CORBA::is_nil(myGeomEngine))
+ setGeomEngine();
+ // get GEOM::ISTLOperations interface
+ if (CORBA::is_nil(mySTLOp)) {
+ mySTLOp = GEOM::ISTLOperations::_narrow(myGeomEngine->GetPluginOperations("STLPluginEngine"));
+ }
+}
+
+//=============================================================================
+// getBREPPluginOp:
+//=============================================================================
+void GEOM_Superv_i::getBREPPluginOp()
+{
+ if (CORBA::is_nil(myGeomEngine))
+ setGeomEngine();
+ // get GEOM:IBREPOperations interface
+ if (CORBA::is_nil(myBREPOp)) {
+ myBREPOp = GEOM::IBREPOperations::_narrow(myGeomEngine->GetPluginOperations("BREPPluginEngine"));
+ }
+}
+
+//=============================================================================
+// getSTEPPluginOp:
+//=============================================================================
+void GEOM_Superv_i::getSTEPPluginOp()
+{
+ if (CORBA::is_nil(myGeomEngine))
+ setGeomEngine();
+ // get GEOM::ISTEPOperations interface
+ if (CORBA::is_nil(mySTEPOp)) {
+ mySTEPOp = GEOM::ISTEPOperations::_narrow(myGeomEngine->GetPluginOperations("STEPPluginEngine"));
+ }
+}
+
+//=============================================================================
+// getIGESPluginOp:
+//=============================================================================
+void GEOM_Superv_i::getIGESPluginOp()
+{
+ if (CORBA::is_nil(myGeomEngine))
+ setGeomEngine();
+ // get GEOM::IIGESOperations interface
+ if (CORBA::is_nil(myIGESOp)) {
+ myIGESOp = GEOM::IIGESOperations::_narrow(myGeomEngine->GetPluginOperations("IGESPluginEngine"));
+ }
+}
+
+//=============================================================================
+// getXAOPluginOp:
+//=============================================================================
+void GEOM_Superv_i::getXAOPluginOp()
+{
+ if (CORBA::is_nil(myGeomEngine))
+ setGeomEngine();
+ // get GEOM::IXAOOperations interface
+ if (CORBA::is_nil(myXAOOp)) {
+ myXAOOp = GEOM::IXAOOperations::_narrow(myGeomEngine->GetPluginOperations("XAOPluginEngine"));
+ }
+}
+
+#ifdef WITH_VTK
+//=============================================================================
+// getVTKPluginOp:
+//=============================================================================
+void GEOM_Superv_i::getVTKPluginOp()
+{
+ if (CORBA::is_nil(myGeomEngine))
+ setGeomEngine();
+ // get GEOM::IVTKOperations interface
+ if (CORBA::is_nil(myVTKOp)) {
+ myVTKOp = GEOM::IVTKOperations::_narrow(myGeomEngine->GetPluginOperations("VTKPluginEngine"));
+ }
+}
+#endif
+
//=============================================================================
// GetServant:
//=============================================================================
// function : Save()
// purpose : save OCAF/Geom document
//============================================================================
-SALOMEDS::TMPFile* GEOM_Superv_i::Save(SALOMEDS::SComponent_ptr theComponent,
- const char* theURL,
- CORBA::Boolean isMultiFile)
+SALOMEDS::TMPFile* GEOM_Superv_i::Save(SALOMEDS::SComponent_ptr /*theComponent*/,
+ const char* /*theURL*/,
+ CORBA::Boolean /*isMultiFile*/)
{
SALOMEDS::TMPFile_var aStreamFile;
return aStreamFile._retn();
// function : SaveASCII()
// purpose :
//============================================================================
-SALOMEDS::TMPFile* GEOM_Superv_i::SaveASCII(SALOMEDS::SComponent_ptr theComponent,
- const char* theURL,
- CORBA::Boolean isMultiFile)
+SALOMEDS::TMPFile* GEOM_Superv_i::SaveASCII(SALOMEDS::SComponent_ptr /*theComponent*/,
+ const char* /*theURL*/,
+ CORBA::Boolean /*isMultiFile*/)
{
SALOMEDS::TMPFile_var aStreamFile;
return aStreamFile._retn();
// function : Load()
// purpose :
//============================================================================
-CORBA::Boolean GEOM_Superv_i::Load(SALOMEDS::SComponent_ptr theComponent,
- const SALOMEDS::TMPFile& theStream,
- const char* theURL,
- CORBA::Boolean isMultiFile)
+CORBA::Boolean GEOM_Superv_i::Load(SALOMEDS::SComponent_ptr /*theComponent*/,
+ const SALOMEDS::TMPFile& /*theStream*/,
+ const char* /*theURL*/,
+ CORBA::Boolean /*isMultiFile*/)
{
return false;
}
// function : LoadASCII()
// purpose :
//============================================================================
-CORBA::Boolean GEOM_Superv_i::LoadASCII(SALOMEDS::SComponent_ptr theComponent,
- const SALOMEDS::TMPFile& theStream,
- const char* theURL,
- CORBA::Boolean isMultiFile)
+CORBA::Boolean GEOM_Superv_i::LoadASCII(SALOMEDS::SComponent_ptr /*theComponent*/,
+ const SALOMEDS::TMPFile& /*theStream*/,
+ const char* /*theURL*/,
+ CORBA::Boolean /*isMultiFile*/)
{
return false;
}
// function : Close()
// purpose :
//============================================================================
-void GEOM_Superv_i::Close(SALOMEDS::SComponent_ptr theComponent)
+void GEOM_Superv_i::Close(SALOMEDS::SComponent_ptr /*theComponent*/)
{
}
// function : IORToLocalPersistentID()
// purpose :
//============================================================================
-char* GEOM_Superv_i::IORToLocalPersistentID(SALOMEDS::SObject_ptr theSObject,
- const char* IORString,
- CORBA::Boolean isMultiFile,
- CORBA::Boolean isASCII)
+char* GEOM_Superv_i::IORToLocalPersistentID(SALOMEDS::SObject_ptr /*theSObject*/,
+ const char* /*IORString*/,
+ CORBA::Boolean /*isMultiFile*/,
+ CORBA::Boolean /*isASCII*/)
{
return 0;
}
// : Used when a study is loaded
// : The IOR (IORName) of object created is returned
//============================================================================
-char* GEOM_Superv_i::LocalPersistentIDToIOR(SALOMEDS::SObject_ptr theSObject,
- const char* aLocalPersistentID,
- CORBA::Boolean isMultiFile,
- CORBA::Boolean isASCII)
+char* GEOM_Superv_i::LocalPersistentIDToIOR(SALOMEDS::SObject_ptr /*theSObject*/,
+ const char* /*aLocalPersistentID*/,
+ CORBA::Boolean /*isMultiFile*/,
+ CORBA::Boolean /*isASCII*/)
{
return 0;
}
// function : PublishInStudy
// purpose :
//============================================================================
-SALOMEDS::SObject_ptr GEOM_Superv_i::PublishInStudy(SALOMEDS::Study_ptr theStudy,
- SALOMEDS::SObject_ptr theSObject,
+SALOMEDS::SObject_ptr GEOM_Superv_i::PublishInStudy(SALOMEDS::SObject_ptr theSObject,
CORBA::Object_ptr theObject,
- const char* theName) throw (SALOME::SALOME_Exception)
+ const char* theName)
{
if (CORBA::is_nil(myGeomEngine))
setGeomEngine();
- return myGeomEngine->PublishInStudy(theStudy, theSObject, theObject, theName);
+ return myGeomEngine->PublishInStudy(theSObject, theObject, theName);
}
//============================================================================
// purpose :
//============================================================================
GEOM::ListOfGO*
-GEOM_Superv_i::PublishNamedShapesInStudy(SALOMEDS::Study_ptr theStudy,
- //SALOMEDS::SObject_ptr theSObject,
+GEOM_Superv_i::PublishNamedShapesInStudy(//SALOMEDS::SObject_ptr theSObject,
CORBA::Object_ptr theObject)
{
if (CORBA::is_nil(myGeomEngine))
setGeomEngine();
- return myGeomEngine->PublishNamedShapesInStudy(theStudy, theObject);
+ return myGeomEngine->PublishNamedShapesInStudy(theObject);
}
//============================================================================
// function : CanCopy()
// purpose :
//============================================================================
-CORBA::Boolean GEOM_Superv_i::CanCopy(SALOMEDS::SObject_ptr theObject)
+CORBA::Boolean GEOM_Superv_i::CanCopy(SALOMEDS::SObject_ptr /*theObject*/)
{
return false;
}
// function : CopyFrom()
// purpose :
//============================================================================
-SALOMEDS::TMPFile* GEOM_Superv_i::CopyFrom(SALOMEDS::SObject_ptr theObject, CORBA::Long& theObjectID)
+SALOMEDS::TMPFile* GEOM_Superv_i::CopyFrom(SALOMEDS::SObject_ptr /*theObject*/, CORBA::Long& /*theObjectID*/)
{
SALOMEDS::TMPFile_var aStreamFile;
return aStreamFile._retn();
// function : CanPaste()
// purpose :
//============================================================================
-CORBA::Boolean GEOM_Superv_i::CanPaste(const char* theComponentName, CORBA::Long theObjectID)
+CORBA::Boolean GEOM_Superv_i::CanPaste(const char* /*theComponentName*/, CORBA::Long /*theObjectID*/)
{
return false;
}
// function : PasteInto()
// purpose :
//============================================================================
-SALOMEDS::SObject_ptr GEOM_Superv_i::PasteInto(const SALOMEDS::TMPFile& theStream,
- CORBA::Long theObjectID,
- SALOMEDS::SObject_ptr theObject)
+SALOMEDS::SObject_ptr GEOM_Superv_i::PasteInto(const SALOMEDS::TMPFile& /*theStream*/,
+ CORBA::Long /*theObjectID*/,
+ SALOMEDS::SObject_ptr /*theObject*/)
{
SALOMEDS::SObject_var aNewSO;
return aNewSO._retn();
beginService( " GEOM_Superv_i::MakePointOnCurve" );
MESSAGE("GEOM_Superv_i::MakePointOnCurve");
getBasicOp();
- GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointOnCurve(theRefCurve, theParameter);
+ GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointOnCurve(theRefCurve, theParameter, false);
endService( " GEOM_Superv_i::MakePointOnCurve" );
return anObj;
}
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:
//=============================================================================
beginService( " GEOM_Superv_i::MakePipe" );
MESSAGE("GEOM_Superv_i::MakePipe");
get3DPrimOp();
- GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePipe(theBase, thePath);
+ GEOM::ListOfGO_var aList = my3DPrimOp->MakePipe(theBase, thePath, false);
endService( " GEOM_Superv_i::MakePipe" );
- return anObj;
+ return aList[0];
}
//=============================================================================
beginService( " GEOM_Superv_i::MakeFilling" );
MESSAGE("GEOM_Superv_i::MakeFilling");
get3DPrimOp();
+ GEOM::ListOfGO_var objList = new GEOM::ListOfGO;
+ objList->length( 1 );
+ objList[0] = theShape;
GEOM::GEOM_Object_ptr anObj =
- my3DPrimOp->MakeFilling(theShape, theMinDeg, theMaxDeg, theTol2D, theTol3D,
+ my3DPrimOp->MakeFilling(objList, theMinDeg, theMaxDeg, theTol2D, theTol3D,
theNbIter, theMethod, theApprox);
endService( " GEOM_Superv_i::MakeFilling" );
return anObj;
beginService( " GEOM_Superv_i::MakePipeWithDifferentSections" );
MESSAGE("GEOM_Superv_i::MakePipeWithDifferentSections");
get3DPrimOp();
- GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePipeWithDifferentSections(theBases,theLocations, thePath,theWithContact,theWithCorrections);
+ GEOM::ListOfGO_var aList = my3DPrimOp->MakePipeWithDifferentSections(theBases,theLocations, thePath,theWithContact,theWithCorrections, false, false);
endService( " GEOM_Superv_i::MakePipeWithDifferentSections" );
- return anObj;
+ return aList[0];
}
beginService( " GEOM_Superv_i::MakePipeWithShellSections" );
MESSAGE("GEOM_Superv_i::MakePipeWithShellSections");
get3DPrimOp();
- GEOM::GEOM_Object_ptr anObj =
+ GEOM::ListOfGO_var aList =
my3DPrimOp->MakePipeWithShellSections(theBases, theSubBases,
theLocations, thePath,
- theWithContact, theWithCorrections);
+ theWithContact, theWithCorrections,
+ false);
endService( " GEOM_Superv_i::MakePipeWithShellSections" );
- return anObj;
+ return aList[0];
}
beginService( " GEOM_Superv_i::MakePipeShellsWithoutPath" );
MESSAGE("GEOM_Superv_i::MakePipeShellsWithoutPath");
get3DPrimOp();
- GEOM::GEOM_Object_ptr anObj =
- my3DPrimOp->MakePipeShellsWithoutPath(theBases,theLocations);
+ GEOM::ListOfGO_var aList =
+ my3DPrimOp->MakePipeShellsWithoutPath(theBases,theLocations, false);
endService( " GEOM_Superv_i::MakePipeShellsWithoutPath" );
- return anObj;
+ return aList[0];
}
beginService( " GEOM_Superv_i::MakePipeBiNormalAlongVector" );
MESSAGE("GEOM_Superv_i::MakePipeBiNormalAlongVector");
get3DPrimOp();
- GEOM::GEOM_Object_ptr anObj =
- my3DPrimOp->MakePipeBiNormalAlongVector(theBase, thePath, theVec);
+ GEOM::ListOfGO_var aList =
+ my3DPrimOp->MakePipeBiNormalAlongVector(theBase, thePath, theVec, false);
endService( " GEOM_Superv_i::MakePipeBiNormalAlongVector" );
- return anObj;
+ return aList[0];
}
myBoolOp->MakePartition(aListImplS->GetList(), aListImplT->GetList(),
aListImplKI->GetList(), aListImplRI->GetList(),
theLimit, theRemoveWebs, aListImplM->GetList(),
- theKeepNonlimitShapes, false);
+ theKeepNonlimitShapes);
endService( " GEOM_Superv_i::MakePartition" );
return anObj;
}
MESSAGE("GEOM_Superv_i::MakeHalfPartition");
getBoolOp();
GEOM::GEOM_Object_ptr anObj =
- myBoolOp->MakeHalfPartition(theShape, thePlane, false);
+ myBoolOp->MakeHalfPartition(theShape, thePlane);
endService( " GEOM_Superv_i::MakeHalfPartition" );
return anObj;
}
beginService( " GEOM_Superv_i::ImportFile" );
MESSAGE("GEOM_Superv_i::ImportFile");
getInsOp();
- GEOM::GEOM_Object_ptr anObj = myInsOp->ImportFile(theFileName, theFormatName);
- 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" );
-}
+ GEOM::ListOfGBO_var aSeq = myInsOp->ImportFile(theFileName, theFormatName);
+ GEOM::GEOM_Object_var anObj;
+
+ if (aSeq->length() > 0) {
+ anObj = GEOM::GEOM_Object::_narrow(aSeq[0]);
+ }
-//=============================================================================
-// 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" );
+ endService( " GEOM_Superv_i::ImportFile" );
+ return anObj._retn();
}
//============================= TransformOperations ===========================
beginService( " GEOM_Superv_i::OffsetShape" );
MESSAGE("GEOM_Superv_i::OffsetShape");
getTransfOp();
- GEOM::GEOM_Object_ptr anObj = myTransfOp->OffsetShape(theObject, theOffset);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->OffsetShape(theObject, theOffset, true);
endService( " GEOM_Superv_i::OffsetShape" );
return anObj;
}
beginService( " GEOM_Superv_i::OffsetShapeCopy" );
MESSAGE("GEOM_Superv_i::OffsetShapeCopy");
getTransfOp();
- GEOM::GEOM_Object_ptr anObj = myTransfOp->OffsetShapeCopy(theObject, theOffset);
+ GEOM::GEOM_Object_ptr anObj = myTransfOp->OffsetShapeCopy(theObject, theOffset, true);
endService( " GEOM_Superv_i::OffsetShapeCopy" );
return anObj;
}
return NULL;
}
+//=============================================================================
+// MakeFaceWithConstraints:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceWithConstraints (GEOM::GEOM_List_ptr theConstraints)
+{
+ beginService( " GEOM_Superv_i::MakeFaceWithConstraints" );
+ MESSAGE("GEOM_Superv_i::MakeFaceWithConstraints");
+ if (GEOM_List_i<GEOM::ListOfGO>* aConstraints =
+ dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theConstraints, myPOA).in())) {
+ getShapesOp();
+ GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeFaceWithConstraints(aConstraints->GetList());
+ endService( " GEOM_Superv_i::MakeFaceWithConstraints" );
+ return anObj;
+ }
+ endService( " GEOM_Superv_i::MakeFaceWithConstraints" );
+ return NULL;
+}
+
//=============================================================================
// MakeShell:
//=============================================================================
return NULL;
}
+//=============================================================================
+// MakeSolidFromConnectedFaces:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidFromConnectedFaces (GEOM::GEOM_List_ptr theFacesOrShells,
+ CORBA::Boolean isIntersect)
+{
+ beginService( " GEOM_Superv_i::MakeSolidFromConnectedFaces" );
+ MESSAGE("GEOM_Superv_i::MakeSolidFromConnectedFaces");
+ if (GEOM_List_i<GEOM::ListOfGO>* aListImpl =
+ dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theFacesOrShells, myPOA).in())) {
+ getShapesOp();
+ GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeSolidFromConnectedFaces(aListImpl->GetList(), isIntersect);
+ endService( " GEOM_Superv_i::MakeSolidFromConnectedFaces" );
+ return anObj;
+ }
+ endService( " GEOM_Superv_i::MakeSolidFromConnectedFaces" );
+ return NULL;
+}
+
//=============================================================================
// MakeGlueFaces:
//=============================================================================
beginService( " GEOM_Superv_i::MakeGlueFaces" );
MESSAGE("GEOM_Superv_i::MakeGlueFaces");
getShapesOp();
+ GEOM::ListOfGO_var objList = new GEOM::ListOfGO;
+ objList->length( 1 );
+ objList[0] = theShape;
GEOM::GEOM_Object_ptr anObj =
- myShapesOp->MakeGlueFaces(theShape, theTolerance, doKeepNonSolids);
+ myShapesOp->MakeGlueFaces(objList, theTolerance, doKeepNonSolids);
endService( " GEOM_Superv_i::MakeGlueFaces" );
return anObj;
}
beginService( " GEOM_Superv_i::GetGlueFaces" );
MESSAGE("GEOM_Superv_i::GetGlueFaces");
getShapesOp();
- GEOM::ListOfGO* aList = myShapesOp->GetGlueFaces(theShape, theTolerance);
+ GEOM::ListOfGO_var objList = new GEOM::ListOfGO;
+ objList->length( 1 );
+ objList[0] = theShape;
+ GEOM::ListOfGO* aList = myShapesOp->GetGlueFaces(objList, theTolerance);
GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
endService( " GEOM_Superv_i::GetGlueFaces" );
beginService( " GEOM_Superv_i::MakeGlueFacesByList" );
MESSAGE("GEOM_Superv_i::MakeGlueFacesByList");
getShapesOp();
+ GEOM::ListOfGO_var objList = new GEOM::ListOfGO;
+ objList->length( 1 );
+ objList[0] = theShape;
GEOM::GEOM_Object_ptr anObj =
- myShapesOp->MakeGlueFacesByList(theShape, theTolerance, theFaces,
+ myShapesOp->MakeGlueFacesByList(objList, theTolerance, theFaces,
doKeepNonSolids, doGlueAllEdges);
endService( " GEOM_Superv_i::MakeGlueFacesByList" );
return anObj;
beginService( " GEOM_Superv_i::CheckCompoundOfBlocks" );
MESSAGE("GEOM_Superv_i::CheckCompoundOfBlocks");
getBlocksOp();
- CORBA::Boolean aRes = myBlocksOp->CheckCompoundOfBlocks(theCompound, theErrors);
+ CORBA::Boolean aRes = myBlocksOp->CheckCompoundOfBlocks(theCompound, -1., theErrors);
endService( " GEOM_Superv_i::CheckCompoundOfBlocks" );
return aRes;
}
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_var anObj;
+
+ if (aSeq->length() > 0) {
+ anObj = aSeq->operator[](0);
+ }
+
+ endService( " GEOM_Superv_i::ImportSTL" );
+ return anObj._retn();
+}
+
+//=============================================================================
+// 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" );
+}
+
//=============================================================================
-// ExportXAO
+// Import BREP
//=============================================================================
-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::ImportBREP( const char* theFileName )
+{
+ beginService( " GEOM_Superv_i::ImportBREP" );
+ MESSAGE("GEOM_Superv_i::ImportBREP");
+ getBREPPluginOp();
+ GEOM::ListOfGO* aSeq = myBREPOp->ImportBREP(theFileName );
+ GEOM::GEOM_Object_var anObj;
+
+ if (aSeq->length() > 0) {
+ anObj = aSeq->operator[](0);
+ }
+
+ endService( " GEOM_Superv_i::ImportBREP" );
+ return anObj._retn();
+}
+
+//=============================================================================
+// 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();
+
+ const GEOM::length_unit aUnit = GEOM::LU_METER;
+
+ mySTEPOp->ExportSTEP( theObject, theFileName, aUnit );
+ 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, false );
+ GEOM::GEOM_Object_var anObj;
+
+ if (aSeq->length() > 0) {
+ anObj = aSeq->operator[](0);
+ }
+
+ endService( " GEOM_Superv_i::ImportSTEP" );
+ return anObj._retn();
+}
+
+//=============================================================================
+// 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" );
+}
+
+//=============================================================================
+// Import IGES
+//=============================================================================
+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_var anObj;
+
+ if (aSeq->length() > 0) {
+ anObj = aSeq->operator[](0);
+ }
+
+ endService( " GEOM_Superv_i::ImportIGES" );
+ return anObj._retn();
+}
+
+//=============================================================================
+// 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,
+ const char* shapeFileName )
{
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, shapeFileName );
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 )
+{
+ #ifdef WITH_VTK
+ beginService( " GEOM_Superv_i::ExportVTK" );
+ MESSAGE("GEOM_Superv_i::ExportVTK");
+ getVTKPluginOp();
+ myVTKOp->ExportVTK( theObject, theFileName, theDeflection );
+ endService( " GEOM_Superv_i::ExportVTK" );
+#else
+ std::string message("GEOM_Superv_i::ExportVTK functionality is unavailable");
+ THROW_SALOME_CORBA_EXCEPTION(message.c_str(), SALOME::INTERNAL_ERROR);
+#endif
+}
+
//=============================== Advanced Operations =============================
//=============================================================================
// MakePipeTShape
if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thelPoints, myPOA).in())) {
getCurvesOp();
- GEOM::GEOM_Object_ptr anObj = myAdvancedOp->MakeSmoothingSurface(aListImplP->GetList());
+ GEOM::GEOM_Object_ptr anObj = myAdvancedOp->MakeSmoothingSurface(aListImplP->GetList(), 2, 8, 0.);
endService( " GEOM_Superv_i::MakeSmoothingSurface" );
return anObj;
}