idl/SMESH_MeshEditor.idl

Go to the documentation of this file.
00001 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
00002 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
00003 //
00004 //  This library is free software; you can redistribute it and/or
00005 //  modify it under the terms of the GNU Lesser General Public
00006 //  License as published by the Free Software Foundation; either
00007 //  version 2.1 of the License.
00008 //
00009 //  This library is distributed in the hope that it will be useful,
00010 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012 //  Lesser General Public License for more details.
00013 //
00014 //  You should have received a copy of the GNU Lesser General Public
00015 //  License along with this library; if not, write to the Free Software
00016 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
00017 //
00018 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
00019 //
00020 //
00021 //
00022 //  File   : SMESH_MeshEditor.idl
00023 //  $Header: /home/server/cvs/SMESH/SMESH_SRC/idl/Attic/SMESH_MeshEditor.idl,v 1.1.2.4 2007/03/27 09:49:13 akl Exp $
00024 
00025 #ifndef _SMESH_MESHEDITOR_IDL_
00026 #define _SMESH_MESHEDITOR_IDL_
00027 
00028 #include "SMESH_Mesh.idl"
00029 
00030 module SMESH
00031 {
00035   struct ElementSubType { ElementType SMDS_ElementType;
00036                           boolean     isPoly;
00037                           long        nbNodesInElement; };
00038 
00039   typedef sequence<ElementSubType> types_array;
00040 
00044   struct MeshPreviewStruct { nodes_array nodesXYZ;
00045                              long_array  elementConnectivities;
00046                              types_array elementTypes; };
00047 
00051   interface NumericalFunctor;
00052   interface SMESH_MeshEditor
00053   {
00054     boolean RemoveElements(in long_array IDsOfElements);
00055 
00056     boolean RemoveNodes(in long_array IDsOfNodes);
00057 
00058     long AddNode(in double x, in double y, in double z);
00059 
00068     long AddEdge(in long_array IDsOfNodes);
00069 
00078     long AddFace(in long_array IDsOfNodes);
00079 
00080     long AddPolygonalFace(in long_array IdsOfNodes);
00081 
00090     long AddVolume(in long_array IDsOfNodes);
00091 
00098     long AddPolyhedralVolume (in long_array IdsOfNodes,
00099                               in long_array Quantities);
00100 
00107     long AddPolyhedralVolumeByFaces (in long_array IdsOfFaces);
00108 
00109     boolean MoveNode(in long NodeID, in double x, in double y, in double z);
00110 
00111     boolean InverseDiag(in long NodeID1, in long NodeID2);
00112 
00113     boolean DeleteDiag(in long NodeID1, in long NodeID2);
00114 
00115     boolean Reorient(in long_array IDsOfElements);
00116 
00117     boolean ReorientObject(in SMESH_IDSource theObject);
00118 
00127     boolean TriToQuad (in long_array       IDsOfElements,
00128                  in NumericalFunctor Criterion,
00129                  in double           MaxAngle);
00130 
00136     boolean TriToQuadObject (in SMESH_IDSource   theObject,
00137                     in NumericalFunctor Criterion,
00138                     in double           MaxAngle);
00139 
00146     boolean QuadToTri (in long_array       IDsOfElements,
00147                  in NumericalFunctor Criterion);
00148 
00154     boolean QuadToTriObject (in SMESH_IDSource   theObject,
00155                     in NumericalFunctor Criterion);
00156 
00163     boolean SplitQuad (in long_array IDsOfElements,
00164                  in boolean    Diag13);
00165 
00171     boolean SplitQuadObject (in SMESH_IDSource theObject,
00172                     in boolean        Diag13);
00173 
00181     long BestSplit (in long             IDOfQuad,
00182               in NumericalFunctor Criterion);
00183 
00184     enum Smooth_Method { LAPLACIAN_SMOOTH, CENTROIDAL_SMOOTH };
00185 
00186     boolean Smooth(in long_array    IDsOfElements,
00187                    in long_array    IDsOfFixedNodes,
00188                    in long          MaxNbOfIterations,
00189                    in double        MaxAspectRatio,
00190                    in Smooth_Method Method);
00191 
00192     boolean SmoothObject(in SMESH_IDSource  theObject,
00193                 in long_array      IDsOfFixedNodes,
00194                 in long            MaxNbOfIterations,
00195                 in double          MaxAspectRatio,
00196                 in Smooth_Method   Method);
00197 
00198     boolean SmoothParametric(in long_array    IDsOfElements,
00199                              in long_array    IDsOfFixedNodes,
00200                              in long          MaxNbOfIterations,
00201                              in double        MaxAspectRatio,
00202                              in Smooth_Method Method);
00203 
00204     boolean SmoothParametricObject(in SMESH_IDSource  theObject,
00205                                    in long_array      IDsOfFixedNodes,
00206                                    in long            MaxNbOfIterations,
00207                                    in double          MaxAspectRatio,
00208                                    in Smooth_Method   Method);
00209 
00210     void ConvertToQuadratic(in boolean theForce3d);
00211 
00212     boolean ConvertFromQuadratic();
00213 
00214     void RenumberNodes();
00215 
00216     void RenumberElements();
00217 
00218     void RotationSweep(in long_array       IDsOfElements,
00219                        in AxisStruct       Axix,
00220                        in double           AngleInRadians,
00221                        in long             NbOfSteps,
00222                        in double           Tolerance);
00223 
00224     void RotationSweepObject(in SMESH_IDSource  theObject,
00225                     in AxisStruct      Axix,
00226                     in double          AngleInRadians,
00227                     in long            NbOfSteps,
00228                     in double          Tolerance);
00229 
00230     void ExtrusionSweep(in long_array      IDsOfElements,
00231                         in DirStruct       StepVector,
00232                         in long            NbOfSteps);
00233 
00241     void AdvancedExtrusion(in long_array      IDsOfElements,
00242                            in DirStruct       StepVector,
00243                            in long            NbOfSteps,
00244                   in long            ExtrFlags,
00245                   in double          SewTolerance);
00246 
00247     void ExtrusionSweepObject(in SMESH_IDSource  theObject,
00248                      in DirStruct       StepVector,
00249                      in long            NbOfSteps);
00250 
00251     void ExtrusionSweepObject1D(in SMESH_IDSource theObject,
00252                     in DirStruct      StepVector,
00253                     in long           NbOfSteps);
00254 
00255     void ExtrusionSweepObject2D(in SMESH_IDSource theObject,
00256                     in DirStruct      StepVector,
00257                     in long           NbOfSteps);
00258 
00259     enum Extrusion_Error {
00260       EXTR_OK,
00261       EXTR_NO_ELEMENTS,
00262       EXTR_PATH_NOT_EDGE,
00263       EXTR_BAD_PATH_SHAPE,
00264       EXTR_BAD_STARTING_NODE,
00265       EXTR_BAD_ANGLES_NUMBER,
00266       EXTR_CANT_GET_TANGENT
00267       };
00268 
00269     Extrusion_Error ExtrusionAlongPath(in long_array        IDsOfElements,
00270                            in SMESH_Mesh        PathMesh,
00271                            in GEOM::GEOM_Object PathShape,
00272                            in long              NodeStart,
00273                            in boolean           HasAngles,
00274                            in double_array      Angles,
00275                            in boolean           HasRefPoint,
00276                            in PointStruct       RefPoint);
00277 
00278     Extrusion_Error ExtrusionAlongPathObject(in SMESH_IDSource    theObject,
00279                               in SMESH_Mesh        PathMesh,
00280                               in GEOM::GEOM_Object PathShape,
00281                               in long              NodeStart,
00282                               in boolean           HasAngles,
00283                               in double_array      Angles,
00284                               in boolean           HasRefPoint,
00285                               in PointStruct       RefPoint);
00286 
00295     double_array LinearAnglesVariation(in SMESH_Mesh        PathMesh,
00296                                        in GEOM::GEOM_Object PathShape,
00297                                        in double_array      Angles);
00298 
00299     enum MirrorType { POINT, AXIS, PLANE };
00300 
00301     void Mirror (in long_array       IDsOfElements,
00302                  in AxisStruct       Mirror,
00303                  in MirrorType       theMirrorType,
00304                  in boolean          Copy);
00305 
00306     void MirrorObject (in SMESH_IDSource  theObject,
00307                  in AxisStruct      Mirror,
00308                  in MirrorType      theMirrorType,
00309                  in boolean         Copy);
00310 
00311     void Translate (in long_array      IDsOfElements,
00312                     in DirStruct       Vector,
00313                     in boolean         Copy);
00314 
00315     void TranslateObject (in SMESH_IDSource  theObject,
00316                  in DirStruct       Vector,
00317                  in boolean         Copy);
00318 
00319     void Rotate (in long_array       IDsOfElements,
00320                  in AxisStruct       Axis,
00321                  in double           AngleInRadians,
00322                  in boolean          Copy);
00323 
00324     void RotateObject (in SMESH_IDSource  theObject,
00325                  in AxisStruct      Axis,
00326                  in double          AngleInRadians,
00327                  in boolean         Copy);
00328 
00329     void FindCoincidentNodes (in  double              Tolerance,
00330                               out array_of_long_array GroupsOfNodes);
00331 
00332     void FindCoincidentNodesOnPart (in  SMESH_IDSource      SubMeshOrGroup,
00333                         in  double              Tolerance,
00334                         out array_of_long_array GroupsOfNodes);
00335 
00336     void MergeNodes (in array_of_long_array GroupsOfNodes);
00337 
00343     void FindEqualElements (in  SMESH_IDSource      MeshOrSubMeshOrGroup,
00344                    out array_of_long_array GroupsOfElementsID);
00345 
00350     void MergeElements(in array_of_long_array GroupsOfElementsID);
00351 
00355     void MergeEqualElements();
00356     
00361     long MoveClosestNodeToPoint(in double x, in double y, in double z, in long nodeID);
00362 
00363     enum Sew_Error {
00364       SEW_OK,
00365       SEW_BORDER1_NOT_FOUND,
00366       SEW_BORDER2_NOT_FOUND,
00367       SEW_BOTH_BORDERS_NOT_FOUND,
00368       SEW_BAD_SIDE_NODES,
00369       SEW_VOLUMES_TO_SPLIT,
00370       // for SewSideElements() only:
00371       SEW_DIFF_NB_OF_ELEMENTS,
00372       SEW_TOPO_DIFF_SETS_OF_ELEMENTS,
00373       SEW_BAD_SIDE1_NODES,
00374       SEW_BAD_SIDE2_NODES
00375       };
00376 
00377     Sew_Error SewFreeBorders (in long FirstNodeID1,
00378                               in long SecondNodeID1,
00379                               in long LastNodeID1,
00380                               in long FirstNodeID2,
00381                               in long SecondNodeID2,
00382                               in long LastNodeID2,
00383                      in boolean CreatePolygons,
00384                      in boolean CreatePolyedrs);
00385 
00386     Sew_Error SewConformFreeBorders (in long FirstNodeID1,
00387                                      in long SecondNodeID1,
00388                                      in long LastNodeID1,
00389                                      in long FirstNodeID2,
00390                                      in long SecondNodeID2);
00391 
00392     Sew_Error SewBorderToSide (in long FirstNodeIDOnFreeBorder,
00393                                in long SecondNodeIDOnFreeBorder,
00394                                in long LastNodeIDOnFreeBorder,
00395                                in long FirstNodeIDOnSide,
00396                                in long LastNodeIDOnSide,
00397                       in boolean CreatePolygons,
00398                       in boolean CreatePolyedrs);
00399 
00400     Sew_Error SewSideElements (in long_array IDsOfSide1Elements,
00401                                in long_array IDsOfSide2Elements,
00402                                in long       NodeID1OfSide1ToMerge,
00403                                in long       NodeID1OfSide2ToMerge,
00404                                in long       NodeID2OfSide1ToMerge,
00405                                in long       NodeID2OfSide2ToMerge);
00406 
00412     boolean ChangeElemNodes(in long ide, in long_array newIDs);
00413 
00418     MeshPreviewStruct GetPreviewData();
00419 
00425     long_array GetLastCreatedNodes();
00426 
00432     long_array GetLastCreatedElems();
00433 
00434   };
00435 };
00436 
00437 #endif