Salome HOME
d4760080d589b3d5eddebdc427c55962442984ae
[plugins/blsurfplugin.git] / idl / BLSURFPlugin_Algorithm.idl
1 //  Copyright (C) 2007-2010  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.
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   // Attractors
100   struct TAttractorParams {
101     string faceEntry;
102     string attEntry;
103     double startSize;
104     double endSize;
105     double infDist;
106     double constDist;
107   };
108   typedef sequence<TAttractorParams> TAttParamsMap;
109
110   /* TODO GROUPS
111   // Map Group Name / List of enforced vertices
112   struct TGroupNameEnfVertexListMapElement {
113     TEnfGroupName groupName;
114     TEnfVertexList vertexList;
115   };
116   typedef sequence<TGroupNameEnfVertexListMapElement> TGroupNameEnfVertexListMap;
117   */
118
119   
120   /*!
121    * BLSURFPlugin_BLSURF: interface of BLSURF algorithm
122    */
123   interface BLSURFPlugin_BLSURF : SMESH::SMESH_2D_Algo
124   {
125   };
126
127   /*!
128    * BLSURFPlugin_Hypothesis: interface of "BLSURF parameters" hypothesis
129    */
130   interface BLSURFPlugin_Hypothesis : SMESH::SMESH_Hypothesis
131   {
132     /*!
133      * Sets topology usage way defining how mesh conformity is assured
134      * value=0 - mesh conformity is assured by conformity of a shape
135      * value=1,2 - mesh conformity is assured by pre-processing a CAD model
136      */
137     void SetTopology(in long way);
138     long GetTopology();
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      */
145     void SetPhysicalMesh(in long isCustom);
146     long GetPhysicalMesh();
147
148     /*!
149      * Sets size of mesh elements to generate
150      */
151     void SetPhySize(in double size);
152     double GetPhySize();
153
154     /*!
155      * Sets lower boundary of mesh element size (PhySize)
156      */
157     void SetPhyMin(in double theMinSize);
158     double GetPhyMin();
159
160     /*!
161      * Sets upper boundary of mesh element size (PhySize)
162      */
163     void SetPhyMax(in double theMaxSize);
164     double GetPhyMax();
165
166     /*!
167      * Sets a way to define maximum angular deflection of mesh from CAD model
168      * 0 - deflection is defined automatically
169      * 1 - deflection is set by SetAngleMeshS() and SetAngleMeshC() methods
170      */
171     void SetGeometricMesh(in long isCustom);
172     long GetGeometricMesh();
173
174     /*!
175      * Sets angular deflection (in degrees) of a mesh face from CAD surface
176      */
177     void SetAngleMeshS(in double angle);
178     double GetAngleMeshS();
179
180     /*!
181      * Sets angular deflection (in degrees) of a mesh edge from CAD curve
182      */
183     void SetAngleMeshC(in double angle);
184     double GetAngleMeshC();
185
186     /*!
187      * Sets lower boundary of mesh element size computed to respect angular deflection
188      */
189     void SetGeoMin(in double theMinSize);
190     double GetGeoMin();
191
192     /*!
193      * Sets upper boundary of mesh element size computed to respect angular deflection
194      */
195     void SetGeoMax(in double theMaxSize);
196     double GetGeoMax();
197
198     /*!
199      * Sets maximal allowed ratio between the lengths of two adjacent edges
200      */
201     void SetGradation(in double ratio);
202     double GetGradation();
203
204     /*!
205      * Sets to create quadrilateral elements or not
206      */
207     void SetQuadAllowed(in boolean allowed);
208     boolean GetQuadAllowed();
209
210     /*!
211      * To respect geometrical edges or not
212      */
213     void SetDecimesh(in boolean toIgnoreEdges);
214     boolean GetDecimesh();
215
216     /*!
217      * Sets verbosity level in the range 0 to 100.
218      */
219     void SetVerbosity(in short theVal) raises (SALOME::SALOME_Exception);
220     short GetVerbosity();
221
222     /*!
223      * Sets advanced option value
224      */
225     void SetOptionValue(in string optionName,
226                         in string optionValue) raises (SALOME::SALOME_Exception);
227     string GetOptionValue(in string optionName) raises (SALOME::SALOME_Exception);
228     /*!
229      * Unsets advanced option
230      */
231     void UnsetOption(in string optionName);
232
233     /*!
234      * Return array of strings each of which is option name concatenated
235      * with option value devided by semicolon - "option_name:option_value".
236      * Option value is empty if an option is not set.
237      * Note: the method is mostly for interaction with GUI.
238      */
239     string_array GetOptionValues();
240
241     /*!
242      * Set option values each in the form "option_name[:option_value]".
243      * Note: the method is mostly for interaction with GUI.
244      */
245     void SetOptionValues(in string_array options);
246
247     /*!
248      * SizeMap
249      */
250     void SetSizeMapEntries(in string_array sizeMaps);
251     void ClearSizeMaps();
252
253     void UnsetEntry(in string entry);
254
255     /*!
256      * Set/unset a SizeMap on geom object
257      */
258     void         SetSizeMap(in GEOM::GEOM_Object GeomObj, in string sizeMap);
259     void         UnsetSizeMap(in GEOM::GEOM_Object GeomObj);
260     
261     /*!
262      * Set a SizeMap on geom object given by entry
263      */
264     void         SetSizeMapEntry(in string entry, in string sizeMap);
265     string       GetSizeMapEntry(in string entry);
266     string_array GetSizeMapEntries();
267
268     /*!
269      * Set/unset an attractor on geom object
270      */
271     void         SetAttractor(in GEOM::GEOM_Object GeomObj, in string attractor);
272     void         UnsetAttractor(in GEOM::GEOM_Object GeomObj);
273     
274     /*!
275      * Set an attractor on geom object given by entry
276      */
277     void         SetAttractorEntry(in string entry, in string attractor);
278     string       GetAttractorEntry(in string entry);
279     string_array GetAttractorEntries();
280
281     /*!
282      * Set/unset an attractor given as geom object on another geom object
283      */
284     void         SetAttractorGeom(in GEOM::GEOM_Object GeomObj, in GEOM::GEOM_Object AttractorShape, in double StartSize, in double EndSize, in double ActionRadius, in double ConstantRadius);
285     void         UnsetAttractorGeom(in GEOM::GEOM_Object GeomObj);
286
287     /*!
288      * Set an attractor given by entry on a geom object given by entry
289      */
290     void         SetClassAttractorEntry(in string entry, in string att_entry, in double StartSize, in double EndSize, in double ActionRadius, in double ConstantRadius );
291     BLSURFPlugin::TAttParamsMap GetAttractorParams();
292
293
294
295 /*
296     void         SetCustomSizeMapEntry(in string entry, in string sizeMap);
297     string       GetCustomSizeMapEntry(in string entry);
298     void         SetCustomSizeMap(in GEOM::GEOM_Object GeomObj, in string sizeMap);
299     void         UnsetCustomSizeMap(in GEOM::GEOM_Object GeomObj);
300     string_array GetCustomSizeMapEntries();
301 */
302     ///////////////////////
303     // ENFORCED VERTEXES //
304     ///////////////////////
305     
306     TFaceEntryEnfVertexListMap      GetAllEnforcedVerticesByFace();
307     TEnfVertexList                  GetAllEnforcedVertices();
308     
309     TFaceEntryCoordsListMap         GetAllCoordsByFace();
310     TCoordsEnfVertexMap             GetAllEnforcedVerticesByCoords();
311     
312     TFaceEntryEnfVertexEntryListMap GetAllEnfVertexEntriesByFace();
313     TEnfVertexEntryEnfVertexMap     GetAllEnforcedVerticesByEnfVertexEntry();
314     
315     void                            ClearAllEnforcedVertices();
316     
317    /*!
318     * Set/get/unset an enforced vertex on geom face
319     */
320     boolean SetEnforcedVertex(in GEOM::GEOM_Object theFace, in double x, in double y, in double z) raises (SALOME::SALOME_Exception);
321     boolean SetEnforcedVertexNamed(in GEOM::GEOM_Object theFace, in double x, in double y, in double z, in TEnfName theVertexName) raises (SALOME::SALOME_Exception);
322     boolean SetEnforcedVertexGeom(in GEOM::GEOM_Object theFace, in GEOM::GEOM_Object theVertex) raises (SALOME::SALOME_Exception);
323     boolean SetEnforcedVertexWithGroup(in GEOM::GEOM_Object theFace, in double x, in double y, in double z, in TEnfGroupName groupName) raises (SALOME::SALOME_Exception);
324     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);
325     boolean SetEnforcedVertexGeomWithGroup(in GEOM::GEOM_Object theFace, in GEOM::GEOM_Object theVertex, in TEnfGroupName groupName) raises (SALOME::SALOME_Exception);
326
327     
328     TEnfVertexList GetEnforcedVertices(in GEOM::GEOM_Object theFace) raises (SALOME::SALOME_Exception);
329     
330     boolean UnsetEnforcedVertex(in GEOM::GEOM_Object theFace, in double x, in double y, in double z) raises (SALOME::SALOME_Exception);
331     boolean UnsetEnforcedVertexGeom(in GEOM::GEOM_Object theFace, in GEOM::GEOM_Object theVertex) raises (SALOME::SALOME_Exception);
332     boolean UnsetEnforcedVertices(in GEOM::GEOM_Object theFace) raises (SALOME::SALOME_Exception);
333     
334    /*!
335     * Set/get/unset an enforced vertex on geom face given by entry
336     */
337     boolean SetEnforcedVertexEntry(in TEntry theFaceEntry, in double x, in double y, in double z, 
338                                    in TEnfName theVertexName, in TEntry theVertexEntry, in string groupName) raises (SALOME::SALOME_Exception);
339 //    boolean SetEnforcedVertexEntryNamed(in TEntry theFaceEntry, in double x, in double y, in double z, in TEnfName theVertexName) raises (SALOME::SALOME_Exception);
340 //    boolean SetEnforcedVertexEntryGeom(in TEntry theFaceEntry, in TEntry theVertexEntry, in TEnfName theVertexName) raises (SALOME::SALOME_Exception);
341     /* TODO GROUPS
342     void SetEnforcedVertexEntryWithGroup(in string theFaceEntry, in double x, in double y, in double z, in TEnfGroupName groupName)
343         raises (SALOME::SALOME_Exception);
344     */
345 //     
346     TEnfVertexList GetEnforcedVerticesEntry(in TEntry theFaceEntry) raises (SALOME::SALOME_Exception);
347 //     
348     boolean UnsetEnforcedVertexEntry(in TEntry theFaceEntry, in double x, in double y, in double z, in TEntry theVertexEntry) raises (SALOME::SALOME_Exception);
349 //    boolean UnsetEnforcedVertexEntryGeom(in TEntry theFaceEntry, in TEntry theVertexEntry) raises (SALOME::SALOME_Exception);
350     boolean UnsetEnforcedVerticesEntry(in TEntry theFaceEntry) raises (SALOME::SALOME_Exception);
351
352    /*!
353      * Set/get an enforced vertex on geom object and add it to a group
354     */
355     /* TODO GROUPS
356     void SetEnforcedVertexGroupName(in double x, in double y, in double z, in TEnfGroupName groupName)
357         raises (SALOME::SALOME_Exception);
358     string GetEnforcedVertexGroupName(in double x, in double y, in double z)
359         raises (SALOME::SALOME_Exception);
360     */
361     ///////////////////////
362
363   };
364 };
365
366 #endif