+ SewSideElements(const SMESH::long_array& IDsOfSide1Elements,
+ const SMESH::long_array& IDsOfSide2Elements,
+ CORBA::Long NodeID1OfSide1ToMerge,
+ CORBA::Long NodeID1OfSide2ToMerge,
+ CORBA::Long NodeID2OfSide1ToMerge,
+ CORBA::Long NodeID2OfSide2ToMerge);
+
+ /*!
+ * Set new nodes for given element.
+ * If number of nodes is not corresponded to type of
+ * element - returns false
+ */
+ CORBA::Boolean ChangeElemNodes(CORBA::Long ide, const SMESH::long_array& newIDs);
+
+ /*!
+ * Return data of mesh edition preview
+ */
+ SMESH::MeshPreviewStruct* GetPreviewData();
+
+ /*!
+ * If during last operation of MeshEditor some nodes were
+ * created this method returns list of it's IDs, if new nodes
+ * not creared - returns empty list
+ */
+ SMESH::long_array* GetLastCreatedNodes();
+
+ /*!
+ * If during last operation of MeshEditor some elements were
+ * created this method returns list of it's IDs, if new elements
+ * not creared - returns empty list
+ */
+ SMESH::long_array* GetLastCreatedElems();
+
+ /*!
+ * \brief Return edited mesh ID
+ * \retval int - mesh ID
+ */
+ int GetMeshId() const { return myMesh->GetId(); }
+
+
+private: //!< private methods
+
+ SMESHDS_Mesh * GetMeshDS() { return myMesh->GetMeshDS(); }
+
+ /*!
+ * \brief Update myLastCreated* or myPreviewData
+ * \param anEditor - it contains edition results
+ */
+ void storeResult(::SMESH_MeshEditor& anEditor);
+ /*!
+ * \brief Clear myLastCreated* or myPreviewData
+ */
+ void initData();
+
+ /*!
+ * \brief Return groups by their IDs
+ */
+ SMESH::ListOfGroups* getGroups(const std::list<int>* groupIDs);
+
+ SMESH::ListOfGroups* rotationSweep(const SMESH::long_array & IDsOfElements,
+ const SMESH::AxisStruct & Axis,
+ CORBA::Double AngleInRadians,
+ CORBA::Long NbOfSteps,
+ CORBA::Double Tolerance,
+ const bool MakeGroups);
+ SMESH::ListOfGroups* extrusionSweep(const SMESH::long_array & IDsOfElements,
+ const SMESH::DirStruct & StepVector,
+ CORBA::Long NbOfSteps,
+ const bool MakeGroups,
+ const SMDSAbs_ElementType ElementType=SMDSAbs_All);
+ SMESH::ListOfGroups* advancedExtrusion(const SMESH::long_array & theIDsOfElements,
+ const SMESH::DirStruct & theStepVector,
+ CORBA::Long theNbOfSteps,
+ CORBA::Long theExtrFlags,
+ CORBA::Double theSewTolerance,
+ const bool MakeGroups);
+ SMESH::ListOfGroups* extrusionAlongPath(const SMESH::long_array & IDsOfElements,
+ SMESH::SMESH_Mesh_ptr PathMesh,
+ GEOM::GEOM_Object_ptr PathShape,
+ CORBA::Long NodeStart,
+ CORBA::Boolean HasAngles,
+ const SMESH::double_array & Angles,
+ CORBA::Boolean HasRefPoint,
+ const SMESH::PointStruct & RefPoint,
+ const bool MakeGroups,
+ SMESH::SMESH_MeshEditor::Extrusion_Error & Error);
+ SMESH::ListOfGroups* mirror(const SMESH::long_array & IDsOfElements,
+ const SMESH::AxisStruct & Axis,
+ SMESH::SMESH_MeshEditor::MirrorType MirrorType,
+ CORBA::Boolean Copy,
+ const bool MakeGroups);
+ SMESH::ListOfGroups* translate(const SMESH::long_array & IDsOfElements,
+ const SMESH::DirStruct & Vector,
+ CORBA::Boolean Copy,
+ const bool MakeGroups);
+ SMESH::ListOfGroups* rotate(const SMESH::long_array & IDsOfElements,
+ const SMESH::AxisStruct & Axis,
+ CORBA::Double Angle,
+ CORBA::Boolean Copy,
+ const bool MakeGroups);
+
+private: //!< fields
+
+ SMESH_Mesh_i* myMesh_i;
+ SMESH_Mesh * myMesh;
+
+ SMESH::long_array_var myLastCreatedElems;
+ SMESH::long_array_var myLastCreatedNodes;
+
+ SMESH::MeshPreviewStruct_var myPreviewData;
+ bool myPreviewMode;