Salome HOME
PAL8267: two new API methods added: ExtrusionSweepObject1(2)D()
authorjfa <jfa@opencascade.com>
Mon, 21 Mar 2005 12:40:07 +0000 (12:40 +0000)
committerjfa <jfa@opencascade.com>
Mon, 21 Mar 2005 12:40:07 +0000 (12:40 +0000)
idl/SMESH_Mesh.idl
src/SMESH_I/SMESH_MeshEditor_i.cxx
src/SMESH_I/SMESH_MeshEditor_i.hxx

index c7de9ac..e380a6a 100644 (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, 
index a908b3d..6a4799a 100644 (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 )
index 9a2ced6..941c519 100644 (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,