Salome HOME
0022782: [CEA 1315] GetFirstVertex does not return the edge's starting point
[modules/geom.git] / src / GEOM_I_Superv / GEOM_Superv_i.cc
1 // Copyright (C) 2007-2015  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 #include "GEOM_Superv_i.hh"
24 #include "SALOME_LifeCycleCORBA.hxx"
25
26 #include CORBA_SERVER_HEADER(SALOME_Session)
27 #include "SALOMEDSClient_ClientFactory.hxx"
28
29 #define isNewStudy(a,b) (a > 0 && a != b)
30
31 //=============================================================================
32 //  constructor:
33 //=============================================================================
34 GEOM_Superv_i::GEOM_Superv_i(CORBA::ORB_ptr orb,
35                              PortableServer::POA_ptr poa,
36                              PortableServer::ObjectId * contId,
37                              const char *instanceName,
38                              const char *interfaceName) :
39   Engines_Component_i(orb, poa, contId, instanceName, interfaceName)
40 {
41   MESSAGE("GEOM_Superv_i::GEOM_Superv_i");
42
43   _thisObj = this ;
44   _id = _poa->activate_object(_thisObj);
45   name_service = new SALOME_NamingService(_orb);
46   //get RootPOA (the default)
47   //myPOA = PortableServer::RefCountServantBase::_default_POA();
48   CORBA::Object_var anObj = _orb->resolve_initial_references("RootPOA");
49   myPOA = PortableServer::POA::_narrow(anObj);
50
51   setGeomEngine();
52
53   myStudyID = -1;
54   myLastStudyID = -1;
55
56   myBasicOp = GEOM::GEOM_IBasicOperations::_nil();
57   my3DPrimOp = GEOM::GEOM_I3DPrimOperations::_nil();
58   myBoolOp = GEOM::GEOM_IBooleanOperations::_nil();
59   myInsOp = GEOM::GEOM_IInsertOperations::_nil();
60   myTransfOp = GEOM::GEOM_ITransformOperations::_nil();
61   myShapesOp = GEOM::GEOM_IShapesOperations::_nil();
62   myBlocksOp = GEOM::GEOM_IBlocksOperations::_nil();
63   myCurvesOp = GEOM::GEOM_ICurvesOperations::_nil();
64   myLocalOp = GEOM::GEOM_ILocalOperations::_nil();
65   myGroupOp = GEOM::GEOM_IGroupOperations::_nil();
66 }
67
68 //=============================================================================
69 //  destructor
70 //=============================================================================
71 GEOM_Superv_i::~GEOM_Superv_i()
72 {
73   MESSAGE("GEOM_Superv_i::~GEOM_Superv_i");
74   if (!CORBA::is_nil(myBasicOp))
75     myBasicOp->UnRegister();
76   if (!CORBA::is_nil(myBoolOp))
77     myBoolOp->UnRegister();
78   if (!CORBA::is_nil(my3DPrimOp))
79     my3DPrimOp->UnRegister();
80   delete name_service;
81 }
82
83 //============================================================================
84 // function : register()
85 // purpose  : register 'name' in 'name_service'
86 //============================================================================
87 void GEOM_Superv_i::register_name(char * name)
88 {
89   GEOM::GEOM_Superv_var g = _this();
90   name_service->Register(g, name);
91 }
92
93 //=============================================================================
94 //  setGEOMEngine:
95 //=============================================================================
96 void GEOM_Superv_i::setGeomEngine()
97 {
98   if ( !CORBA::is_nil(myGeomEngine) )
99     return;
100
101   // get GEOM_Gen engine
102   Engines::Container_var cont=GetContainerRef();
103   CORBA::String_var container_name=cont->name();
104   std::string shortName=container_name.in();
105   shortName=shortName.substr(12); // substract "/Containers/"
106   SALOME_LifeCycleCORBA* lcc = new SALOME_LifeCycleCORBA( name_service );
107   Engines::EngineComponent_var comp = lcc->FindOrLoad_Component( shortName.c_str(), "GEOM" );
108   delete lcc;
109
110   myGeomEngine = GEOM::GEOM_Gen::_narrow(comp);
111 }
112
113 //=============================================================================
114 //  SetStudyID:
115 //=============================================================================
116 void GEOM_Superv_i::SetStudyID( CORBA::Long theId )
117 {
118   // mkr : PAL10770 -->
119   myLastStudyID = myStudyID;
120
121   CORBA::Object_ptr anObject = name_service->Resolve("/Kernel/Session");
122   if ( !CORBA::is_nil(anObject) ) {
123     SALOME::Session_var aSession = SALOME::Session::_narrow(anObject);
124     if ( !CORBA::is_nil(aSession) ) {
125       int aStudyID = aSession->GetActiveStudyId();
126       if ( theId != aStudyID && aStudyID > 0) { // mkr : IPAL12128
127         MESSAGE("Warning : given study ID theId="<<theId<<" is wrong and will be replaced by the value "<<aStudyID);
128         myStudyID = aStudyID;
129       }
130       else
131         myStudyID = theId; // mkr : IPAL12128
132     }
133   }
134
135   if ( isNewStudy(myLastStudyID,myStudyID) ) {
136     if (CORBA::is_nil(myGeomEngine)) setGeomEngine();
137     std::string anEngine = _orb->object_to_string( myGeomEngine );
138
139     CORBA::Object_var anObj = name_service->Resolve("/myStudyManager");
140     if ( !CORBA::is_nil(anObj) ) {
141       SALOMEDS::StudyManager_var aStudyManager = SALOMEDS::StudyManager::_narrow(anObj);
142       if ( !CORBA::is_nil(aStudyManager) ) {
143         _PTR(Study) aDSStudy = ClientFactory::Study(aStudyManager->GetStudyByID(myStudyID));
144         if ( aDSStudy ) {
145           _PTR(SComponent) aSCO = aDSStudy->FindComponent(myGeomEngine->ComponentDataType());
146           if ( aSCO ) {
147             _PTR(StudyBuilder) aBuilder = aDSStudy->NewBuilder();
148             if ( aBuilder ) aBuilder->LoadWith( aSCO, anEngine );
149           }
150         }
151       }
152     }
153   }
154   // mkr : PAL10770 <--
155 }
156
157 //=============================================================================
158 //  CreateListOfGO:
159 //=============================================================================
160 GEOM::GEOM_List_ptr GEOM_Superv_i::CreateListOfGO()
161 {
162   MESSAGE("GEOM_Superv_i::CreateListOfGO()");
163   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>();
164   return aListPtr->_this();
165 }
166
167 //=============================================================================
168 //  AddItemToListOfGO:
169 //=============================================================================
170 void GEOM_Superv_i::AddItemToListOfGO(GEOM::GEOM_List_ptr& theList,
171                                       GEOM::GEOM_Object_ptr theObject)
172 {
173   MESSAGE("GEOM_Superv_i::AddItemToListOfGO(...)");
174   GEOM::GEOM_Object_var anObj =  GEOM::GEOM_Object::_duplicate(theObject);
175   if (GEOM_List_i<GEOM::ListOfGO>* aList =
176       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theList, myPOA).in())) {
177     aList->AddObject(anObj);
178     MESSAGE(" NewLength = "<<aList->GetList().length());
179   }
180 }
181
182 //=============================================================================
183 //  CreateListOfLong:
184 //=============================================================================
185 GEOM::GEOM_List_ptr GEOM_Superv_i::CreateListOfLong()
186 {
187   MESSAGE("GEOM_Superv_i::CreateListOfLong()");
188   GEOM_List_i<GEOM::ListOfLong>* aListPtr = new GEOM_List_i<GEOM::ListOfLong>();
189   return aListPtr->_this();
190 }
191
192 //=============================================================================
193 //  AddItemToListOfLong:
194 //=============================================================================
195 void GEOM_Superv_i::AddItemToListOfLong(GEOM::GEOM_List_ptr& theList,
196                                         CORBA::Long theObject)
197 {
198   MESSAGE("GEOM_Superv_i::AddItemToListOfLong(...)");
199   if (GEOM_List_i<GEOM::ListOfLong>* aList =
200       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theList, myPOA).in())) {
201     aList->AddObject(theObject);
202     MESSAGE(" NewLength = "<<aList->GetList().length());
203   }
204 }
205
206 //=============================================================================
207 //  CreateListOfDouble:
208 //=============================================================================
209 GEOM::GEOM_List_ptr GEOM_Superv_i::CreateListOfDouble()
210 {
211   MESSAGE("GEOM_Superv_i::CreateListOfDouble()");
212   GEOM_List_i<GEOM::ListOfDouble>* aListPtr = new GEOM_List_i<GEOM::ListOfDouble>();
213   return aListPtr->_this();
214 }
215
216 //=============================================================================
217 //  AddItemToListOfDouble:
218 //=============================================================================
219 void GEOM_Superv_i::AddItemToListOfDouble(GEOM::GEOM_List_ptr& theList,
220                                           CORBA::Double theObject)
221 {
222   MESSAGE("GEOM_Superv_i::AddItemToListOfDouble(...)");
223   if (GEOM_List_i<GEOM::ListOfDouble>* aList =
224       dynamic_cast<GEOM_List_i<GEOM::ListOfDouble>*>(GetServant(theList, myPOA).in())) {
225     aList->AddObject(theObject);
226     MESSAGE(" NewLength = "<<aList->GetList().length());
227   }
228 }
229
230 //=============================================================================
231 //  getBasicOp:
232 //=============================================================================
233 void GEOM_Superv_i::getBasicOp()
234 {
235   if (CORBA::is_nil(myGeomEngine))
236     setGeomEngine();
237   // get GEOM_IBasicOperations interface
238   if (CORBA::is_nil(myBasicOp) || isNewStudy(myLastStudyID,myStudyID)) {
239     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
240     //     Try to get id of the study from the SALOME Session
241     if(myStudyID < 0 ) SetStudyID(-1);
242     myBasicOp = myGeomEngine->GetIBasicOperations(myStudyID);
243   }
244 }
245
246 //=============================================================================
247 //  get3DPrimOp:
248 //=============================================================================
249 void GEOM_Superv_i::get3DPrimOp()
250 {
251   if (CORBA::is_nil(myGeomEngine))
252     setGeomEngine();
253   // get GEOM_I3DPrimOperations interface
254   if (CORBA::is_nil(my3DPrimOp) || isNewStudy(myLastStudyID,myStudyID)) {
255     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
256     //     Try to get id of the study from the SALOME Session
257     if(myStudyID < 0 ) SetStudyID(-1);
258     my3DPrimOp = myGeomEngine->GetI3DPrimOperations(myStudyID);
259   }
260 }
261
262 //=============================================================================
263 //  getBoolOp:
264 //=============================================================================
265 void GEOM_Superv_i::getBoolOp()
266 {
267   if (CORBA::is_nil(myGeomEngine))
268     setGeomEngine();
269   // get GEOM_IBooleanOperations interface
270   if (CORBA::is_nil(myBoolOp) || isNewStudy(myLastStudyID,myStudyID)) {
271     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
272     //     Try to get id of the study from the SALOME Session
273     if(myStudyID < 0 ) SetStudyID(-1);
274     myBoolOp = myGeomEngine->GetIBooleanOperations(myStudyID);
275   }
276 }
277
278 //=============================================================================
279 //  getInsOp:
280 //=============================================================================
281 void GEOM_Superv_i::getInsOp()
282 {
283   if (CORBA::is_nil(myGeomEngine))
284     setGeomEngine();
285   // get GEOM_IInsertOperations interface
286   if (CORBA::is_nil(myInsOp) || isNewStudy(myLastStudyID,myStudyID)) {
287     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
288     //     Try to get id of the study from the SALOME Session
289     if(myStudyID < 0 ) SetStudyID(-1);
290     myInsOp = myGeomEngine->GetIInsertOperations(myStudyID);
291   }
292 }
293
294 //=============================================================================
295 //  getTransfOp:
296 //=============================================================================
297 void GEOM_Superv_i::getTransfOp()
298 {
299   if (CORBA::is_nil(myGeomEngine))
300     setGeomEngine();
301   // get GEOM_ITransformOperations interface
302   if (CORBA::is_nil(myTransfOp) || isNewStudy(myLastStudyID,myStudyID)) {
303     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
304     //     Try to get id of the study from the SALOME Session
305     if(myStudyID < 0 ) SetStudyID(-1);
306     myTransfOp = myGeomEngine->GetITransformOperations(myStudyID);
307   }
308 }
309
310 //=============================================================================
311 //  getShapesOp:
312 //=============================================================================
313 void GEOM_Superv_i::getShapesOp()
314 {
315   if (CORBA::is_nil(myGeomEngine))
316     setGeomEngine();
317   // get GEOM_IShapesOperations interface
318   if (CORBA::is_nil(myShapesOp) || isNewStudy(myLastStudyID,myStudyID)) {
319     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
320     //     Try to get id of the study from the SALOME Session
321     if(myStudyID < 0 ) SetStudyID(-1);
322     myShapesOp = myGeomEngine->GetIShapesOperations(myStudyID);
323   }
324 }
325
326 //=============================================================================
327 //  getBlocksOp:
328 //=============================================================================
329 void GEOM_Superv_i::getBlocksOp()
330 {
331   if (CORBA::is_nil(myGeomEngine))
332     setGeomEngine();
333   // get GEOM_IBlocksOperations interface
334   if (CORBA::is_nil(myBlocksOp) || isNewStudy(myLastStudyID,myStudyID)) {
335     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
336     //     Try to get id of the study from the SALOME Session
337     if(myStudyID < 0 ) SetStudyID(-1);
338     myBlocksOp = myGeomEngine->GetIBlocksOperations(myStudyID);
339   }
340 }
341
342 //=============================================================================
343 //  getCurvesOp:
344 //=============================================================================
345 void GEOM_Superv_i::getCurvesOp()
346 {
347   if (CORBA::is_nil(myGeomEngine))
348     setGeomEngine();
349   // get GEOM_ICurvesOperations interface
350   if (CORBA::is_nil(myCurvesOp) || isNewStudy(myLastStudyID,myStudyID)) {
351     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
352     //     Try to get id of the study from the SALOME Session
353     if(myStudyID < 0 ) SetStudyID(-1);
354     myCurvesOp = myGeomEngine->GetICurvesOperations(myStudyID);
355   }
356 }
357
358 //=============================================================================
359 //  getLocalOp:
360 //=============================================================================
361 void GEOM_Superv_i::getLocalOp()
362 {
363   if (CORBA::is_nil(myGeomEngine))
364     setGeomEngine();
365   // get GEOM_ILocalOperations interface
366   if (CORBA::is_nil(myLocalOp) || isNewStudy(myLastStudyID,myStudyID)) {
367     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
368     //     Try to get id of the study from the SALOME Session
369     if(myStudyID < 0 ) SetStudyID(-1);
370     myLocalOp = myGeomEngine->GetILocalOperations(myStudyID);
371   }
372 }
373
374 //=============================================================================
375 //  getGroupOp:
376 //=============================================================================
377 void GEOM_Superv_i::getGroupOp()
378 {
379   if (CORBA::is_nil(myGeomEngine))
380     setGeomEngine();
381   // get GEOM_IGroupOperations interface
382   if (CORBA::is_nil(myGroupOp) || isNewStudy(myLastStudyID,myStudyID)) {
383     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
384     //     Try to get id of the study from the SALOME Session
385     if(myStudyID < 0 ) SetStudyID(-1);
386     myGroupOp = myGeomEngine->GetIGroupOperations(myStudyID);
387   }
388 }
389
390 //=============================================================================
391 //  getAdvancedOp:
392 //=============================================================================
393 void GEOM_Superv_i::getAdvancedOp()
394 {
395   if (CORBA::is_nil(myGeomEngine))
396     setGeomEngine();
397   // get GEOM::IAdvancedOperations interface
398   if (CORBA::is_nil(myAdvancedOp) || isNewStudy(myLastStudyID,myStudyID)) {
399     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
400     //     Try to get id of the study from the SALOME Session
401     if(myStudyID < 0 ) SetStudyID(-1);
402     myAdvancedOp = GEOM::IAdvancedOperations::_narrow(myGeomEngine->GetPluginOperations(myStudyID, "AdvancedEngine"));
403   }
404 }
405
406 //=============================================================================
407 //  getSTLPluginOp:
408 //=============================================================================
409 void GEOM_Superv_i::getSTLPluginOp()
410 {
411   if (CORBA::is_nil(myGeomEngine))
412     setGeomEngine();
413   // get GEOM::ISTLOperations interface
414   if (CORBA::is_nil(mySTLOp) || isNewStudy(myLastStudyID,myStudyID)) {
415     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
416     //     Try to get id of the study from the SALOME Session
417     if(myStudyID < 0 ) SetStudyID(-1);
418     mySTLOp = GEOM::ISTLOperations::_narrow(myGeomEngine->GetPluginOperations(myStudyID, "STLPluginEngine"));
419   }
420 }
421
422 //=============================================================================
423 //  getBREPPluginOp:
424 //=============================================================================
425 void GEOM_Superv_i::getBREPPluginOp()
426 {
427   if (CORBA::is_nil(myGeomEngine))
428     setGeomEngine();
429   // get GEOM:IBREPOperations interface
430   if (CORBA::is_nil(myBREPOp) || isNewStudy(myLastStudyID,myStudyID)) {
431     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
432     //     Try to get id of the study from the SALOME Session
433     if(myStudyID < 0 ) SetStudyID(-1);
434     myBREPOp = GEOM::IBREPOperations::_narrow(myGeomEngine->GetPluginOperations(myStudyID, "BREPPluginEngine"));
435   }
436 }
437
438 //=============================================================================
439 //  getSTEPPluginOp:
440 //=============================================================================
441 void GEOM_Superv_i::getSTEPPluginOp()
442 {
443   if (CORBA::is_nil(myGeomEngine))
444     setGeomEngine();
445   // get GEOM::ISTEPOperations interface
446   if (CORBA::is_nil(mySTEPOp) || isNewStudy(myLastStudyID,myStudyID)) {
447     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
448     //     Try to get id of the study from the SALOME Session
449     if(myStudyID < 0 ) SetStudyID(-1);
450     mySTEPOp = GEOM::ISTEPOperations::_narrow(myGeomEngine->GetPluginOperations(myStudyID, "STEPPluginEngine"));
451   }
452 }
453
454 //=============================================================================
455 //  getIGESPluginOp:
456 //=============================================================================
457 void GEOM_Superv_i::getIGESPluginOp()
458 {
459   if (CORBA::is_nil(myGeomEngine))
460     setGeomEngine();
461   // get GEOM::IIGESOperations interface
462   if (CORBA::is_nil(myIGESOp) || isNewStudy(myLastStudyID,myStudyID)) {
463     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
464     //     Try to get id of the study from the SALOME Session
465     if(myStudyID < 0 ) SetStudyID(-1);
466     myIGESOp = GEOM::IIGESOperations::_narrow(myGeomEngine->GetPluginOperations(myStudyID, "IGESPluginEngine"));
467   }
468 }
469
470 //=============================================================================
471 //  getXAOPluginOp:
472 //=============================================================================
473 void GEOM_Superv_i::getXAOPluginOp()
474 {
475   if (CORBA::is_nil(myGeomEngine))
476     setGeomEngine();
477   // get GEOM::IXAOOperations interface
478   if (CORBA::is_nil(myXAOOp) || isNewStudy(myLastStudyID,myStudyID)) {
479     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
480     //     Try to get id of the study from the SALOME Session
481     if(myStudyID < 0 ) SetStudyID(-1);
482     myXAOOp = GEOM::IXAOOperations::_narrow(myGeomEngine->GetPluginOperations(myStudyID, "XAOPluginEngine"));
483   }
484 }
485
486 //=============================================================================
487 //  getVTKPluginOp:
488 //=============================================================================
489 void GEOM_Superv_i::getVTKPluginOp()
490 {
491   if (CORBA::is_nil(myGeomEngine))
492     setGeomEngine();
493   // get GEOM::IVTKOperations interface
494   if (CORBA::is_nil(myVTKOp) || isNewStudy(myLastStudyID,myStudyID)) {
495     //rnv: to fix bug "IPAL22461 6.3.0: Incorrect study storage if study contains shape modified with YACS"
496     //     Try to get id of the study from the SALOME Session
497     if(myStudyID < 0 ) SetStudyID(-1);
498     myVTKOp = GEOM::IVTKOperations::_narrow(myGeomEngine->GetPluginOperations(myStudyID, "VTKPluginEngine"));
499   }
500 }
501
502 //=============================================================================
503 //  GetServant:
504 //=============================================================================
505 PortableServer::ServantBase_var GEOM_Superv_i::GetServant(CORBA::Object_ptr       theObject,
506                                                           PortableServer::POA_ptr thePOA)
507 {
508   if(CORBA::is_nil(theObject))  return NULL;
509   PortableServer::Servant aServant = thePOA->reference_to_servant(theObject);
510   return aServant;
511 }
512
513 //============================================================================
514 // function : Save()
515 // purpose  : save OCAF/Geom document
516 //============================================================================
517 SALOMEDS::TMPFile* GEOM_Superv_i::Save(SALOMEDS::SComponent_ptr theComponent,
518                                        const char* theURL,
519                                        CORBA::Boolean isMultiFile)
520 {
521   SALOMEDS::TMPFile_var aStreamFile;
522   return aStreamFile._retn();
523 }
524
525 //============================================================================
526 // function : SaveASCII()
527 // purpose  :
528 //============================================================================
529 SALOMEDS::TMPFile* GEOM_Superv_i::SaveASCII(SALOMEDS::SComponent_ptr theComponent,
530                                             const char* theURL,
531                                             CORBA::Boolean isMultiFile)
532 {
533   SALOMEDS::TMPFile_var aStreamFile;
534   return aStreamFile._retn();
535 }
536
537 //============================================================================
538 // function : Load()
539 // purpose  :
540 //============================================================================
541 CORBA::Boolean GEOM_Superv_i::Load(SALOMEDS::SComponent_ptr theComponent,
542                                    const SALOMEDS::TMPFile& theStream,
543                                    const char* theURL,
544                                    CORBA::Boolean isMultiFile)
545 {
546   return false;
547 }
548
549 //============================================================================
550 // function : LoadASCII()
551 // purpose  :
552 //============================================================================
553 CORBA::Boolean GEOM_Superv_i::LoadASCII(SALOMEDS::SComponent_ptr theComponent,
554                                         const SALOMEDS::TMPFile& theStream,
555                                         const char* theURL,
556                                         CORBA::Boolean isMultiFile)
557 {
558   return false;
559 }
560
561 //============================================================================
562 // function : Close()
563 // purpose  :
564 //============================================================================
565 void GEOM_Superv_i::Close(SALOMEDS::SComponent_ptr theComponent)
566 {
567 }
568
569 //============================================================================
570 // function : ComponentDataType()
571 // purpose  :
572 //============================================================================
573 char* GEOM_Superv_i::ComponentDataType()
574 {
575   return 0;
576 }
577
578 //============================================================================
579 // function : IORToLocalPersistentID()
580 // purpose  :
581 //============================================================================
582 char* GEOM_Superv_i::IORToLocalPersistentID(SALOMEDS::SObject_ptr theSObject,
583                                             const char* IORString,
584                                             CORBA::Boolean isMultiFile,
585                                             CORBA::Boolean isASCII)
586 {
587   return 0;
588 }
589
590 //============================================================================
591 // function : LocalPersistentIDToIOR()
592 // purpose  : Create/Load CORBA object from a persistent ref (an entry)
593 //          : Used when a study is loaded
594 //          : The IOR (IORName) of object created is returned
595 //============================================================================
596 char* GEOM_Superv_i::LocalPersistentIDToIOR(SALOMEDS::SObject_ptr theSObject,
597                                             const char* aLocalPersistentID,
598                                             CORBA::Boolean isMultiFile,
599                                             CORBA::Boolean isASCII)
600 {
601   return 0;
602 }
603
604 //============================================================================
605 // function : CanPublishInStudy
606 // purpose  :
607 //============================================================================
608 CORBA::Boolean GEOM_Superv_i::CanPublishInStudy(CORBA::Object_ptr theIOR)
609 {
610   if (CORBA::is_nil(myGeomEngine))
611     setGeomEngine();
612   return myGeomEngine->CanPublishInStudy(theIOR);
613 }
614
615 //============================================================================
616 // function : PublishInStudy
617 // purpose  :
618 //============================================================================
619 SALOMEDS::SObject_ptr GEOM_Superv_i::PublishInStudy(SALOMEDS::Study_ptr theStudy,
620                                                     SALOMEDS::SObject_ptr theSObject,
621                                                     CORBA::Object_ptr theObject,
622                                                     const char* theName) throw (SALOME::SALOME_Exception)
623 {
624   if (CORBA::is_nil(myGeomEngine))
625     setGeomEngine();
626   return myGeomEngine->PublishInStudy(theStudy, theSObject, theObject, theName);
627 }
628
629 //============================================================================
630 // function : PublishNamedShapesInStudy
631 // purpose  :
632 //============================================================================
633 GEOM::ListOfGO*
634 GEOM_Superv_i::PublishNamedShapesInStudy(SALOMEDS::Study_ptr theStudy,
635                                          //SALOMEDS::SObject_ptr theSObject,
636                                          CORBA::Object_ptr theObject)
637 {
638   if (CORBA::is_nil(myGeomEngine))
639     setGeomEngine();
640   return myGeomEngine->PublishNamedShapesInStudy(theStudy, theObject);
641 }
642
643 //============================================================================
644 // function : CanCopy()
645 // purpose  :
646 //============================================================================
647 CORBA::Boolean GEOM_Superv_i::CanCopy(SALOMEDS::SObject_ptr theObject)
648 {
649   return false;
650 }
651
652 //============================================================================
653 // function : CopyFrom()
654 // purpose  :
655 //============================================================================
656 SALOMEDS::TMPFile* GEOM_Superv_i::CopyFrom(SALOMEDS::SObject_ptr theObject, CORBA::Long& theObjectID)
657 {
658   SALOMEDS::TMPFile_var aStreamFile;
659   return aStreamFile._retn();
660 }
661
662 //============================================================================
663 // function : CanPaste()
664 // purpose  :
665 //============================================================================
666 CORBA::Boolean GEOM_Superv_i::CanPaste(const char* theComponentName, CORBA::Long theObjectID)
667 {
668   return false;
669 }
670
671 //============================================================================
672 // function : PasteInto()
673 // purpose  :
674 //============================================================================
675 SALOMEDS::SObject_ptr GEOM_Superv_i::PasteInto(const SALOMEDS::TMPFile& theStream,
676                                                CORBA::Long theObjectID,
677                                                SALOMEDS::SObject_ptr theObject)
678 {
679   SALOMEDS::SObject_var aNewSO;
680   return aNewSO._retn();
681 }
682
683 //================= Primitives Construction : BasicOperations =================
684 //=============================================================================
685 //  MakePointXYZ:
686 //=============================================================================
687 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointXYZ(CORBA::Double theX,
688                                                   CORBA::Double theY,
689                                                   CORBA::Double theZ)
690 {
691   beginService( " GEOM_Superv_i::MakePointXYZ" );
692   MESSAGE("GEOM_Superv_i::MakePointXYZ");
693   getBasicOp();
694   // make vertex and return
695   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointXYZ(theX, theY, theZ);
696   endService( " GEOM_Superv_i::MakePointXYZ" );
697   return anObj;
698 }
699
700 //=============================================================================
701 //  MakePointWithReference:
702 //=============================================================================
703 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointWithReference (GEOM::GEOM_Object_ptr theReference,
704                                                              CORBA::Double theX,
705                                                              CORBA::Double theY,
706                                                              CORBA::Double theZ)
707 {
708   beginService( " GEOM_Superv_i::MakePointWithReference" );
709   MESSAGE("GEOM_Superv_i::MakePointWithReference");
710   getBasicOp();
711   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointWithReference(theReference, theX, theY, theZ);
712   endService( " GEOM_Superv_i::MakePointWithReference" );
713   return anObj;
714 }
715
716 //=============================================================================
717 //  MakePointOnCurve:
718 //=============================================================================
719 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
720                                                        CORBA::Double theParameter)
721 {
722   beginService( " GEOM_Superv_i::MakePointOnCurve" );
723   MESSAGE("GEOM_Superv_i::MakePointOnCurve");
724   getBasicOp();
725   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointOnCurve(theRefCurve, theParameter, false);
726   endService( " GEOM_Superv_i::MakePointOnCurve" );
727   return anObj;
728 }
729
730 //=============================================================================
731 //  MakePointOnCurveByLength:
732 //=============================================================================
733 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnCurveByLength (GEOM::GEOM_Object_ptr theRefCurve,
734                                                                CORBA::Double theLength,
735                                                                GEOM::GEOM_Object_ptr theStartPoint)
736 {
737   beginService( " GEOM_Superv_i::MakePointOnCurveByLength" );
738   MESSAGE("GEOM_Superv_i::MakePointOnCurveByLength");
739   getBasicOp();
740   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointOnCurveByLength(theRefCurve, theLength, theStartPoint);
741   endService( " GEOM_Superv_i::MakePointOnCurveByLength" );
742   return anObj;
743 }
744
745 //=============================================================================
746 //  MakePointOnCurveByCoord
747 //=============================================================================
748 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnCurveByCoord (GEOM::GEOM_Object_ptr theRefCurve,
749                                                               CORBA::Double theXParameter,
750                                                               CORBA::Double theYParameter,
751                                                               CORBA::Double theZParameter)
752 {
753   beginService( " GEOM_Superv_i::MakePointOnCurveByCoord" );
754   MESSAGE("GEOM_Superv_i::MakePointOnCurveByCoord");
755   getBasicOp();
756   GEOM::GEOM_Object_ptr anObj =
757     myBasicOp->MakePointOnCurveByCoord(theRefCurve, theXParameter,
758                                 theYParameter, theZParameter);
759   endService( " GEOM_Superv_i::MakePointOnCurveByCoord" );
760   return anObj;
761 }
762
763 //=============================================================================
764 //  MakePointOnSurface:
765 //=============================================================================
766 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnSurface (GEOM::GEOM_Object_ptr theRefSurface,
767                                                          CORBA::Double theUParameter,
768                                                          CORBA::Double theVParameter)
769 {
770   beginService( " GEOM_Superv_i::MakePointOnSurface" );
771   MESSAGE("GEOM_Superv_i::MakePointOnSurface");
772   getBasicOp();
773   GEOM::GEOM_Object_ptr anObj =
774     myBasicOp->MakePointOnSurface(theRefSurface, theUParameter, theVParameter);
775   endService( " GEOM_Superv_i::MakePointOnSurface" );
776   return anObj;
777 }
778
779 //=============================================================================
780 //  MakePointOnSurfaceByCoord
781 //=============================================================================
782 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnSurfaceByCoord (GEOM::GEOM_Object_ptr theRefSurface,
783                                                                 CORBA::Double theXParameter,
784                                                                 CORBA::Double theYParameter,
785                                                                 CORBA::Double theZParameter)
786 {
787   beginService( " GEOM_Superv_i::MakePointOnSurfaceByCoord" );
788   MESSAGE("GEOM_Superv_i::MakePointOnSurfaceByCoord");
789   getBasicOp();
790   GEOM::GEOM_Object_ptr anObj =
791     myBasicOp->MakePointOnSurfaceByCoord(theRefSurface, theXParameter,
792                                 theYParameter, theZParameter);
793   endService( " GEOM_Superv_i::MakePointOnSurfaceByCoord" );
794   return anObj;
795 }
796
797 //=============================================================================
798 //  MakePointOnLinesIntersection:
799 //=============================================================================
800 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnLinesIntersection (GEOM::GEOM_Object_ptr theRefLine1,
801                                                                    GEOM::GEOM_Object_ptr theRefLine2)
802 {
803   beginService( " GEOM_Superv_i::MakePointOnLinesIntersection" );
804   MESSAGE("GEOM_Superv_i::MakePointOnLinesIntersection");
805   getBasicOp();
806   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointOnLinesIntersection(theRefLine1, theRefLine2);
807   endService( " GEOM_Superv_i::MakePointOnLinesIntersection" );
808   return anObj;
809 }
810
811 //=============================================================================
812 //  MakeTangentOnCurve:
813 //=============================================================================
814 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTangentOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
815                                                          CORBA::Double theParameter)
816 {
817   beginService( " GEOM_Superv_i::MakeTangentOnCurve" );
818   MESSAGE("GEOM_Superv_i::MakeTangentOnCurve");
819   getBasicOp();
820   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeTangentOnCurve(theRefCurve, theParameter);
821   endService( " GEOM_Superv_i::MakeTangentOnCurve" );
822   return anObj;
823 }
824
825 //=============================================================================
826 //  MakeVectorDXDYDZ:
827 //=============================================================================
828 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeVectorDXDYDZ (CORBA::Double theDX,
829                                                        CORBA::Double theDY,
830                                                        CORBA::Double theDZ)
831 {
832   beginService( " GEOM_Superv_i::MakeVectorDXDYDZ" );
833   MESSAGE("GEOM_Superv_i::MakeVectorDXDYDZ");
834   getBasicOp();
835   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeVectorDXDYDZ(theDX, theDY, theDZ);
836   endService( " GEOM_Superv_i::MakeVectorDXDYDZ" );
837   return anObj;
838 }
839
840 //=============================================================================
841 //  MakeVectorTwoPnt:
842 //=============================================================================
843 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeVectorTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
844                                                        GEOM::GEOM_Object_ptr thePnt2)
845 {
846   beginService( " GEOM_Superv_i::MakeVectorTwoPnt" );
847   MESSAGE("GEOM_Superv_i::MakeVector");
848   getBasicOp();
849   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeVectorTwoPnt(thePnt1, thePnt2);
850   endService( " GEOM_Superv_i::MakeVectorTwoPnt" );
851   return anObj;
852 }
853
854 //=============================================================================
855 //  MakeLineTwoPnt:
856 //=============================================================================
857 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeLineTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
858                                                      GEOM::GEOM_Object_ptr thePnt2)
859 {
860   beginService( " GEOM_Superv_i::MakeLineTwoPnt");
861   MESSAGE("GEOM_Superv_i::MakeLineTwoPnt");
862   getBasicOp();
863   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeLineTwoPnt(thePnt1, thePnt2);
864   endService( " GEOM_Superv_i::MakeLineTwoPnt");
865   return anObj;
866 }
867
868 //=============================================================================
869 //  MakeLineTwoFaces:
870 //=============================================================================
871 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeLineTwoFaces (GEOM::GEOM_Object_ptr theFace1,
872                                                        GEOM::GEOM_Object_ptr theFace2)
873 {
874   beginService( " GEOM_Superv_i::MakeLineTwoFaces");
875   MESSAGE("GEOM_Superv_i::MakeLineTwoFaces");
876   getBasicOp();
877   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeLineTwoFaces(theFace1, theFace2);
878   endService( " GEOM_Superv_i::MakeLineTwoFaces");
879   return anObj;
880 }
881
882 //=============================================================================
883 //  MakePlaneThreePnt:
884 //=============================================================================
885 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneThreePnt (GEOM::GEOM_Object_ptr thePnt1,
886                                                         GEOM::GEOM_Object_ptr thePnt2,
887                                                         GEOM::GEOM_Object_ptr thePnt3,
888                                                         CORBA::Double theTrimSize)
889 {
890   beginService( " GEOM_Superv_i::MakePlaneThreePnt");
891   MESSAGE("GEOM_Superv_i::MakePlaneThreePnt");
892   getBasicOp();
893   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlaneThreePnt(thePnt1, thePnt2, thePnt3, theTrimSize);
894   endService( " GEOM_Superv_i::MakePlaneThreePnt");
895   return anObj;
896 }
897
898 //=============================================================================
899 //  MakePlanePntVec:
900 //=============================================================================
901 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlanePntVec (GEOM::GEOM_Object_ptr thePnt,
902                                                       GEOM::GEOM_Object_ptr theVec,
903                                                       CORBA::Double theTrimSize)
904 {
905   beginService( " GEOM_Superv_i::MakePlanePntVec" );
906   MESSAGE("GEOM_Superv_i::MakePlanePntVec");
907   getBasicOp();
908   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlanePntVec(thePnt, theVec, theTrimSize);
909   endService( " GEOM_Superv_i::MakePlanePntVec" );
910   return anObj;
911 }
912
913 //=============================================================================
914 //  MakePlaneFace:
915 //=============================================================================
916 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneFace (GEOM::GEOM_Object_ptr theFace,
917                                                     CORBA::Double theTrimSize)
918 {
919   beginService( " GEOM_Superv_i::MakePlaneFace" );
920   MESSAGE("GEOM_Superv_i::MakePlaneFace");
921   getBasicOp();
922   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlaneFace(theFace, theTrimSize);
923   endService( " GEOM_Superv_i::MakePlaneFace" );
924   return anObj;
925 }
926
927 //=============================================================================
928 //  MakePlane2Vec:
929 //=============================================================================
930 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlane2Vec (GEOM::GEOM_Object_ptr theVec1,
931                                                     GEOM::GEOM_Object_ptr theVec2,
932                                                     CORBA::Double theTrimSize)
933 {
934   beginService( " GEOM_Superv_i::MakePlane2Vec" );
935   MESSAGE("GEOM_Superv_i::MakePlane2Vec");
936   getBasicOp();
937   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlane2Vec(theVec1, theVec2, theTrimSize);
938   endService( " GEOM_Superv_i::MakePlane2Vec" );
939   return anObj;
940 }
941
942 //=============================================================================
943 //  MakePlaneLCS:
944 //=============================================================================
945 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneLCS (GEOM::GEOM_Object_ptr theLCS,
946                                                    CORBA::Double theTrimSize,
947                                                    CORBA::Double theOrientation)
948 {
949   beginService( " GEOM_Superv_i::MakePlaneLCS" );
950   MESSAGE("GEOM_Superv_i::MakePlaneLCS");
951   getBasicOp();
952   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlaneLCS(theLCS, theTrimSize, theOrientation);
953   endService( " GEOM_Superv_i::MakePlaneLCS" );
954   return anObj;
955 }
956
957 //=============================================================================
958 //  MakeMarker:
959 //=============================================================================
960 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMarker
961 (CORBA::Double theOX , CORBA::Double theOY , CORBA::Double theOZ,
962  CORBA::Double theXDX, CORBA::Double theXDY, CORBA::Double theXDZ,
963  CORBA::Double theYDX, CORBA::Double theYDY, CORBA::Double theYDZ)
964 {
965   beginService( " GEOM_Superv_i::MakeMarker" );
966   MESSAGE("GEOM_Superv_i::MakeMarker");
967   getBasicOp();
968   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeMarker(theOX, theOY, theOZ, theXDX, theXDY, theXDZ, theYDX, theYDY, theYDZ);
969   endService( " GEOM_Superv_i::MakeMarker" );
970   return anObj;
971 }
972
973 //=============================================================================
974 //  MakeMarkerFromShape:
975 //=============================================================================
976 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMarkerFromShape (GEOM::GEOM_Object_ptr theShape)
977 {
978   beginService( " GEOM_Superv_i::MakeMarkerFromShape" );
979   MESSAGE("GEOM_Superv_i::MakeMarkerFromShape");
980   getBasicOp();
981   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeMarkerFromShape(theShape);
982   endService( " GEOM_Superv_i::MakeMarkerFromShape" );
983   return anObj;
984 }
985
986 //=============================================================================
987 //  MakeMarkerPntTwoVec:
988 //=============================================================================
989 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMarkerPntTwoVec (GEOM::GEOM_Object_ptr theOrigin,
990                                                           GEOM::GEOM_Object_ptr theXVec,
991                                                           GEOM::GEOM_Object_ptr theYVec)
992 {
993   beginService( " GEOM_Superv_i::MakeMarkerPntTwoVec" );
994   MESSAGE("GEOM_Superv_i::MakeMarkerPntTwoVec");
995   getBasicOp();
996   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeMarkerPntTwoVec(theOrigin, theXVec, theYVec);
997   endService( " GEOM_Superv_i::MakeMarkerPntTwoVec" );
998   return anObj;
999 }
1000
1001 //=============================================================================
1002 //  MakeTangentPlaneOnFace:
1003 //=============================================================================
1004 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTangentPlaneOnFace (GEOM::GEOM_Object_ptr theFace,
1005                                                  CORBA::Double theParameterU,
1006                                                  CORBA::Double theParameterV,
1007                                                  CORBA::Double theTrimSize)
1008 {
1009   beginService( " GEOM_Superv_i::MakeTangentPlaneOnFace" );
1010   MESSAGE("GEOM_Superv_i::MakeTangentPlaneOnFace");
1011   getBasicOp();
1012   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeTangentPlaneOnFace(theFace, theParameterU,theParameterV,theTrimSize);
1013   endService( " GEOM_Superv_i::MakeTangentPlaneOnFace" );
1014   return anObj;
1015 }
1016
1017 //================= Primitives Construction : 3DPrimOperations ================
1018 //=============================================================================
1019 //  MakeBox:
1020 //=============================================================================
1021 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBox (CORBA::Double theX1,
1022                                               CORBA::Double theY1,
1023                                               CORBA::Double theZ1,
1024                                               CORBA::Double theX2,
1025                                               CORBA::Double theY2,
1026                                               CORBA::Double theZ2)
1027 {
1028   beginService( " GEOM_Superv_i::MakeBox" );
1029   MESSAGE("GEOM_Superv_i::MakeBox");
1030   getBasicOp();
1031   get3DPrimOp();
1032   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeBoxTwoPnt(myBasicOp->MakePointXYZ(theX1, theY1, theZ1),
1033                                                           myBasicOp->MakePointXYZ(theX2, theY2, theZ2));
1034   endService( " GEOM_Superv_i::MakeBox" );
1035   return anObj;
1036 }
1037
1038 //=============================================================================
1039 //  MakeBoxDXDYDZ:
1040 //=============================================================================
1041 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoxDXDYDZ (CORBA::Double theDX,
1042                                                     CORBA::Double theDY,
1043                                                     CORBA::Double theDZ)
1044 {
1045   beginService( " GEOM_Superv_i::MakeBoxDXDYDZ" );
1046   MESSAGE("GEOM_Superv_i::MakeBoxDXDYDZ");
1047   get3DPrimOp();
1048   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeBoxDXDYDZ(theDX, theDY, theDZ);
1049   endService( " GEOM_Superv_i::MakeBoxDXDYDZ" );
1050   return anObj;
1051 }
1052
1053 //=============================================================================
1054 //  MakeBoxTwoPnt:
1055 //=============================================================================
1056 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoxTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
1057                                                     GEOM::GEOM_Object_ptr thePnt2)
1058 {
1059   beginService( " GEOM_Superv_i::MakeBoxTwoPnt" );
1060   MESSAGE("GEOM_Superv_i::MakeBoxTwoPnt");
1061   get3DPrimOp();
1062   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeBoxTwoPnt(thePnt1, thePnt2);
1063   endService( " GEOM_Superv_i::MakeBoxTwoPnt" );
1064   return anObj;
1065 }
1066
1067 //=============================================================================
1068 //  MakeFaceHW:
1069 //=============================================================================
1070 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceHW (CORBA::Double theH,
1071                                                  CORBA::Double theW,
1072                                                  CORBA::Short  theOrientation)
1073 {
1074   beginService( " GEOM_Superv_i::MakeFaceHW" );
1075   MESSAGE("GEOM_Superv_i::MakeFaceHW");
1076   get3DPrimOp();
1077   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeFaceHW(theH, theW, theOrientation);
1078   endService( " GEOM_Superv_i::MakeFaceHW" );
1079   return anObj;
1080 }
1081
1082 //=============================================================================
1083 //  MakeFaceObjHW:
1084 //=============================================================================
1085 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceObjHW (GEOM::GEOM_Object_ptr theObj,
1086                                                     CORBA::Double theH,
1087                                                     CORBA::Double theW)
1088 {
1089   beginService( " GEOM_Superv_i::MakeFaceObjHW" );
1090   MESSAGE("GEOM_Superv_i::MakeFaceObjHW");
1091   get3DPrimOp();
1092   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeFaceObjHW(theObj, theH, theW);
1093   endService( " GEOM_Superv_i::MakeFaceObjHW" );
1094   return anObj;
1095 }
1096
1097 //=============================================================================
1098 //  MakeDiskPntVecR:
1099 //=============================================================================
1100 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDiskPntVecR (GEOM::GEOM_Object_ptr theCenter,
1101                                                       GEOM::GEOM_Object_ptr theVector,
1102                                                       CORBA::Double theR)
1103 {
1104   beginService( " GEOM_Superv_i::MakeDiskPntVecR" );
1105   MESSAGE("GEOM_Superv_i::MakeDiskPntVecR");
1106   get3DPrimOp();
1107   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeDiskPntVecR(theCenter, theVector, theR);
1108   endService( " GEOM_Superv_i::MakeDiskPntVecR" );
1109   return anObj;
1110 }
1111
1112 //=============================================================================
1113 //  MakeDiskThreePnt:
1114 //=============================================================================
1115 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDiskThreePnt (GEOM::GEOM_Object_ptr thePnt1,
1116                                                        GEOM::GEOM_Object_ptr thePnt2,
1117                                                        GEOM::GEOM_Object_ptr thePnt3)
1118 {
1119   beginService( " GEOM_Superv_i::MakeDiskThreePnt" );
1120   MESSAGE("GEOM_Superv_i::MakeDiskThreePnt");
1121   get3DPrimOp();
1122   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeDiskThreePnt(thePnt1, thePnt2, thePnt3);
1123   endService( " GEOM_Superv_i::MakeDiskThreePnt" );
1124   return anObj;
1125 }
1126
1127 //=============================================================================
1128 //  MakeDiskR:
1129 //=============================================================================
1130 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDiskR (CORBA::Double theR,
1131                                                 CORBA::Short  theOrientation)
1132 {
1133   beginService( " GEOM_Superv_i::MakeDiskR" );
1134   MESSAGE("GEOM_Superv_i::MakeDiskR");
1135   get3DPrimOp();
1136   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeDiskR(theR, theOrientation);
1137   endService( " GEOM_Superv_i::MakeDiskR" );
1138   return anObj;
1139 }
1140
1141 //=============================================================================
1142 //  MakeCylinderPntVecRH:
1143 //=============================================================================
1144 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderPntVecRH (GEOM::GEOM_Object_ptr thePnt,
1145                                                            GEOM::GEOM_Object_ptr theAxis,
1146                                                            CORBA::Double theRadius,
1147                                                            CORBA::Double theHeight)
1148 {
1149   beginService( " GEOM_Superv_i::MakeCylinderPntVecRH" );
1150   MESSAGE("GEOM_Superv_i::MakeCylinderPntVecRH");
1151   get3DPrimOp();
1152   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderPntVecRH(thePnt, theAxis, theRadius, theHeight);
1153   endService( " GEOM_Superv_i::MakeCylinderPntVecRH" );
1154   return anObj;
1155 }
1156
1157 //=============================================================================
1158 //  MakeCylinderRH:
1159 //=============================================================================
1160 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderRH (CORBA::Double theR,
1161                                                      CORBA::Double theH)
1162 {
1163   beginService( " GEOM_Superv_i::MakeCylinderRH" );
1164   MESSAGE("GEOM_Superv_i::MakeCylinderRH");
1165   get3DPrimOp();
1166   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderRH(theR, theH);
1167   endService( " GEOM_Superv_i::MakeCylinderRH" );
1168   return anObj;
1169 }
1170
1171 //=============================================================================
1172 //  MakeCylinderPntVecRHA:
1173 //=============================================================================
1174 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderPntVecRHA (GEOM::GEOM_Object_ptr thePnt,
1175                                                             GEOM::GEOM_Object_ptr theAxis,
1176                                                             CORBA::Double theRadius,
1177                                                             CORBA::Double theHeight,
1178                                                             CORBA::Double theAngle)
1179 {
1180   beginService( " GEOM_Superv_i::MakeCylinderPntVecRHA" );
1181   MESSAGE("GEOM_Superv_i::MakeCylinderPntVecRHA");
1182   get3DPrimOp();
1183   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderPntVecRHA(thePnt, theAxis, theRadius, theHeight, theAngle);
1184   endService( " GEOM_Superv_i::MakeCylinderPntVecRHA" );
1185   return anObj;
1186 }
1187
1188 //=============================================================================
1189 //  MakeCylinderRHA:
1190 //=============================================================================
1191 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderRHA (CORBA::Double theR,
1192                                                       CORBA::Double theH,
1193                                                       CORBA::Double theA)
1194 {
1195   beginService( " GEOM_Superv_i::MakeCylinderRHA" );
1196   MESSAGE("GEOM_Superv_i::MakeCylinderRHA");
1197   get3DPrimOp();
1198   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderRHA(theR, theH, theA);
1199   endService( " GEOM_Superv_i::MakeCylinderRHA" );
1200   return anObj;
1201 }
1202
1203 //=============================================================================
1204 //  MakeSphere:
1205 //=============================================================================
1206 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSphere  (CORBA::Double theX,
1207                                                   CORBA::Double theY,
1208                                                   CORBA::Double theZ,
1209                                                   CORBA::Double theRadius)
1210 {
1211   beginService( " GEOM_Superv_i::MakeSphepe" );
1212   MESSAGE("GEOM_Superv_i::MakeSphepe");
1213   getBasicOp();
1214   get3DPrimOp();
1215   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeSpherePntR(myBasicOp->MakePointXYZ(theX, theY, theZ), theRadius);
1216   endService( " GEOM_Superv_i::MakeSphepe" );
1217   return anObj;
1218 }
1219
1220 //=============================================================================
1221 //  MakeSphereR:
1222 //=============================================================================
1223 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSphereR (CORBA::Double theR)
1224 {
1225   beginService( " GEOM_Superv_i::MakeSphereR" );
1226   MESSAGE("GEOM_Superv_i::MakeSphereR");
1227   get3DPrimOp();
1228   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeSphereR(theR);
1229   endService( " GEOM_Superv_i::MakeSphereR" );
1230   return anObj;
1231 }
1232
1233 //=============================================================================
1234 //  MakeSpherePntR:
1235 //=============================================================================
1236 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSpherePntR (GEOM::GEOM_Object_ptr thePnt,
1237                                                      CORBA::Double theR)
1238 {
1239   beginService( " GEOM_Superv_i::MakeSpherePntR" );
1240   MESSAGE("GEOM_Superv_i::MakeSpherePntR");
1241   get3DPrimOp();
1242   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeSpherePntR(thePnt, theR);
1243   endService( " GEOM_Superv_i::MakeSpherePntR" );
1244   return anObj;
1245 }
1246
1247 //=============================================================================
1248 //  MakeTorusPntVecRR:
1249 //=============================================================================
1250 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTorusPntVecRR (GEOM::GEOM_Object_ptr thePnt,
1251                                                         GEOM::GEOM_Object_ptr theVec,
1252                                                         CORBA::Double theRMajor,
1253                                                         CORBA::Double theRMinor)
1254 {
1255   beginService( " GEOM_Superv_i::MakeTorusPntVecRR" );
1256   MESSAGE("GEOM_Superv_i::MakeTorusPntVecRR");
1257   get3DPrimOp();
1258   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeTorusPntVecRR(thePnt, theVec, theRMajor, theRMinor);
1259   endService( " GEOM_Superv_i::MakeTorusPntVecRR" );
1260   return anObj;
1261 }
1262
1263 //=============================================================================
1264 //  MakeTorusRR:
1265 //=============================================================================
1266 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTorusRR (CORBA::Double theRMajor,
1267                                                   CORBA::Double theRMinor)
1268 {
1269   beginService( " GEOM_Superv_i::MakeTorusRR" );
1270   MESSAGE("GEOM_Superv_i::MakeTorusRR");
1271   get3DPrimOp();
1272   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeTorusRR(theRMajor, theRMinor);
1273   endService( " GEOM_Superv_i::MakeTorusRR" );
1274   return anObj;
1275 }
1276
1277 //=============================================================================
1278 //  MakeConePntVecR1R2H:
1279 //=============================================================================
1280 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeConePntVecR1R2H (GEOM::GEOM_Object_ptr thePnt,
1281                                                           GEOM::GEOM_Object_ptr theAxis,
1282                                                           CORBA::Double theR1,
1283                                                           CORBA::Double theR2,
1284                                                           CORBA::Double theHeight)
1285 {
1286   beginService( " GEOM_Superv_i::MakeConePntVecR1R2H" );
1287   MESSAGE("GEOM_Superv_i::MakeConePntVecR1R2H");
1288   get3DPrimOp();
1289   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeConePntVecR1R2H(thePnt, theAxis, theR1, theR2, theHeight);
1290   endService( " GEOM_Superv_i::MakeConePntVecR1R2H" );
1291   return anObj;
1292 }
1293
1294 //=============================================================================
1295 //  MakeConeR1R2H:
1296 //=============================================================================
1297 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeConeR1R2H (CORBA::Double theR1,
1298                                                     CORBA::Double theR2,
1299                                                     CORBA::Double theHeight)
1300 {
1301   beginService( " GEOM_Superv_i::MakeConeR1R2H" );
1302   MESSAGE("GEOM_Superv_i::MakeConeR1R2H");
1303   get3DPrimOp();
1304   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeConeR1R2H(theR1, theR2, theHeight);
1305   endService( " GEOM_Superv_i::MakeConeR1R2H" );
1306   return anObj;
1307 }
1308
1309 //=============================================================================
1310 //  MakePrismVecH:
1311 //=============================================================================
1312 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismVecH (GEOM::GEOM_Object_ptr theBase,
1313                                                     GEOM::GEOM_Object_ptr theVec,
1314                                                     CORBA::Double         theH)
1315 {
1316   beginService( " GEOM_Superv_i::MakePrismVecH" );
1317   MESSAGE("GEOM_Superv_i::MakePrismVecH");
1318   get3DPrimOp();
1319   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismVecH(theBase, theVec, theH);
1320   endService( " GEOM_Superv_i::MakePrismVecH" );
1321   return anObj;
1322 }
1323
1324 //=============================================================================
1325 //  MakePrismVecH2Ways:
1326 //=============================================================================
1327 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismVecH2Ways (GEOM::GEOM_Object_ptr theBase,
1328                                                          GEOM::GEOM_Object_ptr theVec,
1329                                                          CORBA::Double         theH)
1330 {
1331   beginService( " GEOM_Superv_i::MakePrismVecH2Ways" );
1332   MESSAGE("GEOM_Superv_i::MakePrismVecH2Ways");
1333   get3DPrimOp();
1334   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismVecH2Ways(theBase, theVec, theH);
1335   endService( " GEOM_Superv_i::MakePrismVecH2Ways" );
1336   return anObj;
1337 }
1338
1339 //=============================================================================
1340 //  MakePrismTwoPnt:
1341 //=============================================================================
1342 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismTwoPnt (GEOM::GEOM_Object_ptr theBase,
1343                                                       GEOM::GEOM_Object_ptr thePoint1,
1344                                                       GEOM::GEOM_Object_ptr thePoint2)
1345 {
1346   beginService( " GEOM_Superv_i::MakePrismTwoPnt" );
1347   MESSAGE("GEOM_Superv_i::MakePrismTwoPnt");
1348   get3DPrimOp();
1349   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismTwoPnt(theBase, thePoint1, thePoint2);
1350   endService( " GEOM_Superv_i::MakePrismTwoPnt" );
1351   return anObj;
1352 }
1353
1354 //=============================================================================
1355 //  MakePrismTwoPnt2Ways:
1356 //=============================================================================
1357 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismTwoPnt2Ways (GEOM::GEOM_Object_ptr theBase,
1358                                                            GEOM::GEOM_Object_ptr thePoint1,
1359                                                            GEOM::GEOM_Object_ptr thePoint2)
1360 {
1361   beginService( " GEOM_Superv_i::MakePrismTwoPnt2Ways" );
1362   MESSAGE("GEOM_Superv_i::MakePrismTwoPnt2Ways");
1363   get3DPrimOp();
1364   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismTwoPnt2Ways(theBase, thePoint1, thePoint2);
1365   endService( " GEOM_Superv_i::MakePrismTwoPnt2Ways" );
1366   return anObj;
1367 }
1368
1369 //=============================================================================
1370 //  MakePrismDXDYDZ:
1371 //=============================================================================
1372 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismDXDYDZ (GEOM::GEOM_Object_ptr theBase,
1373                       CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
1374 {
1375   beginService( " GEOM_Superv_i::MakePrismDXDYDZ" );
1376   MESSAGE("GEOM_Superv_i::MakePrismDXDYDZ");
1377   get3DPrimOp();
1378   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismDXDYDZ(theBase, theDX, theDY, theDZ);
1379   endService( " GEOM_Superv_i::MakePrismDXDYDZ" );
1380   return anObj;
1381 }
1382
1383 //=============================================================================
1384 //  MakePrismDXDYDZ:
1385 //=============================================================================
1386 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismDXDYDZ2Ways (GEOM::GEOM_Object_ptr theBase,
1387                       CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
1388 {
1389   beginService( " GEOM_Superv_i::MakePrismDXDYDZ2Ways" );
1390   MESSAGE("GEOM_Superv_i::MakePrismDXDYDZ2Ways");
1391   get3DPrimOp();
1392   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismDXDYDZ2Ways(theBase, theDX, theDY, theDZ);
1393   endService( " GEOM_Superv_i::MakePrismDXDYDZ2Ways" );
1394   return anObj;
1395 }
1396
1397 //=============================================================================
1398 //  MakePipe:
1399 //=============================================================================
1400 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipe (GEOM::GEOM_Object_ptr theBase,
1401                                                GEOM::GEOM_Object_ptr thePath)
1402 {
1403   beginService( " GEOM_Superv_i::MakePipe" );
1404   MESSAGE("GEOM_Superv_i::MakePipe");
1405   get3DPrimOp();
1406   GEOM::ListOfGO_var aList = my3DPrimOp->MakePipe(theBase, thePath, false);
1407   endService( " GEOM_Superv_i::MakePipe" );
1408   return aList[0];
1409 }
1410
1411 //=============================================================================
1412 //  MakeRevolutionAxisAngle:
1413 //=============================================================================
1414 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeRevolutionAxisAngle (GEOM::GEOM_Object_ptr theBase,
1415                                                               GEOM::GEOM_Object_ptr theAxis,
1416                                                               CORBA::Double theAngle)
1417 {
1418   beginService( " GEOM_Superv_i::MakeRevolutionAxisAngle" );
1419   MESSAGE("GEOM_Superv_i::MakeRevolutionAxisAngle");
1420   get3DPrimOp();
1421   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeRevolutionAxisAngle(theBase, theAxis, theAngle);
1422   endService( " GEOM_Superv_i::MakeRevolutionAxisAngle" );
1423   return anObj;
1424 }
1425
1426 //=============================================================================
1427 //  MakeRevolutionAxisAngle:
1428 //=============================================================================
1429 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeRevolutionAxisAngle2Ways (GEOM::GEOM_Object_ptr theBase,
1430                                                                    GEOM::GEOM_Object_ptr theAxis,
1431                                                                    CORBA::Double theAngle)
1432 {
1433   beginService( " GEOM_Superv_i::MakeRevolutionAxisAngle2Ways" );
1434   MESSAGE("GEOM_Superv_i::MakeRevolutionAxisAngle2Ways");
1435   get3DPrimOp();
1436   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeRevolutionAxisAngle2Ways(theBase, theAxis, theAngle);
1437   endService( " GEOM_Superv_i::MakeRevolutionAxisAngle2Ways" );
1438   return anObj;
1439 }
1440
1441 //=============================================================================
1442 //  MakeFilling:
1443 //=============================================================================
1444 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilling (GEOM::GEOM_Object_ptr theShape,
1445                                                   CORBA::Long theMinDeg,
1446                                                   CORBA::Long theMaxDeg,
1447                                                   CORBA::Double theTol2D,
1448                                                   CORBA::Double theTol3D,
1449                                                   CORBA::Long theNbIter,
1450                                                   GEOM::filling_oper_method theMethod,
1451                                                   CORBA::Boolean theApprox)
1452 {
1453   beginService( " GEOM_Superv_i::MakeFilling" );
1454   MESSAGE("GEOM_Superv_i::MakeFilling");
1455   get3DPrimOp();
1456   GEOM::ListOfGO_var objList = new GEOM::ListOfGO;
1457   objList->length( 1 );
1458   objList[0] = theShape;
1459   GEOM::GEOM_Object_ptr anObj =
1460     my3DPrimOp->MakeFilling(objList, theMinDeg, theMaxDeg, theTol2D, theTol3D,
1461                             theNbIter, theMethod, theApprox);
1462   endService( " GEOM_Superv_i::MakeFilling" );
1463   return anObj;
1464 }
1465
1466 //============================= BooleanOperations =============================
1467 //=============================================================================
1468 //  MakeBoolean:
1469 //=============================================================================
1470 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoolean
1471                                         (GEOM::GEOM_Object_ptr theShape1,
1472                                          GEOM::GEOM_Object_ptr theShape2,
1473                                          CORBA::Long           theOperation)
1474 {
1475   beginService( " GEOM_Superv_i::MakeBoolean" );
1476   // theOperation indicates the operation to be done:
1477   // 1 - Common, 2 - Cut, 3 - Fuse, 4 - Section
1478   MESSAGE("GEOM_Superv_i::MakeBoolean");
1479   getBoolOp();
1480   GEOM::GEOM_Object_ptr anObj =
1481     myBoolOp->MakeBoolean(theShape1, theShape2, theOperation, false);
1482   endService( " GEOM_Superv_i::MakeBoolean" );
1483   return anObj;
1484 }
1485
1486 //=============================================================================
1487 //  MakeThruSections:
1488 //=============================================================================
1489 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeThruSections(const GEOM::ListOfGO& theSeqSections,
1490                                          CORBA::Boolean theModeSolid,
1491                                          CORBA::Double thePreci,
1492                                          CORBA::Boolean theRuled)
1493 {
1494   beginService( " GEOM_Superv_i::MakeThruSections" );
1495   MESSAGE("GEOM_Superv_i::MakeThruSections");
1496   get3DPrimOp();
1497   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeThruSections(theSeqSections, theModeSolid,thePreci,theRuled);
1498   endService( " GEOM_Superv_i::MakeThruSections" );
1499   return anObj;
1500 }
1501
1502 //=============================================================================
1503 //  MakePipe:
1504 //=============================================================================
1505 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeWithDifferentSections
1506                      (const GEOM::ListOfGO& theBases,
1507                       const GEOM::ListOfGO& theLocations,
1508                       GEOM::GEOM_Object_ptr thePath,
1509                       CORBA::Boolean theWithContact,
1510                       CORBA::Boolean theWithCorrections)
1511 {
1512   beginService( " GEOM_Superv_i::MakePipeWithDifferentSections" );
1513   MESSAGE("GEOM_Superv_i::MakePipeWithDifferentSections");
1514   get3DPrimOp();
1515   GEOM::ListOfGO_var aList = my3DPrimOp->MakePipeWithDifferentSections(theBases,theLocations, thePath,theWithContact,theWithCorrections, false);
1516   endService( " GEOM_Superv_i::MakePipeWithDifferentSections" );
1517   return aList[0];
1518 }
1519
1520
1521 //=============================================================================
1522 //  MakePipe:
1523 //=============================================================================
1524 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeWithShellSections
1525                    (const GEOM::ListOfGO& theBases,
1526                     const GEOM::ListOfGO& theSubBases,
1527                     const GEOM::ListOfGO& theLocations,
1528                     GEOM::GEOM_Object_ptr thePath,
1529                     CORBA::Boolean theWithContact,
1530                     CORBA::Boolean theWithCorrections)
1531 {
1532   beginService( " GEOM_Superv_i::MakePipeWithShellSections" );
1533   MESSAGE("GEOM_Superv_i::MakePipeWithShellSections");
1534   get3DPrimOp();
1535   GEOM::ListOfGO_var aList =
1536     my3DPrimOp->MakePipeWithShellSections(theBases, theSubBases,
1537                                           theLocations, thePath,
1538                                           theWithContact, theWithCorrections,
1539                                           false);
1540   endService( " GEOM_Superv_i::MakePipeWithShellSections" );
1541   return aList[0];
1542 }
1543
1544
1545 //=============================================================================
1546 //  MakePipe:
1547 //=============================================================================
1548 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeShellsWithoutPath
1549                    (const GEOM::ListOfGO& theBases,
1550                     const GEOM::ListOfGO& theLocations)
1551 {
1552   beginService( " GEOM_Superv_i::MakePipeShellsWithoutPath" );
1553   MESSAGE("GEOM_Superv_i::MakePipeShellsWithoutPath");
1554   get3DPrimOp();
1555   GEOM::ListOfGO_var aList =
1556     my3DPrimOp->MakePipeShellsWithoutPath(theBases,theLocations, false);
1557   endService( " GEOM_Superv_i::MakePipeShellsWithoutPath" );
1558   return aList[0];
1559 }
1560
1561
1562 //=============================================================================
1563 //  MakePipe:
1564 //=============================================================================
1565 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeBiNormalAlongVector
1566                                                 (GEOM::GEOM_Object_ptr theBase,
1567                                                  GEOM::GEOM_Object_ptr thePath,
1568                                                  GEOM::GEOM_Object_ptr theVec)
1569 {
1570   beginService( " GEOM_Superv_i::MakePipeBiNormalAlongVector" );
1571   MESSAGE("GEOM_Superv_i::MakePipeBiNormalAlongVector");
1572   get3DPrimOp();
1573   GEOM::ListOfGO_var aList =
1574     my3DPrimOp->MakePipeBiNormalAlongVector(theBase, thePath, theVec, false);
1575   endService( " GEOM_Superv_i::MakePipeBiNormalAlongVector" );
1576   return aList[0];
1577 }
1578
1579
1580 //=============================================================================
1581 //  MakeFuse:
1582 //=============================================================================
1583 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFuse
1584                                         (GEOM::GEOM_Object_ptr theShape1,
1585                                          GEOM::GEOM_Object_ptr theShape2)
1586 {
1587   beginService( " GEOM_Superv_i::MakeFuse" );
1588   MESSAGE("GEOM_Superv_i::MakeFuse");
1589   getBoolOp();
1590   GEOM::GEOM_Object_ptr anObj =
1591     myBoolOp->MakeBoolean(theShape1, theShape2, 3, false);
1592   endService( " GEOM_Superv_i::MakeFuse" );
1593   return anObj;
1594 }
1595
1596 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCommon (GEOM::GEOM_Object_ptr theShape1,
1597                                                  GEOM::GEOM_Object_ptr theShape2)
1598 {
1599   beginService( " GEOM_Superv_i::MakeCommon" );
1600   MESSAGE("GEOM_Superv_i::MakeCommon");
1601   getBoolOp();
1602   GEOM::GEOM_Object_ptr anObj =
1603     myBoolOp->MakeBoolean(theShape1, theShape2, 1, false);
1604   endService( " GEOM_Superv_i::MakeCommon" );
1605   return anObj;
1606 }
1607
1608 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCut (GEOM::GEOM_Object_ptr theShape1,
1609                                               GEOM::GEOM_Object_ptr theShape2)
1610 {
1611   beginService( " GEOM_Superv_i::MakeCut" );
1612   MESSAGE("GEOM_Superv_i::MakeCut");
1613   getBoolOp();
1614   GEOM::GEOM_Object_ptr anObj =
1615     myBoolOp->MakeBoolean(theShape1, theShape2, 2, false);
1616   endService( " GEOM_Superv_i::MakeCut" );
1617   return anObj;
1618 }
1619
1620 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSection (GEOM::GEOM_Object_ptr theShape1,
1621                                                   GEOM::GEOM_Object_ptr theShape2)
1622 {
1623   beginService( " GEOM_Superv_i::MakeCut" );
1624   MESSAGE("GEOM_Superv_i::MakeCut");
1625   getBoolOp();
1626   GEOM::GEOM_Object_ptr anObj =
1627     myBoolOp->MakeBoolean(theShape1, theShape2, 4, false);
1628   endService( " GEOM_Superv_i::MakeCut" );
1629   return anObj;
1630 }
1631
1632 //=============================================================================
1633 //  MakePartition:
1634 //=============================================================================
1635 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePartition (GEOM::GEOM_List_ptr   theShapes,
1636                                                     GEOM::GEOM_List_ptr   theTools,
1637                                                     GEOM::GEOM_List_ptr   theKeepInside,
1638                                                     GEOM::GEOM_List_ptr   theRemoveInside,
1639                                                     CORBA::Short      theLimit,
1640                                                     CORBA::Boolean    theRemoveWebs,
1641                                                     GEOM::GEOM_List_ptr theMaterials,
1642                                                     CORBA::Short theKeepNonlimitShapes)
1643 {
1644   beginService( " GEOM_Superv_i::MakePartition" );
1645   MESSAGE("GEOM_Superv_i::MakePartition");
1646   GEOM_List_i<GEOM::ListOfGO>* aListImplS =
1647     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShapes, myPOA).in());
1648   GEOM_List_i<GEOM::ListOfGO>* aListImplT =
1649     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theTools, myPOA).in());
1650   GEOM_List_i<GEOM::ListOfGO>* aListImplKI =
1651     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theKeepInside, myPOA).in());
1652   GEOM_List_i<GEOM::ListOfGO>* aListImplRI =
1653     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theRemoveInside, myPOA).in());
1654   GEOM_List_i<GEOM::ListOfLong>* aListImplM =
1655     dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theMaterials, myPOA).in());
1656   if (aListImplS && aListImplT && aListImplKI && aListImplRI && aListImplM) {
1657     getBoolOp();
1658     GEOM::GEOM_Object_ptr anObj =
1659       myBoolOp->MakePartition(aListImplS->GetList(), aListImplT->GetList(),
1660                               aListImplKI->GetList(), aListImplRI->GetList(),
1661                               theLimit, theRemoveWebs, aListImplM->GetList(),
1662                               theKeepNonlimitShapes);
1663     endService( " GEOM_Superv_i::MakePartition" );
1664     return anObj;
1665   }
1666   endService( " GEOM_Superv_i::MakePartition" );
1667   return NULL;
1668 }
1669
1670 //=============================================================================
1671 //  MakeHalfPartition:
1672 //=============================================================================
1673 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHalfPartition (GEOM::GEOM_Object_ptr theShape,
1674                                                         GEOM::GEOM_Object_ptr thePlane)
1675 {
1676   beginService( " GEOM_Superv_i::MakeHalfPartition" );
1677   MESSAGE("GEOM_Superv_i::MakeHalfPartition");
1678   getBoolOp();
1679   GEOM::GEOM_Object_ptr anObj =
1680     myBoolOp->MakeHalfPartition(theShape, thePlane);
1681   endService( " GEOM_Superv_i::MakeHalfPartition" );
1682   return anObj;
1683 }
1684
1685 //============================== InsertOperations =============================
1686 //=============================================================================
1687 //  MakeCopy:
1688 //=============================================================================
1689 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCopy (GEOM::GEOM_Object_ptr theOriginal)
1690 {
1691   beginService( " GEOM_Superv_i::MakeCopy" );
1692   MESSAGE("GEOM_Superv_i::MakeCopy");
1693   getInsOp();
1694   GEOM::GEOM_Object_ptr anObj = myInsOp->MakeCopy(theOriginal);
1695   endService( " GEOM_Superv_i::MakeCopy" );
1696   return anObj;
1697 }
1698
1699 //=============================================================================
1700 //  Export:
1701 //=============================================================================
1702 void GEOM_Superv_i::Export (GEOM::GEOM_Object_ptr theObject,
1703                             const char*           theFileName,
1704                             const char*           theFormatName)
1705 {
1706   beginService( " GEOM_Superv_i::Export" );
1707   MESSAGE("GEOM_Superv_i::Export");
1708   getInsOp();
1709   myInsOp->Export(theObject, theFileName, theFormatName);
1710   endService( " GEOM_Superv_i::Export" );
1711 }
1712
1713 //=============================================================================
1714 //  Import:
1715 //=============================================================================
1716 GEOM::GEOM_Object_ptr GEOM_Superv_i::ImportFile (const char* theFileName,
1717                                                  const char* theFormatName)
1718 {
1719   beginService( " GEOM_Superv_i::ImportFile" );
1720   MESSAGE("GEOM_Superv_i::ImportFile");
1721   getInsOp();
1722   GEOM::ListOfGBO_var aSeq = myInsOp->ImportFile(theFileName, theFormatName);
1723   GEOM::GEOM_Object_var anObj;
1724   
1725   if (aSeq->length() > 0) {
1726     anObj = GEOM::GEOM_Object::_narrow(aSeq[0]);
1727   }
1728
1729   endService( " GEOM_Superv_i::ImportFile" );
1730   return anObj._retn();
1731 }
1732
1733 //============================= TransformOperations ===========================
1734 //=============================================================================
1735 //  TranslateTwoPoints:
1736 //=============================================================================
1737 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateTwoPoints (GEOM::GEOM_Object_ptr theObject,
1738                                                          GEOM::GEOM_Object_ptr thePoint1,
1739                                                          GEOM::GEOM_Object_ptr thePoint2)
1740 {
1741   beginService( " GEOM_Superv_i::TranslateTwoPoints" );
1742   MESSAGE("GEOM_Superv_i::TranslateTwoPoints");
1743   getTransfOp();
1744   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateTwoPoints(theObject, thePoint1, thePoint2);
1745   endService( " GEOM_Superv_i::TranslateTwoPoints" );
1746   return anObj;
1747 }
1748
1749 //=============================================================================
1750 //  TranslateTwoPointsCopy:
1751 //=============================================================================
1752 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateTwoPointsCopy (GEOM::GEOM_Object_ptr theObject,
1753                                                              GEOM::GEOM_Object_ptr thePoint1,
1754                                                              GEOM::GEOM_Object_ptr thePoint2)
1755 {
1756   beginService( " GEOM_Superv_i::TranslateTwoPointsCopy" );
1757   MESSAGE("GEOM_Superv_i::TranslateTwoPointsCopy");
1758   getTransfOp();
1759   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateTwoPointsCopy(theObject, thePoint1, thePoint2);
1760   endService( " GEOM_Superv_i::TranslateTwoPointsCopy" );
1761   return anObj;
1762 }
1763
1764 //=============================================================================
1765 //  TranslateDXDYDZ:
1766 //=============================================================================
1767 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZ (GEOM::GEOM_Object_ptr theObject,
1768                                                       CORBA::Double theDX,
1769                                                       CORBA::Double theDY,
1770                                                       CORBA::Double theDZ)
1771 {
1772   beginService( " GEOM_Superv_i::TranslateDXDYDZ" );
1773   MESSAGE("GEOM_Superv_i::TranslateDXDYDZ");
1774   getTransfOp();
1775   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateDXDYDZ(theObject, theDX, theDY, theDZ);
1776   endService( " GEOM_Superv_i::TranslateDXDYDZ" );
1777   return anObj;
1778 }
1779
1780 //=============================================================================
1781 //  TranslateDXDYDZCopy:
1782 //=============================================================================
1783 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZCopy (GEOM::GEOM_Object_ptr theObject,
1784                                                           CORBA::Double theDX,
1785                                                           CORBA::Double theDY,
1786                                                           CORBA::Double theDZ)
1787 {
1788   beginService( " GEOM_Superv_i::TranslateDXDYDZCopy" );
1789   MESSAGE("GEOM_Superv_i::TranslateDXDYDZCopy");
1790   getTransfOp();
1791   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ);
1792   endService( " GEOM_Superv_i::TranslateDXDYDZCopy" );
1793   return anObj;
1794 }
1795
1796 //=============================================================================
1797 //  TranslateVector:
1798 //=============================================================================
1799 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVector (GEOM::GEOM_Object_ptr theObject,
1800                                                       GEOM::GEOM_Object_ptr theVector)
1801 {
1802   beginService( " GEOM_Superv_i::TranslateVector" );
1803   MESSAGE("GEOM_Superv_i::TranslateVector");
1804   getTransfOp();
1805   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVector(theObject, theVector);
1806   endService( " GEOM_Superv_i::TranslateVector" );
1807   return anObj;
1808 }
1809
1810 //=============================================================================
1811 //  TranslateVectorCopy:
1812 //=============================================================================
1813 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVectorCopy (GEOM::GEOM_Object_ptr theObject,
1814                                                           GEOM::GEOM_Object_ptr theVector)
1815 {
1816   beginService( " GEOM_Superv_i::TranslateVectorCopy" );
1817   MESSAGE("GEOM_Superv_i::TranslateVectorCopy");
1818   getTransfOp();
1819   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVectorCopy(theObject, theVector);
1820   endService( " GEOM_Superv_i::TranslateVectorCopy" );
1821   return anObj;
1822 }
1823
1824 //=============================================================================
1825 //  TranslateVectorDistance:
1826 //=============================================================================
1827 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVectorDistance (GEOM::GEOM_Object_ptr theObject,
1828                                                               GEOM::GEOM_Object_ptr theVector,
1829                                                               CORBA::Double theDistance,
1830                                                               CORBA::Boolean theCopy)
1831 {
1832   beginService( " GEOM_Superv_i::TranslateVectorDistance" );
1833   MESSAGE("GEOM_Superv_i::TranslateVectorDistance");
1834   getTransfOp();
1835   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVectorDistance(theObject,
1836                                                                     theVector, theDistance, theCopy);
1837   endService( " GEOM_Superv_i::TranslateVectorDistance" );
1838   return anObj;
1839 }
1840
1841 //=============================================================================
1842 //  MultiTranslate1D:
1843 //=============================================================================
1844 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiTranslate1D (GEOM::GEOM_Object_ptr theObject,
1845                                                        GEOM::GEOM_Object_ptr theVector,
1846                                                        CORBA::Double theStep,
1847                                                        CORBA::Long theNbTimes)
1848 {
1849   beginService( " GEOM_Superv_i::MultiTranslate1D" );
1850   MESSAGE("GEOM_Superv_i::MultiTranslate1D");
1851   getTransfOp();
1852   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiTranslate1D(theObject, theVector, theStep, theNbTimes);
1853   endService( " GEOM_Superv_i::MultiTranslate1D" );
1854   return anObj;
1855 }
1856
1857 //=============================================================================
1858 //  MultiTranslate2D:
1859 //=============================================================================
1860 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiTranslate2D (GEOM::GEOM_Object_ptr theObject,
1861                                                        GEOM::GEOM_Object_ptr theVector1,
1862                                                        CORBA::Double theStep1,
1863                                                        CORBA::Long theNbTimes1,
1864                                                        GEOM::GEOM_Object_ptr theVector2,
1865                                                        CORBA::Double theStep2,
1866                                                        CORBA::Long theNbTimes2)
1867 {
1868   beginService( " GEOM_Superv_i::MultiTranslate2D" );
1869   MESSAGE("GEOM_Superv_i::MultiTranslate2D");
1870   getTransfOp();
1871   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiTranslate2D(theObject, theVector1, theStep1, theNbTimes1,
1872                                                              theVector2, theStep2, theNbTimes2);
1873   endService( " GEOM_Superv_i::MultiTranslate2D" );
1874   return anObj;
1875 }
1876
1877 //=============================================================================
1878 //  Rotate:
1879 //=============================================================================
1880 GEOM::GEOM_Object_ptr GEOM_Superv_i::Rotate (GEOM::GEOM_Object_ptr theObject,
1881                                              GEOM::GEOM_Object_ptr theAxis,
1882                                              CORBA::Double theAngle)
1883 {
1884   beginService( " GEOM_Superv_i::Rotate" );
1885   MESSAGE("GEOM_Superv_i::Rotate");
1886   getTransfOp();
1887   GEOM::GEOM_Object_ptr anObj = myTransfOp->Rotate(theObject, theAxis, theAngle);
1888   endService( " GEOM_Superv_i::Rotate" );
1889   return anObj;
1890 }
1891
1892 //=============================================================================
1893 //  RotateCopy:
1894 //=============================================================================
1895 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateCopy (GEOM::GEOM_Object_ptr theObject,
1896                                                  GEOM::GEOM_Object_ptr theAxis,
1897                                                  CORBA::Double theAngle)
1898 {
1899   beginService( " GEOM_Superv_i::RotateCopy" );
1900   MESSAGE("GEOM_Superv_i::RotateCopy");
1901   getTransfOp();
1902   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateCopy(theObject, theAxis, theAngle);
1903   endService( " GEOM_Superv_i::RotateCopy" );
1904   return anObj;
1905 }
1906 //=============================================================================
1907 //  RotateThreePoints:
1908 //=============================================================================
1909 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateThreePoints (GEOM::GEOM_Object_ptr theObject,
1910                                                         GEOM::GEOM_Object_ptr theCentPoint,
1911                                                         GEOM::GEOM_Object_ptr thePoint1,
1912                                                         GEOM::GEOM_Object_ptr thePoint2)
1913 {
1914   beginService( " GEOM_Superv_i::RotateThreePoints" );
1915   MESSAGE("GEOM_Superv_i::RotateThreePoints");
1916   getTransfOp();
1917   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateThreePoints(theObject, theCentPoint, thePoint1, thePoint2);
1918   endService( " GEOM_Superv_i::RotateThreePoints" );
1919   return anObj;
1920 }
1921
1922 //=============================================================================
1923 //  RotateThreePointsCopy:
1924 //=============================================================================
1925 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateThreePointsCopy (GEOM::GEOM_Object_ptr theObject,
1926                                                             GEOM::GEOM_Object_ptr theCentPoint,
1927                                                             GEOM::GEOM_Object_ptr thePoint1,
1928                                                             GEOM::GEOM_Object_ptr thePoint2)
1929 {
1930   beginService( " GEOM_Superv_i::RotateThreePointsCopy" );
1931   MESSAGE("GEOM_Superv_i::RotateThreePointsCopy");
1932   getTransfOp();
1933   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2);
1934   endService( " GEOM_Superv_i::RotateThreePointsCopy" );
1935   return anObj;
1936 }
1937
1938 //=============================================================================
1939 //  MultiRotate1D:
1940 //=============================================================================
1941 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate1D (GEOM::GEOM_Object_ptr theObject,
1942                                                     GEOM::GEOM_Object_ptr theAxis,
1943                                                     CORBA::Long theNbTimes)
1944 {
1945   beginService( " GEOM_Superv_i::MultiRotate1D" );
1946   MESSAGE("GEOM_Superv_i::MultiRotate1D");
1947   getTransfOp();
1948   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiRotate1D(theObject, theAxis, theNbTimes);
1949   endService( " GEOM_Superv_i::MultiRotate1D" );
1950   return anObj;
1951 }
1952
1953 //=============================================================================
1954 //  MultiRotate2D:
1955 //=============================================================================
1956 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate2D (GEOM::GEOM_Object_ptr theObject,
1957                                                     GEOM::GEOM_Object_ptr theAxis,
1958                                                     CORBA::Double theAngle,
1959                                                     CORBA::Long theNbTimes1,
1960                                                     CORBA::Double theStep,
1961                                                     CORBA::Long theNbTimes2)
1962 {
1963   beginService( " GEOM_Superv_i::MultiRotate2D" );
1964   MESSAGE("GEOM_Superv_i::MultiRotate2D");
1965   getTransfOp();
1966   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2);
1967   endService( " GEOM_Superv_i::MultiRotate2D" );
1968   return anObj;
1969 }
1970
1971 //=============================================================================
1972 //  MirrorPlane:
1973 //=============================================================================
1974 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlane (GEOM::GEOM_Object_ptr theObject,
1975                                                   GEOM::GEOM_Object_ptr thePlane)
1976 {
1977   beginService( " GEOM_Superv_i::MirrorPlane" );
1978   MESSAGE("GEOM_Superv_i::MirrorPlane");
1979   getTransfOp();
1980   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPlane(theObject, thePlane);
1981   endService( " GEOM_Superv_i::MirrorPlane" );
1982   return anObj;
1983 }
1984
1985 //=============================================================================
1986 //  MirrorPlaneCopy:
1987 //=============================================================================
1988 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlaneCopy (GEOM::GEOM_Object_ptr theObject,
1989                                                       GEOM::GEOM_Object_ptr thePlane)
1990 {
1991   beginService( " GEOM_Superv_i::MirrorPlaneCopy" );
1992   MESSAGE("GEOM_Superv_i::MirrorPlaneCopy");
1993   getTransfOp();
1994   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPlaneCopy(theObject, thePlane);
1995   endService( " GEOM_Superv_i::MirrorPlaneCopy" );
1996   return anObj;
1997 }
1998
1999 //=============================================================================
2000 //  MirrorAxis:
2001 //=============================================================================
2002 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxis (GEOM::GEOM_Object_ptr theObject,
2003                                                  GEOM::GEOM_Object_ptr theAxis)
2004 {
2005   beginService( " GEOM_Superv_i::MirrorAxis" );
2006   MESSAGE("GEOM_Superv_i::MirrorAxis");
2007   getTransfOp();
2008   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorAxis(theObject, theAxis);
2009   endService( " GEOM_Superv_i::MirrorAxis" );
2010   return anObj;
2011 }
2012
2013 //=============================================================================
2014 //  MirrorAxisCopy:
2015 //=============================================================================
2016 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxisCopy (GEOM::GEOM_Object_ptr theObject,
2017                                                      GEOM::GEOM_Object_ptr theAxis)
2018 {
2019   beginService( " GEOM_Superv_i::MirrorAxisCopy" );
2020   MESSAGE("GEOM_Superv_i::MirrorAxisCopy");
2021   getTransfOp();
2022   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorAxisCopy(theObject, theAxis);
2023   endService( " GEOM_Superv_i::MirrorAxisCopy" );
2024   return anObj;
2025 }
2026
2027 //=============================================================================
2028 //  MirrorPoint:
2029 //=============================================================================
2030 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPoint (GEOM::GEOM_Object_ptr theObject,
2031                                                   GEOM::GEOM_Object_ptr thePoint)
2032 {
2033   beginService( " GEOM_Superv_i::MirrorPoint" );
2034   MESSAGE("GEOM_Superv_i::MirrorPoint");
2035   getTransfOp();
2036   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPoint(theObject, thePoint);
2037   endService( " GEOM_Superv_i::MirrorPoint" );
2038   return anObj;
2039 }
2040
2041 //=============================================================================
2042 //  MirrorPointCopy:
2043 //=============================================================================
2044 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPointCopy (GEOM::GEOM_Object_ptr theObject,
2045                                                       GEOM::GEOM_Object_ptr thePoint)
2046 {
2047   beginService( " GEOM_Superv_i::MirrorPoint" );
2048   MESSAGE("GEOM_Superv_i::MirrorPointCopy");
2049   getTransfOp();
2050   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPointCopy(theObject, thePoint);
2051   endService( " GEOM_Superv_i::MirrorPoint" );
2052   return anObj;
2053 }
2054
2055 //=============================================================================
2056 //  OffsetShape:
2057 //=============================================================================
2058 GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShape (GEOM::GEOM_Object_ptr theObject,
2059                                                   CORBA::Double theOffset)
2060 {
2061   beginService( " GEOM_Superv_i::OffsetShape" );
2062   MESSAGE("GEOM_Superv_i::OffsetShape");
2063   getTransfOp();
2064   GEOM::GEOM_Object_ptr anObj = myTransfOp->OffsetShape(theObject, theOffset);
2065   endService( " GEOM_Superv_i::OffsetShape" );
2066   return anObj;
2067 }
2068
2069 //=============================================================================
2070 //  OffsetShapeCopy:
2071 //=============================================================================
2072 GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShapeCopy (GEOM::GEOM_Object_ptr theObject,
2073                                                       CORBA::Double theOffset)
2074 {
2075   beginService( " GEOM_Superv_i::OffsetShapeCopy" );
2076   MESSAGE("GEOM_Superv_i::OffsetShapeCopy");
2077   getTransfOp();
2078   GEOM::GEOM_Object_ptr anObj = myTransfOp->OffsetShapeCopy(theObject, theOffset);
2079   endService( " GEOM_Superv_i::OffsetShapeCopy" );
2080   return anObj;
2081 }
2082
2083 //=============================================================================
2084 //  ScaleShape:
2085 //=============================================================================
2086 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShape (GEOM::GEOM_Object_ptr theObject,
2087                                                  GEOM::GEOM_Object_ptr thePoint,
2088                                                  CORBA::Double theFactor)
2089 {
2090   beginService( " GEOM_Superv_i::ScaleShape" );
2091   MESSAGE("GEOM_Superv_i::ScaleShape");
2092   getTransfOp();
2093   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShape(theObject, thePoint, theFactor);
2094   endService( " GEOM_Superv_i::ScaleShape" );
2095   return anObj;
2096 }
2097
2098 //=============================================================================
2099 //  ScaleShapeCopy:
2100 //=============================================================================
2101 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeCopy (GEOM::GEOM_Object_ptr theObject,
2102                                                      GEOM::GEOM_Object_ptr thePoint,
2103                                                      CORBA::Double theFactor)
2104 {
2105   beginService( " GEOM_Superv_i::ScaleShapeCopy" );
2106   MESSAGE("GEOM_Superv_i::ScaleShapeCopy");
2107   getTransfOp();
2108   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeCopy(theObject, thePoint, theFactor);
2109   endService( " GEOM_Superv_i::ScaleShapeCopy" );
2110   return anObj;
2111 }
2112
2113 //=============================================================================
2114 //  ScaleShapeAlongAxes:
2115 //=============================================================================
2116 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeAlongAxes (GEOM::GEOM_Object_ptr theObject,
2117                                                           GEOM::GEOM_Object_ptr thePoint,
2118                                                           CORBA::Double theFactorX,
2119                                                           CORBA::Double theFactorY,
2120                                                           CORBA::Double theFactorZ)
2121 {
2122   beginService( " GEOM_Superv_i::ScaleShapeAlongAxes" );
2123   MESSAGE("GEOM_Superv_i::ScaleShapeAlongAxes");
2124   getTransfOp();
2125   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeAlongAxes
2126     (theObject, thePoint, theFactorX, theFactorY, theFactorZ);
2127   endService( " GEOM_Superv_i::ScaleShapeAlongAxes" );
2128   return anObj;
2129 }
2130
2131 //=============================================================================
2132 //  ScaleShapeAlongAxesCopy:
2133 //=============================================================================
2134 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeAlongAxesCopy (GEOM::GEOM_Object_ptr theObject,
2135                                                               GEOM::GEOM_Object_ptr thePoint,
2136                                                               CORBA::Double theFactorX,
2137                                                               CORBA::Double theFactorY,
2138                                                               CORBA::Double theFactorZ)
2139 {
2140   beginService( " GEOM_Superv_i::ScaleShapeAlongAxesCopy" );
2141   MESSAGE("GEOM_Superv_i::ScaleShapeAlongAxesCopy");
2142   getTransfOp();
2143   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeAlongAxesCopy
2144     (theObject, thePoint, theFactorX, theFactorY, theFactorZ);
2145   endService( " GEOM_Superv_i::ScaleShapeAlongAxesCopy" );
2146   return anObj;
2147 }
2148
2149 //=============================================================================
2150 //  PositionShape:
2151 //=============================================================================
2152 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShape (GEOM::GEOM_Object_ptr theObject,
2153                                                     GEOM::GEOM_Object_ptr theStartLCS,
2154                                                     GEOM::GEOM_Object_ptr theEndLCS)
2155 {
2156   beginService( " GEOM_Superv_i::PositionShape" );
2157   MESSAGE("GEOM_Superv_i::PositionShape");
2158   getTransfOp();
2159   GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionShape(theObject, theStartLCS, theEndLCS);
2160   endService( " GEOM_Superv_i::PositionShape" );
2161   return anObj;
2162 }
2163
2164 //=============================================================================
2165 //  PositionShapeCopy:
2166 //=============================================================================
2167 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShapeCopy (GEOM::GEOM_Object_ptr theObject,
2168                                                         GEOM::GEOM_Object_ptr theStartLCS,
2169                                                         GEOM::GEOM_Object_ptr theEndLCS)
2170 {
2171   beginService( " GEOM_Superv_i::PositionShapeCopy" );
2172   MESSAGE("GEOM_Superv_i::PositionShapeCopy");
2173   getTransfOp();
2174   GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionShapeCopy(theObject, theStartLCS, theEndLCS);
2175   endService( " GEOM_Superv_i::PositionShapeCopy" );
2176   return anObj;
2177 }
2178
2179 //=============================================================================
2180 //  PositionAlongPath:
2181 //=============================================================================
2182 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionAlongPath (GEOM::GEOM_Object_ptr theObject,
2183                                                         GEOM::GEOM_Object_ptr thePath,
2184                                                         CORBA::Double         theDistance,
2185                                                         CORBA::Boolean        theCopy,
2186                                                         CORBA::Boolean        theReverse)
2187 {
2188   beginService( " GEOM_Superv_i::PositionAlongPath" );
2189   MESSAGE("GEOM_Superv_i::PositionAlongPath");
2190   getTransfOp();
2191   GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionAlongPath(theObject, thePath, theDistance, theCopy, theReverse);
2192   endService( " GEOM_Superv_i::PositionAlongPath" );
2193   return anObj;
2194 }
2195
2196 //=============================== ShapesOperations ============================
2197 //=============================================================================
2198 //  Make:
2199 //=============================================================================
2200 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEdge (GEOM::GEOM_Object_ptr thePnt1,
2201                                                GEOM::GEOM_Object_ptr thePnt2)
2202 {
2203   beginService( " GEOM_Superv_i::MakeEdge" );
2204   MESSAGE("GEOM_Superv_i::MakeEdge");
2205   getShapesOp();
2206   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeEdge(thePnt1, thePnt2);
2207   endService( " GEOM_Superv_i::MakeEdge" );
2208   return anObj;
2209 }
2210
2211 //=============================================================================
2212 //  MakeEdgeOnCurveByLength:
2213 //=============================================================================
2214 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEdgeOnCurveByLength (GEOM::GEOM_Object_ptr theRefCurve,
2215                                                               CORBA::Double theLength,
2216                                                               GEOM::GEOM_Object_ptr theStartPoint)
2217 {
2218   beginService( " GEOM_Superv_i::MakeEdgeOnCurveByLength" );
2219   MESSAGE("GEOM_Superv_i::MakeEdgeOnCurveByLength");
2220   getShapesOp();
2221   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeEdgeOnCurveByLength(theRefCurve, theLength, theStartPoint);
2222   endService( " GEOM_Superv_i::MakeEdgeOnCurveByLength" );
2223   return anObj;
2224 }
2225
2226 //=============================================================================
2227 //  MakeWire:
2228 //=============================================================================
2229 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeWire (GEOM::GEOM_List_ptr theEdgesAndWires,
2230                                                CORBA::Double       theTolerance)
2231 {
2232   beginService( " GEOM_Superv_i::MakeWire" );
2233   MESSAGE("GEOM_Superv_i::MakeWire");
2234   if (GEOM_List_i<GEOM::ListOfGO>* aListImplEW =
2235       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theEdgesAndWires, myPOA).in())) {
2236     getShapesOp();
2237     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeWire(aListImplEW->GetList(), theTolerance);
2238     endService( " GEOM_Superv_i::MakeWire" );
2239     return anObj;
2240   }
2241   endService( " GEOM_Superv_i::MakeWire" );
2242   return NULL;
2243 }
2244
2245 //=============================================================================
2246 //  MakeFace:
2247 //=============================================================================
2248 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFace (GEOM::GEOM_Object_ptr theWire,
2249                                                CORBA::Boolean isPlanarWanted)
2250 {
2251   beginService( " GEOM_Superv_i::MakeFace" );
2252   MESSAGE("GEOM_Superv_i::MakeFace");
2253   getShapesOp();
2254   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeFace(theWire, isPlanarWanted);
2255   endService( " GEOM_Superv_i::MakeFace" );
2256   return anObj;
2257 }
2258
2259 //=============================================================================
2260 //  MakeFaceWires:
2261 //=============================================================================
2262 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceWires (GEOM::GEOM_List_ptr theWires,
2263                                                     CORBA::Boolean isPlanarWanted)
2264 {
2265   beginService( " GEOM_Superv_i::MakeFaceWires" );
2266   MESSAGE("GEOM_Superv_i::MakeFaceWires");
2267   if (GEOM_List_i<GEOM::ListOfGO>* aListImplW =
2268       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theWires, myPOA).in())) {
2269     getShapesOp();
2270     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeFaceWires(aListImplW->GetList(), isPlanarWanted);
2271     endService( " GEOM_Superv_i::MakeFaceWires" );
2272     return anObj;
2273   }
2274   endService( " GEOM_Superv_i::MakeFaceWires" );
2275   return NULL;
2276 }
2277
2278 //=============================================================================
2279 //  MakeFaceWithConstraints:
2280 //=============================================================================
2281 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceWithConstraints (GEOM::GEOM_List_ptr theConstraints)
2282 {
2283   beginService( " GEOM_Superv_i::MakeFaceWithConstraints" );
2284   MESSAGE("GEOM_Superv_i::MakeFaceWithConstraints");
2285   if (GEOM_List_i<GEOM::ListOfGO>* aConstraints =
2286       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theConstraints, myPOA).in())) {
2287     getShapesOp();
2288     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeFaceWithConstraints(aConstraints->GetList());
2289     endService( " GEOM_Superv_i::MakeFaceWithConstraints" );
2290     return anObj;
2291   }
2292   endService( " GEOM_Superv_i::MakeFaceWithConstraints" );
2293   return NULL;
2294 }
2295
2296 //=============================================================================
2297 //  MakeShell:
2298 //=============================================================================
2299 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeShell (GEOM::GEOM_List_ptr theFacesAndShells)
2300 {
2301   beginService( " GEOM_Superv_i::MakeShell" );
2302   MESSAGE("GEOM_Superv_i::MakeShell");
2303   if (GEOM_List_i<GEOM::ListOfGO>* aListImplFS =
2304       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theFacesAndShells, myPOA).in())) {
2305     getShapesOp();
2306     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeShell(aListImplFS->GetList());
2307     endService( " GEOM_Superv_i::MakeShell" );
2308     return anObj;
2309   }
2310   endService( " GEOM_Superv_i::MakeShell" );
2311   return NULL;
2312 }
2313
2314 //=============================================================================
2315 //  MakeSolidShell:
2316 //=============================================================================
2317 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShell (GEOM::GEOM_Object_ptr theShell)
2318 {
2319   beginService( " GEOM_Superv_i::MakeSolidShell" );
2320   MESSAGE("GEOM_Superv_i::MakeSolidShell");
2321   getShapesOp();
2322   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeSolidShell(theShell);
2323   endService( " GEOM_Superv_i::MakeSolidShell" );
2324   return anObj;
2325 }
2326
2327 //=============================================================================
2328 //  MakeSolidShells:
2329 //=============================================================================
2330 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShells (GEOM::GEOM_List_ptr theShells)
2331 {
2332   beginService( " GEOM_Superv_i::MakeSolidShells" );
2333   MESSAGE("GEOM_Superv_i::MakeSolidShells");
2334   if (GEOM_List_i<GEOM::ListOfGO>* aListImplS =
2335       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShells, myPOA).in())) {
2336     getShapesOp();
2337     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeSolidShells(aListImplS->GetList());
2338     endService( " GEOM_Superv_i::MakeSolidShells" );
2339     return anObj;
2340   }
2341   endService( " GEOM_Superv_i::MakeSolidShells" );
2342   return NULL;
2343 }
2344
2345 //=============================================================================
2346 //  MakeCompound:
2347 //=============================================================================
2348 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCompound (GEOM::GEOM_List_ptr theShapes)
2349 {
2350   beginService( " GEOM_Superv_i::MakeCompound" );
2351   MESSAGE("GEOM_Superv_i::MakeCompound");
2352   if (GEOM_List_i<GEOM::ListOfGO>* aListImpl =
2353       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShapes, myPOA).in())) {
2354     getShapesOp();
2355     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeCompound(aListImpl->GetList());
2356     endService( " GEOM_Superv_i::MakeCompound" );
2357     return anObj;
2358   }
2359   endService( " GEOM_Superv_i::MakeCompound" );
2360   return NULL;
2361 }
2362
2363 //=============================================================================
2364 //  MakeSolidFromConnectedFaces:
2365 //=============================================================================
2366 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidFromConnectedFaces (GEOM::GEOM_List_ptr theFacesOrShells,
2367                                                                   CORBA::Boolean isIntersect)
2368 {
2369   beginService( " GEOM_Superv_i::MakeSolidFromConnectedFaces" );
2370   MESSAGE("GEOM_Superv_i::MakeSolidFromConnectedFaces");
2371   if (GEOM_List_i<GEOM::ListOfGO>* aListImpl =
2372       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theFacesOrShells, myPOA).in())) {
2373     getShapesOp();
2374     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeSolidFromConnectedFaces(aListImpl->GetList(), isIntersect);
2375     endService( " GEOM_Superv_i::MakeSolidFromConnectedFaces" );
2376     return anObj;
2377   }
2378   endService( " GEOM_Superv_i::MakeSolidFromConnectedFaces" );
2379   return NULL;
2380 }
2381
2382 //=============================================================================
2383 //  MakeGlueFaces:
2384 //=============================================================================
2385 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFaces (GEOM::GEOM_Object_ptr theShape,
2386                                                     CORBA::Double   theTolerance,
2387                                                     CORBA::Boolean doKeepNonSolids)
2388 {
2389   beginService( " GEOM_Superv_i::MakeGlueFaces" );
2390   MESSAGE("GEOM_Superv_i::MakeGlueFaces");
2391   getShapesOp();
2392   GEOM::ListOfGO_var objList = new GEOM::ListOfGO;
2393   objList->length( 1 );
2394   objList[0] = theShape;
2395   GEOM::GEOM_Object_ptr anObj =
2396     myShapesOp->MakeGlueFaces(objList, theTolerance, doKeepNonSolids);
2397   endService( " GEOM_Superv_i::MakeGlueFaces" );
2398   return anObj;
2399 }
2400
2401 //=============================================================================
2402 //  GetGlueFaces:
2403 //=============================================================================
2404 GEOM::GEOM_List_ptr GEOM_Superv_i::GetGlueFaces (GEOM::GEOM_Object_ptr theShape,
2405                                                  CORBA::Double theTolerance)
2406 {
2407   beginService( " GEOM_Superv_i::GetGlueFaces" );
2408   MESSAGE("GEOM_Superv_i::GetGlueFaces");
2409   getShapesOp();
2410   GEOM::ListOfGO_var objList = new GEOM::ListOfGO;
2411   objList->length( 1 );
2412   objList[0] = theShape;
2413   GEOM::ListOfGO* aList = myShapesOp->GetGlueFaces(objList, theTolerance);
2414   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
2415   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
2416   endService( " GEOM_Superv_i::GetGlueFaces" );
2417   return aListPtr->_this();
2418 }
2419
2420 //=============================================================================
2421 //  MakeGlueFacesByList:
2422 //=============================================================================
2423 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFacesByList (GEOM::GEOM_Object_ptr theShape,
2424                                                           CORBA::Double theTolerance,
2425                                                           const GEOM::ListOfGO& theFaces,
2426                                                           CORBA::Boolean doKeepNonSolids,
2427                                                           CORBA::Boolean doGlueAllEdges)
2428 {
2429   beginService( " GEOM_Superv_i::MakeGlueFacesByList" );
2430   MESSAGE("GEOM_Superv_i::MakeGlueFacesByList");
2431   getShapesOp();
2432   GEOM::ListOfGO_var objList = new GEOM::ListOfGO;
2433   objList->length( 1 );
2434   objList[0] = theShape;
2435   GEOM::GEOM_Object_ptr anObj =
2436     myShapesOp->MakeGlueFacesByList(objList, theTolerance, theFaces,
2437                                     doKeepNonSolids, doGlueAllEdges);
2438   endService( " GEOM_Superv_i::MakeGlueFacesByList" );
2439   return anObj;
2440 }
2441
2442 //=============================================================================
2443 //  MakeExplode:
2444 //=============================================================================
2445 GEOM::GEOM_List_ptr GEOM_Superv_i::MakeExplode (GEOM::GEOM_Object_ptr theShape,
2446                                                     CORBA::Long theShapeType,
2447                                                     CORBA::Boolean isSorted)
2448 {
2449   beginService( " GEOM_Superv_i::MakeExplode" );
2450   MESSAGE("GEOM_Superv_i::MakeExplode");
2451   getShapesOp();
2452
2453   GEOM::ListOfGO* aList = myShapesOp->MakeExplode(theShape, theShapeType, isSorted);
2454   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
2455   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
2456   endService( " GEOM_Superv_i::MakeExplode" );
2457   return aListPtr->_this();
2458 }
2459
2460 //=============================================================================
2461 //  NumberOfFaces:
2462 //=============================================================================
2463 CORBA::Long GEOM_Superv_i::NumberOfFaces (GEOM::GEOM_Object_ptr theShape)
2464 {
2465   beginService( " GEOM_Superv_i::NumberOfFaces" );
2466   MESSAGE("GEOM_Superv_i::NumberOfFaces");
2467   getShapesOp();
2468   CORBA::Long aRes = myShapesOp->NumberOfFaces(theShape);
2469   endService( " GEOM_Superv_i::NumberOfFaces" );
2470   return aRes;
2471 }
2472
2473 //=============================================================================
2474 //  NumberOfEdges:
2475 //=============================================================================
2476 CORBA::Long GEOM_Superv_i::NumberOfEdges (GEOM::GEOM_Object_ptr theShape)
2477 {
2478   beginService( " GEOM_Superv_i::NumberOfEdges" );
2479   MESSAGE("GEOM_Superv_i::NumberOfEdges");
2480   getShapesOp();
2481   CORBA::Long aRes = myShapesOp->NumberOfEdges(theShape);
2482   endService( " GEOM_Superv_i::NumberOfEdges" );
2483   return aRes;
2484 }
2485
2486
2487 //=============================================================================
2488 //  ChangeOrientation:
2489 //=============================================================================
2490 GEOM::GEOM_Object_ptr GEOM_Superv_i::ChangeOrientation (GEOM::GEOM_Object_ptr theShape)
2491 {
2492   beginService( " GEOM_Superv_i::ChangeOrientation" );
2493   MESSAGE("GEOM_Superv_i::ChangeOrientation");
2494   getShapesOp();
2495   GEOM::GEOM_Object_ptr anObj = myShapesOp->ChangeOrientation(theShape);
2496   endService( " GEOM_Superv_i::ChangeOrientation" );
2497   return anObj;
2498 }
2499
2500
2501 //=============================================================================
2502 //  GetShapesOnShape:
2503 //=============================================================================
2504 GEOM::GEOM_List_ptr GEOM_Superv_i::GetShapesOnShape
2505                                           (GEOM::GEOM_Object_ptr theCheckShape,
2506                                            GEOM::GEOM_Object_ptr theShape,
2507                                            CORBA::Short theShapeType,
2508                                            GEOM::shape_state theState)
2509 {
2510   beginService( " GEOM_Superv_i::GetShapesOnShape" );
2511   MESSAGE("GEOM_Superv_i::GetShapesOnShape");
2512   getShapesOp();
2513   GEOM::ListOfGO* aList =
2514     myShapesOp->GetShapesOnShape(theCheckShape, theShape, theShapeType, theState);
2515   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
2516   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
2517   endService( " GEOM_Superv_i::GetShapesOnShape" );
2518   return aListPtr->_this();
2519 }
2520
2521
2522 //=============================================================================
2523 //  GetShapesOnShapeAsCompound:
2524 //=============================================================================
2525 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetShapesOnShapeAsCompound
2526                                           (GEOM::GEOM_Object_ptr theCheckShape,
2527                                            GEOM::GEOM_Object_ptr theShape,
2528                                            CORBA::Short theShapeType,
2529                                            GEOM::shape_state theState)
2530 {
2531   beginService( " GEOM_Superv_i::GetShapesOnShapeAsCompound" );
2532   MESSAGE("GEOM_Superv_i::GetShapesOnShapeAsCompound");
2533   getShapesOp();
2534   GEOM::GEOM_Object_ptr anObj =
2535     myShapesOp->GetShapesOnShapeAsCompound(theCheckShape, theShape, theShapeType, theState);
2536   endService( " GEOM_Superv_i::GetShapesOnShapeAsCompound" );
2537   return anObj;
2538 }
2539
2540
2541 //=============================== BlocksOperations ============================
2542 //=============================================================================
2543 //  MakeQuad4Vertices:
2544 //=============================================================================
2545 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad4Vertices (GEOM::GEOM_Object_ptr thePnt1,
2546                                                         GEOM::GEOM_Object_ptr thePnt2,
2547                                                         GEOM::GEOM_Object_ptr thePnt3,
2548                                                         GEOM::GEOM_Object_ptr thePnt4)
2549 {
2550   beginService( " GEOM_Superv_i::MakeQuad4Vertices" );
2551   MESSAGE("GEOM_Superv_i::MakeQuad4Vertices");
2552   getBlocksOp();
2553   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad4Vertices(thePnt1, thePnt2, thePnt3, thePnt4);
2554   endService( " GEOM_Superv_i::MakeQuad4Vertices" );
2555   return anObj;
2556 }
2557
2558 //=============================================================================
2559 //  MakeQuad:
2560 //=============================================================================
2561 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad (GEOM::GEOM_Object_ptr theEdge1,
2562                                                GEOM::GEOM_Object_ptr theEdge2,
2563                                                GEOM::GEOM_Object_ptr theEdge3,
2564                                                GEOM::GEOM_Object_ptr theEdge4)
2565 {
2566   beginService( " GEOM_Superv_i::MakeQuad" );
2567   MESSAGE("GEOM_Superv_i::MakeQuad");
2568   getBlocksOp();
2569   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad(theEdge1, theEdge2, theEdge3, theEdge4);
2570   endService( " GEOM_Superv_i::MakeQuad" );
2571   return anObj;
2572 }
2573
2574 //=============================================================================
2575 //  MakeQuad2Edges:
2576 //=============================================================================
2577 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad2Edges (GEOM::GEOM_Object_ptr theEdge1,
2578                                                      GEOM::GEOM_Object_ptr theEdge2)
2579 {
2580   beginService( " GEOM_Superv_i::MakeQuad2Edges" );
2581   MESSAGE("GEOM_Superv_i::MakeQuad2Edges");
2582   getBlocksOp();
2583   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad2Edges(theEdge1, theEdge2);
2584   endService( " GEOM_Superv_i::MakeQuad2Edges" );
2585   return anObj;
2586 }
2587
2588 //=============================================================================
2589 //  MakeHexa:
2590 //=============================================================================
2591 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa (GEOM::GEOM_Object_ptr theFace1,
2592                                                GEOM::GEOM_Object_ptr theFace2,
2593                                                GEOM::GEOM_Object_ptr theFace3,
2594                                                GEOM::GEOM_Object_ptr theFace4,
2595                                                GEOM::GEOM_Object_ptr theFace5,
2596                                                GEOM::GEOM_Object_ptr theFace6)
2597 {
2598   beginService( " GEOM_Superv_i::MakeHexa" );
2599   MESSAGE("GEOM_Superv_i::MakeHexa");
2600   getBlocksOp();
2601   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeHexa(theFace1, theFace2, theFace3, theFace4, theFace5, theFace6);
2602   endService( " GEOM_Superv_i::MakeHexa" );
2603   return anObj;
2604 }
2605
2606 //=============================================================================
2607 //  MakeHexa2Faces:
2608 //=============================================================================
2609 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa2Faces (GEOM::GEOM_Object_ptr theFace1,
2610                                                      GEOM::GEOM_Object_ptr theFace2)
2611 {
2612   beginService( " GEOM_Superv_i::MakeHexa2Faces" );
2613   MESSAGE("GEOM_Superv_i::MakeHexa2Faces");
2614   getBlocksOp();
2615   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeHexa2Faces(theFace1, theFace2);
2616   endService( " GEOM_Superv_i::MakeHexa2Faces" );
2617   return anObj;
2618 }
2619
2620 //=============================================================================
2621 //  GetPoint:
2622 //=============================================================================
2623 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetPoint (GEOM::GEOM_Object_ptr theShape,
2624                                                CORBA::Double   theX,
2625                                                CORBA::Double   theY,
2626                                                CORBA::Double   theZ,
2627                                                CORBA::Double   theEpsilon)
2628 {
2629   beginService( " GEOM_Superv_i::GetPoint" );
2630   MESSAGE("GEOM_Superv_i::GetPoint");
2631   getBlocksOp();
2632   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetPoint(theShape, theX, theY, theZ, theEpsilon);
2633   endService( " GEOM_Superv_i::GetPoint" );
2634   return anObj;
2635 }
2636
2637 //=============================================================================
2638 //  GetEdge:
2639 //=============================================================================
2640 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdge (GEOM::GEOM_Object_ptr theShape,
2641                                               GEOM::GEOM_Object_ptr thePoint1,
2642                                               GEOM::GEOM_Object_ptr thePoint2)
2643 {
2644   beginService( " GEOM_Superv_i::GetEdge" );
2645   MESSAGE("GEOM_Superv_i::GetEdge");
2646   getBlocksOp();
2647   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetEdge(theShape, thePoint1, thePoint2);
2648   endService( " GEOM_Superv_i::GetEdge" );
2649   return anObj;
2650 }
2651
2652 //=============================================================================
2653 //  GetEdgeNearPoint:
2654 //=============================================================================
2655 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdgeNearPoint (GEOM::GEOM_Object_ptr theShape,
2656                                                        GEOM::GEOM_Object_ptr thePoint)
2657 {
2658   beginService( " GEOM_Superv_i::GetEdgeNearPoint" );
2659   MESSAGE("GEOM_Superv_i::GetEdgeNearPoint");
2660   getBlocksOp();
2661   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetEdgeNearPoint(theShape, thePoint);
2662   endService( " GEOM_Superv_i::GetEdgeNearPoint" );
2663   return anObj;
2664 }
2665
2666 //=============================================================================
2667 //  GetFaceByPoints:
2668 //=============================================================================
2669 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByPoints (GEOM::GEOM_Object_ptr theShape,
2670                                                       GEOM::GEOM_Object_ptr thePoint1,
2671                                                       GEOM::GEOM_Object_ptr thePoint2,
2672                                                       GEOM::GEOM_Object_ptr thePoint3,
2673                                                       GEOM::GEOM_Object_ptr thePoint4)
2674 {
2675   beginService( " GEOM_Superv_i::GetFaceByPoints" );
2676   MESSAGE("GEOM_Superv_i::GetFaceByPoints");
2677   getBlocksOp();
2678   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4);
2679   endService( " GEOM_Superv_i::GetFaceByPoints" );
2680   return anObj;
2681 }
2682
2683 //=============================================================================
2684 //  GetFaceByEdges:
2685 //=============================================================================
2686 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByEdges (GEOM::GEOM_Object_ptr theShape,
2687                                                      GEOM::GEOM_Object_ptr theEdge1,
2688                                                      GEOM::GEOM_Object_ptr theEdge2)
2689 {
2690   beginService( " GEOM_Superv_i::GetFaceByEdges" );
2691   MESSAGE("GEOM_Superv_i::GetFaceByEdges");
2692   getBlocksOp();
2693   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByEdges(theShape, theEdge1, theEdge2);
2694   endService( " GEOM_Superv_i::GetFaceByEdges" );
2695   return anObj;
2696 }
2697
2698 //=============================================================================
2699 //  GetOppositeFace:
2700 //=============================================================================
2701 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetOppositeFace (GEOM::GEOM_Object_ptr theBlock,
2702                                                       GEOM::GEOM_Object_ptr theFace)
2703 {
2704   beginService( " GEOM_Superv_i::GetOppositeFace" );
2705   MESSAGE("GEOM_Superv_i::GetOppositeFace");
2706   getBlocksOp();
2707   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetOppositeFace(theBlock, theFace);
2708   endService( " GEOM_Superv_i::GetOppositeFace" );
2709   return anObj;
2710 }
2711
2712 //=============================================================================
2713 //  GetFaceNearPoint:
2714 //=============================================================================
2715 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceNearPoint (GEOM::GEOM_Object_ptr theShape,
2716                                                        GEOM::GEOM_Object_ptr thePoint)
2717 {
2718   beginService( " GEOM_Superv_i::GetFaceNearPoint" );
2719   MESSAGE("GEOM_Superv_i::GetFaceNearPoint");
2720   getBlocksOp();
2721   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceNearPoint(theShape, thePoint);
2722   endService( " GEOM_Superv_i::GetFaceNearPoint" );
2723   return anObj;
2724 }
2725
2726 //=============================================================================
2727 //  GetFaceByNormale:
2728 //=============================================================================
2729 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByNormale (GEOM::GEOM_Object_ptr theBlock,
2730                                                        GEOM::GEOM_Object_ptr theVector)
2731 {
2732   beginService( " GEOM_Superv_i::GetFaceByNormale" );
2733   MESSAGE("GEOM_Superv_i::GetFaceByNormale");
2734   getBlocksOp();
2735   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByNormale(theBlock, theVector);
2736   endService( " GEOM_Superv_i::GetFaceByNormale" );
2737   return anObj;
2738 }
2739
2740 //=============================================================================
2741 //  IsCompoundOfBlocks:
2742 //=============================================================================
2743 CORBA::Boolean GEOM_Superv_i::IsCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
2744                                                   CORBA::Long     theMinNbFaces,
2745                                                   CORBA::Long     theMaxNbFaces,
2746                                                   CORBA::Long&          theNbBlocks)
2747 {
2748   beginService( " GEOM_Superv_i::IsCompoundOfBlocks" );
2749   MESSAGE("GEOM_Superv_i::IsCompoundOfBlocks");
2750   getBlocksOp();
2751   CORBA::Boolean aRes = myBlocksOp->IsCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces, theNbBlocks);
2752   endService( " GEOM_Superv_i::IsCompoundOfBlocks" );
2753   return aRes;
2754 }
2755
2756 //=============================================================================
2757 //  CheckCompoundOfBlocks:
2758 //=============================================================================
2759 CORBA::Boolean GEOM_Superv_i::CheckCompoundOfBlocks
2760 (GEOM::GEOM_Object_ptr theCompound,
2761  GEOM::GEOM_IBlocksOperations::BCErrors_out theErrors)
2762 {
2763   beginService( " GEOM_Superv_i::CheckCompoundOfBlocks" );
2764   MESSAGE("GEOM_Superv_i::CheckCompoundOfBlocks");
2765   getBlocksOp();
2766   CORBA::Boolean aRes = myBlocksOp->CheckCompoundOfBlocks(theCompound, -1., theErrors);
2767   endService( " GEOM_Superv_i::CheckCompoundOfBlocks" );
2768   return aRes;
2769 }
2770
2771 //=============================================================================
2772 //  PrintBCErrors:
2773 //=============================================================================
2774 char* GEOM_Superv_i::PrintBCErrors (GEOM::GEOM_Object_ptr theCompound,
2775                                     const GEOM::GEOM_IBlocksOperations::BCErrors& theErrors)
2776 {
2777   beginService( " GEOM_Superv_i::PrintBCErrors" );
2778   MESSAGE("GEOM_Superv_i::PrintBCErrors");
2779   getBlocksOp();
2780   char* anErrors = myBlocksOp->PrintBCErrors(theCompound, theErrors);
2781   endService( " GEOM_Superv_i::PrintBCErrors" );
2782   return anErrors;
2783 }
2784
2785 //=============================================================================
2786 //  ExplodeCompoundOfBlocks:
2787 //=============================================================================
2788 GEOM::GEOM_List_ptr GEOM_Superv_i::ExplodeCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
2789                                                                 CORBA::Long     theMinNbFaces,
2790                                                                 CORBA::Long     theMaxNbFaces)
2791 {
2792   beginService( " GEOM_Superv_i::ExplodeCompoundOfBlocks" );
2793   MESSAGE("GEOM_Superv_i::ExplodeCompoundOfBlocks");
2794   getBlocksOp();
2795   GEOM::ListOfGO* aBlocks = myBlocksOp->ExplodeCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces);
2796   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aBlocks));
2797   endService( " GEOM_Superv_i::ExplodeCompoundOfBlocks" );
2798   return aListPtr->_this();
2799 }
2800
2801 //=============================================================================
2802 //  GetBlockNearPoint:
2803 //=============================================================================
2804 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockNearPoint (GEOM::GEOM_Object_ptr theCompound,
2805                                                         GEOM::GEOM_Object_ptr thePoint)
2806 {
2807   beginService( " GEOM_Superv_i::GetBlockNearPoint" );
2808   MESSAGE("GEOM_Superv_i::GetBlockNearPoint");
2809   getBlocksOp();
2810   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetBlockNearPoint(theCompound, thePoint);
2811   endService( " GEOM_Superv_i::GetBlockNearPoint" );
2812   return anObj;
2813 }
2814
2815 //=============================================================================
2816 //  GetBlockByParts:
2817 //=============================================================================
2818 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockByParts (GEOM::GEOM_Object_ptr theCompound,
2819                                                       GEOM::GEOM_List_ptr theParts)
2820 {
2821   beginService( " GEOM_Superv_i::GetBlockByParts" );
2822   MESSAGE("GEOM_Superv_i::GetBlockByParts");
2823   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
2824       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theParts, myPOA).in())) {
2825     getBlocksOp();
2826     GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetBlockByParts(theCompound, aListImplP->GetList());
2827     endService( " GEOM_Superv_i::GetBlockByParts" );
2828     return anObj;
2829   }
2830   endService( " GEOM_Superv_i::GetBlockByParts" );
2831   return NULL;
2832 }
2833
2834 //=============================================================================
2835 //  GetBlocksByParts:
2836 //=============================================================================
2837 GEOM::GEOM_List_ptr GEOM_Superv_i::GetBlocksByParts (GEOM::GEOM_Object_ptr theCompound,
2838                                                          GEOM::GEOM_List_ptr theParts)
2839 {
2840   beginService( " GEOM_Superv_i::GetBlocksByParts" );
2841   MESSAGE("GEOM_Superv_i::GetBlocksByParts");
2842   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
2843       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theParts, myPOA).in())) {
2844     getBlocksOp();
2845
2846     GEOM::ListOfGO* aBlocks = myBlocksOp->GetBlocksByParts(theCompound, aListImplP->GetList());
2847     GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aBlocks));
2848     endService( " GEOM_Superv_i::GetBlocksByParts" );
2849     return aListPtr->_this();
2850   }
2851   endService( " GEOM_Superv_i::GetBlocksByParts" );
2852   return NULL;
2853 }
2854
2855 //=============================================================================
2856 //  MakeMultiTransformation1D:
2857 //=============================================================================
2858 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMultiTransformation1D (GEOM::GEOM_Object_ptr theBlock,
2859                                                                 CORBA::Long     theDirFace1,
2860                                                                 CORBA::Long     theDirFace2,
2861                                                                 CORBA::Long     theNbTimes)
2862 {
2863   beginService( " GEOM_Superv_i::MakeMultiTransformation1D" );
2864   MESSAGE("GEOM_Superv_i::MakeMultiTransformation1D");
2865   getBlocksOp();
2866   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeMultiTransformation1D(theBlock, theDirFace1, theDirFace2, theNbTimes);
2867   endService( " GEOM_Superv_i::MakeMultiTransformation1D" );
2868   return anObj;
2869 }
2870
2871 //=============================================================================
2872 //  MakeMultiTransformation2D:
2873 //=============================================================================
2874 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMultiTransformation2D
2875 (GEOM::GEOM_Object_ptr theBlock,
2876  CORBA::Long     theDirFace1U,
2877  CORBA::Long     theDirFace2U,
2878  CORBA::Long     theNbTimesU,
2879  CORBA::Long     theDirFace1V,
2880  CORBA::Long     theDirFace2V,
2881  CORBA::Long     theNbTimesV)
2882 {
2883   beginService( " GEOM_Superv_i::MakeMultiTransformation2D" );
2884   MESSAGE("GEOM_Superv_i::MakeMultiTransformation2D");
2885   getBlocksOp();
2886   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeMultiTransformation2D(theBlock,
2887                                                                       theDirFace1U, theDirFace2U, theNbTimesU,
2888                                                                       theDirFace1V, theDirFace2V, theNbTimesV);
2889   endService( " GEOM_Superv_i::MakeMultiTransformation2D" );
2890   return anObj;
2891 }
2892
2893 //=============================== CurvesOperations ============================
2894 //=============================================================================
2895 //  MakeCirclePntVecR:
2896 //=============================================================================
2897 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCirclePntVecR (GEOM::GEOM_Object_ptr theCenter,
2898                                                         GEOM::GEOM_Object_ptr theVector,
2899                                                         CORBA::Double theR)
2900 {
2901   beginService( " GEOM_Superv_i::MakeCirclePntVecR" );
2902   MESSAGE("GEOM_Superv_i::MakeCirclePntVecR");
2903   getCurvesOp();
2904   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCirclePntVecR(theCenter, theVector, theR);
2905   endService( " GEOM_Superv_i::MakeCirclePntVecR" );
2906   return anObj;
2907 }
2908
2909 //=============================================================================
2910 //  MakeCircleThreePnt:
2911 //=============================================================================
2912 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCircleThreePnt (GEOM::GEOM_Object_ptr thePnt1,
2913                                                          GEOM::GEOM_Object_ptr thePnt2,
2914                                                          GEOM::GEOM_Object_ptr thePnt3)
2915 {
2916   beginService( " GEOM_Superv_i::MakeCircleThreePnt" );
2917   MESSAGE("GEOM_Superv_i::MakeCircleThreePnt");
2918   getCurvesOp();
2919   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCircleThreePnt(thePnt1, thePnt2, thePnt3);
2920   endService( " GEOM_Superv_i::MakeCircleThreePnt" );
2921   return anObj;
2922 }
2923 //=============================================================================
2924 //  MakeCircleCenter2Pnt:
2925 //=============================================================================
2926 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCircleCenter2Pnt (GEOM::GEOM_Object_ptr thePnt1,
2927                                                              GEOM::GEOM_Object_ptr thePnt2,
2928                                                            GEOM::GEOM_Object_ptr thePnt3)
2929 {
2930   beginService( " GEOM_Superv_i::MakeCircleCenter2Pnt" );
2931   MESSAGE("GEOM_Superv_i::MakeCircleCenter2Pnt");
2932   getCurvesOp();
2933   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCircleCenter2Pnt(thePnt1, thePnt2, thePnt3);
2934   endService( " GEOM_Superv_i::MakeCircleCenter2Pnt" );
2935   return anObj;
2936 }
2937
2938 //=============================================================================
2939 //  MakeEllipse:
2940 //=============================================================================
2941 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEllipse (GEOM::GEOM_Object_ptr theCenter,
2942                                                   GEOM::GEOM_Object_ptr theVector,
2943                                                   CORBA::Double theRMajor,
2944                                                   CORBA::Double theRMinor)
2945 {
2946   beginService( " GEOM_Superv_i::MakeEllipse" );
2947   MESSAGE("GEOM_Superv_i::MakeEllipse");
2948   getCurvesOp();
2949   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeEllipse(theCenter, theVector, theRMajor, theRMinor);
2950   endService( " GEOM_Superv_i::MakeEllipse" );
2951   return anObj;
2952 }
2953
2954 //=============================================================================
2955 //  MakeEllipseVec:
2956 //=============================================================================
2957 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEllipseVec (GEOM::GEOM_Object_ptr theCenter,
2958                                                      GEOM::GEOM_Object_ptr theVector,
2959                                                      CORBA::Double theRMajor,
2960                                                      CORBA::Double theRMinor,
2961                                                      GEOM::GEOM_Object_ptr theVectorMajor)
2962 {
2963   beginService( " GEOM_Superv_i::MakeEllipseVec" );
2964   MESSAGE("GEOM_Superv_i::MakeEllipseVec");
2965   getCurvesOp();
2966   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeEllipseVec(theCenter, theVector, theRMajor, theRMinor, theVectorMajor);
2967   endService( " GEOM_Superv_i::MakeEllipseVec" );
2968   return anObj;
2969 }
2970
2971 //=============================================================================
2972 //  MakeArc:
2973 //=============================================================================
2974 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArc (GEOM::GEOM_Object_ptr thePnt1,
2975                                               GEOM::GEOM_Object_ptr thePnt2,
2976                                               GEOM::GEOM_Object_ptr thePnt3)
2977 {
2978   beginService( " GEOM_Superv_i::MakeArc" );
2979   MESSAGE("GEOM_Superv_i::MakeArc");
2980   getCurvesOp();
2981   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArc(thePnt1, thePnt2, thePnt3);
2982   endService( " GEOM_Superv_i::MakeArc" );
2983   return anObj;
2984 }
2985
2986 //=============================================================================
2987 //  MakeArcCenter:
2988 //=============================================================================
2989 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArcCenter (GEOM::GEOM_Object_ptr theCenter,
2990                                                     GEOM::GEOM_Object_ptr thePnt1,
2991                                                     GEOM::GEOM_Object_ptr thePnt2,
2992                                                     CORBA::Boolean theSense)
2993 {
2994   beginService( " GEOM_Superv_i::MakeArcCenter" );
2995   MESSAGE("GEOM_Superv_i::MakeArcCenter");
2996   getCurvesOp();
2997   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArcCenter(theCenter, thePnt1, thePnt2,theSense);
2998   endService( " GEOM_Superv_i::MakeArcCenter" );
2999   return anObj;
3000 }
3001
3002 //=============================================================================
3003 //  MakeArcOfEllipse:
3004 //=============================================================================
3005 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArcOfEllipse (GEOM::GEOM_Object_ptr thePnt1,
3006                                                        GEOM::GEOM_Object_ptr thePnt2,
3007                                                        GEOM::GEOM_Object_ptr thePnt3)
3008 {
3009   beginService( " GEOM_Superv_i::MakeArcOfEllipse" );
3010   MESSAGE("GEOM_Superv_i::MakeArcOfEllipse");
3011   getCurvesOp();
3012   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArcOfEllipse(thePnt1, thePnt2, thePnt3);
3013   endService( " GEOM_Superv_i::MakeArcOfEllipse" );
3014   return anObj;
3015 }
3016
3017 //=============================================================================
3018 //  MakePolyline:
3019 //=============================================================================
3020 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePolyline (GEOM::GEOM_List_ptr thePoints,
3021                                                    CORBA::Boolean      theIsClosed)
3022 {
3023   beginService( " GEOM_Superv_i::MakePolyline" );
3024   MESSAGE("GEOM_Superv_i::MakePolyline");
3025   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
3026       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
3027     getCurvesOp();
3028     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakePolyline(aListImplP->GetList(), theIsClosed);
3029     endService( " GEOM_Superv_i::MakePolyline" );
3030     return anObj;
3031   }
3032   endService( " GEOM_Superv_i::MakePolyline" );
3033   return NULL;
3034 }
3035
3036 //=============================================================================
3037 //  MakeSplineBezier:
3038 //=============================================================================
3039 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineBezier (GEOM::GEOM_List_ptr thePoints,
3040                                                        CORBA::Boolean      theIsClosed)
3041 {
3042   beginService( " GEOM_Superv_i::MakeSplineBezier" );
3043   MESSAGE("GEOM_Superv_i::MakeSplineBezier");
3044   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
3045       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
3046     getCurvesOp();
3047     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSplineBezier(aListImplP->GetList(), theIsClosed);
3048     endService( " GEOM_Superv_i::MakeSplineBezier" );
3049     return anObj;
3050   }
3051   endService( " GEOM_Superv_i::MakeSplineBezier" );
3052   return NULL;
3053 }
3054
3055 //=============================================================================
3056 //  MakeSplineInterpolation:
3057 //=============================================================================
3058 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineInterpolation (GEOM::GEOM_List_ptr thePoints,
3059                                                               CORBA::Boolean      theIsClosed,
3060                                                               CORBA::Boolean      theDoReordering)
3061 {
3062   beginService( " GEOM_Superv_i::MakeSplineInterpolation" );
3063   MESSAGE("GEOM_Superv_i::MakeSplineInterpolation");
3064   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
3065       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
3066     getCurvesOp();
3067     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSplineInterpolation(aListImplP->GetList(), theIsClosed, theDoReordering);
3068     endService( " GEOM_Superv_i::MakeSplineInterpolation" );
3069     return anObj;
3070   }
3071   endService( " GEOM_Superv_i::MakeSplineInterpolation" );
3072   return NULL;
3073 }
3074
3075 //=============================================================================
3076 //  MakeSketcher:
3077 //=============================================================================
3078 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSketcher (const char* theCommand,
3079                                                    GEOM::GEOM_List_ptr theWorkingPlane)
3080 {
3081   beginService( " GEOM_Superv_i::MakeSketcher" );
3082   MESSAGE("GEOM_Superv_i::MakeSketcher");
3083   if (GEOM_List_i<GEOM::ListOfDouble>* aListImplWP =
3084       dynamic_cast<GEOM_List_i<GEOM::ListOfDouble>*>(GetServant(theWorkingPlane, myPOA).in())) {
3085     getCurvesOp();
3086     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSketcher(theCommand, aListImplWP->GetList());
3087     endService( " GEOM_Superv_i::MakeSketcher" );
3088     return anObj;
3089   }
3090   endService( " GEOM_Superv_i::MakeSketcher" );
3091   return NULL;
3092 }
3093
3094 //=============================================================================
3095 //  Make3DSketcher:
3096 //=============================================================================
3097 GEOM::GEOM_Object_ptr GEOM_Superv_i::Make3DSketcher ( GEOM::GEOM_List_ptr theCoordinates)
3098 {
3099   beginService( " GEOM_Superv_i::Make3DSketcher" );
3100   MESSAGE("GEOM_Superv_i::Make3DSketcher");
3101   if (GEOM_List_i<GEOM::ListOfDouble>* aListImpl =
3102       dynamic_cast<GEOM_List_i<GEOM::ListOfDouble>*>(GetServant(theCoordinates, myPOA).in())) {
3103     getCurvesOp();
3104     GEOM::GEOM_Object_ptr anObj = myCurvesOp->Make3DSketcher(aListImpl->GetList());
3105     endService( " GEOM_Superv_i::Make3DSketcher" );
3106     return anObj;
3107   }
3108   endService( " GEOM_Superv_i::Make3DSketcher" );
3109   return NULL;
3110 }
3111
3112 //=============================== LocalOperations =============================
3113 //=============================================================================
3114 //  MakeFilletAll:
3115 //=============================================================================
3116 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletAll (GEOM::GEOM_Object_ptr theShape,
3117                                                     CORBA::Double theR)
3118 {
3119   beginService( " GEOM_Superv_i::MakeFilletAll" );
3120   MESSAGE("GEOM_Superv_i::MakeFilletAllMakeSketcher");
3121   getLocalOp();
3122   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletAll(theShape, theR);
3123   endService( " GEOM_Superv_i::MakeFilletAll" );
3124   return anObj;
3125 }
3126
3127 //=============================================================================
3128 //  MakeFilletEdges:
3129 //=============================================================================
3130 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletEdges (GEOM::GEOM_Object_ptr theShape,
3131                                                       CORBA::Double theR,
3132                                                       GEOM::GEOM_List_ptr theEdges)
3133 {
3134   beginService( " GEOM_Superv_i::MakeFilletEdges" );
3135   MESSAGE("GEOM_Superv_i::MakeFilletEdges");
3136   if (GEOM_List_i<GEOM::ListOfLong>* aListImplE =
3137       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
3138     getLocalOp();
3139     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletEdges(theShape, theR, aListImplE->GetList());
3140     endService( " GEOM_Superv_i::MakeFilletEdges" );
3141     return anObj;
3142   }
3143   endService( " GEOM_Superv_i::MakeFilletEdges" );
3144   return NULL;
3145 }
3146
3147 //=============================================================================
3148 //  MakeFilletEdges R1 R2:
3149 //=============================================================================
3150 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletEdgesR1R2 (GEOM::GEOM_Object_ptr theShape,
3151                                                           CORBA::Double theR1,
3152                                                           CORBA::Double theR2,
3153                                                           GEOM::GEOM_List_ptr theEdges)
3154 {
3155   beginService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
3156   MESSAGE("GEOM_Superv_i::MakeFilletEdgesR1R2");
3157   if (GEOM_List_i<GEOM::ListOfLong>* aListImplE =
3158       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
3159     getLocalOp();
3160     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletEdgesR1R2(theShape, theR1,
3161                                                                  theR2, aListImplE->GetList());
3162     endService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
3163     return anObj;
3164   }
3165   endService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
3166   return NULL;
3167 }
3168
3169 //=============================================================================
3170 //  MakeFilletFaces:
3171 //=============================================================================
3172 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletFaces (GEOM::GEOM_Object_ptr theShape,
3173                                                       CORBA::Double theR,
3174                                                       GEOM::GEOM_List_ptr theFaces)
3175 {
3176   beginService( " GEOM_Superv_i::MakeFilletFaces" );
3177   MESSAGE("GEOM_Superv_i::MakeFilletFaces");
3178   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
3179       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
3180     getLocalOp();
3181     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletFaces(theShape, theR, aListImplF->GetList());
3182     endService( " GEOM_Superv_i::MakeFilletFaces" );
3183     return anObj;
3184   }
3185   endService( " GEOM_Superv_i::MakeFilletFaces" );
3186   return NULL;
3187 }
3188
3189 //=============================================================================
3190 //  MakeFilletFaces R1 R2:
3191 //=============================================================================
3192 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletFacesR1R2 (GEOM::GEOM_Object_ptr theShape,
3193                                                           CORBA::Double theR1,
3194                                                           CORBA::Double theR2,
3195                                                           GEOM::GEOM_List_ptr theFaces)
3196 {
3197   beginService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
3198   MESSAGE("GEOM_Superv_i::MakeFilletFacesR1R2");
3199   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
3200       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
3201     getLocalOp();
3202     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletFacesR1R2(theShape, theR1, theR2,
3203                                                                  aListImplF->GetList());
3204     endService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
3205     return anObj;
3206   }
3207   endService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
3208   return NULL;
3209 }
3210
3211 //=============================================================================
3212 //  MakeFillet2D:
3213 //=============================================================================
3214 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFillet2D (GEOM::GEOM_Object_ptr theShape,
3215                                                    CORBA::Double theR,
3216                                                    GEOM::GEOM_List_ptr theVertexes)
3217 {
3218   beginService( " GEOM_Superv_i::MakeFillet2D" );
3219   MESSAGE("GEOM_Superv_i::MakeFillet2D");
3220   if (GEOM_List_i<GEOM::ListOfLong>* aListImplV =
3221       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theVertexes, myPOA).in())) {
3222     getLocalOp();
3223     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFillet2D(theShape, theR, aListImplV->GetList());
3224     endService( " GEOM_Superv_i::MakeFillet2D" );
3225     return anObj;
3226   }
3227   endService( " GEOM_Superv_i::MakeFillet2D" );
3228   return NULL;
3229 }
3230
3231 //=============================================================================
3232 //  MakeFillet1D:
3233 //=============================================================================
3234 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFillet1D (GEOM::GEOM_Object_ptr theShape,
3235                                                    CORBA::Double theR,
3236                                                    GEOM::GEOM_List_ptr theVertexes,
3237                                                    CORBA::Boolean doIgnoreSecantVertices)
3238 {
3239   beginService( " GEOM_Superv_i::MakeFillet1D" );
3240   MESSAGE("GEOM_Superv_i::MakeFillet1D");
3241   if (GEOM_List_i<GEOM::ListOfLong>* aListImplV =
3242       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theVertexes, myPOA).in())) {
3243     getLocalOp();
3244     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFillet1D
3245       (theShape, theR, aListImplV->GetList(), doIgnoreSecantVertices);
3246     endService( " GEOM_Superv_i::MakeFillet1D" );
3247     return anObj;
3248   }
3249   endService( " GEOM_Superv_i::MakeFillet1D" );
3250   return NULL;
3251 }
3252
3253 //=============================================================================
3254 //  MakeChamferAll:
3255 //=============================================================================
3256 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferAll (GEOM::GEOM_Object_ptr theShape, CORBA::Double theD)
3257 {
3258   beginService( " GEOM_Superv_i::MakeChamferAll" );
3259   MESSAGE("GEOM_Superv_i::MakeChamferAll");
3260   getLocalOp();
3261   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferAll(theShape, theD);
3262   endService( " GEOM_Superv_i::MakeChamferAll" );
3263   return anObj;
3264 }
3265
3266 //=============================================================================
3267 //  MakeChamferEdge:
3268 //=============================================================================
3269 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdge (GEOM::GEOM_Object_ptr theShape,
3270                                                       CORBA::Double theD1, CORBA::Double theD2,
3271                                                       CORBA::Long theFace1, CORBA::Long theFace2)
3272 {
3273   beginService( " GEOM_Superv_i::MakeChamferEdge" );
3274   MESSAGE("GEOM_Superv_i::MakeChamferEdge");
3275   getLocalOp();
3276   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2);
3277   endService( " GEOM_Superv_i::MakeChamferEdge" );
3278   return anObj;
3279 }
3280
3281 //=============================================================================
3282 //  MakeChamferEdgeAD:
3283 //=============================================================================
3284 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdgeAD (GEOM::GEOM_Object_ptr theShape,
3285                                                         CORBA::Double theD, CORBA::Double theAngle,
3286                                                         CORBA::Long theFace1, CORBA::Long theFace2)
3287 {
3288   beginService( " GEOM_Superv_i::MakeChamferEdgeAD" );
3289   MESSAGE("GEOM_Superv_i::MakeChamferEdgeAD");
3290   getLocalOp();
3291   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdgeAD(theShape, theD, theAngle, theFace1, theFace2);
3292   endService( " GEOM_Superv_i::MakeChamferEdgeAD" );
3293   return anObj;
3294 }
3295
3296 //=============================================================================
3297 //  MakeChamferFaces:
3298 //=============================================================================
3299 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferFaces (GEOM::GEOM_Object_ptr theShape,
3300                                                        CORBA::Double theD1, CORBA::Double theD2,
3301                                                        GEOM::GEOM_List_ptr theFaces)
3302 {
3303   beginService( " GEOM_Superv_i::MakeChamferFaces" );
3304   MESSAGE("GEOM_Superv_i::MakeChamferFaces");
3305   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
3306       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
3307     getLocalOp();
3308     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferFaces(theShape, theD1, theD2, aListImplF->GetList());
3309     endService( " GEOM_Superv_i::MakeChamferFaces" );
3310     return anObj;
3311   }
3312   endService( " GEOM_Superv_i::MakeChamferFaces" );
3313   return NULL;
3314 }
3315
3316 //=============================================================================
3317 //  MakeChamferFacesAD:
3318 //=============================================================================
3319 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferFacesAD (GEOM::GEOM_Object_ptr theShape,
3320                                                          CORBA::Double theD, CORBA::Double theAngle,
3321                                                          GEOM::GEOM_List_ptr theFaces)
3322 {
3323   beginService( " GEOM_Superv_i::MakeChamferFacesAD" );
3324   MESSAGE("GEOM_Superv_i::MakeChamferFacesAD");
3325   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
3326       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
3327     getLocalOp();
3328     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferFacesAD(theShape, theD, theAngle, aListImplF->GetList());
3329     endService( " GEOM_Superv_i::MakeChamferFacesAD" );
3330     return anObj;
3331   }
3332   endService( " GEOM_Superv_i::MakeChamferFacesAD" );
3333   return NULL;
3334 }
3335
3336 //=============================================================================
3337 //  MakeChamferEdges:
3338 //=============================================================================
3339 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdges (GEOM::GEOM_Object_ptr theShape,
3340                                                        CORBA::Double theD1, CORBA::Double theD2,
3341                                                        GEOM::GEOM_List_ptr theEdges)
3342 {
3343   beginService( " GEOM_Superv_i::MakeChamferEdges" );
3344   MESSAGE("GEOM_Superv_i::MakeChamferEdges");
3345   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
3346       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
3347     getLocalOp();
3348     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdges(theShape, theD1, theD2, aListImplF->GetList());
3349     endService( " GEOM_Superv_i::MakeChamferEdges" );
3350     return anObj;
3351   }
3352   endService( " GEOM_Superv_i::MakeChamferEdges" );
3353   return NULL;
3354 }
3355
3356 //=============================================================================
3357 //  MakeChamferEdgesAD:
3358 //=============================================================================
3359 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdgesAD (GEOM::GEOM_Object_ptr theShape,
3360                                                          CORBA::Double theD, CORBA::Double theAngle,
3361                                                          GEOM::GEOM_List_ptr theEdges)
3362 {
3363   beginService( " GEOM_Superv_i::MakeChamferEdgesAD" );
3364   MESSAGE("GEOM_Superv_i::MakeChamferEdgesAD");
3365   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
3366       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
3367     getLocalOp();
3368     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdgesAD(theShape, theD, theAngle, aListImplF->GetList());
3369     endService( " GEOM_Superv_i::MakeChamferEdgesAD" );
3370     return anObj;
3371   }
3372   endService( " GEOM_Superv_i::MakeChamferEdgesAD" );
3373   return NULL;
3374 }
3375
3376 //=============================================================================
3377 //  MakeArchimede:
3378 //=============================================================================
3379 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArchimede (GEOM::GEOM_Object_ptr theShape,
3380                                                     CORBA::Double theWeight,
3381                                                     CORBA::Double theWaterDensity,
3382                                                     CORBA::Double theMeshingDeflection)
3383 {
3384   beginService( " GEOM_Superv_i::MakeArchimede" );
3385   MESSAGE("GEOM_Superv_i::MakeArchimede");
3386   getLocalOp();
3387   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeArchimede(theShape, theWeight, theWaterDensity, theMeshingDeflection);
3388   endService( " GEOM_Superv_i::MakeArchimede" );
3389   return anObj;
3390 }
3391
3392 //=============================================================================
3393 //  GetSubShapeIndexMakeFilletAll:
3394 //=============================================================================
3395 CORBA::Long GEOM_Superv_i::GetSubShapeIndex (GEOM::GEOM_Object_ptr theShape,
3396                                              GEOM::GEOM_Object_ptr theSubShape)
3397 {
3398   beginService( " GEOM_Superv_i::GetSubShapeIndex" );
3399   MESSAGE("GEOM_Superv_i::GetSubShapeIndexMakeArchimede");
3400   getLocalOp();
3401   CORBA::Long aRes = myLocalOp->GetSubShapeIndex(theShape, theSubShape);
3402   endService( " GEOM_Superv_i::GetSubShapeIndex" );
3403   return aRes;
3404 }
3405
3406 //=============================== GroupOperations =============================
3407 //=============================================================================
3408 //  CreateGroup:
3409 //=============================================================================
3410 GEOM::GEOM_Object_ptr GEOM_Superv_i::CreateGroup (GEOM::GEOM_Object_ptr theMainShape,
3411                                                   CORBA::Long theShapeType)
3412 {
3413   beginService( " GEOM_Superv_i::CreateGroup" );
3414   MESSAGE("GEOM_Superv_i::CreateGroup");
3415   getGroupOp();
3416   GEOM::GEOM_Object_ptr anObj = myGroupOp->CreateGroup(theMainShape, theShapeType);
3417   endService( " GEOM_Superv_i::CreateGroup" );
3418   return anObj;
3419 }
3420
3421 //=============================================================================
3422 //  AddObject:
3423 //=============================================================================
3424 void GEOM_Superv_i::AddObject (GEOM::GEOM_Object_ptr theGroup,
3425                                CORBA::Long theSubShapeId)
3426 {
3427   beginService( " GEOM_Superv_i::AddObject" );
3428   MESSAGE("GEOM_Superv_i::AddObject");
3429   getGroupOp();
3430   myGroupOp->AddObject(theGroup, theSubShapeId);
3431   endService( " GEOM_Superv_i::AddObject" );
3432 }
3433
3434 //=============================================================================
3435 //  RemoveObject:
3436 //=============================================================================
3437 void GEOM_Superv_i::RemoveObject (GEOM::GEOM_Object_ptr theGroup,
3438                                   CORBA::Long theSubShapeId)
3439 {
3440   beginService( " GEOM_Superv_i::RemoveObject" );
3441   MESSAGE("GEOM_Superv_i::RemoveObject");
3442   getGroupOp();
3443   myGroupOp->RemoveObject(theGroup, theSubShapeId);
3444   endService( " GEOM_Superv_i::RemoveObject" );
3445 }
3446
3447 //=============================================================================
3448 //  GetType:
3449 //=============================================================================
3450 CORBA::Long GEOM_Superv_i::GetType (GEOM::GEOM_Object_ptr theGroup)
3451 {
3452   beginService( " GEOM_Superv_i::GetType" );
3453   MESSAGE("GEOM_Superv_i::GetType");
3454   getGroupOp();
3455   CORBA::Long aResult = myGroupOp->GetType(theGroup);
3456   endService( " GEOM_Superv_i::GetType" );
3457   return aResult;
3458 }
3459
3460 //=============================================================================
3461 //  GetMainShape:
3462 //=============================================================================
3463 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetMainShape (GEOM::GEOM_Object_ptr theGroup)
3464 {
3465   beginService( " GEOM_Superv_i::GetMainShape" );
3466   MESSAGE("GEOM_Superv_i::GetMainShape");
3467   getGroupOp();
3468   GEOM::GEOM_Object_ptr anObj = myGroupOp->GetMainShape(theGroup);
3469   endService( " GEOM_Superv_i::GetMainShape" );
3470   return anObj;
3471 }
3472
3473 //=============================================================================
3474 //  GetObjects:
3475 //=============================================================================
3476 GEOM::GEOM_List_ptr GEOM_Superv_i::GetObjects (GEOM::GEOM_Object_ptr theGroup)
3477 {
3478   beginService( " GEOM_Superv_i::GetObjects" );
3479   MESSAGE("GEOM_Superv_i::GetObjects");
3480   getGroupOp();
3481
3482   GEOM::ListOfLong* aList = myGroupOp->GetObjects(theGroup);
3483   GEOM_List_i<GEOM::ListOfLong>* aListPtr = new GEOM_List_i<GEOM::ListOfLong>(*(aList));
3484   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
3485   endService( " GEOM_Superv_i::GetObjects" );
3486   return aListPtr->_this();
3487 }
3488
3489 //=============================== Import/Export Operations =============================
3490 //=============================================================================
3491 //  Export STL
3492 //=============================================================================
3493 void GEOM_Superv_i::ExportSTL( GEOM::GEOM_Object_ptr theObject,
3494                                const char*           theFileName,
3495                                const bool            theIsASCII,
3496                                CORBA::Double         theDeflection,
3497                                const bool            theIsRelative )
3498 {
3499   beginService( " GEOM_Superv_i::ExportSTL" );
3500   MESSAGE("GEOM_Superv_i::ExportSTL");
3501   getSTLPluginOp();
3502   mySTLOp->ExportSTL( theObject, theFileName, theIsASCII, theDeflection, theIsRelative );
3503   endService( " GEOM_Superv_i::ExportSTL" );
3504 }
3505
3506 //=============================================================================
3507 //  Import STL
3508 //=============================================================================
3509 GEOM::GEOM_Object_ptr GEOM_Superv_i::ImportSTL( const char* theFileName )
3510 {
3511   beginService( " GEOM_Superv_i::ImportSTL" );
3512   MESSAGE("GEOM_Superv_i::ImportSTL");
3513   getSTLPluginOp();
3514   GEOM::ListOfGO* aSeq = mySTLOp->ImportSTL(theFileName );
3515   GEOM::GEOM_Object_ptr anObj;
3516
3517   if (aSeq->length() > 0) {
3518     anObj = aSeq->operator[](0);
3519   }
3520
3521   endService( " GEOM_Superv_i::ImportSTL" );
3522   return anObj;
3523 }
3524
3525 //=============================================================================
3526 //  Export BREP
3527 //=============================================================================
3528 void GEOM_Superv_i::ExportBREP( GEOM::GEOM_Object_ptr theObject,
3529                                 const char*           theFileName )
3530 {
3531   beginService( " GEOM_Superv_i::ExportBREP" );
3532   MESSAGE("GEOM_Superv_i::ExportBREP");
3533   getBREPPluginOp();
3534   myBREPOp->ExportBREP( theObject, theFileName );
3535   endService( " GEOM_Superv_i::ExportBREP" );
3536 }
3537
3538 //=============================================================================
3539 //  Import BREP
3540 //=============================================================================
3541 GEOM::GEOM_Object_ptr GEOM_Superv_i::ImportBREP( const char* theFileName )
3542 {
3543   beginService( " GEOM_Superv_i::ImportBREP" );
3544   MESSAGE("GEOM_Superv_i::ImportBREP");
3545   getBREPPluginOp();
3546   GEOM::ListOfGO* aSeq = myBREPOp->ImportBREP(theFileName );
3547   GEOM::GEOM_Object_ptr anObj;
3548
3549   if (aSeq->length() > 0) {
3550     anObj = aSeq->operator[](0);
3551   }
3552
3553   endService( " GEOM_Superv_i::ImportBREP" );
3554   return anObj;
3555 }
3556
3557 //=============================================================================
3558 //  Export STEP
3559 //=============================================================================
3560 void GEOM_Superv_i::ExportSTEP( GEOM::GEOM_Object_ptr theObject,
3561                                 const char*           theFileName )
3562 {
3563   beginService( " GEOM_Superv_i::ExportSTEP" );
3564   MESSAGE("GEOM_Superv_i::ExportSTEP");
3565   getSTEPPluginOp();
3566   mySTEPOp->ExportSTEP( theObject, theFileName );
3567   endService( " GEOM_Superv_i::ExportSTEP" );
3568 }
3569
3570 //=============================================================================
3571 //  Import STEP
3572 //=============================================================================
3573 GEOM::GEOM_Object_ptr GEOM_Superv_i::ImportSTEP( const char* theFileName,
3574                                                  const bool  theIsIgnoreUnits )
3575 {
3576   beginService( " GEOM_Superv_i::ImportSTEP" );
3577   MESSAGE("GEOM_Superv_i::ImportSTEP");
3578   getSTEPPluginOp();
3579   GEOM::ListOfGO* aSeq = mySTEPOp->ImportSTEP(theFileName, theIsIgnoreUnits );
3580   GEOM::GEOM_Object_ptr anObj;
3581
3582   if (aSeq->length() > 0) {
3583     anObj = aSeq->operator[](0);
3584   }
3585
3586   endService( " GEOM_Superv_i::ImportSTEP" );
3587   return anObj;
3588 }
3589
3590 //=============================================================================
3591 //  Export IGES
3592 //=============================================================================
3593 void GEOM_Superv_i::ExportIGES( GEOM::GEOM_Object_ptr theObject,
3594                                 const char*           theFileName,
3595                                 const char*           theVersion )
3596 {
3597   beginService( " GEOM_Superv_i::ExportIGES" );
3598   MESSAGE("GEOM_Superv_i::ExportIGES");
3599   getIGESPluginOp();
3600   myIGESOp->ExportIGES( theObject, theFileName, theVersion );
3601   endService( " GEOM_Superv_i::ExportIGES" );
3602 }
3603
3604 //=============================================================================
3605 //  Import IGES
3606 //=============================================================================
3607 GEOM::GEOM_Object_ptr GEOM_Superv_i::ImportIGES( const char* theFileName,
3608                                                  const bool  theIsIgnoreUnits )
3609 {
3610   beginService( " GEOM_Superv_i::ImportIGES" );
3611   MESSAGE("GEOM_Superv_i::ImportIGES");
3612   getIGESPluginOp();
3613   GEOM::ListOfGO* aSeq = myIGESOp->ImportIGES(theFileName, theIsIgnoreUnits );
3614   GEOM::GEOM_Object_ptr anObj;
3615
3616   if (aSeq->length() > 0) {
3617     anObj = aSeq->operator[](0);
3618   }
3619
3620   endService( " GEOM_Superv_i::ImportIGES" );
3621   return anObj;
3622 }
3623
3624 //=============================================================================
3625 //  Export XAO
3626 //=============================================================================
3627 CORBA::Boolean GEOM_Superv_i::ExportXAO( GEOM::GEOM_Object_ptr shape,
3628                                          const GEOM::ListOfGO& groups,
3629                                          const GEOM::ListOfFields& fields,
3630                                          const char* author, const char* fileName )
3631 {
3632   beginService( " GEOM_Superv_i::ExportXAO" );
3633   MESSAGE("GEOM_Superv_i::ExportXAO");
3634   getXAOPluginOp();
3635   CORBA::Boolean isGood = myXAOOp->ExportXAO( shape, groups, fields, author, fileName );
3636   endService( " GEOM_Superv_i::ExportXAO" );
3637   return isGood;
3638 }
3639
3640 //=============================================================================
3641 //  Import XAO
3642 //=============================================================================
3643 CORBA::Boolean GEOM_Superv_i::ImportXAO( const char* fileName,
3644                                          GEOM::GEOM_Object_out shape,
3645                                          GEOM::ListOfGO_out subShapes,
3646                                          GEOM::ListOfGO_out groups,
3647                                          GEOM::ListOfFields_out fields )
3648 {
3649   return false;
3650 }
3651
3652 //=============================================================================
3653 //  Export VTK
3654 //=============================================================================
3655 void GEOM_Superv_i::ExportVTK(  GEOM::GEOM_Object_ptr theObject,
3656                                 const char*           theFileName,
3657                                 CORBA::Double         theDeflection )
3658 {
3659   beginService( " GEOM_Superv_i::ExportVTK" );
3660   MESSAGE("GEOM_Superv_i::ExportVTK");
3661   getVTKPluginOp();
3662   myVTKOp->ExportVTK( theObject, theFileName, theDeflection );
3663   endService( " GEOM_Superv_i::ExportVTK" );
3664 }
3665
3666 //=============================== Advanced Operations =============================
3667 //=============================================================================
3668 //  MakePipeTShape
3669 //=============================================================================
3670 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShape
3671                     (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
3672                      CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
3673                      CORBA::Boolean theHexMesh)
3674 {
3675   beginService( " GEOM_Superv_i::MakePipeTShape" );
3676   MESSAGE("GEOM_Superv_i::MakePipeTShape");
3677   getAdvancedOp();
3678
3679   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShape(theR1, theW1, theL1, theR2, theW2, theL2, theHexMesh);
3680   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3681   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3682   endService( " GEOM_Superv_i::MakePipeTShape" );
3683   return aSeqPtr->_this();
3684 }
3685
3686 //=============================================================================
3687 //  MakePipeTShapeWithPosition
3688 //=============================================================================
3689 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeWithPosition
3690                     (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
3691                      CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2, CORBA::Boolean theHexMesh,
3692                      GEOM::GEOM_Object_ptr theP1, GEOM::GEOM_Object_ptr theP2, GEOM::GEOM_Object_ptr theP3)
3693 {
3694   beginService( " GEOM_Superv_i::MakePipeTShapeWithPosition" );
3695   MESSAGE("GEOM_Superv_i::MakePipeTShapeWithPosition");
3696   getAdvancedOp();
3697
3698   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeWithPosition(theR1, theW1, theL1, theR2, theW2, theL2, theHexMesh, theP1, theP2, theP3);
3699   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3700   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3701   endService( " GEOM_Superv_i::MakePipeTShapeWithPosition" );
3702   return aSeqPtr->_this();
3703 }
3704
3705 //=============================================================================
3706 //  MakePipeTShapeChamfer
3707 //=============================================================================
3708 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeChamfer
3709                     (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
3710                      CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
3711                      CORBA::Double theH, CORBA::Double theW, CORBA::Boolean theHexMesh)
3712 {
3713   beginService( " GEOM_Superv_i::MakePipeTShapeChamfer" );
3714   MESSAGE("GEOM_Superv_i::MakePipeTShapeChamfer");
3715   getAdvancedOp();
3716
3717   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeChamfer(theR1, theW1, theL1, theR2, theW2, theL2, theH, theW, theHexMesh);
3718   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3719   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3720   endService( " GEOM_Superv_i::MakePipeTShapeChamfer" );
3721   return aSeqPtr->_this();
3722 }
3723
3724 //=============================================================================
3725 //  MakePipeTShapeChamferWithPosition
3726 //=============================================================================
3727 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeChamferWithPosition
3728                     (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
3729                      CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
3730                      CORBA::Double theH, CORBA::Double theW, CORBA::Boolean theHexMesh,
3731                      GEOM::GEOM_Object_ptr theP1, GEOM::GEOM_Object_ptr theP2, GEOM::GEOM_Object_ptr theP3)
3732 {
3733   beginService( " GEOM_Superv_i::MakePipeTShapeChamferWithPosition" );
3734   MESSAGE("GEOM_Superv_i::MakePipeTShapeChamferWithPosition");
3735   getAdvancedOp();
3736
3737   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeChamferWithPosition(theR1, theW1, theL1, theR2, theW2, theL2, theH, theW, theHexMesh, theP1, theP2, theP3);
3738   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3739   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3740   endService( " GEOM_Superv_i::MakePipeTShapeChamferWithPosition" );
3741   return aSeqPtr->_this();
3742 }
3743
3744 //=============================================================================
3745 //  MakePipeTShapeFillet
3746 //=============================================================================
3747 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeFillet
3748                     (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
3749                      CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
3750                      CORBA::Double theRF, CORBA::Boolean theHexMesh)
3751 {
3752   beginService( " GEOM_Superv_i::MakePipeTShapeFillet" );
3753   MESSAGE("GEOM_Superv_i::MakePipeTShapeFillet");
3754   getAdvancedOp();
3755
3756   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeFillet(theR1, theW1, theL1, theR2, theW2, theL2, theRF, theHexMesh);
3757   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3758   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3759   endService( " GEOM_Superv_i::MakePipeTShapeFillet" );
3760   return aSeqPtr->_this();
3761 }
3762
3763 //=============================================================================
3764 //  MakePipeTShapeFilletWithPosition
3765 //=============================================================================
3766 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeFilletWithPosition
3767                     (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
3768                      CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
3769                      CORBA::Double theRF, CORBA::Boolean theHexMesh,
3770                      GEOM::GEOM_Object_ptr theP1, GEOM::GEOM_Object_ptr theP2, GEOM::GEOM_Object_ptr theP3)
3771 {
3772   beginService( " GEOM_Superv_i::MakePipeTShapeFilletWithPosition" );
3773   MESSAGE("GEOM_Superv_i::MakePipeTShapeFilletWithPosition");
3774   getAdvancedOp();
3775
3776   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeFilletWithPosition(theR1, theW1, theL1, theR2, theW2, theL2, theRF, theHexMesh, theP1, theP2, theP3);
3777   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3778   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3779   endService( " GEOM_Superv_i::MakePipeTShapeFilletWithPosition" );
3780   return aSeqPtr->_this();
3781 }
3782
3783 //=============================================================================
3784 //  MakeDividedDisk
3785 //=============================================================================
3786 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDividedDisk (CORBA::Double theR, CORBA::Double theRatio, 
3787                                                       CORBA::Short theOrientation, GEOM::pattern thePattern)
3788 {
3789   beginService( " GEOM_Superv_i::MakeDividedDisk" );
3790   MESSAGE("GEOM_Superv_i::MakeDividedDisk");
3791   getAdvancedOp();
3792   GEOM::GEOM_Object_ptr anObj = myAdvancedOp->MakeDividedDisk(theR, theRatio, theOrientation, thePattern);
3793   endService( " GEOM_Superv_i::MakeDividedDisk" );
3794   return anObj;
3795 }
3796
3797 //=============================================================================
3798 //  MakeDividedCylinder
3799 //=============================================================================
3800 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDividedCylinder (CORBA::Double theR, 
3801                                                           CORBA::Double theH,
3802                                                           GEOM::pattern thePattern)
3803 {
3804   beginService( " GEOM_Superv_i::MakeDividedCylinder" );
3805   MESSAGE("GEOM_Superv_i::MakeDividedCylinder");
3806   getAdvancedOp();
3807   GEOM::GEOM_Object_ptr anObj = myAdvancedOp->MakeDividedCylinder(theR, theH, thePattern);
3808   endService( " GEOM_Superv_i::MakeDividedCylinder" );
3809   return anObj;
3810 }
3811
3812 //=============================================================================
3813 //  MakeSmoothingSurface
3814 //=============================================================================
3815 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSmoothingSurface (GEOM::GEOM_List_ptr thelPoints)
3816 {
3817   beginService( " GEOM_Superv_i::MakeSmoothingSurface" );
3818   MESSAGE("GEOM_Superv_i::MakeSmoothingSurface");
3819   getAdvancedOp();
3820   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
3821       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thelPoints, myPOA).in())) {
3822     getCurvesOp();
3823     GEOM::GEOM_Object_ptr anObj = myAdvancedOp->MakeSmoothingSurface(aListImplP->GetList(), 2, 8, 0.);
3824     endService( " GEOM_Superv_i::MakeSmoothingSurface" );
3825     return anObj;
3826   }
3827   endService( " GEOM_Superv_i::MakeSmoothingSurface" );
3828   return NULL;
3829 }
3830
3831 /*@@ insert new functions before this line @@ do not remove this line @@*/
3832
3833 //=====================================================================================
3834 // EXPORTED METHODS
3835 //=====================================================================================
3836 extern "C"
3837 {
3838 #ifdef WIN32
3839   __declspec( dllexport )
3840 #endif
3841   PortableServer::ObjectId * GEOM_SupervEngine_factory(CORBA::ORB_ptr orb,
3842                                                        PortableServer::POA_ptr poa,
3843                                                        PortableServer::ObjectId * contId,
3844                                                        const char *instanceName,
3845                                                        const char * interfaceName)
3846   {
3847     GEOM_Superv_i * myGEOM_Superv_i = new GEOM_Superv_i(orb, poa, contId, instanceName, interfaceName);
3848     //Don't understand the reason why this component is registered ???
3849 //    myGEOM_Superv_i->register_name("/myGEOM_Superv");
3850     return myGEOM_Superv_i->getId() ;
3851   }
3852 }