00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _SMESH_MESHEDITOR_IDL_
00025 #define _SMESH_MESHEDITOR_IDL_
00026
00027 #include "SMESH_Mesh.idl"
00028
00029 module SMESH
00030 {
00031 enum Bnd_Dimension { BND_2DFROM3D, BND_1DFROM3D, BND_1DFROM2D };
00032
00036 interface NumericalFunctor;
00037 interface SMESH_MeshEditor
00038 {
00044 SMESH_IDSource MakeIDSource(in long_array IDsOfElements, in ElementType type);
00045
00051 boolean RemoveElements(in long_array IDsOfElements);
00052
00058 boolean RemoveNodes(in long_array IDsOfNodes);
00059
00064 long RemoveOrphanNodes();
00065
00073 long AddNode(in double x, in double y, in double z);
00074
00079 long Add0DElement(in long IDOfNode);
00080
00089 long AddEdge(in long_array IDsOfNodes);
00090
00099 long AddFace(in long_array IDsOfNodes);
00100
00101 long AddPolygonalFace(in long_array IdsOfNodes);
00102
00111 long AddVolume(in long_array IDsOfNodes);
00112
00119 long AddPolyhedralVolume (in long_array IdsOfNodes,
00120 in long_array Quantities);
00121
00128 long AddPolyhedralVolumeByFaces (in long_array IdsOfFaces);
00129
00135 void SetNodeOnVertex(in long NodeID, in long VertexID)
00136 raises (SALOME::SALOME_Exception);
00143 void SetNodeOnEdge(in long NodeID, in long EdgeID, in double paramOnEdge)
00144 raises (SALOME::SALOME_Exception);
00152 void SetNodeOnFace(in long NodeID, in long FaceID, in double u, in double v)
00153 raises (SALOME::SALOME_Exception);
00159 void SetNodeInVolume(in long NodeID, in long SolidID)
00160 raises (SALOME::SALOME_Exception);
00166 void SetMeshElementOnShape(in long ElementID, in long ShapeID)
00167 raises (SALOME::SALOME_Exception);
00168
00169
00170 boolean MoveNode(in long NodeID, in double x, in double y, in double z);
00171
00172 boolean InverseDiag(in long NodeID1, in long NodeID2);
00173
00174 boolean DeleteDiag(in long NodeID1, in long NodeID2);
00175
00176 boolean Reorient(in long_array IDsOfElements);
00177
00178 boolean ReorientObject(in SMESH_IDSource theObject);
00179
00188 boolean TriToQuad (in long_array IDsOfElements,
00189 in NumericalFunctor Criterion,
00190 in double MaxAngle);
00191
00197 boolean TriToQuadObject (in SMESH_IDSource theObject,
00198 in NumericalFunctor Criterion,
00199 in double MaxAngle);
00200
00207 boolean QuadToTri (in long_array IDsOfElements,
00208 in NumericalFunctor Criterion);
00209
00215 boolean QuadToTriObject (in SMESH_IDSource theObject,
00216 in NumericalFunctor Criterion);
00217
00224 boolean SplitQuad (in long_array IDsOfElements,
00225 in boolean Diag13);
00226
00232 boolean SplitQuadObject (in SMESH_IDSource theObject,
00233 in boolean Diag13);
00234
00242 long BestSplit (in long IDOfQuad,
00243 in NumericalFunctor Criterion);
00244
00253 void SplitVolumesIntoTetra(in SMESH_IDSource elems, in short methodFlags)
00254 raises (SALOME::SALOME_Exception);
00255
00256
00257 enum Smooth_Method { LAPLACIAN_SMOOTH, CENTROIDAL_SMOOTH };
00258
00259 boolean Smooth(in long_array IDsOfElements,
00260 in long_array IDsOfFixedNodes,
00261 in long MaxNbOfIterations,
00262 in double MaxAspectRatio,
00263 in Smooth_Method Method);
00264
00265 boolean SmoothObject(in SMESH_IDSource theObject,
00266 in long_array IDsOfFixedNodes,
00267 in long MaxNbOfIterations,
00268 in double MaxAspectRatio,
00269 in Smooth_Method Method);
00270
00271 boolean SmoothParametric(in long_array IDsOfElements,
00272 in long_array IDsOfFixedNodes,
00273 in long MaxNbOfIterations,
00274 in double MaxAspectRatio,
00275 in Smooth_Method Method);
00276
00277 boolean SmoothParametricObject(in SMESH_IDSource theObject,
00278 in long_array IDsOfFixedNodes,
00279 in long MaxNbOfIterations,
00280 in double MaxAspectRatio,
00281 in Smooth_Method Method);
00282
00283 void ConvertToQuadratic(in boolean theForce3d);
00284
00285 boolean ConvertFromQuadratic();
00286
00287 void ConvertToQuadraticObject(in boolean theForce3d,
00288 in SMESH_IDSource theObject)
00289 raises (SALOME::SALOME_Exception);
00290
00291 void ConvertFromQuadraticObject(in SMESH_IDSource theObject)
00292 raises (SALOME::SALOME_Exception);
00293
00294 void RenumberNodes();
00295
00296 void RenumberElements();
00297
00305 void RotationSweep(in long_array IDsOfElements,
00306 in AxisStruct Axix,
00307 in double AngleInRadians,
00308 in long NbOfSteps,
00309 in double Tolerance);
00314 ListOfGroups RotationSweepMakeGroups(in long_array IDsOfElements,
00315 in AxisStruct Axix,
00316 in double AngleInRadians,
00317 in long NbOfSteps,
00318 in double Tolerance);
00326 void RotationSweepObject(in SMESH_IDSource theObject,
00327 in AxisStruct Axix,
00328 in double AngleInRadians,
00329 in long NbOfSteps,
00330 in double Tolerance);
00335 ListOfGroups RotationSweepObjectMakeGroups(in SMESH_IDSource theObject,
00336 in AxisStruct Axix,
00337 in double AngleInRadians,
00338 in long NbOfSteps,
00339 in double Tolerance);
00347 void RotationSweepObject1D(in SMESH_IDSource theObject,
00348 in AxisStruct Axix,
00349 in double AngleInRadians,
00350 in long NbOfSteps,
00351 in double Tolerance);
00356 ListOfGroups RotationSweepObject1DMakeGroups(in SMESH_IDSource theObject,
00357 in AxisStruct Axix,
00358 in double AngleInRadians,
00359 in long NbOfSteps,
00360 in double Tolerance);
00368 void RotationSweepObject2D(in SMESH_IDSource theObject,
00369 in AxisStruct Axix,
00370 in double AngleInRadians,
00371 in long NbOfSteps,
00372 in double Tolerance);
00377 ListOfGroups RotationSweepObject2DMakeGroups(in SMESH_IDSource theObject,
00378 in AxisStruct Axix,
00379 in double AngleInRadians,
00380 in long NbOfSteps,
00381 in double Tolerance);
00388 void ExtrusionSweep(in long_array IDsOfElements,
00389 in DirStruct StepVector,
00390 in long NbOfSteps);
00395 ListOfGroups ExtrusionSweepMakeGroups(in long_array IDsOfElements,
00396 in DirStruct StepVector,
00397 in long NbOfSteps);
00405 void AdvancedExtrusion(in long_array IDsOfElements,
00406 in DirStruct StepVector,
00407 in long NbOfSteps,
00408 in long ExtrFlags,
00409 in double SewTolerance);
00414 ListOfGroups AdvancedExtrusionMakeGroups(in long_array IDsOfElements,
00415 in DirStruct StepVector,
00416 in long NbOfSteps,
00417 in long ExtrFlags,
00418 in double SewTolerance);
00419
00420 void ExtrusionSweepObject(in SMESH_IDSource theObject,
00421 in DirStruct StepVector,
00422 in long NbOfSteps);
00423 ListOfGroups ExtrusionSweepObjectMakeGroups(in SMESH_IDSource theObject,
00424 in DirStruct StepVector,
00425 in long NbOfSteps);
00426
00427 void ExtrusionSweepObject1D(in SMESH_IDSource theObject,
00428 in DirStruct StepVector,
00429 in long NbOfSteps);
00430 ListOfGroups ExtrusionSweepObject1DMakeGroups(in SMESH_IDSource theObject,
00431 in DirStruct StepVector,
00432 in long NbOfSteps);
00433
00434 void ExtrusionSweepObject2D(in SMESH_IDSource theObject,
00435 in DirStruct StepVector,
00436 in long NbOfSteps);
00437 ListOfGroups ExtrusionSweepObject2DMakeGroups(in SMESH_IDSource theObject,
00438 in DirStruct StepVector,
00439 in long NbOfSteps);
00440
00441 enum Extrusion_Error {
00442 EXTR_OK,
00443 EXTR_NO_ELEMENTS,
00444 EXTR_PATH_NOT_EDGE,
00445 EXTR_BAD_PATH_SHAPE,
00446 EXTR_BAD_STARTING_NODE,
00447 EXTR_BAD_ANGLES_NUMBER,
00448 EXTR_CANT_GET_TANGENT
00449 };
00450
00451 ListOfGroups ExtrusionAlongPathX(in long_array IDsOfElements,
00452 in SMESH_IDSource Path,
00453 in long NodeStart,
00454 in boolean HasAngles,
00455 in double_array Angles,
00456 in boolean LinearVariation,
00457 in boolean HasRefPoint,
00458 in PointStruct RefPoint,
00459 in boolean MakeGroups,
00460 in ElementType ElemType,
00461 out Extrusion_Error Error);
00462
00463 ListOfGroups ExtrusionAlongPathObjX(in SMESH_IDSource theObject,
00464 in SMESH_IDSource Path,
00465 in long NodeStart,
00466 in boolean HasAngles,
00467 in double_array Angles,
00468 in boolean LinearVariation,
00469 in boolean HasRefPoint,
00470 in PointStruct RefPoint,
00471 in boolean MakeGroups,
00472 in ElementType ElemType,
00473 out Extrusion_Error Error);
00474
00475 Extrusion_Error ExtrusionAlongPath(in long_array IDsOfElements,
00476 in SMESH_Mesh PathMesh,
00477 in GEOM::GEOM_Object PathShape,
00478 in long NodeStart,
00479 in boolean HasAngles,
00480 in double_array Angles,
00481 in boolean HasRefPoint,
00482 in PointStruct RefPoint);
00483 ListOfGroups ExtrusionAlongPathMakeGroups(in long_array IDsOfElements,
00484 in SMESH_Mesh PathMesh,
00485 in GEOM::GEOM_Object PathShape,
00486 in long NodeStart,
00487 in boolean HasAngles,
00488 in double_array Angles,
00489 in boolean HasRefPoint,
00490 in PointStruct RefPoint,
00491 out Extrusion_Error Error);
00492
00493 Extrusion_Error ExtrusionAlongPathObject(in SMESH_IDSource theObject,
00494 in SMESH_Mesh PathMesh,
00495 in GEOM::GEOM_Object PathShape,
00496 in long NodeStart,
00497 in boolean HasAngles,
00498 in double_array Angles,
00499 in boolean HasRefPoint,
00500 in PointStruct RefPoint);
00501 ListOfGroups ExtrusionAlongPathObjectMakeGroups(in SMESH_IDSource theObject,
00502 in SMESH_Mesh PathMesh,
00503 in GEOM::GEOM_Object PathShape,
00504 in long NodeStart,
00505 in boolean HasAngles,
00506 in double_array Angles,
00507 in boolean HasRefPoint,
00508 in PointStruct RefPoint,
00509 out Extrusion_Error Error);
00510
00511 Extrusion_Error ExtrusionAlongPathObject1D(in SMESH_IDSource theObject,
00512 in SMESH_Mesh PathMesh,
00513 in GEOM::GEOM_Object PathShape,
00514 in long NodeStart,
00515 in boolean HasAngles,
00516 in double_array Angles,
00517 in boolean HasRefPoint,
00518 in PointStruct RefPoint);
00519 ListOfGroups ExtrusionAlongPathObject1DMakeGroups(in SMESH_IDSource theObject,
00520 in SMESH_Mesh PathMesh,
00521 in GEOM::GEOM_Object PathShape,
00522 in long NodeStart,
00523 in boolean HasAngles,
00524 in double_array Angles,
00525 in boolean HasRefPoint,
00526 in PointStruct RefPoint,
00527 out Extrusion_Error Error);
00528
00529 Extrusion_Error ExtrusionAlongPathObject2D(in SMESH_IDSource theObject,
00530 in SMESH_Mesh PathMesh,
00531 in GEOM::GEOM_Object PathShape,
00532 in long NodeStart,
00533 in boolean HasAngles,
00534 in double_array Angles,
00535 in boolean HasRefPoint,
00536 in PointStruct RefPoint);
00537 ListOfGroups ExtrusionAlongPathObject2DMakeGroups(in SMESH_IDSource theObject,
00538 in SMESH_Mesh PathMesh,
00539 in GEOM::GEOM_Object PathShape,
00540 in long NodeStart,
00541 in boolean HasAngles,
00542 in double_array Angles,
00543 in boolean HasRefPoint,
00544 in PointStruct RefPoint,
00545 out Extrusion_Error Error);
00546
00555 double_array LinearAnglesVariation(in SMESH_Mesh PathMesh,
00556 in GEOM::GEOM_Object PathShape,
00557 in double_array Angles);
00558
00559 enum MirrorType { POINT, AXIS, PLANE };
00560
00561 void Mirror (in long_array IDsOfElements,
00562 in AxisStruct Mirror,
00563 in MirrorType Type,
00564 in boolean Copy);
00565 ListOfGroups MirrorMakeGroups (in long_array IDsOfElements,
00566 in AxisStruct Mirror,
00567 in MirrorType Type);
00568 SMESH_Mesh MirrorMakeMesh (in long_array IDsOfElements,
00569 in AxisStruct Mirror,
00570 in MirrorType Type,
00571 in boolean CopyGroups,
00572 in string MeshName);
00573
00574 void MirrorObject (in SMESH_IDSource theObject,
00575 in AxisStruct Mirror,
00576 in MirrorType Type,
00577 in boolean Copy);
00578 ListOfGroups MirrorObjectMakeGroups (in SMESH_IDSource theObject,
00579 in AxisStruct Mirror,
00580 in MirrorType Type);
00581 SMESH_Mesh MirrorObjectMakeMesh (in SMESH_IDSource theObject,
00582 in AxisStruct Mirror,
00583 in MirrorType Type,
00584 in boolean CopyGroups,
00585 in string MeshName);
00586
00587 void Translate (in long_array IDsOfElements,
00588 in DirStruct Vector,
00589 in boolean Copy);
00590 ListOfGroups TranslateMakeGroups (in long_array IDsOfElements,
00591 in DirStruct Vector);
00592 SMESH_Mesh TranslateMakeMesh (in long_array IDsOfElements,
00593 in DirStruct Vector,
00594 in boolean CopyGroups,
00595 in string MeshName);
00596
00597 void TranslateObject (in SMESH_IDSource theObject,
00598 in DirStruct Vector,
00599 in boolean Copy);
00600 ListOfGroups TranslateObjectMakeGroups (in SMESH_IDSource theObject,
00601 in DirStruct Vector);
00602 SMESH_Mesh TranslateObjectMakeMesh (in SMESH_IDSource theObject,
00603 in DirStruct Vector,
00604 in boolean CopyGroups,
00605 in string MeshName);
00606
00607 void Scale (in SMESH_IDSource theObject,
00608 in PointStruct thePoint,
00609 in double_array theScaleFact,
00610 in boolean Copy);
00611 ListOfGroups ScaleMakeGroups (in SMESH_IDSource theObject,
00612 in PointStruct thePoint,
00613 in double_array theScaleFact);
00614 SMESH_Mesh ScaleMakeMesh (in SMESH_IDSource theObject,
00615 in PointStruct thePoint,
00616 in double_array theScaleFact,
00617 in boolean CopyGroups,
00618 in string MeshName);
00619
00620 void Rotate (in long_array IDsOfElements,
00621 in AxisStruct Axis,
00622 in double AngleInRadians,
00623 in boolean Copy);
00624 ListOfGroups RotateMakeGroups (in long_array IDsOfElements,
00625 in AxisStruct Axis,
00626 in double AngleInRadians);
00627 SMESH_Mesh RotateMakeMesh (in long_array IDsOfElements,
00628 in AxisStruct Axis,
00629 in double AngleInRadians,
00630 in boolean CopyGroups,
00631 in string MeshName);
00632
00633 void RotateObject (in SMESH_IDSource theObject,
00634 in AxisStruct Axis,
00635 in double AngleInRadians,
00636 in boolean Copy);
00637 ListOfGroups RotateObjectMakeGroups (in SMESH_IDSource theObject,
00638 in AxisStruct Axis,
00639 in double AngleInRadians);
00640 SMESH_Mesh RotateObjectMakeMesh (in SMESH_IDSource theObject,
00641 in AxisStruct Axis,
00642 in double AngleInRadians,
00643 in boolean CopyGroups,
00644 in string MeshName);
00645
00646 void FindCoincidentNodes (in double Tolerance,
00647 out array_of_long_array GroupsOfNodes);
00648
00649 void FindCoincidentNodesOnPart (in SMESH_IDSource SubMeshOrGroup,
00650 in double Tolerance,
00651 out array_of_long_array GroupsOfNodes);
00652
00653 void FindCoincidentNodesOnPartBut (in SMESH_IDSource SubMeshOrGroup,
00654 in double Tolerance,
00655 out array_of_long_array GroupsOfNodes,
00656 in ListOfIDSources ExceptSubMeshOrGroups);
00657
00658 void MergeNodes (in array_of_long_array GroupsOfNodes);
00659
00665 void FindEqualElements (in SMESH_IDSource MeshOrSubMeshOrGroup,
00666 out array_of_long_array GroupsOfElementsID);
00667
00672 void MergeElements(in array_of_long_array GroupsOfElementsID);
00673
00677 void MergeEqualElements();
00678
00683 long MoveClosestNodeToPoint(in double x, in double y, in double z, in long nodeID);
00684
00688 long FindNodeClosestTo(in double x, in double y, in double z);
00689
00695 long_array FindElementsByPoint(in double x, in double y, in double z, in ElementType type);
00696
00701 short GetPointState(in double x, in double y, in double z);
00702
00703 enum Sew_Error {
00704 SEW_OK,
00705 SEW_BORDER1_NOT_FOUND,
00706 SEW_BORDER2_NOT_FOUND,
00707 SEW_BOTH_BORDERS_NOT_FOUND,
00708 SEW_BAD_SIDE_NODES,
00709 SEW_VOLUMES_TO_SPLIT,
00710
00711 SEW_DIFF_NB_OF_ELEMENTS,
00712 SEW_TOPO_DIFF_SETS_OF_ELEMENTS,
00713 SEW_BAD_SIDE1_NODES,
00714 SEW_BAD_SIDE2_NODES
00715 };
00716
00717 Sew_Error SewFreeBorders (in long FirstNodeID1,
00718 in long SecondNodeID1,
00719 in long LastNodeID1,
00720 in long FirstNodeID2,
00721 in long SecondNodeID2,
00722 in long LastNodeID2,
00723 in boolean CreatePolygons,
00724 in boolean CreatePolyedrs);
00725
00726 Sew_Error SewConformFreeBorders (in long FirstNodeID1,
00727 in long SecondNodeID1,
00728 in long LastNodeID1,
00729 in long FirstNodeID2,
00730 in long SecondNodeID2);
00731
00732 Sew_Error SewBorderToSide (in long FirstNodeIDOnFreeBorder,
00733 in long SecondNodeIDOnFreeBorder,
00734 in long LastNodeIDOnFreeBorder,
00735 in long FirstNodeIDOnSide,
00736 in long LastNodeIDOnSide,
00737 in boolean CreatePolygons,
00738 in boolean CreatePolyedrs);
00739
00740 Sew_Error SewSideElements (in long_array IDsOfSide1Elements,
00741 in long_array IDsOfSide2Elements,
00742 in long NodeID1OfSide1ToMerge,
00743 in long NodeID1OfSide2ToMerge,
00744 in long NodeID2OfSide1ToMerge,
00745 in long NodeID2OfSide2ToMerge);
00746
00752 boolean ChangeElemNodes(in long ide, in long_array newIDs);
00753
00758 MeshPreviewStruct GetPreviewData();
00759
00765 long_array GetLastCreatedNodes();
00766
00772 long_array GetLastCreatedElems();
00773
00783 boolean DoubleNodes( in long_array theNodes, in long_array theModifiedElems );
00784
00793 boolean DoubleNode( in long theNodeId, in long_array theModifiedElems );
00794
00803 boolean DoubleNodeGroup( in SMESH_GroupBase theNodes,
00804 in SMESH_GroupBase theModifiedElems );
00805
00815 SMESH_Group DoubleNodeGroupNew( in SMESH_GroupBase theNodes,
00816 in SMESH_GroupBase theModifiedElems );
00817
00826 boolean DoubleNodeGroups( in ListOfGroups theNodes,
00827 in ListOfGroups theModifiedElems );
00828
00838 SMESH_Group DoubleNodeGroupsNew( in ListOfGroups theNodes,
00839 in ListOfGroups theModifiedElems );
00840
00851 boolean DoubleNodeElem( in long_array theElems,
00852 in long_array theNodesNot,
00853 in long_array theAffectedElems );
00854
00866 boolean DoubleNodeElemInRegion( in long_array theElems,
00867 in long_array theNodesNot,
00868 in GEOM::GEOM_Object theShape );
00869
00880 boolean DoubleNodeElemGroup( in SMESH_GroupBase theElems,
00881 in SMESH_GroupBase theNodesNot,
00882 in SMESH_GroupBase theAffectedElems );
00883
00895 SMESH_Group DoubleNodeElemGroupNew( in SMESH_GroupBase theElems,
00896 in SMESH_GroupBase theNodesNot,
00897 in SMESH_GroupBase theAffectedElems );
00898
00910 boolean DoubleNodeElemGroupInRegion( in SMESH_GroupBase theElems,
00911 in SMESH_GroupBase theNodesNot,
00912 in GEOM::GEOM_Object theShape );
00913
00924 boolean DoubleNodeElemGroups( in ListOfGroups theElems,
00925 in ListOfGroups theNodesNot,
00926 in ListOfGroups theAffectedElems );
00927
00939 SMESH_Group DoubleNodeElemGroupsNew( in ListOfGroups theElems,
00940 in ListOfGroups theNodesNot,
00941 in ListOfGroups theAffectedElems );
00942
00954 boolean DoubleNodeElemGroupsInRegion( in ListOfGroups theElems,
00955 in ListOfGroups theNodesNot,
00956 in GEOM::GEOM_Object theShape );
00957
00963 boolean Make2DMeshFrom3D();
00964
00981 SMESH_Mesh MakeBoundaryMesh(in SMESH_IDSource elements,
00982 in Bnd_Dimension dimension,
00983 in string groupName,
00984 in string meshName,
00985 in boolean toCopyElements,
00986 in boolean toCopyExistingBondary,
00987 out SMESH_Group group);
01003 long MakeBoundaryElements(in Bnd_Dimension dimension,
01004 in string groupName,
01005 in string meshName,
01006 in boolean toCopyAll,
01007 in ListOfIDSources groups,
01008 out SMESH_Mesh mesh,
01009 out SMESH_Group group) raises (SALOME::SALOME_Exception);
01010
01023 boolean DoubleNodesOnGroupBoundaries( in ListOfGroups theDomains,
01024 in boolean createJointElems );
01025
01035 boolean CreateFlatElementsOnFacesGroups( in ListOfGroups theGroupsOfFaces );
01036 };
01037 };
01038
01039 #endif