Salome HOME
Update copyright notes (for 2010)
[modules/geom.git] / src / GEOM_I_Superv / GEOM_Superv_i.cc
1 //  Copyright (C) 2007-2010  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
23 #include "GEOM_Superv_i.hh"
24 #include "SALOME_LifeCycleCORBA.hxx"
25
26 #include CORBA_SERVER_HEADER(SALOME_Session)
27 #include "SALOMEDSClient_ClientFactory.hxx"
28
29 #define isNewStudy(a,b) (a > 0 && a != b)
30
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     std::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 //  getAdvancedOp:
351 //=============================================================================
352 void GEOM_Superv_i::getAdvancedOp()
353 {
354   if (CORBA::is_nil(myGeomEngine))
355     setGeomEngine();
356   // get GEOM_IGroupOperations interface
357   if (CORBA::is_nil(myGroupOp) || isNewStudy(myLastStudyID,myStudyID))
358     myAdvancedOp = myGeomEngine->GetIAdvancedOperations(myStudyID);
359 }
360
361 //=============================================================================
362 //  GetServant:
363 //=============================================================================
364 PortableServer::ServantBase_var GEOM_Superv_i::GetServant(CORBA::Object_ptr       theObject,
365                                                           PortableServer::POA_ptr thePOA)
366 {
367   if(CORBA::is_nil(theObject))  return NULL;
368   PortableServer::Servant aServant = thePOA->reference_to_servant(theObject);
369   return aServant;
370 }
371
372 //============================================================================
373 // function : Save()
374 // purpose  : save OCAF/Geom document
375 //============================================================================
376 SALOMEDS::TMPFile* GEOM_Superv_i::Save(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 : SaveASCII()
386 // purpose  :
387 //============================================================================ 
388 SALOMEDS::TMPFile* GEOM_Superv_i::SaveASCII(SALOMEDS::SComponent_ptr theComponent,
389                                             const char* theURL,
390                                             CORBA::Boolean isMultiFile)
391 {
392   SALOMEDS::TMPFile_var aStreamFile;
393   return aStreamFile._retn();
394 }
395
396 //============================================================================
397 // function : Load()
398 // purpose  :
399 //============================================================================ 
400 CORBA::Boolean GEOM_Superv_i::Load(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 : LoadASCII()
410 // purpose  :
411 //============================================================================ 
412 CORBA::Boolean GEOM_Superv_i::LoadASCII(SALOMEDS::SComponent_ptr theComponent,
413                                         const SALOMEDS::TMPFile& theStream,
414                                         const char* theURL,
415                                         CORBA::Boolean isMultiFile)
416 {
417   return false;
418 }
419
420 //============================================================================
421 // function : Close()
422 // purpose  :
423 //============================================================================
424 void GEOM_Superv_i::Close(SALOMEDS::SComponent_ptr theComponent)
425 {
426 }
427
428 //============================================================================
429 // function : ComponentDataType()
430 // purpose  :
431 //============================================================================
432 char* GEOM_Superv_i::ComponentDataType()
433 {
434   return 0;
435 }
436
437 //============================================================================
438 // function : IORToLocalPersistentID()
439 // purpose  :
440 //============================================================================
441 char* GEOM_Superv_i::IORToLocalPersistentID(SALOMEDS::SObject_ptr theSObject,
442                                             const char* IORString,
443                                             CORBA::Boolean isMultiFile,
444                                             CORBA::Boolean isASCII)
445 {
446   return 0;
447 }
448
449 //============================================================================
450 // function : LocalPersistentIDToIOR()
451 // purpose  : Create/Load CORBA object from a persistent ref (an entry)
452 //          : Used when a study is loaded
453 //          : The IOR (IORName) of object created is returned
454 //============================================================================
455 char* GEOM_Superv_i::LocalPersistentIDToIOR(SALOMEDS::SObject_ptr theSObject,
456                                             const char* aLocalPersistentID,
457                                             CORBA::Boolean isMultiFile,
458                                             CORBA::Boolean isASCII)
459 {
460   return 0;
461 }
462
463 //============================================================================
464 // function : CanPublishInStudy
465 // purpose  : 
466 //============================================================================
467 CORBA::Boolean GEOM_Superv_i::CanPublishInStudy(CORBA::Object_ptr theIOR)
468 {
469   if (CORBA::is_nil(myGeomEngine))
470     setGeomEngine();
471   return myGeomEngine->CanPublishInStudy(theIOR);
472 }
473
474 //============================================================================
475 // function : PublishInStudy
476 // purpose  : 
477 //============================================================================
478 SALOMEDS::SObject_ptr GEOM_Superv_i::PublishInStudy(SALOMEDS::Study_ptr theStudy,
479                                                     SALOMEDS::SObject_ptr theSObject,
480                                                     CORBA::Object_ptr theObject,
481                                                     const char* theName) throw (SALOME::SALOME_Exception)
482 {
483   if (CORBA::is_nil(myGeomEngine))
484     setGeomEngine();
485   return myGeomEngine->PublishInStudy(theStudy, theSObject, theObject, theName);
486 }
487
488 //============================================================================
489 // function : PublishNamedShapesInStudy
490 // purpose  : 
491 //============================================================================
492 GEOM::ListOfGO*
493 GEOM_Superv_i::PublishNamedShapesInStudy(SALOMEDS::Study_ptr theStudy,
494                                          //SALOMEDS::SObject_ptr theSObject,
495                                          CORBA::Object_ptr theObject)
496 {
497   if (CORBA::is_nil(myGeomEngine))
498     setGeomEngine();
499   return myGeomEngine->PublishNamedShapesInStudy(theStudy, theObject);
500 }
501
502 //============================================================================
503 // function : CanCopy()
504 // purpose  :
505 //============================================================================
506 CORBA::Boolean GEOM_Superv_i::CanCopy(SALOMEDS::SObject_ptr theObject)
507 {
508   return false;
509 }
510
511 //============================================================================
512 // function : CopyFrom()
513 // purpose  :
514 //============================================================================
515 SALOMEDS::TMPFile* GEOM_Superv_i::CopyFrom(SALOMEDS::SObject_ptr theObject, CORBA::Long& theObjectID)
516 {
517   SALOMEDS::TMPFile_var aStreamFile;
518   return aStreamFile._retn();
519 }
520
521 //============================================================================
522 // function : CanPaste()
523 // purpose  :
524 //============================================================================
525 CORBA::Boolean GEOM_Superv_i::CanPaste(const char* theComponentName, CORBA::Long theObjectID)
526 {
527   return false;
528 }
529
530 //============================================================================
531 // function : PasteInto()
532 // purpose  :
533 //============================================================================
534 SALOMEDS::SObject_ptr GEOM_Superv_i::PasteInto(const SALOMEDS::TMPFile& theStream,
535                                                CORBA::Long theObjectID,
536                                                SALOMEDS::SObject_ptr theObject)
537 {
538   SALOMEDS::SObject_var aNewSO;
539   return aNewSO._retn();
540 }
541
542 //================= Primitives Construction : BasicOperations =================
543 //=============================================================================
544 //  MakePointXYZ:
545 //=============================================================================
546 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointXYZ(CORBA::Double theX,
547                                                   CORBA::Double theY,
548                                                   CORBA::Double theZ)
549 {
550   beginService( " GEOM_Superv_i::MakePointXYZ" );
551   MESSAGE("GEOM_Superv_i::MakePointXYZ");
552   getBasicOp();
553   // make vertex and return
554   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointXYZ(theX, theY, theZ);
555   endService( " GEOM_Superv_i::MakePointXYZ" );
556   return anObj;
557 }
558
559 //=============================================================================
560 //  MakePointWithReference:
561 //=============================================================================
562 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointWithReference (GEOM::GEOM_Object_ptr theReference,
563                                                              CORBA::Double theX, 
564                                                              CORBA::Double theY, 
565                                                              CORBA::Double theZ)
566 {
567   beginService( " GEOM_Superv_i::MakePointWithReference" );
568   MESSAGE("GEOM_Superv_i::MakePointWithReference");
569   getBasicOp();
570   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointWithReference(theReference, theX, theY, theZ);
571   endService( " GEOM_Superv_i::MakePointWithReference" );
572   return anObj;
573 }
574
575 //=============================================================================
576 //  MakePointOnCurve:
577 //=============================================================================
578 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
579                                                        CORBA::Double theParameter)
580 {
581   beginService( " GEOM_Superv_i::MakePointOnCurve" );
582   MESSAGE("GEOM_Superv_i::MakePointOnCurve");
583   getBasicOp();
584   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointOnCurve(theRefCurve, theParameter);
585   endService( " GEOM_Superv_i::MakePointOnCurve" );
586   return anObj;
587 }
588
589 //=============================================================================
590 //  MakePointOnCurveByCoord
591 //=============================================================================
592 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnCurveByCoord (GEOM::GEOM_Object_ptr theRefCurve,
593                                                               CORBA::Double theXParameter,
594                                                               CORBA::Double theYParameter,
595                                                               CORBA::Double theZParameter)
596 {
597   beginService( " GEOM_Superv_i::MakePointOnCurveByCoord" );
598   MESSAGE("GEOM_Superv_i::MakePointOnCurveByCoord");
599   getBasicOp();
600   GEOM::GEOM_Object_ptr anObj =
601     myBasicOp->MakePointOnCurveByCoord(theRefCurve, theXParameter,
602                                 theYParameter, theZParameter);
603   endService( " GEOM_Superv_i::MakePointOnCurveByCoord" );
604   return anObj;
605 }
606
607 //=============================================================================
608 //  MakePointOnSurface:
609 //=============================================================================
610 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnSurface (GEOM::GEOM_Object_ptr theRefSurface,
611                                                          CORBA::Double theUParameter,
612                                                          CORBA::Double theVParameter)
613 {
614   beginService( " GEOM_Superv_i::MakePointOnSurface" );
615   MESSAGE("GEOM_Superv_i::MakePointOnSurface");
616   getBasicOp();
617   GEOM::GEOM_Object_ptr anObj =
618     myBasicOp->MakePointOnSurface(theRefSurface, theUParameter, theVParameter);
619   endService( " GEOM_Superv_i::MakePointOnSurface" );
620   return anObj;
621 }
622
623 //=============================================================================
624 //  MakePointOnSurfaceByCoord
625 //=============================================================================
626 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnSurfaceByCoord (GEOM::GEOM_Object_ptr theRefSurface,
627                                                                 CORBA::Double theXParameter,
628                                                                 CORBA::Double theYParameter,
629                                                                 CORBA::Double theZParameter)
630 {
631   beginService( " GEOM_Superv_i::MakePointOnSurfaceByCoord" );
632   MESSAGE("GEOM_Superv_i::MakePointOnSurfaceByCoord");
633   getBasicOp();
634   GEOM::GEOM_Object_ptr anObj =
635     myBasicOp->MakePointOnSurfaceByCoord(theRefSurface, theXParameter,
636                                 theYParameter, theZParameter);
637   endService( " GEOM_Superv_i::MakePointOnSurfaceByCoord" );
638   return anObj;
639 }
640
641 //=============================================================================
642 //  MakePointOnLinesIntersection:
643 //=============================================================================
644 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnLinesIntersection (GEOM::GEOM_Object_ptr theRefLine1,
645                                                                    GEOM::GEOM_Object_ptr theRefLine2)
646 {
647   beginService( " GEOM_Superv_i::MakePointOnLinesIntersection" );
648   MESSAGE("GEOM_Superv_i::MakePointOnLinesIntersection");
649   getBasicOp();
650   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointOnLinesIntersection(theRefLine1, theRefLine2);
651   endService( " GEOM_Superv_i::MakePointOnLinesIntersection" );
652   return anObj;
653 }
654
655 //=============================================================================
656 //  MakeTangentOnCurve:
657 //=============================================================================
658 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTangentOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
659                                                          CORBA::Double theParameter)
660 {
661   beginService( " GEOM_Superv_i::MakeTangentOnCurve" );
662   MESSAGE("GEOM_Superv_i::MakeTangentOnCurve");
663   getBasicOp();
664   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeTangentOnCurve(theRefCurve, theParameter);
665   endService( " GEOM_Superv_i::MakeTangentOnCurve" );
666   return anObj;
667 }
668
669 //=============================================================================
670 //  MakeVectorDXDYDZ:
671 //=============================================================================
672 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeVectorDXDYDZ (CORBA::Double theDX,
673                                                        CORBA::Double theDY,
674                                                        CORBA::Double theDZ)
675 {
676   beginService( " GEOM_Superv_i::MakeVectorDXDYDZ" );
677   MESSAGE("GEOM_Superv_i::MakeVectorDXDYDZ");
678   getBasicOp();
679   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeVectorDXDYDZ(theDX, theDY, theDZ);
680   endService( " GEOM_Superv_i::MakeVectorDXDYDZ" );
681   return anObj;
682 }
683
684 //=============================================================================
685 //  MakeVectorTwoPnt:
686 //=============================================================================
687 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeVectorTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
688                                                        GEOM::GEOM_Object_ptr thePnt2)
689 {
690   beginService( " GEOM_Superv_i::MakeVectorTwoPnt" );
691   MESSAGE("GEOM_Superv_i::MakeVector");
692   getBasicOp();
693   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeVectorTwoPnt(thePnt1, thePnt2);
694   endService( " GEOM_Superv_i::MakeVectorTwoPnt" );
695   return anObj;
696 }
697
698 //=============================================================================
699 //  MakeLineTwoPnt:
700 //=============================================================================
701 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeLineTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
702                                                      GEOM::GEOM_Object_ptr thePnt2)
703 {
704   beginService( " GEOM_Superv_i::MakeLineTwoPnt");
705   MESSAGE("GEOM_Superv_i::MakeLineTwoPnt");
706   getBasicOp();
707   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeLineTwoPnt(thePnt1, thePnt2);
708   endService( " GEOM_Superv_i::MakeLineTwoPnt");
709   return anObj;
710 }
711
712 //=============================================================================
713 //  MakeLineTwoFaces:
714 //=============================================================================
715 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeLineTwoFaces (GEOM::GEOM_Object_ptr theFace1,
716                                                        GEOM::GEOM_Object_ptr theFace2)
717 {
718   beginService( " GEOM_Superv_i::MakeLineTwoFaces");
719   MESSAGE("GEOM_Superv_i::MakeLineTwoFaces");
720   getBasicOp();
721   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeLineTwoFaces(theFace1, theFace2);
722   endService( " GEOM_Superv_i::MakeLineTwoFaces");
723   return anObj;
724 }
725
726 //=============================================================================
727 //  MakePlaneThreePnt:
728 //=============================================================================
729 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneThreePnt (GEOM::GEOM_Object_ptr thePnt1,
730                                                         GEOM::GEOM_Object_ptr thePnt2,
731                                                         GEOM::GEOM_Object_ptr thePnt3,
732                                                         CORBA::Double theTrimSize)
733 {
734   beginService( " GEOM_Superv_i::MakePlaneThreePnt");
735   MESSAGE("GEOM_Superv_i::MakePlaneThreePnt");
736   getBasicOp();
737   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlaneThreePnt(thePnt1, thePnt2, thePnt3, theTrimSize);
738   endService( " GEOM_Superv_i::MakePlaneThreePnt");
739   return anObj;
740 }
741
742 //=============================================================================
743 //  MakePlanePntVec:
744 //=============================================================================
745 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlanePntVec (GEOM::GEOM_Object_ptr thePnt,
746                                                       GEOM::GEOM_Object_ptr theVec,
747                                                       CORBA::Double theTrimSize)
748
749   beginService( " GEOM_Superv_i::MakePlanePntVec" );
750   MESSAGE("GEOM_Superv_i::MakePlanePntVec");
751   getBasicOp();
752   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlanePntVec(thePnt, theVec, theTrimSize);
753   endService( " GEOM_Superv_i::MakePlanePntVec" );
754   return anObj;
755 }
756
757 //=============================================================================
758 //  MakePlaneFace:
759 //=============================================================================
760 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneFace (GEOM::GEOM_Object_ptr theFace,
761                                                     CORBA::Double theTrimSize)
762 {
763   beginService( " GEOM_Superv_i::MakePlaneFace" );
764   MESSAGE("GEOM_Superv_i::MakePlaneFace");
765   getBasicOp();
766   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlaneFace(theFace, theTrimSize);
767   endService( " GEOM_Superv_i::MakePlaneFace" );
768   return anObj;
769 }
770
771 //=============================================================================
772 //  MakePlane2Vec:
773 //=============================================================================
774 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlane2Vec (GEOM::GEOM_Object_ptr theVec1,
775                                                     GEOM::GEOM_Object_ptr theVec2,
776                                                     CORBA::Double theTrimSize)
777
778   beginService( " GEOM_Superv_i::MakePlane2Vec" );
779   MESSAGE("GEOM_Superv_i::MakePlane2Vec");
780   getBasicOp();
781   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlane2Vec(theVec1, theVec2, theTrimSize);
782   endService( " GEOM_Superv_i::MakePlane2Vec" );
783   return anObj;
784 }
785
786 //=============================================================================
787 //  MakePlaneLCS:
788 //=============================================================================
789 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneLCS (GEOM::GEOM_Object_ptr theLCS,
790                                                    CORBA::Double theTrimSize,
791                                                    CORBA::Double theOrientation)
792
793   beginService( " GEOM_Superv_i::MakePlaneLCS" );
794   MESSAGE("GEOM_Superv_i::MakePlaneLCS");
795   getBasicOp();
796   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlaneLCS(theLCS, theTrimSize, theOrientation);
797   endService( " GEOM_Superv_i::MakePlaneLCS" );
798   return anObj;
799 }
800
801 //=============================================================================
802 //  MakeMarker:
803 //=============================================================================
804 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMarker 
805 (CORBA::Double theOX , CORBA::Double theOY , CORBA::Double theOZ,
806  CORBA::Double theXDX, CORBA::Double theXDY, CORBA::Double theXDZ,
807  CORBA::Double theYDX, CORBA::Double theYDY, CORBA::Double theYDZ)
808 {
809   beginService( " GEOM_Superv_i::MakeMarker" );
810   MESSAGE("GEOM_Superv_i::MakeMarker");
811   getBasicOp();
812   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeMarker(theOX, theOY, theOZ, theXDX, theXDY, theXDZ, theYDX, theYDY, theYDZ);
813   endService( " GEOM_Superv_i::MakeMarker" );
814   return anObj;
815 }
816
817 //=============================================================================
818 //  MakeMarkerFromShape:
819 //=============================================================================
820 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMarkerFromShape (GEOM::GEOM_Object_ptr theShape)
821 {
822   beginService( " GEOM_Superv_i::MakeMarkerFromShape" );
823   MESSAGE("GEOM_Superv_i::MakeMarkerFromShape");
824   getBasicOp();
825   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeMarkerFromShape(theShape);
826   endService( " GEOM_Superv_i::MakeMarkerFromShape" );
827   return anObj;
828 }
829
830 //=============================================================================
831 //  MakeMarkerPntTwoVec:
832 //=============================================================================
833 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMarkerPntTwoVec (GEOM::GEOM_Object_ptr theOrigin,
834                                                           GEOM::GEOM_Object_ptr theXVec,
835                                                           GEOM::GEOM_Object_ptr theYVec)
836 {
837   beginService( " GEOM_Superv_i::MakeMarkerPntTwoVec" );
838   MESSAGE("GEOM_Superv_i::MakeMarkerPntTwoVec");
839   getBasicOp();
840   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeMarkerPntTwoVec(theOrigin, theXVec, theYVec);
841   endService( " GEOM_Superv_i::MakeMarkerPntTwoVec" );
842   return anObj;
843 }
844
845 //=============================================================================
846 //  MakeTangentPlaneOnFace:
847 //=============================================================================
848 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTangentPlaneOnFace (GEOM::GEOM_Object_ptr theFace, 
849                                                  CORBA::Double theParameterU,
850                                                  CORBA::Double theParameterV,
851                                                  CORBA::Double theTrimSize)
852 {
853   beginService( " GEOM_Superv_i::MakeTangentPlaneOnFace" );
854   MESSAGE("GEOM_Superv_i::MakeTangentPlaneOnFace");
855   getBasicOp();
856   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeTangentPlaneOnFace(theFace, theParameterU,theParameterV,theTrimSize);
857   endService( " GEOM_Superv_i::MakeTangentPlaneOnFace" );
858   return anObj;
859 }
860
861 //================= Primitives Construction : 3DPrimOperations ================
862 //=============================================================================
863 //  MakeBox:
864 //=============================================================================
865 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBox (CORBA::Double theX1,
866                                               CORBA::Double theY1,
867                                               CORBA::Double theZ1,
868                                               CORBA::Double theX2,
869                                               CORBA::Double theY2,
870                                               CORBA::Double theZ2)
871 {
872   beginService( " GEOM_Superv_i::MakeBox" );
873   MESSAGE("GEOM_Superv_i::MakeBox");
874   getBasicOp();
875   get3DPrimOp();
876   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeBoxTwoPnt(myBasicOp->MakePointXYZ(theX1, theY1, theZ1),
877                                                           myBasicOp->MakePointXYZ(theX2, theY2, theZ2));
878   endService( " GEOM_Superv_i::MakeBox" );
879   return anObj;
880 }
881
882 //=============================================================================
883 //  MakeBoxDXDYDZ:
884 //=============================================================================
885 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoxDXDYDZ (CORBA::Double theDX, 
886                                                     CORBA::Double theDY, 
887                                                     CORBA::Double theDZ)
888 {
889   beginService( " GEOM_Superv_i::MakeBoxDXDYDZ" );
890   MESSAGE("GEOM_Superv_i::MakeBoxDXDYDZ");
891   get3DPrimOp();
892   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeBoxDXDYDZ(theDX, theDY, theDZ);
893   endService( " GEOM_Superv_i::MakeBoxDXDYDZ" );
894   return anObj;
895 }
896
897 //=============================================================================
898 //  MakeBoxTwoPnt:
899 //=============================================================================
900 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoxTwoPnt (GEOM::GEOM_Object_ptr thePnt1, 
901                                                     GEOM::GEOM_Object_ptr thePnt2)
902 {
903   beginService( " GEOM_Superv_i::MakeBoxTwoPnt" );
904   MESSAGE("GEOM_Superv_i::MakeBoxTwoPnt");
905   get3DPrimOp();
906   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeBoxTwoPnt(thePnt1, thePnt2);
907   endService( " GEOM_Superv_i::MakeBoxTwoPnt" );
908   return anObj;
909 }
910
911 //=============================================================================
912 //  MakeFaceHW:
913 //=============================================================================
914 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceHW (CORBA::Double theH,
915                                                  CORBA::Double theW,
916                                                  CORBA::Short  theOrientation)
917 {
918   beginService( " GEOM_Superv_i::MakeFaceHW" );
919   MESSAGE("GEOM_Superv_i::MakeFaceHW");
920   get3DPrimOp();
921   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeFaceHW(theH, theW, theOrientation);
922   endService( " GEOM_Superv_i::MakeFaceHW" );
923   return anObj;
924 }
925
926 //=============================================================================
927 //  MakeFaceObjHW:
928 //=============================================================================
929 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceObjHW (GEOM::GEOM_Object_ptr theObj, 
930                                                     CORBA::Double theH,
931                                                     CORBA::Double theW)
932 {
933   beginService( " GEOM_Superv_i::MakeFaceObjHW" );
934   MESSAGE("GEOM_Superv_i::MakeFaceObjHW");
935   get3DPrimOp();
936   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeFaceObjHW(theObj, theH, theW);
937   endService( " GEOM_Superv_i::MakeFaceObjHW" );
938   return anObj;
939 }
940
941 //=============================================================================
942 //  MakeDiskPntVecR:
943 //=============================================================================
944 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDiskPntVecR (GEOM::GEOM_Object_ptr theCenter,
945                                                       GEOM::GEOM_Object_ptr theVector,
946                                                       CORBA::Double theR)
947 {
948   beginService( " GEOM_Superv_i::MakeDiskPntVecR" );
949   MESSAGE("GEOM_Superv_i::MakeDiskPntVecR");
950   get3DPrimOp();
951   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeDiskPntVecR(theCenter, theVector, theR);
952   endService( " GEOM_Superv_i::MakeDiskPntVecR" );
953   return anObj;
954 }
955
956 //=============================================================================
957 //  MakeDiskThreePnt:
958 //=============================================================================
959 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDiskThreePnt (GEOM::GEOM_Object_ptr thePnt1,
960                                                        GEOM::GEOM_Object_ptr thePnt2,
961                                                        GEOM::GEOM_Object_ptr thePnt3)
962 {
963   beginService( " GEOM_Superv_i::MakeDiskThreePnt" );
964   MESSAGE("GEOM_Superv_i::MakeDiskThreePnt");
965   get3DPrimOp();
966   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeDiskThreePnt(thePnt1, thePnt2, thePnt3);
967   endService( " GEOM_Superv_i::MakeDiskThreePnt" );
968   return anObj;
969 }
970
971 //=============================================================================
972 //  MakeDiskR:
973 //=============================================================================
974 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDiskR (CORBA::Double theR,
975                                                 CORBA::Short  theOrientation)
976 {
977   beginService( " GEOM_Superv_i::MakeDiskR" );
978   MESSAGE("GEOM_Superv_i::MakeDiskR");
979   get3DPrimOp();
980   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeDiskR(theR, theOrientation);
981   endService( " GEOM_Superv_i::MakeDiskR" );
982   return anObj;
983 }
984
985 //=============================================================================
986 //  MakeCylinderPntVecRH:
987 //=============================================================================
988 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderPntVecRH (GEOM::GEOM_Object_ptr thePnt,
989                                                            GEOM::GEOM_Object_ptr theAxis,
990                                                            CORBA::Double theRadius,
991                                                            CORBA::Double theHeight)
992 {
993   beginService( " GEOM_Superv_i::MakeCylinderPntVecRH" );
994   MESSAGE("GEOM_Superv_i::MakeCylinderPntVecRH");
995   get3DPrimOp();
996   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderPntVecRH(thePnt, theAxis, theRadius, theHeight);
997   endService( " GEOM_Superv_i::MakeCylinderPntVecRH" );
998   return anObj;
999 }
1000
1001 //=============================================================================
1002 //  MakeCylinderRH:
1003 //=============================================================================
1004 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderRH (CORBA::Double theR, 
1005                                                      CORBA::Double theH)
1006 {
1007   beginService( " GEOM_Superv_i::MakeCylinderRH" );
1008   MESSAGE("GEOM_Superv_i::MakeCylinderRH");
1009   get3DPrimOp();
1010   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderRH(theR, theH);
1011   endService( " GEOM_Superv_i::MakeCylinderRH" );
1012   return anObj; 
1013 }
1014
1015 //=============================================================================
1016 //  MakeSphere:
1017 //=============================================================================
1018 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSphere  (CORBA::Double theX,
1019                                                   CORBA::Double theY,
1020                                                   CORBA::Double theZ,
1021                                                   CORBA::Double theRadius)
1022 {
1023   beginService( " GEOM_Superv_i::MakeSphepe" );
1024   MESSAGE("GEOM_Superv_i::MakeSphepe");
1025   getBasicOp();
1026   get3DPrimOp();
1027   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeSpherePntR(myBasicOp->MakePointXYZ(theX, theY, theZ), theRadius);
1028   endService( " GEOM_Superv_i::MakeSphepe" );
1029   return anObj;
1030 }
1031
1032 //=============================================================================
1033 //  MakeSphereR:
1034 //=============================================================================
1035 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSphereR (CORBA::Double theR)
1036 {
1037   beginService( " GEOM_Superv_i::MakeSphereR" );
1038   MESSAGE("GEOM_Superv_i::MakeSphereR");
1039   get3DPrimOp();
1040   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeSphereR(theR);
1041   endService( " GEOM_Superv_i::MakeSphereR" );
1042   return anObj;
1043 }
1044
1045 //=============================================================================
1046 //  MakeSpherePntR:
1047 //=============================================================================
1048 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSpherePntR (GEOM::GEOM_Object_ptr thePnt, 
1049                                                      CORBA::Double theR)
1050 {
1051   beginService( " GEOM_Superv_i::MakeSpherePntR" );
1052   MESSAGE("GEOM_Superv_i::MakeSpherePntR");
1053   get3DPrimOp();
1054   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeSpherePntR(thePnt, theR);
1055   endService( " GEOM_Superv_i::MakeSpherePntR" );
1056   return anObj;
1057 }
1058
1059 //=============================================================================
1060 //  MakeTorusPntVecRR:
1061 //=============================================================================
1062 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTorusPntVecRR (GEOM::GEOM_Object_ptr thePnt,
1063                                                         GEOM::GEOM_Object_ptr theVec,
1064                                                         CORBA::Double theRMajor,
1065                                                         CORBA::Double theRMinor)
1066 {
1067   beginService( " GEOM_Superv_i::MakeTorusPntVecRR" );
1068   MESSAGE("GEOM_Superv_i::MakeTorusPntVecRR");
1069   get3DPrimOp();
1070   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeTorusPntVecRR(thePnt, theVec, theRMajor, theRMinor);
1071   endService( " GEOM_Superv_i::MakeTorusPntVecRR" );
1072   return anObj;
1073 }
1074
1075 //=============================================================================
1076 //  MakeTorusRR:
1077 //=============================================================================
1078 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTorusRR (CORBA::Double theRMajor,
1079                                                   CORBA::Double theRMinor)
1080 {
1081   beginService( " GEOM_Superv_i::MakeTorusRR" );
1082   MESSAGE("GEOM_Superv_i::MakeTorusRR");
1083   get3DPrimOp();
1084   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeTorusRR(theRMajor, theRMinor);
1085   endService( " GEOM_Superv_i::MakeTorusRR" );
1086   return anObj;
1087 }
1088
1089 //=============================================================================
1090 //  MakeConePntVecR1R2H:
1091 //=============================================================================
1092 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeConePntVecR1R2H (GEOM::GEOM_Object_ptr thePnt,
1093                                                           GEOM::GEOM_Object_ptr theAxis,
1094                                                           CORBA::Double theR1,
1095                                                           CORBA::Double theR2,
1096                                                           CORBA::Double theHeight)
1097 {
1098   beginService( " GEOM_Superv_i::MakeConePntVecR1R2H" );
1099   MESSAGE("GEOM_Superv_i::MakeConePntVecR1R2H");
1100   get3DPrimOp();
1101   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeConePntVecR1R2H(thePnt, theAxis, theR1, theR2, theHeight);
1102   endService( " GEOM_Superv_i::MakeConePntVecR1R2H" );
1103   return anObj;
1104 }
1105
1106 //=============================================================================
1107 //  MakeConeR1R2H:
1108 //=============================================================================
1109 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeConeR1R2H (CORBA::Double theR1, 
1110                                                     CORBA::Double theR2, 
1111                                                     CORBA::Double theHeight)
1112 {
1113   beginService( " GEOM_Superv_i::MakeConeR1R2H" );
1114   MESSAGE("GEOM_Superv_i::MakeConeR1R2H");
1115   get3DPrimOp();
1116   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeConeR1R2H(theR1, theR2, theHeight);
1117   endService( " GEOM_Superv_i::MakeConeR1R2H" );
1118   return anObj;
1119 }
1120
1121 //=============================================================================
1122 //  MakePrismVecH:
1123 //=============================================================================
1124 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismVecH (GEOM::GEOM_Object_ptr theBase,
1125                                                     GEOM::GEOM_Object_ptr theVec,
1126                                                     CORBA::Double         theH)
1127 {
1128   beginService( " GEOM_Superv_i::MakePrismVecH" );
1129   MESSAGE("GEOM_Superv_i::MakePrismVecH");
1130   get3DPrimOp();
1131   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismVecH(theBase, theVec, theH);
1132   endService( " GEOM_Superv_i::MakePrismVecH" );
1133   return anObj;
1134 }
1135
1136 //=============================================================================
1137 //  MakePrismVecH2Ways:
1138 //=============================================================================
1139 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismVecH2Ways (GEOM::GEOM_Object_ptr theBase,
1140                                                          GEOM::GEOM_Object_ptr theVec,
1141                                                          CORBA::Double         theH)
1142 {
1143   beginService( " GEOM_Superv_i::MakePrismVecH2Ways" );
1144   MESSAGE("GEOM_Superv_i::MakePrismVecH2Ways");
1145   get3DPrimOp();
1146   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismVecH2Ways(theBase, theVec, theH);
1147   endService( " GEOM_Superv_i::MakePrismVecH2Ways" );
1148   return anObj;
1149 }
1150
1151 //=============================================================================
1152 //  MakePrismTwoPnt:
1153 //=============================================================================
1154 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismTwoPnt (GEOM::GEOM_Object_ptr theBase,
1155                                                       GEOM::GEOM_Object_ptr thePoint1,
1156                                                       GEOM::GEOM_Object_ptr thePoint2)
1157 {
1158   beginService( " GEOM_Superv_i::MakePrismTwoPnt" );
1159   MESSAGE("GEOM_Superv_i::MakePrismTwoPnt");
1160   get3DPrimOp();
1161   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismTwoPnt(theBase, thePoint1, thePoint2);
1162   endService( " GEOM_Superv_i::MakePrismTwoPnt" );
1163   return anObj;
1164 }
1165
1166 //=============================================================================
1167 //  MakePrismTwoPnt2Ways:
1168 //=============================================================================
1169 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismTwoPnt2Ways (GEOM::GEOM_Object_ptr theBase,
1170                                                            GEOM::GEOM_Object_ptr thePoint1,
1171                                                            GEOM::GEOM_Object_ptr thePoint2)
1172 {
1173   beginService( " GEOM_Superv_i::MakePrismTwoPnt2Ways" );
1174   MESSAGE("GEOM_Superv_i::MakePrismTwoPnt2Ways");
1175   get3DPrimOp();
1176   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismTwoPnt2Ways(theBase, thePoint1, thePoint2);
1177   endService( " GEOM_Superv_i::MakePrismTwoPnt2Ways" );
1178   return anObj;
1179 }
1180
1181 //=============================================================================
1182 //  MakePrismDXDYDZ:
1183 //=============================================================================
1184 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismDXDYDZ (GEOM::GEOM_Object_ptr theBase,
1185                       CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
1186 {
1187   beginService( " GEOM_Superv_i::MakePrismDXDYDZ" );
1188   MESSAGE("GEOM_Superv_i::MakePrismDXDYDZ");
1189   get3DPrimOp();
1190   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismDXDYDZ(theBase, theDX, theDY, theDZ);
1191   endService( " GEOM_Superv_i::MakePrismDXDYDZ" );
1192   return anObj;
1193 }
1194
1195 //=============================================================================
1196 //  MakePrismDXDYDZ:
1197 //=============================================================================
1198 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismDXDYDZ2Ways (GEOM::GEOM_Object_ptr theBase,
1199                       CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
1200 {
1201   beginService( " GEOM_Superv_i::MakePrismDXDYDZ2Ways" );
1202   MESSAGE("GEOM_Superv_i::MakePrismDXDYDZ2Ways");
1203   get3DPrimOp();
1204   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismDXDYDZ2Ways(theBase, theDX, theDY, theDZ);
1205   endService( " GEOM_Superv_i::MakePrismDXDYDZ2Ways" );
1206   return anObj;
1207 }
1208
1209 //=============================================================================
1210 //  MakePipe:
1211 //=============================================================================
1212 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipe (GEOM::GEOM_Object_ptr theBase, 
1213                                                GEOM::GEOM_Object_ptr thePath)
1214 {
1215   beginService( " GEOM_Superv_i::MakePipe" );
1216   MESSAGE("GEOM_Superv_i::MakePipe");
1217   get3DPrimOp();
1218   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePipe(theBase, thePath);
1219   endService( " GEOM_Superv_i::MakePipe" );
1220   return anObj;
1221 }
1222
1223 //=============================================================================
1224 //  MakeRevolutionAxisAngle:
1225 //=============================================================================
1226 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeRevolutionAxisAngle (GEOM::GEOM_Object_ptr theBase,
1227                                                               GEOM::GEOM_Object_ptr theAxis,
1228                                                               CORBA::Double theAngle)
1229 {
1230   beginService( " GEOM_Superv_i::MakeRevolutionAxisAngle" );
1231   MESSAGE("GEOM_Superv_i::MakeRevolutionAxisAngle");
1232   get3DPrimOp();
1233   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeRevolutionAxisAngle(theBase, theAxis, theAngle);
1234   endService( " GEOM_Superv_i::MakeRevolutionAxisAngle" );
1235   return anObj;
1236 }
1237
1238 //=============================================================================
1239 //  MakeRevolutionAxisAngle:
1240 //=============================================================================
1241 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeRevolutionAxisAngle2Ways (GEOM::GEOM_Object_ptr theBase,
1242                                                                    GEOM::GEOM_Object_ptr theAxis,
1243                                                                    CORBA::Double theAngle)
1244 {
1245   beginService( " GEOM_Superv_i::MakeRevolutionAxisAngle2Ways" );
1246   MESSAGE("GEOM_Superv_i::MakeRevolutionAxisAngle2Ways");
1247   get3DPrimOp();
1248   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeRevolutionAxisAngle2Ways(theBase, theAxis, theAngle);
1249   endService( " GEOM_Superv_i::MakeRevolutionAxisAngle2Ways" );
1250   return anObj;
1251 }
1252
1253 //=============================================================================
1254 //  MakeFilling:
1255 //=============================================================================
1256 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilling (GEOM::GEOM_Object_ptr theShape,
1257                                                   CORBA::Long theMinDeg,
1258                                                   CORBA::Long theMaxDeg,
1259                                                   CORBA::Double theTol2D,
1260                                                   CORBA::Double theTol3D,
1261                                                   CORBA::Long theNbIter,
1262                                                   GEOM::filling_oper_method theMethod,
1263                                                   CORBA::Boolean theApprox)
1264 {
1265   beginService( " GEOM_Superv_i::MakeFilling" );
1266   MESSAGE("GEOM_Superv_i::MakeFilling");
1267   get3DPrimOp();
1268   GEOM::GEOM_Object_ptr anObj =
1269     my3DPrimOp->MakeFilling(theShape, theMinDeg, theMaxDeg, theTol2D, theTol3D,
1270                             theNbIter, theMethod, theApprox);
1271   endService( " GEOM_Superv_i::MakeFilling" );
1272   return anObj;
1273 }
1274
1275 //============================= BooleanOperations =============================
1276 //=============================================================================
1277 //  MakeBoolean:
1278 //=============================================================================
1279 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoolean (GEOM::GEOM_Object_ptr theShape1,
1280                                                   GEOM::GEOM_Object_ptr theShape2,
1281                                                   CORBA::Long theOperation)
1282 {
1283   beginService( " GEOM_Superv_i::MakeBoolean" );
1284   // theOperation indicates the operation to be done:
1285   // 1 - Common, 2 - Cut, 3 - Fuse, 4 - Section
1286   MESSAGE("GEOM_Superv_i::MakeBoolean");
1287   getBoolOp();
1288   GEOM::GEOM_Object_ptr anObj = myBoolOp->MakeBoolean(theShape1, theShape2, theOperation);
1289   endService( " GEOM_Superv_i::MakeBoolean" );
1290   return anObj;
1291 }
1292
1293 //=============================================================================
1294 //  MakeThruSections:
1295 //=============================================================================
1296 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeThruSections(const GEOM::ListOfGO& theSeqSections,
1297                                          CORBA::Boolean theModeSolid,
1298                                          CORBA::Double thePreci,
1299                                          CORBA::Boolean theRuled)
1300 {
1301   beginService( " GEOM_Superv_i::MakeThruSections" );
1302   MESSAGE("GEOM_Superv_i::MakeThruSections");
1303   get3DPrimOp();
1304   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeThruSections(theSeqSections, theModeSolid,thePreci,theRuled);
1305   endService( " GEOM_Superv_i::MakeThruSections" );
1306   return anObj;
1307 }
1308
1309 //=============================================================================
1310 //  MakePipe:
1311 //=============================================================================
1312 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeWithDifferentSections
1313                      (const GEOM::ListOfGO& theBases,
1314                       const GEOM::ListOfGO& theLocations,
1315                       GEOM::GEOM_Object_ptr thePath,
1316                       CORBA::Boolean theWithContact,
1317                       CORBA::Boolean theWithCorrections)
1318 {
1319   beginService( " GEOM_Superv_i::MakePipeWithDifferentSections" );
1320   MESSAGE("GEOM_Superv_i::MakePipeWithDifferentSections");
1321   get3DPrimOp();
1322   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePipeWithDifferentSections(theBases,theLocations, thePath,theWithContact,theWithCorrections);
1323   endService( " GEOM_Superv_i::MakePipeWithDifferentSections" );
1324   return anObj;
1325 }
1326
1327
1328 //=============================================================================
1329 //  MakePipe:
1330 //=============================================================================
1331 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeWithShellSections
1332                    (const GEOM::ListOfGO& theBases,
1333                     const GEOM::ListOfGO& theSubBases,
1334                     const GEOM::ListOfGO& theLocations,
1335                     GEOM::GEOM_Object_ptr thePath,
1336                     CORBA::Boolean theWithContact,
1337                     CORBA::Boolean theWithCorrections)
1338 {
1339   beginService( " GEOM_Superv_i::MakePipeWithShellSections" );
1340   MESSAGE("GEOM_Superv_i::MakePipeWithShellSections");
1341   get3DPrimOp();
1342   GEOM::GEOM_Object_ptr anObj =
1343     my3DPrimOp->MakePipeWithShellSections(theBases, theSubBases,
1344                                           theLocations, thePath,
1345                                           theWithContact, theWithCorrections);
1346   endService( " GEOM_Superv_i::MakePipeWithShellSections" );
1347   return anObj;
1348 }
1349
1350
1351 //=============================================================================
1352 //  MakePipe:
1353 //=============================================================================
1354 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeShellsWithoutPath
1355                    (const GEOM::ListOfGO& theBases,
1356                     const GEOM::ListOfGO& theLocations)
1357 {
1358   beginService( " GEOM_Superv_i::MakePipeShellsWithoutPath" );
1359   MESSAGE("GEOM_Superv_i::MakePipeShellsWithoutPath");
1360   get3DPrimOp();
1361   GEOM::GEOM_Object_ptr anObj =
1362     my3DPrimOp->MakePipeShellsWithoutPath(theBases,theLocations);
1363   endService( " GEOM_Superv_i::MakePipeShellsWithoutPath" );
1364   return anObj;
1365 }
1366
1367
1368 //=============================================================================
1369 //  MakePipe:
1370 //=============================================================================
1371 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeBiNormalAlongVector 
1372                                                 (GEOM::GEOM_Object_ptr theBase, 
1373                                                  GEOM::GEOM_Object_ptr thePath, 
1374                                                  GEOM::GEOM_Object_ptr theVec)
1375 {
1376   beginService( " GEOM_Superv_i::MakePipeBiNormalAlongVector" );
1377   MESSAGE("GEOM_Superv_i::MakePipeBiNormalAlongVector");
1378   get3DPrimOp();
1379   GEOM::GEOM_Object_ptr anObj = 
1380     my3DPrimOp->MakePipeBiNormalAlongVector(theBase, thePath, theVec);
1381   endService( " GEOM_Superv_i::MakePipeBiNormalAlongVector" );
1382   return anObj;
1383 }
1384
1385
1386 //=============================================================================
1387 //  MakeFuse:
1388 //=============================================================================
1389 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFuse (GEOM::GEOM_Object_ptr theShape1,
1390                                                GEOM::GEOM_Object_ptr theShape2)
1391 {
1392   beginService( " GEOM_Superv_i::MakeFuse" );
1393   MESSAGE("GEOM_Superv_i::MakeFuse");
1394   getBoolOp();
1395   GEOM::GEOM_Object_ptr anObj = myBoolOp->MakeBoolean(theShape1, theShape2, 3);
1396   endService( " GEOM_Superv_i::MakeFuse" );
1397   return anObj;
1398 }
1399
1400 //=============================================================================
1401 //  MakePartition:
1402 //=============================================================================
1403 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePartition (GEOM::GEOM_List_ptr   theShapes,
1404                                                     GEOM::GEOM_List_ptr   theTools,
1405                                                     GEOM::GEOM_List_ptr   theKeepInside,
1406                                                     GEOM::GEOM_List_ptr   theRemoveInside,
1407                                                     CORBA::Short      theLimit,
1408                                                     CORBA::Boolean    theRemoveWebs,
1409                                                     GEOM::GEOM_List_ptr theMaterials,
1410                                                     CORBA::Short theKeepNonlimitShapes)
1411 {
1412   beginService( " GEOM_Superv_i::MakePartition" );
1413   MESSAGE("GEOM_Superv_i::MakePartition");
1414   GEOM_List_i<GEOM::ListOfGO>* aListImplS = 
1415     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShapes, myPOA).in());
1416   GEOM_List_i<GEOM::ListOfGO>* aListImplT = 
1417     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theTools, myPOA).in());
1418   GEOM_List_i<GEOM::ListOfGO>* aListImplKI = 
1419     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theKeepInside, myPOA).in());
1420   GEOM_List_i<GEOM::ListOfGO>* aListImplRI = 
1421     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theRemoveInside, myPOA).in());
1422   GEOM_List_i<GEOM::ListOfLong>* aListImplM = 
1423     dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theMaterials, myPOA).in());
1424   if (aListImplS && aListImplT && aListImplKI && aListImplRI && aListImplM) {
1425     getBoolOp();
1426     GEOM::GEOM_Object_ptr anObj =
1427       myBoolOp->MakePartition(aListImplS->GetList(), aListImplT->GetList(), 
1428                               aListImplKI->GetList(), aListImplRI->GetList(),
1429                               theLimit, theRemoveWebs, aListImplM->GetList(),
1430                               theKeepNonlimitShapes);
1431     endService( " GEOM_Superv_i::MakePartition" );
1432     return anObj;
1433   }
1434   endService( " GEOM_Superv_i::MakePartition" );
1435   return NULL;
1436 }
1437
1438 //=============================================================================
1439 //  MakeHalfPartition:
1440 //=============================================================================
1441 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHalfPartition (GEOM::GEOM_Object_ptr theShape,
1442                                                         GEOM::GEOM_Object_ptr thePlane)
1443 {
1444   beginService( " GEOM_Superv_i::MakeHalfPartition" );
1445   MESSAGE("GEOM_Superv_i::MakeHalfPartition");
1446   getBoolOp();
1447   GEOM::GEOM_Object_ptr anObj = myBoolOp->MakeHalfPartition(theShape, thePlane);
1448   endService( " GEOM_Superv_i::MakeHalfPartition" );
1449   return anObj;
1450 }
1451
1452 //============================== InsertOperations =============================
1453 //=============================================================================
1454 //  MakeCopy:
1455 //=============================================================================
1456 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCopy (GEOM::GEOM_Object_ptr theOriginal)
1457 {
1458   beginService( " GEOM_Superv_i::MakeCopy" );
1459   MESSAGE("GEOM_Superv_i::MakeCopy");
1460   getInsOp();
1461   GEOM::GEOM_Object_ptr anObj = myInsOp->MakeCopy(theOriginal);
1462   endService( " GEOM_Superv_i::MakeCopy" );
1463   return anObj;
1464 }
1465
1466 //=============================================================================
1467 //  Export:
1468 //=============================================================================
1469 void GEOM_Superv_i::Export (GEOM::GEOM_Object_ptr theObject, 
1470                             const char*           theFileName, 
1471                             const char*           theFormatName)
1472 {
1473   beginService( " GEOM_Superv_i::Export" );
1474   MESSAGE("GEOM_Superv_i::Export");
1475   getInsOp();
1476   myInsOp->Export(theObject, theFileName, theFormatName);
1477   endService( " GEOM_Superv_i::Export" );
1478 }
1479
1480 //=============================================================================
1481 //  Import:
1482 //=============================================================================
1483 GEOM::GEOM_Object_ptr GEOM_Superv_i::Import (const char* theFileName, 
1484                                              const char* theFormatName)
1485 {
1486   beginService( " GEOM_Superv_i::Import" );
1487   MESSAGE("GEOM_Superv_i::Import");
1488   getInsOp();
1489   GEOM::GEOM_Object_ptr anObj = myInsOp->Import(theFileName, theFormatName);
1490   endService( " GEOM_Superv_i::Import" );
1491   return anObj;
1492 }
1493
1494 //=============================================================================
1495 //  ImportTranslators:
1496 //=============================================================================
1497 void GEOM_Superv_i::ImportTranslators (GEOM::string_array_out theFormats,
1498                                        GEOM::string_array_out thePatterns)
1499 {
1500   beginService( " GEOM_Superv_i::ImportTranslators" );
1501   MESSAGE("GEOM_Superv_i::ImportTranslators");
1502   getInsOp();
1503   myInsOp->ImportTranslators(theFormats, thePatterns);
1504   endService( " GEOM_Superv_i::ImportTranslators" );
1505 }
1506
1507 //=============================================================================
1508 //  ExportTranslators:
1509 //=============================================================================
1510 void GEOM_Superv_i::ExportTranslators (GEOM::string_array_out theFormats,
1511                                        GEOM::string_array_out thePatterns)
1512 {
1513   beginService( " GEOM_Superv_i::ExportTranslators" );
1514   MESSAGE("GEOM_Superv_i::ExportTranslators");
1515   getInsOp();
1516   myInsOp->ExportTranslators(theFormats, thePatterns);
1517   endService( " GEOM_Superv_i::ExportTranslators" );
1518 }
1519
1520 //============================= TransformOperations ===========================
1521 //=============================================================================
1522 //  TranslateTwoPoints:
1523 //=============================================================================
1524 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateTwoPoints (GEOM::GEOM_Object_ptr theObject,
1525                                                          GEOM::GEOM_Object_ptr thePoint1,
1526                                                          GEOM::GEOM_Object_ptr thePoint2)
1527 {
1528   beginService( " GEOM_Superv_i::TranslateTwoPoints" );
1529   MESSAGE("GEOM_Superv_i::TranslateTwoPoints");
1530   getTransfOp();
1531   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateTwoPoints(theObject, thePoint1, thePoint2);
1532   endService( " GEOM_Superv_i::TranslateTwoPoints" );
1533   return anObj;
1534 }
1535
1536 //=============================================================================
1537 //  TranslateTwoPointsCopy:
1538 //=============================================================================
1539 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateTwoPointsCopy (GEOM::GEOM_Object_ptr theObject,
1540                                                              GEOM::GEOM_Object_ptr thePoint1,
1541                                                              GEOM::GEOM_Object_ptr thePoint2)
1542 {
1543   beginService( " GEOM_Superv_i::TranslateTwoPointsCopy" );
1544   MESSAGE("GEOM_Superv_i::TranslateTwoPointsCopy");
1545   getTransfOp();
1546   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateTwoPointsCopy(theObject, thePoint1, thePoint2);
1547   endService( " GEOM_Superv_i::TranslateTwoPointsCopy" );
1548   return anObj;
1549 }
1550
1551 //=============================================================================
1552 //  TranslateDXDYDZ:
1553 //=============================================================================
1554 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZ (GEOM::GEOM_Object_ptr theObject,
1555                                                       CORBA::Double theDX, 
1556                                                       CORBA::Double theDY, 
1557                                                       CORBA::Double theDZ)
1558 {
1559   beginService( " GEOM_Superv_i::TranslateDXDYDZ" );
1560   MESSAGE("GEOM_Superv_i::TranslateDXDYDZ");
1561   getTransfOp();
1562   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateDXDYDZ(theObject, theDX, theDY, theDZ);
1563   endService( " GEOM_Superv_i::TranslateDXDYDZ" );
1564   return anObj;
1565 }
1566
1567 //=============================================================================
1568 //  TranslateDXDYDZCopy:
1569 //=============================================================================
1570 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZCopy (GEOM::GEOM_Object_ptr theObject,
1571                                                           CORBA::Double theDX, 
1572                                                           CORBA::Double theDY, 
1573                                                           CORBA::Double theDZ)
1574 {
1575   beginService( " GEOM_Superv_i::TranslateDXDYDZCopy" );
1576   MESSAGE("GEOM_Superv_i::TranslateDXDYDZCopy");
1577   getTransfOp();
1578   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ);
1579   endService( " GEOM_Superv_i::TranslateDXDYDZCopy" );
1580   return anObj;
1581 }
1582
1583 //=============================================================================
1584 //  TranslateVector:
1585 //=============================================================================
1586 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVector (GEOM::GEOM_Object_ptr theObject,
1587                                                       GEOM::GEOM_Object_ptr theVector)
1588 {
1589   beginService( " GEOM_Superv_i::TranslateVector" );
1590   MESSAGE("GEOM_Superv_i::TranslateVector");
1591   getTransfOp();
1592   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVector(theObject, theVector);
1593   endService( " GEOM_Superv_i::TranslateVector" );
1594   return anObj;
1595 }
1596
1597 //=============================================================================
1598 //  TranslateVectorCopy:
1599 //=============================================================================
1600 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVectorCopy (GEOM::GEOM_Object_ptr theObject,
1601                                                           GEOM::GEOM_Object_ptr theVector)
1602 {
1603   beginService( " GEOM_Superv_i::TranslateVectorCopy" );
1604   MESSAGE("GEOM_Superv_i::TranslateVectorCopy");
1605   getTransfOp();
1606   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVectorCopy(theObject, theVector);
1607   endService( " GEOM_Superv_i::TranslateVectorCopy" );
1608   return anObj;
1609 }
1610
1611 //=============================================================================
1612 //  TranslateVectorDistance:
1613 //=============================================================================
1614 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVectorDistance (GEOM::GEOM_Object_ptr theObject,
1615                                                               GEOM::GEOM_Object_ptr theVector,
1616                                                               CORBA::Double theDistance,
1617                                                               CORBA::Boolean theCopy)
1618 {
1619   beginService( " GEOM_Superv_i::TranslateVectorDistance" );
1620   MESSAGE("GEOM_Superv_i::TranslateVectorDistance");
1621   getTransfOp();
1622   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVectorDistance(theObject, 
1623                                                                     theVector, theDistance, theCopy);
1624   endService( " GEOM_Superv_i::TranslateVectorDistance" );
1625   return anObj;
1626 }
1627
1628 //=============================================================================
1629 //  MultiTranslate1D:
1630 //=============================================================================
1631 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiTranslate1D (GEOM::GEOM_Object_ptr theObject,
1632                                                        GEOM::GEOM_Object_ptr theVector,
1633                                                        CORBA::Double theStep,
1634                                                        CORBA::Long theNbTimes)
1635 {
1636   beginService( " GEOM_Superv_i::MultiTranslate1D" );
1637   MESSAGE("GEOM_Superv_i::MultiTranslate1D");
1638   getTransfOp();
1639   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiTranslate1D(theObject, theVector, theStep, theNbTimes);
1640   endService( " GEOM_Superv_i::MultiTranslate1D" );
1641   return anObj;
1642 }
1643
1644 //=============================================================================
1645 //  MultiTranslate2D:
1646 //=============================================================================
1647 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiTranslate2D (GEOM::GEOM_Object_ptr theObject,
1648                                                        GEOM::GEOM_Object_ptr theVector1,
1649                                                        CORBA::Double theStep1,
1650                                                        CORBA::Long theNbTimes1,
1651                                                        GEOM::GEOM_Object_ptr theVector2,
1652                                                        CORBA::Double theStep2,
1653                                                        CORBA::Long theNbTimes2)
1654 {
1655   beginService( " GEOM_Superv_i::MultiTranslate2D" );
1656   MESSAGE("GEOM_Superv_i::MultiTranslate2D");
1657   getTransfOp();
1658   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiTranslate2D(theObject, theVector1, theStep1, theNbTimes1,
1659                                                              theVector2, theStep2, theNbTimes2);
1660   endService( " GEOM_Superv_i::MultiTranslate2D" );
1661   return anObj;
1662 }
1663
1664 //=============================================================================
1665 //  Rotate:
1666 //=============================================================================
1667 GEOM::GEOM_Object_ptr GEOM_Superv_i::Rotate (GEOM::GEOM_Object_ptr theObject,
1668                                              GEOM::GEOM_Object_ptr theAxis,
1669                                              CORBA::Double theAngle)
1670 {
1671   beginService( " GEOM_Superv_i::Rotate" );
1672   MESSAGE("GEOM_Superv_i::Rotate");
1673   getTransfOp();
1674   GEOM::GEOM_Object_ptr anObj = myTransfOp->Rotate(theObject, theAxis, theAngle);
1675   endService( " GEOM_Superv_i::Rotate" );
1676   return anObj;
1677 }
1678
1679 //=============================================================================
1680 //  RotateCopy:
1681 //=============================================================================
1682 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateCopy (GEOM::GEOM_Object_ptr theObject,
1683                                                  GEOM::GEOM_Object_ptr theAxis,
1684                                                  CORBA::Double theAngle)
1685 {
1686   beginService( " GEOM_Superv_i::RotateCopy" );
1687   MESSAGE("GEOM_Superv_i::RotateCopy");
1688   getTransfOp();
1689   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateCopy(theObject, theAxis, theAngle);
1690   endService( " GEOM_Superv_i::RotateCopy" );
1691   return anObj;
1692 }
1693 //=============================================================================
1694 //  RotateThreePoints:
1695 //=============================================================================
1696 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateThreePoints (GEOM::GEOM_Object_ptr theObject,
1697                                                         GEOM::GEOM_Object_ptr theCentPoint,
1698                                                         GEOM::GEOM_Object_ptr thePoint1,
1699                                                         GEOM::GEOM_Object_ptr thePoint2)
1700 {
1701   beginService( " GEOM_Superv_i::RotateThreePoints" );
1702   MESSAGE("GEOM_Superv_i::RotateThreePoints");
1703   getTransfOp();
1704   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateThreePoints(theObject, theCentPoint, thePoint1, thePoint2);
1705   endService( " GEOM_Superv_i::RotateThreePoints" );
1706   return anObj;
1707 }
1708
1709 //=============================================================================
1710 //  RotateThreePointsCopy:
1711 //=============================================================================
1712 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateThreePointsCopy (GEOM::GEOM_Object_ptr theObject,
1713                                                             GEOM::GEOM_Object_ptr theCentPoint,
1714                                                             GEOM::GEOM_Object_ptr thePoint1,
1715                                                             GEOM::GEOM_Object_ptr thePoint2)
1716 {
1717   beginService( " GEOM_Superv_i::RotateThreePointsCopy" );
1718   MESSAGE("GEOM_Superv_i::RotateThreePointsCopy");
1719   getTransfOp();
1720   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2);
1721   endService( " GEOM_Superv_i::RotateThreePointsCopy" );
1722   return anObj;
1723 }
1724
1725 //=============================================================================
1726 //  MultiRotate1D:
1727 //=============================================================================
1728 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate1D (GEOM::GEOM_Object_ptr theObject,
1729                                                     GEOM::GEOM_Object_ptr theAxis,
1730                                                     CORBA::Long theNbTimes)
1731 {
1732   beginService( " GEOM_Superv_i::MultiRotate1D" );
1733   MESSAGE("GEOM_Superv_i::MultiRotate1D");
1734   getTransfOp();
1735   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiRotate1D(theObject, theAxis, theNbTimes);
1736   endService( " GEOM_Superv_i::MultiRotate1D" );
1737   return anObj;
1738 }
1739
1740 //=============================================================================
1741 //  MultiRotate2D:
1742 //=============================================================================
1743 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate2D (GEOM::GEOM_Object_ptr theObject,
1744                                                     GEOM::GEOM_Object_ptr theAxis,
1745                                                     CORBA::Double theAngle,
1746                                                     CORBA::Long theNbTimes1,
1747                                                     CORBA::Double theStep,
1748                                                     CORBA::Long theNbTimes2)
1749 {
1750   beginService( " GEOM_Superv_i::MultiRotate2D" );
1751   MESSAGE("GEOM_Superv_i::MultiRotate2D");
1752   getTransfOp();
1753   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2);
1754   endService( " GEOM_Superv_i::MultiRotate2D" );
1755   return anObj;
1756 }
1757
1758 //=============================================================================
1759 //  MirrorPlane:
1760 //=============================================================================
1761 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlane (GEOM::GEOM_Object_ptr theObject, 
1762                                                   GEOM::GEOM_Object_ptr thePlane)
1763 {
1764   beginService( " GEOM_Superv_i::MirrorPlane" );
1765   MESSAGE("GEOM_Superv_i::MirrorPlane");
1766   getTransfOp();
1767   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPlane(theObject, thePlane);
1768   endService( " GEOM_Superv_i::MirrorPlane" );
1769   return anObj;
1770 }
1771
1772 //=============================================================================
1773 //  MirrorPlaneCopy:
1774 //=============================================================================
1775 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlaneCopy (GEOM::GEOM_Object_ptr theObject, 
1776                                                       GEOM::GEOM_Object_ptr thePlane)
1777 {
1778   beginService( " GEOM_Superv_i::MirrorPlaneCopy" );
1779   MESSAGE("GEOM_Superv_i::MirrorPlaneCopy");
1780   getTransfOp();
1781   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPlaneCopy(theObject, thePlane);
1782   endService( " GEOM_Superv_i::MirrorPlaneCopy" );
1783   return anObj;
1784 }
1785
1786 //=============================================================================
1787 //  MirrorAxis:
1788 //=============================================================================
1789 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxis (GEOM::GEOM_Object_ptr theObject, 
1790                                                  GEOM::GEOM_Object_ptr theAxis)
1791 {
1792   beginService( " GEOM_Superv_i::MirrorAxis" );
1793   MESSAGE("GEOM_Superv_i::MirrorAxis");
1794   getTransfOp();
1795   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorAxis(theObject, theAxis);
1796   endService( " GEOM_Superv_i::MirrorAxis" );
1797   return anObj;
1798 }
1799
1800 //=============================================================================
1801 //  MirrorAxisCopy:
1802 //=============================================================================
1803 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxisCopy (GEOM::GEOM_Object_ptr theObject, 
1804                                                      GEOM::GEOM_Object_ptr theAxis)
1805 {
1806   beginService( " GEOM_Superv_i::MirrorAxisCopy" );
1807   MESSAGE("GEOM_Superv_i::MirrorAxisCopy");
1808   getTransfOp();
1809   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorAxisCopy(theObject, theAxis);
1810   endService( " GEOM_Superv_i::MirrorAxisCopy" );
1811   return anObj;
1812 }
1813
1814 //=============================================================================
1815 //  MirrorPoint:
1816 //=============================================================================
1817 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPoint (GEOM::GEOM_Object_ptr theObject, 
1818                                                   GEOM::GEOM_Object_ptr thePoint)
1819 {
1820   beginService( " GEOM_Superv_i::MirrorPoint" );
1821   MESSAGE("GEOM_Superv_i::MirrorPoint");
1822   getTransfOp();
1823   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPoint(theObject, thePoint);
1824   endService( " GEOM_Superv_i::MirrorPoint" );
1825   return anObj;
1826 }
1827
1828 //=============================================================================
1829 //  MirrorPointCopy:
1830 //=============================================================================
1831 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPointCopy (GEOM::GEOM_Object_ptr theObject, 
1832                                                       GEOM::GEOM_Object_ptr thePoint)
1833 {
1834   beginService( " GEOM_Superv_i::MirrorPoint" );
1835   MESSAGE("GEOM_Superv_i::MirrorPointCopy");
1836   getTransfOp();
1837   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPointCopy(theObject, thePoint);
1838   endService( " GEOM_Superv_i::MirrorPoint" );
1839   return anObj;
1840 }
1841
1842 //=============================================================================
1843 //  OffsetShape:
1844 //=============================================================================
1845 GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShape (GEOM::GEOM_Object_ptr theObject, 
1846                                                   CORBA::Double theOffset)
1847 {
1848   beginService( " GEOM_Superv_i::OffsetShape" );
1849   MESSAGE("GEOM_Superv_i::OffsetShape");
1850   getTransfOp();
1851   GEOM::GEOM_Object_ptr anObj = myTransfOp->OffsetShape(theObject, theOffset);
1852   endService( " GEOM_Superv_i::OffsetShape" );
1853   return anObj;
1854 }
1855
1856 //=============================================================================
1857 //  OffsetShapeCopy:
1858 //=============================================================================
1859 GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShapeCopy (GEOM::GEOM_Object_ptr theObject, 
1860                                                       CORBA::Double theOffset)
1861 {
1862   beginService( " GEOM_Superv_i::OffsetShapeCopy" );
1863   MESSAGE("GEOM_Superv_i::OffsetShapeCopy");
1864   getTransfOp();
1865   GEOM::GEOM_Object_ptr anObj = myTransfOp->OffsetShapeCopy(theObject, theOffset);
1866   endService( " GEOM_Superv_i::OffsetShapeCopy" );
1867   return anObj;
1868 }
1869
1870 //=============================================================================
1871 //  ScaleShape:
1872 //=============================================================================
1873 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShape (GEOM::GEOM_Object_ptr theObject, 
1874                                                  GEOM::GEOM_Object_ptr thePoint,
1875                                                  CORBA::Double theFactor)
1876 {
1877   beginService( " GEOM_Superv_i::ScaleShape" );
1878   MESSAGE("GEOM_Superv_i::ScaleShape");
1879   getTransfOp();
1880   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShape(theObject, thePoint, theFactor);
1881   endService( " GEOM_Superv_i::ScaleShape" );
1882   return anObj;
1883 }
1884
1885 //=============================================================================
1886 //  ScaleShapeCopy:
1887 //=============================================================================
1888 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeCopy (GEOM::GEOM_Object_ptr theObject, 
1889                                                      GEOM::GEOM_Object_ptr thePoint,
1890                                                      CORBA::Double theFactor)
1891 {
1892   beginService( " GEOM_Superv_i::ScaleShapeCopy" );
1893   MESSAGE("GEOM_Superv_i::ScaleShapeCopy");
1894   getTransfOp();
1895   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeCopy(theObject, thePoint, theFactor);
1896   endService( " GEOM_Superv_i::ScaleShapeCopy" );
1897   return anObj;
1898 }
1899
1900 //=============================================================================
1901 //  ScaleShapeAlongAxes:
1902 //=============================================================================
1903 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeAlongAxes (GEOM::GEOM_Object_ptr theObject,
1904                                                           GEOM::GEOM_Object_ptr thePoint,
1905                                                           CORBA::Double theFactorX,
1906                                                           CORBA::Double theFactorY,
1907                                                           CORBA::Double theFactorZ)
1908 {
1909   beginService( " GEOM_Superv_i::ScaleShapeAlongAxes" );
1910   MESSAGE("GEOM_Superv_i::ScaleShapeAlongAxes");
1911   getTransfOp();
1912   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeAlongAxes
1913     (theObject, thePoint, theFactorX, theFactorY, theFactorZ);
1914   endService( " GEOM_Superv_i::ScaleShapeAlongAxes" );
1915   return anObj;
1916 }
1917
1918 //=============================================================================
1919 //  ScaleShapeAlongAxesCopy:
1920 //=============================================================================
1921 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeAlongAxesCopy (GEOM::GEOM_Object_ptr theObject,
1922                                                               GEOM::GEOM_Object_ptr thePoint,
1923                                                               CORBA::Double theFactorX,
1924                                                               CORBA::Double theFactorY,
1925                                                               CORBA::Double theFactorZ)
1926 {
1927   beginService( " GEOM_Superv_i::ScaleShapeAlongAxesCopy" );
1928   MESSAGE("GEOM_Superv_i::ScaleShapeAlongAxesCopy");
1929   getTransfOp();
1930   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeAlongAxesCopy
1931     (theObject, thePoint, theFactorX, theFactorY, theFactorZ);
1932   endService( " GEOM_Superv_i::ScaleShapeAlongAxesCopy" );
1933   return anObj;
1934 }
1935
1936 //=============================================================================
1937 //  PositionShape:
1938 //=============================================================================
1939 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShape (GEOM::GEOM_Object_ptr theObject,
1940                                                     GEOM::GEOM_Object_ptr theStartLCS,
1941                                                     GEOM::GEOM_Object_ptr theEndLCS)
1942 {
1943   beginService( " GEOM_Superv_i::PositionShape" );
1944   MESSAGE("GEOM_Superv_i::PositionShape");
1945   getTransfOp();
1946   GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionShape(theObject, theStartLCS, theEndLCS);
1947   endService( " GEOM_Superv_i::PositionShape" );
1948   return anObj;
1949 }
1950
1951 //=============================================================================
1952 //  PositionShapeCopy:
1953 //=============================================================================
1954 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShapeCopy (GEOM::GEOM_Object_ptr theObject,
1955                                                         GEOM::GEOM_Object_ptr theStartLCS,
1956                                                         GEOM::GEOM_Object_ptr theEndLCS)
1957 {
1958   beginService( " GEOM_Superv_i::PositionShapeCopy" );
1959   MESSAGE("GEOM_Superv_i::PositionShapeCopy");
1960   getTransfOp();
1961   GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionShapeCopy(theObject, theStartLCS, theEndLCS);
1962   endService( " GEOM_Superv_i::PositionShapeCopy" );
1963   return anObj;
1964 }
1965
1966 //=============================================================================
1967 //  PositionAlongPath:
1968 //=============================================================================
1969 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionAlongPath (GEOM::GEOM_Object_ptr theObject,
1970                                                         GEOM::GEOM_Object_ptr thePath,
1971                                                         CORBA::Double         theDistance,
1972                                                         CORBA::Boolean        theCopy,
1973                                                         CORBA::Boolean        theReverse)
1974 {
1975   beginService( " GEOM_Superv_i::PositionAlongPath" );
1976   MESSAGE("GEOM_Superv_i::PositionAlongPath");
1977   getTransfOp();
1978   GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionAlongPath(theObject, thePath, theDistance, theCopy, theReverse);
1979   endService( " GEOM_Superv_i::PositionAlongPath" );
1980   return anObj;
1981 }
1982
1983 //=============================== ShapesOperations ============================
1984 //=============================================================================
1985 //  Make:
1986 //=============================================================================
1987 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEdge (GEOM::GEOM_Object_ptr thePnt1,
1988                                                GEOM::GEOM_Object_ptr thePnt2)
1989 {
1990   beginService( " GEOM_Superv_i::MakeEdge" );
1991   MESSAGE("GEOM_Superv_i::MakeEdge");
1992   getShapesOp();
1993   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeEdge(thePnt1, thePnt2);
1994   endService( " GEOM_Superv_i::MakeEdge" );
1995   return anObj;
1996 }
1997
1998 //=============================================================================
1999 //  MakeWire:
2000 //=============================================================================
2001 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeWire (GEOM::GEOM_List_ptr theEdgesAndWires,
2002                                                CORBA::Double       theTolerance)
2003 {
2004   beginService( " GEOM_Superv_i::MakeWire" );
2005   MESSAGE("GEOM_Superv_i::MakeWire");
2006   if (GEOM_List_i<GEOM::ListOfGO>* aListImplEW = 
2007       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theEdgesAndWires, myPOA).in())) {
2008     getShapesOp();
2009     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeWire(aListImplEW->GetList(), theTolerance);
2010     endService( " GEOM_Superv_i::MakeWire" );
2011     return anObj;
2012   }
2013   endService( " GEOM_Superv_i::MakeWire" );
2014   return NULL;
2015 }
2016
2017 //=============================================================================
2018 //  MakeFace:
2019 //=============================================================================
2020 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFace (GEOM::GEOM_Object_ptr theWire,
2021                                                CORBA::Boolean isPlanarWanted)
2022 {
2023   beginService( " GEOM_Superv_i::MakeFace" );
2024   MESSAGE("GEOM_Superv_i::MakeFace");
2025   getShapesOp();
2026   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeFace(theWire, isPlanarWanted);
2027   endService( " GEOM_Superv_i::MakeFace" );
2028   return anObj;
2029 }
2030
2031 //=============================================================================
2032 //  MakeFaceWires:
2033 //=============================================================================
2034 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceWires (GEOM::GEOM_List_ptr theWires,
2035                                                     CORBA::Boolean isPlanarWanted)
2036 {
2037   beginService( " GEOM_Superv_i::MakeFaceWires" );
2038   MESSAGE("GEOM_Superv_i::MakeFaceWires");
2039   if (GEOM_List_i<GEOM::ListOfGO>* aListImplW = 
2040       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theWires, myPOA).in())) {
2041     getShapesOp();
2042     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeFaceWires(aListImplW->GetList(), isPlanarWanted);
2043     endService( " GEOM_Superv_i::MakeFaceWires" );
2044     return anObj;
2045   }
2046   endService( " GEOM_Superv_i::MakeFaceWires" );
2047   return NULL;
2048 }
2049
2050 //=============================================================================
2051 //  MakeShell:
2052 //=============================================================================
2053 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeShell (GEOM::GEOM_List_ptr theFacesAndShells)
2054 {
2055   beginService( " GEOM_Superv_i::MakeShell" );
2056   MESSAGE("GEOM_Superv_i::MakeShell");
2057   if (GEOM_List_i<GEOM::ListOfGO>* aListImplFS = 
2058       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theFacesAndShells, myPOA).in())) {
2059     getShapesOp();
2060     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeShell(aListImplFS->GetList());
2061     endService( " GEOM_Superv_i::MakeShell" );
2062     return anObj;
2063   }
2064   endService( " GEOM_Superv_i::MakeShell" );
2065   return NULL;
2066 }
2067
2068 //=============================================================================
2069 //  MakeSolidShell:
2070 //=============================================================================
2071 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShell (GEOM::GEOM_Object_ptr theShell)
2072 {
2073   beginService( " GEOM_Superv_i::MakeSolidShell" );
2074   MESSAGE("GEOM_Superv_i::MakeSolidShell");
2075   getShapesOp();
2076   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeSolidShell(theShell);
2077   endService( " GEOM_Superv_i::MakeSolidShell" );
2078   return anObj;
2079 }
2080
2081 //=============================================================================
2082 //  MakeSolidShells:
2083 //=============================================================================
2084 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShells (GEOM::GEOM_List_ptr theShells)
2085 {
2086   beginService( " GEOM_Superv_i::MakeSolidShells" );
2087   MESSAGE("GEOM_Superv_i::MakeSolidShells");
2088   if (GEOM_List_i<GEOM::ListOfGO>* aListImplS = 
2089       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShells, myPOA).in())) {
2090     getShapesOp();
2091     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeSolidShells(aListImplS->GetList());
2092     endService( " GEOM_Superv_i::MakeSolidShells" );
2093     return anObj;
2094   }
2095   endService( " GEOM_Superv_i::MakeSolidShells" );
2096   return NULL;
2097 }
2098
2099 //=============================================================================
2100 //  MakeCompound:
2101 //=============================================================================
2102 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCompound (GEOM::GEOM_List_ptr theShapes)
2103 {
2104   beginService( " GEOM_Superv_i::MakeCompound" );
2105   MESSAGE("GEOM_Superv_i::MakeCompound");
2106   if (GEOM_List_i<GEOM::ListOfGO>* aListImpl = 
2107       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShapes, myPOA).in())) {
2108     getShapesOp();
2109     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeCompound(aListImpl->GetList());
2110     endService( " GEOM_Superv_i::MakeCompound" );
2111     return anObj;
2112   }
2113   endService( " GEOM_Superv_i::MakeCompound" );
2114   return NULL;
2115 }
2116
2117 //=============================================================================
2118 //  MakeGlueFaces:
2119 //=============================================================================
2120 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFaces (GEOM::GEOM_Object_ptr theShape,
2121                                                     CORBA::Double   theTolerance,
2122                                                     CORBA::Boolean doKeepNonSolids)
2123 {
2124   beginService( " GEOM_Superv_i::MakeGlueFaces" );
2125   MESSAGE("GEOM_Superv_i::MakeGlueFaces");
2126   getShapesOp();
2127   GEOM::GEOM_Object_ptr anObj =
2128     myShapesOp->MakeGlueFaces(theShape, theTolerance, doKeepNonSolids);
2129   endService( " GEOM_Superv_i::MakeGlueFaces" );
2130   return anObj;
2131 }
2132
2133 //=============================================================================
2134 //  GetGlueFaces:
2135 //=============================================================================
2136 GEOM::GEOM_List_ptr GEOM_Superv_i::GetGlueFaces (GEOM::GEOM_Object_ptr theShape,
2137                                                  CORBA::Double theTolerance)
2138 {
2139   beginService( " GEOM_Superv_i::GetGlueFaces" );
2140   MESSAGE("GEOM_Superv_i::GetGlueFaces");
2141   getShapesOp();
2142   GEOM::ListOfGO* aList = myShapesOp->GetGlueFaces(theShape, theTolerance);
2143   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
2144   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
2145   endService( " GEOM_Superv_i::GetGlueFaces" );
2146   return aListPtr->_this();
2147 }
2148
2149 //=============================================================================
2150 //  MakeGlueFacesByList:
2151 //=============================================================================
2152 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFacesByList (GEOM::GEOM_Object_ptr theShape,
2153                                                           CORBA::Double theTolerance,
2154                                                           const GEOM::ListOfGO& theFaces,
2155                                                           CORBA::Boolean doKeepNonSolids)
2156 {
2157   beginService( " GEOM_Superv_i::MakeGlueFacesByList" );
2158   MESSAGE("GEOM_Superv_i::MakeGlueFacesByList");
2159   getShapesOp();
2160   GEOM::GEOM_Object_ptr anObj =
2161     myShapesOp->MakeGlueFacesByList(theShape, theTolerance, theFaces, doKeepNonSolids);
2162   endService( " GEOM_Superv_i::MakeGlueFacesByList" );
2163   return anObj;
2164 }
2165
2166 //=============================================================================
2167 //  MakeExplode:
2168 //=============================================================================
2169 GEOM::GEOM_List_ptr GEOM_Superv_i::MakeExplode (GEOM::GEOM_Object_ptr theShape,
2170                                                     CORBA::Long theShapeType,
2171                                                     CORBA::Boolean isSorted)
2172 {
2173   beginService( " GEOM_Superv_i::MakeExplode" );
2174   MESSAGE("GEOM_Superv_i::MakeExplode");
2175   getShapesOp();
2176
2177   GEOM::ListOfGO* aList = myShapesOp->MakeExplode(theShape, theShapeType, isSorted);
2178   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
2179   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
2180   endService( " GEOM_Superv_i::MakeExplode" );
2181   return aListPtr->_this();
2182 }
2183
2184 //=============================================================================
2185 //  NumberOfFaces:
2186 //=============================================================================
2187 CORBA::Long GEOM_Superv_i::NumberOfFaces (GEOM::GEOM_Object_ptr theShape)
2188 {
2189   beginService( " GEOM_Superv_i::NumberOfFaces" );
2190   MESSAGE("GEOM_Superv_i::NumberOfFaces");
2191   getShapesOp();
2192   CORBA::Long aRes = myShapesOp->NumberOfFaces(theShape);
2193   endService( " GEOM_Superv_i::NumberOfFaces" );
2194   return aRes;
2195 }
2196
2197 //=============================================================================
2198 //  NumberOfEdges:
2199 //=============================================================================
2200 CORBA::Long GEOM_Superv_i::NumberOfEdges (GEOM::GEOM_Object_ptr theShape)
2201 {
2202   beginService( " GEOM_Superv_i::NumberOfEdges" );
2203   MESSAGE("GEOM_Superv_i::NumberOfEdges");
2204   getShapesOp();
2205   CORBA::Long aRes = myShapesOp->NumberOfEdges(theShape);
2206   endService( " GEOM_Superv_i::NumberOfEdges" );
2207   return aRes;
2208 }
2209
2210
2211 //=============================================================================
2212 //  ChangeOrientation:
2213 //=============================================================================
2214 GEOM::GEOM_Object_ptr GEOM_Superv_i::ChangeOrientation (GEOM::GEOM_Object_ptr theShape)
2215 {
2216   beginService( " GEOM_Superv_i::ChangeOrientation" );
2217   MESSAGE("GEOM_Superv_i::ChangeOrientation");
2218   getShapesOp();
2219   GEOM::GEOM_Object_ptr anObj = myShapesOp->ChangeOrientation(theShape);
2220   endService( " GEOM_Superv_i::ChangeOrientation" );
2221   return anObj;
2222 }
2223
2224
2225 //=============================================================================
2226 //  GetShapesOnShape:
2227 //=============================================================================
2228 GEOM::GEOM_List_ptr GEOM_Superv_i::GetShapesOnShape
2229                                           (GEOM::GEOM_Object_ptr theCheckShape,
2230                                            GEOM::GEOM_Object_ptr theShape,
2231                                            CORBA::Short theShapeType,
2232                                            GEOM::shape_state theState)
2233 {
2234   beginService( " GEOM_Superv_i::GetShapesOnShape" );
2235   MESSAGE("GEOM_Superv_i::GetShapesOnShape");
2236   getShapesOp();
2237   GEOM::ListOfGO* aList =
2238     myShapesOp->GetShapesOnShape(theCheckShape, theShape, theShapeType, theState);
2239   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
2240   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
2241   endService( " GEOM_Superv_i::GetShapesOnShape" );
2242   return aListPtr->_this();
2243 }
2244
2245
2246 //=============================================================================
2247 //  GetShapesOnShapeAsCompound:
2248 //=============================================================================
2249 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetShapesOnShapeAsCompound
2250                                           (GEOM::GEOM_Object_ptr theCheckShape,
2251                                            GEOM::GEOM_Object_ptr theShape,
2252                                            CORBA::Short theShapeType,
2253                                            GEOM::shape_state theState)
2254 {
2255   beginService( " GEOM_Superv_i::GetShapesOnShapeAsCompound" );
2256   MESSAGE("GEOM_Superv_i::GetShapesOnShapeAsCompound");
2257   getShapesOp();
2258   GEOM::GEOM_Object_ptr anObj = 
2259     myShapesOp->GetShapesOnShapeAsCompound(theCheckShape, theShape, theShapeType, theState);
2260   endService( " GEOM_Superv_i::GetShapesOnShapeAsCompound" );
2261   return anObj;
2262 }
2263
2264
2265 //=============================== BlocksOperations ============================
2266 //=============================================================================
2267 //  MakeQuad4Vertices:
2268 //=============================================================================
2269 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad4Vertices (GEOM::GEOM_Object_ptr thePnt1,
2270                                                         GEOM::GEOM_Object_ptr thePnt2,
2271                                                         GEOM::GEOM_Object_ptr thePnt3,
2272                                                         GEOM::GEOM_Object_ptr thePnt4)
2273 {
2274   beginService( " GEOM_Superv_i::MakeQuad4Vertices" );
2275   MESSAGE("GEOM_Superv_i::MakeQuad4Vertices");
2276   getBlocksOp();
2277   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad4Vertices(thePnt1, thePnt2, thePnt3, thePnt4);
2278   endService( " GEOM_Superv_i::MakeQuad4Vertices" );
2279   return anObj;
2280 }
2281
2282 //=============================================================================
2283 //  MakeQuad:
2284 //=============================================================================
2285 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad (GEOM::GEOM_Object_ptr theEdge1,
2286                                                GEOM::GEOM_Object_ptr theEdge2,
2287                                                GEOM::GEOM_Object_ptr theEdge3,
2288                                                GEOM::GEOM_Object_ptr theEdge4)
2289 {
2290   beginService( " GEOM_Superv_i::MakeQuad" );
2291   MESSAGE("GEOM_Superv_i::MakeQuad");
2292   getBlocksOp();
2293   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad(theEdge1, theEdge2, theEdge3, theEdge4);
2294   endService( " GEOM_Superv_i::MakeQuad" );
2295   return anObj;
2296 }
2297
2298 //=============================================================================
2299 //  MakeQuad2Edges:
2300 //=============================================================================
2301 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad2Edges (GEOM::GEOM_Object_ptr theEdge1,
2302                                                      GEOM::GEOM_Object_ptr theEdge2)
2303 {
2304   beginService( " GEOM_Superv_i::MakeQuad2Edges" );
2305   MESSAGE("GEOM_Superv_i::MakeQuad2Edges");
2306   getBlocksOp();
2307   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad2Edges(theEdge1, theEdge2);
2308   endService( " GEOM_Superv_i::MakeQuad2Edges" );
2309   return anObj;
2310 }
2311
2312 //=============================================================================
2313 //  MakeHexa:
2314 //=============================================================================
2315 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa (GEOM::GEOM_Object_ptr theFace1,
2316                                                GEOM::GEOM_Object_ptr theFace2,
2317                                                GEOM::GEOM_Object_ptr theFace3,
2318                                                GEOM::GEOM_Object_ptr theFace4,
2319                                                GEOM::GEOM_Object_ptr theFace5,
2320                                                GEOM::GEOM_Object_ptr theFace6)
2321 {
2322   beginService( " GEOM_Superv_i::MakeHexa" );
2323   MESSAGE("GEOM_Superv_i::MakeHexa");
2324   getBlocksOp();
2325   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeHexa(theFace1, theFace2, theFace3, theFace4, theFace5, theFace6);
2326   endService( " GEOM_Superv_i::MakeHexa" );
2327   return anObj;
2328 }
2329
2330 //=============================================================================
2331 //  MakeHexa2Faces:
2332 //=============================================================================
2333 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa2Faces (GEOM::GEOM_Object_ptr theFace1,
2334                                                      GEOM::GEOM_Object_ptr theFace2)
2335 {
2336   beginService( " GEOM_Superv_i::MakeHexa2Faces" );
2337   MESSAGE("GEOM_Superv_i::MakeHexa2Faces");
2338   getBlocksOp();
2339   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeHexa2Faces(theFace1, theFace2);
2340   endService( " GEOM_Superv_i::MakeHexa2Faces" );
2341   return anObj;
2342 }
2343
2344 //=============================================================================
2345 //  GetPoint:
2346 //=============================================================================
2347 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetPoint (GEOM::GEOM_Object_ptr theShape,
2348                                                CORBA::Double   theX,
2349                                                CORBA::Double   theY,
2350                                                CORBA::Double   theZ,
2351                                                CORBA::Double   theEpsilon)
2352 {
2353   beginService( " GEOM_Superv_i::GetPoint" );
2354   MESSAGE("GEOM_Superv_i::GetPoint");
2355   getBlocksOp();
2356   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetPoint(theShape, theX, theY, theZ, theEpsilon);
2357   endService( " GEOM_Superv_i::GetPoint" );
2358   return anObj;
2359 }
2360
2361 //=============================================================================
2362 //  GetEdge:
2363 //=============================================================================
2364 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdge (GEOM::GEOM_Object_ptr theShape,
2365                                               GEOM::GEOM_Object_ptr thePoint1,
2366                                               GEOM::GEOM_Object_ptr thePoint2)
2367 {
2368   beginService( " GEOM_Superv_i::GetEdge" );
2369   MESSAGE("GEOM_Superv_i::GetEdge");
2370   getBlocksOp();
2371   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetEdge(theShape, thePoint1, thePoint2);
2372   endService( " GEOM_Superv_i::GetEdge" );
2373   return anObj;
2374 }
2375
2376 //=============================================================================
2377 //  GetEdgeNearPoint:
2378 //=============================================================================
2379 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdgeNearPoint (GEOM::GEOM_Object_ptr theShape,
2380                                                        GEOM::GEOM_Object_ptr thePoint)
2381 {
2382   beginService( " GEOM_Superv_i::GetEdgeNearPoint" );
2383   MESSAGE("GEOM_Superv_i::GetEdgeNearPoint");
2384   getBlocksOp();
2385   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetEdgeNearPoint(theShape, thePoint);
2386   endService( " GEOM_Superv_i::GetEdgeNearPoint" );
2387   return anObj;
2388 }
2389
2390 //=============================================================================
2391 //  GetFaceByPoints:
2392 //=============================================================================
2393 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByPoints (GEOM::GEOM_Object_ptr theShape,
2394                                                       GEOM::GEOM_Object_ptr thePoint1,
2395                                                       GEOM::GEOM_Object_ptr thePoint2,
2396                                                       GEOM::GEOM_Object_ptr thePoint3,
2397                                                       GEOM::GEOM_Object_ptr thePoint4)
2398 {
2399   beginService( " GEOM_Superv_i::GetFaceByPoints" );
2400   MESSAGE("GEOM_Superv_i::GetFaceByPoints");
2401   getBlocksOp();
2402   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4);
2403   endService( " GEOM_Superv_i::GetFaceByPoints" );
2404   return anObj;
2405 }
2406
2407 //=============================================================================
2408 //  GetFaceByEdges:
2409 //=============================================================================
2410 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByEdges (GEOM::GEOM_Object_ptr theShape,
2411                                                      GEOM::GEOM_Object_ptr theEdge1,
2412                                                      GEOM::GEOM_Object_ptr theEdge2)
2413 {
2414   beginService( " GEOM_Superv_i::GetFaceByEdges" );
2415   MESSAGE("GEOM_Superv_i::GetFaceByEdges");
2416   getBlocksOp();
2417   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByEdges(theShape, theEdge1, theEdge2);
2418   endService( " GEOM_Superv_i::GetFaceByEdges" );
2419   return anObj;
2420 }
2421
2422 //=============================================================================
2423 //  GetOppositeFace:
2424 //=============================================================================
2425 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetOppositeFace (GEOM::GEOM_Object_ptr theBlock,
2426                                                       GEOM::GEOM_Object_ptr theFace)
2427 {
2428   beginService( " GEOM_Superv_i::GetOppositeFace" );
2429   MESSAGE("GEOM_Superv_i::GetOppositeFace");
2430   getBlocksOp();
2431   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetOppositeFace(theBlock, theFace);
2432   endService( " GEOM_Superv_i::GetOppositeFace" );
2433   return anObj;
2434 }
2435
2436 //=============================================================================
2437 //  GetFaceNearPoint:
2438 //=============================================================================
2439 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceNearPoint (GEOM::GEOM_Object_ptr theShape,
2440                                                        GEOM::GEOM_Object_ptr thePoint)
2441 {
2442   beginService( " GEOM_Superv_i::GetFaceNearPoint" );
2443   MESSAGE("GEOM_Superv_i::GetFaceNearPoint");
2444   getBlocksOp();
2445   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceNearPoint(theShape, thePoint);
2446   endService( " GEOM_Superv_i::GetFaceNearPoint" );
2447   return anObj;
2448 }
2449
2450 //=============================================================================
2451 //  GetFaceByNormale:
2452 //=============================================================================
2453 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByNormale (GEOM::GEOM_Object_ptr theBlock,
2454                                                        GEOM::GEOM_Object_ptr theVector)
2455 {
2456   beginService( " GEOM_Superv_i::GetFaceByNormale" );
2457   MESSAGE("GEOM_Superv_i::GetFaceByNormale");
2458   getBlocksOp();
2459   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByNormale(theBlock, theVector);
2460   endService( " GEOM_Superv_i::GetFaceByNormale" );
2461   return anObj;
2462 }
2463
2464 //=============================================================================
2465 //  IsCompoundOfBlocks:
2466 //=============================================================================
2467 CORBA::Boolean GEOM_Superv_i::IsCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
2468                                                   CORBA::Long     theMinNbFaces,
2469                                                   CORBA::Long     theMaxNbFaces,
2470                                                   CORBA::Long&          theNbBlocks)
2471 {
2472   beginService( " GEOM_Superv_i::IsCompoundOfBlocks" );
2473   MESSAGE("GEOM_Superv_i::IsCompoundOfBlocks");
2474   getBlocksOp();
2475   CORBA::Boolean aRes = myBlocksOp->IsCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces, theNbBlocks);
2476   endService( " GEOM_Superv_i::IsCompoundOfBlocks" );
2477   return aRes;
2478 }
2479
2480 //=============================================================================
2481 //  CheckCompoundOfBlocks:
2482 //=============================================================================
2483 CORBA::Boolean GEOM_Superv_i::CheckCompoundOfBlocks 
2484 (GEOM::GEOM_Object_ptr theCompound,
2485  GEOM::GEOM_IBlocksOperations::BCErrors_out theErrors)
2486 {
2487   beginService( " GEOM_Superv_i::CheckCompoundOfBlocks" );
2488   MESSAGE("GEOM_Superv_i::CheckCompoundOfBlocks");
2489   getBlocksOp();
2490   CORBA::Boolean aRes = myBlocksOp->CheckCompoundOfBlocks(theCompound, theErrors);
2491   endService( " GEOM_Superv_i::CheckCompoundOfBlocks" );
2492   return aRes;
2493 }
2494
2495 //=============================================================================
2496 //  PrintBCErrors:
2497 //=============================================================================
2498 char* GEOM_Superv_i::PrintBCErrors (GEOM::GEOM_Object_ptr theCompound,
2499                                     const GEOM::GEOM_IBlocksOperations::BCErrors& theErrors)
2500 {
2501   beginService( " GEOM_Superv_i::PrintBCErrors" );
2502   MESSAGE("GEOM_Superv_i::PrintBCErrors");
2503   getBlocksOp();
2504   char* anErrors = myBlocksOp->PrintBCErrors(theCompound, theErrors);
2505   endService( " GEOM_Superv_i::PrintBCErrors" );
2506   return anErrors;
2507 }
2508
2509 //=============================================================================
2510 //  ExplodeCompoundOfBlocks:
2511 //=============================================================================
2512 GEOM::GEOM_List_ptr GEOM_Superv_i::ExplodeCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
2513                                                                 CORBA::Long     theMinNbFaces,
2514                                                                 CORBA::Long     theMaxNbFaces)
2515 {
2516   beginService( " GEOM_Superv_i::ExplodeCompoundOfBlocks" );
2517   MESSAGE("GEOM_Superv_i::ExplodeCompoundOfBlocks");
2518   getBlocksOp();
2519   GEOM::ListOfGO* aBlocks = myBlocksOp->ExplodeCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces);
2520   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aBlocks));
2521   endService( " GEOM_Superv_i::ExplodeCompoundOfBlocks" );
2522   return aListPtr->_this();
2523 }
2524
2525 //=============================================================================
2526 //  GetBlockNearPoint:
2527 //=============================================================================
2528 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockNearPoint (GEOM::GEOM_Object_ptr theCompound,
2529                                                         GEOM::GEOM_Object_ptr thePoint)
2530 {
2531   beginService( " GEOM_Superv_i::GetBlockNearPoint" );
2532   MESSAGE("GEOM_Superv_i::GetBlockNearPoint");
2533   getBlocksOp();
2534   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetBlockNearPoint(theCompound, thePoint);
2535   endService( " GEOM_Superv_i::GetBlockNearPoint" );
2536   return anObj;
2537 }
2538
2539 //=============================================================================
2540 //  GetBlockByParts:
2541 //=============================================================================
2542 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockByParts (GEOM::GEOM_Object_ptr theCompound,
2543                                                       GEOM::GEOM_List_ptr theParts)
2544 {
2545   beginService( " GEOM_Superv_i::GetBlockByParts" );
2546   MESSAGE("GEOM_Superv_i::GetBlockByParts");
2547   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2548       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theParts, myPOA).in())) {
2549     getBlocksOp();
2550     GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetBlockByParts(theCompound, aListImplP->GetList());
2551     endService( " GEOM_Superv_i::GetBlockByParts" );
2552     return anObj;
2553   }
2554   endService( " GEOM_Superv_i::GetBlockByParts" );
2555   return NULL;
2556 }
2557
2558 //=============================================================================
2559 //  GetBlocksByParts:
2560 //=============================================================================
2561 GEOM::GEOM_List_ptr GEOM_Superv_i::GetBlocksByParts (GEOM::GEOM_Object_ptr theCompound,
2562                                                          GEOM::GEOM_List_ptr theParts)
2563 {
2564   beginService( " GEOM_Superv_i::GetBlocksByParts" );
2565   MESSAGE("GEOM_Superv_i::GetBlocksByParts");
2566   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2567       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theParts, myPOA).in())) {
2568     getBlocksOp();
2569     
2570     GEOM::ListOfGO* aBlocks = myBlocksOp->GetBlocksByParts(theCompound, aListImplP->GetList());
2571     GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aBlocks));
2572     endService( " GEOM_Superv_i::GetBlocksByParts" );
2573     return aListPtr->_this();
2574   }
2575   endService( " GEOM_Superv_i::GetBlocksByParts" );
2576   return NULL;
2577 }
2578
2579 //=============================================================================
2580 //  MakeMultiTransformation1D:
2581 //=============================================================================
2582 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMultiTransformation1D (GEOM::GEOM_Object_ptr theBlock,
2583                                                                 CORBA::Long     theDirFace1,
2584                                                                 CORBA::Long     theDirFace2,
2585                                                                 CORBA::Long     theNbTimes)
2586 {
2587   beginService( " GEOM_Superv_i::MakeMultiTransformation1D" );
2588   MESSAGE("GEOM_Superv_i::MakeMultiTransformation1D");
2589   getBlocksOp();
2590   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeMultiTransformation1D(theBlock, theDirFace1, theDirFace2, theNbTimes);
2591   endService( " GEOM_Superv_i::MakeMultiTransformation1D" );
2592   return anObj;
2593 }
2594
2595 //=============================================================================
2596 //  MakeMultiTransformation2D:
2597 //=============================================================================
2598 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMultiTransformation2D 
2599 (GEOM::GEOM_Object_ptr theBlock,
2600  CORBA::Long     theDirFace1U,
2601  CORBA::Long     theDirFace2U,
2602  CORBA::Long     theNbTimesU,
2603  CORBA::Long     theDirFace1V,
2604  CORBA::Long     theDirFace2V,
2605  CORBA::Long     theNbTimesV)
2606 {
2607   beginService( " GEOM_Superv_i::MakeMultiTransformation2D" );
2608   MESSAGE("GEOM_Superv_i::MakeMultiTransformation2D");
2609   getBlocksOp();
2610   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeMultiTransformation2D(theBlock, 
2611                                                                       theDirFace1U, theDirFace2U, theNbTimesU,
2612                                                                       theDirFace1V, theDirFace2V, theNbTimesV);
2613   endService( " GEOM_Superv_i::MakeMultiTransformation2D" );
2614   return anObj;
2615 }
2616
2617 //=============================== CurvesOperations ============================
2618 //=============================================================================
2619 //  MakeCirclePntVecR:
2620 //=============================================================================
2621 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCirclePntVecR (GEOM::GEOM_Object_ptr theCenter,
2622                                                         GEOM::GEOM_Object_ptr theVector,
2623                                                         CORBA::Double theR)
2624 {
2625   beginService( " GEOM_Superv_i::MakeCirclePntVecR" );
2626   MESSAGE("GEOM_Superv_i::MakeCirclePntVecR");
2627   getCurvesOp();
2628   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCirclePntVecR(theCenter, theVector, theR);
2629   endService( " GEOM_Superv_i::MakeCirclePntVecR" );
2630   return anObj;
2631 }
2632
2633 //=============================================================================
2634 //  MakeCircleThreePnt:
2635 //=============================================================================
2636 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCircleThreePnt (GEOM::GEOM_Object_ptr thePnt1,
2637                                                          GEOM::GEOM_Object_ptr thePnt2,
2638                                                          GEOM::GEOM_Object_ptr thePnt3)
2639 {
2640   beginService( " GEOM_Superv_i::MakeCircleThreePnt" );
2641   MESSAGE("GEOM_Superv_i::MakeCircleThreePnt");
2642   getCurvesOp();
2643   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCircleThreePnt(thePnt1, thePnt2, thePnt3);
2644   endService( " GEOM_Superv_i::MakeCircleThreePnt" );
2645   return anObj;
2646 }
2647 //=============================================================================
2648 //  MakeCircleCenter2Pnt:
2649 //=============================================================================
2650 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCircleCenter2Pnt (GEOM::GEOM_Object_ptr thePnt1,
2651                                                            GEOM::GEOM_Object_ptr thePnt2,
2652                                                            GEOM::GEOM_Object_ptr thePnt3)
2653 {
2654   beginService( " GEOM_Superv_i::MakeCircleCenter2Pnt" );
2655   MESSAGE("GEOM_Superv_i::MakeCircleCenter2Pnt");
2656   getCurvesOp();
2657   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCircleCenter2Pnt(thePnt1, thePnt2, thePnt3);
2658   endService( " GEOM_Superv_i::MakeCircleCenter2Pnt" );
2659   return anObj;
2660 }
2661
2662 //=============================================================================
2663 //  MakeEllipse:
2664 //=============================================================================
2665 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEllipse (GEOM::GEOM_Object_ptr theCenter,
2666                                                   GEOM::GEOM_Object_ptr theVector,
2667                                                   CORBA::Double theRMajor, 
2668                                                   CORBA::Double theRMinor)
2669 {
2670   beginService( " GEOM_Superv_i::MakeEllipse" );
2671   MESSAGE("GEOM_Superv_i::MakeEllipse");
2672   getCurvesOp();
2673   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeEllipse(theCenter, theVector, theRMajor, theRMinor);
2674   endService( " GEOM_Superv_i::MakeEllipse" );
2675   return anObj;
2676 }
2677
2678 //=============================================================================
2679 //  MakeEllipseVec:
2680 //=============================================================================
2681 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEllipseVec (GEOM::GEOM_Object_ptr theCenter,
2682                                                      GEOM::GEOM_Object_ptr theVector,
2683                                                      CORBA::Double theRMajor, 
2684                                                      CORBA::Double theRMinor,
2685                                                      GEOM::GEOM_Object_ptr theVectorMajor)
2686 {
2687   beginService( " GEOM_Superv_i::MakeEllipseVec" );
2688   MESSAGE("GEOM_Superv_i::MakeEllipseVec");
2689   getCurvesOp();
2690   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeEllipseVec(theCenter, theVector, theRMajor, theRMinor, theVectorMajor);
2691   endService( " GEOM_Superv_i::MakeEllipseVec" );
2692   return anObj;
2693 }
2694
2695 //=============================================================================
2696 //  MakeArc:
2697 //=============================================================================
2698 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArc (GEOM::GEOM_Object_ptr thePnt1,
2699                                               GEOM::GEOM_Object_ptr thePnt2,
2700                                               GEOM::GEOM_Object_ptr thePnt3)
2701 {
2702   beginService( " GEOM_Superv_i::MakeArc" );
2703   MESSAGE("GEOM_Superv_i::MakeArc");
2704   getCurvesOp();
2705   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArc(thePnt1, thePnt2, thePnt3);
2706   endService( " GEOM_Superv_i::MakeArc" );
2707   return anObj;
2708 }
2709
2710 //=============================================================================
2711 //  MakeArcCenter:
2712 //=============================================================================
2713 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArcCenter (GEOM::GEOM_Object_ptr theCenter,
2714                                                     GEOM::GEOM_Object_ptr thePnt1,
2715                                                     GEOM::GEOM_Object_ptr thePnt2,
2716                                                     CORBA::Boolean theSense)
2717 {
2718   beginService( " GEOM_Superv_i::MakeArcCenter" );
2719   MESSAGE("GEOM_Superv_i::MakeArcCenter");
2720   getCurvesOp();
2721   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArcCenter(theCenter, thePnt1, thePnt2,theSense);
2722   endService( " GEOM_Superv_i::MakeArcCenter" );
2723   return anObj;
2724 }
2725
2726 //=============================================================================
2727 //  MakeArcOfEllipse:
2728 //=============================================================================
2729 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArcOfEllipse (GEOM::GEOM_Object_ptr thePnt1,
2730                                                        GEOM::GEOM_Object_ptr thePnt2,
2731                                                        GEOM::GEOM_Object_ptr thePnt3)
2732 {
2733   beginService( " GEOM_Superv_i::MakeArcOfEllipse" );
2734   MESSAGE("GEOM_Superv_i::MakeArcOfEllipse");
2735   getCurvesOp();
2736   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArcOfEllipse(thePnt1, thePnt2, thePnt3);
2737   endService( " GEOM_Superv_i::MakeArcOfEllipse" );
2738   return anObj;
2739 }
2740
2741 //=============================================================================
2742 //  MakePolyline:
2743 //=============================================================================
2744 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePolyline (GEOM::GEOM_List_ptr thePoints)
2745 {
2746   beginService( " GEOM_Superv_i::MakePolyline" );
2747   MESSAGE("GEOM_Superv_i::MakePolyline");
2748   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2749       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
2750     getCurvesOp();
2751     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakePolyline(aListImplP->GetList());
2752     endService( " GEOM_Superv_i::MakePolyline" );
2753     return anObj;
2754   }
2755   endService( " GEOM_Superv_i::MakePolyline" );
2756   return NULL;
2757 }
2758
2759 //=============================================================================
2760 //  MakeSplineBezier:
2761 //=============================================================================
2762 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineBezier (GEOM::GEOM_List_ptr thePoints)
2763 {
2764   beginService( " GEOM_Superv_i::MakeSplineBezier" );
2765   MESSAGE("GEOM_Superv_i::MakeSplineBezier");
2766   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2767       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
2768     getCurvesOp();
2769     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSplineBezier(aListImplP->GetList());
2770     endService( " GEOM_Superv_i::MakeSplineBezier" );
2771     return anObj;
2772   }
2773   endService( " GEOM_Superv_i::MakeSplineBezier" );
2774   return NULL;
2775 }
2776
2777 //=============================================================================
2778 //  MakeSplineInterpolation:
2779 //=============================================================================
2780 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineInterpolation (GEOM::GEOM_List_ptr thePoints,
2781                                                               CORBA::Boolean      theIsClosed)
2782 {
2783   beginService( " GEOM_Superv_i::MakeSplineInterpolation" );
2784   MESSAGE("GEOM_Superv_i::MakeSplineInterpolation");
2785   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP = 
2786       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
2787     getCurvesOp();
2788     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSplineInterpolation(aListImplP->GetList(), theIsClosed);
2789     endService( " GEOM_Superv_i::MakeSplineInterpolation" );
2790     return anObj;
2791   }
2792   endService( " GEOM_Superv_i::MakeSplineInterpolation" );
2793   return NULL;
2794 }
2795
2796 //=============================================================================
2797 //  MakeSketcher:
2798 //=============================================================================
2799 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSketcher (const char* theCommand, 
2800                                                    GEOM::GEOM_List_ptr theWorkingPlane)
2801 {
2802   beginService( " GEOM_Superv_i::MakeSketcher" );
2803   MESSAGE("GEOM_Superv_i::MakeSketcher");
2804   if (GEOM_List_i<GEOM::ListOfDouble>* aListImplWP = 
2805       dynamic_cast<GEOM_List_i<GEOM::ListOfDouble>*>(GetServant(theWorkingPlane, myPOA).in())) {
2806     getCurvesOp();
2807     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSketcher(theCommand, aListImplWP->GetList());
2808     endService( " GEOM_Superv_i::MakeSketcher" );
2809     return anObj;
2810   }
2811   endService( " GEOM_Superv_i::MakeSketcher" );
2812   return NULL;
2813 }
2814
2815 //=============================================================================
2816 //  Make3DSketcher:
2817 //=============================================================================
2818 GEOM::GEOM_Object_ptr GEOM_Superv_i::Make3DSketcher ( GEOM::GEOM_List_ptr theCoordinates)
2819 {
2820   beginService( " GEOM_Superv_i::Make3DSketcher" );
2821   MESSAGE("GEOM_Superv_i::Make3DSketcher");
2822   if (GEOM_List_i<GEOM::ListOfDouble>* aListImpl = 
2823       dynamic_cast<GEOM_List_i<GEOM::ListOfDouble>*>(GetServant(theCoordinates, myPOA).in())) {
2824     getCurvesOp();
2825     GEOM::GEOM_Object_ptr anObj = myCurvesOp->Make3DSketcher(aListImpl->GetList());
2826     endService( " GEOM_Superv_i::Make3DSketcher" );
2827     return anObj;
2828   }
2829   endService( " GEOM_Superv_i::Make3DSketcher" );
2830   return NULL;
2831 }
2832
2833 //=============================== LocalOperations =============================
2834 //=============================================================================
2835 //  MakeFilletAll:
2836 //=============================================================================
2837 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletAll (GEOM::GEOM_Object_ptr theShape,
2838                                                     CORBA::Double theR)
2839 {
2840   beginService( " GEOM_Superv_i::MakeFilletAll" );
2841   MESSAGE("GEOM_Superv_i::MakeFilletAllMakeSketcher");
2842   getLocalOp();
2843   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletAll(theShape, theR);
2844   endService( " GEOM_Superv_i::MakeFilletAll" );
2845   return anObj;
2846 }
2847
2848 //=============================================================================
2849 //  MakeFilletEdges:
2850 //=============================================================================
2851 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletEdges (GEOM::GEOM_Object_ptr theShape, 
2852                                                       CORBA::Double theR,
2853                                                       GEOM::GEOM_List_ptr theEdges)
2854 {
2855   beginService( " GEOM_Superv_i::MakeFilletEdges" );
2856   MESSAGE("GEOM_Superv_i::MakeFilletEdges");
2857   if (GEOM_List_i<GEOM::ListOfLong>* aListImplE = 
2858       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
2859     getLocalOp();
2860     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletEdges(theShape, theR, aListImplE->GetList());
2861     endService( " GEOM_Superv_i::MakeFilletEdges" );
2862     return anObj;
2863   }
2864   endService( " GEOM_Superv_i::MakeFilletEdges" );
2865   return NULL;
2866 }
2867
2868 //=============================================================================
2869 //  MakeFilletEdges R1 R2:
2870 //=============================================================================
2871 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletEdgesR1R2 (GEOM::GEOM_Object_ptr theShape, 
2872                                                           CORBA::Double theR1,
2873                                                           CORBA::Double theR2,
2874                                                           GEOM::GEOM_List_ptr theEdges)
2875 {
2876   beginService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
2877   MESSAGE("GEOM_Superv_i::MakeFilletEdgesR1R2");
2878   if (GEOM_List_i<GEOM::ListOfLong>* aListImplE = 
2879       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
2880     getLocalOp();
2881     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletEdgesR1R2(theShape, theR1,
2882                                                                  theR2, aListImplE->GetList());
2883     endService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
2884     return anObj;
2885   }
2886   endService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
2887   return NULL;
2888 }
2889
2890 //=============================================================================
2891 //  MakeFilletFaces:
2892 //=============================================================================
2893 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletFaces (GEOM::GEOM_Object_ptr theShape, 
2894                                                       CORBA::Double theR,
2895                                                       GEOM::GEOM_List_ptr theFaces)
2896 {
2897   beginService( " GEOM_Superv_i::MakeFilletFaces" );
2898   MESSAGE("GEOM_Superv_i::MakeFilletFaces");
2899   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
2900       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
2901     getLocalOp();
2902     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletFaces(theShape, theR, aListImplF->GetList());
2903     endService( " GEOM_Superv_i::MakeFilletFaces" );
2904     return anObj;
2905   }
2906   endService( " GEOM_Superv_i::MakeFilletFaces" );
2907   return NULL;
2908 }
2909
2910 //=============================================================================
2911 //  MakeFilletFaces R1 R2:
2912 //=============================================================================
2913 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletFacesR1R2 (GEOM::GEOM_Object_ptr theShape, 
2914                                                           CORBA::Double theR1,
2915                                                           CORBA::Double theR2,
2916                                                           GEOM::GEOM_List_ptr theFaces)
2917 {
2918   beginService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
2919   MESSAGE("GEOM_Superv_i::MakeFilletFacesR1R2");
2920   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
2921       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
2922     getLocalOp();
2923     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletFacesR1R2(theShape, theR1, theR2,
2924                                                                  aListImplF->GetList());
2925     endService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
2926     return anObj;
2927   }
2928   endService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
2929   return NULL;
2930 }
2931
2932 //=============================================================================
2933 //  MakeFillet2D:
2934 //=============================================================================
2935 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFillet2D (GEOM::GEOM_Object_ptr theShape, 
2936                                                    CORBA::Double theR,
2937                                                    GEOM::GEOM_List_ptr theVertexes)
2938 {
2939   beginService( " GEOM_Superv_i::MakeFillet2D" );
2940   MESSAGE("GEOM_Superv_i::MakeFillet2D");
2941   if (GEOM_List_i<GEOM::ListOfLong>* aListImplV = 
2942       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theVertexes, myPOA).in())) {
2943     getLocalOp();
2944     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFillet2D(theShape, theR, aListImplV->GetList());
2945     endService( " GEOM_Superv_i::MakeFillet2D" );
2946     return anObj;
2947   }
2948   endService( " GEOM_Superv_i::MakeFillet2D" );
2949   return NULL;
2950 }
2951
2952 //=============================================================================
2953 //  MakeFillet1D:
2954 //=============================================================================
2955 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFillet1D (GEOM::GEOM_Object_ptr theShape, 
2956                                                    CORBA::Double theR,
2957                                                    GEOM::GEOM_List_ptr theVertexes)
2958 {
2959   beginService( " GEOM_Superv_i::MakeFillet1D" );
2960   MESSAGE("GEOM_Superv_i::MakeFillet1D");
2961   if (GEOM_List_i<GEOM::ListOfLong>* aListImplV = 
2962       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theVertexes, myPOA).in())) {
2963     getLocalOp();
2964     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFillet1D(theShape, theR, aListImplV->GetList());
2965     endService( " GEOM_Superv_i::MakeFillet1D" );
2966     return anObj;
2967   }
2968   endService( " GEOM_Superv_i::MakeFillet1D" );
2969   return NULL;
2970 }
2971
2972 //=============================================================================
2973 //  MakeChamferAll:
2974 //=============================================================================
2975 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferAll (GEOM::GEOM_Object_ptr theShape, CORBA::Double theD)
2976 {
2977   beginService( " GEOM_Superv_i::MakeChamferAll" );
2978   MESSAGE("GEOM_Superv_i::MakeChamferAll");
2979   getLocalOp();
2980   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferAll(theShape, theD);
2981   endService( " GEOM_Superv_i::MakeChamferAll" );
2982   return anObj;
2983 }
2984   
2985 //=============================================================================
2986 //  MakeChamferEdge:
2987 //=============================================================================
2988 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdge (GEOM::GEOM_Object_ptr theShape,
2989                                                       CORBA::Double theD1, CORBA::Double theD2,
2990                                                       CORBA::Long theFace1, CORBA::Long theFace2)
2991 {
2992   beginService( " GEOM_Superv_i::MakeChamferEdge" );
2993   MESSAGE("GEOM_Superv_i::MakeChamferEdge");
2994   getLocalOp();
2995   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2);
2996   endService( " GEOM_Superv_i::MakeChamferEdge" );
2997   return anObj;
2998 }
2999
3000 //=============================================================================
3001 //  MakeChamferEdgeAD:
3002 //=============================================================================
3003 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdgeAD (GEOM::GEOM_Object_ptr theShape,
3004                                                         CORBA::Double theD, CORBA::Double theAngle,
3005                                                         CORBA::Long theFace1, CORBA::Long theFace2)
3006 {
3007   beginService( " GEOM_Superv_i::MakeChamferEdgeAD" );
3008   MESSAGE("GEOM_Superv_i::MakeChamferEdgeAD");
3009   getLocalOp();
3010   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdgeAD(theShape, theD, theAngle, theFace1, theFace2);
3011   endService( " GEOM_Superv_i::MakeChamferEdgeAD" );
3012   return anObj;
3013 }
3014
3015 //=============================================================================
3016 //  MakeChamferFaces:
3017 //=============================================================================
3018 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferFaces (GEOM::GEOM_Object_ptr theShape,
3019                                                        CORBA::Double theD1, CORBA::Double theD2,
3020                                                        GEOM::GEOM_List_ptr theFaces)
3021 {
3022   beginService( " GEOM_Superv_i::MakeChamferFaces" );
3023   MESSAGE("GEOM_Superv_i::MakeChamferFaces");
3024   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
3025       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
3026     getLocalOp();
3027     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferFaces(theShape, theD1, theD2, aListImplF->GetList());
3028     endService( " GEOM_Superv_i::MakeChamferFaces" );
3029     return anObj;
3030   }
3031   endService( " GEOM_Superv_i::MakeChamferFaces" );
3032   return NULL;
3033 }
3034
3035 //=============================================================================
3036 //  MakeChamferFacesAD:
3037 //=============================================================================
3038 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferFacesAD (GEOM::GEOM_Object_ptr theShape,
3039                                                          CORBA::Double theD, CORBA::Double theAngle,
3040                                                          GEOM::GEOM_List_ptr theFaces)
3041 {
3042   beginService( " GEOM_Superv_i::MakeChamferFacesAD" );
3043   MESSAGE("GEOM_Superv_i::MakeChamferFacesAD");
3044   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
3045       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
3046     getLocalOp();
3047     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferFacesAD(theShape, theD, theAngle, aListImplF->GetList());
3048     endService( " GEOM_Superv_i::MakeChamferFacesAD" );
3049     return anObj;
3050   }
3051   endService( " GEOM_Superv_i::MakeChamferFacesAD" );
3052   return NULL;
3053 }
3054
3055 //=============================================================================
3056 //  MakeChamferEdges:
3057 //=============================================================================
3058 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdges (GEOM::GEOM_Object_ptr theShape,
3059                                                        CORBA::Double theD1, CORBA::Double theD2,
3060                                                        GEOM::GEOM_List_ptr theEdges)
3061 {
3062   beginService( " GEOM_Superv_i::MakeChamferEdges" );
3063   MESSAGE("GEOM_Superv_i::MakeChamferEdges");
3064   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
3065       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
3066     getLocalOp();
3067     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdges(theShape, theD1, theD2, aListImplF->GetList());
3068     endService( " GEOM_Superv_i::MakeChamferEdges" );
3069     return anObj;
3070   }
3071   endService( " GEOM_Superv_i::MakeChamferEdges" );
3072   return NULL;
3073 }
3074
3075 //=============================================================================
3076 //  MakeChamferEdgesAD:
3077 //=============================================================================
3078 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdgesAD (GEOM::GEOM_Object_ptr theShape,
3079                                                          CORBA::Double theD, CORBA::Double theAngle,
3080                                                          GEOM::GEOM_List_ptr theEdges)
3081 {
3082   beginService( " GEOM_Superv_i::MakeChamferEdgesAD" );
3083   MESSAGE("GEOM_Superv_i::MakeChamferEdgesAD");
3084   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF = 
3085       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
3086     getLocalOp();
3087     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdgesAD(theShape, theD, theAngle, aListImplF->GetList());
3088     endService( " GEOM_Superv_i::MakeChamferEdgesAD" );
3089     return anObj;
3090   }
3091   endService( " GEOM_Superv_i::MakeChamferEdgesAD" );
3092   return NULL;
3093 }
3094
3095 //=============================================================================
3096 //  MakeArchimede:
3097 //=============================================================================
3098 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArchimede (GEOM::GEOM_Object_ptr theShape,
3099                                                     CORBA::Double theWeight,
3100                                                     CORBA::Double theWaterDensity,
3101                                                     CORBA::Double theMeshingDeflection)
3102 {
3103   beginService( " GEOM_Superv_i::MakeArchimede" );
3104   MESSAGE("GEOM_Superv_i::MakeArchimede");
3105   getLocalOp();
3106   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeArchimede(theShape, theWeight, theWaterDensity, theMeshingDeflection);
3107   endService( " GEOM_Superv_i::MakeArchimede" );
3108   return anObj;
3109 }
3110
3111 //=============================================================================
3112 //  GetSubShapeIndexMakeFilletAll:
3113 //=============================================================================
3114 CORBA::Long GEOM_Superv_i::GetSubShapeIndex (GEOM::GEOM_Object_ptr theShape,
3115                                              GEOM::GEOM_Object_ptr theSubShape)
3116 {
3117   beginService( " GEOM_Superv_i::GetSubShapeIndex" );
3118   MESSAGE("GEOM_Superv_i::GetSubShapeIndexMakeArchimede");
3119   getLocalOp();
3120   CORBA::Long aRes = myLocalOp->GetSubShapeIndex(theShape, theSubShape);
3121   endService( " GEOM_Superv_i::GetSubShapeIndex" );
3122   return aRes;
3123 }
3124
3125 //=============================== GroupOperations =============================
3126 //=============================================================================
3127 //  CreateGroup:
3128 //=============================================================================
3129 GEOM::GEOM_Object_ptr GEOM_Superv_i::CreateGroup (GEOM::GEOM_Object_ptr theMainShape, 
3130                                                   CORBA::Long theShapeType)
3131 {
3132   beginService( " GEOM_Superv_i::CreateGroup" );
3133   MESSAGE("GEOM_Superv_i::CreateGroup");
3134   getGroupOp();
3135   GEOM::GEOM_Object_ptr anObj = myGroupOp->CreateGroup(theMainShape, theShapeType);
3136   endService( " GEOM_Superv_i::CreateGroup" );
3137   return anObj;
3138 }
3139
3140 //=============================================================================
3141 //  AddObject:
3142 //=============================================================================
3143 void GEOM_Superv_i::AddObject (GEOM::GEOM_Object_ptr theGroup, 
3144                                CORBA::Long theSubShapeId)
3145 {
3146   beginService( " GEOM_Superv_i::AddObject" );
3147   MESSAGE("GEOM_Superv_i::AddObject");
3148   getGroupOp();
3149   myGroupOp->AddObject(theGroup, theSubShapeId);
3150   endService( " GEOM_Superv_i::AddObject" );
3151 }
3152
3153 //=============================================================================
3154 //  RemoveObject:
3155 //=============================================================================
3156 void GEOM_Superv_i::RemoveObject (GEOM::GEOM_Object_ptr theGroup, 
3157                                   CORBA::Long theSubShapeId)
3158 {
3159   beginService( " GEOM_Superv_i::RemoveObject" );
3160   MESSAGE("GEOM_Superv_i::RemoveObject");
3161   getGroupOp();
3162   myGroupOp->RemoveObject(theGroup, theSubShapeId);
3163   endService( " GEOM_Superv_i::RemoveObject" );
3164 }
3165
3166 //=============================================================================
3167 //  GetType:
3168 //=============================================================================
3169 CORBA::Long GEOM_Superv_i::GetType (GEOM::GEOM_Object_ptr theGroup)
3170 {
3171   beginService( " GEOM_Superv_i::GetType" );
3172   MESSAGE("GEOM_Superv_i::GetType");
3173   getGroupOp();
3174   CORBA::Long aResult = myGroupOp->GetType(theGroup);
3175   endService( " GEOM_Superv_i::GetType" );
3176   return aResult;
3177 }
3178
3179 //=============================================================================
3180 //  GetMainShape:
3181 //=============================================================================
3182 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetMainShape (GEOM::GEOM_Object_ptr theGroup)
3183 {
3184   beginService( " GEOM_Superv_i::GetMainShape" );
3185   MESSAGE("GEOM_Superv_i::GetMainShape");
3186   getGroupOp();
3187   GEOM::GEOM_Object_ptr anObj = myGroupOp->GetMainShape(theGroup);
3188   endService( " GEOM_Superv_i::GetMainShape" );
3189   return anObj;
3190 }
3191
3192 //=============================================================================
3193 //  GetObjects:
3194 //=============================================================================
3195 GEOM::GEOM_List_ptr GEOM_Superv_i::GetObjects (GEOM::GEOM_Object_ptr theGroup)
3196 {
3197   beginService( " GEOM_Superv_i::GetObjects" );
3198   MESSAGE("GEOM_Superv_i::GetObjects");
3199   getGroupOp();
3200
3201   GEOM::ListOfLong* aList = myGroupOp->GetObjects(theGroup);
3202   GEOM_List_i<GEOM::ListOfLong>* aListPtr = new GEOM_List_i<GEOM::ListOfLong>(*(aList));
3203   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
3204   endService( " GEOM_Superv_i::GetObjects" );
3205   return aListPtr->_this();
3206 }
3207
3208 //=============================== Advanced Operations =============================
3209 //=============================================================================
3210 //  MakePipeTShape
3211 //=============================================================================
3212 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShape (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1, 
3213                                   CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2, CORBA::Boolean theHexMesh)
3214 {
3215   beginService( " GEOM_Superv_i::MakePipeTShape" );
3216   MESSAGE("GEOM_Superv_i::MakePipeTShape");
3217   getAdvancedOp();
3218
3219   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShape(theR1, theW1, theL1, theR2, theW2, theL2, theHexMesh);
3220   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3221   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3222   endService( " GEOM_Superv_i::MakePipeTShape" );
3223   return aSeqPtr->_this();
3224 }
3225
3226 //=============================================================================
3227 //  MakePipeTShapeWithPosition
3228 //=============================================================================
3229 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeWithPosition (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1, 
3230                                   CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2, CORBA::Boolean theHexMesh,
3231                                           GEOM::GEOM_Object_ptr theP1, GEOM::GEOM_Object_ptr theP2, GEOM::GEOM_Object_ptr theP3)
3232 {
3233   beginService( " GEOM_Superv_i::MakePipeTShapeWithPosition" );
3234   MESSAGE("GEOM_Superv_i::MakePipeTShapeWithPosition");
3235   getAdvancedOp();
3236
3237   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeWithPosition(theR1, theW1, theL1, theR2, theW2, theL2, theHexMesh, theP1, theP2, theP3);
3238   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3239   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3240   endService( " GEOM_Superv_i::MakePipeTShapeWithPosition" );
3241   return aSeqPtr->_this();
3242 }
3243
3244 //=============================================================================
3245 //  MakePipeTShapeChamfer
3246 //=============================================================================
3247 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeChamfer (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1, 
3248                                   CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
3249                                     CORBA::Double theH, CORBA::Double theW, CORBA::Boolean theHexMesh)
3250 {
3251   beginService( " GEOM_Superv_i::MakePipeTShapeChamfer" );
3252   MESSAGE("GEOM_Superv_i::MakePipeTShapeChamfer");
3253   getAdvancedOp();
3254
3255   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeChamfer(theR1, theW1, theL1, theR2, theW2, theL2, theH, theW, theHexMesh);
3256   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3257   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3258   endService( " GEOM_Superv_i::MakePipeTShapeChamfer" );
3259   return aSeqPtr->_this();
3260 }
3261
3262 //=============================================================================
3263 //  MakePipeTShapeChamferWithPosition
3264 //=============================================================================
3265 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeChamferWithPosition (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1, 
3266                                   CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2, 
3267                                              CORBA::Double theH, CORBA::Double theW, CORBA::Boolean theHexMesh,
3268                                           GEOM::GEOM_Object_ptr theP1, GEOM::GEOM_Object_ptr theP2, GEOM::GEOM_Object_ptr theP3)
3269 {
3270   beginService( " GEOM_Superv_i::MakePipeTShapeChamferWithPosition" );
3271   MESSAGE("GEOM_Superv_i::MakePipeTShapeChamferWithPosition");
3272   getAdvancedOp();
3273
3274   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeChamferWithPosition(theR1, theW1, theL1, theR2, theW2, theL2, theH, theW, theHexMesh, theP1, theP2, theP3);
3275   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3276   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3277   endService( " GEOM_Superv_i::MakePipeTShapeChamferWithPosition" );
3278   return aSeqPtr->_this();
3279 }
3280
3281 //=============================================================================
3282 //  MakePipeTShapeFillet
3283 //=============================================================================
3284 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeFillet (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1, 
3285                                   CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
3286                                     CORBA::Double theRF, CORBA::Boolean theHexMesh)
3287 {
3288   beginService( " GEOM_Superv_i::MakePipeTShapeFillet" );
3289   MESSAGE("GEOM_Superv_i::MakePipeTShapeFillet");
3290   getAdvancedOp();
3291
3292   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeFillet(theR1, theW1, theL1, theR2, theW2, theL2, theRF, theHexMesh);
3293   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3294   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3295   endService( " GEOM_Superv_i::MakePipeTShapeFillet" );
3296   return aSeqPtr->_this();
3297 }
3298
3299 //=============================================================================
3300 //  MakePipeTShapeFilletWithPosition
3301 //=============================================================================
3302 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeFilletWithPosition (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1, 
3303                                   CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2, 
3304                                              CORBA::Double theRF, CORBA::Boolean theHexMesh,
3305                                           GEOM::GEOM_Object_ptr theP1, GEOM::GEOM_Object_ptr theP2, GEOM::GEOM_Object_ptr theP3)
3306 {
3307   beginService( " GEOM_Superv_i::MakePipeTShapeFilletWithPosition" );
3308   MESSAGE("GEOM_Superv_i::MakePipeTShapeFilletWithPosition");
3309   getAdvancedOp();
3310
3311   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeFilletWithPosition(theR1, theW1, theL1, theR2, theW2, theL2, theRF, theHexMesh, theP1, theP2, theP3);
3312   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3313   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3314   endService( " GEOM_Superv_i::MakePipeTShapeFilletWithPosition" );
3315   return aSeqPtr->_this();
3316 }
3317
3318 //=====================================================================================
3319 // EXPORTED METHODS
3320 //=====================================================================================
3321 extern "C"
3322 {
3323   PortableServer::ObjectId * GEOM_SupervEngine_factory(CORBA::ORB_ptr orb,
3324                                                       PortableServer::POA_ptr poa, 
3325                                                       PortableServer::ObjectId * contId,
3326                                                       const char *instanceName, 
3327                                                       const char * interfaceName)
3328   {
3329     GEOM_Superv_i * myGEOM_Superv_i = new GEOM_Superv_i(orb, poa, contId, instanceName, interfaceName);
3330     //Don't understand the reason why this component is registered ???
3331 //    myGEOM_Superv_i->register_name("/myGEOM_Superv");
3332     return myGEOM_Superv_i->getId() ;
3333   }
3334 }