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