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