Salome HOME
0022759: [EDF] Creation of a surface from several edges
[modules/geom.git] / src / GEOM_I_Superv / GEOM_Superv_i.cc
1 // Copyright (C) 2007-2014  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);
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::GEOM_Object_ptr anObj = my3DPrimOp->MakePipe(theBase, thePath);
1407   endService( " GEOM_Superv_i::MakePipe" );
1408   return anObj;
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::GEOM_Object_ptr anObj = my3DPrimOp->MakePipeWithDifferentSections(theBases,theLocations, thePath,theWithContact,theWithCorrections);
1516   endService( " GEOM_Superv_i::MakePipeWithDifferentSections" );
1517   return anObj;
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::GEOM_Object_ptr anObj =
1536     my3DPrimOp->MakePipeWithShellSections(theBases, theSubBases,
1537                                           theLocations, thePath,
1538                                           theWithContact, theWithCorrections);
1539   endService( " GEOM_Superv_i::MakePipeWithShellSections" );
1540   return anObj;
1541 }
1542
1543
1544 //=============================================================================
1545 //  MakePipe:
1546 //=============================================================================
1547 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeShellsWithoutPath
1548                    (const GEOM::ListOfGO& theBases,
1549                     const GEOM::ListOfGO& theLocations)
1550 {
1551   beginService( " GEOM_Superv_i::MakePipeShellsWithoutPath" );
1552   MESSAGE("GEOM_Superv_i::MakePipeShellsWithoutPath");
1553   get3DPrimOp();
1554   GEOM::GEOM_Object_ptr anObj =
1555     my3DPrimOp->MakePipeShellsWithoutPath(theBases,theLocations);
1556   endService( " GEOM_Superv_i::MakePipeShellsWithoutPath" );
1557   return anObj;
1558 }
1559
1560
1561 //=============================================================================
1562 //  MakePipe:
1563 //=============================================================================
1564 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeBiNormalAlongVector
1565                                                 (GEOM::GEOM_Object_ptr theBase,
1566                                                  GEOM::GEOM_Object_ptr thePath,
1567                                                  GEOM::GEOM_Object_ptr theVec)
1568 {
1569   beginService( " GEOM_Superv_i::MakePipeBiNormalAlongVector" );
1570   MESSAGE("GEOM_Superv_i::MakePipeBiNormalAlongVector");
1571   get3DPrimOp();
1572   GEOM::GEOM_Object_ptr anObj =
1573     my3DPrimOp->MakePipeBiNormalAlongVector(theBase, thePath, theVec);
1574   endService( " GEOM_Superv_i::MakePipeBiNormalAlongVector" );
1575   return anObj;
1576 }
1577
1578
1579 //=============================================================================
1580 //  MakeFuse:
1581 //=============================================================================
1582 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFuse
1583                                         (GEOM::GEOM_Object_ptr theShape1,
1584                                          GEOM::GEOM_Object_ptr theShape2)
1585 {
1586   beginService( " GEOM_Superv_i::MakeFuse" );
1587   MESSAGE("GEOM_Superv_i::MakeFuse");
1588   getBoolOp();
1589   GEOM::GEOM_Object_ptr anObj =
1590     myBoolOp->MakeBoolean(theShape1, theShape2, 3, false);
1591   endService( " GEOM_Superv_i::MakeFuse" );
1592   return anObj;
1593 }
1594
1595 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCommon (GEOM::GEOM_Object_ptr theShape1,
1596                                                  GEOM::GEOM_Object_ptr theShape2)
1597 {
1598   beginService( " GEOM_Superv_i::MakeCommon" );
1599   MESSAGE("GEOM_Superv_i::MakeCommon");
1600   getBoolOp();
1601   GEOM::GEOM_Object_ptr anObj =
1602     myBoolOp->MakeBoolean(theShape1, theShape2, 1, false);
1603   endService( " GEOM_Superv_i::MakeCommon" );
1604   return anObj;
1605 }
1606
1607 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCut (GEOM::GEOM_Object_ptr theShape1,
1608                                               GEOM::GEOM_Object_ptr theShape2)
1609 {
1610   beginService( " GEOM_Superv_i::MakeCut" );
1611   MESSAGE("GEOM_Superv_i::MakeCut");
1612   getBoolOp();
1613   GEOM::GEOM_Object_ptr anObj =
1614     myBoolOp->MakeBoolean(theShape1, theShape2, 2, false);
1615   endService( " GEOM_Superv_i::MakeCut" );
1616   return anObj;
1617 }
1618
1619 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSection (GEOM::GEOM_Object_ptr theShape1,
1620                                                   GEOM::GEOM_Object_ptr theShape2)
1621 {
1622   beginService( " GEOM_Superv_i::MakeCut" );
1623   MESSAGE("GEOM_Superv_i::MakeCut");
1624   getBoolOp();
1625   GEOM::GEOM_Object_ptr anObj =
1626     myBoolOp->MakeBoolean(theShape1, theShape2, 4, false);
1627   endService( " GEOM_Superv_i::MakeCut" );
1628   return anObj;
1629 }
1630
1631 //=============================================================================
1632 //  MakePartition:
1633 //=============================================================================
1634 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePartition (GEOM::GEOM_List_ptr   theShapes,
1635                                                     GEOM::GEOM_List_ptr   theTools,
1636                                                     GEOM::GEOM_List_ptr   theKeepInside,
1637                                                     GEOM::GEOM_List_ptr   theRemoveInside,
1638                                                     CORBA::Short      theLimit,
1639                                                     CORBA::Boolean    theRemoveWebs,
1640                                                     GEOM::GEOM_List_ptr theMaterials,
1641                                                     CORBA::Short theKeepNonlimitShapes)
1642 {
1643   beginService( " GEOM_Superv_i::MakePartition" );
1644   MESSAGE("GEOM_Superv_i::MakePartition");
1645   GEOM_List_i<GEOM::ListOfGO>* aListImplS =
1646     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShapes, myPOA).in());
1647   GEOM_List_i<GEOM::ListOfGO>* aListImplT =
1648     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theTools, myPOA).in());
1649   GEOM_List_i<GEOM::ListOfGO>* aListImplKI =
1650     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theKeepInside, myPOA).in());
1651   GEOM_List_i<GEOM::ListOfGO>* aListImplRI =
1652     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theRemoveInside, myPOA).in());
1653   GEOM_List_i<GEOM::ListOfLong>* aListImplM =
1654     dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theMaterials, myPOA).in());
1655   if (aListImplS && aListImplT && aListImplKI && aListImplRI && aListImplM) {
1656     getBoolOp();
1657     GEOM::GEOM_Object_ptr anObj =
1658       myBoolOp->MakePartition(aListImplS->GetList(), aListImplT->GetList(),
1659                               aListImplKI->GetList(), aListImplRI->GetList(),
1660                               theLimit, theRemoveWebs, aListImplM->GetList(),
1661                               theKeepNonlimitShapes);
1662     endService( " GEOM_Superv_i::MakePartition" );
1663     return anObj;
1664   }
1665   endService( " GEOM_Superv_i::MakePartition" );
1666   return NULL;
1667 }
1668
1669 //=============================================================================
1670 //  MakeHalfPartition:
1671 //=============================================================================
1672 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHalfPartition (GEOM::GEOM_Object_ptr theShape,
1673                                                         GEOM::GEOM_Object_ptr thePlane)
1674 {
1675   beginService( " GEOM_Superv_i::MakeHalfPartition" );
1676   MESSAGE("GEOM_Superv_i::MakeHalfPartition");
1677   getBoolOp();
1678   GEOM::GEOM_Object_ptr anObj =
1679     myBoolOp->MakeHalfPartition(theShape, thePlane);
1680   endService( " GEOM_Superv_i::MakeHalfPartition" );
1681   return anObj;
1682 }
1683
1684 //============================== InsertOperations =============================
1685 //=============================================================================
1686 //  MakeCopy:
1687 //=============================================================================
1688 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCopy (GEOM::GEOM_Object_ptr theOriginal)
1689 {
1690   beginService( " GEOM_Superv_i::MakeCopy" );
1691   MESSAGE("GEOM_Superv_i::MakeCopy");
1692   getInsOp();
1693   GEOM::GEOM_Object_ptr anObj = myInsOp->MakeCopy(theOriginal);
1694   endService( " GEOM_Superv_i::MakeCopy" );
1695   return anObj;
1696 }
1697
1698 //=============================================================================
1699 //  Export:
1700 //=============================================================================
1701 void GEOM_Superv_i::Export (GEOM::GEOM_Object_ptr theObject,
1702                             const char*           theFileName,
1703                             const char*           theFormatName)
1704 {
1705   beginService( " GEOM_Superv_i::Export" );
1706   MESSAGE("GEOM_Superv_i::Export");
1707   getInsOp();
1708   myInsOp->Export(theObject, theFileName, theFormatName);
1709   endService( " GEOM_Superv_i::Export" );
1710 }
1711
1712 //=============================================================================
1713 //  Import:
1714 //=============================================================================
1715 GEOM::GEOM_Object_ptr GEOM_Superv_i::ImportFile (const char* theFileName,
1716                                                  const char* theFormatName)
1717 {
1718   beginService( " GEOM_Superv_i::ImportFile" );
1719   MESSAGE("GEOM_Superv_i::ImportFile");
1720   getInsOp();
1721   GEOM::ListOfGBO_var aSeq = myInsOp->ImportFile(theFileName, theFormatName);
1722   GEOM::GEOM_Object_var anObj;
1723   
1724   if (aSeq->length() > 0) {
1725     anObj = GEOM::GEOM_Object::_narrow(aSeq[0]);
1726   }
1727
1728   endService( " GEOM_Superv_i::ImportFile" );
1729   return anObj._retn();
1730 }
1731
1732 //============================= TransformOperations ===========================
1733 //=============================================================================
1734 //  TranslateTwoPoints:
1735 //=============================================================================
1736 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateTwoPoints (GEOM::GEOM_Object_ptr theObject,
1737                                                          GEOM::GEOM_Object_ptr thePoint1,
1738                                                          GEOM::GEOM_Object_ptr thePoint2)
1739 {
1740   beginService( " GEOM_Superv_i::TranslateTwoPoints" );
1741   MESSAGE("GEOM_Superv_i::TranslateTwoPoints");
1742   getTransfOp();
1743   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateTwoPoints(theObject, thePoint1, thePoint2);
1744   endService( " GEOM_Superv_i::TranslateTwoPoints" );
1745   return anObj;
1746 }
1747
1748 //=============================================================================
1749 //  TranslateTwoPointsCopy:
1750 //=============================================================================
1751 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateTwoPointsCopy (GEOM::GEOM_Object_ptr theObject,
1752                                                              GEOM::GEOM_Object_ptr thePoint1,
1753                                                              GEOM::GEOM_Object_ptr thePoint2)
1754 {
1755   beginService( " GEOM_Superv_i::TranslateTwoPointsCopy" );
1756   MESSAGE("GEOM_Superv_i::TranslateTwoPointsCopy");
1757   getTransfOp();
1758   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateTwoPointsCopy(theObject, thePoint1, thePoint2);
1759   endService( " GEOM_Superv_i::TranslateTwoPointsCopy" );
1760   return anObj;
1761 }
1762
1763 //=============================================================================
1764 //  TranslateDXDYDZ:
1765 //=============================================================================
1766 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZ (GEOM::GEOM_Object_ptr theObject,
1767                                                       CORBA::Double theDX,
1768                                                       CORBA::Double theDY,
1769                                                       CORBA::Double theDZ)
1770 {
1771   beginService( " GEOM_Superv_i::TranslateDXDYDZ" );
1772   MESSAGE("GEOM_Superv_i::TranslateDXDYDZ");
1773   getTransfOp();
1774   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateDXDYDZ(theObject, theDX, theDY, theDZ);
1775   endService( " GEOM_Superv_i::TranslateDXDYDZ" );
1776   return anObj;
1777 }
1778
1779 //=============================================================================
1780 //  TranslateDXDYDZCopy:
1781 //=============================================================================
1782 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZCopy (GEOM::GEOM_Object_ptr theObject,
1783                                                           CORBA::Double theDX,
1784                                                           CORBA::Double theDY,
1785                                                           CORBA::Double theDZ)
1786 {
1787   beginService( " GEOM_Superv_i::TranslateDXDYDZCopy" );
1788   MESSAGE("GEOM_Superv_i::TranslateDXDYDZCopy");
1789   getTransfOp();
1790   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ);
1791   endService( " GEOM_Superv_i::TranslateDXDYDZCopy" );
1792   return anObj;
1793 }
1794
1795 //=============================================================================
1796 //  TranslateVector:
1797 //=============================================================================
1798 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVector (GEOM::GEOM_Object_ptr theObject,
1799                                                       GEOM::GEOM_Object_ptr theVector)
1800 {
1801   beginService( " GEOM_Superv_i::TranslateVector" );
1802   MESSAGE("GEOM_Superv_i::TranslateVector");
1803   getTransfOp();
1804   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVector(theObject, theVector);
1805   endService( " GEOM_Superv_i::TranslateVector" );
1806   return anObj;
1807 }
1808
1809 //=============================================================================
1810 //  TranslateVectorCopy:
1811 //=============================================================================
1812 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVectorCopy (GEOM::GEOM_Object_ptr theObject,
1813                                                           GEOM::GEOM_Object_ptr theVector)
1814 {
1815   beginService( " GEOM_Superv_i::TranslateVectorCopy" );
1816   MESSAGE("GEOM_Superv_i::TranslateVectorCopy");
1817   getTransfOp();
1818   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVectorCopy(theObject, theVector);
1819   endService( " GEOM_Superv_i::TranslateVectorCopy" );
1820   return anObj;
1821 }
1822
1823 //=============================================================================
1824 //  TranslateVectorDistance:
1825 //=============================================================================
1826 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVectorDistance (GEOM::GEOM_Object_ptr theObject,
1827                                                               GEOM::GEOM_Object_ptr theVector,
1828                                                               CORBA::Double theDistance,
1829                                                               CORBA::Boolean theCopy)
1830 {
1831   beginService( " GEOM_Superv_i::TranslateVectorDistance" );
1832   MESSAGE("GEOM_Superv_i::TranslateVectorDistance");
1833   getTransfOp();
1834   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVectorDistance(theObject,
1835                                                                     theVector, theDistance, theCopy);
1836   endService( " GEOM_Superv_i::TranslateVectorDistance" );
1837   return anObj;
1838 }
1839
1840 //=============================================================================
1841 //  MultiTranslate1D:
1842 //=============================================================================
1843 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiTranslate1D (GEOM::GEOM_Object_ptr theObject,
1844                                                        GEOM::GEOM_Object_ptr theVector,
1845                                                        CORBA::Double theStep,
1846                                                        CORBA::Long theNbTimes)
1847 {
1848   beginService( " GEOM_Superv_i::MultiTranslate1D" );
1849   MESSAGE("GEOM_Superv_i::MultiTranslate1D");
1850   getTransfOp();
1851   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiTranslate1D(theObject, theVector, theStep, theNbTimes);
1852   endService( " GEOM_Superv_i::MultiTranslate1D" );
1853   return anObj;
1854 }
1855
1856 //=============================================================================
1857 //  MultiTranslate2D:
1858 //=============================================================================
1859 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiTranslate2D (GEOM::GEOM_Object_ptr theObject,
1860                                                        GEOM::GEOM_Object_ptr theVector1,
1861                                                        CORBA::Double theStep1,
1862                                                        CORBA::Long theNbTimes1,
1863                                                        GEOM::GEOM_Object_ptr theVector2,
1864                                                        CORBA::Double theStep2,
1865                                                        CORBA::Long theNbTimes2)
1866 {
1867   beginService( " GEOM_Superv_i::MultiTranslate2D" );
1868   MESSAGE("GEOM_Superv_i::MultiTranslate2D");
1869   getTransfOp();
1870   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiTranslate2D(theObject, theVector1, theStep1, theNbTimes1,
1871                                                              theVector2, theStep2, theNbTimes2);
1872   endService( " GEOM_Superv_i::MultiTranslate2D" );
1873   return anObj;
1874 }
1875
1876 //=============================================================================
1877 //  Rotate:
1878 //=============================================================================
1879 GEOM::GEOM_Object_ptr GEOM_Superv_i::Rotate (GEOM::GEOM_Object_ptr theObject,
1880                                              GEOM::GEOM_Object_ptr theAxis,
1881                                              CORBA::Double theAngle)
1882 {
1883   beginService( " GEOM_Superv_i::Rotate" );
1884   MESSAGE("GEOM_Superv_i::Rotate");
1885   getTransfOp();
1886   GEOM::GEOM_Object_ptr anObj = myTransfOp->Rotate(theObject, theAxis, theAngle);
1887   endService( " GEOM_Superv_i::Rotate" );
1888   return anObj;
1889 }
1890
1891 //=============================================================================
1892 //  RotateCopy:
1893 //=============================================================================
1894 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateCopy (GEOM::GEOM_Object_ptr theObject,
1895                                                  GEOM::GEOM_Object_ptr theAxis,
1896                                                  CORBA::Double theAngle)
1897 {
1898   beginService( " GEOM_Superv_i::RotateCopy" );
1899   MESSAGE("GEOM_Superv_i::RotateCopy");
1900   getTransfOp();
1901   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateCopy(theObject, theAxis, theAngle);
1902   endService( " GEOM_Superv_i::RotateCopy" );
1903   return anObj;
1904 }
1905 //=============================================================================
1906 //  RotateThreePoints:
1907 //=============================================================================
1908 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateThreePoints (GEOM::GEOM_Object_ptr theObject,
1909                                                         GEOM::GEOM_Object_ptr theCentPoint,
1910                                                         GEOM::GEOM_Object_ptr thePoint1,
1911                                                         GEOM::GEOM_Object_ptr thePoint2)
1912 {
1913   beginService( " GEOM_Superv_i::RotateThreePoints" );
1914   MESSAGE("GEOM_Superv_i::RotateThreePoints");
1915   getTransfOp();
1916   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateThreePoints(theObject, theCentPoint, thePoint1, thePoint2);
1917   endService( " GEOM_Superv_i::RotateThreePoints" );
1918   return anObj;
1919 }
1920
1921 //=============================================================================
1922 //  RotateThreePointsCopy:
1923 //=============================================================================
1924 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateThreePointsCopy (GEOM::GEOM_Object_ptr theObject,
1925                                                             GEOM::GEOM_Object_ptr theCentPoint,
1926                                                             GEOM::GEOM_Object_ptr thePoint1,
1927                                                             GEOM::GEOM_Object_ptr thePoint2)
1928 {
1929   beginService( " GEOM_Superv_i::RotateThreePointsCopy" );
1930   MESSAGE("GEOM_Superv_i::RotateThreePointsCopy");
1931   getTransfOp();
1932   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2);
1933   endService( " GEOM_Superv_i::RotateThreePointsCopy" );
1934   return anObj;
1935 }
1936
1937 //=============================================================================
1938 //  MultiRotate1D:
1939 //=============================================================================
1940 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate1D (GEOM::GEOM_Object_ptr theObject,
1941                                                     GEOM::GEOM_Object_ptr theAxis,
1942                                                     CORBA::Long theNbTimes)
1943 {
1944   beginService( " GEOM_Superv_i::MultiRotate1D" );
1945   MESSAGE("GEOM_Superv_i::MultiRotate1D");
1946   getTransfOp();
1947   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiRotate1D(theObject, theAxis, theNbTimes);
1948   endService( " GEOM_Superv_i::MultiRotate1D" );
1949   return anObj;
1950 }
1951
1952 //=============================================================================
1953 //  MultiRotate2D:
1954 //=============================================================================
1955 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate2D (GEOM::GEOM_Object_ptr theObject,
1956                                                     GEOM::GEOM_Object_ptr theAxis,
1957                                                     CORBA::Double theAngle,
1958                                                     CORBA::Long theNbTimes1,
1959                                                     CORBA::Double theStep,
1960                                                     CORBA::Long theNbTimes2)
1961 {
1962   beginService( " GEOM_Superv_i::MultiRotate2D" );
1963   MESSAGE("GEOM_Superv_i::MultiRotate2D");
1964   getTransfOp();
1965   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2);
1966   endService( " GEOM_Superv_i::MultiRotate2D" );
1967   return anObj;
1968 }
1969
1970 //=============================================================================
1971 //  MirrorPlane:
1972 //=============================================================================
1973 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlane (GEOM::GEOM_Object_ptr theObject,
1974                                                   GEOM::GEOM_Object_ptr thePlane)
1975 {
1976   beginService( " GEOM_Superv_i::MirrorPlane" );
1977   MESSAGE("GEOM_Superv_i::MirrorPlane");
1978   getTransfOp();
1979   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPlane(theObject, thePlane);
1980   endService( " GEOM_Superv_i::MirrorPlane" );
1981   return anObj;
1982 }
1983
1984 //=============================================================================
1985 //  MirrorPlaneCopy:
1986 //=============================================================================
1987 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlaneCopy (GEOM::GEOM_Object_ptr theObject,
1988                                                       GEOM::GEOM_Object_ptr thePlane)
1989 {
1990   beginService( " GEOM_Superv_i::MirrorPlaneCopy" );
1991   MESSAGE("GEOM_Superv_i::MirrorPlaneCopy");
1992   getTransfOp();
1993   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPlaneCopy(theObject, thePlane);
1994   endService( " GEOM_Superv_i::MirrorPlaneCopy" );
1995   return anObj;
1996 }
1997
1998 //=============================================================================
1999 //  MirrorAxis:
2000 //=============================================================================
2001 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxis (GEOM::GEOM_Object_ptr theObject,
2002                                                  GEOM::GEOM_Object_ptr theAxis)
2003 {
2004   beginService( " GEOM_Superv_i::MirrorAxis" );
2005   MESSAGE("GEOM_Superv_i::MirrorAxis");
2006   getTransfOp();
2007   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorAxis(theObject, theAxis);
2008   endService( " GEOM_Superv_i::MirrorAxis" );
2009   return anObj;
2010 }
2011
2012 //=============================================================================
2013 //  MirrorAxisCopy:
2014 //=============================================================================
2015 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxisCopy (GEOM::GEOM_Object_ptr theObject,
2016                                                      GEOM::GEOM_Object_ptr theAxis)
2017 {
2018   beginService( " GEOM_Superv_i::MirrorAxisCopy" );
2019   MESSAGE("GEOM_Superv_i::MirrorAxisCopy");
2020   getTransfOp();
2021   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorAxisCopy(theObject, theAxis);
2022   endService( " GEOM_Superv_i::MirrorAxisCopy" );
2023   return anObj;
2024 }
2025
2026 //=============================================================================
2027 //  MirrorPoint:
2028 //=============================================================================
2029 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPoint (GEOM::GEOM_Object_ptr theObject,
2030                                                   GEOM::GEOM_Object_ptr thePoint)
2031 {
2032   beginService( " GEOM_Superv_i::MirrorPoint" );
2033   MESSAGE("GEOM_Superv_i::MirrorPoint");
2034   getTransfOp();
2035   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPoint(theObject, thePoint);
2036   endService( " GEOM_Superv_i::MirrorPoint" );
2037   return anObj;
2038 }
2039
2040 //=============================================================================
2041 //  MirrorPointCopy:
2042 //=============================================================================
2043 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPointCopy (GEOM::GEOM_Object_ptr theObject,
2044                                                       GEOM::GEOM_Object_ptr thePoint)
2045 {
2046   beginService( " GEOM_Superv_i::MirrorPoint" );
2047   MESSAGE("GEOM_Superv_i::MirrorPointCopy");
2048   getTransfOp();
2049   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPointCopy(theObject, thePoint);
2050   endService( " GEOM_Superv_i::MirrorPoint" );
2051   return anObj;
2052 }
2053
2054 //=============================================================================
2055 //  OffsetShape:
2056 //=============================================================================
2057 GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShape (GEOM::GEOM_Object_ptr theObject,
2058                                                   CORBA::Double theOffset)
2059 {
2060   beginService( " GEOM_Superv_i::OffsetShape" );
2061   MESSAGE("GEOM_Superv_i::OffsetShape");
2062   getTransfOp();
2063   GEOM::GEOM_Object_ptr anObj = myTransfOp->OffsetShape(theObject, theOffset);
2064   endService( " GEOM_Superv_i::OffsetShape" );
2065   return anObj;
2066 }
2067
2068 //=============================================================================
2069 //  OffsetShapeCopy:
2070 //=============================================================================
2071 GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShapeCopy (GEOM::GEOM_Object_ptr theObject,
2072                                                       CORBA::Double theOffset)
2073 {
2074   beginService( " GEOM_Superv_i::OffsetShapeCopy" );
2075   MESSAGE("GEOM_Superv_i::OffsetShapeCopy");
2076   getTransfOp();
2077   GEOM::GEOM_Object_ptr anObj = myTransfOp->OffsetShapeCopy(theObject, theOffset);
2078   endService( " GEOM_Superv_i::OffsetShapeCopy" );
2079   return anObj;
2080 }
2081
2082 //=============================================================================
2083 //  ScaleShape:
2084 //=============================================================================
2085 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShape (GEOM::GEOM_Object_ptr theObject,
2086                                                  GEOM::GEOM_Object_ptr thePoint,
2087                                                  CORBA::Double theFactor)
2088 {
2089   beginService( " GEOM_Superv_i::ScaleShape" );
2090   MESSAGE("GEOM_Superv_i::ScaleShape");
2091   getTransfOp();
2092   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShape(theObject, thePoint, theFactor);
2093   endService( " GEOM_Superv_i::ScaleShape" );
2094   return anObj;
2095 }
2096
2097 //=============================================================================
2098 //  ScaleShapeCopy:
2099 //=============================================================================
2100 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeCopy (GEOM::GEOM_Object_ptr theObject,
2101                                                      GEOM::GEOM_Object_ptr thePoint,
2102                                                      CORBA::Double theFactor)
2103 {
2104   beginService( " GEOM_Superv_i::ScaleShapeCopy" );
2105   MESSAGE("GEOM_Superv_i::ScaleShapeCopy");
2106   getTransfOp();
2107   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeCopy(theObject, thePoint, theFactor);
2108   endService( " GEOM_Superv_i::ScaleShapeCopy" );
2109   return anObj;
2110 }
2111
2112 //=============================================================================
2113 //  ScaleShapeAlongAxes:
2114 //=============================================================================
2115 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeAlongAxes (GEOM::GEOM_Object_ptr theObject,
2116                                                           GEOM::GEOM_Object_ptr thePoint,
2117                                                           CORBA::Double theFactorX,
2118                                                           CORBA::Double theFactorY,
2119                                                           CORBA::Double theFactorZ)
2120 {
2121   beginService( " GEOM_Superv_i::ScaleShapeAlongAxes" );
2122   MESSAGE("GEOM_Superv_i::ScaleShapeAlongAxes");
2123   getTransfOp();
2124   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeAlongAxes
2125     (theObject, thePoint, theFactorX, theFactorY, theFactorZ);
2126   endService( " GEOM_Superv_i::ScaleShapeAlongAxes" );
2127   return anObj;
2128 }
2129
2130 //=============================================================================
2131 //  ScaleShapeAlongAxesCopy:
2132 //=============================================================================
2133 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeAlongAxesCopy (GEOM::GEOM_Object_ptr theObject,
2134                                                               GEOM::GEOM_Object_ptr thePoint,
2135                                                               CORBA::Double theFactorX,
2136                                                               CORBA::Double theFactorY,
2137                                                               CORBA::Double theFactorZ)
2138 {
2139   beginService( " GEOM_Superv_i::ScaleShapeAlongAxesCopy" );
2140   MESSAGE("GEOM_Superv_i::ScaleShapeAlongAxesCopy");
2141   getTransfOp();
2142   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeAlongAxesCopy
2143     (theObject, thePoint, theFactorX, theFactorY, theFactorZ);
2144   endService( " GEOM_Superv_i::ScaleShapeAlongAxesCopy" );
2145   return anObj;
2146 }
2147
2148 //=============================================================================
2149 //  PositionShape:
2150 //=============================================================================
2151 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShape (GEOM::GEOM_Object_ptr theObject,
2152                                                     GEOM::GEOM_Object_ptr theStartLCS,
2153                                                     GEOM::GEOM_Object_ptr theEndLCS)
2154 {
2155   beginService( " GEOM_Superv_i::PositionShape" );
2156   MESSAGE("GEOM_Superv_i::PositionShape");
2157   getTransfOp();
2158   GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionShape(theObject, theStartLCS, theEndLCS);
2159   endService( " GEOM_Superv_i::PositionShape" );
2160   return anObj;
2161 }
2162
2163 //=============================================================================
2164 //  PositionShapeCopy:
2165 //=============================================================================
2166 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShapeCopy (GEOM::GEOM_Object_ptr theObject,
2167                                                         GEOM::GEOM_Object_ptr theStartLCS,
2168                                                         GEOM::GEOM_Object_ptr theEndLCS)
2169 {
2170   beginService( " GEOM_Superv_i::PositionShapeCopy" );
2171   MESSAGE("GEOM_Superv_i::PositionShapeCopy");
2172   getTransfOp();
2173   GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionShapeCopy(theObject, theStartLCS, theEndLCS);
2174   endService( " GEOM_Superv_i::PositionShapeCopy" );
2175   return anObj;
2176 }
2177
2178 //=============================================================================
2179 //  PositionAlongPath:
2180 //=============================================================================
2181 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionAlongPath (GEOM::GEOM_Object_ptr theObject,
2182                                                         GEOM::GEOM_Object_ptr thePath,
2183                                                         CORBA::Double         theDistance,
2184                                                         CORBA::Boolean        theCopy,
2185                                                         CORBA::Boolean        theReverse)
2186 {
2187   beginService( " GEOM_Superv_i::PositionAlongPath" );
2188   MESSAGE("GEOM_Superv_i::PositionAlongPath");
2189   getTransfOp();
2190   GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionAlongPath(theObject, thePath, theDistance, theCopy, theReverse);
2191   endService( " GEOM_Superv_i::PositionAlongPath" );
2192   return anObj;
2193 }
2194
2195 //=============================== ShapesOperations ============================
2196 //=============================================================================
2197 //  Make:
2198 //=============================================================================
2199 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEdge (GEOM::GEOM_Object_ptr thePnt1,
2200                                                GEOM::GEOM_Object_ptr thePnt2)
2201 {
2202   beginService( " GEOM_Superv_i::MakeEdge" );
2203   MESSAGE("GEOM_Superv_i::MakeEdge");
2204   getShapesOp();
2205   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeEdge(thePnt1, thePnt2);
2206   endService( " GEOM_Superv_i::MakeEdge" );
2207   return anObj;
2208 }
2209
2210 //=============================================================================
2211 //  MakeEdgeOnCurveByLength:
2212 //=============================================================================
2213 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEdgeOnCurveByLength (GEOM::GEOM_Object_ptr theRefCurve,
2214                                                               CORBA::Double theLength,
2215                                                               GEOM::GEOM_Object_ptr theStartPoint)
2216 {
2217   beginService( " GEOM_Superv_i::MakeEdgeOnCurveByLength" );
2218   MESSAGE("GEOM_Superv_i::MakeEdgeOnCurveByLength");
2219   getShapesOp();
2220   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeEdgeOnCurveByLength(theRefCurve, theLength, theStartPoint);
2221   endService( " GEOM_Superv_i::MakeEdgeOnCurveByLength" );
2222   return anObj;
2223 }
2224
2225 //=============================================================================
2226 //  MakeWire:
2227 //=============================================================================
2228 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeWire (GEOM::GEOM_List_ptr theEdgesAndWires,
2229                                                CORBA::Double       theTolerance)
2230 {
2231   beginService( " GEOM_Superv_i::MakeWire" );
2232   MESSAGE("GEOM_Superv_i::MakeWire");
2233   if (GEOM_List_i<GEOM::ListOfGO>* aListImplEW =
2234       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theEdgesAndWires, myPOA).in())) {
2235     getShapesOp();
2236     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeWire(aListImplEW->GetList(), theTolerance);
2237     endService( " GEOM_Superv_i::MakeWire" );
2238     return anObj;
2239   }
2240   endService( " GEOM_Superv_i::MakeWire" );
2241   return NULL;
2242 }
2243
2244 //=============================================================================
2245 //  MakeFace:
2246 //=============================================================================
2247 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFace (GEOM::GEOM_Object_ptr theWire,
2248                                                CORBA::Boolean isPlanarWanted)
2249 {
2250   beginService( " GEOM_Superv_i::MakeFace" );
2251   MESSAGE("GEOM_Superv_i::MakeFace");
2252   getShapesOp();
2253   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeFace(theWire, isPlanarWanted);
2254   endService( " GEOM_Superv_i::MakeFace" );
2255   return anObj;
2256 }
2257
2258 //=============================================================================
2259 //  MakeFaceWires:
2260 //=============================================================================
2261 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceWires (GEOM::GEOM_List_ptr theWires,
2262                                                     CORBA::Boolean isPlanarWanted)
2263 {
2264   beginService( " GEOM_Superv_i::MakeFaceWires" );
2265   MESSAGE("GEOM_Superv_i::MakeFaceWires");
2266   if (GEOM_List_i<GEOM::ListOfGO>* aListImplW =
2267       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theWires, myPOA).in())) {
2268     getShapesOp();
2269     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeFaceWires(aListImplW->GetList(), isPlanarWanted);
2270     endService( " GEOM_Superv_i::MakeFaceWires" );
2271     return anObj;
2272   }
2273   endService( " GEOM_Superv_i::MakeFaceWires" );
2274   return NULL;
2275 }
2276
2277 //=============================================================================
2278 //  MakeFaceWithConstraints:
2279 //=============================================================================
2280 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceWithConstraints (GEOM::GEOM_List_ptr theConstraints)
2281 {
2282   beginService( " GEOM_Superv_i::MakeFaceWithConstraints" );
2283   MESSAGE("GEOM_Superv_i::MakeFaceWithConstraints");
2284   if (GEOM_List_i<GEOM::ListOfGO>* aConstraints =
2285       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theConstraints, myPOA).in())) {
2286     getShapesOp();
2287     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeFaceWithConstraints(aConstraints->GetList());
2288     endService( " GEOM_Superv_i::MakeFaceWithConstraints" );
2289     return anObj;
2290   }
2291   endService( " GEOM_Superv_i::MakeFaceWithConstraints" );
2292   return NULL;
2293 }
2294
2295 //=============================================================================
2296 //  MakeShell:
2297 //=============================================================================
2298 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeShell (GEOM::GEOM_List_ptr theFacesAndShells)
2299 {
2300   beginService( " GEOM_Superv_i::MakeShell" );
2301   MESSAGE("GEOM_Superv_i::MakeShell");
2302   if (GEOM_List_i<GEOM::ListOfGO>* aListImplFS =
2303       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theFacesAndShells, myPOA).in())) {
2304     getShapesOp();
2305     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeShell(aListImplFS->GetList());
2306     endService( " GEOM_Superv_i::MakeShell" );
2307     return anObj;
2308   }
2309   endService( " GEOM_Superv_i::MakeShell" );
2310   return NULL;
2311 }
2312
2313 //=============================================================================
2314 //  MakeSolidShell:
2315 //=============================================================================
2316 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShell (GEOM::GEOM_Object_ptr theShell)
2317 {
2318   beginService( " GEOM_Superv_i::MakeSolidShell" );
2319   MESSAGE("GEOM_Superv_i::MakeSolidShell");
2320   getShapesOp();
2321   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeSolidShell(theShell);
2322   endService( " GEOM_Superv_i::MakeSolidShell" );
2323   return anObj;
2324 }
2325
2326 //=============================================================================
2327 //  MakeSolidShells:
2328 //=============================================================================
2329 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShells (GEOM::GEOM_List_ptr theShells)
2330 {
2331   beginService( " GEOM_Superv_i::MakeSolidShells" );
2332   MESSAGE("GEOM_Superv_i::MakeSolidShells");
2333   if (GEOM_List_i<GEOM::ListOfGO>* aListImplS =
2334       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShells, myPOA).in())) {
2335     getShapesOp();
2336     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeSolidShells(aListImplS->GetList());
2337     endService( " GEOM_Superv_i::MakeSolidShells" );
2338     return anObj;
2339   }
2340   endService( " GEOM_Superv_i::MakeSolidShells" );
2341   return NULL;
2342 }
2343
2344 //=============================================================================
2345 //  MakeCompound:
2346 //=============================================================================
2347 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCompound (GEOM::GEOM_List_ptr theShapes)
2348 {
2349   beginService( " GEOM_Superv_i::MakeCompound" );
2350   MESSAGE("GEOM_Superv_i::MakeCompound");
2351   if (GEOM_List_i<GEOM::ListOfGO>* aListImpl =
2352       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShapes, myPOA).in())) {
2353     getShapesOp();
2354     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeCompound(aListImpl->GetList());
2355     endService( " GEOM_Superv_i::MakeCompound" );
2356     return anObj;
2357   }
2358   endService( " GEOM_Superv_i::MakeCompound" );
2359   return NULL;
2360 }
2361
2362 //=============================================================================
2363 //  MakeSolidFromConnectedFaces:
2364 //=============================================================================
2365 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidFromConnectedFaces (GEOM::GEOM_List_ptr theFacesOrShells,
2366                                                                   CORBA::Boolean isIntersect)
2367 {
2368   beginService( " GEOM_Superv_i::MakeSolidFromConnectedFaces" );
2369   MESSAGE("GEOM_Superv_i::MakeSolidFromConnectedFaces");
2370   if (GEOM_List_i<GEOM::ListOfGO>* aListImpl =
2371       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theFacesOrShells, myPOA).in())) {
2372     getShapesOp();
2373     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeSolidFromConnectedFaces(aListImpl->GetList(), isIntersect);
2374     endService( " GEOM_Superv_i::MakeSolidFromConnectedFaces" );
2375     return anObj;
2376   }
2377   endService( " GEOM_Superv_i::MakeSolidFromConnectedFaces" );
2378   return NULL;
2379 }
2380
2381 //=============================================================================
2382 //  MakeGlueFaces:
2383 //=============================================================================
2384 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFaces (GEOM::GEOM_Object_ptr theShape,
2385                                                     CORBA::Double   theTolerance,
2386                                                     CORBA::Boolean doKeepNonSolids)
2387 {
2388   beginService( " GEOM_Superv_i::MakeGlueFaces" );
2389   MESSAGE("GEOM_Superv_i::MakeGlueFaces");
2390   getShapesOp();
2391   GEOM::ListOfGO_var objList = new GEOM::ListOfGO;
2392   objList->length( 1 );
2393   objList[0] = theShape;
2394   GEOM::GEOM_Object_ptr anObj =
2395     myShapesOp->MakeGlueFaces(objList, theTolerance, doKeepNonSolids);
2396   endService( " GEOM_Superv_i::MakeGlueFaces" );
2397   return anObj;
2398 }
2399
2400 //=============================================================================
2401 //  GetGlueFaces:
2402 //=============================================================================
2403 GEOM::GEOM_List_ptr GEOM_Superv_i::GetGlueFaces (GEOM::GEOM_Object_ptr theShape,
2404                                                  CORBA::Double theTolerance)
2405 {
2406   beginService( " GEOM_Superv_i::GetGlueFaces" );
2407   MESSAGE("GEOM_Superv_i::GetGlueFaces");
2408   getShapesOp();
2409   GEOM::ListOfGO_var objList = new GEOM::ListOfGO;
2410   objList->length( 1 );
2411   objList[0] = theShape;
2412   GEOM::ListOfGO* aList = myShapesOp->GetGlueFaces(objList, theTolerance);
2413   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
2414   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
2415   endService( " GEOM_Superv_i::GetGlueFaces" );
2416   return aListPtr->_this();
2417 }
2418
2419 //=============================================================================
2420 //  MakeGlueFacesByList:
2421 //=============================================================================
2422 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFacesByList (GEOM::GEOM_Object_ptr theShape,
2423                                                           CORBA::Double theTolerance,
2424                                                           const GEOM::ListOfGO& theFaces,
2425                                                           CORBA::Boolean doKeepNonSolids,
2426                                                           CORBA::Boolean doGlueAllEdges)
2427 {
2428   beginService( " GEOM_Superv_i::MakeGlueFacesByList" );
2429   MESSAGE("GEOM_Superv_i::MakeGlueFacesByList");
2430   getShapesOp();
2431   GEOM::ListOfGO_var objList = new GEOM::ListOfGO;
2432   objList->length( 1 );
2433   objList[0] = theShape;
2434   GEOM::GEOM_Object_ptr anObj =
2435     myShapesOp->MakeGlueFacesByList(objList, theTolerance, theFaces,
2436                                     doKeepNonSolids, doGlueAllEdges);
2437   endService( " GEOM_Superv_i::MakeGlueFacesByList" );
2438   return anObj;
2439 }
2440
2441 //=============================================================================
2442 //  MakeExplode:
2443 //=============================================================================
2444 GEOM::GEOM_List_ptr GEOM_Superv_i::MakeExplode (GEOM::GEOM_Object_ptr theShape,
2445                                                     CORBA::Long theShapeType,
2446                                                     CORBA::Boolean isSorted)
2447 {
2448   beginService( " GEOM_Superv_i::MakeExplode" );
2449   MESSAGE("GEOM_Superv_i::MakeExplode");
2450   getShapesOp();
2451
2452   GEOM::ListOfGO* aList = myShapesOp->MakeExplode(theShape, theShapeType, isSorted);
2453   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
2454   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
2455   endService( " GEOM_Superv_i::MakeExplode" );
2456   return aListPtr->_this();
2457 }
2458
2459 //=============================================================================
2460 //  NumberOfFaces:
2461 //=============================================================================
2462 CORBA::Long GEOM_Superv_i::NumberOfFaces (GEOM::GEOM_Object_ptr theShape)
2463 {
2464   beginService( " GEOM_Superv_i::NumberOfFaces" );
2465   MESSAGE("GEOM_Superv_i::NumberOfFaces");
2466   getShapesOp();
2467   CORBA::Long aRes = myShapesOp->NumberOfFaces(theShape);
2468   endService( " GEOM_Superv_i::NumberOfFaces" );
2469   return aRes;
2470 }
2471
2472 //=============================================================================
2473 //  NumberOfEdges:
2474 //=============================================================================
2475 CORBA::Long GEOM_Superv_i::NumberOfEdges (GEOM::GEOM_Object_ptr theShape)
2476 {
2477   beginService( " GEOM_Superv_i::NumberOfEdges" );
2478   MESSAGE("GEOM_Superv_i::NumberOfEdges");
2479   getShapesOp();
2480   CORBA::Long aRes = myShapesOp->NumberOfEdges(theShape);
2481   endService( " GEOM_Superv_i::NumberOfEdges" );
2482   return aRes;
2483 }
2484
2485
2486 //=============================================================================
2487 //  ChangeOrientation:
2488 //=============================================================================
2489 GEOM::GEOM_Object_ptr GEOM_Superv_i::ChangeOrientation (GEOM::GEOM_Object_ptr theShape)
2490 {
2491   beginService( " GEOM_Superv_i::ChangeOrientation" );
2492   MESSAGE("GEOM_Superv_i::ChangeOrientation");
2493   getShapesOp();
2494   GEOM::GEOM_Object_ptr anObj = myShapesOp->ChangeOrientation(theShape);
2495   endService( " GEOM_Superv_i::ChangeOrientation" );
2496   return anObj;
2497 }
2498
2499
2500 //=============================================================================
2501 //  GetShapesOnShape:
2502 //=============================================================================
2503 GEOM::GEOM_List_ptr GEOM_Superv_i::GetShapesOnShape
2504                                           (GEOM::GEOM_Object_ptr theCheckShape,
2505                                            GEOM::GEOM_Object_ptr theShape,
2506                                            CORBA::Short theShapeType,
2507                                            GEOM::shape_state theState)
2508 {
2509   beginService( " GEOM_Superv_i::GetShapesOnShape" );
2510   MESSAGE("GEOM_Superv_i::GetShapesOnShape");
2511   getShapesOp();
2512   GEOM::ListOfGO* aList =
2513     myShapesOp->GetShapesOnShape(theCheckShape, theShape, theShapeType, theState);
2514   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
2515   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
2516   endService( " GEOM_Superv_i::GetShapesOnShape" );
2517   return aListPtr->_this();
2518 }
2519
2520
2521 //=============================================================================
2522 //  GetShapesOnShapeAsCompound:
2523 //=============================================================================
2524 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetShapesOnShapeAsCompound
2525                                           (GEOM::GEOM_Object_ptr theCheckShape,
2526                                            GEOM::GEOM_Object_ptr theShape,
2527                                            CORBA::Short theShapeType,
2528                                            GEOM::shape_state theState)
2529 {
2530   beginService( " GEOM_Superv_i::GetShapesOnShapeAsCompound" );
2531   MESSAGE("GEOM_Superv_i::GetShapesOnShapeAsCompound");
2532   getShapesOp();
2533   GEOM::GEOM_Object_ptr anObj =
2534     myShapesOp->GetShapesOnShapeAsCompound(theCheckShape, theShape, theShapeType, theState);
2535   endService( " GEOM_Superv_i::GetShapesOnShapeAsCompound" );
2536   return anObj;
2537 }
2538
2539
2540 //=============================== BlocksOperations ============================
2541 //=============================================================================
2542 //  MakeQuad4Vertices:
2543 //=============================================================================
2544 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad4Vertices (GEOM::GEOM_Object_ptr thePnt1,
2545                                                         GEOM::GEOM_Object_ptr thePnt2,
2546                                                         GEOM::GEOM_Object_ptr thePnt3,
2547                                                         GEOM::GEOM_Object_ptr thePnt4)
2548 {
2549   beginService( " GEOM_Superv_i::MakeQuad4Vertices" );
2550   MESSAGE("GEOM_Superv_i::MakeQuad4Vertices");
2551   getBlocksOp();
2552   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad4Vertices(thePnt1, thePnt2, thePnt3, thePnt4);
2553   endService( " GEOM_Superv_i::MakeQuad4Vertices" );
2554   return anObj;
2555 }
2556
2557 //=============================================================================
2558 //  MakeQuad:
2559 //=============================================================================
2560 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad (GEOM::GEOM_Object_ptr theEdge1,
2561                                                GEOM::GEOM_Object_ptr theEdge2,
2562                                                GEOM::GEOM_Object_ptr theEdge3,
2563                                                GEOM::GEOM_Object_ptr theEdge4)
2564 {
2565   beginService( " GEOM_Superv_i::MakeQuad" );
2566   MESSAGE("GEOM_Superv_i::MakeQuad");
2567   getBlocksOp();
2568   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad(theEdge1, theEdge2, theEdge3, theEdge4);
2569   endService( " GEOM_Superv_i::MakeQuad" );
2570   return anObj;
2571 }
2572
2573 //=============================================================================
2574 //  MakeQuad2Edges:
2575 //=============================================================================
2576 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad2Edges (GEOM::GEOM_Object_ptr theEdge1,
2577                                                      GEOM::GEOM_Object_ptr theEdge2)
2578 {
2579   beginService( " GEOM_Superv_i::MakeQuad2Edges" );
2580   MESSAGE("GEOM_Superv_i::MakeQuad2Edges");
2581   getBlocksOp();
2582   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad2Edges(theEdge1, theEdge2);
2583   endService( " GEOM_Superv_i::MakeQuad2Edges" );
2584   return anObj;
2585 }
2586
2587 //=============================================================================
2588 //  MakeHexa:
2589 //=============================================================================
2590 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa (GEOM::GEOM_Object_ptr theFace1,
2591                                                GEOM::GEOM_Object_ptr theFace2,
2592                                                GEOM::GEOM_Object_ptr theFace3,
2593                                                GEOM::GEOM_Object_ptr theFace4,
2594                                                GEOM::GEOM_Object_ptr theFace5,
2595                                                GEOM::GEOM_Object_ptr theFace6)
2596 {
2597   beginService( " GEOM_Superv_i::MakeHexa" );
2598   MESSAGE("GEOM_Superv_i::MakeHexa");
2599   getBlocksOp();
2600   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeHexa(theFace1, theFace2, theFace3, theFace4, theFace5, theFace6);
2601   endService( " GEOM_Superv_i::MakeHexa" );
2602   return anObj;
2603 }
2604
2605 //=============================================================================
2606 //  MakeHexa2Faces:
2607 //=============================================================================
2608 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa2Faces (GEOM::GEOM_Object_ptr theFace1,
2609                                                      GEOM::GEOM_Object_ptr theFace2)
2610 {
2611   beginService( " GEOM_Superv_i::MakeHexa2Faces" );
2612   MESSAGE("GEOM_Superv_i::MakeHexa2Faces");
2613   getBlocksOp();
2614   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeHexa2Faces(theFace1, theFace2);
2615   endService( " GEOM_Superv_i::MakeHexa2Faces" );
2616   return anObj;
2617 }
2618
2619 //=============================================================================
2620 //  GetPoint:
2621 //=============================================================================
2622 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetPoint (GEOM::GEOM_Object_ptr theShape,
2623                                                CORBA::Double   theX,
2624                                                CORBA::Double   theY,
2625                                                CORBA::Double   theZ,
2626                                                CORBA::Double   theEpsilon)
2627 {
2628   beginService( " GEOM_Superv_i::GetPoint" );
2629   MESSAGE("GEOM_Superv_i::GetPoint");
2630   getBlocksOp();
2631   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetPoint(theShape, theX, theY, theZ, theEpsilon);
2632   endService( " GEOM_Superv_i::GetPoint" );
2633   return anObj;
2634 }
2635
2636 //=============================================================================
2637 //  GetEdge:
2638 //=============================================================================
2639 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdge (GEOM::GEOM_Object_ptr theShape,
2640                                               GEOM::GEOM_Object_ptr thePoint1,
2641                                               GEOM::GEOM_Object_ptr thePoint2)
2642 {
2643   beginService( " GEOM_Superv_i::GetEdge" );
2644   MESSAGE("GEOM_Superv_i::GetEdge");
2645   getBlocksOp();
2646   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetEdge(theShape, thePoint1, thePoint2);
2647   endService( " GEOM_Superv_i::GetEdge" );
2648   return anObj;
2649 }
2650
2651 //=============================================================================
2652 //  GetEdgeNearPoint:
2653 //=============================================================================
2654 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdgeNearPoint (GEOM::GEOM_Object_ptr theShape,
2655                                                        GEOM::GEOM_Object_ptr thePoint)
2656 {
2657   beginService( " GEOM_Superv_i::GetEdgeNearPoint" );
2658   MESSAGE("GEOM_Superv_i::GetEdgeNearPoint");
2659   getBlocksOp();
2660   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetEdgeNearPoint(theShape, thePoint);
2661   endService( " GEOM_Superv_i::GetEdgeNearPoint" );
2662   return anObj;
2663 }
2664
2665 //=============================================================================
2666 //  GetFaceByPoints:
2667 //=============================================================================
2668 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByPoints (GEOM::GEOM_Object_ptr theShape,
2669                                                       GEOM::GEOM_Object_ptr thePoint1,
2670                                                       GEOM::GEOM_Object_ptr thePoint2,
2671                                                       GEOM::GEOM_Object_ptr thePoint3,
2672                                                       GEOM::GEOM_Object_ptr thePoint4)
2673 {
2674   beginService( " GEOM_Superv_i::GetFaceByPoints" );
2675   MESSAGE("GEOM_Superv_i::GetFaceByPoints");
2676   getBlocksOp();
2677   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4);
2678   endService( " GEOM_Superv_i::GetFaceByPoints" );
2679   return anObj;
2680 }
2681
2682 //=============================================================================
2683 //  GetFaceByEdges:
2684 //=============================================================================
2685 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByEdges (GEOM::GEOM_Object_ptr theShape,
2686                                                      GEOM::GEOM_Object_ptr theEdge1,
2687                                                      GEOM::GEOM_Object_ptr theEdge2)
2688 {
2689   beginService( " GEOM_Superv_i::GetFaceByEdges" );
2690   MESSAGE("GEOM_Superv_i::GetFaceByEdges");
2691   getBlocksOp();
2692   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByEdges(theShape, theEdge1, theEdge2);
2693   endService( " GEOM_Superv_i::GetFaceByEdges" );
2694   return anObj;
2695 }
2696
2697 //=============================================================================
2698 //  GetOppositeFace:
2699 //=============================================================================
2700 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetOppositeFace (GEOM::GEOM_Object_ptr theBlock,
2701                                                       GEOM::GEOM_Object_ptr theFace)
2702 {
2703   beginService( " GEOM_Superv_i::GetOppositeFace" );
2704   MESSAGE("GEOM_Superv_i::GetOppositeFace");
2705   getBlocksOp();
2706   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetOppositeFace(theBlock, theFace);
2707   endService( " GEOM_Superv_i::GetOppositeFace" );
2708   return anObj;
2709 }
2710
2711 //=============================================================================
2712 //  GetFaceNearPoint:
2713 //=============================================================================
2714 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceNearPoint (GEOM::GEOM_Object_ptr theShape,
2715                                                        GEOM::GEOM_Object_ptr thePoint)
2716 {
2717   beginService( " GEOM_Superv_i::GetFaceNearPoint" );
2718   MESSAGE("GEOM_Superv_i::GetFaceNearPoint");
2719   getBlocksOp();
2720   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceNearPoint(theShape, thePoint);
2721   endService( " GEOM_Superv_i::GetFaceNearPoint" );
2722   return anObj;
2723 }
2724
2725 //=============================================================================
2726 //  GetFaceByNormale:
2727 //=============================================================================
2728 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByNormale (GEOM::GEOM_Object_ptr theBlock,
2729                                                        GEOM::GEOM_Object_ptr theVector)
2730 {
2731   beginService( " GEOM_Superv_i::GetFaceByNormale" );
2732   MESSAGE("GEOM_Superv_i::GetFaceByNormale");
2733   getBlocksOp();
2734   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByNormale(theBlock, theVector);
2735   endService( " GEOM_Superv_i::GetFaceByNormale" );
2736   return anObj;
2737 }
2738
2739 //=============================================================================
2740 //  IsCompoundOfBlocks:
2741 //=============================================================================
2742 CORBA::Boolean GEOM_Superv_i::IsCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
2743                                                   CORBA::Long     theMinNbFaces,
2744                                                   CORBA::Long     theMaxNbFaces,
2745                                                   CORBA::Long&          theNbBlocks)
2746 {
2747   beginService( " GEOM_Superv_i::IsCompoundOfBlocks" );
2748   MESSAGE("GEOM_Superv_i::IsCompoundOfBlocks");
2749   getBlocksOp();
2750   CORBA::Boolean aRes = myBlocksOp->IsCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces, theNbBlocks);
2751   endService( " GEOM_Superv_i::IsCompoundOfBlocks" );
2752   return aRes;
2753 }
2754
2755 //=============================================================================
2756 //  CheckCompoundOfBlocks:
2757 //=============================================================================
2758 CORBA::Boolean GEOM_Superv_i::CheckCompoundOfBlocks
2759 (GEOM::GEOM_Object_ptr theCompound,
2760  GEOM::GEOM_IBlocksOperations::BCErrors_out theErrors)
2761 {
2762   beginService( " GEOM_Superv_i::CheckCompoundOfBlocks" );
2763   MESSAGE("GEOM_Superv_i::CheckCompoundOfBlocks");
2764   getBlocksOp();
2765   CORBA::Boolean aRes = myBlocksOp->CheckCompoundOfBlocks(theCompound, theErrors);
2766   endService( " GEOM_Superv_i::CheckCompoundOfBlocks" );
2767   return aRes;
2768 }
2769
2770 //=============================================================================
2771 //  PrintBCErrors:
2772 //=============================================================================
2773 char* GEOM_Superv_i::PrintBCErrors (GEOM::GEOM_Object_ptr theCompound,
2774                                     const GEOM::GEOM_IBlocksOperations::BCErrors& theErrors)
2775 {
2776   beginService( " GEOM_Superv_i::PrintBCErrors" );
2777   MESSAGE("GEOM_Superv_i::PrintBCErrors");
2778   getBlocksOp();
2779   char* anErrors = myBlocksOp->PrintBCErrors(theCompound, theErrors);
2780   endService( " GEOM_Superv_i::PrintBCErrors" );
2781   return anErrors;
2782 }
2783
2784 //=============================================================================
2785 //  ExplodeCompoundOfBlocks:
2786 //=============================================================================
2787 GEOM::GEOM_List_ptr GEOM_Superv_i::ExplodeCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
2788                                                                 CORBA::Long     theMinNbFaces,
2789                                                                 CORBA::Long     theMaxNbFaces)
2790 {
2791   beginService( " GEOM_Superv_i::ExplodeCompoundOfBlocks" );
2792   MESSAGE("GEOM_Superv_i::ExplodeCompoundOfBlocks");
2793   getBlocksOp();
2794   GEOM::ListOfGO* aBlocks = myBlocksOp->ExplodeCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces);
2795   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aBlocks));
2796   endService( " GEOM_Superv_i::ExplodeCompoundOfBlocks" );
2797   return aListPtr->_this();
2798 }
2799
2800 //=============================================================================
2801 //  GetBlockNearPoint:
2802 //=============================================================================
2803 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockNearPoint (GEOM::GEOM_Object_ptr theCompound,
2804                                                         GEOM::GEOM_Object_ptr thePoint)
2805 {
2806   beginService( " GEOM_Superv_i::GetBlockNearPoint" );
2807   MESSAGE("GEOM_Superv_i::GetBlockNearPoint");
2808   getBlocksOp();
2809   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetBlockNearPoint(theCompound, thePoint);
2810   endService( " GEOM_Superv_i::GetBlockNearPoint" );
2811   return anObj;
2812 }
2813
2814 //=============================================================================
2815 //  GetBlockByParts:
2816 //=============================================================================
2817 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockByParts (GEOM::GEOM_Object_ptr theCompound,
2818                                                       GEOM::GEOM_List_ptr theParts)
2819 {
2820   beginService( " GEOM_Superv_i::GetBlockByParts" );
2821   MESSAGE("GEOM_Superv_i::GetBlockByParts");
2822   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
2823       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theParts, myPOA).in())) {
2824     getBlocksOp();
2825     GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetBlockByParts(theCompound, aListImplP->GetList());
2826     endService( " GEOM_Superv_i::GetBlockByParts" );
2827     return anObj;
2828   }
2829   endService( " GEOM_Superv_i::GetBlockByParts" );
2830   return NULL;
2831 }
2832
2833 //=============================================================================
2834 //  GetBlocksByParts:
2835 //=============================================================================
2836 GEOM::GEOM_List_ptr GEOM_Superv_i::GetBlocksByParts (GEOM::GEOM_Object_ptr theCompound,
2837                                                          GEOM::GEOM_List_ptr theParts)
2838 {
2839   beginService( " GEOM_Superv_i::GetBlocksByParts" );
2840   MESSAGE("GEOM_Superv_i::GetBlocksByParts");
2841   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
2842       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theParts, myPOA).in())) {
2843     getBlocksOp();
2844
2845     GEOM::ListOfGO* aBlocks = myBlocksOp->GetBlocksByParts(theCompound, aListImplP->GetList());
2846     GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aBlocks));
2847     endService( " GEOM_Superv_i::GetBlocksByParts" );
2848     return aListPtr->_this();
2849   }
2850   endService( " GEOM_Superv_i::GetBlocksByParts" );
2851   return NULL;
2852 }
2853
2854 //=============================================================================
2855 //  MakeMultiTransformation1D:
2856 //=============================================================================
2857 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMultiTransformation1D (GEOM::GEOM_Object_ptr theBlock,
2858                                                                 CORBA::Long     theDirFace1,
2859                                                                 CORBA::Long     theDirFace2,
2860                                                                 CORBA::Long     theNbTimes)
2861 {
2862   beginService( " GEOM_Superv_i::MakeMultiTransformation1D" );
2863   MESSAGE("GEOM_Superv_i::MakeMultiTransformation1D");
2864   getBlocksOp();
2865   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeMultiTransformation1D(theBlock, theDirFace1, theDirFace2, theNbTimes);
2866   endService( " GEOM_Superv_i::MakeMultiTransformation1D" );
2867   return anObj;
2868 }
2869
2870 //=============================================================================
2871 //  MakeMultiTransformation2D:
2872 //=============================================================================
2873 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMultiTransformation2D
2874 (GEOM::GEOM_Object_ptr theBlock,
2875  CORBA::Long     theDirFace1U,
2876  CORBA::Long     theDirFace2U,
2877  CORBA::Long     theNbTimesU,
2878  CORBA::Long     theDirFace1V,
2879  CORBA::Long     theDirFace2V,
2880  CORBA::Long     theNbTimesV)
2881 {
2882   beginService( " GEOM_Superv_i::MakeMultiTransformation2D" );
2883   MESSAGE("GEOM_Superv_i::MakeMultiTransformation2D");
2884   getBlocksOp();
2885   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeMultiTransformation2D(theBlock,
2886                                                                       theDirFace1U, theDirFace2U, theNbTimesU,
2887                                                                       theDirFace1V, theDirFace2V, theNbTimesV);
2888   endService( " GEOM_Superv_i::MakeMultiTransformation2D" );
2889   return anObj;
2890 }
2891
2892 //=============================== CurvesOperations ============================
2893 //=============================================================================
2894 //  MakeCirclePntVecR:
2895 //=============================================================================
2896 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCirclePntVecR (GEOM::GEOM_Object_ptr theCenter,
2897                                                         GEOM::GEOM_Object_ptr theVector,
2898                                                         CORBA::Double theR)
2899 {
2900   beginService( " GEOM_Superv_i::MakeCirclePntVecR" );
2901   MESSAGE("GEOM_Superv_i::MakeCirclePntVecR");
2902   getCurvesOp();
2903   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCirclePntVecR(theCenter, theVector, theR);
2904   endService( " GEOM_Superv_i::MakeCirclePntVecR" );
2905   return anObj;
2906 }
2907
2908 //=============================================================================
2909 //  MakeCircleThreePnt:
2910 //=============================================================================
2911 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCircleThreePnt (GEOM::GEOM_Object_ptr thePnt1,
2912                                                          GEOM::GEOM_Object_ptr thePnt2,
2913                                                          GEOM::GEOM_Object_ptr thePnt3)
2914 {
2915   beginService( " GEOM_Superv_i::MakeCircleThreePnt" );
2916   MESSAGE("GEOM_Superv_i::MakeCircleThreePnt");
2917   getCurvesOp();
2918   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCircleThreePnt(thePnt1, thePnt2, thePnt3);
2919   endService( " GEOM_Superv_i::MakeCircleThreePnt" );
2920   return anObj;
2921 }
2922 //=============================================================================
2923 //  MakeCircleCenter2Pnt:
2924 //=============================================================================
2925 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCircleCenter2Pnt (GEOM::GEOM_Object_ptr thePnt1,
2926                                                              GEOM::GEOM_Object_ptr thePnt2,
2927                                                            GEOM::GEOM_Object_ptr thePnt3)
2928 {
2929   beginService( " GEOM_Superv_i::MakeCircleCenter2Pnt" );
2930   MESSAGE("GEOM_Superv_i::MakeCircleCenter2Pnt");
2931   getCurvesOp();
2932   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCircleCenter2Pnt(thePnt1, thePnt2, thePnt3);
2933   endService( " GEOM_Superv_i::MakeCircleCenter2Pnt" );
2934   return anObj;
2935 }
2936
2937 //=============================================================================
2938 //  MakeEllipse:
2939 //=============================================================================
2940 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEllipse (GEOM::GEOM_Object_ptr theCenter,
2941                                                   GEOM::GEOM_Object_ptr theVector,
2942                                                   CORBA::Double theRMajor,
2943                                                   CORBA::Double theRMinor)
2944 {
2945   beginService( " GEOM_Superv_i::MakeEllipse" );
2946   MESSAGE("GEOM_Superv_i::MakeEllipse");
2947   getCurvesOp();
2948   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeEllipse(theCenter, theVector, theRMajor, theRMinor);
2949   endService( " GEOM_Superv_i::MakeEllipse" );
2950   return anObj;
2951 }
2952
2953 //=============================================================================
2954 //  MakeEllipseVec:
2955 //=============================================================================
2956 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEllipseVec (GEOM::GEOM_Object_ptr theCenter,
2957                                                      GEOM::GEOM_Object_ptr theVector,
2958                                                      CORBA::Double theRMajor,
2959                                                      CORBA::Double theRMinor,
2960                                                      GEOM::GEOM_Object_ptr theVectorMajor)
2961 {
2962   beginService( " GEOM_Superv_i::MakeEllipseVec" );
2963   MESSAGE("GEOM_Superv_i::MakeEllipseVec");
2964   getCurvesOp();
2965   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeEllipseVec(theCenter, theVector, theRMajor, theRMinor, theVectorMajor);
2966   endService( " GEOM_Superv_i::MakeEllipseVec" );
2967   return anObj;
2968 }
2969
2970 //=============================================================================
2971 //  MakeArc:
2972 //=============================================================================
2973 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArc (GEOM::GEOM_Object_ptr thePnt1,
2974                                               GEOM::GEOM_Object_ptr thePnt2,
2975                                               GEOM::GEOM_Object_ptr thePnt3)
2976 {
2977   beginService( " GEOM_Superv_i::MakeArc" );
2978   MESSAGE("GEOM_Superv_i::MakeArc");
2979   getCurvesOp();
2980   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArc(thePnt1, thePnt2, thePnt3);
2981   endService( " GEOM_Superv_i::MakeArc" );
2982   return anObj;
2983 }
2984
2985 //=============================================================================
2986 //  MakeArcCenter:
2987 //=============================================================================
2988 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArcCenter (GEOM::GEOM_Object_ptr theCenter,
2989                                                     GEOM::GEOM_Object_ptr thePnt1,
2990                                                     GEOM::GEOM_Object_ptr thePnt2,
2991                                                     CORBA::Boolean theSense)
2992 {
2993   beginService( " GEOM_Superv_i::MakeArcCenter" );
2994   MESSAGE("GEOM_Superv_i::MakeArcCenter");
2995   getCurvesOp();
2996   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArcCenter(theCenter, thePnt1, thePnt2,theSense);
2997   endService( " GEOM_Superv_i::MakeArcCenter" );
2998   return anObj;
2999 }
3000
3001 //=============================================================================
3002 //  MakeArcOfEllipse:
3003 //=============================================================================
3004 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArcOfEllipse (GEOM::GEOM_Object_ptr thePnt1,
3005                                                        GEOM::GEOM_Object_ptr thePnt2,
3006                                                        GEOM::GEOM_Object_ptr thePnt3)
3007 {
3008   beginService( " GEOM_Superv_i::MakeArcOfEllipse" );
3009   MESSAGE("GEOM_Superv_i::MakeArcOfEllipse");
3010   getCurvesOp();
3011   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArcOfEllipse(thePnt1, thePnt2, thePnt3);
3012   endService( " GEOM_Superv_i::MakeArcOfEllipse" );
3013   return anObj;
3014 }
3015
3016 //=============================================================================
3017 //  MakePolyline:
3018 //=============================================================================
3019 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePolyline (GEOM::GEOM_List_ptr thePoints,
3020                                                    CORBA::Boolean      theIsClosed)
3021 {
3022   beginService( " GEOM_Superv_i::MakePolyline" );
3023   MESSAGE("GEOM_Superv_i::MakePolyline");
3024   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
3025       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
3026     getCurvesOp();
3027     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakePolyline(aListImplP->GetList(), theIsClosed);
3028     endService( " GEOM_Superv_i::MakePolyline" );
3029     return anObj;
3030   }
3031   endService( " GEOM_Superv_i::MakePolyline" );
3032   return NULL;
3033 }
3034
3035 //=============================================================================
3036 //  MakeSplineBezier:
3037 //=============================================================================
3038 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineBezier (GEOM::GEOM_List_ptr thePoints,
3039                                                        CORBA::Boolean      theIsClosed)
3040 {
3041   beginService( " GEOM_Superv_i::MakeSplineBezier" );
3042   MESSAGE("GEOM_Superv_i::MakeSplineBezier");
3043   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
3044       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
3045     getCurvesOp();
3046     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSplineBezier(aListImplP->GetList(), theIsClosed);
3047     endService( " GEOM_Superv_i::MakeSplineBezier" );
3048     return anObj;
3049   }
3050   endService( " GEOM_Superv_i::MakeSplineBezier" );
3051   return NULL;
3052 }
3053
3054 //=============================================================================
3055 //  MakeSplineInterpolation:
3056 //=============================================================================
3057 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineInterpolation (GEOM::GEOM_List_ptr thePoints,
3058                                                               CORBA::Boolean      theIsClosed,
3059                                                               CORBA::Boolean      theDoReordering)
3060 {
3061   beginService( " GEOM_Superv_i::MakeSplineInterpolation" );
3062   MESSAGE("GEOM_Superv_i::MakeSplineInterpolation");
3063   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
3064       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
3065     getCurvesOp();
3066     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSplineInterpolation(aListImplP->GetList(), theIsClosed, theDoReordering);
3067     endService( " GEOM_Superv_i::MakeSplineInterpolation" );
3068     return anObj;
3069   }
3070   endService( " GEOM_Superv_i::MakeSplineInterpolation" );
3071   return NULL;
3072 }
3073
3074 //=============================================================================
3075 //  MakeSketcher:
3076 //=============================================================================
3077 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSketcher (const char* theCommand,
3078                                                    GEOM::GEOM_List_ptr theWorkingPlane)
3079 {
3080   beginService( " GEOM_Superv_i::MakeSketcher" );
3081   MESSAGE("GEOM_Superv_i::MakeSketcher");
3082   if (GEOM_List_i<GEOM::ListOfDouble>* aListImplWP =
3083       dynamic_cast<GEOM_List_i<GEOM::ListOfDouble>*>(GetServant(theWorkingPlane, myPOA).in())) {
3084     getCurvesOp();
3085     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSketcher(theCommand, aListImplWP->GetList());
3086     endService( " GEOM_Superv_i::MakeSketcher" );
3087     return anObj;
3088   }
3089   endService( " GEOM_Superv_i::MakeSketcher" );
3090   return NULL;
3091 }
3092
3093 //=============================================================================
3094 //  Make3DSketcher:
3095 //=============================================================================
3096 GEOM::GEOM_Object_ptr GEOM_Superv_i::Make3DSketcher ( GEOM::GEOM_List_ptr theCoordinates)
3097 {
3098   beginService( " GEOM_Superv_i::Make3DSketcher" );
3099   MESSAGE("GEOM_Superv_i::Make3DSketcher");
3100   if (GEOM_List_i<GEOM::ListOfDouble>* aListImpl =
3101       dynamic_cast<GEOM_List_i<GEOM::ListOfDouble>*>(GetServant(theCoordinates, myPOA).in())) {
3102     getCurvesOp();
3103     GEOM::GEOM_Object_ptr anObj = myCurvesOp->Make3DSketcher(aListImpl->GetList());
3104     endService( " GEOM_Superv_i::Make3DSketcher" );
3105     return anObj;
3106   }
3107   endService( " GEOM_Superv_i::Make3DSketcher" );
3108   return NULL;
3109 }
3110
3111 //=============================== LocalOperations =============================
3112 //=============================================================================
3113 //  MakeFilletAll:
3114 //=============================================================================
3115 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletAll (GEOM::GEOM_Object_ptr theShape,
3116                                                     CORBA::Double theR)
3117 {
3118   beginService( " GEOM_Superv_i::MakeFilletAll" );
3119   MESSAGE("GEOM_Superv_i::MakeFilletAllMakeSketcher");
3120   getLocalOp();
3121   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletAll(theShape, theR);
3122   endService( " GEOM_Superv_i::MakeFilletAll" );
3123   return anObj;
3124 }
3125
3126 //=============================================================================
3127 //  MakeFilletEdges:
3128 //=============================================================================
3129 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletEdges (GEOM::GEOM_Object_ptr theShape,
3130                                                       CORBA::Double theR,
3131                                                       GEOM::GEOM_List_ptr theEdges)
3132 {
3133   beginService( " GEOM_Superv_i::MakeFilletEdges" );
3134   MESSAGE("GEOM_Superv_i::MakeFilletEdges");
3135   if (GEOM_List_i<GEOM::ListOfLong>* aListImplE =
3136       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
3137     getLocalOp();
3138     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletEdges(theShape, theR, aListImplE->GetList());
3139     endService( " GEOM_Superv_i::MakeFilletEdges" );
3140     return anObj;
3141   }
3142   endService( " GEOM_Superv_i::MakeFilletEdges" );
3143   return NULL;
3144 }
3145
3146 //=============================================================================
3147 //  MakeFilletEdges R1 R2:
3148 //=============================================================================
3149 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletEdgesR1R2 (GEOM::GEOM_Object_ptr theShape,
3150                                                           CORBA::Double theR1,
3151                                                           CORBA::Double theR2,
3152                                                           GEOM::GEOM_List_ptr theEdges)
3153 {
3154   beginService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
3155   MESSAGE("GEOM_Superv_i::MakeFilletEdgesR1R2");
3156   if (GEOM_List_i<GEOM::ListOfLong>* aListImplE =
3157       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
3158     getLocalOp();
3159     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletEdgesR1R2(theShape, theR1,
3160                                                                  theR2, aListImplE->GetList());
3161     endService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
3162     return anObj;
3163   }
3164   endService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
3165   return NULL;
3166 }
3167
3168 //=============================================================================
3169 //  MakeFilletFaces:
3170 //=============================================================================
3171 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletFaces (GEOM::GEOM_Object_ptr theShape,
3172                                                       CORBA::Double theR,
3173                                                       GEOM::GEOM_List_ptr theFaces)
3174 {
3175   beginService( " GEOM_Superv_i::MakeFilletFaces" );
3176   MESSAGE("GEOM_Superv_i::MakeFilletFaces");
3177   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
3178       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
3179     getLocalOp();
3180     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletFaces(theShape, theR, aListImplF->GetList());
3181     endService( " GEOM_Superv_i::MakeFilletFaces" );
3182     return anObj;
3183   }
3184   endService( " GEOM_Superv_i::MakeFilletFaces" );
3185   return NULL;
3186 }
3187
3188 //=============================================================================
3189 //  MakeFilletFaces R1 R2:
3190 //=============================================================================
3191 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletFacesR1R2 (GEOM::GEOM_Object_ptr theShape,
3192                                                           CORBA::Double theR1,
3193                                                           CORBA::Double theR2,
3194                                                           GEOM::GEOM_List_ptr theFaces)
3195 {
3196   beginService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
3197   MESSAGE("GEOM_Superv_i::MakeFilletFacesR1R2");
3198   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
3199       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
3200     getLocalOp();
3201     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletFacesR1R2(theShape, theR1, theR2,
3202                                                                  aListImplF->GetList());
3203     endService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
3204     return anObj;
3205   }
3206   endService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
3207   return NULL;
3208 }
3209
3210 //=============================================================================
3211 //  MakeFillet2D:
3212 //=============================================================================
3213 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFillet2D (GEOM::GEOM_Object_ptr theShape,
3214                                                    CORBA::Double theR,
3215                                                    GEOM::GEOM_List_ptr theVertexes)
3216 {
3217   beginService( " GEOM_Superv_i::MakeFillet2D" );
3218   MESSAGE("GEOM_Superv_i::MakeFillet2D");
3219   if (GEOM_List_i<GEOM::ListOfLong>* aListImplV =
3220       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theVertexes, myPOA).in())) {
3221     getLocalOp();
3222     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFillet2D(theShape, theR, aListImplV->GetList());
3223     endService( " GEOM_Superv_i::MakeFillet2D" );
3224     return anObj;
3225   }
3226   endService( " GEOM_Superv_i::MakeFillet2D" );
3227   return NULL;
3228 }
3229
3230 //=============================================================================
3231 //  MakeFillet1D:
3232 //=============================================================================
3233 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFillet1D (GEOM::GEOM_Object_ptr theShape,
3234                                                    CORBA::Double theR,
3235                                                    GEOM::GEOM_List_ptr theVertexes,
3236                                                    CORBA::Boolean doIgnoreSecantVertices)
3237 {
3238   beginService( " GEOM_Superv_i::MakeFillet1D" );
3239   MESSAGE("GEOM_Superv_i::MakeFillet1D");
3240   if (GEOM_List_i<GEOM::ListOfLong>* aListImplV =
3241       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theVertexes, myPOA).in())) {
3242     getLocalOp();
3243     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFillet1D
3244       (theShape, theR, aListImplV->GetList(), doIgnoreSecantVertices);
3245     endService( " GEOM_Superv_i::MakeFillet1D" );
3246     return anObj;
3247   }
3248   endService( " GEOM_Superv_i::MakeFillet1D" );
3249   return NULL;
3250 }
3251
3252 //=============================================================================
3253 //  MakeChamferAll:
3254 //=============================================================================
3255 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferAll (GEOM::GEOM_Object_ptr theShape, CORBA::Double theD)
3256 {
3257   beginService( " GEOM_Superv_i::MakeChamferAll" );
3258   MESSAGE("GEOM_Superv_i::MakeChamferAll");
3259   getLocalOp();
3260   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferAll(theShape, theD);
3261   endService( " GEOM_Superv_i::MakeChamferAll" );
3262   return anObj;
3263 }
3264
3265 //=============================================================================
3266 //  MakeChamferEdge:
3267 //=============================================================================
3268 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdge (GEOM::GEOM_Object_ptr theShape,
3269                                                       CORBA::Double theD1, CORBA::Double theD2,
3270                                                       CORBA::Long theFace1, CORBA::Long theFace2)
3271 {
3272   beginService( " GEOM_Superv_i::MakeChamferEdge" );
3273   MESSAGE("GEOM_Superv_i::MakeChamferEdge");
3274   getLocalOp();
3275   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2);
3276   endService( " GEOM_Superv_i::MakeChamferEdge" );
3277   return anObj;
3278 }
3279
3280 //=============================================================================
3281 //  MakeChamferEdgeAD:
3282 //=============================================================================
3283 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdgeAD (GEOM::GEOM_Object_ptr theShape,
3284                                                         CORBA::Double theD, CORBA::Double theAngle,
3285                                                         CORBA::Long theFace1, CORBA::Long theFace2)
3286 {
3287   beginService( " GEOM_Superv_i::MakeChamferEdgeAD" );
3288   MESSAGE("GEOM_Superv_i::MakeChamferEdgeAD");
3289   getLocalOp();
3290   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdgeAD(theShape, theD, theAngle, theFace1, theFace2);
3291   endService( " GEOM_Superv_i::MakeChamferEdgeAD" );
3292   return anObj;
3293 }
3294
3295 //=============================================================================
3296 //  MakeChamferFaces:
3297 //=============================================================================
3298 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferFaces (GEOM::GEOM_Object_ptr theShape,
3299                                                        CORBA::Double theD1, CORBA::Double theD2,
3300                                                        GEOM::GEOM_List_ptr theFaces)
3301 {
3302   beginService( " GEOM_Superv_i::MakeChamferFaces" );
3303   MESSAGE("GEOM_Superv_i::MakeChamferFaces");
3304   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
3305       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
3306     getLocalOp();
3307     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferFaces(theShape, theD1, theD2, aListImplF->GetList());
3308     endService( " GEOM_Superv_i::MakeChamferFaces" );
3309     return anObj;
3310   }
3311   endService( " GEOM_Superv_i::MakeChamferFaces" );
3312   return NULL;
3313 }
3314
3315 //=============================================================================
3316 //  MakeChamferFacesAD:
3317 //=============================================================================
3318 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferFacesAD (GEOM::GEOM_Object_ptr theShape,
3319                                                          CORBA::Double theD, CORBA::Double theAngle,
3320                                                          GEOM::GEOM_List_ptr theFaces)
3321 {
3322   beginService( " GEOM_Superv_i::MakeChamferFacesAD" );
3323   MESSAGE("GEOM_Superv_i::MakeChamferFacesAD");
3324   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
3325       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
3326     getLocalOp();
3327     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferFacesAD(theShape, theD, theAngle, aListImplF->GetList());
3328     endService( " GEOM_Superv_i::MakeChamferFacesAD" );
3329     return anObj;
3330   }
3331   endService( " GEOM_Superv_i::MakeChamferFacesAD" );
3332   return NULL;
3333 }
3334
3335 //=============================================================================
3336 //  MakeChamferEdges:
3337 //=============================================================================
3338 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdges (GEOM::GEOM_Object_ptr theShape,
3339                                                        CORBA::Double theD1, CORBA::Double theD2,
3340                                                        GEOM::GEOM_List_ptr theEdges)
3341 {
3342   beginService( " GEOM_Superv_i::MakeChamferEdges" );
3343   MESSAGE("GEOM_Superv_i::MakeChamferEdges");
3344   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
3345       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
3346     getLocalOp();
3347     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdges(theShape, theD1, theD2, aListImplF->GetList());
3348     endService( " GEOM_Superv_i::MakeChamferEdges" );
3349     return anObj;
3350   }
3351   endService( " GEOM_Superv_i::MakeChamferEdges" );
3352   return NULL;
3353 }
3354
3355 //=============================================================================
3356 //  MakeChamferEdgesAD:
3357 //=============================================================================
3358 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdgesAD (GEOM::GEOM_Object_ptr theShape,
3359                                                          CORBA::Double theD, CORBA::Double theAngle,
3360                                                          GEOM::GEOM_List_ptr theEdges)
3361 {
3362   beginService( " GEOM_Superv_i::MakeChamferEdgesAD" );
3363   MESSAGE("GEOM_Superv_i::MakeChamferEdgesAD");
3364   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
3365       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
3366     getLocalOp();
3367     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdgesAD(theShape, theD, theAngle, aListImplF->GetList());
3368     endService( " GEOM_Superv_i::MakeChamferEdgesAD" );
3369     return anObj;
3370   }
3371   endService( " GEOM_Superv_i::MakeChamferEdgesAD" );
3372   return NULL;
3373 }
3374
3375 //=============================================================================
3376 //  MakeArchimede:
3377 //=============================================================================
3378 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArchimede (GEOM::GEOM_Object_ptr theShape,
3379                                                     CORBA::Double theWeight,
3380                                                     CORBA::Double theWaterDensity,
3381                                                     CORBA::Double theMeshingDeflection)
3382 {
3383   beginService( " GEOM_Superv_i::MakeArchimede" );
3384   MESSAGE("GEOM_Superv_i::MakeArchimede");
3385   getLocalOp();
3386   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeArchimede(theShape, theWeight, theWaterDensity, theMeshingDeflection);
3387   endService( " GEOM_Superv_i::MakeArchimede" );
3388   return anObj;
3389 }
3390
3391 //=============================================================================
3392 //  GetSubShapeIndexMakeFilletAll:
3393 //=============================================================================
3394 CORBA::Long GEOM_Superv_i::GetSubShapeIndex (GEOM::GEOM_Object_ptr theShape,
3395                                              GEOM::GEOM_Object_ptr theSubShape)
3396 {
3397   beginService( " GEOM_Superv_i::GetSubShapeIndex" );
3398   MESSAGE("GEOM_Superv_i::GetSubShapeIndexMakeArchimede");
3399   getLocalOp();
3400   CORBA::Long aRes = myLocalOp->GetSubShapeIndex(theShape, theSubShape);
3401   endService( " GEOM_Superv_i::GetSubShapeIndex" );
3402   return aRes;
3403 }
3404
3405 //=============================== GroupOperations =============================
3406 //=============================================================================
3407 //  CreateGroup:
3408 //=============================================================================
3409 GEOM::GEOM_Object_ptr GEOM_Superv_i::CreateGroup (GEOM::GEOM_Object_ptr theMainShape,
3410                                                   CORBA::Long theShapeType)
3411 {
3412   beginService( " GEOM_Superv_i::CreateGroup" );
3413   MESSAGE("GEOM_Superv_i::CreateGroup");
3414   getGroupOp();
3415   GEOM::GEOM_Object_ptr anObj = myGroupOp->CreateGroup(theMainShape, theShapeType);
3416   endService( " GEOM_Superv_i::CreateGroup" );
3417   return anObj;
3418 }
3419
3420 //=============================================================================
3421 //  AddObject:
3422 //=============================================================================
3423 void GEOM_Superv_i::AddObject (GEOM::GEOM_Object_ptr theGroup,
3424                                CORBA::Long theSubShapeId)
3425 {
3426   beginService( " GEOM_Superv_i::AddObject" );
3427   MESSAGE("GEOM_Superv_i::AddObject");
3428   getGroupOp();
3429   myGroupOp->AddObject(theGroup, theSubShapeId);
3430   endService( " GEOM_Superv_i::AddObject" );
3431 }
3432
3433 //=============================================================================
3434 //  RemoveObject:
3435 //=============================================================================
3436 void GEOM_Superv_i::RemoveObject (GEOM::GEOM_Object_ptr theGroup,
3437                                   CORBA::Long theSubShapeId)
3438 {
3439   beginService( " GEOM_Superv_i::RemoveObject" );
3440   MESSAGE("GEOM_Superv_i::RemoveObject");
3441   getGroupOp();
3442   myGroupOp->RemoveObject(theGroup, theSubShapeId);
3443   endService( " GEOM_Superv_i::RemoveObject" );
3444 }
3445
3446 //=============================================================================
3447 //  GetType:
3448 //=============================================================================
3449 CORBA::Long GEOM_Superv_i::GetType (GEOM::GEOM_Object_ptr theGroup)
3450 {
3451   beginService( " GEOM_Superv_i::GetType" );
3452   MESSAGE("GEOM_Superv_i::GetType");
3453   getGroupOp();
3454   CORBA::Long aResult = myGroupOp->GetType(theGroup);
3455   endService( " GEOM_Superv_i::GetType" );
3456   return aResult;
3457 }
3458
3459 //=============================================================================
3460 //  GetMainShape:
3461 //=============================================================================
3462 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetMainShape (GEOM::GEOM_Object_ptr theGroup)
3463 {
3464   beginService( " GEOM_Superv_i::GetMainShape" );
3465   MESSAGE("GEOM_Superv_i::GetMainShape");
3466   getGroupOp();
3467   GEOM::GEOM_Object_ptr anObj = myGroupOp->GetMainShape(theGroup);
3468   endService( " GEOM_Superv_i::GetMainShape" );
3469   return anObj;
3470 }
3471
3472 //=============================================================================
3473 //  GetObjects:
3474 //=============================================================================
3475 GEOM::GEOM_List_ptr GEOM_Superv_i::GetObjects (GEOM::GEOM_Object_ptr theGroup)
3476 {
3477   beginService( " GEOM_Superv_i::GetObjects" );
3478   MESSAGE("GEOM_Superv_i::GetObjects");
3479   getGroupOp();
3480
3481   GEOM::ListOfLong* aList = myGroupOp->GetObjects(theGroup);
3482   GEOM_List_i<GEOM::ListOfLong>* aListPtr = new GEOM_List_i<GEOM::ListOfLong>(*(aList));
3483   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
3484   endService( " GEOM_Superv_i::GetObjects" );
3485   return aListPtr->_this();
3486 }
3487
3488 //=============================== Import/Export Operations =============================
3489 //=============================================================================
3490 //  Export STL
3491 //=============================================================================
3492 void GEOM_Superv_i::ExportSTL( GEOM::GEOM_Object_ptr theObject,
3493                                const char*           theFileName,
3494                                const bool            theIsASCII,
3495                                CORBA::Double         theDeflection,
3496                                const bool            theIsRelative )
3497 {
3498   beginService( " GEOM_Superv_i::ExportSTL" );
3499   MESSAGE("GEOM_Superv_i::ExportSTL");
3500   getSTLPluginOp();
3501   mySTLOp->ExportSTL( theObject, theFileName, theIsASCII, theDeflection, theIsRelative );
3502   endService( " GEOM_Superv_i::ExportSTL" );
3503 }
3504
3505 //=============================================================================
3506 //  Import STL
3507 //=============================================================================
3508 GEOM::GEOM_Object_ptr GEOM_Superv_i::ImportSTL( const char* theFileName )
3509 {
3510   beginService( " GEOM_Superv_i::ImportSTL" );
3511   MESSAGE("GEOM_Superv_i::ImportSTL");
3512   getSTLPluginOp();
3513   GEOM::ListOfGO* aSeq = mySTLOp->ImportSTL(theFileName );
3514   GEOM::GEOM_Object_ptr anObj;
3515
3516   if (aSeq->length() > 0) {
3517     anObj = aSeq->operator[](0);
3518   }
3519
3520   endService( " GEOM_Superv_i::ImportSTL" );
3521   return anObj;
3522 }
3523
3524 //=============================================================================
3525 //  Export BREP
3526 //=============================================================================
3527 void GEOM_Superv_i::ExportBREP( GEOM::GEOM_Object_ptr theObject,
3528                                 const char*           theFileName )
3529 {
3530   beginService( " GEOM_Superv_i::ExportBREP" );
3531   MESSAGE("GEOM_Superv_i::ExportBREP");
3532   getBREPPluginOp();
3533   myBREPOp->ExportBREP( theObject, theFileName );
3534   endService( " GEOM_Superv_i::ExportBREP" );
3535 }
3536
3537 //=============================================================================
3538 //  Import BREP
3539 //=============================================================================
3540 GEOM::GEOM_Object_ptr GEOM_Superv_i::ImportBREP( const char* theFileName )
3541 {
3542   beginService( " GEOM_Superv_i::ImportBREP" );
3543   MESSAGE("GEOM_Superv_i::ImportBREP");
3544   getBREPPluginOp();
3545   GEOM::ListOfGO* aSeq = myBREPOp->ImportBREP(theFileName );
3546   GEOM::GEOM_Object_ptr anObj;
3547
3548   if (aSeq->length() > 0) {
3549     anObj = aSeq->operator[](0);
3550   }
3551
3552   endService( " GEOM_Superv_i::ImportBREP" );
3553   return anObj;
3554 }
3555
3556 //=============================================================================
3557 //  Export STEP
3558 //=============================================================================
3559 void GEOM_Superv_i::ExportSTEP( GEOM::GEOM_Object_ptr theObject,
3560                                 const char*           theFileName )
3561 {
3562   beginService( " GEOM_Superv_i::ExportSTEP" );
3563   MESSAGE("GEOM_Superv_i::ExportSTEP");
3564   getSTEPPluginOp();
3565   mySTEPOp->ExportSTEP( theObject, theFileName );
3566   endService( " GEOM_Superv_i::ExportSTEP" );
3567 }
3568
3569 //=============================================================================
3570 //  Import STEP
3571 //=============================================================================
3572 GEOM::GEOM_Object_ptr GEOM_Superv_i::ImportSTEP( const char* theFileName,
3573                                                  const bool  theIsIgnoreUnits )
3574 {
3575   beginService( " GEOM_Superv_i::ImportSTEP" );
3576   MESSAGE("GEOM_Superv_i::ImportSTEP");
3577   getSTEPPluginOp();
3578   GEOM::ListOfGO* aSeq = mySTEPOp->ImportSTEP(theFileName, theIsIgnoreUnits );
3579   GEOM::GEOM_Object_ptr anObj;
3580
3581   if (aSeq->length() > 0) {
3582     anObj = aSeq->operator[](0);
3583   }
3584
3585   endService( " GEOM_Superv_i::ImportSTEP" );
3586   return anObj;
3587 }
3588
3589 //=============================================================================
3590 //  Export IGES
3591 //=============================================================================
3592 void GEOM_Superv_i::ExportIGES( GEOM::GEOM_Object_ptr theObject,
3593                                 const char*           theFileName,
3594                                 const char*           theVersion )
3595 {
3596   beginService( " GEOM_Superv_i::ExportIGES" );
3597   MESSAGE("GEOM_Superv_i::ExportIGES");
3598   getIGESPluginOp();
3599   myIGESOp->ExportIGES( theObject, theFileName, theVersion );
3600   endService( " GEOM_Superv_i::ExportIGES" );
3601 }
3602
3603 //=============================================================================
3604 //  Import IGES
3605 //=============================================================================
3606 GEOM::GEOM_Object_ptr GEOM_Superv_i::ImportIGES( const char* theFileName,
3607                                                  const bool  theIsIgnoreUnits )
3608 {
3609   beginService( " GEOM_Superv_i::ImportIGES" );
3610   MESSAGE("GEOM_Superv_i::ImportIGES");
3611   getIGESPluginOp();
3612   GEOM::ListOfGO* aSeq = myIGESOp->ImportIGES(theFileName, theIsIgnoreUnits );
3613   GEOM::GEOM_Object_ptr anObj;
3614
3615   if (aSeq->length() > 0) {
3616     anObj = aSeq->operator[](0);
3617   }
3618
3619   endService( " GEOM_Superv_i::ImportIGES" );
3620   return anObj;
3621 }
3622
3623 //=============================================================================
3624 //  Export XAO
3625 //=============================================================================
3626 CORBA::Boolean GEOM_Superv_i::ExportXAO( GEOM::GEOM_Object_ptr shape,
3627                                          const GEOM::ListOfGO& groups,
3628                                          const GEOM::ListOfFields& fields,
3629                                          const char* author, const char* fileName )
3630 {
3631   beginService( " GEOM_Superv_i::ExportXAO" );
3632   MESSAGE("GEOM_Superv_i::ExportXAO");
3633   getXAOPluginOp();
3634   CORBA::Boolean isGood = myXAOOp->ExportXAO( shape, groups, fields, author, fileName );
3635   endService( " GEOM_Superv_i::ExportXAO" );
3636   return isGood;
3637 }
3638
3639 //=============================================================================
3640 //  Import XAO
3641 //=============================================================================
3642 CORBA::Boolean GEOM_Superv_i::ImportXAO( const char* fileName,
3643                                          GEOM::GEOM_Object_out shape,
3644                                          GEOM::ListOfGO_out subShapes,
3645                                          GEOM::ListOfGO_out groups,
3646                                          GEOM::ListOfFields_out fields )
3647 {
3648   return false;
3649 }
3650
3651 //=============================================================================
3652 //  Export VTK
3653 //=============================================================================
3654 void GEOM_Superv_i::ExportVTK(  GEOM::GEOM_Object_ptr theObject,
3655                                 const char*           theFileName,
3656                                 CORBA::Double         theDeflection )
3657 {
3658   beginService( " GEOM_Superv_i::ExportVTK" );
3659   MESSAGE("GEOM_Superv_i::ExportVTK");
3660   getVTKPluginOp();
3661   myVTKOp->ExportVTK( theObject, theFileName, theDeflection );
3662   endService( " GEOM_Superv_i::ExportVTK" );
3663 }
3664
3665 //=============================== Advanced Operations =============================
3666 //=============================================================================
3667 //  MakePipeTShape
3668 //=============================================================================
3669 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShape
3670                     (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
3671                      CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
3672                      CORBA::Boolean theHexMesh)
3673 {
3674   beginService( " GEOM_Superv_i::MakePipeTShape" );
3675   MESSAGE("GEOM_Superv_i::MakePipeTShape");
3676   getAdvancedOp();
3677
3678   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShape(theR1, theW1, theL1, theR2, theW2, theL2, theHexMesh);
3679   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3680   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3681   endService( " GEOM_Superv_i::MakePipeTShape" );
3682   return aSeqPtr->_this();
3683 }
3684
3685 //=============================================================================
3686 //  MakePipeTShapeWithPosition
3687 //=============================================================================
3688 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeWithPosition
3689                     (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
3690                      CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2, CORBA::Boolean theHexMesh,
3691                      GEOM::GEOM_Object_ptr theP1, GEOM::GEOM_Object_ptr theP2, GEOM::GEOM_Object_ptr theP3)
3692 {
3693   beginService( " GEOM_Superv_i::MakePipeTShapeWithPosition" );
3694   MESSAGE("GEOM_Superv_i::MakePipeTShapeWithPosition");
3695   getAdvancedOp();
3696
3697   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeWithPosition(theR1, theW1, theL1, theR2, theW2, theL2, theHexMesh, theP1, theP2, theP3);
3698   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3699   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3700   endService( " GEOM_Superv_i::MakePipeTShapeWithPosition" );
3701   return aSeqPtr->_this();
3702 }
3703
3704 //=============================================================================
3705 //  MakePipeTShapeChamfer
3706 //=============================================================================
3707 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeChamfer
3708                     (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
3709                      CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
3710                      CORBA::Double theH, CORBA::Double theW, CORBA::Boolean theHexMesh)
3711 {
3712   beginService( " GEOM_Superv_i::MakePipeTShapeChamfer" );
3713   MESSAGE("GEOM_Superv_i::MakePipeTShapeChamfer");
3714   getAdvancedOp();
3715
3716   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeChamfer(theR1, theW1, theL1, theR2, theW2, theL2, theH, theW, theHexMesh);
3717   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3718   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3719   endService( " GEOM_Superv_i::MakePipeTShapeChamfer" );
3720   return aSeqPtr->_this();
3721 }
3722
3723 //=============================================================================
3724 //  MakePipeTShapeChamferWithPosition
3725 //=============================================================================
3726 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeChamferWithPosition
3727                     (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
3728                      CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
3729                      CORBA::Double theH, CORBA::Double theW, CORBA::Boolean theHexMesh,
3730                      GEOM::GEOM_Object_ptr theP1, GEOM::GEOM_Object_ptr theP2, GEOM::GEOM_Object_ptr theP3)
3731 {
3732   beginService( " GEOM_Superv_i::MakePipeTShapeChamferWithPosition" );
3733   MESSAGE("GEOM_Superv_i::MakePipeTShapeChamferWithPosition");
3734   getAdvancedOp();
3735
3736   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeChamferWithPosition(theR1, theW1, theL1, theR2, theW2, theL2, theH, theW, theHexMesh, theP1, theP2, theP3);
3737   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3738   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3739   endService( " GEOM_Superv_i::MakePipeTShapeChamferWithPosition" );
3740   return aSeqPtr->_this();
3741 }
3742
3743 //=============================================================================
3744 //  MakePipeTShapeFillet
3745 //=============================================================================
3746 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeFillet
3747                     (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
3748                      CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
3749                      CORBA::Double theRF, CORBA::Boolean theHexMesh)
3750 {
3751   beginService( " GEOM_Superv_i::MakePipeTShapeFillet" );
3752   MESSAGE("GEOM_Superv_i::MakePipeTShapeFillet");
3753   getAdvancedOp();
3754
3755   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeFillet(theR1, theW1, theL1, theR2, theW2, theL2, theRF, theHexMesh);
3756   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3757   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3758   endService( " GEOM_Superv_i::MakePipeTShapeFillet" );
3759   return aSeqPtr->_this();
3760 }
3761
3762 //=============================================================================
3763 //  MakePipeTShapeFilletWithPosition
3764 //=============================================================================
3765 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeFilletWithPosition
3766                     (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
3767                      CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
3768                      CORBA::Double theRF, CORBA::Boolean theHexMesh,
3769                      GEOM::GEOM_Object_ptr theP1, GEOM::GEOM_Object_ptr theP2, GEOM::GEOM_Object_ptr theP3)
3770 {
3771   beginService( " GEOM_Superv_i::MakePipeTShapeFilletWithPosition" );
3772   MESSAGE("GEOM_Superv_i::MakePipeTShapeFilletWithPosition");
3773   getAdvancedOp();
3774
3775   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeFilletWithPosition(theR1, theW1, theL1, theR2, theW2, theL2, theRF, theHexMesh, theP1, theP2, theP3);
3776   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3777   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3778   endService( " GEOM_Superv_i::MakePipeTShapeFilletWithPosition" );
3779   return aSeqPtr->_this();
3780 }
3781
3782 //=============================================================================
3783 //  MakeDividedDisk
3784 //=============================================================================
3785 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDividedDisk (CORBA::Double theR, CORBA::Double theRatio, 
3786                                                       CORBA::Short theOrientation, GEOM::pattern thePattern)
3787 {
3788   beginService( " GEOM_Superv_i::MakeDividedDisk" );
3789   MESSAGE("GEOM_Superv_i::MakeDividedDisk");
3790   getAdvancedOp();
3791   GEOM::GEOM_Object_ptr anObj = myAdvancedOp->MakeDividedDisk(theR, theRatio, theOrientation, thePattern);
3792   endService( " GEOM_Superv_i::MakeDividedDisk" );
3793   return anObj;
3794 }
3795
3796 //=============================================================================
3797 //  MakeDividedCylinder
3798 //=============================================================================
3799 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDividedCylinder (CORBA::Double theR, 
3800                                                           CORBA::Double theH,
3801                                                           GEOM::pattern thePattern)
3802 {
3803   beginService( " GEOM_Superv_i::MakeDividedCylinder" );
3804   MESSAGE("GEOM_Superv_i::MakeDividedCylinder");
3805   getAdvancedOp();
3806   GEOM::GEOM_Object_ptr anObj = myAdvancedOp->MakeDividedCylinder(theR, theH, thePattern);
3807   endService( " GEOM_Superv_i::MakeDividedCylinder" );
3808   return anObj;
3809 }
3810
3811 //=============================================================================
3812 //  MakeSmoothingSurface
3813 //=============================================================================
3814 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSmoothingSurface (GEOM::GEOM_List_ptr thelPoints)
3815 {
3816   beginService( " GEOM_Superv_i::MakeSmoothingSurface" );
3817   MESSAGE("GEOM_Superv_i::MakeSmoothingSurface");
3818   getAdvancedOp();
3819   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
3820       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thelPoints, myPOA).in())) {
3821     getCurvesOp();
3822     GEOM::GEOM_Object_ptr anObj = myAdvancedOp->MakeSmoothingSurface(aListImplP->GetList(), 2, 8, 0.);
3823     endService( " GEOM_Superv_i::MakeSmoothingSurface" );
3824     return anObj;
3825   }
3826   endService( " GEOM_Superv_i::MakeSmoothingSurface" );
3827   return NULL;
3828 }
3829
3830 /*@@ insert new functions before this line @@ do not remove this line @@*/
3831
3832 //=====================================================================================
3833 // EXPORTED METHODS
3834 //=====================================================================================
3835 extern "C"
3836 {
3837 #ifdef WIN32
3838   __declspec( dllexport )
3839 #endif
3840   PortableServer::ObjectId * GEOM_SupervEngine_factory(CORBA::ORB_ptr orb,
3841                                                        PortableServer::POA_ptr poa,
3842                                                        PortableServer::ObjectId * contId,
3843                                                        const char *instanceName,
3844                                                        const char * interfaceName)
3845   {
3846     GEOM_Superv_i * myGEOM_Superv_i = new GEOM_Superv_i(orb, poa, contId, instanceName, interfaceName);
3847     //Don't understand the reason why this component is registered ???
3848 //    myGEOM_Superv_i->register_name("/myGEOM_Superv");
3849     return myGEOM_Superv_i->getId() ;
3850   }
3851 }