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