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