Version: 8.3.0
SMESH_Mesh.idl
Go to the documentation of this file.
1 // Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
10 //
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 
23 // File : SMESH_Mesh.idl
24 // Author : Paul RASCLE, EDF
25 //
26 #ifndef _SMESH_MESH_IDL_
27 #define _SMESH_MESH_IDL_
28 
29 #include "SALOME_Exception.idl"
30 #include "SALOME_GenericObj.idl"
31 #include "GEOM_Gen.idl"
32 
33 module SMESH
34 {
35  interface SMESH_Hypothesis;
36  typedef sequence<SMESH_Hypothesis> ListOfHypothesis;
37  interface SMESH_GroupBase;
38  typedef sequence<SMESH_GroupBase> ListOfGroups;
39  interface SMESH_IDSource;
40  typedef sequence<SMESH_IDSource> ListOfIDSources;
41 
42  typedef sequence<double > double_array ;
43  typedef sequence<long > long_array ;
44  typedef sequence<string > string_array ;
45  typedef sequence<long_array> array_of_long_array ;
46 
48  {
80  };
81 
82  struct log_block
83  {
85  long number;
86  double_array coords;
87  long_array indexes;
88  };
89  typedef sequence<log_block> log_array;
90 
91  struct PointStruct { double x;
92  double y;
93  double z; };
94 
95  typedef sequence<PointStruct> nodes_array;
96 
97  struct DirStruct { PointStruct PS; }; // analog to OCCT gp_Vec
98 
99  struct AxisStruct { double x;
100  double y;
101  double z;
102  double vx;
103  double vy;
104  double vz; };
108  struct NodePosition {
109  long shapeID;
110  GEOM::shape_type shapeType;
111  double_array params; // [U] on EDGE, [U,V] on FACE, [] on the rest shapes
112  };
113 
118  long shapeID;
119  GEOM::shape_type shapeType;
120  };
121 
126  {
135  };
136  typedef sequence<ElementType> array_of_ElementType;
137 
142  {
146  Geom_QUADRANGLE, // when a new GeometryType is added, please
147  Geom_POLYGON, // update a corresponding list in SMESH_2smeshpy.cxx, ln 665
156  };
157 
165  };
166 
172  {
199  };
200 
204  enum Hypothesis_Status // in the order of severity
205  {
207  HYP_MISSING, // algo misses a hypothesis
208  HYP_CONCURENT, // several applicable hypotheses
209  HYP_BAD_PARAMETER,// hypothesis has a bad parameter value
210  HYP_HIDDEN_ALGO, // an algo is hidden by an upper dim algo generating all-dim elements
211  HYP_HIDING_ALGO, // an algo hides lower dim algos by generating all-dim elements
212  HYP_UNKNOWN_FATAL,// --- all statuses below should be considered as fatal
213  // for Add/RemoveHypothesis operations
214  HYP_INCOMPATIBLE, // hypothesis does not fit algo
215  HYP_NOTCONFORM, // not conform mesh is produced appling a hypothesis
216  HYP_ALREADY_EXIST,// such hypothesis already exist
217  HYP_BAD_DIM, // bad dimension
218  HYP_BAD_SUBSHAPE, // shape is neither the main one, nor its sub-shape, nor a group
219  HYP_BAD_GEOMETRY, // geometry mismatches algorithm's expectation
220  HYP_NEED_SHAPE, // algorithm can work on shape only
221  HYP_INCOMPAT_HYPS // several additional hypotheses are incompatible one with other
222  };
223 
227  enum DriverMED_ReadStatus // in the order of severity
228  {
230  DRS_EMPTY, // a file contains no mesh with the given name
231  DRS_WARN_RENUMBER, // a MED file has overlapped ranges of element numbers,
232  // so the numbers from the file are ignored
233  DRS_WARN_SKIP_ELEM, // some elements were skipped due to incorrect file data
234  DRS_WARN_DESCENDING, // some elements were skipped due to descending connectivity
235  DRS_FAIL // general failure (exception etc.)
236  };
237 
242  {
245  };
246 
250  struct MedFileInfo
251  {
252  string fileName;
253  long fileSize;
254  long major, minor, release;
255  };
256 
261  {
263  };
264 
270  const long EXTRUSION_FLAG_BOUNDARY = 1;
271  const long EXTRUSION_FLAG_SEW = 2;
272 
277  boolean isPoly;
279 
280  typedef sequence<ElementSubType> types_array;
281 
285  struct MeshPreviewStruct { nodes_array nodesXYZ;
287  types_array elementTypes; };
288 
289  interface SMESH_Mesh;
290 
291  interface SMESH_IDSource : SALOME::GenericObj
292  {
296  long_array GetIDs();
297 
302  long_array GetMeshInfo();
303 
308  long_array GetNbElementsByType();
309 
314  array_of_ElementType GetTypes();
315 
319  SMESH_Mesh GetMesh();
320 
325  boolean IsMeshInfoCorrect();
326 
330  SALOMEDS::TMPFile GetVtkUgStream();
331  };
332 
333  interface SMESH_Group;
334  interface SMESH_GroupOnGeom;
335  interface Filter;
336  interface SMESH_GroupOnFilter;
337  interface SMESH_subMesh;
338  interface SMESH_MeshEditor;
339 
340  typedef sequence<SMESH_subMesh> submesh_array;
341  typedef sequence<submesh_array> submesh_array_array;
342 
343  interface SMESH_Mesh : SALOME::GenericObj, SMESH_IDSource
344  {
348  boolean HasShapeToMesh()
349  raises (SALOME::SALOME_Exception);
350 
355  GEOM::GEOM_Object GetShapeToMesh()
356  raises (SALOME::SALOME_Exception);
357 
361  boolean IsLoaded()
362  raises (SALOME::SALOME_Exception);
363 
367  void Load()
368  raises (SALOME::SALOME_Exception);
369 
373  void Clear()
374  raises (SALOME::SALOME_Exception);
375 
379  submesh_array GetSubMeshes()
380  raises (SALOME::SALOME_Exception);
381 
385  void ClearSubMesh(in long ShapeID)
386  raises (SALOME::SALOME_Exception);
387 
394  SMESH_subMesh GetSubMesh(in GEOM::GEOM_Object aSubObject, in string name)
395  raises (SALOME::SALOME_Exception);
396 
400  void RemoveSubMesh(in SMESH_subMesh aSubMesh)
401  raises (SALOME::SALOME_Exception);
402 
403 
407  SMESH_Group CreateGroup( in ElementType elem_type,
408  in string name )
409  raises (SALOME::SALOME_Exception);
410 
414  SMESH_GroupOnGeom CreateGroupFromGEOM( in ElementType elemType,
415  in string name,
416  in GEOM::GEOM_Object geomObject )
417  raises (SALOME::SALOME_Exception);
418 
422  SMESH_GroupOnFilter CreateGroupFromFilter( in ElementType elemType,
423  in string name,
424  in SMESH::Filter filter )
425  raises (SALOME::SALOME_Exception);
426 
430  void RemoveGroup(in SMESH_GroupBase aGroup)
431  raises (SALOME::SALOME_Exception);
432 
436  void RemoveGroupWithContents( in SMESH_GroupBase aGroup )
437  raises (SALOME::SALOME_Exception);
438 
442  ListOfGroups GetGroups()
443  raises (SALOME::SALOME_Exception);
444 
448  long NbGroups()
449  raises (SALOME::SALOME_Exception);
450 
456  SMESH_Group UnionGroups (in SMESH_GroupBase aGroup1,
457  in SMESH_GroupBase aGroup2,
458  in string name )
459  raises (SALOME::SALOME_Exception);
460 
466  SMESH_Group UnionListOfGroups (in ListOfGroups aListOfGroups,
467  in string name )
468  raises (SALOME::SALOME_Exception);
469 
475  SMESH_Group IntersectGroups (in SMESH_GroupBase aGroup1,
476  in SMESH_GroupBase aGroup2,
477  in string name )
478  raises (SALOME::SALOME_Exception);
479 
485  SMESH_Group IntersectListOfGroups (in ListOfGroups aListOfGroups,
486  in string name)
487  raises (SALOME::SALOME_Exception);
488 
494  SMESH_Group CutGroups (in SMESH_GroupBase aMainGroup,
495  in SMESH_GroupBase aToolGroup,
496  in string name )
497  raises (SALOME::SALOME_Exception);
498 
504  SMESH_Group CutListOfGroups (in ListOfGroups aMainGroups,
505  in ListOfGroups aToolGroups,
506  in string name)
507  raises (SALOME::SALOME_Exception);
508 
520  SMESH_Group CreateDimGroup( in ListOfIDSources aListOfGroups,
521  in ElementType anElemType,
522  in string name,
523  in NB_COMMON_NODES_ENUM nbCommonNodes,
524  in boolean underlyingOnly )
525  raises (SALOME::SALOME_Exception);
526 
531  raises (SALOME::SALOME_Exception);
532 
547  Hypothesis_Status AddHypothesis(in GEOM::GEOM_Object aSubObject,
548  in SMESH_Hypothesis anHyp,
549  out string anErrorText)
550  raises (SALOME::SALOME_Exception);
551 
555  Hypothesis_Status RemoveHypothesis(in GEOM::GEOM_Object aSubObject,
556  in SMESH_Hypothesis anHyp)
557  raises (SALOME::SALOME_Exception);
558 
562  ListOfHypothesis GetHypothesisList(in GEOM::GEOM_Object aSubObject)
563  raises (SALOME::SALOME_Exception);
564 
571  log_array GetLog(in boolean clearAfterGet)
572  raises (SALOME::SALOME_Exception);
573 
578  void ClearLog()
579  raises (SALOME::SALOME_Exception);
580 
586  void SetAutoColor(in boolean theAutoColor)
587  raises (SALOME::SALOME_Exception);
588 
592  boolean GetAutoColor()
593  raises (SALOME::SALOME_Exception);
594 
598  long GetId();
599 
603  long GetStudyId();
604 
608  SMESH_MeshEditor GetMeshEditor()
609  raises (SALOME::SALOME_Exception);
610 
615  SMESH_MeshEditor GetMeshEditPreviewer()
616  raises (SALOME::SALOME_Exception);
617 
622  boolean HasModificationsToDiscard()
623  raises (SALOME::SALOME_Exception);
624 
628  boolean HasDuplicatedGroupNamesMED();
629 
645  void ExportToMEDX( in string file,
646  in boolean auto_groups,
647  in MED_VERSION version,
648  in boolean overwrite,
649  in boolean autoDimension) raises (SALOME::SALOME_Exception);
650 
670  void ExportPartToMED( in SMESH_IDSource meshPart,
671  in string file,
672  in boolean auto_groups,
673  in MED_VERSION version,
674  in boolean overwrite,
675  in boolean autoDimension,
676  in GEOM::ListOfFields fields,
677  in string geomAssocFields ) raises (SALOME::SALOME_Exception);
678 
684  void ExportToMED( in string file, in boolean auto_groups, in MED_VERSION theVersion )
685  raises (SALOME::SALOME_Exception);
686 
693  void ExportMED( in string file, in boolean auto_groups )
694  raises (SALOME::SALOME_Exception);
695 
700  void ExportSAUV( in string file, in boolean auto_groups )
701  raises (SALOME::SALOME_Exception);
702 
706  string GetVersionString(in MED_VERSION version, in short nbDigits);
707 
712  void ExportDAT( in string file ) raises (SALOME::SALOME_Exception);
713  void ExportUNV( in string file ) raises (SALOME::SALOME_Exception);
714  void ExportSTL( in string file,
715  in boolean isascii ) raises (SALOME::SALOME_Exception);
716  void ExportCGNS( in SMESH_IDSource meshPart,
717  in string file,
718  in boolean overwrite ) raises (SALOME::SALOME_Exception);
719  void ExportGMF( in SMESH_IDSource meshPart,
720  in string file,
721  in boolean withRequiredGroups) raises (SALOME::SALOME_Exception);
722  void ExportPartToDAT( in SMESH_IDSource meshPart,
723  in string file ) raises (SALOME::SALOME_Exception);
724  void ExportPartToUNV( in SMESH_IDSource meshPart,
725  in string file ) raises (SALOME::SALOME_Exception);
726  void ExportPartToSTL( in SMESH_IDSource meshPart,
727  in string file,
728  in boolean isascii ) raises (SALOME::SALOME_Exception);
732  double GetComputeProgress();
733 
737  long NbNodes()
738  raises (SALOME::SALOME_Exception);
739 
740  long NbElements()
741  raises (SALOME::SALOME_Exception);
742 
743  long Nb0DElements()
744  raises (SALOME::SALOME_Exception);
745 
746  long NbBalls()
747  raises (SALOME::SALOME_Exception);
748 
749  long NbEdges()
750  raises (SALOME::SALOME_Exception);
751 
752  long NbEdgesOfOrder(in ElementOrder order)
753  raises (SALOME::SALOME_Exception);
754 
755  long NbFaces()
756  raises (SALOME::SALOME_Exception);
757 
758  long NbFacesOfOrder(in ElementOrder order)
759  raises (SALOME::SALOME_Exception);
760 
761  long NbTriangles()
762  raises (SALOME::SALOME_Exception);
763 
764  long NbTrianglesOfOrder(in ElementOrder order)
765  raises (SALOME::SALOME_Exception);
766 
767  long NbBiQuadTriangles()
768  raises (SALOME::SALOME_Exception);
769 
770  long NbQuadrangles()
771  raises (SALOME::SALOME_Exception);
772 
773  long NbQuadranglesOfOrder(in ElementOrder order)
774  raises (SALOME::SALOME_Exception);
775 
776  long NbBiQuadQuadrangles()
777  raises (SALOME::SALOME_Exception);
778 
779  long NbPolygons()
780  raises (SALOME::SALOME_Exception);
781 
782  long NbPolygonsOfOrder(in ElementOrder order)
783  raises (SALOME::SALOME_Exception);
784 
785  long NbVolumes()
786  raises (SALOME::SALOME_Exception);
787 
788  long NbVolumesOfOrder(in ElementOrder order)
789  raises (SALOME::SALOME_Exception);
790 
791  long NbTetras()
792  raises (SALOME::SALOME_Exception);
793 
794  long NbTetrasOfOrder(in ElementOrder order)
795  raises (SALOME::SALOME_Exception);
796 
797  long NbHexas()
798  raises (SALOME::SALOME_Exception);
799 
800  long NbHexasOfOrder(in ElementOrder order)
801  raises (SALOME::SALOME_Exception);
802 
803  long NbTriQuadraticHexas()
804  raises (SALOME::SALOME_Exception);
805 
806  long NbPyramids()
807  raises (SALOME::SALOME_Exception);
808 
809  long NbPyramidsOfOrder(in ElementOrder order)
810  raises (SALOME::SALOME_Exception);
811 
812  long NbPrisms()
813  raises (SALOME::SALOME_Exception);
814 
815  long NbPrismsOfOrder(in ElementOrder order)
816  raises (SALOME::SALOME_Exception);
817 
818  long NbHexagonalPrisms()
819  raises (SALOME::SALOME_Exception);
820 
821  long NbPolyhedrons()
822  raises (SALOME::SALOME_Exception);
823 
824  long NbSubMesh()
825  raises (SALOME::SALOME_Exception);
826 
827  long_array GetElementsId()
828  raises (SALOME::SALOME_Exception);
829 
830  long_array GetElementsByType( in ElementType theType )
831  raises (SALOME::SALOME_Exception);
832 
833  long_array GetNodesId()
834  raises (SALOME::SALOME_Exception);
835 
839  ElementType GetElementType( in long id, in boolean iselem )
840  raises (SALOME::SALOME_Exception);
841 
842  EntityType GetElementGeomType( in long id )
843  raises (SALOME::SALOME_Exception);
844 
845  GeometryType GetElementShape( in long id )
846  raises (SALOME::SALOME_Exception);
847 
848  long_array GetSubMeshElementsId(in long ShapeID)
849  raises (SALOME::SALOME_Exception);
850 
851  long_array GetSubMeshNodesId(in long ShapeID, in boolean all )
852  raises (SALOME::SALOME_Exception);
853 
854  ElementType GetSubMeshElementType(in long ShapeID)
855  raises (SALOME::SALOME_Exception);
856 
857 
865  boolean IsUnorderedSubMesh(in long submeshID);
866 
870  submesh_array_array GetMeshOrder();
871 
875  boolean SetMeshOrder(in submesh_array_array theSubMeshArray);
876 
877 
881  string Dump();
882 
886  long long GetMeshPtr();
887 
892  double_array GetNodeXYZ(in long id);
893 
898  long_array GetNodeInverseElements(in long id);
899 
903  NodePosition GetNodePosition(in long NodeID);
904 
908  ElementPosition GetElementPosition(in long ElemID);
909 
914  long GetShapeID(in long id);
915 
921  long GetShapeIDForElem(in long id);
922 
927  long GetElemNbNodes(in long id);
928 
932  long_array GetElemNodes(in long id);
933 
939  long GetElemNode(in long id, in long index);
940 
945  boolean IsMediumNode(in long ide, in long idn);
946 
951  boolean IsMediumNodeOfAnyElem(in long idn, in ElementType elem_type);
952 
956  long ElemNbEdges(in long id);
957 
961  long ElemNbFaces(in long id);
962 
966  long_array GetElemFaceNodes(in long elemId, in short faceIndex);
967 
971  double_array GetFaceNormal(in long faceId, in boolean normalized);
972 
976  long FindElementByNodes(in long_array nodes);
977 
981  boolean IsPoly(in long id);
982 
986  boolean IsQuadratic(in long id);
987 
991  double GetBallDiameter(in long id);
992 
998  double_array BaryCenter(in long id);
999 
1001  MedFileInfo GetMEDFileInfo();
1002 
1007  void SetParameters (in string theParameters);
1008 
1012  string GetParameters();
1013 
1017  string_array GetLastParameters();
1018  };
1019 
1020  interface SMESH_subMesh : SALOME::GenericObj, SMESH_IDSource
1021  {
1025  long GetNumberOfElements()
1026  raises (SALOME::SALOME_Exception);
1027 
1031  long GetNumberOfNodes( in boolean all )
1032  raises (SALOME::SALOME_Exception);
1033 
1037  long_array GetElementsId()
1038  raises (SALOME::SALOME_Exception);
1039 
1043  long_array GetElementsByType( in ElementType theType )
1044  raises (SALOME::SALOME_Exception);
1045 
1049  ElementType GetElementType( in long id, in boolean iselem )
1050  raises (SALOME::SALOME_Exception);
1051 
1055  long_array GetNodesId()
1056  raises (SALOME::SALOME_Exception);
1057 
1061  GEOM::GEOM_Object GetSubShape()
1062  raises (SALOME::SALOME_Exception);
1063 
1068  raises (SALOME::SALOME_Exception);
1069 
1073  long GetId();
1074  };
1075 
1076 };
1077 
1078 #endif