-// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2010 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
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+
#include <Standard_Stream.hxx>
#include <GEOMImpl_I3DPrimOperations.hxx>
#include <GEOMImpl_IPrism.hxx>
#include <GEOMImpl_IPipe.hxx>
#include <GEOMImpl_IRevolution.hxx>
-#include <GEOMImpl_IShapes.hxx>
#include <GEOMImpl_IFilling.hxx>
#include <GEOMImpl_IThruSections.hxx>
#include <GEOMImpl_IPipeDiffSect.hxx>
*/
//=============================================================================
Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeFaceObjHW (Handle(GEOM_Object) theObj,
- double theH, double theW)
+ double theH, double theW)
{
SetErrorCode(KO);
*/
//=============================================================================
Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeDiskThreePnt (Handle(GEOM_Object) thePnt1,
- Handle(GEOM_Object) thePnt2,
- Handle(GEOM_Object) thePnt3)
+ Handle(GEOM_Object) thePnt2,
+ Handle(GEOM_Object) thePnt3)
{
SetErrorCode(KO);
*/
//=============================================================================
Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakePrismVecH2Ways (Handle(GEOM_Object) theBase,
- Handle(GEOM_Object) theVec,
- double theH)
+ Handle(GEOM_Object) theVec,
+ double theH)
{
SetErrorCode(KO);
return aRevolution;
}
-//=============================================================================
-/*!
- * MakeSolidShell
- */
-//=============================================================================
-Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeSolidShell (Handle(GEOM_Object) theShell)
-{
- SetErrorCode(KO);
-
- if (theShell.IsNull()) return NULL;
-
- //Add a new Solid object
- Handle(GEOM_Object) aSolid = GetEngine()->AddObject(GetDocID(), GEOM_SOLID);
-
- //Add a new Solid function for creation a solid from a shell
- Handle(GEOM_Function) aFunction =
- aSolid->AddFunction(GEOMImpl_ShapeDriver::GetID(), SOLID_SHELL);
- if (aFunction.IsNull()) return NULL;
-
- //Check if the function is set correctly
- if (aFunction->GetDriverGUID() != GEOMImpl_ShapeDriver::GetID()) return NULL;
-
- GEOMImpl_IShapes aCI (aFunction);
-
- Handle(GEOM_Function) aRefShell = theShell->GetLastFunction();
-
- if (aRefShell.IsNull()) return NULL;
-
- aCI.SetBase(aRefShell);
-
- //Compute the Solid value
- try {
-#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
- OCC_CATCH_SIGNALS;
-#endif
- if (!GetSolver()->ComputeFunction(aFunction)) {
- SetErrorCode("Solid driver failed");
- return NULL;
- }
- }
- catch (Standard_Failure) {
- Handle(Standard_Failure) aFail = Standard_Failure::Caught();
- SetErrorCode(aFail->GetMessageString());
- return NULL;
- }
-
- //Make a Python command
- GEOM::TPythonDump(aFunction) << aSolid << " = geompy.MakeSolid(" << theShell << ")";
-
- SetErrorCode(OK);
- return aSolid;
-}
-
//=============================================================================
/*!
* MakeFilling
//=============================================================================
Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeFilling
(Handle(GEOM_Object) theShape, int theMinDeg, int theMaxDeg,
- double theTol2D, double theTol3D, int theNbIter, bool isApprox)
+ double theTol2D, double theTol3D, int theNbIter,
+ int theMethod, bool isApprox)
{
SetErrorCode(KO);
aFI.SetTol3D(theTol3D);
aFI.SetNbIter(theNbIter);
aFI.SetApprox(isApprox);
+ aFI.SetMethod(theMethod);
//Compute the Solid value
try {
//Make a Python command
GEOM::TPythonDump pd (aFunction);
pd << aFilling << " = geompy.MakeFilling("
- << theShape << ", " << theMinDeg << ", " << theMaxDeg << ", "
- << theTol2D << ", " << theTol3D << ", " << theNbIter;
+ << theShape << ", " << theMinDeg << ", " << theMaxDeg << ", "
+ << theTol2D << ", " << theTol3D << ", " << theNbIter << ", ";
+ if( theMethod==1 ) pd << "GEOM.FOM_UseOri";
+ else if( theMethod==2 ) pd << "GEOM.FOM_AutoCorrect";
+ else pd << "GEOM.FOM_Default";
if(isApprox)
- pd << ", " << isApprox;
+ pd << ", " << isApprox ;
pd << ")";
SetErrorCode(OK);
*/
//=============================================================================
Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeThruSections(
- const Handle(TColStd_HSequenceOfTransient)& theSeqSections,
- bool theModeSolid,
- double thePreci,
- bool theRuled)
+ const Handle(TColStd_HSequenceOfTransient)& theSeqSections,
+ bool theModeSolid,
+ double thePreci,
+ bool theRuled)
{
Handle(GEOM_Object) anObj;
SetErrorCode(KO);
if(!aSectObj.IsNull()) {
pyDump<< aSectObj;
if(i < nbObj)
- pyDump<<", ";
+ pyDump<<", ";
}
}
*/
//=============================================================================
Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakePipeWithDifferentSections(
- const Handle(TColStd_HSequenceOfTransient)& theBases,
- const Handle(TColStd_HSequenceOfTransient)& theLocations,
- const Handle(GEOM_Object)& thePath,
- bool theWithContact,
- bool theWithCorrections)
+ const Handle(TColStd_HSequenceOfTransient)& theBases,
+ const Handle(TColStd_HSequenceOfTransient)& theLocations,
+ const Handle(GEOM_Object)& thePath,
+ bool theWithContact,
+ bool theWithCorrections)
{
Handle(GEOM_Object) anObj;
SetErrorCode(KO);
{
Handle(Standard_Transient) anItemLoc = theLocations->Value(i);
if(anItemLoc.IsNull())
- continue;
+ continue;
Handle(GEOM_Object) aLoc = Handle(GEOM_Object)::DownCast(anItemLoc);
if(aLoc.IsNull())
- continue;
+ continue;
Handle(GEOM_Function) aRefLoc = aLoc->GetLastFunction();
if(aRefLoc.IsNull())
- continue;
+ continue;
aSeqLocs->Append(aRefLoc);
}
aSeqBases->Append(aRefBase);
if(!anObj.IsNull()) {
pyDump<< anObj;
if(i < nbBases)
- pyDump<<", ";
+ pyDump<<", ";
}
}
if(!anObj.IsNull()) {
pyDump<< anObj;
if(i < nbLocs)
- pyDump<<", ";
+ pyDump<<", ";
}
}
*/
//=============================================================================
Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakePipeWithShellSections(
- const Handle(TColStd_HSequenceOfTransient)& theBases,
- const Handle(TColStd_HSequenceOfTransient)& theSubBases,
- const Handle(TColStd_HSequenceOfTransient)& theLocations,
- const Handle(GEOM_Object)& thePath,
- bool theWithContact,
- bool theWithCorrections)
+ const Handle(TColStd_HSequenceOfTransient)& theBases,
+ const Handle(TColStd_HSequenceOfTransient)& theSubBases,
+ const Handle(TColStd_HSequenceOfTransient)& theLocations,
+ const Handle(GEOM_Object)& thePath,
+ bool theWithContact,
+ bool theWithCorrections)
{
Handle(GEOM_Object) anObj;
SetErrorCode(KO);
if( nbSubBases >= nbBases ) {
Handle(Standard_Transient) aSubItem = theSubBases->Value(i);
if(aSubItem.IsNull())
- continue;
+ continue;
Handle(GEOM_Object) aSubBase = Handle(GEOM_Object)::DownCast(aSubItem);
if(aSubBase.IsNull())
- continue;
+ continue;
Handle(GEOM_Function) aRefSubBase = aSubBase->GetLastFunction();
if(aRefSubBase.IsNull())
- continue;
+ continue;
aSeqSubBases->Append(aRefSubBase);
}
if(nbLocs) {
Handle(Standard_Transient) anItemLoc = theLocations->Value(i);
if(anItemLoc.IsNull())
- continue;
+ continue;
Handle(GEOM_Object) aLoc = Handle(GEOM_Object)::DownCast(anItemLoc);
if(aLoc.IsNull())
- continue;
+ continue;
Handle(GEOM_Function) aRefLoc = aLoc->GetLastFunction();
if(aRefLoc.IsNull())
- continue;
+ continue;
aSeqLocs->Append(aRefLoc);
}
if(!anObj.IsNull()) {
pyDump<< anObj;
if(i < nbBases)
- pyDump<<", ";
+ pyDump<<", ";
}
}
if(!anObj.IsNull()) {
pyDump<< anObj;
if(i < nbBases)
- pyDump<<", ";
+ pyDump<<", ";
}
}
if(!anObj.IsNull()) {
pyDump<< anObj;
if(i < nbLocs)
- pyDump<<", ";
+ pyDump<<", ";
}
}
*/
//=============================================================================
Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakePipeShellsWithoutPath(
- const Handle(TColStd_HSequenceOfTransient)& theBases,
- const Handle(TColStd_HSequenceOfTransient)& theLocations)
+ const Handle(TColStd_HSequenceOfTransient)& theBases,
+ const Handle(TColStd_HSequenceOfTransient)& theLocations)
{
Handle(GEOM_Object) anObj;
SetErrorCode(KO);
if(nbLocs) {
Handle(Standard_Transient) anItemLoc = theLocations->Value(i);
if(anItemLoc.IsNull())
- continue;
+ continue;
Handle(GEOM_Object) aLoc = Handle(GEOM_Object)::DownCast(anItemLoc);
if(aLoc.IsNull())
- continue;
+ continue;
Handle(GEOM_Function) aRefLoc = aLoc->GetLastFunction();
if(aRefLoc.IsNull())
- continue;
+ continue;
aSeqLocs->Append(aRefLoc);
}
if(!anObj.IsNull()) {
pyDump<< anObj;
if(i < nbBases)
- pyDump<<", ";
+ pyDump<<", ";
}
}
if(!anObj.IsNull()) {
pyDump<< anObj;
if(i < nbLocs)
- pyDump<<", ";
+ pyDump<<", ";
}
}
*/
//=============================================================================
Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakePipeBiNormalAlongVector (Handle(GEOM_Object) theBase,
- Handle(GEOM_Object) thePath,
- Handle(GEOM_Object) theVec)
+ Handle(GEOM_Object) thePath,
+ Handle(GEOM_Object) theVec)
{
SetErrorCode(KO);