PAL8267: two new API methods added: ExtrusionSweepObject1(2)D()

This commit is contained in:
jfa 2005-03-21 12:44:19 +00:00
parent 4ea1b27c68
commit 056094268a
3 changed files with 70 additions and 0 deletions

View File

@ -545,6 +545,14 @@ module SMESH
in DirStruct StepVector,
in long NbOfSteps);
void ExtrusionSweepObject1D(in SMESH_IDSource theObject,
in DirStruct StepVector,
in long NbOfSteps);
void ExtrusionSweepObject2D(in SMESH_IDSource theObject,
in DirStruct StepVector,
in long NbOfSteps);
enum Extrusion_Error {
EXTR_OK,
EXTR_NO_ELEMENTS,

View File

@ -533,6 +533,62 @@ void SMESH_MeshEditor_i::ExtrusionSweepObject(SMESH::SMESH_IDSource_ptr theObjec
ExtrusionSweep(anElementsId, theStepVector, theNbOfSteps);
}
//=======================================================================
//function : ExtrusionSweepObject1D
//purpose :
//=======================================================================
void SMESH_MeshEditor_i::ExtrusionSweepObject1D(SMESH::SMESH_IDSource_ptr theObject,
const SMESH::DirStruct & theStepVector,
CORBA::Long theNbOfSteps)
{
SMESHDS_Mesh* aMesh = GetMeshDS();
SMESH::long_array_var allElementsId = theObject->GetIDs();
set<const SMDS_MeshElement*> elements;
for (int i = 0; i < allElementsId->length(); i++)
{
CORBA::Long index = allElementsId[i];
const SMDS_MeshElement * elem = aMesh->FindElement(index);
if ( elem && elem->GetType() == SMDSAbs_Edge )
elements.insert( elem );
}
const SMESH::PointStruct * P = &theStepVector.PS;
gp_Vec stepVec( P->x, P->y, P->z );
::SMESH_MeshEditor anEditor( _myMesh );
anEditor.ExtrusionSweep (elements, stepVec, theNbOfSteps);
}
//=======================================================================
//function : ExtrusionSweepObject2D
//purpose :
//=======================================================================
void SMESH_MeshEditor_i::ExtrusionSweepObject2D(SMESH::SMESH_IDSource_ptr theObject,
const SMESH::DirStruct & theStepVector,
CORBA::Long theNbOfSteps)
{
SMESHDS_Mesh* aMesh = GetMeshDS();
SMESH::long_array_var allElementsId = theObject->GetIDs();
set<const SMDS_MeshElement*> elements;
for (int i = 0; i < allElementsId->length(); i++)
{
CORBA::Long index = allElementsId[i];
const SMDS_MeshElement * elem = aMesh->FindElement(index);
if ( elem && elem->GetType() == SMDSAbs_Face )
elements.insert( elem );
}
const SMESH::PointStruct * P = &theStepVector.PS;
gp_Vec stepVec( P->x, P->y, P->z );
::SMESH_MeshEditor anEditor( _myMesh );
anEditor.ExtrusionSweep (elements, stepVec, theNbOfSteps);
}
#define RETCASE(enm) case ::SMESH_MeshEditor::enm: return SMESH::SMESH_MeshEditor::enm;
static SMESH::SMESH_MeshEditor::Extrusion_Error convExtrError( const::SMESH_MeshEditor::Extrusion_Error e )

View File

@ -104,6 +104,12 @@ class SMESH_MeshEditor_i: public POA_SMESH::SMESH_MeshEditor
void ExtrusionSweepObject(SMESH::SMESH_IDSource_ptr theObject,
const SMESH::DirStruct & StepVector,
CORBA::Long NbOfSteps);
void ExtrusionSweepObject1D(SMESH::SMESH_IDSource_ptr theObject,
const SMESH::DirStruct & StepVector,
CORBA::Long NbOfSteps);
void ExtrusionSweepObject2D(SMESH::SMESH_IDSource_ptr theObject,
const SMESH::DirStruct & StepVector,
CORBA::Long NbOfSteps);
SMESH::SMESH_MeshEditor::Extrusion_Error
ExtrusionAlongPath(const SMESH::long_array & IDsOfElements,