Salome HOME
0016757: EDF 546 GEOM : Add Face and Disc in geom primitives
[modules/geom.git] / src / GEOM_I_Superv / GEOM_Superv_i.cc
1 // Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
2 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
3 // 
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either 
7 // version 2.1 of the License.
8 // 
9 // This library is distributed in the hope that it will be useful 
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
12 // Lesser General Public License for more details.
13 //
14 // You should have received a copy of the GNU Lesser General Public  
15 // License along with this library; if not, write to the Free Software 
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 //
18 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 //
20
21 #include "GEOM_Superv_i.hh"
22 #include "SALOME_LifeCycleCORBA.hxx"
23
24 #include CORBA_SERVER_HEADER(SALOME_Session)
25 #include "SALOMEDSClient_ClientFactory.hxx"
26
27 #define isNewStudy(a,b) (a > 0 && a != b)
28
29 using namespace std;
30 //=============================================================================
31 //  constructor:
32 //=============================================================================
33 GEOM_Superv_i::GEOM_Superv_i(CORBA::ORB_ptr orb,
34                              PortableServer::POA_ptr poa,
35                              PortableServer::ObjectId * contId, 
36                              const char *instanceName, 
37                              const char *interfaceName) :
38   Engines_Component_i(orb, poa, contId, instanceName, interfaceName)
39 {
40   MESSAGE("GEOM_Superv_i::GEOM_Superv_i");
41
42   _thisObj = this ;
43   _id = _poa->activate_object(_thisObj);
44   name_service = new SALOME_NamingService(_orb);
45   //get RootPOA (the default)
46   //myPOA = PortableServer::RefCountServantBase::_default_POA();
47   CORBA::Object_var anObj = _orb->resolve_initial_references("RootPOA");
48   myPOA = PortableServer::POA::_narrow(anObj);
49
50   setGeomEngine();
51
52   myStudyID = -1;
53   myLastStudyID = -1;
54
55   myBasicOp = GEOM::GEOM_IBasicOperations::_nil();
56   my3DPrimOp = GEOM::GEOM_I3DPrimOperations::_nil();
57   myBoolOp = GEOM::GEOM_IBooleanOperations::_nil();
58   myInsOp = GEOM::GEOM_IInsertOperations::_nil();
59   myTransfOp = GEOM::GEOM_ITransformOperations::_nil();
60   myShapesOp = GEOM::GEOM_IShapesOperations::_nil();
61   myBlocksOp = GEOM::GEOM_IBlocksOperations::_nil();
62   myCurvesOp = GEOM::GEOM_ICurvesOperations::_nil();
63   myLocalOp = GEOM::GEOM_ILocalOperations::_nil();
64   myGroupOp = GEOM::GEOM_IGroupOperations::_nil();
65 }
66
67 //=============================================================================
68 //  destructor
69 //=============================================================================
70 GEOM_Superv_i::~GEOM_Superv_i()
71 {
72   MESSAGE("GEOM_Superv_i::~GEOM_Superv_i");
73   if (!CORBA::is_nil(myBasicOp))
74     myBasicOp->Destroy();
75   if (!CORBA::is_nil(myBoolOp))
76     myBoolOp->Destroy();
77   if (!CORBA::is_nil(my3DPrimOp))
78     my3DPrimOp->Destroy();
79   delete name_service;
80 }
81
82 //============================================================================
83 // function : register() 
84 // purpose  : register 'name' in 'name_service'
85 //============================================================================
86 void GEOM_Superv_i::register_name(char * name)
87 {
88   GEOM::GEOM_Superv_var g = _this();
89   name_service->Register(g, name); 
90 }
91
92 //=============================================================================
93 //  setGEOMEngine:
94 //=============================================================================
95 void GEOM_Superv_i::setGeomEngine()
96 {
97   if ( !CORBA::is_nil(myGeomEngine) ) 
98     return;
99
100   // get GEOM_Gen engine
101   Engines::Container_var cont=GetContainerRef();
102   CORBA::String_var container_name=cont->name();
103   std::string shortName=container_name.in();
104   shortName=shortName.substr(12); // substract "/Containers/"
105   SALOME_LifeCycleCORBA* lcc = new SALOME_LifeCycleCORBA( name_service );
106   Engines::Component_var comp = lcc->FindOrLoad_Component( shortName.c_str(), "GEOM" );
107   delete lcc;
108
109   myGeomEngine = GEOM::GEOM_Gen::_narrow(comp);
110 }
111
112 //=============================================================================
113 //  SetStudyID:
114 //=============================================================================
115 void GEOM_Superv_i::SetStudyID( CORBA::Long theId )
116 {
117   // mkr : PAL10770 -->
118   myLastStudyID = myStudyID;
119
120   CORBA::Object_ptr anObject = name_service->Resolve("/Kernel/Session");
121   if ( !CORBA::is_nil(anObject) ) {
122     SALOME::Session_var aSession = SALOME::Session::_narrow(anObject);
123     if ( !CORBA::is_nil(aSession) ) {
124       int aStudyID = aSession->GetActiveStudyId();
125       if ( theId != aStudyID && aStudyID > 0) { // mkr : IPAL12128
126         MESSAGE("Warning : given study ID theId="<<theId<<" is wrong and will be replaced by the value "<<aStudyID);
127         myStudyID = aStudyID;
128       }
129       else
130         myStudyID = theId; // mkr : IPAL12128
131     }
132   }
133   
134   if ( isNewStudy(myLastStudyID,myStudyID) ) {
135     if (CORBA::is_nil(myGeomEngine)) setGeomEngine();
136     string anEngine = _orb->object_to_string( myGeomEngine );
137     
138     CORBA::Object_var anObj = name_service->Resolve("/myStudyManager");
139     if ( !CORBA::is_nil(anObj) ) {
140       SALOMEDS::StudyManager_var aStudyManager = SALOMEDS::StudyManager::_narrow(anObj);
141       if ( !CORBA::is_nil(aStudyManager) ) {
142         _PTR(Study) aDSStudy = ClientFactory::Study(aStudyManager->GetStudyByID(myStudyID));
143         if ( aDSStudy ) {
144           _PTR(SComponent) aSCO = aDSStudy->FindComponent(myGeomEngine->ComponentDataType());
145           if ( aSCO ) {
146             _PTR(StudyBuilder) aBuilder = aDSStudy->NewBuilder();
147             if ( aBuilder ) aBuilder->LoadWith( aSCO, anEngine );
148           }
149         }
150       }
151     }
152   }
153   // mkr : PAL10770 <--
154 }
155
156 //=============================================================================
157 //  CreateListOfGO:
158 //=============================================================================
159 GEOM::GEOM_List_ptr GEOM_Superv_i::CreateListOfGO()
160 {
161   MESSAGE("GEOM_Superv_i::CreateListOfGO()");
162   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>();
163   return aListPtr->_this();
164 }
165
166 //=============================================================================
167 //  AddItemToListOfGO:
168 //=============================================================================
169 void GEOM_Superv_i::AddItemToListOfGO(GEOM::GEOM_List_ptr& theList, 
170                                       GEOM::GEOM_Object_ptr    theObject)
171 {
172   MESSAGE("GEOM_Superv_i::AddItemToListOfGO(...)");
173   if (GEOM_List_i<GEOM::ListOfGO>* aList = 
174       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theList, myPOA).in())) {
175     aList->AddObject(theObject);
176     MESSAGE(" NewLength = "<<aList->GetList().length());
177   }
178 }
179
180 //=============================================================================
181 //  CreateListOfLong:
182 //=============================================================================
183 GEOM::GEOM_List_ptr GEOM_Superv_i::CreateListOfLong()
184 {
185   MESSAGE("GEOM_Superv_i::CreateListOfLong()");
186   GEOM_List_i<GEOM::ListOfLong>* aListPtr = new GEOM_List_i<GEOM::ListOfLong>();
187   return aListPtr->_this();
188 }
189
190 //=============================================================================
191 //  AddItemToListOfLong:
192 //=============================================================================
193 void GEOM_Superv_i::AddItemToListOfLong(GEOM::GEOM_List_ptr& theList, 
194                                         CORBA::Long theObject)
195 {
196   MESSAGE("GEOM_Superv_i::AddItemToListOfLong(...)");
197   if (GEOM_List_i<GEOM::ListOfLong>* aList = 
198       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theList, myPOA).in())) {
199     aList->AddObject(theObject);
200     MESSAGE(" NewLength = "<<aList->GetList().length());
201   }
202 }
203
204 //=============================================================================
205 //  CreateListOfDouble:
206 //=============================================================================
207 GEOM::GEOM_List_ptr GEOM_Superv_i::CreateListOfDouble()
208 {
209   MESSAGE("GEOM_Superv_i::CreateListOfDouble()");
210   GEOM_List_i<GEOM::ListOfDouble>* aListPtr = new GEOM_List_i<GEOM::ListOfDouble>();
211   return aListPtr->_this();
212 }
213
214 //=============================================================================
215 //  AddItemToListOfDouble:
216 //=============================================================================
217 void GEOM_Superv_i::AddItemToListOfDouble(GEOM::GEOM_List_ptr& theList, 
218                                           CORBA::Double theObject)
219 {
220   MESSAGE("GEOM_Superv_i::AddItemToListOfDouble(...)");
221   if (GEOM_List_i<GEOM::ListOfDouble>* aList = 
222       dynamic_cast<GEOM_List_i<GEOM::ListOfDouble>*>(GetServant(theList, myPOA).in())) {
223     aList->AddObject(theObject);
224     MESSAGE(" NewLength = "<<aList->GetList().length());
225   }
226 }
227
228 //=============================================================================
229 //  getBasicOp:
230 //=============================================================================
231 void GEOM_Superv_i::getBasicOp()
232 {
233   if (CORBA::is_nil(myGeomEngine))
234     setGeomEngine();
235   // get GEOM_IBasicOperations interface
236   if (CORBA::is_nil(myBasicOp) || isNewStudy(myLastStudyID,myStudyID))
237     myBasicOp = myGeomEngine->GetIBasicOperations(myStudyID);
238 }
239
240 //=============================================================================
241 //  get3DPrimOp:
242 //=============================================================================
243 void GEOM_Superv_i::get3DPrimOp()
244 {
245   if (CORBA::is_nil(myGeomEngine))
246     setGeomEngine();
247   // get GEOM_I3DPrimOperations interface
248   if (CORBA::is_nil(my3DPrimOp) || isNewStudy(myLastStudyID,myStudyID))
249     my3DPrimOp = myGeomEngine->GetI3DPrimOperations(myStudyID);
250 }
251
252 //=============================================================================
253 //  getBoolOp:
254 //=============================================================================
255 void GEOM_Superv_i::getBoolOp()
256 {
257   if (CORBA::is_nil(myGeomEngine))
258     setGeomEngine();
259   // get GEOM_IBooleanOperations interface
260   if (CORBA::is_nil(myBoolOp) || isNewStudy(myLastStudyID,myStudyID))
261     myBoolOp = myGeomEngine->GetIBooleanOperations(myStudyID);
262 }
263
264 //=============================================================================
265 //  getInsOp:
266 //=============================================================================
267 void GEOM_Superv_i::getInsOp()
268 {
269   if (CORBA::is_nil(myGeomEngine))
270     setGeomEngine();
271   // get GEOM_IInsertOperations interface
272   if (CORBA::is_nil(myInsOp) || isNewStudy(myLastStudyID,myStudyID))
273     myInsOp = myGeomEngine->GetIInsertOperations(myStudyID);
274 }
275
276 //=============================================================================
277 //  getTransfOp:
278 //=============================================================================
279 void GEOM_Superv_i::getTransfOp()
280 {
281   if (CORBA::is_nil(myGeomEngine))
282     setGeomEngine();
283   // get GEOM_ITransformOperations interface
284   if (CORBA::is_nil(myTransfOp) || isNewStudy(myLastStudyID,myStudyID))
285     myTransfOp = myGeomEngine->GetITransformOperations(myStudyID);
286 }
287
288 //=============================================================================
289 //  getShapesOp:
290 //=============================================================================
291 void GEOM_Superv_i::getShapesOp()
292 {
293   if (CORBA::is_nil(myGeomEngine))
294     setGeomEngine();
295   // get GEOM_IShapesOperations interface
296   if (CORBA::is_nil(myShapesOp) || isNewStudy(myLastStudyID,myStudyID))
297     myShapesOp = myGeomEngine->GetIShapesOperations(myStudyID);
298 }
299
300 //=============================================================================
301 //  getBlocksOp:
302 //=============================================================================
303 void GEOM_Superv_i::getBlocksOp()
304 {
305   if (CORBA::is_nil(myGeomEngine))
306     setGeomEngine();
307   // get GEOM_IBlocksOperations interface
308   if (CORBA::is_nil(myBlocksOp) || isNewStudy(myLastStudyID,myStudyID))
309     myBlocksOp = myGeomEngine->GetIBlocksOperations(myStudyID);
310 }
311
312 //=============================================================================
313 //  getCurvesOp:
314 //=============================================================================
315 void GEOM_Superv_i::getCurvesOp()
316 {
317   if (CORBA::is_nil(myGeomEngine))
318     setGeomEngine();
319   // get GEOM_ICurvesOperations interface
320   if (CORBA::is_nil(myCurvesOp) || isNewStudy(myLastStudyID,myStudyID))
321     myCurvesOp = myGeomEngine->GetICurvesOperations(myStudyID);
322 }
323
324 //=============================================================================
325 //  getLocalOp:
326 //=============================================================================
327 void GEOM_Superv_i::getLocalOp()
328 {
329   if (CORBA::is_nil(myGeomEngine))
330     setGeomEngine();
331   // get GEOM_ILocalOperations interface
332   if (CORBA::is_nil(myLocalOp) || isNewStudy(myLastStudyID,myStudyID))
333     myLocalOp = myGeomEngine->GetILocalOperations(myStudyID);
334 }
335
336 //=============================================================================
337 //  getGroupOp:
338 //=============================================================================
339 void GEOM_Superv_i::getGroupOp()
340 {
341   if (CORBA::is_nil(myGeomEngine))
342     setGeomEngine();
343   // get GEOM_IGroupOperations interface
344   if (CORBA::is_nil(myGroupOp) || isNewStudy(myLastStudyID,myStudyID))
345     myGroupOp = myGeomEngine->GetIGroupOperations(myStudyID);
346 }
347
348 //=============================================================================
349 //  GetServant:
350 //=============================================================================
351 PortableServer::ServantBase_var GEOM_Superv_i::GetServant(CORBA::Object_ptr       theObject,
352                                                           PortableServer::POA_ptr thePOA)
353 {
354   if(CORBA::is_nil(theObject))  return NULL;
355   PortableServer::Servant aServant = thePOA->reference_to_servant(theObject);
356   return aServant;
357 }
358
359 //============================================================================
360 // function : Save()
361 // purpose  : save OCAF/Geom document
362 //============================================================================
363 SALOMEDS::TMPFile* GEOM_Superv_i::Save(SALOMEDS::SComponent_ptr theComponent,
364                                        const char* theURL,
365                                        CORBA::Boolean isMultiFile)
366 {
367   SALOMEDS::TMPFile_var aStreamFile;
368   return aStreamFile._retn();
369 }
370
371 //============================================================================
372 // function : SaveASCII()
373 // purpose  :
374 //============================================================================ 
375 SALOMEDS::TMPFile* GEOM_Superv_i::SaveASCII(SALOMEDS::SComponent_ptr theComponent,
376                                             const char* theURL,
377                                             CORBA::Boolean isMultiFile)
378 {
379   SALOMEDS::TMPFile_var aStreamFile;
380   return aStreamFile._retn();
381 }
382
383 //============================================================================
384 // function : Load()
385 // purpose  :
386 //============================================================================ 
387 CORBA::Boolean GEOM_Superv_i::Load(SALOMEDS::SComponent_ptr theComponent,
388                                    const SALOMEDS::TMPFile& theStream,
389                                    const char* theURL,
390                                    CORBA::Boolean isMultiFile)
391 {
392   return false;
393 }
394
395 //============================================================================
396 // function : LoadASCII()
397 // purpose  :
398 //============================================================================ 
399 CORBA::Boolean GEOM_Superv_i::LoadASCII(SALOMEDS::SComponent_ptr theComponent,
400                                         const SALOMEDS::TMPFile& theStream,
401                                         const char* theURL,
402                                         CORBA::Boolean isMultiFile)
403 {
404   return false;
405 }
406
407 //============================================================================
408 // function : Close()
409 // purpose  :
410 //============================================================================
411 void GEOM_Superv_i::Close(SALOMEDS::SComponent_ptr theComponent)
412 {
413 }
414
415 //============================================================================
416 // function : ComponentDataType()
417 // purpose  :
418 //============================================================================
419 char* GEOM_Superv_i::ComponentDataType()
420 {
421   return 0;
422 }
423
424 //============================================================================
425 // function : IORToLocalPersistentID()
426 // purpose  :
427 //============================================================================
428 char* GEOM_Superv_i::IORToLocalPersistentID(SALOMEDS::SObject_ptr theSObject,
429                                             const char* IORString,
430                                             CORBA::Boolean isMultiFile,
431                                             CORBA::Boolean isASCII)
432 {
433   return 0;
434 }
435
436 //============================================================================
437 // function : LocalPersistentIDToIOR()
438 // purpose  : Create/Load CORBA object from a persistent ref (an entry)
439 //          : Used when a study is loaded
440 //          : The IOR (IORName) of object created is returned
441 //============================================================================
442 char* GEOM_Superv_i::LocalPersistentIDToIOR(SALOMEDS::SObject_ptr theSObject,
443                                             const char* aLocalPersistentID,
444                                             CORBA::Boolean isMultiFile,
445                                             CORBA::Boolean isASCII)
446 {
447   return 0;
448 }
449
450 //============================================================================
451 // function : CanPublishInStudy
452 // purpose  : 
453 //============================================================================
454 CORBA::Boolean GEOM_Superv_i::CanPublishInStudy(CORBA::Object_ptr theIOR)
455 {
456   if (CORBA::is_nil(myGeomEngine))
457     setGeomEngine();
458   return myGeomEngine->CanPublishInStudy(theIOR);
459 }
460
461 //============================================================================
462 // function : PublishInStudy
463 // purpose  : 
464 //============================================================================
465 SALOMEDS::SObject_ptr GEOM_Superv_i::PublishInStudy(SALOMEDS::Study_ptr theStudy,
466                                                     SALOMEDS::SObject_ptr theSObject,
467                                                     CORBA::Object_ptr theObject,
468                                                     const char* theName) throw (SALOME::SALOME_Exception)
469 {
470   if (CORBA::is_nil(myGeomEngine))
471     setGeomEngine();
472   return myGeomEngine->PublishInStudy(theStudy, theSObject, theObject, theName);
473 }
474
475 //============================================================================
476 // function : CanCopy()
477 // purpose  :
478 //============================================================================
479 CORBA::Boolean GEOM_Superv_i::CanCopy(SALOMEDS::SObject_ptr theObject)
480 {
481   return false;
482 }
483
484 //============================================================================
485 // function : CopyFrom()
486 // purpose  :
487 //============================================================================
488 SALOMEDS::TMPFile* GEOM_Superv_i::CopyFrom(SALOMEDS::SObject_ptr theObject, CORBA::Long& theObjectID)
489 {
490   SALOMEDS::TMPFile_var aStreamFile;
491   return aStreamFile._retn();
492 }
493
494 //============================================================================
495 // function : CanPaste()
496 // purpose  :
497 //============================================================================
498 CORBA::Boolean GEOM_Superv_i::CanPaste(const char* theComponentName, CORBA::Long theObjectID)
499 {
500   return false;
501 }
502
503 //============================================================================
504 // function : PasteInto()
505 // purpose  :
506 //============================================================================
507 SALOMEDS::SObject_ptr GEOM_Superv_i::PasteInto(const SALOMEDS::TMPFile& theStream,
508                                                CORBA::Long theObjectID,
509                                                SALOMEDS::SObject_ptr theObject)
510 {
511   SALOMEDS::SObject_var aNewSO;
512   return aNewSO._retn();
513 }
514
515 //================= Primitives Construction : BasicOperations =================
516 //=============================================================================
517 //  MakePointXYZ:
518 //=============================================================================
519 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointXYZ(CORBA::Double theX,
520                                                   CORBA::Double theY,
521                                                   CORBA::Double theZ)
522 {
523   beginService( " GEOM_Superv_i::MakePointXYZ" );
524   MESSAGE("GEOM_Superv_i::MakePointXYZ");
525   getBasicOp();
526   // make vertex and return
527   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointXYZ(theX, theY, theZ);
528   endService( " GEOM_Superv_i::MakePointXYZ" );
529   return anObj;
530 }
531
532 //=============================================================================
533 //  MakePointWithReference:
534 //=============================================================================
535 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointWithReference (GEOM::GEOM_Object_ptr theReference,
536                                                              CORBA::Double theX, 
537                                                              CORBA::Double theY, 
538                                                              CORBA::Double theZ)
539 {
540   beginService( " GEOM_Superv_i::MakePointWithReference" );
541   MESSAGE("GEOM_Superv_i::MakePointWithReference");
542   getBasicOp();
543   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointWithReference(theReference, theX, theY, theZ);
544   endService( " GEOM_Superv_i::MakePointWithReference" );
545   return anObj;
546 }
547
548 //=============================================================================
549 //  MakePointOnCurve:
550 //=============================================================================
551 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
552                                                        CORBA::Double theParameter)
553 {
554   beginService( " GEOM_Superv_i::MakePointOnCurve" );
555   MESSAGE("GEOM_Superv_i::MakePointOnCurve");
556   getBasicOp();
557   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointOnCurve(theRefCurve, theParameter);
558   endService( " GEOM_Superv_i::MakePointOnCurve" );
559   return anObj;
560 }
561
562 //=============================================================================
563 //  MakePointOnLinesIntersection:
564 //=============================================================================
565 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnLinesIntersection (GEOM::GEOM_Object_ptr theRefLine1,
566                                                                    GEOM::GEOM_Object_ptr theRefLine2)
567 {
568   beginService( " GEOM_Superv_i::MakePointOnLinesIntersection" );
569   MESSAGE("GEOM_Superv_i::MakePointOnLinesIntersection");
570   getBasicOp();
571   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointOnLinesIntersection(theRefLine1, theRefLine2);
572   endService( " GEOM_Superv_i::MakePointOnLinesIntersection" );
573   return anObj;
574 }
575
576 //=============================================================================
577 //  MakeTangentOnCurve:
578 //=============================================================================
579 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTangentOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
580                                                          CORBA::Double theParameter)
581 {
582   beginService( " GEOM_Superv_i::MakeTangentOnCurve" );
583   MESSAGE("GEOM_Superv_i::MakeTangentOnCurve");
584   getBasicOp();
585   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeTangentOnCurve(theRefCurve, theParameter);
586   endService( " GEOM_Superv_i::MakeTangentOnCurve" );
587   return anObj;
588 }
589
590 //=============================================================================
591 //  MakeVectorDXDYDZ:
592 //=============================================================================
593 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeVectorDXDYDZ (CORBA::Double theDX,
594                                                        CORBA::Double theDY,
595                                                        CORBA::Double theDZ)
596 {
597   beginService( " GEOM_Superv_i::MakeVectorDXDYDZ" );
598   MESSAGE("GEOM_Superv_i::MakeVectorDXDYDZ");
599   getBasicOp();
600   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeVectorDXDYDZ(theDX, theDY, theDZ);
601   endService( " GEOM_Superv_i::MakeVectorDXDYDZ" );
602   return anObj;
603 }
604
605 //=============================================================================
606 //  MakeVectorTwoPnt:
607 //=============================================================================
608 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeVectorTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
609                                                        GEOM::GEOM_Object_ptr thePnt2)
610 {
611   beginService( " GEOM_Superv_i::MakeVectorTwoPnt" );
612   MESSAGE("GEOM_Superv_i::MakeVector");
613   getBasicOp();
614   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeVectorTwoPnt(thePnt1, thePnt2);
615   endService( " GEOM_Superv_i::MakeVectorTwoPnt" );
616   return anObj;
617 }
618
619 //=============================================================================
620 //  MakeLineTwoPnt:
621 //=============================================================================
622 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeLineTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
623                                                      GEOM::GEOM_Object_ptr thePnt2)
624 {
625   beginService( " GEOM_Superv_i::MakeLineTwoPnt");
626   MESSAGE("GEOM_Superv_i::MakeLineTwoPnt");
627   getBasicOp();
628   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeLineTwoPnt(thePnt1, thePnt2);
629   endService( " GEOM_Superv_i::MakeLineTwoPnt");
630   return anObj;
631 }
632
633 //=============================================================================
634 //  MakeLineTwoFaces:
635 //=============================================================================
636 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeLineTwoFaces (GEOM::GEOM_Object_ptr theFace1,
637                                                        GEOM::GEOM_Object_ptr theFace2)
638 {
639   beginService( " GEOM_Superv_i::MakeLineTwoFaces");
640   MESSAGE("GEOM_Superv_i::MakeLineTwoFaces");
641   getBasicOp();
642   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeLineTwoFaces(theFace1, theFace2);
643   endService( " GEOM_Superv_i::MakeLineTwoFaces");
644   return anObj;
645 }
646
647 //=============================================================================
648 //  MakePlaneThreePnt:
649 //=============================================================================
650 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneThreePnt (GEOM::GEOM_Object_ptr thePnt1,
651                                                         GEOM::GEOM_Object_ptr thePnt2,
652                                                         GEOM::GEOM_Object_ptr thePnt3,
653                                                         CORBA::Double theTrimSize)
654 {
655   beginService( " GEOM_Superv_i::MakePlaneThreePnt");
656   MESSAGE("GEOM_Superv_i::MakePlaneThreePnt");
657   getBasicOp();
658   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlaneThreePnt(thePnt1, thePnt2, thePnt3, theTrimSize);
659   endService( " GEOM_Superv_i::MakePlaneThreePnt");
660   return anObj;
661 }
662
663 //=============================================================================
664 //  MakePlanePntVec:
665 //=============================================================================
666 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlanePntVec (GEOM::GEOM_Object_ptr thePnt,
667                                                       GEOM::GEOM_Object_ptr theVec,
668                                                       CORBA::Double theTrimSize)
669
670   beginService( " GEOM_Superv_i::MakePlanePntVec" );
671   MESSAGE("GEOM_Superv_i::MakePlanePntVec");
672   getBasicOp();
673   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlanePntVec(thePnt, theVec, theTrimSize);
674   endService( " GEOM_Superv_i::MakePlanePntVec" );
675   return anObj;
676 }
677
678 //=============================================================================
679 //  MakePlaneFace:
680 //=============================================================================
681 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneFace (GEOM::GEOM_Object_ptr theFace,
682                                                     CORBA::Double theTrimSize)
683 {
684   beginService( " GEOM_Superv_i::MakePlaneFace" );
685   MESSAGE("GEOM_Superv_i::MakePlaneFace");
686   getBasicOp();
687   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlaneFace(theFace, theTrimSize);
688   endService( " GEOM_Superv_i::MakePlaneFace" );
689   return anObj;
690 }
691
692 //=============================================================================
693 //  MakeMarker:
694 //=============================================================================
695 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMarker 
696 (CORBA::Double theOX , CORBA::Double theOY , CORBA::Double theOZ,
697  CORBA::Double theXDX, CORBA::Double theXDY, CORBA::Double theXDZ,
698  CORBA::Double theYDX, CORBA::Double theYDY, CORBA::Double theYDZ)
699 {
700   beginService( " GEOM_Superv_i::MakeMarker" );
701   MESSAGE("GEOM_Superv_i::MakeMarker");
702   getBasicOp();
703   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeMarker(theOX, theOY, theOZ, theXDX, theXDY, theXDZ, theYDX, theYDY, theYDZ);
704   endService( " GEOM_Superv_i::MakeMarker" );
705   return anObj;
706 }
707
708 //=============================================================================
709 //  MakeTangentPlaneOnFace:
710 //=============================================================================
711 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTangentPlaneOnFace (GEOM::GEOM_Object_ptr theFace, 
712                                                  CORBA::Double theParameterU,
713                                                  CORBA::Double theParameterV,
714                                                  CORBA::Double theTrimSize)
715 {
716   beginService( " GEOM_Superv_i::MakeTangentPlaneOnFace" );
717   MESSAGE("GEOM_Superv_i::MakeTangentPlaneOnFace");
718   getBasicOp();
719   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeTangentPlaneOnFace(theFace, theParameterU,theParameterV,theTrimSize);
720   endService( " GEOM_Superv_i::MakeTangentPlaneOnFace" );
721   return anObj;
722 }
723
724 //================= Primitives Construction : 3DPrimOperations ================
725 //=============================================================================
726 //  MakeBox:
727 //=============================================================================
728 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBox (CORBA::Double theX1,
729                                               CORBA::Double theY1,
730                                               CORBA::Double theZ1,
731                                               CORBA::Double theX2,
732                                               CORBA::Double theY2,
733                                               CORBA::Double theZ2)
734 {
735   beginService( " GEOM_Superv_i::MakeBox" );
736   MESSAGE("GEOM_Superv_i::MakeBox");
737   getBasicOp();
738   get3DPrimOp();
739   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeBoxTwoPnt(myBasicOp->MakePointXYZ(theX1, theY1, theZ1),
740                                                           myBasicOp->MakePointXYZ(theX2, theY2, theZ2));
741   endService( " GEOM_Superv_i::MakeBox" );
742   return anObj;
743 }
744
745 //=============================================================================
746 //  MakeBoxDXDYDZ:
747 //=============================================================================
748 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoxDXDYDZ (CORBA::Double theDX, 
749                                                     CORBA::Double theDY, 
750                                                     CORBA::Double theDZ)
751 {
752   beginService( " GEOM_Superv_i::MakeBoxDXDYDZ" );
753   MESSAGE("GEOM_Superv_i::MakeBoxDXDYDZ");
754   get3DPrimOp();
755   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeBoxDXDYDZ(theDX, theDY, theDZ);
756   endService( " GEOM_Superv_i::MakeBoxDXDYDZ" );
757   return anObj;
758 }
759
760 //=============================================================================
761 //  MakeBoxTwoPnt:
762 //=============================================================================
763 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoxTwoPnt (GEOM::GEOM_Object_ptr thePnt1, 
764                                                     GEOM::GEOM_Object_ptr thePnt2)
765 {
766   beginService( " GEOM_Superv_i::MakeBoxTwoPnt" );
767   MESSAGE("GEOM_Superv_i::MakeBoxTwoPnt");
768   get3DPrimOp();
769   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeBoxTwoPnt(thePnt1, thePnt2);
770   endService( " GEOM_Superv_i::MakeBoxTwoPnt" );
771   return anObj;
772 }
773
774 //=============================================================================
775 //  MakeFaceHW:
776 //=============================================================================
777 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceHW (CORBA::Double theH,
778                                                  CORBA::Double theW)
779 {
780   beginService( " GEOM_Superv_i::MakeFaceHW" );
781   MESSAGE("GEOM_Superv_i::MakeFaceHW");
782   get3DPrimOp();
783   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeFaceHW(theH, theW);
784   endService( " GEOM_Superv_i::MakeFaceHW" );
785   return anObj;
786 }
787
788 //=============================================================================
789 //  MakeFaceTwoPlaneHW:
790 //=============================================================================
791 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFacePlaneHW (GEOM::GEOM_Object_ptr theFace, 
792                                                       CORBA::Double theH,
793                                                       CORBA::Double theW)
794 {
795   beginService( " GEOM_Superv_i::MakeFacePlaneHW" );
796   MESSAGE("GEOM_Superv_i::MakeFacePlaneHW");
797   get3DPrimOp();
798   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeFacePlaneHW(theFace, theH, theW);
799   endService( " GEOM_Superv_i::MakeFacePlaneHW" );
800   return anObj;
801 }
802
803 //=============================================================================
804 //  MakeDiskPntVecR:
805 //=============================================================================
806 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDiskPntVecR (GEOM::GEOM_Object_ptr theCenter,
807                                                       GEOM::GEOM_Object_ptr theVector,
808                                                       CORBA::Double theR)
809 {
810   beginService( " GEOM_Superv_i::MakeDiskPntVecR" );
811   MESSAGE("GEOM_Superv_i::MakeDiskPntVecR");
812   get3DPrimOp();
813   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeDiskPntVecR(theCenter, theVector, theR);
814   endService( " GEOM_Superv_i::MakeDiskPntVecR" );
815   return anObj;
816 }
817
818 //=============================================================================
819 //  MakeDiskThreePnt:
820 //=============================================================================
821 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDiskThreePnt (GEOM::GEOM_Object_ptr thePnt1,
822                                                        GEOM::GEOM_Object_ptr thePnt2,
823                                                        GEOM::GEOM_Object_ptr thePnt3)
824 {
825   beginService( " GEOM_Superv_i::MakeDiskThreePnt" );
826   MESSAGE("GEOM_Superv_i::MakeDiskThreePnt");
827   get3DPrimOp();
828   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeDiskThreePnt(thePnt1, thePnt2, thePnt3);
829   endService( " GEOM_Superv_i::MakeDiskThreePnt" );
830   return anObj;
831 }
832
833 //=============================================================================
834 //  MakeCylinderPntVecRH:
835 //=============================================================================
836 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderPntVecRH (GEOM::GEOM_Object_ptr thePnt,
837                                                            GEOM::GEOM_Object_ptr theAxis,
838                                                            CORBA::Double theRadius,
839                                                            CORBA::Double theHeight)
840 {
841   beginService( " GEOM_Superv_i::MakeCylinderPntVecRH" );
842   MESSAGE("GEOM_Superv_i::MakeCylinderPntVecRH");
843   get3DPrimOp();
844   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderPntVecRH(thePnt, theAxis, theRadius, theHeight);
845   endService( " GEOM_Superv_i::MakeCylinderPntVecRH" );
846   return anObj;
847 }
848
849 //=============================================================================
850 //  MakeCylinderRH:
851 //=============================================================================
852 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderRH (CORBA::Double theR, 
853                                                      CORBA::Double theH)
854 {
855   beginService( " GEOM_Superv_i::MakeCylinderRH" );
856   MESSAGE("GEOM_Superv_i::MakeCylinderRH");
857   get3DPrimOp();
858   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderRH(theR, theH);
859   endService( " GEOM_Superv_i::MakeCylinderRH" );
860   return anObj; 
861 }
862
863 //=============================================================================
864 //  MakeSphere:
865 //=============================================================================
866 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSphere  (CORBA::Double theX,
867                                                   CORBA::Double theY,
868                                                   CORBA::Double theZ,
869                                                   CORBA::Double theRadius)
870 {
871   beginService( " GEOM_Superv_i::MakeSphepe" );
872   MESSAGE("GEOM_Superv_i::MakeSphepe");
873   getBasicOp();
874   get3DPrimOp();
875   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeSpherePntR(myBasicOp->MakePointXYZ(theX, theY, theZ), theRadius);
876   endService( " GEOM_Superv_i::MakeSphepe" );
877   return anObj;
878 }
879
880 //=============================================================================
881 //  MakeSphereR:
882 //=============================================================================
883 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSphereR (CORBA::Double theR)
884 {
885   beginService( " GEOM_Superv_i::MakeSphereR" );
886   MESSAGE("GEOM_Superv_i::MakeSphereR");
887   get3DPrimOp();
888   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeSphereR(theR);
889   endService( " GEOM_Superv_i::MakeSphereR" );
890   return anObj;
891 }
892
893 //=============================================================================
894 //  MakeSpherePntR:
895 //=============================================================================
896 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSpherePntR (GEOM::GEOM_Object_ptr thePnt, 
897                                                      CORBA::Double theR)
898 {
899   beginService( " GEOM_Superv_i::MakeSpherePntR" );
900   MESSAGE("GEOM_Superv_i::MakeSpherePntR");
901   get3DPrimOp();
902   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeSpherePntR(thePnt, theR);
903   endService( " GEOM_Superv_i::MakeSpherePntR" );
904   return anObj;
905 }
906
907 //=============================================================================
908 //  MakeTorusPntVecRR:
909 //=============================================================================
910 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTorusPntVecRR (GEOM::GEOM_Object_ptr thePnt,
911                                                         GEOM::GEOM_Object_ptr theVec,
912                                                         CORBA::Double theRMajor,
913                                                         CORBA::Double theRMinor)
914 {
915   beginService( " GEOM_Superv_i::MakeTorusPntVecRR" );
916   MESSAGE("GEOM_Superv_i::MakeTorusPntVecRR");
917   get3DPrimOp();
918   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeTorusPntVecRR(thePnt, theVec, theRMajor, theRMinor);
919   endService( " GEOM_Superv_i::MakeTorusPntVecRR" );
920   return anObj;
921 }
922
923 //=============================================================================
924 //  MakeTorusRR:
925 //=============================================================================
926 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTorusRR (CORBA::Double theRMajor,
927                                                   CORBA::Double theRMinor)
928 {
929   beginService( " GEOM_Superv_i::MakeTorusRR" );
930   MESSAGE("GEOM_Superv_i::MakeTorusRR");
931   get3DPrimOp();
932   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeTorusRR(theRMajor, theRMinor);
933   endService( " GEOM_Superv_i::MakeTorusRR" );
934   return anObj;
935 }
936
937 //=============================================================================
938 //  MakeConePntVecR1R2H:
939 //=============================================================================
940 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeConePntVecR1R2H (GEOM::GEOM_Object_ptr thePnt,
941                                                           GEOM::GEOM_Object_ptr theAxis,
942                                                           CORBA::Double theR1,
943                                                           CORBA::Double theR2,
944                                                           CORBA::Double theHeight)
945 {
946   beginService( " GEOM_Superv_i::MakeConePntVecR1R2H" );
947   MESSAGE("GEOM_Superv_i::MakeConePntVecR1R2H");
948   get3DPrimOp();
949   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeConePntVecR1R2H(thePnt, theAxis, theR1, theR2, theHeight);
950   endService( " GEOM_Superv_i::MakeConePntVecR1R2H" );
951   return anObj;
952 }
953
954 //=============================================================================
955 //  MakeConeR1R2H:
956 //=============================================================================
957 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeConeR1R2H (CORBA::Double theR1, 
958                                                     CORBA::Double theR2, 
959                                                     CORBA::Double theHeight)
960 {
961   beginService( " GEOM_Superv_i::MakeConeR1R2H" );
962   MESSAGE("GEOM_Superv_i::MakeConeR1R2H");
963   get3DPrimOp();
964   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeConeR1R2H(theR1, theR2, theHeight);
965   endService( " GEOM_Superv_i::MakeConeR1R2H" );
966   return anObj;
967 }
968
969 //=============================================================================
970 //  MakePrismVecH:
971 //=============================================================================
972 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismVecH (GEOM::GEOM_Object_ptr theBase,
973                                                     GEOM::GEOM_Object_ptr theVec,
974                                                     CORBA::Double         theH)
975 {
976   beginService( " GEOM_Superv_i::MakePrismVecH" );
977   MESSAGE("GEOM_Superv_i::MakePrismVecH");
978   get3DPrimOp();
979   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismVecH(theBase, theVec, theH);
980   endService( " GEOM_Superv_i::MakePrismVecH" );
981   return anObj;
982 }
983
984 //=============================================================================
985 //  MakePrismVecH2Ways:
986 //=============================================================================
987 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismVecH2Ways (GEOM::GEOM_Object_ptr theBase,
988                                                          GEOM::GEOM_Object_ptr theVec,
989                                                          CORBA::Double         theH)
990 {
991   beginService( " GEOM_Superv_i::MakePrismVecH2Ways" );
992   MESSAGE("GEOM_Superv_i::MakePrismVecH2Ways");
993   get3DPrimOp();
994   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismVecH2Ways(theBase, theVec, theH);
995   endService( " GEOM_Superv_i::MakePrismVecH2Ways" );
996   return anObj;
997 }
998
999 //=============================================================================
1000 //  MakePrismTwoPnt:
1001 //=============================================================================
1002 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismTwoPnt (GEOM::GEOM_Object_ptr theBase,
1003                                                       GEOM::GEOM_Object_ptr thePoint1,
1004                                                       GEOM::GEOM_Object_ptr thePoint2)
1005 {
1006   beginService( " GEOM_Superv_i::MakePrismTwoPnt" );
1007   MESSAGE("GEOM_Superv_i::MakePrismTwoPnt");
1008   get3DPrimOp();
1009   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismTwoPnt(theBase, thePoint1, thePoint2);
1010   endService( " GEOM_Superv_i::MakePrismTwoPnt" );
1011   return anObj;
1012 }
1013
1014 //=============================================================================
1015 //  MakePrismTwoPnt2Ways:
1016 //=============================================================================
1017 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismTwoPnt2Ways (GEOM::GEOM_Object_ptr theBase,
1018                                                            GEOM::GEOM_Object_ptr thePoint1,
1019                                                            GEOM::GEOM_Object_ptr thePoint2)
1020 {
1021   beginService( " GEOM_Superv_i::MakePrismTwoPnt2Ways" );
1022   MESSAGE("GEOM_Superv_i::MakePrismTwoPnt2Ways");
1023   get3DPrimOp();
1024   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismTwoPnt2Ways(theBase, thePoint1, thePoint2);
1025   endService( " GEOM_Superv_i::MakePrismTwoPnt2Ways" );
1026   return anObj;
1027 }
1028
1029 //=============================================================================
1030 //  MakePrismDXDYDZ:
1031 //=============================================================================
1032 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismDXDYDZ (GEOM::GEOM_Object_ptr theBase,
1033                       CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
1034 {
1035   beginService( " GEOM_Superv_i::MakePrismDXDYDZ" );
1036   MESSAGE("GEOM_Superv_i::MakePrismDXDYDZ");
1037   get3DPrimOp();
1038   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismDXDYDZ(theBase, theDX, theDY, theDZ);
1039   endService( " GEOM_Superv_i::MakePrismDXDYDZ" );
1040   return anObj;
1041 }
1042
1043 //=============================================================================
1044 //  MakePrismDXDYDZ:
1045 //=============================================================================
1046 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismDXDYDZ2Ways (GEOM::GEOM_Object_ptr theBase,
1047                       CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
1048 {
1049   beginService( " GEOM_Superv_i::MakePrismDXDYDZ2Ways" );
1050   MESSAGE("GEOM_Superv_i::MakePrismDXDYDZ2Ways");
1051   get3DPrimOp();
1052   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismDXDYDZ2Ways(theBase, theDX, theDY, theDZ);
1053   endService( " GEOM_Superv_i::MakePrismDXDYDZ2Ways" );
1054   return anObj;
1055 }
1056
1057 //=============================================================================
1058 //  MakePipe:
1059 //=============================================================================
1060 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipe (GEOM::GEOM_Object_ptr theBase, 
1061                                                GEOM::GEOM_Object_ptr thePath)
1062 {
1063   beginService( " GEOM_Superv_i::MakePipe" );
1064   MESSAGE("GEOM_Superv_i::MakePipe");
1065   get3DPrimOp();
1066   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePipe(theBase, thePath);
1067   endService( " GEOM_Superv_i::MakePipe" );
1068   return anObj;
1069 }
1070
1071 //=============================================================================
1072 //  MakeRevolutionAxisAngle:
1073 //=============================================================================
1074 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeRevolutionAxisAngle (GEOM::GEOM_Object_ptr theBase,
1075                                                               GEOM::GEOM_Object_ptr theAxis,
1076                                                               CORBA::Double theAngle)
1077 {
1078   beginService( " GEOM_Superv_i::MakeRevolutionAxisAngle" );
1079   MESSAGE("GEOM_Superv_i::MakeRevolutionAxisAngle");
1080   get3DPrimOp();
1081   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeRevolutionAxisAngle(theBase, theAxis, theAngle);
1082   endService( " GEOM_Superv_i::MakeRevolutionAxisAngle" );
1083   return anObj;
1084 }
1085
1086 //=============================================================================
1087 //  MakeRevolutionAxisAngle:
1088 //=============================================================================
1089 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeRevolutionAxisAngle2Ways (GEOM::GEOM_Object_ptr theBase,
1090                                                                    GEOM::GEOM_Object_ptr theAxis,
1091                                                                    CORBA::Double theAngle)
1092 {
1093   beginService( " GEOM_Superv_i::MakeRevolutionAxisAngle2Ways" );
1094   MESSAGE("GEOM_Superv_i::MakeRevolutionAxisAngle2Ways");
1095   get3DPrimOp();
1096   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeRevolutionAxisAngle2Ways(theBase, theAxis, theAngle);
1097   endService( " GEOM_Superv_i::MakeRevolutionAxisAngle2Ways" );
1098   return anObj;
1099 }
1100
1101 //=============================================================================
1102 //  MakeFilling:
1103 //=============================================================================
1104 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilling (GEOM::GEOM_Object_ptr theShape,
1105                                                   CORBA::Long theMinDeg, CORBA::Long theMaxDeg,
1106                                                   CORBA::Double theTol2D, CORBA::Double theTol3D,
1107                                                   CORBA::Long theNbIter, CORBA::Boolean theApprox)
1108 {
1109   beginService( " GEOM_Superv_i::MakeFilling" );
1110   MESSAGE("GEOM_Superv_i::MakeFilling");
1111   get3DPrimOp();
1112   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeFilling(theShape, theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter, theApprox);
1113   endService( " GEOM_Superv_i::MakeFilling" );
1114   return anObj;
1115 }
1116
1117 //============================= BooleanOperations =============================
1118 //=============================================================================
1119 //  MakeBoolean:
1120 //=============================================================================
1121 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoolean (GEOM::GEOM_Object_ptr theShape1,
1122                                                   GEOM::GEOM_Object_ptr theShape2,
1123                                                   CORBA::Long theOperation)
1124 {
1125   beginService( " GEOM_Superv_i::MakeBoolean" );
1126   // theOperation indicates the operation to be done:
1127   // 1 - Common, 2 - Cut, 3 - Fuse, 4 - Section
1128   MESSAGE("GEOM_Superv_i::MakeBoolean");
1129   getBoolOp();
1130   GEOM::GEOM_Object_ptr anObj = myBoolOp->MakeBoolean(theShape1, theShape2, theOperation);
1131   endService( " GEOM_Superv_i::MakeBoolean" );
1132   return anObj;
1133 }
1134
1135 //=============================================================================
1136 //  MakeThruSections:
1137 //=============================================================================
1138 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeThruSections(const GEOM::ListOfGO& theSeqSections,
1139                                          CORBA::Boolean theModeSolid,
1140                                          CORBA::Double thePreci,
1141                                          CORBA::Boolean theRuled)
1142 {
1143   beginService( " GEOM_Superv_i::MakeThruSections" );
1144   MESSAGE("GEOM_Superv_i::MakeThruSections");
1145   get3DPrimOp();
1146   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeThruSections(theSeqSections, theModeSolid,thePreci,theRuled);
1147   endService( " GEOM_Superv_i::MakeThruSections" );
1148   return anObj;
1149 }
1150
1151 //=============================================================================
1152 //  MakePipe:
1153 //=============================================================================
1154 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeWithDifferentSections
1155                      (const GEOM::ListOfGO& theBases,
1156                       const GEOM::ListOfGO& theLocations,
1157                       GEOM::GEOM_Object_ptr thePath,
1158                       CORBA::Boolean theWithContact,
1159                       CORBA::Boolean theWithCorrections)
1160 {
1161   beginService( " GEOM_Superv_i::MakePipeWithDifferentSections" );
1162   MESSAGE("GEOM_Superv_i::MakePipeWithDifferentSections");
1163   get3DPrimOp();
1164   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePipeWithDifferentSections(theBases,theLocations, thePath,theWithContact,theWithCorrections);
1165   endService( " GEOM_Superv_i::MakePipeWithDifferentSections" );
1166   return anObj;
1167 }
1168
1169
1170 //=============================================================================
1171 //  MakePipe:
1172 //=============================================================================
1173 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeWithShellSections
1174                    (const GEOM::ListOfGO& theBases,
1175                     const GEOM::ListOfGO& theSubBases,
1176                     const GEOM::ListOfGO& theLocations,
1177                     GEOM::GEOM_Object_ptr thePath,
1178                     CORBA::Boolean theWithContact,
1179                     CORBA::Boolean theWithCorrections)
1180 {
1181   beginService( " GEOM_Superv_i::MakePipeWithShellSections" );
1182   MESSAGE("GEOM_Superv_i::MakePipeWithShellSections");
1183   get3DPrimOp();
1184   GEOM::GEOM_Object_ptr anObj =
1185     my3DPrimOp->MakePipeWithShellSections(theBases, theSubBases,
1186                                           theLocations, thePath,
1187                                           theWithContact, theWithCorrections);
1188   endService( " GEOM_Superv_i::MakePipeWithShellSections" );
1189   return anObj;
1190 }
1191
1192
1193 //=============================================================================
1194 //  MakePipe:
1195 //=============================================================================
1196 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeShellsWithoutPath
1197                    (const GEOM::ListOfGO& theBases,
1198                     const GEOM::ListOfGO& theLocations)
1199 {
1200   beginService( " GEOM_Superv_i::MakePipeShellsWithoutPath" );
1201   MESSAGE("GEOM_Superv_i::MakePipeShellsWithoutPath");
1202   get3DPrimOp();
1203   GEOM::GEOM_Object_ptr anObj =
1204     my3DPrimOp->MakePipeShellsWithoutPath(theBases,theLocations);
1205   endService( " GEOM_Superv_i::MakePipeShellsWithoutPath" );
1206   return anObj;
1207 }
1208
1209
1210 //=============================================================================
1211 //  MakeFuse:
1212 //=============================================================================
1213 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFuse (GEOM::GEOM_Object_ptr theShape1,
1214                                                GEOM::GEOM_Object_ptr theShape2)
1215 {
1216   beginService( " GEOM_Superv_i::MakeFuse" );
1217   MESSAGE("GEOM_Superv_i::MakeFuse");
1218   getBoolOp();
1219   GEOM::GEOM_Object_ptr anObj = myBoolOp->MakeBoolean(theShape1, theShape2, 3);
1220   endService( " GEOM_Superv_i::MakeFuse" );
1221   return anObj;
1222 }
1223
1224 //=============================================================================
1225 //  MakePartition:
1226 //=============================================================================
1227 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePartition (GEOM::GEOM_List_ptr   theShapes,
1228                                                     GEOM::GEOM_List_ptr   theTools,
1229                                                     GEOM::GEOM_List_ptr   theKeepInside,
1230                                                     GEOM::GEOM_List_ptr   theRemoveInside,
1231                                                     CORBA::Short      theLimit,
1232                                                     CORBA::Boolean    theRemoveWebs,
1233                                                     GEOM::GEOM_List_ptr theMaterials,
1234                                                     CORBA::Short theKeepNonlimitShapes)
1235 {
1236   beginService( " GEOM_Superv_i::MakePartition" );
1237   MESSAGE("GEOM_Superv_i::MakePartition");
1238   GEOM_List_i<GEOM::ListOfGO>* aListImplS = 
1239     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShapes, myPOA).in());
1240   GEOM_List_i<GEOM::ListOfGO>* aListImplT = 
1241     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theTools, myPOA).in());
1242   GEOM_List_i<GEOM::ListOfGO>* aListImplKI = 
1243     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theKeepInside, myPOA).in());
1244   GEOM_List_i<GEOM::ListOfGO>* aListImplRI = 
1245     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theRemoveInside, myPOA).in());
1246   GEOM_List_i<GEOM::ListOfLong>* aListImplM = 
1247     dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theMaterials, myPOA).in());
1248   if (aListImplS && aListImplT && aListImplKI && aListImplRI && aListImplM) {
1249     getBoolOp();
1250     GEOM::GEOM_Object_ptr anObj =
1251       myBoolOp->MakePartition(aListImplS->GetList(), aListImplT->GetList(), 
1252                               aListImplKI->GetList(), aListImplRI->GetList(),
1253                               theLimit, theRemoveWebs, aListImplM->GetList(),
1254                               theKeepNonlimitShapes);
1255     endService( " GEOM_Superv_i::MakePartition" );
1256     return anObj;
1257   }
1258   endService( " GEOM_Superv_i::MakePartition" );
1259   return NULL;
1260 }
1261
1262 //=============================================================================
1263 //  MakeHalfPartition:
1264 //=============================================================================
1265 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHalfPartition (GEOM::GEOM_Object_ptr theShape,
1266                                                         GEOM::GEOM_Object_ptr thePlane)
1267 {
1268   beginService( " GEOM_Superv_i::MakeHalfPartition" );
1269   MESSAGE("GEOM_Superv_i::MakeHalfPartition");
1270   getBoolOp();
1271   GEOM::GEOM_Object_ptr anObj = myBoolOp->MakeHalfPartition(theShape, thePlane);
1272   endService( " GEOM_Superv_i::MakeHalfPartition" );
1273   return anObj;
1274 }
1275
1276 //============================== InsertOperations =============================
1277 //=============================================================================
1278 //  MakeCopy:
1279 //=============================================================================
1280 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCopy (GEOM::GEOM_Object_ptr theOriginal)
1281 {
1282   beginService( " GEOM_Superv_i::MakeCopy" );
1283   MESSAGE("GEOM_Superv_i::MakeCopy");
1284   getInsOp();
1285   GEOM::GEOM_Object_ptr anObj = myInsOp->MakeCopy(theOriginal);
1286   endService( " GEOM_Superv_i::MakeCopy" );
1287   return anObj;
1288 }
1289
1290 //=============================================================================
1291 //  Export:
1292 //=============================================================================
1293 void GEOM_Superv_i::Export (GEOM::GEOM_Object_ptr theObject, 
1294                             const char*           theFileName, 
1295                             const char*           theFormatName)
1296 {
1297   beginService( " GEOM_Superv_i::Export" );
1298   MESSAGE("GEOM_Superv_i::Export");
1299   getInsOp();
1300   myInsOp->Export(theObject, theFileName, theFormatName);
1301   endService( " GEOM_Superv_i::Export" );
1302 }
1303
1304 //=============================================================================
1305 //  Import:
1306 //=============================================================================
1307 GEOM::GEOM_Object_ptr GEOM_Superv_i::Import (const char* theFileName, 
1308                                              const char* theFormatName)
1309 {
1310   beginService( " GEOM_Superv_i::Import" );
1311   MESSAGE("GEOM_Superv_i::Import");
1312   getInsOp();
1313   GEOM::GEOM_Object_ptr anObj = myInsOp->Import(theFileName, theFormatName);
1314   endService( " GEOM_Superv_i::Import" );
1315   return anObj;
1316 }
1317
1318 //=============================================================================
1319 //  ImportTranslators:
1320 //=============================================================================
1321 void GEOM_Superv_i::ImportTranslators (GEOM::string_array_out theFormats,
1322                                        GEOM::string_array_out thePatterns)
1323 {
1324   beginService( " GEOM_Superv_i::ImportTranslators" );
1325   MESSAGE("GEOM_Superv_i::ImportTranslators");
1326   getInsOp();
1327   myInsOp->ImportTranslators(theFormats, thePatterns);
1328   endService( " GEOM_Superv_i::ImportTranslators" );
1329 }
1330
1331 //=============================================================================
1332 //  ExportTranslators:
1333 //=============================================================================
1334 void GEOM_Superv_i::ExportTranslators (GEOM::string_array_out theFormats,
1335                                        GEOM::string_array_out thePatterns)
1336 {
1337   beginService( " GEOM_Superv_i::ExportTranslators" );
1338   MESSAGE("GEOM_Superv_i::ExportTranslators");
1339   getInsOp();
1340   myInsOp->ExportTranslators(theFormats, thePatterns);
1341   endService( " GEOM_Superv_i::ExportTranslators" );
1342 }
1343
1344 //============================= TransformOperations ===========================
1345 //=============================================================================
1346 //  TranslateTwoPoints:
1347 //=============================================================================
1348 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateTwoPoints (GEOM::GEOM_Object_ptr theObject,
1349                                                          GEOM::GEOM_Object_ptr thePoint1,
1350                                                          GEOM::GEOM_Object_ptr thePoint2)
1351 {
1352   beginService( " GEOM_Superv_i::TranslateTwoPoints" );
1353   MESSAGE("GEOM_Superv_i::TranslateTwoPoints");
1354   getTransfOp();
1355   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateTwoPoints(theObject, thePoint1, thePoint2);
1356   endService( " GEOM_Superv_i::TranslateTwoPoints" );
1357   return anObj;
1358 }
1359
1360 //=============================================================================
1361 //  TranslateTwoPointsCopy:
1362 //=============================================================================
1363 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateTwoPointsCopy (GEOM::GEOM_Object_ptr theObject,
1364                                                              GEOM::GEOM_Object_ptr thePoint1,
1365                                                              GEOM::GEOM_Object_ptr thePoint2)
1366 {
1367   beginService( " GEOM_Superv_i::TranslateTwoPointsCopy" );
1368   MESSAGE("GEOM_Superv_i::TranslateTwoPointsCopy");
1369   getTransfOp();
1370   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateTwoPointsCopy(theObject, thePoint1, thePoint2);
1371   endService( " GEOM_Superv_i::TranslateTwoPointsCopy" );
1372   return anObj;
1373 }
1374
1375 //=============================================================================
1376 //  TranslateDXDYDZ:
1377 //=============================================================================
1378 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZ (GEOM::GEOM_Object_ptr theObject,
1379                                                       CORBA::Double theDX, 
1380                                                       CORBA::Double theDY, 
1381                                                       CORBA::Double theDZ)
1382 {
1383   beginService( " GEOM_Superv_i::TranslateDXDYDZ" );
1384   MESSAGE("GEOM_Superv_i::TranslateDXDYDZ");
1385   getTransfOp();
1386   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateDXDYDZ(theObject, theDX, theDY, theDZ);
1387   endService( " GEOM_Superv_i::TranslateDXDYDZ" );
1388   return anObj;
1389 }
1390
1391 //=============================================================================
1392 //  TranslateDXDYDZCopy:
1393 //=============================================================================
1394 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZCopy (GEOM::GEOM_Object_ptr theObject,
1395                                                           CORBA::Double theDX, 
1396                                                           CORBA::Double theDY, 
1397                                                           CORBA::Double theDZ)
1398 {
1399   beginService( " GEOM_Superv_i::TranslateDXDYDZCopy" );
1400   MESSAGE("GEOM_Superv_i::TranslateDXDYDZCopy");
1401   getTransfOp();
1402   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ);
1403   endService( " GEOM_Superv_i::TranslateDXDYDZCopy" );
1404   return anObj;
1405 }
1406
1407 //=============================================================================
1408 //  TranslateVector:
1409 //=============================================================================
1410 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVector (GEOM::GEOM_Object_ptr theObject,
1411                                                       GEOM::GEOM_Object_ptr theVector)
1412 {
1413   beginService( " GEOM_Superv_i::TranslateVector" );
1414   MESSAGE("GEOM_Superv_i::TranslateVector");
1415   getTransfOp();
1416   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVector(theObject, theVector);
1417   endService( " GEOM_Superv_i::TranslateVector" );
1418   return anObj;
1419 }
1420
1421 //=============================================================================
1422 //  TranslateVectorCopy:
1423 //=============================================================================
1424 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVectorCopy (GEOM::GEOM_Object_ptr theObject,
1425                                                           GEOM::GEOM_Object_ptr theVector)
1426 {
1427   beginService( " GEOM_Superv_i::TranslateVectorCopy" );
1428   MESSAGE("GEOM_Superv_i::TranslateVectorCopy");
1429   getTransfOp();
1430   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVectorCopy(theObject, theVector);
1431   endService( " GEOM_Superv_i::TranslateVectorCopy" );
1432   return anObj;
1433 }
1434
1435 //=============================================================================
1436 //  TranslateVectorDistance:
1437 //=============================================================================
1438 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVectorDistance (GEOM::GEOM_Object_ptr theObject,
1439                                                               GEOM::GEOM_Object_ptr theVector,
1440                                                               CORBA::Double theDistance,
1441                                                               CORBA::Boolean theCopy)
1442 {
1443   beginService( " GEOM_Superv_i::TranslateVectorDistance" );
1444   MESSAGE("GEOM_Superv_i::TranslateVectorDistance");
1445   getTransfOp();
1446   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVectorDistance(theObject, 
1447                                                                     theVector, theDistance, theCopy);
1448   endService( " GEOM_Superv_i::TranslateVectorDistance" );
1449   return anObj;
1450 }
1451
1452 //=============================================================================
1453 //  MultiTranslate1D:
1454 //=============================================================================
1455 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiTranslate1D (GEOM::GEOM_Object_ptr theObject,
1456                                                        GEOM::GEOM_Object_ptr theVector,
1457                                                        CORBA::Double theStep,
1458                                                        CORBA::Long theNbTimes)
1459 {
1460   beginService( " GEOM_Superv_i::MultiTranslate1D" );
1461   MESSAGE("GEOM_Superv_i::MultiTranslate1D");
1462   getTransfOp();
1463   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiTranslate1D(theObject, theVector, theStep, theNbTimes);
1464   endService( " GEOM_Superv_i::MultiTranslate1D" );
1465   return anObj;
1466 }
1467
1468 //=============================================================================
1469 //  MultiTranslate2D:
1470 //=============================================================================
1471 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiTranslate2D (GEOM::GEOM_Object_ptr theObject,
1472                                                        GEOM::GEOM_Object_ptr theVector1,
1473                                                        CORBA::Double theStep1,
1474                                                        CORBA::Long theNbTimes1,
1475                                                        GEOM::GEOM_Object_ptr theVector2,
1476                                                        CORBA::Double theStep2,
1477                                                        CORBA::Long theNbTimes2)
1478 {
1479   beginService( " GEOM_Superv_i::MultiTranslate2D" );
1480   MESSAGE("GEOM_Superv_i::MultiTranslate2D");
1481   getTransfOp();
1482   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiTranslate2D(theObject, theVector1, theStep1, theNbTimes1,
1483                                                              theVector2, theStep2, theNbTimes2);
1484   endService( " GEOM_Superv_i::MultiTranslate2D" );
1485   return anObj;
1486 }
1487
1488 //=============================================================================
1489 //  Rotate:
1490 //=============================================================================
1491 GEOM::GEOM_Object_ptr GEOM_Superv_i::Rotate (GEOM::GEOM_Object_ptr theObject,
1492                                              GEOM::GEOM_Object_ptr theAxis,
1493                                              CORBA::Double theAngle)
1494 {
1495   beginService( " GEOM_Superv_i::Rotate" );
1496   MESSAGE("GEOM_Superv_i::Rotate");
1497   getTransfOp();
1498   GEOM::GEOM_Object_ptr anObj = myTransfOp->Rotate(theObject, theAxis, theAngle);
1499   endService( " GEOM_Superv_i::Rotate" );
1500   return anObj;
1501 }
1502
1503 //=============================================================================
1504 //  RotateCopy:
1505 //=============================================================================
1506 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateCopy (GEOM::GEOM_Object_ptr theObject,
1507                                                  GEOM::GEOM_Object_ptr theAxis,
1508                                                  CORBA::Double theAngle)
1509 {
1510   beginService( " GEOM_Superv_i::RotateCopy" );
1511   MESSAGE("GEOM_Superv_i::RotateCopy");
1512   getTransfOp();
1513   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateCopy(theObject, theAxis, theAngle);
1514   endService( " GEOM_Superv_i::RotateCopy" );
1515   return anObj;
1516 }
1517 //=============================================================================
1518 //  RotateThreePoints:
1519 //=============================================================================
1520 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateThreePoints (GEOM::GEOM_Object_ptr theObject,
1521                                                         GEOM::GEOM_Object_ptr theCentPoint,
1522                                                         GEOM::GEOM_Object_ptr thePoint1,
1523                                                         GEOM::GEOM_Object_ptr thePoint2)
1524 {
1525   beginService( " GEOM_Superv_i::RotateThreePoints" );
1526   MESSAGE("GEOM_Superv_i::RotateThreePoints");
1527   getTransfOp();
1528   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateThreePoints(theObject, theCentPoint, thePoint1, thePoint2);
1529   endService( " GEOM_Superv_i::RotateThreePoints" );
1530   return anObj;
1531 }
1532
1533 //=============================================================================
1534 //  RotateThreePointsCopy:
1535 //=============================================================================
1536 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateThreePointsCopy (GEOM::GEOM_Object_ptr theObject,
1537                                                             GEOM::GEOM_Object_ptr theCentPoint,
1538                                                             GEOM::GEOM_Object_ptr thePoint1,
1539                                                             GEOM::GEOM_Object_ptr thePoint2)
1540 {
1541   beginService( " GEOM_Superv_i::RotateThreePointsCopy" );
1542   MESSAGE("GEOM_Superv_i::RotateThreePointsCopy");
1543   getTransfOp();
1544   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2);
1545   endService( " GEOM_Superv_i::RotateThreePointsCopy" );
1546   return anObj;
1547 }
1548
1549 //=============================================================================
1550 //  MultiRotate1D:
1551 //=============================================================================
1552 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate1D (GEOM::GEOM_Object_ptr theObject,
1553                                                     GEOM::GEOM_Object_ptr theAxis,
1554                                                     CORBA::Long theNbTimes)
1555 {
1556   beginService( " GEOM_Superv_i::MultiRotate1D" );
1557   MESSAGE("GEOM_Superv_i::MultiRotate1D");
1558   getTransfOp();
1559   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiRotate1D(theObject, theAxis, theNbTimes);
1560   endService( " GEOM_Superv_i::MultiRotate1D" );
1561   return anObj;
1562 }
1563
1564 //=============================================================================
1565 //  MultiRotate2D:
1566 //=============================================================================
1567 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate2D (GEOM::GEOM_Object_ptr theObject,
1568                                                     GEOM::GEOM_Object_ptr theAxis,
1569                                                     CORBA::Double theAngle,
1570                                                     CORBA::Long theNbTimes1,
1571                                                     CORBA::Double theStep,
1572                                                     CORBA::Long theNbTimes2)
1573 {
1574   beginService( " GEOM_Superv_i::MultiRotate2D" );
1575   MESSAGE("GEOM_Superv_i::MultiRotate2D");
1576   getTransfOp();
1577   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2);
1578   endService( " GEOM_Superv_i::MultiRotate2D" );
1579   return anObj;
1580 }
1581
1582 //=============================================================================
1583 //  MirrorPlane:
1584 //=============================================================================
1585 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlane (GEOM::GEOM_Object_ptr theObject, 
1586                                                   GEOM::GEOM_Object_ptr thePlane)
1587 {
1588   beginService( " GEOM_Superv_i::MirrorPlane" );
1589   MESSAGE("GEOM_Superv_i::MirrorPlane");
1590   getTransfOp();
1591   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPlane(theObject, thePlane);
1592   endService( " GEOM_Superv_i::MirrorPlane" );
1593   return anObj;
1594 }
1595
1596 //=============================================================================
1597 //  MirrorPlaneCopy:
1598 //=============================================================================
1599 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlaneCopy (GEOM::GEOM_Object_ptr theObject, 
1600                                                       GEOM::GEOM_Object_ptr thePlane)
1601 {
1602   beginService( " GEOM_Superv_i::MirrorPlaneCopy" );
1603   MESSAGE("GEOM_Superv_i::MirrorPlaneCopy");
1604   getTransfOp();
1605   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPlaneCopy(theObject, thePlane);
1606   endService( " GEOM_Superv_i::MirrorPlaneCopy" );
1607   return anObj;
1608 }
1609
1610 //=============================================================================
1611 //  MirrorAxis:
1612 //=============================================================================
1613 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxis (GEOM::GEOM_Object_ptr theObject, 
1614                                                  GEOM::GEOM_Object_ptr theAxis)
1615 {
1616   beginService( " GEOM_Superv_i::MirrorAxis" );
1617   MESSAGE("GEOM_Superv_i::MirrorAxis");
1618   getTransfOp();
1619   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorAxis(theObject, theAxis);
1620   endService( " GEOM_Superv_i::MirrorAxis" );
1621   return anObj;
1622 }
1623
1624 //=============================================================================
1625 //  MirrorAxisCopy:
1626 //=============================================================================
1627 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxisCopy (GEOM::GEOM_Object_ptr theObject, 
1628                                                      GEOM::GEOM_Object_ptr theAxis)
1629 {
1630   beginService( " GEOM_Superv_i::MirrorAxisCopy" );
1631   MESSAGE("GEOM_Superv_i::MirrorAxisCopy");
1632   getTransfOp();
1633   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorAxisCopy(theObject, theAxis);
1634   endService( " GEOM_Superv_i::MirrorAxisCopy" );
1635   return anObj;
1636 }
1637
1638 //=============================================================================
1639 //  MirrorPoint:
1640 //=============================================================================
1641 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPoint (GEOM::GEOM_Object_ptr theObject, 
1642                                                   GEOM::GEOM_Object_ptr thePoint)
1643 {
1644   beginService( " GEOM_Superv_i::MirrorPoint" );
1645   MESSAGE("GEOM_Superv_i::MirrorPoint");
1646   getTransfOp();
1647   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPoint(theObject, thePoint);
1648   endService( " GEOM_Superv_i::MirrorPoint" );
1649   return anObj;
1650 }
1651
1652 //=============================================================================
1653 //  MirrorPointCopy:
1654 //=============================================================================
1655 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPointCopy (GEOM::GEOM_Object_ptr theObject, 
1656                                                       GEOM::GEOM_Object_ptr thePoint)
1657 {
1658   beginService( " GEOM_Superv_i::MirrorPoint" );
1659   MESSAGE("GEOM_Superv_i::MirrorPointCopy");
1660   getTransfOp();
1661   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPointCopy(theObject, thePoint);
1662   endService( " GEOM_Superv_i::MirrorPoint" );
1663   return anObj;
1664 }
1665
1666 //=============================================================================
1667 //  OffsetShape:
1668 //=============================================================================
1669 GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShape (GEOM::GEOM_Object_ptr theObject, 
1670                                                   CORBA::Double theOffset)
1671 {
1672   beginService( " GEOM_Superv_i::OffsetShape" );
1673   MESSAGE("GEOM_Superv_i::OffsetShape");
1674   getTransfOp();
1675   GEOM::GEOM_Object_ptr anObj = myTransfOp->OffsetShape(theObject, theOffset);
1676   endService( " GEOM_Superv_i::OffsetShape" );
1677   return anObj;
1678 }
1679
1680 //=============================================================================
1681 //  OffsetShapeCopy:
1682 //=============================================================================
1683 GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShapeCopy (GEOM::GEOM_Object_ptr theObject, 
1684                                                       CORBA::Double theOffset)
1685 {
1686   beginService( " GEOM_Superv_i::OffsetShapeCopy" );
1687   MESSAGE("GEOM_Superv_i::OffsetShapeCopy");
1688   getTransfOp();
1689   GEOM::GEOM_Object_ptr anObj = myTransfOp->OffsetShapeCopy(theObject, theOffset);
1690   endService( " GEOM_Superv_i::OffsetShapeCopy" );
1691   return anObj;
1692 }
1693
1694 //=============================================================================
1695 //  ScaleShape:
1696 //=============================================================================
1697 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShape (GEOM::GEOM_Object_ptr theObject, 
1698                                                  GEOM::GEOM_Object_ptr thePoint,
1699                                                  CORBA::Double theFactor)
1700 {
1701   beginService( " GEOM_Superv_i::ScaleShape" );
1702   MESSAGE("GEOM_Superv_i::ScaleShape");
1703   getTransfOp();
1704   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShape(theObject, thePoint, theFactor);
1705   endService( " GEOM_Superv_i::ScaleShape" );
1706   return anObj;
1707 }
1708
1709 //=============================================================================
1710 //  ScaleShapeCopy:
1711 //=============================================================================
1712 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeCopy (GEOM::GEOM_Object_ptr theObject, 
1713                                                      GEOM::GEOM_Object_ptr thePoint,
1714                                                      CORBA::Double theFactor)
1715 {
1716   beginService( " GEOM_Superv_i::ScaleShapeCopy" );
1717   MESSAGE("GEOM_Superv_i::ScaleShapeCopy");
1718   getTransfOp();
1719   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeCopy(theObject, thePoint, theFactor);
1720   endService( " GEOM_Superv_i::ScaleShapeCopy" );
1721   return anObj;
1722 }
1723
1724 //=============================================================================
1725 //  ScaleShapeAlongAxes:
1726 //=============================================================================
1727 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeAlongAxes (GEOM::GEOM_Object_ptr theObject,
1728                                                           GEOM::GEOM_Object_ptr thePoint,
1729                                                           CORBA::Double theFactorX,
1730                                                           CORBA::Double theFactorY,
1731                                                           CORBA::Double theFactorZ)
1732 {
1733   beginService( " GEOM_Superv_i::ScaleShapeAlongAxes" );
1734   MESSAGE("GEOM_Superv_i::ScaleShapeAlongAxes");
1735   getTransfOp();
1736   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeAlongAxes
1737     (theObject, thePoint, theFactorX, theFactorY, theFactorZ);
1738   endService( " GEOM_Superv_i::ScaleShapeAlongAxes" );
1739   return anObj;
1740 }
1741
1742 //=============================================================================
1743 //  ScaleShapeAlongAxesCopy:
1744 //=============================================================================
1745 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeAlongAxesCopy (GEOM::GEOM_Object_ptr theObject,
1746                                                               GEOM::GEOM_Object_ptr thePoint,
1747                                                               CORBA::Double theFactorX,
1748                                                               CORBA::Double theFactorY,
1749                                                               CORBA::Double theFactorZ)
1750 {
1751   beginService( " GEOM_Superv_i::ScaleShapeAlongAxesCopy" );
1752   MESSAGE("GEOM_Superv_i::ScaleShapeAlongAxesCopy");
1753   getTransfOp();
1754   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeAlongAxesCopy
1755     (theObject, thePoint, theFactorX, theFactorY, theFactorZ);
1756   endService( " GEOM_Superv_i::ScaleShapeAlongAxesCopy" );
1757   return anObj;
1758 }
1759
1760 //=============================================================================
1761 //  PositionShape:
1762 //=============================================================================
1763 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShape (GEOM::GEOM_Object_ptr theObject,
1764                                                     GEOM::GEOM_Object_ptr theStartLCS,
1765                                                     GEOM::GEOM_Object_ptr theEndLCS)
1766 {
1767   beginService( " GEOM_Superv_i::PositionShape" );
1768   MESSAGE("GEOM_Superv_i::PositionShape");
1769   getTransfOp();
1770   GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionShape(theObject, theStartLCS, theEndLCS);
1771   endService( " GEOM_Superv_i::PositionShape" );
1772   return anObj;
1773 }
1774
1775 //=============================================================================
1776 //  PositionShapeCopy:
1777 //=============================================================================
1778 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShapeCopy (GEOM::GEOM_Object_ptr theObject,
1779                                                         GEOM::GEOM_Object_ptr theStartLCS,
1780                                                         GEOM::GEOM_Object_ptr theEndLCS)
1781 {
1782   beginService( " GEOM_Superv_i::PositionShapeCopy" );
1783   MESSAGE("GEOM_Superv_i::PositionShapeCopy");
1784   getTransfOp();
1785   GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionShapeCopy(theObject, theStartLCS, theEndLCS);
1786   endService( " GEOM_Superv_i::PositionShapeCopy" );
1787   return anObj;
1788 }
1789
1790 //=============================== ShapesOperations ============================
1791 //=============================================================================
1792 //  Make:
1793 //=============================================================================
1794 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEdge (GEOM::GEOM_Object_ptr thePnt1,
1795                                                GEOM::GEOM_Object_ptr thePnt2)
1796 {
1797   beginService( " GEOM_Superv_i::MakeEdge" );
1798   MESSAGE("GEOM_Superv_i::MakeEdge");
1799   getShapesOp();
1800   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeEdge(thePnt1, thePnt2);
1801   endService( " GEOM_Superv_i::MakeEdge" );
1802   return anObj;
1803 }
1804
1805 //=============================================================================
1806 //  MakeWire:
1807 //=============================================================================
1808 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeWire (GEOM::GEOM_List_ptr theEdgesAndWires)
1809 {
1810   beginService( " GEOM_Superv_i::MakeWire" );
1811   MESSAGE("GEOM_Superv_i::MakeWire");
1812   if (GEOM_List_i<GEOM::ListOfGO>* aListImplEW = 
1813       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theEdgesAndWires, myPOA).in())) {
1814     getShapesOp();
1815     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeWire(aListImplEW->GetList());
1816     endService( " GEOM_Superv_i::MakeWire" );
1817     return anObj;
1818   }
1819   endService( " GEOM_Superv_i::MakeWire" );
1820   return NULL;
1821 }
1822
1823 //=============================================================================
1824 //  MakeFace:
1825 //=============================================================================
1826 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFace (GEOM::GEOM_Object_ptr theWire,
1827                                                CORBA::Boolean isPlanarWanted)
1828 {
1829   beginService( " GEOM_Superv_i::MakeFace" );
1830   MESSAGE("GEOM_Superv_i::MakeFace");
1831   getShapesOp();
1832   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeFace(theWire, isPlanarWanted);
1833   endService( " GEOM_Superv_i::MakeFace" );
1834   return anObj;
1835 }
1836
1837 //=============================================================================
1838 //  MakeFaceWires:
1839 //=============================================================================
1840 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceWires (GEOM::GEOM_List_ptr theWires,
1841                                                     CORBA::Boolean isPlanarWanted)
1842 {
1843   beginService( " GEOM_Superv_i::MakeFaceWires" );
1844   MESSAGE("GEOM_Superv_i::MakeFaceWires");
1845   if (GEOM_List_i<GEOM::ListOfGO>* aListImplW = 
1846       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theWires, myPOA).in())) {
1847     getShapesOp();
1848     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeFaceWires(aListImplW->GetList(), isPlanarWanted);
1849     endService( " GEOM_Superv_i::MakeFaceWires" );
1850     return anObj;
1851   }
1852   endService( " GEOM_Superv_i::MakeFaceWires" );
1853   return NULL;
1854 }
1855
1856 //=============================================================================
1857 //  MakeShell:
1858 //=============================================================================
1859 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeShell (GEOM::GEOM_List_ptr theFacesAndShells)
1860 {
1861   beginService( " GEOM_Superv_i::MakeShell" );
1862   MESSAGE("GEOM_Superv_i::MakeShell");
1863   if (GEOM_List_i<GEOM::ListOfGO>* aListImplFS = 
1864       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theFacesAndShells, myPOA).in())) {
1865     getShapesOp();
1866     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeShell(aListImplFS->GetList());
1867     endService( " GEOM_Superv_i::MakeShell" );
1868     return anObj;
1869   }
1870   endService( " GEOM_Superv_i::MakeShell" );
1871   return NULL;
1872 }
1873
1874 //=============================================================================
1875 //  MakeSolidShell:
1876 //=============================================================================
1877 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShell (GEOM::GEOM_Object_ptr theShell)
1878 {
1879   beginService( " GEOM_Superv_i::MakeSolidShell" );
1880   MESSAGE("GEOM_Superv_i::MakeSolidShell");
1881   getShapesOp();
1882   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeSolidShell(theShell);
1883   endService( " GEOM_Superv_i::MakeSolidShell" );
1884   return anObj;
1885 }
1886
1887 //=============================================================================
1888 //  MakeSolidShells:
1889 //=============================================================================
1890 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShells (GEOM::GEOM_List_ptr theShells)
1891 {
1892   beginService( " GEOM_Superv_i::MakeSolidShells" );
1893   MESSAGE("GEOM_Superv_i::MakeSolidShells");
1894   if (GEOM_List_i<GEOM::ListOfGO>* aListImplS = 
1895       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShells, myPOA).in())) {
1896     getShapesOp();
1897     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeSolidShells(aListImplS->GetList());
1898     endService( " GEOM_Superv_i::MakeSolidShells" );
1899     return anObj;
1900   }
1901   endService( " GEOM_Superv_i::MakeSolidShells" );
1902   return NULL;
1903 }
1904
1905 //=============================================================================
1906 //  MakeCompound:
1907 //=============================================================================
1908 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCompound (GEOM::GEOM_List_ptr theShapes)
1909 {
1910   beginService( " GEOM_Superv_i::MakeCompound" );
1911   MESSAGE("GEOM_Superv_i::MakeCompound");
1912   if (GEOM_List_i<GEOM::ListOfGO>* aListImpl = 
1913       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShapes, myPOA).in())) {
1914     getShapesOp();
1915     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeCompound(aListImpl->GetList());
1916     endService( " GEOM_Superv_i::MakeCompound" );
1917     return anObj;
1918   }
1919   endService( " GEOM_Superv_i::MakeCompound" );
1920   return NULL;
1921 }
1922
1923 //=============================================================================
1924 //  MakeGlueFaces:
1925 //=============================================================================
1926 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFaces (GEOM::GEOM_Object_ptr theShape,
1927                                                     CORBA::Double   theTolerance,
1928                                                     CORBA::Boolean doKeepNonSolids)
1929 {
1930   beginService( " GEOM_Superv_i::MakeGlueFaces" );
1931   MESSAGE("GEOM_Superv_i::MakeGlueFaces");
1932   getShapesOp();
1933   GEOM::GEOM_Object_ptr anObj =
1934     myShapesOp->MakeGlueFaces(theShape, theTolerance, doKeepNonSolids);
1935   endService( " GEOM_Superv_i::MakeGlueFaces" );
1936   return anObj;
1937 }
1938
1939 //=============================================================================
1940 //  GetGlueFaces:
1941 //=============================================================================
1942 GEOM::GEOM_List_ptr GEOM_Superv_i::GetGlueFaces (GEOM::GEOM_Object_ptr theShape,
1943                                                  CORBA::Double theTolerance)
1944 {
1945   beginService( " GEOM_Superv_i::GetGlueFaces" );
1946   MESSAGE("GEOM_Superv_i::GetGlueFaces");
1947   getShapesOp();
1948   GEOM::ListOfGO* aList = myShapesOp->GetGlueFaces(theShape, theTolerance);
1949   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
1950   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
1951   endService( " GEOM_Superv_i::GetGlueFaces" );
1952   return aListPtr->_this();
1953 }
1954
1955 //=============================================================================
1956 //  MakeGlueFacesByList:
1957 //=============================================================================
1958 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFacesByList (GEOM::GEOM_Object_ptr theShape,
1959                                                           CORBA::Double theTolerance,
1960                                                           const GEOM::ListOfGO& theFaces,
1961                                                           CORBA::Boolean doKeepNonSolids)
1962 {
1963   beginService( " GEOM_Superv_i::MakeGlueFacesByList" );
1964   MESSAGE("GEOM_Superv_i::MakeGlueFacesByList");
1965   getShapesOp();
1966   GEOM::GEOM_Object_ptr anObj =
1967     myShapesOp->MakeGlueFacesByList(theShape, theTolerance, theFaces, doKeepNonSolids);
1968   endService( " GEOM_Superv_i::MakeGlueFacesByList" );
1969   return anObj;
1970 }
1971
1972 //=============================================================================
1973 //  MakeExplode:
1974 //=============================================================================
1975 GEOM::GEOM_List_ptr GEOM_Superv_i::MakeExplode (GEOM::GEOM_Object_ptr theShape,
1976                                                     CORBA::Long theShapeType,
1977                                                     CORBA::Boolean isSorted)
1978 {
1979   beginService( " GEOM_Superv_i::MakeExplode" );
1980   MESSAGE("GEOM_Superv_i::MakeExplode");
1981   getShapesOp();
1982
1983   GEOM::ListOfGO* aList = myShapesOp->MakeExplode(theShape, theShapeType, isSorted);
1984   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
1985   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
1986   endService( " GEOM_Superv_i::MakeExplode" );
1987   return aListPtr->_this();
1988 }
1989
1990 //=============================================================================
1991 //  NumberOfFaces:
1992 //=============================================================================
1993 CORBA::Long GEOM_Superv_i::NumberOfFaces (GEOM::GEOM_Object_ptr theShape)
1994 {
1995   beginService( " GEOM_Superv_i::NumberOfFaces" );
1996   MESSAGE("GEOM_Superv_i::NumberOfFaces");
1997   getShapesOp();
1998   CORBA::Long aRes = myShapesOp->NumberOfFaces(theShape);
1999   endService( " GEOM_Superv_i::NumberOfFaces" );
2000   return aRes;
2001 }
2002
2003 //=============================================================================
2004 //  NumberOfEdges:
2005 //=============================================================================
2006 CORBA::Long GEOM_Superv_i::NumberOfEdges (GEOM::GEOM_Object_ptr theShape)
2007 {
2008   beginService( " GEOM_Superv_i::NumberOfEdges" );
2009   MESSAGE("GEOM_Superv_i::NumberOfEdges");
2010   getShapesOp();
2011   CORBA::Long aRes = myShapesOp->NumberOfEdges(theShape);
2012   endService( " GEOM_Superv_i::NumberOfEdges" );
2013   return aRes;
2014 }
2015
2016
2017 //=============================================================================
2018 //  ChangeOrientation:
2019 //=============================================================================
2020 GEOM::GEOM_Object_ptr GEOM_Superv_i::ChangeOrientation (GEOM::GEOM_Object_ptr theShape)
2021 {
2022   beginService( " GEOM_Superv_i::ChangeOrientation" );
2023   MESSAGE("GEOM_Superv_i::ChangeOrientation");
2024   getShapesOp();
2025   GEOM::GEOM_Object_ptr anObj = myShapesOp->ChangeOrientation(theShape);
2026   endService( " GEOM_Superv_i::ChangeOrientation" );
2027   return anObj;
2028 }
2029
2030
2031 //=============================================================================
2032 //  GetShapesOnShape:
2033 //=============================================================================
2034 GEOM::GEOM_List_ptr GEOM_Superv_i::GetShapesOnShape
2035                                           (GEOM::GEOM_Object_ptr theCheckShape,
2036                                            GEOM::GEOM_Object_ptr theShape,
2037                                            CORBA::Short theShapeType,
2038                                            GEOM::shape_state theState)
2039 {
2040   beginService( " GEOM_Superv_i::GetShapesOnShape" );
2041   MESSAGE("GEOM_Superv_i::GetShapesOnShape");
2042   getShapesOp();
2043   GEOM::ListOfGO* aList =
2044     myShapesOp->GetShapesOnShape(theCheckShape, theShape, theShapeType, theState);
2045   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
2046   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
2047   endService( " GEOM_Superv_i::GetShapesOnShape" );
2048   return aListPtr->_this();
2049 }
2050
2051
2052 //=============================================================================
2053 //  GetShapesOnShapeAsCompound:
2054 //=============================================================================
2055 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetShapesOnShapeAsCompound
2056                                           (GEOM::GEOM_Object_ptr theCheckShape,
2057                                            GEOM::GEOM_Object_ptr theShape,
2058                                            CORBA::Short theShapeType,
2059                                            GEOM::shape_state theState)
2060 {
2061   beginService( " GEOM_Superv_i::GetShapesOnShapeAsCompound" );
2062   MESSAGE("GEOM_Superv_i::GetShapesOnShapeAsCompound");
2063   getShapesOp();
2064   GEOM::GEOM_Object_ptr anObj = 
2065     myShapesOp->GetShapesOnShapeAsCompound(theCheckShape, theShape, theShapeType, theState);
2066   endService( " GEOM_Superv_i::GetShapesOnShapeAsCompound" );
2067   return anObj;
2068 }
2069
2070
2071 //=============================== BlocksOperations ============================
2072 //=============================================================================
2073 //  MakeQuad4Vertices:
2074 //=============================================================================
2075 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad4Vertices (GEOM::GEOM_Object_ptr thePnt1,
2076                                                         GEOM::GEOM_Object_ptr thePnt2,
2077                                                         GEOM::GEOM_Object_ptr thePnt3,
2078                                                         GEOM::GEOM_Object_ptr thePnt4)
2079 {
2080   beginService( " GEOM_Superv_i::MakeQuad4Vertices" );
2081   MESSAGE("GEOM_Superv_i::MakeQuad4Vertices");
2082   getBlocksOp();
2083   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad4Vertices(thePnt1, thePnt2, thePnt3, thePnt4);
2084   endService( " GEOM_Superv_i::MakeQuad4Vertices" );
2085   return anObj;
2086 }
2087
2088 //=============================================================================
2089 //  MakeQuad:
2090 //=============================================================================
2091 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad (GEOM::GEOM_Object_ptr theEdge1,
2092                                                GEOM::GEOM_Object_ptr theEdge2,
2093                                                GEOM::GEOM_Object_ptr theEdge3,
2094                                                GEOM::GEOM_Object_ptr theEdge4)
2095 {
2096   beginService( " GEOM_Superv_i::MakeQuad" );
2097   MESSAGE("GEOM_Superv_i::MakeQuad");
2098   getBlocksOp();
2099   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad(theEdge1, theEdge2, theEdge3, theEdge4);
2100   endService( " GEOM_Superv_i::MakeQuad" );
2101   return anObj;
2102 }
2103
2104 //=============================================================================
2105 //  MakeQuad2Edges:
2106 //=============================================================================
2107 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad2Edges (GEOM::GEOM_Object_ptr theEdge1,
2108                                                      GEOM::GEOM_Object_ptr theEdge2)
2109 {
2110   beginService( " GEOM_Superv_i::MakeQuad2Edges" );
2111   MESSAGE("GEOM_Superv_i::MakeQuad2Edges");
2112   getBlocksOp();
2113   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad2Edges(theEdge1, theEdge2);
2114   endService( " GEOM_Superv_i::MakeQuad2Edges" );
2115   return anObj;
2116 }
2117
2118 //=============================================================================
2119 //  MakeHexa:
2120 //=============================================================================
2121 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa (GEOM::GEOM_Object_ptr theFace1,
2122                                                GEOM::GEOM_Object_ptr theFace2,
2123                                                GEOM::GEOM_Object_ptr theFace3,
2124                                                GEOM::GEOM_Object_ptr theFace4,
2125                                                GEOM::GEOM_Object_ptr theFace5,
2126                                                GEOM::GEOM_Object_ptr theFace6)
2127 {
2128   beginService( " GEOM_Superv_i::MakeHexa" );
2129   MESSAGE("GEOM_Superv_i::MakeHexa");
2130   getBlocksOp();
2131   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeHexa(theFace1, theFace2, theFace3, theFace4, theFace5, theFace6);
2132   endService( " GEOM_Superv_i::MakeHexa" );
2133   return anObj;
2134 }
2135
2136 //=============================================================================
2137 //  MakeHexa2Faces:
2138 //=============================================================================
2139 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa2Faces (GEOM::GEOM_Object_ptr theFace1,
2140                                                      GEOM::GEOM_Object_ptr theFace2)
2141 {
2142   beginService( " GEOM_Superv_i::MakeHexa2Faces" );
2143   MESSAGE("GEOM_Superv_i::MakeHexa2Faces");
2144   getBlocksOp();
2145   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeHexa2Faces(theFace1, theFace2);
2146   endService( " GEOM_Superv_i::MakeHexa2Faces" );
2147   return anObj;
2148 }
2149
2150 //=============================================================================
2151 //  GetPoint:
2152 //=============================================================================
2153 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetPoint (GEOM::GEOM_Object_ptr theShape,
2154                                                CORBA::Double   theX,
2155                                                CORBA::Double   theY,
2156                                                CORBA::Double   theZ,
2157                                                CORBA::Double   theEpsilon)
2158 {
2159   beginService( " GEOM_Superv_i::GetPoint" );
2160   MESSAGE("GEOM_Superv_i::GetPoint");
2161   getBlocksOp();
2162   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetPoint(theShape, theX, theY, theZ, theEpsilon);
2163   endService( " GEOM_Superv_i::GetPoint" );
2164   return anObj;
2165 }
2166
2167 //=============================================================================
2168 //  GetEdge:
2169 //=============================================================================
2170 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdge (GEOM::GEOM_Object_ptr theShape,
2171                                               GEOM::GEOM_Object_ptr thePoint1,
2172                                               GEOM::GEOM_Object_ptr thePoint2)
2173 {
2174   beginService( " GEOM_Superv_i::GetEdge" );
2175   MESSAGE("GEOM_Superv_i::GetEdge");
2176   getBlocksOp();
2177   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetEdge(theShape, thePoint1, thePoint2);
2178   endService( " GEOM_Superv_i::GetEdge" );
2179   return anObj;
2180 }
2181
2182 //=============================================================================
2183 //  GetEdgeNearPoint:
2184 //=============================================================================
2185 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdgeNearPoint (GEOM::GEOM_Object_ptr theShape,
2186                                                        GEOM::GEOM_Object_ptr thePoint)
2187 {
2188   beginService( " GEOM_Superv_i::GetEdgeNearPoint" );
2189   MESSAGE("GEOM_Superv_i::GetEdgeNearPoint");
2190   getBlocksOp();
2191   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetEdgeNearPoint(theShape, thePoint);
2192   endService( " GEOM_Superv_i::GetEdgeNearPoint" );
2193   return anObj;
2194 }
2195
2196 //=============================================================================
2197 //  GetFaceByPoints:
2198 //=============================================================================
2199 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByPoints (GEOM::GEOM_Object_ptr theShape,
2200                                                       GEOM::GEOM_Object_ptr thePoint1,
2201                                                       GEOM::GEOM_Object_ptr thePoint2,
2202                                                       GEOM::GEOM_Object_ptr thePoint3,
2203                                                       GEOM::GEOM_Object_ptr thePoint4)
2204 {
2205   beginService( " GEOM_Superv_i::GetFaceByPoints" );
2206   MESSAGE("GEOM_Superv_i::GetFaceByPoints");
2207   getBlocksOp();
2208   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4);
2209   endService( " GEOM_Superv_i::GetFaceByPoints" );
2210   return anObj;
2211 }
2212
2213 //=============================================================================
2214 //  GetFaceByEdges:
2215 //=============================================================================
2216 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByEdges (GEOM::GEOM_Object_ptr theShape,
2217                                                      GEOM::GEOM_Object_ptr theEdge1,
2218                                                      GEOM::GEOM_Object_ptr theEdge2)
2219 {
2220   beginService( " GEOM_Superv_i::GetFaceByEdges" );
2221   MESSAGE("GEOM_Superv_i::GetFaceByEdges");
2222   getBlocksOp();
2223   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByEdges(theShape, theEdge1, theEdge2);
2224   endService( " GEOM_Superv_i::GetFaceByEdges" );
2225   return anObj;
2226 }
2227
2228 //=============================================================================
2229 //  GetOppositeFace:
2230 //=============================================================================
2231 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetOppositeFace (GEOM::GEOM_Object_ptr theBlock,
2232                                                       GEOM::GEOM_Object_ptr theFace)
2233 {
2234   beginService( " GEOM_Superv_i::GetOppositeFace" );
2235   MESSAGE("GEOM_Superv_i::GetOppositeFace");
2236   getBlocksOp();
2237   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetOppositeFace(theBlock, theFace);
2238   endService( " GEOM_Superv_i::GetOppositeFace" );
2239   return anObj;
2240 }
2241
2242 //=============================================================================
2243 //  GetFaceNearPoint:
2244 //=============================================================================
2245 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceNearPoint (GEOM::GEOM_Object_ptr theShape,
2246                                                        GEOM::GEOM_Object_ptr thePoint)
2247 {
2248   beginService( " GEOM_Superv_i::GetFaceNearPoint" );
2249   MESSAGE("GEOM_Superv_i::GetFaceNearPoint");
2250   getBlocksOp();
2251   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceNearPoint(theShape, thePoint);
2252   endService( " GEOM_Superv_i::GetFaceNearPoint" );
2253   return anObj;
2254 }
2255
2256 //=============================================================================
2257 //  GetFaceByNormale:
2258 //=============================================================================
2259 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByNormale (GEOM::GEOM_Object_ptr theBlock,
2260                                                        GEOM::GEOM_Object_ptr theVector)
2261 {
2262   beginService( " GEOM_Superv_i::GetFaceByNormale" );
2263   MESSAGE("GEOM_Superv_i::GetFaceByNormale");
2264   getBlocksOp();
2265   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByNormale(theBlock, theVector);
2266   endService( " GEOM_Superv_i::GetFaceByNormale" );
2267   return anObj;
2268 }
2269
2270 //=============================================================================
2271 //  IsCompoundOfBlocks:
2272 //=============================================================================
2273 CORBA::Boolean GEOM_Superv_i::IsCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
2274                                                   CORBA::Long     theMinNbFaces,
2275                                                   CORBA::Long     theMaxNbFaces,
2276                                                   CORBA::Long&          theNbBlocks)
2277 {
2278   beginService( " GEOM_Superv_i::IsCompoundOfBlocks" );
2279   MESSAGE("GEOM_Superv_i::IsCompoundOfBlocks");
2280   getBlocksOp();
2281   CORBA::Boolean aRes = myBlocksOp->IsCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces, theNbBlocks);
2282   endService( " GEOM_Superv_i::IsCompoundOfBlocks" );
2283   return aRes;
2284 }
2285
2286 //=============================================================================
2287 //  CheckCompoundOfBlocks:
2288 //=============================================================================
2289 CORBA::Boolean GEOM_Superv_i::CheckCompoundOfBlocks 
2290 (GEOM::GEOM_Object_ptr theCompound,
2291  GEOM::GEOM_IBlocksOperations::BCErrors_out theErrors)
2292 {
2293   beginService( " GEOM_Superv_i::CheckCompoundOfBlocks" );
2294   MESSAGE("GEOM_Superv_i::CheckCompoundOfBlocks");
2295   getBlocksOp();
2296   CORBA::Boolean aRes = myBlocksOp->CheckCompoundOfBlocks(theCompound, theErrors);
2297   endService( " GEOM_Superv_i::CheckCompoundOfBlocks" );
2298   return aRes;
2299 }
2300
2301 //=============================================================================
2302 //  PrintBCErrors:
2303 //=============================================================================
2304 char* GEOM_Superv_i::PrintBCErrors (GEOM::GEOM_Object_ptr theCompound,
2305                                     const GEOM::GEOM_IBlocksOperations::BCErrors& theErrors)
2306 {
2307   beginService( " GEOM_Superv_i::PrintBCErrors" );
2308   MESSAGE("GEOM_Superv_i::PrintBCErrors");
2309   getBlocksOp();
2310   char* anErrors = myBlocksOp->PrintBCErrors(theCompound, theErrors);
2311   endService( " GEOM_Superv_i::PrintBCErrors" );
2312   return anErrors;
2313 }
2314
2315 //=============================================================================
2316 //  ExplodeCompoundOfBlocks:
2317 //=============================================================================
2318 GEOM::GEOM_List_ptr GEOM_Superv_i::ExplodeCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
2319                                                                 CORBA::Long     theMinNbFaces,
2320                                                                 CORBA::Long     theMaxNbFaces)
2321 {
2322   beginService( " GEOM_Superv_i::ExplodeCompoundOfBlocks" );
2323   MESSAGE("GEOM_Superv_i::ExplodeCompoundOfBlocks");
2324   getBlocksOp();
2325   GEOM::ListOfGO* aBlocks = myBlocksOp->ExplodeCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces);
2326   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aBlocks));
2327   endService( " GEOM_Superv_i::ExplodeCompoundOfBlocks" );
2328   return aListPtr->_this();
2329 }
2330
2331 //=============================================================================
2332 //  GetBlockNearPoint:
2333 //=============================================================================
2334 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockNearPoint (GEOM::GEOM_Object_ptr theCompound,
2335                                                         GEOM::GEOM_Object_ptr thePoint)
2336 {
2337   beginService( " GEOM_Superv_i::GetBlockNearPoint" );
2338   MESSAGE("GEOM_Superv_i::GetBlockNearPoint");
2339   getBlocksOp();
2340   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetBlockNearPoint(theCompound, thePoint);
2341   endService( " GEOM_Superv_i::GetBlockNearPoint" );
2342   return anObj;
2343 }
2344
2345 //=============================================================================
2346 //  GetBlockByParts:
2347 //=============================================================================
2348 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockByParts (GEOM::GEOM_Object_ptr theCompound,
2349                                                       GEOM::GEOM_List_ptr theParts)
2350 {
2351   beginService( " GEOM_Superv_i::GetBlockByParts" );
2352   MESSAGE("GEOM_Superv_i::GetBlockByParts");
2353   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2354       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theParts, myPOA).in())) {
2355     getBlocksOp();
2356     GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetBlockByParts(theCompound, aListImplP->GetList());
2357     endService( " GEOM_Superv_i::GetBlockByParts" );
2358     return anObj;
2359   }
2360   endService( " GEOM_Superv_i::GetBlockByParts" );
2361   return NULL;
2362 }
2363
2364 //=============================================================================
2365 //  GetBlocksByParts:
2366 //=============================================================================
2367 GEOM::GEOM_List_ptr GEOM_Superv_i::GetBlocksByParts (GEOM::GEOM_Object_ptr theCompound,
2368                                                          GEOM::GEOM_List_ptr theParts)
2369 {
2370   beginService( " GEOM_Superv_i::GetBlocksByParts" );
2371   MESSAGE("GEOM_Superv_i::GetBlocksByParts");
2372   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2373       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theParts, myPOA).in())) {
2374     getBlocksOp();
2375     
2376     GEOM::ListOfGO* aBlocks = myBlocksOp->GetBlocksByParts(theCompound, aListImplP->GetList());
2377     GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aBlocks));
2378     endService( " GEOM_Superv_i::GetBlocksByParts" );
2379     return aListPtr->_this();
2380   }
2381   endService( " GEOM_Superv_i::GetBlocksByParts" );
2382   return NULL;
2383 }
2384
2385 //=============================================================================
2386 //  MakeMultiTransformation1D:
2387 //=============================================================================
2388 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMultiTransformation1D (GEOM::GEOM_Object_ptr theBlock,
2389                                                                 CORBA::Long     theDirFace1,
2390                                                                 CORBA::Long     theDirFace2,
2391                                                                 CORBA::Long     theNbTimes)
2392 {
2393   beginService( " GEOM_Superv_i::MakeMultiTransformation1D" );
2394   MESSAGE("GEOM_Superv_i::MakeMultiTransformation1D");
2395   getBlocksOp();
2396   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeMultiTransformation1D(theBlock, theDirFace1, theDirFace2, theNbTimes);
2397   endService( " GEOM_Superv_i::MakeMultiTransformation1D" );
2398   return anObj;
2399 }
2400
2401 //=============================================================================
2402 //  MakeMultiTransformation2D:
2403 //=============================================================================
2404 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMultiTransformation2D 
2405 (GEOM::GEOM_Object_ptr theBlock,
2406  CORBA::Long     theDirFace1U,
2407  CORBA::Long     theDirFace2U,
2408  CORBA::Long     theNbTimesU,
2409  CORBA::Long     theDirFace1V,
2410  CORBA::Long     theDirFace2V,
2411  CORBA::Long     theNbTimesV)
2412 {
2413   beginService( " GEOM_Superv_i::MakeMultiTransformation2D" );
2414   MESSAGE("GEOM_Superv_i::MakeMultiTransformation2D");
2415   getBlocksOp();
2416   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeMultiTransformation2D(theBlock, 
2417                                                                       theDirFace1U, theDirFace2U, theNbTimesU,
2418                                                                       theDirFace1V, theDirFace2V, theNbTimesV);
2419   endService( " GEOM_Superv_i::MakeMultiTransformation2D" );
2420   return anObj;
2421 }
2422
2423 //=============================== CurvesOperations ============================
2424 //=============================================================================
2425 //  MakeCirclePntVecR:
2426 //=============================================================================
2427 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCirclePntVecR (GEOM::GEOM_Object_ptr theCenter,
2428                                                         GEOM::GEOM_Object_ptr theVector,
2429                                                         CORBA::Double theR)
2430 {
2431   beginService( " GEOM_Superv_i::MakeCirclePntVecR" );
2432   MESSAGE("GEOM_Superv_i::MakeCirclePntVecR");
2433   getCurvesOp();
2434   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCirclePntVecR(theCenter, theVector, theR);
2435   endService( " GEOM_Superv_i::MakeCirclePntVecR" );
2436   return anObj;
2437 }
2438
2439 //=============================================================================
2440 //  MakeCircleThreePnt:
2441 //=============================================================================
2442 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCircleThreePnt (GEOM::GEOM_Object_ptr thePnt1,
2443                                                          GEOM::GEOM_Object_ptr thePnt2,
2444                                                          GEOM::GEOM_Object_ptr thePnt3)
2445 {
2446   beginService( " GEOM_Superv_i::MakeCircleThreePnt" );
2447   MESSAGE("GEOM_Superv_i::MakeCircleThreePnt");
2448   getCurvesOp();
2449   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCircleThreePnt(thePnt1, thePnt2, thePnt3);
2450   endService( " GEOM_Superv_i::MakeCircleThreePnt" );
2451   return anObj;
2452 }
2453 //=============================================================================
2454 //  MakeCircleCenter2Pnt:
2455 //=============================================================================
2456 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCircleCenter2Pnt (GEOM::GEOM_Object_ptr thePnt1,
2457                                                            GEOM::GEOM_Object_ptr thePnt2,
2458                                                            GEOM::GEOM_Object_ptr thePnt3)
2459 {
2460   beginService( " GEOM_Superv_i::MakeCircleCenter2Pnt" );
2461   MESSAGE("GEOM_Superv_i::MakeCircleCenter2Pnt");
2462   getCurvesOp();
2463   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCircleCenter2Pnt(thePnt1, thePnt2, thePnt3);
2464   endService( " GEOM_Superv_i::MakeCircleCenter2Pnt" );
2465   return anObj;
2466 }
2467
2468 //=============================================================================
2469 //  MakeEllipse:
2470 //=============================================================================
2471 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEllipse (GEOM::GEOM_Object_ptr theCenter,
2472                                                   GEOM::GEOM_Object_ptr theVector,
2473                                                   CORBA::Double theRMajor, 
2474                                                   CORBA::Double theRMinor)
2475 {
2476   beginService( " GEOM_Superv_i::MakeEllipse" );
2477   MESSAGE("GEOM_Superv_i::MakeEllipse");
2478   getCurvesOp();
2479   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeEllipse(theCenter, theVector, theRMajor, theRMinor);
2480   endService( " GEOM_Superv_i::MakeEllipse" );
2481   return anObj;
2482 }
2483
2484 //=============================================================================
2485 //  MakeArc:
2486 //=============================================================================
2487 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArc (GEOM::GEOM_Object_ptr thePnt1,
2488                                               GEOM::GEOM_Object_ptr thePnt2,
2489                                               GEOM::GEOM_Object_ptr thePnt3)
2490 {
2491   beginService( " GEOM_Superv_i::MakeArc" );
2492   MESSAGE("GEOM_Superv_i::MakeArc");
2493   getCurvesOp();
2494   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArc(thePnt1, thePnt2, thePnt3);
2495   endService( " GEOM_Superv_i::MakeArc" );
2496   return anObj;
2497 }
2498
2499 //=============================================================================
2500 //  MakeArcCenter:
2501 //=============================================================================
2502 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArcCenter (GEOM::GEOM_Object_ptr theCenter,
2503                                                     GEOM::GEOM_Object_ptr thePnt1,
2504                                                     GEOM::GEOM_Object_ptr thePnt2,
2505                                                     CORBA::Boolean theSense)
2506 {
2507   beginService( " GEOM_Superv_i::MakeArcCenter" );
2508   MESSAGE("GEOM_Superv_i::MakeArcCenter");
2509   getCurvesOp();
2510   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArcCenter(theCenter, thePnt1, thePnt2,theSense);
2511   endService( " GEOM_Superv_i::MakeArcCenter" );
2512   return anObj;
2513 }
2514
2515 //=============================================================================
2516 //  MakePolyline:
2517 //=============================================================================
2518 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePolyline (GEOM::GEOM_List_ptr thePoints)
2519 {
2520   beginService( " GEOM_Superv_i::MakePolyline" );
2521   MESSAGE("GEOM_Superv_i::MakePolyline");
2522   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2523       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
2524     getCurvesOp();
2525     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakePolyline(aListImplP->GetList());
2526     endService( " GEOM_Superv_i::MakePolyline" );
2527     return anObj;
2528   }
2529   endService( " GEOM_Superv_i::MakePolyline" );
2530   return NULL;
2531 }
2532
2533 //=============================================================================
2534 //  MakeSplineBezier:
2535 //=============================================================================
2536 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineBezier (GEOM::GEOM_List_ptr thePoints)
2537 {
2538   beginService( " GEOM_Superv_i::MakeSplineBezier" );
2539   MESSAGE("GEOM_Superv_i::MakeSplineBezier");
2540   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2541       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
2542     getCurvesOp();
2543     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSplineBezier(aListImplP->GetList());
2544     endService( " GEOM_Superv_i::MakeSplineBezier" );
2545     return anObj;
2546   }
2547   endService( " GEOM_Superv_i::MakeSplineBezier" );
2548   return NULL;
2549 }
2550
2551 //=============================================================================
2552 //  MakeSplineInterpolation:
2553 //=============================================================================
2554 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineInterpolation (GEOM::GEOM_List_ptr thePoints)
2555 {
2556   beginService( " GEOM_Superv_i::MakeSplineInterpolation" );
2557   MESSAGE("GEOM_Superv_i::MakeSplineInterpolation");
2558   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2559       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
2560     getCurvesOp();
2561     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSplineInterpolation(aListImplP->GetList());
2562     endService( " GEOM_Superv_i::MakeSplineInterpolation" );
2563     return anObj;
2564   }
2565   endService( " GEOM_Superv_i::MakeSplineInterpolation" );
2566   return NULL;
2567 }
2568
2569 //=============================================================================
2570 //  MakeSketcher:
2571 //=============================================================================
2572 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSketcher (const char* theCommand, 
2573                                                    GEOM::GEOM_List_ptr theWorkingPlane)
2574 {
2575   beginService( " GEOM_Superv_i::MakeSketcher" );
2576   MESSAGE("GEOM_Superv_i::MakeSketcher");
2577   if (GEOM_List_i<GEOM::ListOfDouble>* aListImplWP = 
2578       dynamic_cast<GEOM_List_i<GEOM::ListOfDouble>*>(GetServant(theWorkingPlane, myPOA).in())) {
2579     getCurvesOp();
2580     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSketcher(theCommand, aListImplWP->GetList());
2581     endService( " GEOM_Superv_i::MakeSketcher" );
2582     return anObj;
2583   }
2584   endService( " GEOM_Superv_i::MakeSketcher" );
2585   return NULL;
2586 }
2587
2588 //=============================== LocalOperations =============================
2589 //=============================================================================
2590 //  MakeFilletAll:
2591 //=============================================================================
2592 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletAll (GEOM::GEOM_Object_ptr theShape,
2593                                                     CORBA::Double theR)
2594 {
2595   beginService( " GEOM_Superv_i::MakeFilletAll" );
2596   MESSAGE("GEOM_Superv_i::MakeFilletAllMakeSketcher");
2597   getLocalOp();
2598   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletAll(theShape, theR);
2599   endService( " GEOM_Superv_i::MakeFilletAll" );
2600   return anObj;
2601 }
2602
2603 //=============================================================================
2604 //  MakeFilletEdges:
2605 //=============================================================================
2606 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletEdges (GEOM::GEOM_Object_ptr theShape, 
2607                                                       CORBA::Double theR,
2608                                                       GEOM::GEOM_List_ptr theEdges)
2609 {
2610   beginService( " GEOM_Superv_i::MakeFilletEdges" );
2611   MESSAGE("GEOM_Superv_i::MakeFilletEdges");
2612   if (GEOM_List_i<GEOM::ListOfLong>* aListImplE = 
2613       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
2614     getLocalOp();
2615     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletEdges(theShape, theR, aListImplE->GetList());
2616     endService( " GEOM_Superv_i::MakeFilletEdges" );
2617     return anObj;
2618   }
2619   endService( " GEOM_Superv_i::MakeFilletEdges" );
2620   return NULL;
2621 }
2622
2623 //=============================================================================
2624 //  MakeFilletEdges R1 R2:
2625 //=============================================================================
2626 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletEdgesR1R2 (GEOM::GEOM_Object_ptr theShape, 
2627                                                           CORBA::Double theR1,
2628                                                           CORBA::Double theR2,
2629                                                           GEOM::GEOM_List_ptr theEdges)
2630 {
2631   beginService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
2632   MESSAGE("GEOM_Superv_i::MakeFilletEdgesR1R2");
2633   if (GEOM_List_i<GEOM::ListOfLong>* aListImplE = 
2634       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
2635     getLocalOp();
2636     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletEdgesR1R2(theShape, theR1,
2637                                                                  theR2, aListImplE->GetList());
2638     endService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
2639     return anObj;
2640   }
2641   endService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
2642   return NULL;
2643 }
2644
2645 //=============================================================================
2646 //  MakeFilletFaces:
2647 //=============================================================================
2648 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletFaces (GEOM::GEOM_Object_ptr theShape, 
2649                                                       CORBA::Double theR,
2650                                                       GEOM::GEOM_List_ptr theFaces)
2651 {
2652   beginService( " GEOM_Superv_i::MakeFilletFaces" );
2653   MESSAGE("GEOM_Superv_i::MakeFilletFaces");
2654   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
2655       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
2656     getLocalOp();
2657     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletFaces(theShape, theR, aListImplF->GetList());
2658     endService( " GEOM_Superv_i::MakeFilletFaces" );
2659     return anObj;
2660   }
2661   endService( " GEOM_Superv_i::MakeFilletFaces" );
2662   return NULL;
2663 }
2664
2665 //=============================================================================
2666 //  MakeFilletFaces R1 R2:
2667 //=============================================================================
2668 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletFacesR1R2 (GEOM::GEOM_Object_ptr theShape, 
2669                                                           CORBA::Double theR1,
2670                                                           CORBA::Double theR2,
2671                                                           GEOM::GEOM_List_ptr theFaces)
2672 {
2673   beginService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
2674   MESSAGE("GEOM_Superv_i::MakeFilletFacesR1R2");
2675   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
2676       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
2677     getLocalOp();
2678     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletFacesR1R2(theShape, theR1, theR2,
2679                                                                  aListImplF->GetList());
2680     endService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
2681     return anObj;
2682   }
2683   endService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
2684   return NULL;
2685 }
2686
2687 //=============================================================================
2688 //  MakeChamferAll:
2689 //=============================================================================
2690 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferAll (GEOM::GEOM_Object_ptr theShape, CORBA::Double theD)
2691 {
2692   beginService( " GEOM_Superv_i::MakeChamferAll" );
2693   MESSAGE("GEOM_Superv_i::MakeChamferAll");
2694   getLocalOp();
2695   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferAll(theShape, theD);
2696   endService( " GEOM_Superv_i::MakeChamferAll" );
2697   return anObj;
2698 }
2699   
2700 //=============================================================================
2701 //  MakeChamferEdge:
2702 //=============================================================================
2703 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdge (GEOM::GEOM_Object_ptr theShape,
2704                                                       CORBA::Double theD1, CORBA::Double theD2,
2705                                                       CORBA::Long theFace1, CORBA::Long theFace2)
2706 {
2707   beginService( " GEOM_Superv_i::MakeChamferEdge" );
2708   MESSAGE("GEOM_Superv_i::MakeChamferEdge");
2709   getLocalOp();
2710   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2);
2711   endService( " GEOM_Superv_i::MakeChamferEdge" );
2712   return anObj;
2713 }
2714
2715 //=============================================================================
2716 //  MakeChamferEdgeAD:
2717 //=============================================================================
2718 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdgeAD (GEOM::GEOM_Object_ptr theShape,
2719                                                         CORBA::Double theD, CORBA::Double theAngle,
2720                                                         CORBA::Long theFace1, CORBA::Long theFace2)
2721 {
2722   beginService( " GEOM_Superv_i::MakeChamferEdgeAD" );
2723   MESSAGE("GEOM_Superv_i::MakeChamferEdgeAD");
2724   getLocalOp();
2725   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdgeAD(theShape, theD, theAngle, theFace1, theFace2);
2726   endService( " GEOM_Superv_i::MakeChamferEdgeAD" );
2727   return anObj;
2728 }
2729
2730 //=============================================================================
2731 //  MakeChamferFaces:
2732 //=============================================================================
2733 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferFaces (GEOM::GEOM_Object_ptr theShape,
2734                                                        CORBA::Double theD1, CORBA::Double theD2,
2735                                                        GEOM::GEOM_List_ptr theFaces)
2736 {
2737   beginService( " GEOM_Superv_i::MakeChamferFaces" );
2738   MESSAGE("GEOM_Superv_i::MakeChamferFaces");
2739   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
2740       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
2741     getLocalOp();
2742     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferFaces(theShape, theD1, theD2, aListImplF->GetList());
2743     endService( " GEOM_Superv_i::MakeChamferFaces" );
2744     return anObj;
2745   }
2746   endService( " GEOM_Superv_i::MakeChamferFaces" );
2747   return NULL;
2748 }
2749
2750 //=============================================================================
2751 //  MakeChamferFacesAD:
2752 //=============================================================================
2753 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferFacesAD (GEOM::GEOM_Object_ptr theShape,
2754                                                          CORBA::Double theD, CORBA::Double theAngle,
2755                                                          GEOM::GEOM_List_ptr theFaces)
2756 {
2757   beginService( " GEOM_Superv_i::MakeChamferFacesAD" );
2758   MESSAGE("GEOM_Superv_i::MakeChamferFacesAD");
2759   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
2760       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
2761     getLocalOp();
2762     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferFacesAD(theShape, theD, theAngle, aListImplF->GetList());
2763     endService( " GEOM_Superv_i::MakeChamferFacesAD" );
2764     return anObj;
2765   }
2766   endService( " GEOM_Superv_i::MakeChamferFacesAD" );
2767   return NULL;
2768 }
2769
2770 //=============================================================================
2771 //  MakeChamferEdges:
2772 //=============================================================================
2773 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdges (GEOM::GEOM_Object_ptr theShape,
2774                                                        CORBA::Double theD1, CORBA::Double theD2,
2775                                                        GEOM::GEOM_List_ptr theEdges)
2776 {
2777   beginService( " GEOM_Superv_i::MakeChamferEdges" );
2778   MESSAGE("GEOM_Superv_i::MakeChamferEdges");
2779   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
2780       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
2781     getLocalOp();
2782     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdges(theShape, theD1, theD2, aListImplF->GetList());
2783     endService( " GEOM_Superv_i::MakeChamferEdges" );
2784     return anObj;
2785   }
2786   endService( " GEOM_Superv_i::MakeChamferEdges" );
2787   return NULL;
2788 }
2789
2790 //=============================================================================
2791 //  MakeChamferEdgesAD:
2792 //=============================================================================
2793 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdgesAD (GEOM::GEOM_Object_ptr theShape,
2794                                                          CORBA::Double theD, CORBA::Double theAngle,
2795                                                          GEOM::GEOM_List_ptr theEdges)
2796 {
2797   beginService( " GEOM_Superv_i::MakeChamferEdgesAD" );
2798   MESSAGE("GEOM_Superv_i::MakeChamferEdgesAD");
2799   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
2800       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
2801     getLocalOp();
2802     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdgesAD(theShape, theD, theAngle, aListImplF->GetList());
2803     endService( " GEOM_Superv_i::MakeChamferEdgesAD" );
2804     return anObj;
2805   }
2806   endService( " GEOM_Superv_i::MakeChamferEdgesAD" );
2807   return NULL;
2808 }
2809
2810 //=============================================================================
2811 //  MakeArchimede:
2812 //=============================================================================
2813 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArchimede (GEOM::GEOM_Object_ptr theShape,
2814                                                     CORBA::Double theWeight,
2815                                                     CORBA::Double theWaterDensity,
2816                                                     CORBA::Double theMeshingDeflection)
2817 {
2818   beginService( " GEOM_Superv_i::MakeArchimede" );
2819   MESSAGE("GEOM_Superv_i::MakeArchimede");
2820   getLocalOp();
2821   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeArchimede(theShape, theWeight, theWaterDensity, theMeshingDeflection);
2822   endService( " GEOM_Superv_i::MakeArchimede" );
2823   return anObj;
2824 }
2825
2826 //=============================================================================
2827 //  GetSubShapeIndexMakeFilletAll:
2828 //=============================================================================
2829 CORBA::Long GEOM_Superv_i::GetSubShapeIndex (GEOM::GEOM_Object_ptr theShape,
2830                                              GEOM::GEOM_Object_ptr theSubShape)
2831 {
2832   beginService( " GEOM_Superv_i::GetSubShapeIndex" );
2833   MESSAGE("GEOM_Superv_i::GetSubShapeIndexMakeArchimede");
2834   getLocalOp();
2835   CORBA::Long aRes = myLocalOp->GetSubShapeIndex(theShape, theSubShape);
2836   endService( " GEOM_Superv_i::GetSubShapeIndex" );
2837   return aRes;
2838 }
2839
2840 //=============================== GroupOperations =============================
2841 //=============================================================================
2842 //  CreateGroup:
2843 //=============================================================================
2844 GEOM::GEOM_Object_ptr GEOM_Superv_i::CreateGroup (GEOM::GEOM_Object_ptr theMainShape, 
2845                                                   CORBA::Long theShapeType)
2846 {
2847   beginService( " GEOM_Superv_i::CreateGroup" );
2848   MESSAGE("GEOM_Superv_i::CreateGroup");
2849   getGroupOp();
2850   GEOM::GEOM_Object_ptr anObj = myGroupOp->CreateGroup(theMainShape, theShapeType);
2851   endService( " GEOM_Superv_i::CreateGroup" );
2852   return anObj;
2853 }
2854
2855 //=============================================================================
2856 //  AddObject:
2857 //=============================================================================
2858 void GEOM_Superv_i::AddObject (GEOM::GEOM_Object_ptr theGroup, 
2859                                CORBA::Long theSubShapeId)
2860 {
2861   beginService( " GEOM_Superv_i::AddObject" );
2862   MESSAGE("GEOM_Superv_i::AddObject");
2863   getGroupOp();
2864   myGroupOp->AddObject(theGroup, theSubShapeId);
2865   endService( " GEOM_Superv_i::AddObject" );
2866 }
2867
2868 //=============================================================================
2869 //  RemoveObject:
2870 //=============================================================================
2871 void GEOM_Superv_i::RemoveObject (GEOM::GEOM_Object_ptr theGroup, 
2872                                   CORBA::Long theSubShapeId)
2873 {
2874   beginService( " GEOM_Superv_i::RemoveObject" );
2875   MESSAGE("GEOM_Superv_i::RemoveObject");
2876   getGroupOp();
2877   myGroupOp->RemoveObject(theGroup, theSubShapeId);
2878   endService( " GEOM_Superv_i::RemoveObject" );
2879 }
2880
2881 //=============================================================================
2882 //  GetType:
2883 //=============================================================================
2884 CORBA::Long GEOM_Superv_i::GetType (GEOM::GEOM_Object_ptr theGroup)
2885 {
2886   beginService( " GEOM_Superv_i::GetType" );
2887   MESSAGE("GEOM_Superv_i::GetType");
2888   getGroupOp();
2889   CORBA::Long aResult = myGroupOp->GetType(theGroup);
2890   endService( " GEOM_Superv_i::GetType" );
2891   return aResult;
2892 }
2893
2894 //=============================================================================
2895 //  GetMainShape:
2896 //=============================================================================
2897 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetMainShape (GEOM::GEOM_Object_ptr theGroup)
2898 {
2899   beginService( " GEOM_Superv_i::GetMainShape" );
2900   MESSAGE("GEOM_Superv_i::GetMainShape");
2901   getGroupOp();
2902   GEOM::GEOM_Object_ptr anObj = myGroupOp->GetMainShape(theGroup);
2903   endService( " GEOM_Superv_i::GetMainShape" );
2904   return anObj;
2905 }
2906
2907 //=============================================================================
2908 //  GetObjects:
2909 //=============================================================================
2910 GEOM::GEOM_List_ptr GEOM_Superv_i::GetObjects (GEOM::GEOM_Object_ptr theGroup)
2911 {
2912   beginService( " GEOM_Superv_i::GetObjects" );
2913   MESSAGE("GEOM_Superv_i::GetObjects");
2914   getGroupOp();
2915
2916   GEOM::ListOfLong* aList = myGroupOp->GetObjects(theGroup);
2917   GEOM_List_i<GEOM::ListOfLong>* aListPtr = new GEOM_List_i<GEOM::ListOfLong>(*(aList));
2918   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
2919   endService( " GEOM_Superv_i::GetObjects" );
2920   return aListPtr->_this();
2921 }
2922
2923 //=====================================================================================
2924 // EXPORTED METHODS
2925 //=====================================================================================
2926 extern "C"
2927 {
2928   PortableServer::ObjectId * GEOM_SupervEngine_factory(CORBA::ORB_ptr orb,
2929                                                       PortableServer::POA_ptr poa, 
2930                                                       PortableServer::ObjectId * contId,
2931                                                       const char *instanceName, 
2932                                                       const char * interfaceName)
2933   {
2934     GEOM_Superv_i * myGEOM_Superv_i = new GEOM_Superv_i(orb, poa, contId, instanceName, interfaceName);
2935     //Don't understand the reason why this component is registered ???
2936 //    myGEOM_Superv_i->register_name("/myGEOM_Superv");
2937     return myGEOM_Superv_i->getId() ;
2938   }
2939 }