]> SALOME platform Git repositories - modules/geom.git/blob - src/GEOM_I_Superv/GEOM_Superv_i.cc
Salome HOME
Merging from V3_2_6pre4
[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 {
1045   beginService( " GEOM_Superv_i::MakePartition" );
1046   MESSAGE("GEOM_Superv_i::MakePartition");
1047   GEOM_List_i<GEOM::ListOfGO>* aListImplS = 
1048     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShapes, myPOA).in());
1049   GEOM_List_i<GEOM::ListOfGO>* aListImplT = 
1050     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theTools, myPOA).in());
1051   GEOM_List_i<GEOM::ListOfGO>* aListImplKI = 
1052     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theKeepInside, myPOA).in());
1053   GEOM_List_i<GEOM::ListOfGO>* aListImplRI = 
1054     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theRemoveInside, myPOA).in());
1055   GEOM_List_i<GEOM::ListOfLong>* aListImplM = 
1056     dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theMaterials, myPOA).in());
1057   if (aListImplS && aListImplT && aListImplKI && aListImplRI && aListImplM) {
1058     getBoolOp();
1059     GEOM::GEOM_Object_ptr anObj = myBoolOp->MakePartition(aListImplS->GetList(), aListImplT->GetList(), 
1060                                                           aListImplKI->GetList(), aListImplRI->GetList(),
1061                                                           theLimit, theRemoveWebs, aListImplM->GetList());
1062     endService( " GEOM_Superv_i::MakePartition" );
1063     return anObj;
1064   }
1065   endService( " GEOM_Superv_i::MakePartition" );
1066   return NULL;
1067 }
1068
1069 //=============================================================================
1070 //  MakeHalfPartition:
1071 //=============================================================================
1072 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHalfPartition (GEOM::GEOM_Object_ptr theShape,
1073                                                         GEOM::GEOM_Object_ptr thePlane)
1074 {
1075   beginService( " GEOM_Superv_i::MakeHalfPartition" );
1076   MESSAGE("GEOM_Superv_i::MakeHalfPartition");
1077   getBoolOp();
1078   GEOM::GEOM_Object_ptr anObj = myBoolOp->MakeHalfPartition(theShape, thePlane);
1079   endService( " GEOM_Superv_i::MakeHalfPartition" );
1080   return anObj;
1081 }
1082
1083 //============================== InsertOperations =============================
1084 //=============================================================================
1085 //  MakeCopy:
1086 //=============================================================================
1087 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCopy (GEOM::GEOM_Object_ptr theOriginal)
1088 {
1089   beginService( " GEOM_Superv_i::MakeCopy" );
1090   MESSAGE("GEOM_Superv_i::MakeCopy");
1091   getInsOp();
1092   GEOM::GEOM_Object_ptr anObj = myInsOp->MakeCopy(theOriginal);
1093   endService( " GEOM_Superv_i::MakeCopy" );
1094   return anObj;
1095 }
1096
1097 //=============================================================================
1098 //  Export:
1099 //=============================================================================
1100 void GEOM_Superv_i::Export (GEOM::GEOM_Object_ptr theObject, 
1101                             const char*           theFileName, 
1102                             const char*           theFormatName)
1103 {
1104   beginService( " GEOM_Superv_i::Export" );
1105   MESSAGE("GEOM_Superv_i::Export");
1106   getInsOp();
1107   myInsOp->Export(theObject, theFileName, theFormatName);
1108   endService( " GEOM_Superv_i::Export" );
1109 }
1110
1111 //=============================================================================
1112 //  Import:
1113 //=============================================================================
1114 GEOM::GEOM_Object_ptr GEOM_Superv_i::Import (const char* theFileName, 
1115                                              const char* theFormatName)
1116 {
1117   beginService( " GEOM_Superv_i::Import" );
1118   MESSAGE("GEOM_Superv_i::Import");
1119   getInsOp();
1120   GEOM::GEOM_Object_ptr anObj = myInsOp->Import(theFileName, theFormatName);
1121   endService( " GEOM_Superv_i::Import" );
1122   return anObj;
1123 }
1124
1125 //=============================================================================
1126 //  ImportTranslators:
1127 //=============================================================================
1128 void GEOM_Superv_i::ImportTranslators (GEOM::string_array_out theFormats,
1129                                        GEOM::string_array_out thePatterns)
1130 {
1131   beginService( " GEOM_Superv_i::ImportTranslators" );
1132   MESSAGE("GEOM_Superv_i::ImportTranslators");
1133   getInsOp();
1134   myInsOp->ImportTranslators(theFormats, thePatterns);
1135   endService( " GEOM_Superv_i::ImportTranslators" );
1136 }
1137
1138 //=============================================================================
1139 //  ExportTranslators:
1140 //=============================================================================
1141 void GEOM_Superv_i::ExportTranslators (GEOM::string_array_out theFormats,
1142                                        GEOM::string_array_out thePatterns)
1143 {
1144   beginService( " GEOM_Superv_i::ExportTranslators" );
1145   MESSAGE("GEOM_Superv_i::ExportTranslators");
1146   getInsOp();
1147   myInsOp->ExportTranslators(theFormats, thePatterns);
1148   endService( " GEOM_Superv_i::ExportTranslators" );
1149 }
1150
1151 //============================= TransformOperations ===========================
1152 //=============================================================================
1153 //  TranslateTwoPoints:
1154 //=============================================================================
1155 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateTwoPoints (GEOM::GEOM_Object_ptr theObject,
1156                                                          GEOM::GEOM_Object_ptr thePoint1,
1157                                                          GEOM::GEOM_Object_ptr thePoint2)
1158 {
1159   beginService( " GEOM_Superv_i::TranslateTwoPoints" );
1160   MESSAGE("GEOM_Superv_i::TranslateTwoPoints");
1161   getTransfOp();
1162   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateTwoPoints(theObject, thePoint1, thePoint2);
1163   endService( " GEOM_Superv_i::TranslateTwoPoints" );
1164   return anObj;
1165 }
1166
1167 //=============================================================================
1168 //  TranslateTwoPointsCopy:
1169 //=============================================================================
1170 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateTwoPointsCopy (GEOM::GEOM_Object_ptr theObject,
1171                                                              GEOM::GEOM_Object_ptr thePoint1,
1172                                                              GEOM::GEOM_Object_ptr thePoint2)
1173 {
1174   beginService( " GEOM_Superv_i::TranslateTwoPointsCopy" );
1175   MESSAGE("GEOM_Superv_i::TranslateTwoPointsCopy");
1176   getTransfOp();
1177   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateTwoPointsCopy(theObject, thePoint1, thePoint2);
1178   endService( " GEOM_Superv_i::TranslateTwoPointsCopy" );
1179   return anObj;
1180 }
1181
1182 //=============================================================================
1183 //  TranslateDXDYDZ:
1184 //=============================================================================
1185 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZ (GEOM::GEOM_Object_ptr theObject,
1186                                                       CORBA::Double theDX, 
1187                                                       CORBA::Double theDY, 
1188                                                       CORBA::Double theDZ)
1189 {
1190   beginService( " GEOM_Superv_i::TranslateDXDYDZ" );
1191   MESSAGE("GEOM_Superv_i::TranslateDXDYDZ");
1192   getTransfOp();
1193   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateDXDYDZ(theObject, theDX, theDY, theDZ);
1194   endService( " GEOM_Superv_i::TranslateDXDYDZ" );
1195   return anObj;
1196 }
1197
1198 //=============================================================================
1199 //  TranslateDXDYDZCopy:
1200 //=============================================================================
1201 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZCopy (GEOM::GEOM_Object_ptr theObject,
1202                                                           CORBA::Double theDX, 
1203                                                           CORBA::Double theDY, 
1204                                                           CORBA::Double theDZ)
1205 {
1206   beginService( " GEOM_Superv_i::TranslateDXDYDZCopy" );
1207   MESSAGE("GEOM_Superv_i::TranslateDXDYDZCopy");
1208   getTransfOp();
1209   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ);
1210   endService( " GEOM_Superv_i::TranslateDXDYDZCopy" );
1211   return anObj;
1212 }
1213
1214 //=============================================================================
1215 //  TranslateVector:
1216 //=============================================================================
1217 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVector (GEOM::GEOM_Object_ptr theObject,
1218                                                       GEOM::GEOM_Object_ptr theVector)
1219 {
1220   beginService( " GEOM_Superv_i::TranslateVector" );
1221   MESSAGE("GEOM_Superv_i::TranslateVector");
1222   getTransfOp();
1223   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVector(theObject, theVector);
1224   endService( " GEOM_Superv_i::TranslateVector" );
1225   return anObj;
1226 }
1227
1228 //=============================================================================
1229 //  TranslateVectorCopy:
1230 //=============================================================================
1231 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVectorCopy (GEOM::GEOM_Object_ptr theObject,
1232                                                           GEOM::GEOM_Object_ptr theVector)
1233 {
1234   beginService( " GEOM_Superv_i::TranslateVectorCopy" );
1235   MESSAGE("GEOM_Superv_i::TranslateVectorCopy");
1236   getTransfOp();
1237   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVectorCopy(theObject, theVector);
1238   endService( " GEOM_Superv_i::TranslateVectorCopy" );
1239   return anObj;
1240 }
1241
1242 //=============================================================================
1243 //  MultiTranslate1D:
1244 //=============================================================================
1245 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiTranslate1D (GEOM::GEOM_Object_ptr theObject,
1246                                                        GEOM::GEOM_Object_ptr theVector,
1247                                                        CORBA::Double theStep,
1248                                                        CORBA::Long theNbTimes)
1249 {
1250   beginService( " GEOM_Superv_i::MultiTranslate1D" );
1251   MESSAGE("GEOM_Superv_i::MultiTranslate1D");
1252   getTransfOp();
1253   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiTranslate1D(theObject, theVector, theStep, theNbTimes);
1254   endService( " GEOM_Superv_i::MultiTranslate1D" );
1255   return anObj;
1256 }
1257
1258 //=============================================================================
1259 //  MultiTranslate2D:
1260 //=============================================================================
1261 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiTranslate2D (GEOM::GEOM_Object_ptr theObject,
1262                                                        GEOM::GEOM_Object_ptr theVector1,
1263                                                        CORBA::Double theStep1,
1264                                                        CORBA::Long theNbTimes1,
1265                                                        GEOM::GEOM_Object_ptr theVector2,
1266                                                        CORBA::Double theStep2,
1267                                                        CORBA::Long theNbTimes2)
1268 {
1269   beginService( " GEOM_Superv_i::MultiTranslate2D" );
1270   MESSAGE("GEOM_Superv_i::MultiTranslate2D");
1271   getTransfOp();
1272   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiTranslate2D(theObject, theVector1, theStep1, theNbTimes1,
1273                                                              theVector2, theStep2, theNbTimes2);
1274   endService( " GEOM_Superv_i::MultiTranslate2D" );
1275   return anObj;
1276 }
1277
1278 //=============================================================================
1279 //  Rotate:
1280 //=============================================================================
1281 GEOM::GEOM_Object_ptr GEOM_Superv_i::Rotate (GEOM::GEOM_Object_ptr theObject,
1282                                              GEOM::GEOM_Object_ptr theAxis,
1283                                              CORBA::Double theAngle)
1284 {
1285   beginService( " GEOM_Superv_i::Rotate" );
1286   MESSAGE("GEOM_Superv_i::Rotate");
1287   getTransfOp();
1288   GEOM::GEOM_Object_ptr anObj = myTransfOp->Rotate(theObject, theAxis, theAngle);
1289   endService( " GEOM_Superv_i::Rotate" );
1290   return anObj;
1291 }
1292
1293 //=============================================================================
1294 //  RotateCopy:
1295 //=============================================================================
1296 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateCopy (GEOM::GEOM_Object_ptr theObject,
1297                                                  GEOM::GEOM_Object_ptr theAxis,
1298                                                  CORBA::Double theAngle)
1299 {
1300   beginService( " GEOM_Superv_i::RotateCopy" );
1301   MESSAGE("GEOM_Superv_i::RotateCopy");
1302   getTransfOp();
1303   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateCopy(theObject, theAxis, theAngle);
1304   endService( " GEOM_Superv_i::RotateCopy" );
1305   return anObj;
1306 }
1307 //=============================================================================
1308 //  RotateThreePoints:
1309 //=============================================================================
1310 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateThreePoints (GEOM::GEOM_Object_ptr theObject,
1311                                                         GEOM::GEOM_Object_ptr theCentPoint,
1312                                                         GEOM::GEOM_Object_ptr thePoint1,
1313                                                         GEOM::GEOM_Object_ptr thePoint2)
1314 {
1315   beginService( " GEOM_Superv_i::RotateThreePoints" );
1316   MESSAGE("GEOM_Superv_i::RotateThreePoints");
1317   getTransfOp();
1318   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateThreePoints(theObject, theCentPoint, thePoint1, thePoint2);
1319   endService( " GEOM_Superv_i::RotateThreePoints" );
1320   return anObj;
1321 }
1322
1323 //=============================================================================
1324 //  RotateThreePointsCopy:
1325 //=============================================================================
1326 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateThreePointsCopy (GEOM::GEOM_Object_ptr theObject,
1327                                                             GEOM::GEOM_Object_ptr theCentPoint,
1328                                                             GEOM::GEOM_Object_ptr thePoint1,
1329                                                             GEOM::GEOM_Object_ptr thePoint2)
1330 {
1331   beginService( " GEOM_Superv_i::RotateThreePointsCopy" );
1332   MESSAGE("GEOM_Superv_i::RotateThreePointsCopy");
1333   getTransfOp();
1334   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2);
1335   endService( " GEOM_Superv_i::RotateThreePointsCopy" );
1336   return anObj;
1337 }
1338
1339 //=============================================================================
1340 //  MultiRotate1D:
1341 //=============================================================================
1342 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate1D (GEOM::GEOM_Object_ptr theObject,
1343                                                     GEOM::GEOM_Object_ptr theAxis,
1344                                                     CORBA::Long theNbTimes)
1345 {
1346   beginService( " GEOM_Superv_i::MultiRotate1D" );
1347   MESSAGE("GEOM_Superv_i::MultiRotate1D");
1348   getTransfOp();
1349   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiRotate1D(theObject, theAxis, theNbTimes);
1350   endService( " GEOM_Superv_i::MultiRotate1D" );
1351   return anObj;
1352 }
1353
1354 //=============================================================================
1355 //  MultiRotate2D:
1356 //=============================================================================
1357 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate2D (GEOM::GEOM_Object_ptr theObject,
1358                                                     GEOM::GEOM_Object_ptr theAxis,
1359                                                     CORBA::Double theAngle,
1360                                                     CORBA::Long theNbTimes1,
1361                                                     CORBA::Double theStep,
1362                                                     CORBA::Long theNbTimes2)
1363 {
1364   beginService( " GEOM_Superv_i::MultiRotate2D" );
1365   MESSAGE("GEOM_Superv_i::MultiRotate2D");
1366   getTransfOp();
1367   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2);
1368   endService( " GEOM_Superv_i::MultiRotate2D" );
1369   return anObj;
1370 }
1371
1372 //=============================================================================
1373 //  MirrorPlane:
1374 //=============================================================================
1375 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlane (GEOM::GEOM_Object_ptr theObject, 
1376                                                   GEOM::GEOM_Object_ptr thePlane)
1377 {
1378   beginService( " GEOM_Superv_i::MirrorPlane" );
1379   MESSAGE("GEOM_Superv_i::MirrorPlane");
1380   getTransfOp();
1381   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPlane(theObject, thePlane);
1382   endService( " GEOM_Superv_i::MirrorPlane" );
1383   return anObj;
1384 }
1385
1386 //=============================================================================
1387 //  MirrorPlaneCopy:
1388 //=============================================================================
1389 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlaneCopy (GEOM::GEOM_Object_ptr theObject, 
1390                                                       GEOM::GEOM_Object_ptr thePlane)
1391 {
1392   beginService( " GEOM_Superv_i::MirrorPlaneCopy" );
1393   MESSAGE("GEOM_Superv_i::MirrorPlaneCopy");
1394   getTransfOp();
1395   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPlaneCopy(theObject, thePlane);
1396   endService( " GEOM_Superv_i::MirrorPlaneCopy" );
1397   return anObj;
1398 }
1399
1400 //=============================================================================
1401 //  MirrorAxis:
1402 //=============================================================================
1403 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxis (GEOM::GEOM_Object_ptr theObject, 
1404                                                  GEOM::GEOM_Object_ptr theAxis)
1405 {
1406   beginService( " GEOM_Superv_i::MirrorAxis" );
1407   MESSAGE("GEOM_Superv_i::MirrorAxis");
1408   getTransfOp();
1409   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorAxis(theObject, theAxis);
1410   endService( " GEOM_Superv_i::MirrorAxis" );
1411   return anObj;
1412 }
1413
1414 //=============================================================================
1415 //  MirrorAxisCopy:
1416 //=============================================================================
1417 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxisCopy (GEOM::GEOM_Object_ptr theObject, 
1418                                                      GEOM::GEOM_Object_ptr theAxis)
1419 {
1420   beginService( " GEOM_Superv_i::MirrorAxisCopy" );
1421   MESSAGE("GEOM_Superv_i::MirrorAxisCopy");
1422   getTransfOp();
1423   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorAxisCopy(theObject, theAxis);
1424   endService( " GEOM_Superv_i::MirrorAxisCopy" );
1425   return anObj;
1426 }
1427
1428 //=============================================================================
1429 //  MirrorPoint:
1430 //=============================================================================
1431 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPoint (GEOM::GEOM_Object_ptr theObject, 
1432                                                   GEOM::GEOM_Object_ptr thePoint)
1433 {
1434   beginService( " GEOM_Superv_i::MirrorPoint" );
1435   MESSAGE("GEOM_Superv_i::MirrorPoint");
1436   getTransfOp();
1437   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPoint(theObject, thePoint);
1438   endService( " GEOM_Superv_i::MirrorPoint" );
1439   return anObj;
1440 }
1441
1442 //=============================================================================
1443 //  MirrorPointCopy:
1444 //=============================================================================
1445 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPointCopy (GEOM::GEOM_Object_ptr theObject, 
1446                                                       GEOM::GEOM_Object_ptr thePoint)
1447 {
1448   beginService( " GEOM_Superv_i::MirrorPoint" );
1449   MESSAGE("GEOM_Superv_i::MirrorPointCopy");
1450   getTransfOp();
1451   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPointCopy(theObject, thePoint);
1452   endService( " GEOM_Superv_i::MirrorPoint" );
1453   return anObj;
1454 }
1455
1456 //=============================================================================
1457 //  OffsetShape:
1458 //=============================================================================
1459 GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShape (GEOM::GEOM_Object_ptr theObject, 
1460                                                   CORBA::Double theOffset)
1461 {
1462   beginService( " GEOM_Superv_i::OffsetShape" );
1463   MESSAGE("GEOM_Superv_i::OffsetShape");
1464   getTransfOp();
1465   GEOM::GEOM_Object_ptr anObj = myTransfOp->OffsetShape(theObject, theOffset);
1466   endService( " GEOM_Superv_i::OffsetShape" );
1467   return anObj;
1468 }
1469
1470 //=============================================================================
1471 //  OffsetShapeCopy:
1472 //=============================================================================
1473 GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShapeCopy (GEOM::GEOM_Object_ptr theObject, 
1474                                                       CORBA::Double theOffset)
1475 {
1476   beginService( " GEOM_Superv_i::OffsetShapeCopy" );
1477   MESSAGE("GEOM_Superv_i::OffsetShapeCopy");
1478   getTransfOp();
1479   GEOM::GEOM_Object_ptr anObj = myTransfOp->OffsetShapeCopy(theObject, theOffset);
1480   endService( " GEOM_Superv_i::OffsetShapeCopy" );
1481   return anObj;
1482 }
1483
1484 //=============================================================================
1485 //  ScaleShape:
1486 //=============================================================================
1487 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShape (GEOM::GEOM_Object_ptr theObject, 
1488                                                  GEOM::GEOM_Object_ptr thePoint,
1489                                                  CORBA::Double theFactor)
1490 {
1491   beginService( " GEOM_Superv_i::ScaleShape" );
1492   MESSAGE("GEOM_Superv_i::ScaleShape");
1493   getTransfOp();
1494   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShape(theObject, thePoint, theFactor);
1495   endService( " GEOM_Superv_i::ScaleShape" );
1496   return anObj;
1497 }
1498
1499 //=============================================================================
1500 //  ScaleShapeCopy:
1501 //=============================================================================
1502 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeCopy (GEOM::GEOM_Object_ptr theObject, 
1503                                                      GEOM::GEOM_Object_ptr thePoint,
1504                                                      CORBA::Double theFactor)
1505 {
1506   beginService( " GEOM_Superv_i::ScaleShapeCopy" );
1507   MESSAGE("GEOM_Superv_i::ScaleShapeCopy");
1508   getTransfOp();
1509   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeCopy(theObject, thePoint, theFactor);
1510   endService( " GEOM_Superv_i::ScaleShapeCopy" );
1511   return anObj;
1512 }
1513
1514 //=============================================================================
1515 //  PositionShape:
1516 //=============================================================================
1517 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShape (GEOM::GEOM_Object_ptr theObject,
1518                                                     GEOM::GEOM_Object_ptr theStartLCS,
1519                                                     GEOM::GEOM_Object_ptr theEndLCS)
1520 {
1521   beginService( " GEOM_Superv_i::PositionShape" );
1522   MESSAGE("GEOM_Superv_i::PositionShape");
1523   getTransfOp();
1524   GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionShape(theObject, theStartLCS, theEndLCS);
1525   endService( " GEOM_Superv_i::PositionShape" );
1526   return anObj;
1527 }
1528
1529 //=============================================================================
1530 //  PositionShapeCopy:
1531 //=============================================================================
1532 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShapeCopy (GEOM::GEOM_Object_ptr theObject,
1533                                                         GEOM::GEOM_Object_ptr theStartLCS,
1534                                                         GEOM::GEOM_Object_ptr theEndLCS)
1535 {
1536   beginService( " GEOM_Superv_i::PositionShapeCopy" );
1537   MESSAGE("GEOM_Superv_i::PositionShapeCopy");
1538   getTransfOp();
1539   GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionShapeCopy(theObject, theStartLCS, theEndLCS);
1540   endService( " GEOM_Superv_i::PositionShapeCopy" );
1541   return anObj;
1542 }
1543
1544 //=============================== ShapesOperations ============================
1545 //=============================================================================
1546 //  Make:
1547 //=============================================================================
1548 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEdge (GEOM::GEOM_Object_ptr thePnt1,
1549                                                GEOM::GEOM_Object_ptr thePnt2)
1550 {
1551   beginService( " GEOM_Superv_i::MakeEdge" );
1552   MESSAGE("GEOM_Superv_i::MakeEdge");
1553   getShapesOp();
1554   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeEdge(thePnt1, thePnt2);
1555   endService( " GEOM_Superv_i::MakeEdge" );
1556   return anObj;
1557 }
1558
1559 //=============================================================================
1560 //  MakeWire:
1561 //=============================================================================
1562 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeWire (GEOM::GEOM_List_ptr theEdgesAndWires)
1563 {
1564   beginService( " GEOM_Superv_i::MakeWire" );
1565   MESSAGE("GEOM_Superv_i::MakeWire");
1566   if (GEOM_List_i<GEOM::ListOfGO>* aListImplEW = 
1567       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theEdgesAndWires, myPOA).in())) {
1568     getShapesOp();
1569     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeWire(aListImplEW->GetList());
1570     endService( " GEOM_Superv_i::MakeWire" );
1571     return anObj;
1572   }
1573   endService( " GEOM_Superv_i::MakeWire" );
1574   return NULL;
1575 }
1576
1577 //=============================================================================
1578 //  MakeFace:
1579 //=============================================================================
1580 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFace (GEOM::GEOM_Object_ptr theWire,
1581                                                CORBA::Boolean isPlanarWanted)
1582 {
1583   beginService( " GEOM_Superv_i::MakeFace" );
1584   MESSAGE("GEOM_Superv_i::MakeFace");
1585   getShapesOp();
1586   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeFace(theWire, isPlanarWanted);
1587   endService( " GEOM_Superv_i::MakeFace" );
1588   return anObj;
1589 }
1590
1591 //=============================================================================
1592 //  MakeFaceWires:
1593 //=============================================================================
1594 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceWires (GEOM::GEOM_List_ptr theWires,
1595                                                     CORBA::Boolean isPlanarWanted)
1596 {
1597   beginService( " GEOM_Superv_i::MakeFaceWires" );
1598   MESSAGE("GEOM_Superv_i::MakeFaceWires");
1599   if (GEOM_List_i<GEOM::ListOfGO>* aListImplW = 
1600       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theWires, myPOA).in())) {
1601     getShapesOp();
1602     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeFaceWires(aListImplW->GetList(), isPlanarWanted);
1603     endService( " GEOM_Superv_i::MakeFaceWires" );
1604     return anObj;
1605   }
1606   endService( " GEOM_Superv_i::MakeFaceWires" );
1607   return NULL;
1608 }
1609
1610 //=============================================================================
1611 //  MakeShell:
1612 //=============================================================================
1613 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeShell (GEOM::GEOM_List_ptr theFacesAndShells)
1614 {
1615   beginService( " GEOM_Superv_i::MakeShell" );
1616   MESSAGE("GEOM_Superv_i::MakeShell");
1617   if (GEOM_List_i<GEOM::ListOfGO>* aListImplFS = 
1618       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theFacesAndShells, myPOA).in())) {
1619     getShapesOp();
1620     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeShell(aListImplFS->GetList());
1621     endService( " GEOM_Superv_i::MakeShell" );
1622     return anObj;
1623   }
1624   endService( " GEOM_Superv_i::MakeShell" );
1625   return NULL;
1626 }
1627
1628 //=============================================================================
1629 //  MakeSolidShell:
1630 //=============================================================================
1631 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShell (GEOM::GEOM_Object_ptr theShell)
1632 {
1633   beginService( " GEOM_Superv_i::MakeSolidShell" );
1634   MESSAGE("GEOM_Superv_i::MakeSolidShell");
1635   getShapesOp();
1636   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeSolidShell(theShell);
1637   endService( " GEOM_Superv_i::MakeSolidShell" );
1638   return anObj;
1639 }
1640
1641 //=============================================================================
1642 //  MakeSolidShells:
1643 //=============================================================================
1644 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShells (GEOM::GEOM_List_ptr theShells)
1645 {
1646   beginService( " GEOM_Superv_i::MakeSolidShells" );
1647   MESSAGE("GEOM_Superv_i::MakeSolidShells");
1648   if (GEOM_List_i<GEOM::ListOfGO>* aListImplS = 
1649       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShells, myPOA).in())) {
1650     getShapesOp();
1651     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeSolidShells(aListImplS->GetList());
1652     endService( " GEOM_Superv_i::MakeSolidShells" );
1653     return anObj;
1654   }
1655   endService( " GEOM_Superv_i::MakeSolidShells" );
1656   return NULL;
1657 }
1658
1659 //=============================================================================
1660 //  MakeCompound:
1661 //=============================================================================
1662 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCompound (GEOM::GEOM_List_ptr theShapes)
1663 {
1664   beginService( " GEOM_Superv_i::MakeCompound" );
1665   MESSAGE("GEOM_Superv_i::MakeCompound");
1666   if (GEOM_List_i<GEOM::ListOfGO>* aListImpl = 
1667       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShapes, myPOA).in())) {
1668     getShapesOp();
1669     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeCompound(aListImpl->GetList());
1670     endService( " GEOM_Superv_i::MakeCompound" );
1671     return anObj;
1672   }
1673   endService( " GEOM_Superv_i::MakeCompound" );
1674   return NULL;
1675 }
1676
1677 //=============================================================================
1678 //  MakeGlueFaces:
1679 //=============================================================================
1680 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFaces (GEOM::GEOM_Object_ptr theShape,
1681                                                     CORBA::Double   theTolerance)
1682 {
1683   beginService( " GEOM_Superv_i::MakeGlueFaces" );
1684   MESSAGE("GEOM_Superv_i::MakeGlueFaces");
1685   getShapesOp();
1686   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeGlueFaces(theShape, theTolerance);
1687   endService( " GEOM_Superv_i::MakeGlueFaces" );
1688   return anObj;
1689 }
1690
1691 //=============================================================================
1692 //  GetGlueFaces:
1693 //=============================================================================
1694 GEOM::GEOM_List_ptr GEOM_Superv_i::GetGlueFaces (GEOM::GEOM_Object_ptr theShape,
1695                                                  CORBA::Double theTolerance)
1696 {
1697   beginService( " GEOM_Superv_i::GetGlueFaces" );
1698   MESSAGE("GEOM_Superv_i::GetGlueFaces");
1699   getShapesOp();
1700   GEOM::ListOfGO* aList = myShapesOp->GetGlueFaces(theShape, theTolerance);
1701   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
1702   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
1703   endService( " GEOM_Superv_i::GetGlueFaces" );
1704   return aListPtr->_this();
1705 }
1706
1707 //=============================================================================
1708 //  MakeGlueFacesByList:
1709 //=============================================================================
1710 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFacesByList (GEOM::GEOM_Object_ptr theShape,
1711                                                           CORBA::Double theTolerance,
1712                                                           const GEOM::ListOfGO& theFaces)
1713 {
1714   beginService( " GEOM_Superv_i::MakeGlueFacesByList" );
1715   MESSAGE("GEOM_Superv_i::MakeGlueFacesByList");
1716   getShapesOp();
1717   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeGlueFacesByList(theShape, theTolerance, theFaces);
1718   endService( " GEOM_Superv_i::MakeGlueFacesByList" );
1719   return anObj;
1720 }
1721
1722 //=============================================================================
1723 //  MakeExplode:
1724 //=============================================================================
1725 GEOM::GEOM_List_ptr GEOM_Superv_i::MakeExplode (GEOM::GEOM_Object_ptr theShape,
1726                                                     CORBA::Long theShapeType,
1727                                                     CORBA::Boolean isSorted)
1728 {
1729   beginService( " GEOM_Superv_i::MakeExplode" );
1730   MESSAGE("GEOM_Superv_i::MakeExplode");
1731   getShapesOp();
1732
1733   GEOM::ListOfGO* aList = myShapesOp->MakeExplode(theShape, theShapeType, isSorted);
1734   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
1735   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
1736   endService( " GEOM_Superv_i::MakeExplode" );
1737   return aListPtr->_this();
1738 }
1739
1740 //=============================================================================
1741 //  NumberOfFaces:
1742 //=============================================================================
1743 CORBA::Long GEOM_Superv_i::NumberOfFaces (GEOM::GEOM_Object_ptr theShape)
1744 {
1745   beginService( " GEOM_Superv_i::NumberOfFaces" );
1746   MESSAGE("GEOM_Superv_i::NumberOfFaces");
1747   getShapesOp();
1748   CORBA::Long aRes = myShapesOp->NumberOfFaces(theShape);
1749   endService( " GEOM_Superv_i::NumberOfFaces" );
1750   return aRes;
1751 }
1752
1753 //=============================================================================
1754 //  NumberOfEdges:
1755 //=============================================================================
1756 CORBA::Long GEOM_Superv_i::NumberOfEdges (GEOM::GEOM_Object_ptr theShape)
1757 {
1758   beginService( " GEOM_Superv_i::NumberOfEdges" );
1759   MESSAGE("GEOM_Superv_i::NumberOfEdges");
1760   getShapesOp();
1761   CORBA::Long aRes = myShapesOp->NumberOfEdges(theShape);
1762   endService( " GEOM_Superv_i::NumberOfEdges" );
1763   return aRes;
1764 }
1765
1766 //=============================================================================
1767 //  ChangeOrientation:
1768 //=============================================================================
1769 GEOM::GEOM_Object_ptr GEOM_Superv_i::ChangeOrientation (GEOM::GEOM_Object_ptr theShape)
1770 {
1771   beginService( " GEOM_Superv_i::ChangeOrientation" );
1772   MESSAGE("GEOM_Superv_i::ChangeOrientation");
1773   getShapesOp();
1774   GEOM::GEOM_Object_ptr anObj = myShapesOp->ChangeOrientation(theShape);
1775   endService( " GEOM_Superv_i::ChangeOrientation" );
1776   return anObj;
1777 }
1778
1779
1780 //=============================== BlocksOperations ============================
1781 //=============================================================================
1782 //  MakeQuad4Vertices:
1783 //=============================================================================
1784 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad4Vertices (GEOM::GEOM_Object_ptr thePnt1,
1785                                                         GEOM::GEOM_Object_ptr thePnt2,
1786                                                         GEOM::GEOM_Object_ptr thePnt3,
1787                                                         GEOM::GEOM_Object_ptr thePnt4)
1788 {
1789   beginService( " GEOM_Superv_i::MakeQuad4Vertices" );
1790   MESSAGE("GEOM_Superv_i::MakeQuad4Vertices");
1791   getBlocksOp();
1792   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad4Vertices(thePnt1, thePnt2, thePnt3, thePnt4);
1793   endService( " GEOM_Superv_i::MakeQuad4Vertices" );
1794   return anObj;
1795 }
1796
1797 //=============================================================================
1798 //  MakeQuad:
1799 //=============================================================================
1800 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad (GEOM::GEOM_Object_ptr theEdge1,
1801                                                GEOM::GEOM_Object_ptr theEdge2,
1802                                                GEOM::GEOM_Object_ptr theEdge3,
1803                                                GEOM::GEOM_Object_ptr theEdge4)
1804 {
1805   beginService( " GEOM_Superv_i::MakeQuad" );
1806   MESSAGE("GEOM_Superv_i::MakeQuad");
1807   getBlocksOp();
1808   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad(theEdge1, theEdge2, theEdge3, theEdge4);
1809   endService( " GEOM_Superv_i::MakeQuad" );
1810   return anObj;
1811 }
1812
1813 //=============================================================================
1814 //  MakeQuad2Edges:
1815 //=============================================================================
1816 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad2Edges (GEOM::GEOM_Object_ptr theEdge1,
1817                                                      GEOM::GEOM_Object_ptr theEdge2)
1818 {
1819   beginService( " GEOM_Superv_i::MakeQuad2Edges" );
1820   MESSAGE("GEOM_Superv_i::MakeQuad2Edges");
1821   getBlocksOp();
1822   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad2Edges(theEdge1, theEdge2);
1823   endService( " GEOM_Superv_i::MakeQuad2Edges" );
1824   return anObj;
1825 }
1826
1827 //=============================================================================
1828 //  MakeHexa:
1829 //=============================================================================
1830 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa (GEOM::GEOM_Object_ptr theFace1,
1831                                                GEOM::GEOM_Object_ptr theFace2,
1832                                                GEOM::GEOM_Object_ptr theFace3,
1833                                                GEOM::GEOM_Object_ptr theFace4,
1834                                                GEOM::GEOM_Object_ptr theFace5,
1835                                                GEOM::GEOM_Object_ptr theFace6)
1836 {
1837   beginService( " GEOM_Superv_i::MakeHexa" );
1838   MESSAGE("GEOM_Superv_i::MakeHexa");
1839   getBlocksOp();
1840   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeHexa(theFace1, theFace2, theFace3, theFace4, theFace5, theFace6);
1841   endService( " GEOM_Superv_i::MakeHexa" );
1842   return anObj;
1843 }
1844
1845 //=============================================================================
1846 //  MakeHexa2Faces:
1847 //=============================================================================
1848 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa2Faces (GEOM::GEOM_Object_ptr theFace1,
1849                                                      GEOM::GEOM_Object_ptr theFace2)
1850 {
1851   beginService( " GEOM_Superv_i::MakeHexa2Faces" );
1852   MESSAGE("GEOM_Superv_i::MakeHexa2Faces");
1853   getBlocksOp();
1854   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeHexa2Faces(theFace1, theFace2);
1855   endService( " GEOM_Superv_i::MakeHexa2Faces" );
1856   return anObj;
1857 }
1858
1859 //=============================================================================
1860 //  GetPoint:
1861 //=============================================================================
1862 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetPoint (GEOM::GEOM_Object_ptr theShape,
1863                                                CORBA::Double   theX,
1864                                                CORBA::Double   theY,
1865                                                CORBA::Double   theZ,
1866                                                CORBA::Double   theEpsilon)
1867 {
1868   beginService( " GEOM_Superv_i::GetPoint" );
1869   MESSAGE("GEOM_Superv_i::GetPoint");
1870   getBlocksOp();
1871   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetPoint(theShape, theX, theY, theZ, theEpsilon);
1872   endService( " GEOM_Superv_i::GetPoint" );
1873   return anObj;
1874 }
1875
1876 //=============================================================================
1877 //  GetEdge:
1878 //=============================================================================
1879 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdge (GEOM::GEOM_Object_ptr theShape,
1880                                               GEOM::GEOM_Object_ptr thePoint1,
1881                                               GEOM::GEOM_Object_ptr thePoint2)
1882 {
1883   beginService( " GEOM_Superv_i::GetEdge" );
1884   MESSAGE("GEOM_Superv_i::GetEdge");
1885   getBlocksOp();
1886   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetEdge(theShape, thePoint1, thePoint2);
1887   endService( " GEOM_Superv_i::GetEdge" );
1888   return anObj;
1889 }
1890
1891 //=============================================================================
1892 //  GetEdgeNearPoint:
1893 //=============================================================================
1894 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdgeNearPoint (GEOM::GEOM_Object_ptr theShape,
1895                                                        GEOM::GEOM_Object_ptr thePoint)
1896 {
1897   beginService( " GEOM_Superv_i::GetEdgeNearPoint" );
1898   MESSAGE("GEOM_Superv_i::GetEdgeNearPoint");
1899   getBlocksOp();
1900   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetEdgeNearPoint(theShape, thePoint);
1901   endService( " GEOM_Superv_i::GetEdgeNearPoint" );
1902   return anObj;
1903 }
1904
1905 //=============================================================================
1906 //  GetFaceByPoints:
1907 //=============================================================================
1908 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByPoints (GEOM::GEOM_Object_ptr theShape,
1909                                                       GEOM::GEOM_Object_ptr thePoint1,
1910                                                       GEOM::GEOM_Object_ptr thePoint2,
1911                                                       GEOM::GEOM_Object_ptr thePoint3,
1912                                                       GEOM::GEOM_Object_ptr thePoint4)
1913 {
1914   beginService( " GEOM_Superv_i::GetFaceByPoints" );
1915   MESSAGE("GEOM_Superv_i::GetFaceByPoints");
1916   getBlocksOp();
1917   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4);
1918   endService( " GEOM_Superv_i::GetFaceByPoints" );
1919   return anObj;
1920 }
1921
1922 //=============================================================================
1923 //  GetFaceByEdges:
1924 //=============================================================================
1925 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByEdges (GEOM::GEOM_Object_ptr theShape,
1926                                                      GEOM::GEOM_Object_ptr theEdge1,
1927                                                      GEOM::GEOM_Object_ptr theEdge2)
1928 {
1929   beginService( " GEOM_Superv_i::GetFaceByEdges" );
1930   MESSAGE("GEOM_Superv_i::GetFaceByEdges");
1931   getBlocksOp();
1932   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByEdges(theShape, theEdge1, theEdge2);
1933   endService( " GEOM_Superv_i::GetFaceByEdges" );
1934   return anObj;
1935 }
1936
1937 //=============================================================================
1938 //  GetOppositeFace:
1939 //=============================================================================
1940 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetOppositeFace (GEOM::GEOM_Object_ptr theBlock,
1941                                                       GEOM::GEOM_Object_ptr theFace)
1942 {
1943   beginService( " GEOM_Superv_i::GetOppositeFace" );
1944   MESSAGE("GEOM_Superv_i::GetOppositeFace");
1945   getBlocksOp();
1946   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetOppositeFace(theBlock, theFace);
1947   endService( " GEOM_Superv_i::GetOppositeFace" );
1948   return anObj;
1949 }
1950
1951 //=============================================================================
1952 //  GetFaceNearPoint:
1953 //=============================================================================
1954 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceNearPoint (GEOM::GEOM_Object_ptr theShape,
1955                                                        GEOM::GEOM_Object_ptr thePoint)
1956 {
1957   beginService( " GEOM_Superv_i::GetFaceNearPoint" );
1958   MESSAGE("GEOM_Superv_i::GetFaceNearPoint");
1959   getBlocksOp();
1960   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceNearPoint(theShape, thePoint);
1961   endService( " GEOM_Superv_i::GetFaceNearPoint" );
1962   return anObj;
1963 }
1964
1965 //=============================================================================
1966 //  GetFaceByNormale:
1967 //=============================================================================
1968 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByNormale (GEOM::GEOM_Object_ptr theBlock,
1969                                                        GEOM::GEOM_Object_ptr theVector)
1970 {
1971   beginService( " GEOM_Superv_i::GetFaceByNormale" );
1972   MESSAGE("GEOM_Superv_i::GetFaceByNormale");
1973   getBlocksOp();
1974   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByNormale(theBlock, theVector);
1975   endService( " GEOM_Superv_i::GetFaceByNormale" );
1976   return anObj;
1977 }
1978
1979 //=============================================================================
1980 //  IsCompoundOfBlocks:
1981 //=============================================================================
1982 CORBA::Boolean GEOM_Superv_i::IsCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
1983                                                   CORBA::Long     theMinNbFaces,
1984                                                   CORBA::Long     theMaxNbFaces,
1985                                                   CORBA::Long&          theNbBlocks)
1986 {
1987   beginService( " GEOM_Superv_i::IsCompoundOfBlocks" );
1988   MESSAGE("GEOM_Superv_i::IsCompoundOfBlocks");
1989   getBlocksOp();
1990   CORBA::Boolean aRes = myBlocksOp->IsCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces, theNbBlocks);
1991   endService( " GEOM_Superv_i::IsCompoundOfBlocks" );
1992   return aRes;
1993 }
1994
1995 //=============================================================================
1996 //  CheckCompoundOfBlocks:
1997 //=============================================================================
1998 CORBA::Boolean GEOM_Superv_i::CheckCompoundOfBlocks 
1999 (GEOM::GEOM_Object_ptr theCompound,
2000  GEOM::GEOM_IBlocksOperations::BCErrors_out theErrors)
2001 {
2002   beginService( " GEOM_Superv_i::CheckCompoundOfBlocks" );
2003   MESSAGE("GEOM_Superv_i::CheckCompoundOfBlocks");
2004   getBlocksOp();
2005   CORBA::Boolean aRes = myBlocksOp->CheckCompoundOfBlocks(theCompound, theErrors);
2006   endService( " GEOM_Superv_i::CheckCompoundOfBlocks" );
2007   return aRes;
2008 }
2009
2010 //=============================================================================
2011 //  PrintBCErrors:
2012 //=============================================================================
2013 char* GEOM_Superv_i::PrintBCErrors (GEOM::GEOM_Object_ptr theCompound,
2014                                     const GEOM::GEOM_IBlocksOperations::BCErrors& theErrors)
2015 {
2016   beginService( " GEOM_Superv_i::PrintBCErrors" );
2017   MESSAGE("GEOM_Superv_i::PrintBCErrors");
2018   getBlocksOp();
2019   char* anErrors = myBlocksOp->PrintBCErrors(theCompound, theErrors);
2020   endService( " GEOM_Superv_i::PrintBCErrors" );
2021   return anErrors;
2022 }
2023
2024 //=============================================================================
2025 //  ExplodeCompoundOfBlocks:
2026 //=============================================================================
2027 GEOM::GEOM_List_ptr GEOM_Superv_i::ExplodeCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
2028                                                                 CORBA::Long     theMinNbFaces,
2029                                                                 CORBA::Long     theMaxNbFaces)
2030 {
2031   beginService( " GEOM_Superv_i::ExplodeCompoundOfBlocks" );
2032   MESSAGE("GEOM_Superv_i::ExplodeCompoundOfBlocks");
2033   getBlocksOp();
2034   GEOM::ListOfGO* aBlocks = myBlocksOp->ExplodeCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces);
2035   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aBlocks));
2036   endService( " GEOM_Superv_i::ExplodeCompoundOfBlocks" );
2037   return aListPtr->_this();
2038 }
2039
2040 //=============================================================================
2041 //  GetBlockNearPoint:
2042 //=============================================================================
2043 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockNearPoint (GEOM::GEOM_Object_ptr theCompound,
2044                                                         GEOM::GEOM_Object_ptr thePoint)
2045 {
2046   beginService( " GEOM_Superv_i::GetBlockNearPoint" );
2047   MESSAGE("GEOM_Superv_i::GetBlockNearPoint");
2048   getBlocksOp();
2049   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetBlockNearPoint(theCompound, thePoint);
2050   endService( " GEOM_Superv_i::GetBlockNearPoint" );
2051   return anObj;
2052 }
2053
2054 //=============================================================================
2055 //  GetBlockByParts:
2056 //=============================================================================
2057 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockByParts (GEOM::GEOM_Object_ptr theCompound,
2058                                                       GEOM::GEOM_List_ptr theParts)
2059 {
2060   beginService( " GEOM_Superv_i::GetBlockByParts" );
2061   MESSAGE("GEOM_Superv_i::GetBlockByParts");
2062   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2063       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theParts, myPOA).in())) {
2064     getBlocksOp();
2065     GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetBlockByParts(theCompound, aListImplP->GetList());
2066     endService( " GEOM_Superv_i::GetBlockByParts" );
2067     return anObj;
2068   }
2069   endService( " GEOM_Superv_i::GetBlockByParts" );
2070   return NULL;
2071 }
2072
2073 //=============================================================================
2074 //  GetBlocksByParts:
2075 //=============================================================================
2076 GEOM::GEOM_List_ptr GEOM_Superv_i::GetBlocksByParts (GEOM::GEOM_Object_ptr theCompound,
2077                                                          GEOM::GEOM_List_ptr theParts)
2078 {
2079   beginService( " GEOM_Superv_i::GetBlocksByParts" );
2080   MESSAGE("GEOM_Superv_i::GetBlocksByParts");
2081   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2082       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theParts, myPOA).in())) {
2083     getBlocksOp();
2084     
2085     GEOM::ListOfGO* aBlocks = myBlocksOp->GetBlocksByParts(theCompound, aListImplP->GetList());
2086     GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aBlocks));
2087     endService( " GEOM_Superv_i::GetBlocksByParts" );
2088     return aListPtr->_this();
2089   }
2090   endService( " GEOM_Superv_i::GetBlocksByParts" );
2091   return NULL;
2092 }
2093
2094 //=============================================================================
2095 //  MakeMultiTransformation1D:
2096 //=============================================================================
2097 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMultiTransformation1D (GEOM::GEOM_Object_ptr theBlock,
2098                                                                 CORBA::Long     theDirFace1,
2099                                                                 CORBA::Long     theDirFace2,
2100                                                                 CORBA::Long     theNbTimes)
2101 {
2102   beginService( " GEOM_Superv_i::MakeMultiTransformation1D" );
2103   MESSAGE("GEOM_Superv_i::MakeMultiTransformation1D");
2104   getBlocksOp();
2105   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeMultiTransformation1D(theBlock, theDirFace1, theDirFace2, theNbTimes);
2106   endService( " GEOM_Superv_i::MakeMultiTransformation1D" );
2107   return anObj;
2108 }
2109
2110 //=============================================================================
2111 //  MakeMultiTransformation2D:
2112 //=============================================================================
2113 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMultiTransformation2D 
2114 (GEOM::GEOM_Object_ptr theBlock,
2115  CORBA::Long     theDirFace1U,
2116  CORBA::Long     theDirFace2U,
2117  CORBA::Long     theNbTimesU,
2118  CORBA::Long     theDirFace1V,
2119  CORBA::Long     theDirFace2V,
2120  CORBA::Long     theNbTimesV)
2121 {
2122   beginService( " GEOM_Superv_i::MakeMultiTransformation2D" );
2123   MESSAGE("GEOM_Superv_i::MakeMultiTransformation2D");
2124   getBlocksOp();
2125   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeMultiTransformation2D(theBlock, 
2126                                                                       theDirFace1U, theDirFace2U, theNbTimesU,
2127                                                                       theDirFace1V, theDirFace2V, theNbTimesV);
2128   endService( " GEOM_Superv_i::MakeMultiTransformation2D" );
2129   return anObj;
2130 }
2131
2132 //=============================== CurvesOperations ============================
2133 //=============================================================================
2134 //  MakeCirclePntVecR:
2135 //=============================================================================
2136 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCirclePntVecR (GEOM::GEOM_Object_ptr theCenter,
2137                                                         GEOM::GEOM_Object_ptr theVector,
2138                                                         CORBA::Double theR)
2139 {
2140   beginService( " GEOM_Superv_i::MakeCirclePntVecR" );
2141   MESSAGE("GEOM_Superv_i::MakeCirclePntVecR");
2142   getCurvesOp();
2143   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCirclePntVecR(theCenter, theVector, theR);
2144   endService( " GEOM_Superv_i::MakeCirclePntVecR" );
2145   return anObj;
2146 }
2147
2148 //=============================================================================
2149 //  MakeCircleThreePnt:
2150 //=============================================================================
2151 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCircleThreePnt (GEOM::GEOM_Object_ptr thePnt1,
2152                                                          GEOM::GEOM_Object_ptr thePnt2,
2153                                                          GEOM::GEOM_Object_ptr thePnt3)
2154 {
2155   beginService( " GEOM_Superv_i::MakeCircleThreePnt" );
2156   MESSAGE("GEOM_Superv_i::MakeCircleThreePnt");
2157   getCurvesOp();
2158   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCircleThreePnt(thePnt1, thePnt2, thePnt3);
2159   endService( " GEOM_Superv_i::MakeCircleThreePnt" );
2160   return anObj;
2161 }
2162
2163 //=============================================================================
2164 //  MakeEllipse:
2165 //=============================================================================
2166 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEllipse (GEOM::GEOM_Object_ptr theCenter,
2167                                                   GEOM::GEOM_Object_ptr theVector,
2168                                                   CORBA::Double theRMajor, 
2169                                                   CORBA::Double theRMinor)
2170 {
2171   beginService( " GEOM_Superv_i::MakeEllipse" );
2172   MESSAGE("GEOM_Superv_i::MakeEllipse");
2173   getCurvesOp();
2174   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeEllipse(theCenter, theVector, theRMajor, theRMinor);
2175   endService( " GEOM_Superv_i::MakeEllipse" );
2176   return anObj;
2177 }
2178
2179 //=============================================================================
2180 //  MakeArc:
2181 //=============================================================================
2182 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArc (GEOM::GEOM_Object_ptr thePnt1,
2183                                               GEOM::GEOM_Object_ptr thePnt2,
2184                                               GEOM::GEOM_Object_ptr thePnt3)
2185 {
2186   beginService( " GEOM_Superv_i::MakeArc" );
2187   MESSAGE("GEOM_Superv_i::MakeArc");
2188   getCurvesOp();
2189   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArc(thePnt1, thePnt2, thePnt3);
2190   endService( " GEOM_Superv_i::MakeArc" );
2191   return anObj;
2192 }
2193
2194 //=============================================================================
2195 //  MakeArcCenter:
2196 //=============================================================================
2197 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArcCenter (GEOM::GEOM_Object_ptr theCenter,
2198                                                     GEOM::GEOM_Object_ptr thePnt1,
2199                                                     GEOM::GEOM_Object_ptr thePnt2,
2200                                                     CORBA::Boolean theSense)
2201 {
2202   beginService( " GEOM_Superv_i::MakeArcCenter" );
2203   MESSAGE("GEOM_Superv_i::MakeArcCenter");
2204   getCurvesOp();
2205   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArcCenter(theCenter, thePnt1, thePnt2,theSense);
2206   endService( " GEOM_Superv_i::MakeArcCenter" );
2207   return anObj;
2208 }
2209
2210 //=============================================================================
2211 //  MakePolyline:
2212 //=============================================================================
2213 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePolyline (GEOM::GEOM_List_ptr thePoints)
2214 {
2215   beginService( " GEOM_Superv_i::MakePolyline" );
2216   MESSAGE("GEOM_Superv_i::MakePolyline");
2217   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2218       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
2219     getCurvesOp();
2220     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakePolyline(aListImplP->GetList());
2221     endService( " GEOM_Superv_i::MakePolyline" );
2222     return anObj;
2223   }
2224   endService( " GEOM_Superv_i::MakePolyline" );
2225   return NULL;
2226 }
2227
2228 //=============================================================================
2229 //  MakeSplineBezier:
2230 //=============================================================================
2231 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineBezier (GEOM::GEOM_List_ptr thePoints)
2232 {
2233   beginService( " GEOM_Superv_i::MakeSplineBezier" );
2234   MESSAGE("GEOM_Superv_i::MakeSplineBezier");
2235   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2236       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
2237     getCurvesOp();
2238     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSplineBezier(aListImplP->GetList());
2239     endService( " GEOM_Superv_i::MakeSplineBezier" );
2240     return anObj;
2241   }
2242   endService( " GEOM_Superv_i::MakeSplineBezier" );
2243   return NULL;
2244 }
2245
2246 //=============================================================================
2247 //  MakeSplineInterpolation:
2248 //=============================================================================
2249 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineInterpolation (GEOM::GEOM_List_ptr thePoints)
2250 {
2251   beginService( " GEOM_Superv_i::MakeSplineInterpolation" );
2252   MESSAGE("GEOM_Superv_i::MakeSplineInterpolation");
2253   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2254       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
2255     getCurvesOp();
2256     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSplineInterpolation(aListImplP->GetList());
2257     endService( " GEOM_Superv_i::MakeSplineInterpolation" );
2258     return anObj;
2259   }
2260   endService( " GEOM_Superv_i::MakeSplineInterpolation" );
2261   return NULL;
2262 }
2263
2264 //=============================================================================
2265 //  MakeSketcher:
2266 //=============================================================================
2267 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSketcher (const char* theCommand, 
2268                                                    GEOM::GEOM_List_ptr theWorkingPlane)
2269 {
2270   beginService( " GEOM_Superv_i::MakeSketcher" );
2271   MESSAGE("GEOM_Superv_i::MakeSketcher");
2272   if (GEOM_List_i<GEOM::ListOfDouble>* aListImplWP = 
2273       dynamic_cast<GEOM_List_i<GEOM::ListOfDouble>*>(GetServant(theWorkingPlane, myPOA).in())) {
2274     getCurvesOp();
2275     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSketcher(theCommand, aListImplWP->GetList());
2276     endService( " GEOM_Superv_i::MakeSketcher" );
2277     return anObj;
2278   }
2279   endService( " GEOM_Superv_i::MakeSketcher" );
2280   return NULL;
2281 }
2282
2283 //=============================== LocalOperations =============================
2284 //=============================================================================
2285 //  MakeFilletAll:
2286 //=============================================================================
2287 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletAll (GEOM::GEOM_Object_ptr theShape,
2288                                                     CORBA::Double theR)
2289 {
2290   beginService( " GEOM_Superv_i::MakeFilletAll" );
2291   MESSAGE("GEOM_Superv_i::MakeFilletAllMakeSketcher");
2292   getLocalOp();
2293   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletAll(theShape, theR);
2294   endService( " GEOM_Superv_i::MakeFilletAll" );
2295   return anObj;
2296 }
2297
2298 //=============================================================================
2299 //  MakeFilletEdges:
2300 //=============================================================================
2301 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletEdges (GEOM::GEOM_Object_ptr theShape, 
2302                                                       CORBA::Double theR,
2303                                                       GEOM::GEOM_List_ptr theEdges)
2304 {
2305   beginService( " GEOM_Superv_i::MakeFilletEdges" );
2306   MESSAGE("GEOM_Superv_i::MakeFilletEdges");
2307   if (GEOM_List_i<GEOM::ListOfLong>* aListImplE = 
2308       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
2309     getLocalOp();
2310     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletEdges(theShape, theR, aListImplE->GetList());
2311     endService( " GEOM_Superv_i::MakeFilletEdges" );
2312     return anObj;
2313   }
2314   endService( " GEOM_Superv_i::MakeFilletEdges" );
2315   return NULL;
2316 }
2317
2318 //=============================================================================
2319 //  MakeFilletFaces:
2320 //=============================================================================
2321 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletFaces (GEOM::GEOM_Object_ptr theShape, 
2322                                                       CORBA::Double theR,
2323                                                       GEOM::GEOM_List_ptr theFaces)
2324 {
2325   beginService( " GEOM_Superv_i::MakeFilletFaces" );
2326   MESSAGE("GEOM_Superv_i::MakeFilletFaces");
2327   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
2328       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
2329     getLocalOp();
2330     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletFaces(theShape, theR, aListImplF->GetList());
2331     endService( " GEOM_Superv_i::MakeFilletFaces" );
2332     return anObj;
2333   }
2334   endService( " GEOM_Superv_i::MakeFilletFaces" );
2335   return NULL;
2336 }
2337
2338 //=============================================================================
2339 //  MakeChamferAll:
2340 //=============================================================================
2341 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferAll (GEOM::GEOM_Object_ptr theShape, CORBA::Double theD)
2342 {
2343   beginService( " GEOM_Superv_i::MakeChamferAll" );
2344   MESSAGE("GEOM_Superv_i::MakeChamferAll");
2345   getLocalOp();
2346   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferAll(theShape, theD);
2347   endService( " GEOM_Superv_i::MakeChamferAll" );
2348   return anObj;
2349 }
2350   
2351 //=============================================================================
2352 //  MakeChamferEdge:
2353 //=============================================================================
2354 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdge (GEOM::GEOM_Object_ptr theShape,
2355                                                       CORBA::Double theD1, CORBA::Double theD2,
2356                                                       CORBA::Long theFace1, CORBA::Long theFace2)
2357 {
2358   beginService( " GEOM_Superv_i::MakeChamferEdge" );
2359   MESSAGE("GEOM_Superv_i::MakeChamferEdge");
2360   getLocalOp();
2361   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2);
2362   endService( " GEOM_Superv_i::MakeChamferEdge" );
2363   return anObj;
2364 }
2365
2366 //=============================================================================
2367 //  MakeChamferFaces:
2368 //=============================================================================
2369 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferFaces (GEOM::GEOM_Object_ptr theShape,
2370                                                        CORBA::Double theD1, CORBA::Double theD2,
2371                                                        GEOM::GEOM_List_ptr theFaces)
2372 {
2373   beginService( " GEOM_Superv_i::MakeChamferFaces" );
2374   MESSAGE("GEOM_Superv_i::MakeChamferFaces");
2375   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
2376       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
2377     getLocalOp();
2378     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferFaces(theShape, theD1, theD2, aListImplF->GetList());
2379     endService( " GEOM_Superv_i::MakeChamferFaces" );
2380     return anObj;
2381   }
2382   endService( " GEOM_Superv_i::MakeChamferFaces" );
2383   return NULL;
2384 }
2385
2386 //=============================================================================
2387 //  MakeArchimede:
2388 //=============================================================================
2389 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArchimede (GEOM::GEOM_Object_ptr theShape,
2390                                                     CORBA::Double theWeight,
2391                                                     CORBA::Double theWaterDensity,
2392                                                     CORBA::Double theMeshingDeflection)
2393 {
2394   beginService( " GEOM_Superv_i::MakeArchimede" );
2395   MESSAGE("GEOM_Superv_i::MakeArchimede");
2396   getLocalOp();
2397   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeArchimede(theShape, theWeight, theWaterDensity, theMeshingDeflection);
2398   endService( " GEOM_Superv_i::MakeArchimede" );
2399   return anObj;
2400 }
2401
2402 //=============================================================================
2403 //  GetSubShapeIndexMakeFilletAll:
2404 //=============================================================================
2405 CORBA::Long GEOM_Superv_i::GetSubShapeIndex (GEOM::GEOM_Object_ptr theShape,
2406                                              GEOM::GEOM_Object_ptr theSubShape)
2407 {
2408   beginService( " GEOM_Superv_i::GetSubShapeIndex" );
2409   MESSAGE("GEOM_Superv_i::GetSubShapeIndexMakeArchimede");
2410   getLocalOp();
2411   CORBA::Long aRes = myLocalOp->GetSubShapeIndex(theShape, theSubShape);
2412   endService( " GEOM_Superv_i::GetSubShapeIndex" );
2413   return aRes;
2414 }
2415
2416 //=============================== GroupOperations =============================
2417 //=============================================================================
2418 //  CreateGroup:
2419 //=============================================================================
2420 GEOM::GEOM_Object_ptr GEOM_Superv_i::CreateGroup (GEOM::GEOM_Object_ptr theMainShape, 
2421                                                   CORBA::Long theShapeType)
2422 {
2423   beginService( " GEOM_Superv_i::CreateGroup" );
2424   MESSAGE("GEOM_Superv_i::CreateGroup");
2425   getGroupOp();
2426   GEOM::GEOM_Object_ptr anObj = myGroupOp->CreateGroup(theMainShape, theShapeType);
2427   endService( " GEOM_Superv_i::CreateGroup" );
2428   return anObj;
2429 }
2430
2431 //=============================================================================
2432 //  AddObject:
2433 //=============================================================================
2434 void GEOM_Superv_i::AddObject (GEOM::GEOM_Object_ptr theGroup, 
2435                                CORBA::Long theSubShapeId)
2436 {
2437   beginService( " GEOM_Superv_i::AddObject" );
2438   MESSAGE("GEOM_Superv_i::AddObject");
2439   getGroupOp();
2440   myGroupOp->AddObject(theGroup, theSubShapeId);
2441   endService( " GEOM_Superv_i::AddObject" );
2442 }
2443
2444 //=============================================================================
2445 //  RemoveObject:
2446 //=============================================================================
2447 void GEOM_Superv_i::RemoveObject (GEOM::GEOM_Object_ptr theGroup, 
2448                                   CORBA::Long theSubShapeId)
2449 {
2450   beginService( " GEOM_Superv_i::RemoveObject" );
2451   MESSAGE("GEOM_Superv_i::RemoveObject");
2452   getGroupOp();
2453   myGroupOp->RemoveObject(theGroup, theSubShapeId);
2454   endService( " GEOM_Superv_i::RemoveObject" );
2455 }
2456
2457 //=============================================================================
2458 //  GetType:
2459 //=============================================================================
2460 CORBA::Long GEOM_Superv_i::GetType (GEOM::GEOM_Object_ptr theGroup)
2461 {
2462   beginService( " GEOM_Superv_i::GetType" );
2463   MESSAGE("GEOM_Superv_i::GetType");
2464   getGroupOp();
2465   CORBA::Long aResult = myGroupOp->GetType(theGroup);
2466   endService( " GEOM_Superv_i::GetType" );
2467   return aResult;
2468 }
2469
2470 //=============================================================================
2471 //  GetMainShape:
2472 //=============================================================================
2473 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetMainShape (GEOM::GEOM_Object_ptr theGroup)
2474 {
2475   beginService( " GEOM_Superv_i::GetMainShape" );
2476   MESSAGE("GEOM_Superv_i::GetMainShape");
2477   getGroupOp();
2478   GEOM::GEOM_Object_ptr anObj = myGroupOp->GetMainShape(theGroup);
2479   endService( " GEOM_Superv_i::GetMainShape" );
2480   return anObj;
2481 }
2482
2483 //=============================================================================
2484 //  GetObjects:
2485 //=============================================================================
2486 GEOM::GEOM_List_ptr GEOM_Superv_i::GetObjects (GEOM::GEOM_Object_ptr theGroup)
2487 {
2488   beginService( " GEOM_Superv_i::GetObjects" );
2489   MESSAGE("GEOM_Superv_i::GetObjects");
2490   getGroupOp();
2491
2492   GEOM::ListOfLong* aList = myGroupOp->GetObjects(theGroup);
2493   GEOM_List_i<GEOM::ListOfLong>* aListPtr = new GEOM_List_i<GEOM::ListOfLong>(*(aList));
2494   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
2495   endService( " GEOM_Superv_i::GetObjects" );
2496   return aListPtr->_this();
2497 }
2498
2499 //=====================================================================================
2500 // EXPORTED METHODS
2501 //=====================================================================================
2502 extern "C"
2503 {
2504   PortableServer::ObjectId * GEOM_SupervEngine_factory(CORBA::ORB_ptr orb,
2505                                                       PortableServer::POA_ptr poa, 
2506                                                       PortableServer::ObjectId * contId,
2507                                                       const char *instanceName, 
2508                                                       const char * interfaceName)
2509   {
2510     GEOM_Superv_i * myGEOM_Superv_i = new GEOM_Superv_i(orb, poa, contId, instanceName, interfaceName);
2511     myGEOM_Superv_i->register_name("/myGEOM_Superv");
2512     return myGEOM_Superv_i->getId() ;
2513   }
2514 }