Salome HOME
113771d8eef1bbea54047ff9e0cbea10f5a328e3
[plugins/blsurfplugin.git] / idl / BLSURFPlugin_Algorithm.idl
1 // Copyright (C) 2007-2023  CEA/DEN, EDF R&D
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19
20 // ---
21 // File    : BLSURFPlugin_Algorithm.idl
22 // Authors : Francis KLOSS (OCC) & Patrick LAUG (INRIA) & Lioka RAZAFINDRAZAKA (CEA)
23 //           Size maps developement: Nicolas GEIMER (OCC) & Gilles DAVID (EURIWARE)
24 // ---
25 //
26 #ifndef _SMESH_BLSURFALGORITHM_IDL_
27 #define _SMESH_BLSURFALGORITHM_IDL_
28
29 #include "GEOM_Gen.idl"
30 #include "SALOME_Exception.idl"
31 #include "SMESH_Hypothesis.idl"
32 #include "SMESH_Mesh.idl"
33
34 /*!
35  * BLSURFPlugin: interfaces to BLSURF related hypotheses and algorithms
36  */
37 module BLSURFPlugin
38 {
39   typedef sequence<string> string_array;
40
41   // Enforced 1D Mesh
42   struct MG_EnforcedMesh1D
43   {
44     SMESH::SMESH_IDSource mesh;      // mesh, group or sub-mesh
45     string                groupName; // optional name of a group to add mesh edges to
46   };
47   typedef sequence< MG_EnforcedMesh1D > EnforcedMeshesList;
48
49   // Enforced vertex name
50   typedef string TEnfName;
51   // Entry
52   typedef string TEntry;
53   typedef sequence<TEntry> TEntryList;
54   // Group name
55   typedef string TEnfGroupName;
56
57   // Coordinates of enforced vertex
58   typedef sequence<double,3> TEnfVertexCoords;
59   // List of coords
60   typedef sequence<TEnfVertexCoords> TEnfVertexCoordsList;
61
62   // Enforced vertex
63   struct TEnfVertex {
64     TEnfName name;
65     TEntry geomEntry;
66     TEnfVertexCoords coords;
67     TEnfGroupName grpName;
68     TEntryList faceEntries;
69   };
70   // List of enforced vertices
71   typedef sequence<TEnfVertex> TEnfVertexList;
72
73   // Map Face Entry / List of enforced vertices
74   struct TFaceEntryEnfVertexListMapElement {
75     TEntry faceEntry;
76     TEnfVertexList enfVertexList;
77   };
78   typedef sequence<TFaceEntryEnfVertexListMapElement> TFaceEntryEnfVertexListMap;
79   
80   // Map Face Entry / List of coords
81   struct TFaceEntryCoordsListMapElement {
82     TEntry faceEntry;
83     TEnfVertexCoordsList coordsList;
84   };
85   typedef sequence<TFaceEntryCoordsListMapElement> TFaceEntryCoordsListMap;
86   
87   // Map Face Entry / List of enf vertex entries
88   struct TFaceEntryEnfVertexEntryListMapElement {
89     TEntry faceEntry;
90     TEntryList enfVertexEntryList;
91   };
92   typedef sequence<TFaceEntryEnfVertexEntryListMapElement> TFaceEntryEnfVertexEntryListMap;
93   
94   // Map Coords / Enforced vertex
95   struct TCoordsEnfVertexElement {
96     TEnfVertexCoords coords;
97     TEnfVertex enfVertex;
98   };
99   typedef sequence<TCoordsEnfVertexElement> TCoordsEnfVertexMap;
100   
101   // Map Enf Vertex Entry / Enforced vertex
102   struct TEnfVertexEntryEnfVertexElement {
103     TEntry enfVertexEntry;
104     TEnfVertex enfVertex;
105   };
106   typedef sequence<TEnfVertexEntryEnfVertexElement> TEnfVertexEntryEnfVertexMap;
107
108   // List of Face Entry with internal enforced vertices activated
109   typedef sequence<TEntry> TFaceEntryInternalVerticesList;
110
111   // Attractors
112   struct TAttractorParams {
113     string faceEntry;
114     string attEntry;
115     double startSize;
116     double endSize;
117     double infDist;
118     double constDist;
119   };
120   typedef sequence<TAttractorParams> TAttParamsMap;
121   
122   // Periodicity
123   struct TPreCadPeriodicity {
124     TEntry shape1Entry;
125     TEntry shape2Entry;
126     TEntryList theSourceVerticesEntries;
127     TEntryList theTargetVerticesEntries;
128   };
129   
130   typedef sequence<TPreCadPeriodicity> TPeriodicityList;
131
132   // Hyper-patches
133   typedef sequence< long               > THyperPatch;
134   typedef sequence< THyperPatch        > THyperPatchList;
135   typedef sequence< string             > THyperPatchEntries;
136   typedef sequence< THyperPatchEntries > THyperPatchEntriesList;
137   typedef sequence< GEOM::ListOfGO     > THyperPatchShapesList;
138   
139   /*!
140    * BLSURFPlugin_BLSURF: interface of BLSURF algorithm
141    */
142   interface BLSURFPlugin_BLSURF : SMESH::SMESH_2D_Algo
143   {
144   };
145
146   /*!
147    * BLSURFPlugin_Hypothesis: interface of "BLSURF parameters" hypothesis
148    */
149   interface BLSURFPlugin_Hypothesis : SMESH::SMESH_Hypothesis
150   {
151
152     /*!
153      * Get version of MeshGems suite.
154      * The version is a string in form <major>.<minor>-<patch>. Example: "2.9-6".
155      */
156     string GetMeshGemsVersion();
157
158     /*!
159      *Set a way to define size of mesh elements to generate
160      * 0 - size is defined automatically
161      * 1 - size is set by SetPhySize() method
162      * 2 - size is set by SetPhySize() method. A sizemap is defined.
163      */
164     void SetPhysicalMesh(in long isCustom);
165     long GetPhysicalMesh();
166
167     /*!
168      *Set a way to define maximum angular deflection of mesh from CAD model
169      * 0 - deflection is defined automatically
170      * 1 - deflection is set by SetAngleMesh() method
171      * 2 - deflection is set by SetAngleMesh() method. A sizemap is defined (TODO).
172      */
173     void SetGeometricMesh(in long isCustom);
174     long GetGeometricMesh();
175
176     /*!
177      *Set size of mesh elements to generate
178      */
179     void SetPhySize(in double size);
180     void SetPhySizeRel(in double size);
181     double GetPhySize();
182     boolean IsPhySizeRel();
183
184     /*!
185      *Set lower boundary of mesh element size
186      */
187     void SetMinSize(in double theMinSize);
188     void SetMinSizeRel(in double theMinSize);
189     double GetMinSize();
190     boolean IsMinSizeRel();
191
192     /*!
193      *Set upper boundary of mesh element size
194      */
195     void SetMaxSize(in double theMaxSize);
196     void SetMaxSizeRel(in double theMaxSize);
197     double GetMaxSize();
198     boolean IsMaxSizeRel();
199
200     /*!
201      *Set maximal allowed ratio between the lengths of two adjacent edges
202      */
203     void SetUseGradation(in boolean toUse);
204     boolean GetUseGradation();
205     void SetGradation(in double ratio);
206     double GetGradation();
207
208     /*!
209      *Set maximal allowed ratio between the lengths of two adjacent edges in 3D mesh
210      */
211     void SetUseVolumeGradation(in boolean toUse);
212     boolean GetUseVolumeGradation();
213     void SetVolumeGradation(in double ratio);
214     double GetVolumeGradation();
215
216     /*!
217      *Set to create quadrilateral elements or not
218      */
219     void SetQuadAllowed(in boolean allowed);
220     void SetElementType(in long elementType);
221     long GetElementType();
222
223     /*!
224      *Set angular deflection (in degrees) of a mesh face and edge from CAD surface
225      */
226     void SetAngleMesh(in double angle);
227     double GetAngleMesh();
228
229     /*!
230      *Set the maximum desired distance between a triangle and its supporting CAD surface
231      */
232     void SetChordalError(in double distance);
233     double GetChordalError();
234
235     /*!
236      * Determines whether the generated mesh will be isotropic or anisotropic
237      */
238     void SetAnisotropic(in boolean anisotropic);
239     boolean GetAnisotropic();
240
241     /*!
242      * Defines the maximum anisotropic ratio of the metric governing the anisotropic process.
243      * The default value of 0 means that the metric (and thus the generated elements) 
244      * can be arbitrarily stretched.
245      */
246     void SetAnisotropicRatio(in double ratio);
247     double GetAnisotropicRatio();
248
249     /*!
250      * This patch-independent correction option can be activated to remove the tiny
251      * (nano) edges from the generated mesh, without taking into account the tags 
252      * (attributes) specifications.
253      */
254     void SetRemoveTinyEdges(in boolean remove);
255     boolean GetRemoveTinyEdges();
256
257     /*!
258      * Defines the minimal length under which an edge is considered to be a tiny one
259      */
260     void SetTinyEdgeLength(in double length);
261     double GetTinyEdgeLength();
262
263     /*!
264      *  This patch-independent correction option can be activated to remove the tiny
265      * edges (defined by the option tiny edge optimisation length) from the generated
266      * mesh when it improves the local mesh quality, without taking into account the
267      * tags (attributes) specifications.
268      */
269     void SetOptimiseTinyEdges(in boolean toOptimise);
270     boolean GetOptimiseTinyEdges();
271
272     /*!
273      * Defines the minimal length under which an edge is considered to be a tiny one
274      * to be optimised out by the optimise tiny edges option
275      */
276     void SetTinyEdgeOptimisationLength(in double length);
277     double GetTinyEdgeOptimisationLength();
278
279     /*!
280      * Activate correction of all surface intersections
281      */
282     void SetCorrectSurfaceIntersection(in boolean toCorrect);
283     boolean GetCorrectSurfaceIntersection();
284
285     /*!
286      * Defines the time the user is ready to spend in the intersection prevention process.
287      * For example, maxCost = 3 means that MeshGems-CADSurf will not spend more time
288      * in the intersection removal process than 3 times the time required to mesh
289      * without processing the intersections.
290      */
291     void SetCorrectSurfaceIntersectionMaxCost(in double maxCost);
292     double GetCorrectSurfaceIntersectionMaxCost();
293
294     /*!
295      * This patch independent correction option can be activated to remove the bad
296      * elements (often called slivers) from the generated mesh, without taking into account
297      * the tags (attributes) specification.
298      */
299     void SetBadElementRemoval(in boolean remove);
300     boolean GetBadElementRemoval();
301
302     /*!
303      * This parameter defines the aspect ratio triggering the "bad element"
304      * classification for the force bad surface element removal option.
305      */
306     void SetBadElementAspectRatio(in double ratio);
307     double GetBadElementAspectRatio();
308
309     /*!
310      * If this option is activated, MeshGems-CADSurf will optimize the mesh in order to
311      * get better shaped elements, during a process which respects the patch independent options.
312      * This optimisation cannot be fully performed when correct_surface_intersections = 1.
313      */
314     void SetOptimizeMesh(in boolean optimize);
315     boolean GetOptimizeMesh();
316
317     /*!
318      * Determines the order of mesh elements to be generated (linear or quadratic)
319      */
320     void SetQuadraticMesh(in boolean quadratic);
321     boolean GetQuadraticMesh();
322
323     /*!
324      *Set topology usage way defining how mesh conformity is assured
325      * value=0 - mesh conformity is assured by conformity of a shape
326      * value=1,2 - mesh conformity is assured by pre-processing a CAD model (OBSOLETE)
327      * value=3 - mesh conformity is assured by pre-processing a CAD model with Pre-CAD
328      */
329     void SetTopology(in long way);
330     long GetTopology();
331
332     
333     /*!
334      *  Activate/deactivate surface proximity computation
335      */
336     void SetSurfaceProximity( in boolean toUse );
337     boolean GetSurfaceProximity();
338
339     /*!
340      * Set number of surface element layers to be generated due to surface proximity
341      */
342     void SetNbSurfaceProximityLayers( in short nbLayers );
343     short GetNbSurfaceProximityLayers();
344
345     /*!
346      * Set coefficient by which size of element refined due to surface proximity is increased
347      */
348     void SetSurfaceProximityRatio( in double ratio );
349     double GetSurfaceProximityRatio();
350
351     /*!
352      *  Activate/deactivate volume proximity computation
353      */
354     void SetVolumeProximity( in boolean toUse );
355     boolean GetVolumeProximity();
356
357     /*!
358      * Set number of surface element layers to be generated due to volume proximity
359      */
360     void SetNbVolumeProximityLayers( in short nbLayers );
361     short GetNbVolumeProximityLayers();
362
363     /*!
364      * Set coefficient by which size of element refined due to volume proximity is increased
365      */
366     void SetVolumeProximityRatio( in double ratio );
367     double GetVolumeProximityRatio();
368
369     /*!
370      * Set verbosity level in the range 0 to 10.
371      */
372     void SetVerbosity(in short theVal) raises (SALOME::SALOME_Exception);
373     short GetVerbosity();
374
375     /*!
376      * Set/Get enforced 1D meshes
377      */
378     void SetEnforcedMeshes( in EnforcedMeshesList enforcedMeshes );
379     EnforcedMeshesList GetEnforcedMeshes();
380
381     /*!
382      * Set enforce_cad_edge_sizes parameter
383      *
384      * Relaxes the given sizemap constraint around CAD edges to allow a better
385      * element quality and a better geometric approximation. It is only useful in 
386      * combination with the gradation option.
387      */
388     void SetEnforceCadEdgesSize( in boolean toEnforce );
389     boolean GetEnforceCadEdgesSize();
390
391     /*!
392      * Set jacobian_rectification_respect_geometry parameter
393      *
394      * While making the mesh quadratic, allows to lose the CAD-mesh associativity in order
395      * to correct elements with nagative Jacobian
396      */
397     void SetJacobianRectificationRespectGeometry( in boolean allowRectification );
398     boolean GetJacobianRectificationRespectGeometry();
399     
400     /*!
401      * Set rectify_jacobian parameter
402      *
403      * While making the mesh quadratic, allow to fix nagative Jacobian surface elements
404      */
405     void SetJacobianRectification( in boolean allowRectification );
406     boolean GetJacobianRectification();
407
408     /*!
409      * Set use_deprecated_patch_mesher parameter (compatibility with older versions of Meshgems)
410      *
411      * the use_deprecated_patch_mesher parameter allows to keep the same behaviour than
412      * in salome < 8.3 (meshgems 2.1.11 instead of meshgems >= 2.4.5)
413      */
414     void SetUseDeprecatedPatchMesher( in boolean useDeprecatedPatchMesher );
415     boolean GetUseDeprecatedPatchMesher();
416
417     /*!
418      * Set max_number_of_points_per_patch parameter
419      * 
420      * This parameter controls the maximum amount of points MeshGems-CADSurf is allowed
421      * to generate on a single CAD patch. For an automatic gestion of the memory, one
422      * can set this parameter to 0
423      */
424     void SetMaxNumberOfPointsPerPatch( in long nb ) raises (SALOME::SALOME_Exception);
425     long GetMaxNumberOfPointsPerPatch();
426
427
428     /*!
429      * Set max_number_of_threads parameter
430      *
431      * Set the maximum of threads to use for multithreading mesh computation.
432      */
433     void SetMaxNumberOfThreads( in long nb ) raises (SALOME::SALOME_Exception);
434     long GetMaxNumberOfThreads();
435
436     /*!
437      * Set respect_geometry parameter
438      *
439      *  This patch independent option can be deactivated to allow MeshGems-CADSurf
440      * to lower the geometry accuracy in its patch independent process.
441      */
442     void SetRespectGeometry( in boolean toRespect );
443     boolean GetRespectGeometry();
444
445     /*!
446      * Set tiny_edges_avoid_surface_intersections parameter
447      *
448      * This option defines the priority between the tiny feature
449      * suppression and the surface intersection prevention. 
450      */
451     void SetTinyEdgesAvoidSurfaceIntersections( in boolean toAvoidIntersection );
452     boolean GetTinyEdgesAvoidSurfaceIntersections();
453
454     /*!
455      * Set closed_geometry parameter parameter
456      *
457      *  Describes whether the geometry is expected to be closed or not. 
458      * When activated, this option helps MeshGems-PreCAD to treat the dirtiest geometries.
459      */
460     void SetClosedGeometry( in boolean isClosed );
461     boolean GetClosedGeometry();
462
463     /*!
464      * Set debug parameter
465      *
466      * Make MeshGems-CADSurf will be very verbose and will output some intermediate
467      * files in the working directory. This option is mainly meant for Distene support issues.
468      */
469     void SetDebug( in boolean isDebug );
470     boolean GetDebug();
471
472     /*!
473      * Set periodic_tolerance parameter
474      * 
475      *  This parameter defines the maximum size difference between two periodic edges
476      * and also the maximum distance error between two periodic entities.
477      */
478     void SetPeriodicTolerance( in double tol ) raises (SALOME::SALOME_Exception);
479     double GetPeriodicTolerance() raises (SALOME::SALOME_Exception);
480
481     /*!
482      * Set required_entities parameter
483      *
484      * The required entities control the correction operations. 
485      * Accepted values for this parameter are :
486      * - "respect" : MeshGems-CADSurf is not allowed to alter any required entity, 
487      *             even for correction purposes,
488      * - "ignore" : MeshGems-CADSurf will ignore the required entities in its processing,
489      * - "clear" : MeshGems-CADSurf will clear any required status for the entities. 
490      *           There will not be any entity marked as required in the generated mesh.
491      */
492     void SetRequiredEntities( in string howToTreat ) raises (SALOME::SALOME_Exception);
493     string GetRequiredEntities();
494
495     /*!
496      * Set sewing_tolerance parameter
497      *
498      * This parameter is the tolerance of the assembly.
499      */
500     void SetSewingTolerance( in double tol ) raises (SALOME::SALOME_Exception);
501     double GetSewingTolerance() raises (SALOME::SALOME_Exception);
502
503     /*!
504      * Set tags parameter
505      *
506      *  The tag (attribute) system controls the optimisation process. 
507      *  Accepted values for this parameter are :
508      * - "respect"  : the CAD tags will be preserved and unaltered by the optimisation operations,
509      * - "ignore" : the CAD tags will be ignored by the optimisation operations 
510      *              but they will still be present in the output mesh,
511      * - "clear" : MeshGems-CADSurf will clear any tag on any entity and optimise accordingly. 
512      *             There will not be any tag in the generated mesh.
513      */
514     void SetTags( in string howToTreat ) raises (SALOME::SALOME_Exception);
515     string GetTags();
516
517     /*!
518      * Set hyper-patches
519      */
520     void SetHyperPatches(in THyperPatchList hpl);
521     THyperPatchList GetHyperPatches( in GEOM::GEOM_Object mainShape );
522     void SetHyperPatchShapes(in THyperPatchShapesList hpsl);
523     THyperPatchEntriesList GetHyperPatchShapes();
524     void SetHyperPatchEntries(in THyperPatchEntriesList hpel);
525
526     /*!
527      * To merges edges.
528      */
529     void SetPreCADMergeEdges(in boolean toMergeEdges);
530     boolean GetPreCADMergeEdges();
531
532     /*!
533      * To remove duplicate CAD faces.
534      */
535     void SetPreCADRemoveDuplicateCADFaces(in boolean toRemoveDuplicateCADFaces);
536     boolean GetPreCADRemoveDuplicateCADFaces();
537
538     /*!
539      * To process 3D topology.
540      */
541     void SetPreCADProcess3DTopology(in boolean toProcess);
542     boolean GetPreCADProcess3DTopology();
543
544
545     /*!
546      * To compute topology from scratch
547      */
548     void SetPreCADDiscardInput(in boolean toDiscardInput);
549     boolean GetPreCADDiscardInput();
550
551     /*!
552      *Set advanced option value
553      */
554     void SetOptionValue(in string optionName,
555                         in string optionValue) raises (SALOME::SALOME_Exception);
556     void SetPreCADOptionValue(in string optionName,
557                         in string optionValue) raises (SALOME::SALOME_Exception);
558     string GetOptionValue(in string optionName) raises (SALOME::SALOME_Exception);
559     string GetPreCADOptionValue(in string optionName) raises (SALOME::SALOME_Exception);
560     /*!
561      * Unsets advanced option
562      */
563     void UnsetOption(in string optionName);
564     void UnsetPreCADOption(in string optionName);
565
566     /*!
567      * Adds custom advanced option and its value
568      */
569     void SetAdvancedOption(in string optionsAndValues) // in a form "option_1 v1 option_2 v2'"
570       raises (SALOME::SALOME_Exception);
571     void AddOption(in string optionName, in string optionValue);
572     void AddPreCADOption(in string optionName, in string optionValue);
573     string GetOption(in string optionName);
574     string GetPreCADOption(in string optionName);
575
576     /*!
577      * Return array of strings each of which is option name concatenated
578      * with option value devided by semicolon - "option_name:option_value:option_type".
579      * Option value is empty if an option is not set.
580      * option_type: 1 if user-define, 0 if default
581      * Note: the method is mostly for interaction with GUI.
582      */
583     string_array GetOptionValues();
584     string_array GetPreCADOptionValues();
585     string_array GetAdvancedOptionValues();
586
587     /*!
588      * Set option values each in the form "option_name[:option_value][:option_type]".
589      * Note: the method is mostly for interaction with GUI.
590      */
591     void SetOptionValues(in string_array options) raises (SALOME::SALOME_Exception);
592     void SetPreCADOptionValues(in string_array options) raises (SALOME::SALOME_Exception);
593     void SetAdvancedOptionValues(in string_array options);
594
595     /*!
596      * SizeMap
597      */
598     void SetSizeMapEntries(in string_array sizeMaps) raises (SALOME::SALOME_Exception);
599     void ClearSizeMaps();
600
601     void UnsetEntry(in string entry);
602
603     /*!
604      * Set/unset a SizeMap on geom object
605      */
606     void         SetSizeMap(in GEOM::GEOM_Object GeomObj, in string sizeMap) raises (SALOME::SALOME_Exception);
607     void         SetConstantSizeMap(in GEOM::GEOM_Object GeomObj, in double sizeMap);
608     void         UnsetSizeMap(in GEOM::GEOM_Object GeomObj);
609     
610     /*!
611      * Set a SizeMap on geom object given by entry
612      */
613     void         SetSizeMapEntry(in string entry, in string sizeMap) raises (SALOME::SALOME_Exception);
614     void         SetConstantSizeMapEntry(in string entry, in GEOM::shape_type shapeType, in double sizeMap) raises (SALOME::SALOME_Exception);
615     string       GetSizeMapEntry(in string entry) raises (SALOME::SALOME_Exception);
616     string_array GetSizeMapEntries();
617
618     /*!
619      * Set/unset an attractor on geom object
620      */
621     void         SetAttractor(in GEOM::GEOM_Object GeomObj, in string attractor);
622     void         UnsetAttractor(in GEOM::GEOM_Object GeomObj);
623     
624     /*!
625      * Set an attractor on geom object given by entry
626      */
627     void         SetAttractorEntry(in string entry, in string attractor) raises (SALOME::SALOME_Exception);
628     string       GetAttractorEntry(in string entry) raises (SALOME::SALOME_Exception);
629     string_array GetAttractorEntries();
630
631     /*!
632      * Set/unset an attractor given as geom object on another geom object
633      */
634     void         SetAttractorGeom(in GEOM::GEOM_Object GeomObj, in GEOM::GEOM_Object AttractorShape, in double StartSize, in double EndSize, in double ActionRadius, in double ConstantRadius);
635     void         UnsetAttractorGeom(in GEOM::GEOM_Object GeomObj, in GEOM::GEOM_Object AttractorShape);
636     void         UnsetAttractorEntry(in string entry, in string attractor);
637
638     /*!
639      * Set an attractor given by entry on a geom object given by entry
640      */
641     void         SetClassAttractorEntry(in string entry, in string att_entry, in double StartSize, in double EndSize, in double ActionRadius, in double ConstantRadius ) raises (SALOME::SALOME_Exception);
642     BLSURFPlugin::TAttParamsMap GetAttractorParams();
643
644 /*
645     void         SetCustomSizeMapEntry(in string entry, in string sizeMap);
646     string       GetCustomSizeMapEntry(in string entry);
647     void         SetCustomSizeMap(in GEOM::GEOM_Object GeomObj, in string sizeMap);
648     void         UnsetCustomSizeMap(in GEOM::GEOM_Object GeomObj);
649     string_array GetCustomSizeMapEntries();
650 */
651     ///////////////////////
652     // ENFORCED VERTEXES //
653     ///////////////////////
654     
655     TFaceEntryEnfVertexListMap      GetAllEnforcedVerticesByFace();
656     TEnfVertexList                  GetAllEnforcedVertices();
657     
658     TFaceEntryCoordsListMap         GetAllCoordsByFace();
659     TCoordsEnfVertexMap             GetAllEnforcedVerticesByCoords();
660     
661     TFaceEntryEnfVertexEntryListMap GetAllEnfVertexEntriesByFace();
662     TEnfVertexEntryEnfVertexMap     GetAllEnforcedVerticesByEnfVertexEntry();
663     
664     void                            ClearAllEnforcedVertices();
665     
666    /*!
667     * Set/get/unset an enforced vertex on geom face
668     */
669     // OBSOLETE
670     boolean SetEnforcedVertex(in GEOM::GEOM_Object theFace, in double x, in double y, in double z) raises (SALOME::SALOME_Exception);
671     boolean SetEnforcedVertexNamed(in GEOM::GEOM_Object theFace, in double x, in double y, in double z, in TEnfName theVertexName) raises (SALOME::SALOME_Exception);
672     boolean SetEnforcedVertexGeom(in GEOM::GEOM_Object theFace, in GEOM::GEOM_Object theVertex) raises (SALOME::SALOME_Exception);
673     boolean SetEnforcedVertexWithGroup(in GEOM::GEOM_Object theFace, in double x, in double y, in double z, in TEnfGroupName groupName) raises (SALOME::SALOME_Exception);
674     boolean SetEnforcedVertexNamedWithGroup(in GEOM::GEOM_Object theFace, in double x, in double y, in double z, in TEnfName theVertexName, in TEnfGroupName groupName) raises (SALOME::SALOME_Exception);
675     boolean SetEnforcedVertexGeomWithGroup(in GEOM::GEOM_Object theFace, in GEOM::GEOM_Object theVertex, in TEnfGroupName groupName) raises (SALOME::SALOME_Exception);
676
677     TEnfVertexList GetEnforcedVertices(in GEOM::GEOM_Object theFace) raises (SALOME::SALOME_Exception);
678     boolean UnsetEnforcedVertex(in GEOM::GEOM_Object theFace, in double x, in double y, in double z) raises (SALOME::SALOME_Exception);
679     boolean UnsetEnforcedVertexGeom(in GEOM::GEOM_Object theFace, in GEOM::GEOM_Object theVertex) raises (SALOME::SALOME_Exception);
680     boolean UnsetEnforcedVertices(in GEOM::GEOM_Object theFace) raises (SALOME::SALOME_Exception);
681     
682     // NEW - no face
683     boolean AddEnforcedVertex(in double x, in double y, in double z) raises (SALOME::SALOME_Exception);
684     boolean AddEnforcedVertexNamed(in double x, in double y, in double z, in TEnfName theVertexName) raises (SALOME::SALOME_Exception);
685     boolean AddEnforcedVertexGeom(in GEOM::GEOM_Object theVertex) raises (SALOME::SALOME_Exception);
686     boolean AddEnforcedVertexWithGroup(in double x, in double y, in double z, in TEnfGroupName groupName) raises (SALOME::SALOME_Exception);
687     boolean AddEnforcedVertexNamedWithGroup(in double x, in double y, in double z, in TEnfName theVertexName, in TEnfGroupName groupName) raises (SALOME::SALOME_Exception);
688     boolean AddEnforcedVertexGeomWithGroup(in GEOM::GEOM_Object theVertex, in TEnfGroupName groupName) raises (SALOME::SALOME_Exception);
689
690     boolean RemoveEnforcedVertex(in double x, in double y, in double z) raises (SALOME::SALOME_Exception);
691     boolean RemoveEnforcedVertexGeom(in GEOM::GEOM_Object theVertex) raises (SALOME::SALOME_Exception);
692     boolean RemoveEnforcedVertices() raises (SALOME::SALOME_Exception);
693
694     /*!
695      * Set/get/unset an enforced vertex on geom face given by entry
696      */
697     boolean SetEnforcedVertexEntry(in TEntry theFaceEntry, in double x, in double y, in double z,
698                                    in TEnfName theVertexName, in TEntry theVertexEntry, in TEnfGroupName groupName) raises (SALOME::SALOME_Exception);
699
700     TEnfVertexList GetEnforcedVerticesEntry(in TEntry theFaceEntry) raises (SALOME::SALOME_Exception);
701     boolean UnsetEnforcedVertexEntry(in TEntry theFaceEntry, in double x, in double y, in double z, in TEntry theVertexEntry) raises (SALOME::SALOME_Exception);
702 //    boolean UnsetEnforcedVertexEntryGeom(in TEntry theFaceEntry, in TEntry theVertexEntry) raises (SALOME::SALOME_Exception);
703     boolean UnsetEnforcedVerticesEntry(in TEntry theFaceEntry) raises (SALOME::SALOME_Exception);
704
705     /*!
706      * To get/set internal vertices as enforced vertices
707      */
708     void          SetInternalEnforcedVertexAllFaces(in boolean toEnforceInternalVertices);
709     boolean       GetInternalEnforcedVertexAllFaces();
710     void          SetInternalEnforcedVertexAllFacesGroup(in TEnfGroupName groupName);
711     TEnfGroupName GetInternalEnforcedVertexAllFacesGroup();
712
713 //  Enable internal enforced vertices on specific face if requested by user
714 //    void          SetInternalEnforcedVertex(in GEOM::GEOM_Object theFace,in boolean toEnforceInternalVertices) raises (SALOME::SALOME_Exception);
715 //    void          SetInternalEnforcedVertexWithGroup(in GEOM::GEOM_Object theFace, in boolean toEnforceInternalVertices, in TEnfGroupName groupName) raises (SALOME::SALOME_Exception);
716 //    void          SetInternalEnforcedVertexEntry(in TEntry theFaceEntry, in boolean toEnforceInternalVertices, in TEnfGroupName groupName) raises (SALOME::SALOME_Exception);
717 //    boolean       GetInternalEnforcedVertex(in GEOM::GEOM_Object theFace) raises (SALOME::SALOME_Exception);
718 //    boolean       GetInternalEnforcedVertexEntry(in TEntry theFaceEntry) raises (SALOME::SALOME_Exception);
719 //    TFaceEntryInternalVerticesList GetAllInternalEnforcedVerticesFaces();
720     ///////////////////////
721     
722
723     ///////////////////////
724     // PERIODICITY       //
725     ///////////////////////
726
727     void ClearPreCadPeriodicityVectors();
728     void AddPreCadFacesPeriodicity(in GEOM::GEOM_Object theFace1, in GEOM::GEOM_Object theFace2) raises (SALOME::SALOME_Exception);
729     void AddPreCadFacesPeriodicityWithVertices(in GEOM::GEOM_Object theFace1, in GEOM::GEOM_Object theFace2, in GEOM::ListOfGO theSourceVertices, in GEOM::ListOfGO theTargetVertices) raises (SALOME::SALOME_Exception);
730     void AddPreCadFacesPeriodicityEntry(in TEntry theFace1, in TEntry theFace2, in TEntryList theSourceVertices, in TEntryList theTargetVertices)  raises (SALOME::SALOME_Exception);
731     void AddPreCadEdgesPeriodicity(in GEOM::GEOM_Object theEdge1, in GEOM::GEOM_Object theEdge2) raises (SALOME::SALOME_Exception);
732     void AddPreCadEdgesPeriodicityWithVertices(in GEOM::GEOM_Object theEdge1, in GEOM::GEOM_Object theEdge2, in GEOM::ListOfGO theSourceVertices, in GEOM::ListOfGO theTargetVertices) raises (SALOME::SALOME_Exception);
733     void AddPreCadEdgesPeriodicityEntry(in TEntry theEdge1, in TEntry theEdge2, in TEntryList theSourceVertices, in TEntryList theTargetVertices)  raises (SALOME::SALOME_Exception);
734     TPeriodicityList GetPreCadFacesPeriodicityVector();
735     TPeriodicityList GetPreCadEdgesPeriodicityVector();
736     ///////////////////////
737
738     /*!
739      *Set the file for export resulting mesh in GMF format
740      */
741     void SetGMFFile(in string theFileName);
742     string GetGMFFile();
743   };
744 };
745
746 #endif