Salome HOME
Copyright update 2022
[modules/geom.git] / src / GEOM_I_Superv / GEOM_Superv_i.cc
1 // Copyright (C) 2007-2022  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, or (at your option) any later version.
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 #include "Utils_CorbaException.hxx"
26 #include "SALOME_Fake_NamingService.hxx"
27 #include "SALOME_Container_i.hxx"
28
29 #include CORBA_SERVER_HEADER(SALOME_Session)
30 #include "SALOMEDSClient_ClientFactory.hxx"
31
32 #define isNewStudy(a,b) (a > 0 && a != b)
33
34 //=============================================================================
35 //  constructor:
36 //=============================================================================
37 GEOM_Superv_i::GEOM_Superv_i(CORBA::ORB_ptr orb,
38                              PortableServer::POA_ptr poa,
39                              PortableServer::ObjectId * contId,
40                              const char *instanceName,
41                              const char *interfaceName, bool withRegistry,
42                              SALOME_NamingService_Abstract *my_name_service):name_service(my_name_service),Engines_Component_i(orb, poa, contId, instanceName, interfaceName, false, withRegistry)
43 {
44   MESSAGE("GEOM_Superv_i::GEOM_Superv_i");
45
46   _thisObj = this ;
47   _id = _poa->activate_object(_thisObj);
48   //get RootPOA (the default)
49   //myPOA = PortableServer::RefCountServantBase::_default_POA();
50   CORBA::Object_var anObj = _orb->resolve_initial_references("RootPOA");
51   myPOA = PortableServer::POA::_narrow(anObj);
52
53   setGeomEngine();
54
55   myBasicOp = GEOM::GEOM_IBasicOperations::_nil();
56   my3DPrimOp = GEOM::GEOM_I3DPrimOperations::_nil();
57   myBoolOp = GEOM::GEOM_IBooleanOperations::_nil();
58   myInsOp = GEOM::GEOM_IInsertOperations::_nil();
59   myTransfOp = GEOM::GEOM_ITransformOperations::_nil();
60   myShapesOp = GEOM::GEOM_IShapesOperations::_nil();
61   myBlocksOp = GEOM::GEOM_IBlocksOperations::_nil();
62   myCurvesOp = GEOM::GEOM_ICurvesOperations::_nil();
63   myLocalOp = GEOM::GEOM_ILocalOperations::_nil();
64   myGroupOp = GEOM::GEOM_IGroupOperations::_nil();
65 }
66
67 //=============================================================================
68 //  destructor
69 //=============================================================================
70 GEOM_Superv_i::~GEOM_Superv_i()
71 {
72   MESSAGE("GEOM_Superv_i::~GEOM_Superv_i");
73   if (!CORBA::is_nil(myBasicOp))
74     myBasicOp->UnRegister();
75   if (!CORBA::is_nil(myBoolOp))
76     myBoolOp->UnRegister();
77   if (!CORBA::is_nil(my3DPrimOp))
78     my3DPrimOp->UnRegister();
79   delete name_service;
80 }
81
82 //============================================================================
83 // function : register()
84 // purpose  : register 'name' in 'name_service'
85 //============================================================================
86 void GEOM_Superv_i::register_name(char * name)
87 {
88   GEOM::GEOM_Superv_var g = _this();
89   name_service->Register(g, name);
90 }
91
92 //=============================================================================
93 //  setGEOMEngine:
94 //=============================================================================
95 void GEOM_Superv_i::setGeomEngine()
96 {
97   if ( !CORBA::is_nil(myGeomEngine) )
98     return;
99
100   // get GEOM_Gen engine
101   Engines::Container_var cont=GetContainerRef();
102   CORBA::String_var container_name=cont->name();
103   std::string shortName=container_name.in();
104   shortName=shortName.substr(12); // substract "/Containers/"
105   SALOME_LifeCycleCORBA* lcc = new SALOME_LifeCycleCORBA( name_service );
106   Engines::EngineComponent_var comp = lcc->FindOrLoad_Component( shortName.c_str(), "GEOM" );
107   delete lcc;
108
109   myGeomEngine = GEOM::GEOM_Gen::_narrow(comp);
110 }
111
112 //=============================================================================
113 //  CreateListOfGO:
114 //=============================================================================
115 GEOM::GEOM_List_ptr GEOM_Superv_i::CreateListOfGO()
116 {
117   MESSAGE("GEOM_Superv_i::CreateListOfGO()");
118   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>();
119   return aListPtr->_this();
120 }
121
122 //=============================================================================
123 //  AddItemToListOfGO:
124 //=============================================================================
125 void GEOM_Superv_i::AddItemToListOfGO(GEOM::GEOM_List_ptr& theList,
126                                       GEOM::GEOM_Object_ptr theObject)
127 {
128   MESSAGE("GEOM_Superv_i::AddItemToListOfGO(...)");
129   GEOM::GEOM_Object_var anObj =  GEOM::GEOM_Object::_duplicate(theObject);
130   if (GEOM_List_i<GEOM::ListOfGO>* aList =
131       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theList, myPOA).in())) {
132     aList->AddObject(anObj);
133     MESSAGE(" NewLength = "<<aList->GetList().length());
134   }
135 }
136
137 //=============================================================================
138 //  CreateListOfLong:
139 //=============================================================================
140 GEOM::GEOM_List_ptr GEOM_Superv_i::CreateListOfLong()
141 {
142   MESSAGE("GEOM_Superv_i::CreateListOfLong()");
143   GEOM_List_i<GEOM::ListOfLong>* aListPtr = new GEOM_List_i<GEOM::ListOfLong>();
144   return aListPtr->_this();
145 }
146
147 //=============================================================================
148 //  AddItemToListOfLong:
149 //=============================================================================
150 void GEOM_Superv_i::AddItemToListOfLong(GEOM::GEOM_List_ptr& theList,
151                                         CORBA::Long theObject)
152 {
153   MESSAGE("GEOM_Superv_i::AddItemToListOfLong(...)");
154   if (GEOM_List_i<GEOM::ListOfLong>* aList =
155       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theList, myPOA).in())) {
156     aList->AddObject(theObject);
157     MESSAGE(" NewLength = "<<aList->GetList().length());
158   }
159 }
160
161 //=============================================================================
162 //  CreateListOfDouble:
163 //=============================================================================
164 GEOM::GEOM_List_ptr GEOM_Superv_i::CreateListOfDouble()
165 {
166   MESSAGE("GEOM_Superv_i::CreateListOfDouble()");
167   GEOM_List_i<GEOM::ListOfDouble>* aListPtr = new GEOM_List_i<GEOM::ListOfDouble>();
168   return aListPtr->_this();
169 }
170
171 //=============================================================================
172 //  AddItemToListOfDouble:
173 //=============================================================================
174 void GEOM_Superv_i::AddItemToListOfDouble(GEOM::GEOM_List_ptr& theList,
175                                           CORBA::Double theObject)
176 {
177   MESSAGE("GEOM_Superv_i::AddItemToListOfDouble(...)");
178   if (GEOM_List_i<GEOM::ListOfDouble>* aList =
179       dynamic_cast<GEOM_List_i<GEOM::ListOfDouble>*>(GetServant(theList, myPOA).in())) {
180     aList->AddObject(theObject);
181     MESSAGE(" NewLength = "<<aList->GetList().length());
182   }
183 }
184
185 //=============================================================================
186 //  getBasicOp:
187 //=============================================================================
188 void GEOM_Superv_i::getBasicOp()
189 {
190   if (CORBA::is_nil(myGeomEngine))
191     setGeomEngine();
192   // get GEOM_IBasicOperations interface
193   if (CORBA::is_nil(myBasicOp)) {
194     myBasicOp = myGeomEngine->GetIBasicOperations();
195   }
196 }
197
198 //=============================================================================
199 //  get3DPrimOp:
200 //=============================================================================
201 void GEOM_Superv_i::get3DPrimOp()
202 {
203   if (CORBA::is_nil(myGeomEngine))
204     setGeomEngine();
205   // get GEOM_I3DPrimOperations interface
206   if (CORBA::is_nil(my3DPrimOp)) {
207     my3DPrimOp = myGeomEngine->GetI3DPrimOperations();
208   }
209 }
210
211 //=============================================================================
212 //  getBoolOp:
213 //=============================================================================
214 void GEOM_Superv_i::getBoolOp()
215 {
216   if (CORBA::is_nil(myGeomEngine))
217     setGeomEngine();
218   // get GEOM_IBooleanOperations interface
219   if (CORBA::is_nil(myBoolOp)) {
220     myBoolOp = myGeomEngine->GetIBooleanOperations();
221   }
222 }
223
224 //=============================================================================
225 //  getInsOp:
226 //=============================================================================
227 void GEOM_Superv_i::getInsOp()
228 {
229   if (CORBA::is_nil(myGeomEngine))
230     setGeomEngine();
231   // get GEOM_IInsertOperations interface
232   if (CORBA::is_nil(myInsOp)) {
233     myInsOp = myGeomEngine->GetIInsertOperations();
234   }
235 }
236
237 //=============================================================================
238 //  getTransfOp:
239 //=============================================================================
240 void GEOM_Superv_i::getTransfOp()
241 {
242   if (CORBA::is_nil(myGeomEngine))
243     setGeomEngine();
244   // get GEOM_ITransformOperations interface
245   if (CORBA::is_nil(myTransfOp)) {
246     myTransfOp = myGeomEngine->GetITransformOperations();
247   }
248 }
249
250 //=============================================================================
251 //  getShapesOp:
252 //=============================================================================
253 void GEOM_Superv_i::getShapesOp()
254 {
255   if (CORBA::is_nil(myGeomEngine))
256     setGeomEngine();
257   // get GEOM_IShapesOperations interface
258   if (CORBA::is_nil(myShapesOp)) {
259     myShapesOp = myGeomEngine->GetIShapesOperations();
260   }
261 }
262
263 //=============================================================================
264 //  getBlocksOp:
265 //=============================================================================
266 void GEOM_Superv_i::getBlocksOp()
267 {
268   if (CORBA::is_nil(myGeomEngine))
269     setGeomEngine();
270   // get GEOM_IBlocksOperations interface
271   if (CORBA::is_nil(myBlocksOp)) {
272     myBlocksOp = myGeomEngine->GetIBlocksOperations();
273   }
274 }
275
276 //=============================================================================
277 //  getCurvesOp:
278 //=============================================================================
279 void GEOM_Superv_i::getCurvesOp()
280 {
281   if (CORBA::is_nil(myGeomEngine))
282     setGeomEngine();
283   // get GEOM_ICurvesOperations interface
284   if (CORBA::is_nil(myCurvesOp)) {
285     myCurvesOp = myGeomEngine->GetICurvesOperations();
286   }
287 }
288
289 //=============================================================================
290 //  getLocalOp:
291 //=============================================================================
292 void GEOM_Superv_i::getLocalOp()
293 {
294   if (CORBA::is_nil(myGeomEngine))
295     setGeomEngine();
296   // get GEOM_ILocalOperations interface
297   if (CORBA::is_nil(myLocalOp)) {
298     myLocalOp = myGeomEngine->GetILocalOperations();
299   }
300 }
301
302 //=============================================================================
303 //  getGroupOp:
304 //=============================================================================
305 void GEOM_Superv_i::getGroupOp()
306 {
307   if (CORBA::is_nil(myGeomEngine))
308     setGeomEngine();
309   // get GEOM_IGroupOperations interface
310   if (CORBA::is_nil(myGroupOp)) {
311     myGroupOp = myGeomEngine->GetIGroupOperations();
312   }
313 }
314
315 //=============================================================================
316 //  getAdvancedOp:
317 //=============================================================================
318 void GEOM_Superv_i::getAdvancedOp()
319 {
320   if (CORBA::is_nil(myGeomEngine))
321     setGeomEngine();
322   // get GEOM::IAdvancedOperations interface
323   if (CORBA::is_nil(myAdvancedOp)) {
324     myAdvancedOp = GEOM::IAdvancedOperations::_narrow(myGeomEngine->GetPluginOperations("AdvancedEngine"));
325   }
326 }
327
328 //=============================================================================
329 //  getSTLPluginOp:
330 //=============================================================================
331 void GEOM_Superv_i::getSTLPluginOp()
332 {
333   if (CORBA::is_nil(myGeomEngine))
334     setGeomEngine();
335   // get GEOM::ISTLOperations interface
336   if (CORBA::is_nil(mySTLOp)) {
337     mySTLOp = GEOM::ISTLOperations::_narrow(myGeomEngine->GetPluginOperations("STLPluginEngine"));
338   }
339 }
340
341 //=============================================================================
342 //  getBREPPluginOp:
343 //=============================================================================
344 void GEOM_Superv_i::getBREPPluginOp()
345 {
346   if (CORBA::is_nil(myGeomEngine))
347     setGeomEngine();
348   // get GEOM:IBREPOperations interface
349   if (CORBA::is_nil(myBREPOp)) {
350     myBREPOp = GEOM::IBREPOperations::_narrow(myGeomEngine->GetPluginOperations("BREPPluginEngine"));
351   }
352 }
353
354 //=============================================================================
355 //  getSTEPPluginOp:
356 //=============================================================================
357 void GEOM_Superv_i::getSTEPPluginOp()
358 {
359   if (CORBA::is_nil(myGeomEngine))
360     setGeomEngine();
361   // get GEOM::ISTEPOperations interface
362   if (CORBA::is_nil(mySTEPOp)) {
363     mySTEPOp = GEOM::ISTEPOperations::_narrow(myGeomEngine->GetPluginOperations("STEPPluginEngine"));
364   }
365 }
366
367 //=============================================================================
368 //  getIGESPluginOp:
369 //=============================================================================
370 void GEOM_Superv_i::getIGESPluginOp()
371 {
372   if (CORBA::is_nil(myGeomEngine))
373     setGeomEngine();
374   // get GEOM::IIGESOperations interface
375   if (CORBA::is_nil(myIGESOp)) {
376     myIGESOp = GEOM::IIGESOperations::_narrow(myGeomEngine->GetPluginOperations("IGESPluginEngine"));
377   }
378 }
379
380 //=============================================================================
381 //  getXAOPluginOp:
382 //=============================================================================
383 void GEOM_Superv_i::getXAOPluginOp()
384 {
385   if (CORBA::is_nil(myGeomEngine))
386     setGeomEngine();
387   // get GEOM::IXAOOperations interface
388   if (CORBA::is_nil(myXAOOp)) {
389     myXAOOp = GEOM::IXAOOperations::_narrow(myGeomEngine->GetPluginOperations("XAOPluginEngine"));
390   }
391 }
392
393 #ifdef WITH_VTK
394 //=============================================================================
395 //  getVTKPluginOp:
396 //=============================================================================
397 void GEOM_Superv_i::getVTKPluginOp()
398 {
399   if (CORBA::is_nil(myGeomEngine))
400     setGeomEngine();
401   // get GEOM::IVTKOperations interface
402   if (CORBA::is_nil(myVTKOp)) {
403     myVTKOp = GEOM::IVTKOperations::_narrow(myGeomEngine->GetPluginOperations("VTKPluginEngine"));
404   }
405 }
406 #endif
407
408 //=============================================================================
409 //  GetServant:
410 //=============================================================================
411 PortableServer::ServantBase_var GEOM_Superv_i::GetServant(CORBA::Object_ptr       theObject,
412                                                           PortableServer::POA_ptr thePOA)
413 {
414   if(CORBA::is_nil(theObject))  return NULL;
415   PortableServer::Servant aServant = thePOA->reference_to_servant(theObject);
416   return aServant;
417 }
418
419 //============================================================================
420 // function : Save()
421 // purpose  : save OCAF/Geom document
422 //============================================================================
423 SALOMEDS::TMPFile* GEOM_Superv_i::Save(SALOMEDS::SComponent_ptr /*theComponent*/,
424                                        const char* /*theURL*/,
425                                        CORBA::Boolean /*isMultiFile*/)
426 {
427   SALOMEDS::TMPFile_var aStreamFile;
428   return aStreamFile._retn();
429 }
430
431 //============================================================================
432 // function : SaveASCII()
433 // purpose  :
434 //============================================================================
435 SALOMEDS::TMPFile* GEOM_Superv_i::SaveASCII(SALOMEDS::SComponent_ptr /*theComponent*/,
436                                             const char* /*theURL*/,
437                                             CORBA::Boolean /*isMultiFile*/)
438 {
439   SALOMEDS::TMPFile_var aStreamFile;
440   return aStreamFile._retn();
441 }
442
443 //============================================================================
444 // function : Load()
445 // purpose  :
446 //============================================================================
447 CORBA::Boolean GEOM_Superv_i::Load(SALOMEDS::SComponent_ptr /*theComponent*/,
448                                    const SALOMEDS::TMPFile& /*theStream*/,
449                                    const char* /*theURL*/,
450                                    CORBA::Boolean /*isMultiFile*/)
451 {
452   return false;
453 }
454
455 //============================================================================
456 // function : LoadASCII()
457 // purpose  :
458 //============================================================================
459 CORBA::Boolean GEOM_Superv_i::LoadASCII(SALOMEDS::SComponent_ptr /*theComponent*/,
460                                         const SALOMEDS::TMPFile& /*theStream*/,
461                                         const char* /*theURL*/,
462                                         CORBA::Boolean /*isMultiFile*/)
463 {
464   return false;
465 }
466
467 //============================================================================
468 // function : Close()
469 // purpose  :
470 //============================================================================
471 void GEOM_Superv_i::Close(SALOMEDS::SComponent_ptr /*theComponent*/)
472 {
473 }
474
475 //============================================================================
476 // function : ComponentDataType()
477 // purpose  :
478 //============================================================================
479 char* GEOM_Superv_i::ComponentDataType()
480 {
481   return 0;
482 }
483
484 //============================================================================
485 // function : IORToLocalPersistentID()
486 // purpose  :
487 //============================================================================
488 char* GEOM_Superv_i::IORToLocalPersistentID(SALOMEDS::SObject_ptr /*theSObject*/,
489                                             const char* /*IORString*/,
490                                             CORBA::Boolean /*isMultiFile*/,
491                                             CORBA::Boolean /*isASCII*/)
492 {
493   return 0;
494 }
495
496 //============================================================================
497 // function : LocalPersistentIDToIOR()
498 // purpose  : Create/Load CORBA object from a persistent ref (an entry)
499 //          : Used when a study is loaded
500 //          : The IOR (IORName) of object created is returned
501 //============================================================================
502 char* GEOM_Superv_i::LocalPersistentIDToIOR(SALOMEDS::SObject_ptr /*theSObject*/,
503                                             const char* /*aLocalPersistentID*/,
504                                             CORBA::Boolean /*isMultiFile*/,
505                                             CORBA::Boolean /*isASCII*/)
506 {
507   return 0;
508 }
509
510 //============================================================================
511 // function : CanPublishInStudy
512 // purpose  :
513 //============================================================================
514 CORBA::Boolean GEOM_Superv_i::CanPublishInStudy(CORBA::Object_ptr theIOR)
515 {
516   if (CORBA::is_nil(myGeomEngine))
517     setGeomEngine();
518   return myGeomEngine->CanPublishInStudy(theIOR);
519 }
520
521 //============================================================================
522 // function : PublishInStudy
523 // purpose  :
524 //============================================================================
525 SALOMEDS::SObject_ptr GEOM_Superv_i::PublishInStudy(SALOMEDS::SObject_ptr theSObject,
526                                                     CORBA::Object_ptr theObject,
527                                                     const char* theName) 
528 {
529   if (CORBA::is_nil(myGeomEngine))
530     setGeomEngine();
531   return myGeomEngine->PublishInStudy(theSObject, theObject, theName);
532 }
533
534 //============================================================================
535 // function : PublishNamedShapesInStudy
536 // purpose  :
537 //============================================================================
538 GEOM::ListOfGO*
539 GEOM_Superv_i::PublishNamedShapesInStudy(//SALOMEDS::SObject_ptr theSObject,
540                                          CORBA::Object_ptr theObject)
541 {
542   if (CORBA::is_nil(myGeomEngine))
543     setGeomEngine();
544   return myGeomEngine->PublishNamedShapesInStudy(theObject);
545 }
546
547 //============================================================================
548 // function : CanCopy()
549 // purpose  :
550 //============================================================================
551 CORBA::Boolean GEOM_Superv_i::CanCopy(SALOMEDS::SObject_ptr /*theObject*/)
552 {
553   return false;
554 }
555
556 //============================================================================
557 // function : CopyFrom()
558 // purpose  :
559 //============================================================================
560 SALOMEDS::TMPFile* GEOM_Superv_i::CopyFrom(SALOMEDS::SObject_ptr /*theObject*/, CORBA::Long& /*theObjectID*/)
561 {
562   SALOMEDS::TMPFile_var aStreamFile;
563   return aStreamFile._retn();
564 }
565
566 //============================================================================
567 // function : CanPaste()
568 // purpose  :
569 //============================================================================
570 CORBA::Boolean GEOM_Superv_i::CanPaste(const char* /*theComponentName*/, CORBA::Long /*theObjectID*/)
571 {
572   return false;
573 }
574
575 //============================================================================
576 // function : PasteInto()
577 // purpose  :
578 //============================================================================
579 SALOMEDS::SObject_ptr GEOM_Superv_i::PasteInto(const SALOMEDS::TMPFile& /*theStream*/,
580                                                CORBA::Long /*theObjectID*/,
581                                                SALOMEDS::SObject_ptr /*theObject*/)
582 {
583   SALOMEDS::SObject_var aNewSO;
584   return aNewSO._retn();
585 }
586
587 //================= Primitives Construction : BasicOperations =================
588 //=============================================================================
589 //  MakePointXYZ:
590 //=============================================================================
591 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointXYZ(CORBA::Double theX,
592                                                   CORBA::Double theY,
593                                                   CORBA::Double theZ)
594 {
595   beginService( " GEOM_Superv_i::MakePointXYZ" );
596   MESSAGE("GEOM_Superv_i::MakePointXYZ");
597   getBasicOp();
598   // make vertex and return
599   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointXYZ(theX, theY, theZ);
600   endService( " GEOM_Superv_i::MakePointXYZ" );
601   return anObj;
602 }
603
604 //=============================================================================
605 //  MakePointWithReference:
606 //=============================================================================
607 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointWithReference (GEOM::GEOM_Object_ptr theReference,
608                                                              CORBA::Double theX,
609                                                              CORBA::Double theY,
610                                                              CORBA::Double theZ)
611 {
612   beginService( " GEOM_Superv_i::MakePointWithReference" );
613   MESSAGE("GEOM_Superv_i::MakePointWithReference");
614   getBasicOp();
615   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointWithReference(theReference, theX, theY, theZ);
616   endService( " GEOM_Superv_i::MakePointWithReference" );
617   return anObj;
618 }
619
620 //=============================================================================
621 //  MakePointOnCurve:
622 //=============================================================================
623 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
624                                                        CORBA::Double theParameter)
625 {
626   beginService( " GEOM_Superv_i::MakePointOnCurve" );
627   MESSAGE("GEOM_Superv_i::MakePointOnCurve");
628   getBasicOp();
629   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointOnCurve(theRefCurve, theParameter, false);
630   endService( " GEOM_Superv_i::MakePointOnCurve" );
631   return anObj;
632 }
633
634 //=============================================================================
635 //  MakePointOnCurveByLength:
636 //=============================================================================
637 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnCurveByLength (GEOM::GEOM_Object_ptr theRefCurve,
638                                                                CORBA::Double theLength,
639                                                                GEOM::GEOM_Object_ptr theStartPoint)
640 {
641   beginService( " GEOM_Superv_i::MakePointOnCurveByLength" );
642   MESSAGE("GEOM_Superv_i::MakePointOnCurveByLength");
643   getBasicOp();
644   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointOnCurveByLength(theRefCurve, theLength, theStartPoint);
645   endService( " GEOM_Superv_i::MakePointOnCurveByLength" );
646   return anObj;
647 }
648
649 //=============================================================================
650 //  MakePointOnCurveByCoord
651 //=============================================================================
652 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnCurveByCoord (GEOM::GEOM_Object_ptr theRefCurve,
653                                                               CORBA::Double theXParameter,
654                                                               CORBA::Double theYParameter,
655                                                               CORBA::Double theZParameter)
656 {
657   beginService( " GEOM_Superv_i::MakePointOnCurveByCoord" );
658   MESSAGE("GEOM_Superv_i::MakePointOnCurveByCoord");
659   getBasicOp();
660   GEOM::GEOM_Object_ptr anObj =
661     myBasicOp->MakePointOnCurveByCoord(theRefCurve, theXParameter,
662                                 theYParameter, theZParameter);
663   endService( " GEOM_Superv_i::MakePointOnCurveByCoord" );
664   return anObj;
665 }
666
667 //=============================================================================
668 //  MakePointOnSurface:
669 //=============================================================================
670 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnSurface (GEOM::GEOM_Object_ptr theRefSurface,
671                                                          CORBA::Double theUParameter,
672                                                          CORBA::Double theVParameter)
673 {
674   beginService( " GEOM_Superv_i::MakePointOnSurface" );
675   MESSAGE("GEOM_Superv_i::MakePointOnSurface");
676   getBasicOp();
677   GEOM::GEOM_Object_ptr anObj =
678     myBasicOp->MakePointOnSurface(theRefSurface, theUParameter, theVParameter);
679   endService( " GEOM_Superv_i::MakePointOnSurface" );
680   return anObj;
681 }
682
683 //=============================================================================
684 //  MakePointOnSurfaceByCoord
685 //=============================================================================
686 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnSurfaceByCoord (GEOM::GEOM_Object_ptr theRefSurface,
687                                                                 CORBA::Double theXParameter,
688                                                                 CORBA::Double theYParameter,
689                                                                 CORBA::Double theZParameter)
690 {
691   beginService( " GEOM_Superv_i::MakePointOnSurfaceByCoord" );
692   MESSAGE("GEOM_Superv_i::MakePointOnSurfaceByCoord");
693   getBasicOp();
694   GEOM::GEOM_Object_ptr anObj =
695     myBasicOp->MakePointOnSurfaceByCoord(theRefSurface, theXParameter,
696                                 theYParameter, theZParameter);
697   endService( " GEOM_Superv_i::MakePointOnSurfaceByCoord" );
698   return anObj;
699 }
700
701 //=============================================================================
702 //  MakePointOnLinesIntersection:
703 //=============================================================================
704 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnLinesIntersection (GEOM::GEOM_Object_ptr theRefLine1,
705                                                                    GEOM::GEOM_Object_ptr theRefLine2)
706 {
707   beginService( " GEOM_Superv_i::MakePointOnLinesIntersection" );
708   MESSAGE("GEOM_Superv_i::MakePointOnLinesIntersection");
709   getBasicOp();
710   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointOnLinesIntersection(theRefLine1, theRefLine2);
711   endService( " GEOM_Superv_i::MakePointOnLinesIntersection" );
712   return anObj;
713 }
714
715 //=============================================================================
716 //  MakeTangentOnCurve:
717 //=============================================================================
718 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTangentOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
719                                                          CORBA::Double theParameter)
720 {
721   beginService( " GEOM_Superv_i::MakeTangentOnCurve" );
722   MESSAGE("GEOM_Superv_i::MakeTangentOnCurve");
723   getBasicOp();
724   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeTangentOnCurve(theRefCurve, theParameter);
725   endService( " GEOM_Superv_i::MakeTangentOnCurve" );
726   return anObj;
727 }
728
729 //=============================================================================
730 //  MakeVectorDXDYDZ:
731 //=============================================================================
732 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeVectorDXDYDZ (CORBA::Double theDX,
733                                                        CORBA::Double theDY,
734                                                        CORBA::Double theDZ)
735 {
736   beginService( " GEOM_Superv_i::MakeVectorDXDYDZ" );
737   MESSAGE("GEOM_Superv_i::MakeVectorDXDYDZ");
738   getBasicOp();
739   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeVectorDXDYDZ(theDX, theDY, theDZ);
740   endService( " GEOM_Superv_i::MakeVectorDXDYDZ" );
741   return anObj;
742 }
743
744 //=============================================================================
745 //  MakeVectorTwoPnt:
746 //=============================================================================
747 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeVectorTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
748                                                        GEOM::GEOM_Object_ptr thePnt2)
749 {
750   beginService( " GEOM_Superv_i::MakeVectorTwoPnt" );
751   MESSAGE("GEOM_Superv_i::MakeVector");
752   getBasicOp();
753   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeVectorTwoPnt(thePnt1, thePnt2);
754   endService( " GEOM_Superv_i::MakeVectorTwoPnt" );
755   return anObj;
756 }
757
758 //=============================================================================
759 //  MakeLineTwoPnt:
760 //=============================================================================
761 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeLineTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
762                                                      GEOM::GEOM_Object_ptr thePnt2)
763 {
764   beginService( " GEOM_Superv_i::MakeLineTwoPnt");
765   MESSAGE("GEOM_Superv_i::MakeLineTwoPnt");
766   getBasicOp();
767   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeLineTwoPnt(thePnt1, thePnt2);
768   endService( " GEOM_Superv_i::MakeLineTwoPnt");
769   return anObj;
770 }
771
772 //=============================================================================
773 //  MakeLineTwoFaces:
774 //=============================================================================
775 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeLineTwoFaces (GEOM::GEOM_Object_ptr theFace1,
776                                                        GEOM::GEOM_Object_ptr theFace2)
777 {
778   beginService( " GEOM_Superv_i::MakeLineTwoFaces");
779   MESSAGE("GEOM_Superv_i::MakeLineTwoFaces");
780   getBasicOp();
781   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeLineTwoFaces(theFace1, theFace2);
782   endService( " GEOM_Superv_i::MakeLineTwoFaces");
783   return anObj;
784 }
785
786 //=============================================================================
787 //  MakePlaneThreePnt:
788 //=============================================================================
789 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneThreePnt (GEOM::GEOM_Object_ptr thePnt1,
790                                                         GEOM::GEOM_Object_ptr thePnt2,
791                                                         GEOM::GEOM_Object_ptr thePnt3,
792                                                         CORBA::Double theTrimSize)
793 {
794   beginService( " GEOM_Superv_i::MakePlaneThreePnt");
795   MESSAGE("GEOM_Superv_i::MakePlaneThreePnt");
796   getBasicOp();
797   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlaneThreePnt(thePnt1, thePnt2, thePnt3, theTrimSize);
798   endService( " GEOM_Superv_i::MakePlaneThreePnt");
799   return anObj;
800 }
801
802 //=============================================================================
803 //  MakePlanePntVec:
804 //=============================================================================
805 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlanePntVec (GEOM::GEOM_Object_ptr thePnt,
806                                                       GEOM::GEOM_Object_ptr theVec,
807                                                       CORBA::Double theTrimSize)
808 {
809   beginService( " GEOM_Superv_i::MakePlanePntVec" );
810   MESSAGE("GEOM_Superv_i::MakePlanePntVec");
811   getBasicOp();
812   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlanePntVec(thePnt, theVec, theTrimSize);
813   endService( " GEOM_Superv_i::MakePlanePntVec" );
814   return anObj;
815 }
816
817 //=============================================================================
818 //  MakePlaneFace:
819 //=============================================================================
820 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneFace (GEOM::GEOM_Object_ptr theFace,
821                                                     CORBA::Double theTrimSize)
822 {
823   beginService( " GEOM_Superv_i::MakePlaneFace" );
824   MESSAGE("GEOM_Superv_i::MakePlaneFace");
825   getBasicOp();
826   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlaneFace(theFace, theTrimSize);
827   endService( " GEOM_Superv_i::MakePlaneFace" );
828   return anObj;
829 }
830
831 //=============================================================================
832 //  MakePlane2Vec:
833 //=============================================================================
834 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlane2Vec (GEOM::GEOM_Object_ptr theVec1,
835                                                     GEOM::GEOM_Object_ptr theVec2,
836                                                     CORBA::Double theTrimSize)
837 {
838   beginService( " GEOM_Superv_i::MakePlane2Vec" );
839   MESSAGE("GEOM_Superv_i::MakePlane2Vec");
840   getBasicOp();
841   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlane2Vec(theVec1, theVec2, theTrimSize);
842   endService( " GEOM_Superv_i::MakePlane2Vec" );
843   return anObj;
844 }
845
846 //=============================================================================
847 //  MakePlaneLCS:
848 //=============================================================================
849 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePlaneLCS (GEOM::GEOM_Object_ptr theLCS,
850                                                    CORBA::Double theTrimSize,
851                                                    CORBA::Double theOrientation)
852 {
853   beginService( " GEOM_Superv_i::MakePlaneLCS" );
854   MESSAGE("GEOM_Superv_i::MakePlaneLCS");
855   getBasicOp();
856   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePlaneLCS(theLCS, theTrimSize, theOrientation);
857   endService( " GEOM_Superv_i::MakePlaneLCS" );
858   return anObj;
859 }
860
861 //=============================================================================
862 //  MakeMarker:
863 //=============================================================================
864 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMarker
865 (CORBA::Double theOX , CORBA::Double theOY , CORBA::Double theOZ,
866  CORBA::Double theXDX, CORBA::Double theXDY, CORBA::Double theXDZ,
867  CORBA::Double theYDX, CORBA::Double theYDY, CORBA::Double theYDZ)
868 {
869   beginService( " GEOM_Superv_i::MakeMarker" );
870   MESSAGE("GEOM_Superv_i::MakeMarker");
871   getBasicOp();
872   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeMarker(theOX, theOY, theOZ, theXDX, theXDY, theXDZ, theYDX, theYDY, theYDZ);
873   endService( " GEOM_Superv_i::MakeMarker" );
874   return anObj;
875 }
876
877 //=============================================================================
878 //  MakeMarkerFromShape:
879 //=============================================================================
880 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMarkerFromShape (GEOM::GEOM_Object_ptr theShape)
881 {
882   beginService( " GEOM_Superv_i::MakeMarkerFromShape" );
883   MESSAGE("GEOM_Superv_i::MakeMarkerFromShape");
884   getBasicOp();
885   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeMarkerFromShape(theShape);
886   endService( " GEOM_Superv_i::MakeMarkerFromShape" );
887   return anObj;
888 }
889
890 //=============================================================================
891 //  MakeMarkerPntTwoVec:
892 //=============================================================================
893 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMarkerPntTwoVec (GEOM::GEOM_Object_ptr theOrigin,
894                                                           GEOM::GEOM_Object_ptr theXVec,
895                                                           GEOM::GEOM_Object_ptr theYVec)
896 {
897   beginService( " GEOM_Superv_i::MakeMarkerPntTwoVec" );
898   MESSAGE("GEOM_Superv_i::MakeMarkerPntTwoVec");
899   getBasicOp();
900   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeMarkerPntTwoVec(theOrigin, theXVec, theYVec);
901   endService( " GEOM_Superv_i::MakeMarkerPntTwoVec" );
902   return anObj;
903 }
904
905 //=============================================================================
906 //  MakeTangentPlaneOnFace:
907 //=============================================================================
908 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTangentPlaneOnFace (GEOM::GEOM_Object_ptr theFace,
909                                                  CORBA::Double theParameterU,
910                                                  CORBA::Double theParameterV,
911                                                  CORBA::Double theTrimSize)
912 {
913   beginService( " GEOM_Superv_i::MakeTangentPlaneOnFace" );
914   MESSAGE("GEOM_Superv_i::MakeTangentPlaneOnFace");
915   getBasicOp();
916   GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeTangentPlaneOnFace(theFace, theParameterU,theParameterV,theTrimSize);
917   endService( " GEOM_Superv_i::MakeTangentPlaneOnFace" );
918   return anObj;
919 }
920
921 //================= Primitives Construction : 3DPrimOperations ================
922 //=============================================================================
923 //  MakeBox:
924 //=============================================================================
925 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBox (CORBA::Double theX1,
926                                               CORBA::Double theY1,
927                                               CORBA::Double theZ1,
928                                               CORBA::Double theX2,
929                                               CORBA::Double theY2,
930                                               CORBA::Double theZ2)
931 {
932   beginService( " GEOM_Superv_i::MakeBox" );
933   MESSAGE("GEOM_Superv_i::MakeBox");
934   getBasicOp();
935   get3DPrimOp();
936   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeBoxTwoPnt(myBasicOp->MakePointXYZ(theX1, theY1, theZ1),
937                                                           myBasicOp->MakePointXYZ(theX2, theY2, theZ2));
938   endService( " GEOM_Superv_i::MakeBox" );
939   return anObj;
940 }
941
942 //=============================================================================
943 //  MakeBoxDXDYDZ:
944 //=============================================================================
945 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoxDXDYDZ (CORBA::Double theDX,
946                                                     CORBA::Double theDY,
947                                                     CORBA::Double theDZ)
948 {
949   beginService( " GEOM_Superv_i::MakeBoxDXDYDZ" );
950   MESSAGE("GEOM_Superv_i::MakeBoxDXDYDZ");
951   get3DPrimOp();
952   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeBoxDXDYDZ(theDX, theDY, theDZ);
953   endService( " GEOM_Superv_i::MakeBoxDXDYDZ" );
954   return anObj;
955 }
956
957 //=============================================================================
958 //  MakeBoxTwoPnt:
959 //=============================================================================
960 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoxTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
961                                                     GEOM::GEOM_Object_ptr thePnt2)
962 {
963   beginService( " GEOM_Superv_i::MakeBoxTwoPnt" );
964   MESSAGE("GEOM_Superv_i::MakeBoxTwoPnt");
965   get3DPrimOp();
966   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeBoxTwoPnt(thePnt1, thePnt2);
967   endService( " GEOM_Superv_i::MakeBoxTwoPnt" );
968   return anObj;
969 }
970
971 //=============================================================================
972 //  MakeFaceHW:
973 //=============================================================================
974 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceHW (CORBA::Double theH,
975                                                  CORBA::Double theW,
976                                                  CORBA::Short  theOrientation)
977 {
978   beginService( " GEOM_Superv_i::MakeFaceHW" );
979   MESSAGE("GEOM_Superv_i::MakeFaceHW");
980   get3DPrimOp();
981   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeFaceHW(theH, theW, theOrientation);
982   endService( " GEOM_Superv_i::MakeFaceHW" );
983   return anObj;
984 }
985
986 //=============================================================================
987 //  MakeFaceObjHW:
988 //=============================================================================
989 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceObjHW (GEOM::GEOM_Object_ptr theObj,
990                                                     CORBA::Double theH,
991                                                     CORBA::Double theW)
992 {
993   beginService( " GEOM_Superv_i::MakeFaceObjHW" );
994   MESSAGE("GEOM_Superv_i::MakeFaceObjHW");
995   get3DPrimOp();
996   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeFaceObjHW(theObj, theH, theW);
997   endService( " GEOM_Superv_i::MakeFaceObjHW" );
998   return anObj;
999 }
1000
1001 //=============================================================================
1002 //  MakeDiskPntVecR:
1003 //=============================================================================
1004 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDiskPntVecR (GEOM::GEOM_Object_ptr theCenter,
1005                                                       GEOM::GEOM_Object_ptr theVector,
1006                                                       CORBA::Double theR)
1007 {
1008   beginService( " GEOM_Superv_i::MakeDiskPntVecR" );
1009   MESSAGE("GEOM_Superv_i::MakeDiskPntVecR");
1010   get3DPrimOp();
1011   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeDiskPntVecR(theCenter, theVector, theR);
1012   endService( " GEOM_Superv_i::MakeDiskPntVecR" );
1013   return anObj;
1014 }
1015
1016 //=============================================================================
1017 //  MakeDiskThreePnt:
1018 //=============================================================================
1019 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDiskThreePnt (GEOM::GEOM_Object_ptr thePnt1,
1020                                                        GEOM::GEOM_Object_ptr thePnt2,
1021                                                        GEOM::GEOM_Object_ptr thePnt3)
1022 {
1023   beginService( " GEOM_Superv_i::MakeDiskThreePnt" );
1024   MESSAGE("GEOM_Superv_i::MakeDiskThreePnt");
1025   get3DPrimOp();
1026   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeDiskThreePnt(thePnt1, thePnt2, thePnt3);
1027   endService( " GEOM_Superv_i::MakeDiskThreePnt" );
1028   return anObj;
1029 }
1030
1031 //=============================================================================
1032 //  MakeDiskR:
1033 //=============================================================================
1034 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDiskR (CORBA::Double theR,
1035                                                 CORBA::Short  theOrientation)
1036 {
1037   beginService( " GEOM_Superv_i::MakeDiskR" );
1038   MESSAGE("GEOM_Superv_i::MakeDiskR");
1039   get3DPrimOp();
1040   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeDiskR(theR, theOrientation);
1041   endService( " GEOM_Superv_i::MakeDiskR" );
1042   return anObj;
1043 }
1044
1045 //=============================================================================
1046 //  MakeCylinderPntVecRH:
1047 //=============================================================================
1048 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderPntVecRH (GEOM::GEOM_Object_ptr thePnt,
1049                                                            GEOM::GEOM_Object_ptr theAxis,
1050                                                            CORBA::Double theRadius,
1051                                                            CORBA::Double theHeight)
1052 {
1053   beginService( " GEOM_Superv_i::MakeCylinderPntVecRH" );
1054   MESSAGE("GEOM_Superv_i::MakeCylinderPntVecRH");
1055   get3DPrimOp();
1056   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderPntVecRH(thePnt, theAxis, theRadius, theHeight);
1057   endService( " GEOM_Superv_i::MakeCylinderPntVecRH" );
1058   return anObj;
1059 }
1060
1061 //=============================================================================
1062 //  MakeCylinderRH:
1063 //=============================================================================
1064 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderRH (CORBA::Double theR,
1065                                                      CORBA::Double theH)
1066 {
1067   beginService( " GEOM_Superv_i::MakeCylinderRH" );
1068   MESSAGE("GEOM_Superv_i::MakeCylinderRH");
1069   get3DPrimOp();
1070   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderRH(theR, theH);
1071   endService( " GEOM_Superv_i::MakeCylinderRH" );
1072   return anObj;
1073 }
1074
1075 //=============================================================================
1076 //  MakeCylinderPntVecRHA:
1077 //=============================================================================
1078 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderPntVecRHA (GEOM::GEOM_Object_ptr thePnt,
1079                                                             GEOM::GEOM_Object_ptr theAxis,
1080                                                             CORBA::Double theRadius,
1081                                                             CORBA::Double theHeight,
1082                                                             CORBA::Double theAngle)
1083 {
1084   beginService( " GEOM_Superv_i::MakeCylinderPntVecRHA" );
1085   MESSAGE("GEOM_Superv_i::MakeCylinderPntVecRHA");
1086   get3DPrimOp();
1087   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderPntVecRHA(thePnt, theAxis, theRadius, theHeight, theAngle);
1088   endService( " GEOM_Superv_i::MakeCylinderPntVecRHA" );
1089   return anObj;
1090 }
1091
1092 //=============================================================================
1093 //  MakeCylinderRHA:
1094 //=============================================================================
1095 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderRHA (CORBA::Double theR,
1096                                                       CORBA::Double theH,
1097                                                       CORBA::Double theA)
1098 {
1099   beginService( " GEOM_Superv_i::MakeCylinderRHA" );
1100   MESSAGE("GEOM_Superv_i::MakeCylinderRHA");
1101   get3DPrimOp();
1102   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderRHA(theR, theH, theA);
1103   endService( " GEOM_Superv_i::MakeCylinderRHA" );
1104   return anObj;
1105 }
1106
1107 //=============================================================================
1108 //  MakeSphere:
1109 //=============================================================================
1110 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSphere  (CORBA::Double theX,
1111                                                   CORBA::Double theY,
1112                                                   CORBA::Double theZ,
1113                                                   CORBA::Double theRadius)
1114 {
1115   beginService( " GEOM_Superv_i::MakeSphepe" );
1116   MESSAGE("GEOM_Superv_i::MakeSphepe");
1117   getBasicOp();
1118   get3DPrimOp();
1119   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeSpherePntR(myBasicOp->MakePointXYZ(theX, theY, theZ), theRadius);
1120   endService( " GEOM_Superv_i::MakeSphepe" );
1121   return anObj;
1122 }
1123
1124 //=============================================================================
1125 //  MakeSphereR:
1126 //=============================================================================
1127 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSphereR (CORBA::Double theR)
1128 {
1129   beginService( " GEOM_Superv_i::MakeSphereR" );
1130   MESSAGE("GEOM_Superv_i::MakeSphereR");
1131   get3DPrimOp();
1132   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeSphereR(theR);
1133   endService( " GEOM_Superv_i::MakeSphereR" );
1134   return anObj;
1135 }
1136
1137 //=============================================================================
1138 //  MakeSpherePntR:
1139 //=============================================================================
1140 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSpherePntR (GEOM::GEOM_Object_ptr thePnt,
1141                                                      CORBA::Double theR)
1142 {
1143   beginService( " GEOM_Superv_i::MakeSpherePntR" );
1144   MESSAGE("GEOM_Superv_i::MakeSpherePntR");
1145   get3DPrimOp();
1146   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeSpherePntR(thePnt, theR);
1147   endService( " GEOM_Superv_i::MakeSpherePntR" );
1148   return anObj;
1149 }
1150
1151 //=============================================================================
1152 //  MakeTorusPntVecRR:
1153 //=============================================================================
1154 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTorusPntVecRR (GEOM::GEOM_Object_ptr thePnt,
1155                                                         GEOM::GEOM_Object_ptr theVec,
1156                                                         CORBA::Double theRMajor,
1157                                                         CORBA::Double theRMinor)
1158 {
1159   beginService( " GEOM_Superv_i::MakeTorusPntVecRR" );
1160   MESSAGE("GEOM_Superv_i::MakeTorusPntVecRR");
1161   get3DPrimOp();
1162   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeTorusPntVecRR(thePnt, theVec, theRMajor, theRMinor);
1163   endService( " GEOM_Superv_i::MakeTorusPntVecRR" );
1164   return anObj;
1165 }
1166
1167 //=============================================================================
1168 //  MakeTorusRR:
1169 //=============================================================================
1170 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeTorusRR (CORBA::Double theRMajor,
1171                                                   CORBA::Double theRMinor)
1172 {
1173   beginService( " GEOM_Superv_i::MakeTorusRR" );
1174   MESSAGE("GEOM_Superv_i::MakeTorusRR");
1175   get3DPrimOp();
1176   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeTorusRR(theRMajor, theRMinor);
1177   endService( " GEOM_Superv_i::MakeTorusRR" );
1178   return anObj;
1179 }
1180
1181 //=============================================================================
1182 //  MakeConePntVecR1R2H:
1183 //=============================================================================
1184 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeConePntVecR1R2H (GEOM::GEOM_Object_ptr thePnt,
1185                                                           GEOM::GEOM_Object_ptr theAxis,
1186                                                           CORBA::Double theR1,
1187                                                           CORBA::Double theR2,
1188                                                           CORBA::Double theHeight)
1189 {
1190   beginService( " GEOM_Superv_i::MakeConePntVecR1R2H" );
1191   MESSAGE("GEOM_Superv_i::MakeConePntVecR1R2H");
1192   get3DPrimOp();
1193   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeConePntVecR1R2H(thePnt, theAxis, theR1, theR2, theHeight);
1194   endService( " GEOM_Superv_i::MakeConePntVecR1R2H" );
1195   return anObj;
1196 }
1197
1198 //=============================================================================
1199 //  MakeConeR1R2H:
1200 //=============================================================================
1201 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeConeR1R2H (CORBA::Double theR1,
1202                                                     CORBA::Double theR2,
1203                                                     CORBA::Double theHeight)
1204 {
1205   beginService( " GEOM_Superv_i::MakeConeR1R2H" );
1206   MESSAGE("GEOM_Superv_i::MakeConeR1R2H");
1207   get3DPrimOp();
1208   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeConeR1R2H(theR1, theR2, theHeight);
1209   endService( " GEOM_Superv_i::MakeConeR1R2H" );
1210   return anObj;
1211 }
1212
1213 //=============================================================================
1214 //  MakePrismVecH:
1215 //=============================================================================
1216 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismVecH (GEOM::GEOM_Object_ptr theBase,
1217                                                     GEOM::GEOM_Object_ptr theVec,
1218                                                     CORBA::Double         theH)
1219 {
1220   beginService( " GEOM_Superv_i::MakePrismVecH" );
1221   MESSAGE("GEOM_Superv_i::MakePrismVecH");
1222   get3DPrimOp();
1223   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismVecH(theBase, theVec, theH);
1224   endService( " GEOM_Superv_i::MakePrismVecH" );
1225   return anObj;
1226 }
1227
1228 //=============================================================================
1229 //  MakePrismVecH2Ways:
1230 //=============================================================================
1231 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismVecH2Ways (GEOM::GEOM_Object_ptr theBase,
1232                                                          GEOM::GEOM_Object_ptr theVec,
1233                                                          CORBA::Double         theH)
1234 {
1235   beginService( " GEOM_Superv_i::MakePrismVecH2Ways" );
1236   MESSAGE("GEOM_Superv_i::MakePrismVecH2Ways");
1237   get3DPrimOp();
1238   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismVecH2Ways(theBase, theVec, theH);
1239   endService( " GEOM_Superv_i::MakePrismVecH2Ways" );
1240   return anObj;
1241 }
1242
1243 //=============================================================================
1244 //  MakePrismTwoPnt:
1245 //=============================================================================
1246 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismTwoPnt (GEOM::GEOM_Object_ptr theBase,
1247                                                       GEOM::GEOM_Object_ptr thePoint1,
1248                                                       GEOM::GEOM_Object_ptr thePoint2)
1249 {
1250   beginService( " GEOM_Superv_i::MakePrismTwoPnt" );
1251   MESSAGE("GEOM_Superv_i::MakePrismTwoPnt");
1252   get3DPrimOp();
1253   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismTwoPnt(theBase, thePoint1, thePoint2);
1254   endService( " GEOM_Superv_i::MakePrismTwoPnt" );
1255   return anObj;
1256 }
1257
1258 //=============================================================================
1259 //  MakePrismTwoPnt2Ways:
1260 //=============================================================================
1261 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismTwoPnt2Ways (GEOM::GEOM_Object_ptr theBase,
1262                                                            GEOM::GEOM_Object_ptr thePoint1,
1263                                                            GEOM::GEOM_Object_ptr thePoint2)
1264 {
1265   beginService( " GEOM_Superv_i::MakePrismTwoPnt2Ways" );
1266   MESSAGE("GEOM_Superv_i::MakePrismTwoPnt2Ways");
1267   get3DPrimOp();
1268   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismTwoPnt2Ways(theBase, thePoint1, thePoint2);
1269   endService( " GEOM_Superv_i::MakePrismTwoPnt2Ways" );
1270   return anObj;
1271 }
1272
1273 //=============================================================================
1274 //  MakePrismDXDYDZ:
1275 //=============================================================================
1276 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismDXDYDZ (GEOM::GEOM_Object_ptr theBase,
1277                       CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
1278 {
1279   beginService( " GEOM_Superv_i::MakePrismDXDYDZ" );
1280   MESSAGE("GEOM_Superv_i::MakePrismDXDYDZ");
1281   get3DPrimOp();
1282   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismDXDYDZ(theBase, theDX, theDY, theDZ);
1283   endService( " GEOM_Superv_i::MakePrismDXDYDZ" );
1284   return anObj;
1285 }
1286
1287 //=============================================================================
1288 //  MakePrismDXDYDZ:
1289 //=============================================================================
1290 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismDXDYDZ2Ways (GEOM::GEOM_Object_ptr theBase,
1291                       CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
1292 {
1293   beginService( " GEOM_Superv_i::MakePrismDXDYDZ2Ways" );
1294   MESSAGE("GEOM_Superv_i::MakePrismDXDYDZ2Ways");
1295   get3DPrimOp();
1296   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismDXDYDZ2Ways(theBase, theDX, theDY, theDZ);
1297   endService( " GEOM_Superv_i::MakePrismDXDYDZ2Ways" );
1298   return anObj;
1299 }
1300
1301 //=============================================================================
1302 //  MakePipe:
1303 //=============================================================================
1304 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipe (GEOM::GEOM_Object_ptr theBase,
1305                                                GEOM::GEOM_Object_ptr thePath)
1306 {
1307   beginService( " GEOM_Superv_i::MakePipe" );
1308   MESSAGE("GEOM_Superv_i::MakePipe");
1309   get3DPrimOp();
1310   GEOM::ListOfGO_var aList = my3DPrimOp->MakePipe(theBase, thePath, false);
1311   endService( " GEOM_Superv_i::MakePipe" );
1312   return aList[0];
1313 }
1314
1315 //=============================================================================
1316 //  MakeRevolutionAxisAngle:
1317 //=============================================================================
1318 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeRevolutionAxisAngle (GEOM::GEOM_Object_ptr theBase,
1319                                                               GEOM::GEOM_Object_ptr theAxis,
1320                                                               CORBA::Double theAngle)
1321 {
1322   beginService( " GEOM_Superv_i::MakeRevolutionAxisAngle" );
1323   MESSAGE("GEOM_Superv_i::MakeRevolutionAxisAngle");
1324   get3DPrimOp();
1325   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeRevolutionAxisAngle(theBase, theAxis, theAngle);
1326   endService( " GEOM_Superv_i::MakeRevolutionAxisAngle" );
1327   return anObj;
1328 }
1329
1330 //=============================================================================
1331 //  MakeRevolutionAxisAngle:
1332 //=============================================================================
1333 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeRevolutionAxisAngle2Ways (GEOM::GEOM_Object_ptr theBase,
1334                                                                    GEOM::GEOM_Object_ptr theAxis,
1335                                                                    CORBA::Double theAngle)
1336 {
1337   beginService( " GEOM_Superv_i::MakeRevolutionAxisAngle2Ways" );
1338   MESSAGE("GEOM_Superv_i::MakeRevolutionAxisAngle2Ways");
1339   get3DPrimOp();
1340   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeRevolutionAxisAngle2Ways(theBase, theAxis, theAngle);
1341   endService( " GEOM_Superv_i::MakeRevolutionAxisAngle2Ways" );
1342   return anObj;
1343 }
1344
1345 //=============================================================================
1346 //  MakeFilling:
1347 //=============================================================================
1348 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilling (GEOM::GEOM_Object_ptr theShape,
1349                                                   CORBA::Long theMinDeg,
1350                                                   CORBA::Long theMaxDeg,
1351                                                   CORBA::Double theTol2D,
1352                                                   CORBA::Double theTol3D,
1353                                                   CORBA::Long theNbIter,
1354                                                   GEOM::filling_oper_method theMethod,
1355                                                   CORBA::Boolean theApprox)
1356 {
1357   beginService( " GEOM_Superv_i::MakeFilling" );
1358   MESSAGE("GEOM_Superv_i::MakeFilling");
1359   get3DPrimOp();
1360   GEOM::ListOfGO_var objList = new GEOM::ListOfGO;
1361   objList->length( 1 );
1362   objList[0] = theShape;
1363   GEOM::GEOM_Object_ptr anObj =
1364     my3DPrimOp->MakeFilling(objList, theMinDeg, theMaxDeg, theTol2D, theTol3D,
1365                             theNbIter, theMethod, theApprox);
1366   endService( " GEOM_Superv_i::MakeFilling" );
1367   return anObj;
1368 }
1369
1370 //============================= BooleanOperations =============================
1371 //=============================================================================
1372 //  MakeBoolean:
1373 //=============================================================================
1374 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeBoolean
1375                                         (GEOM::GEOM_Object_ptr theShape1,
1376                                          GEOM::GEOM_Object_ptr theShape2,
1377                                          CORBA::Long           theOperation)
1378 {
1379   beginService( " GEOM_Superv_i::MakeBoolean" );
1380   // theOperation indicates the operation to be done:
1381   // 1 - Common, 2 - Cut, 3 - Fuse, 4 - Section
1382   MESSAGE("GEOM_Superv_i::MakeBoolean");
1383   getBoolOp();
1384   GEOM::GEOM_Object_ptr anObj =
1385     myBoolOp->MakeBoolean(theShape1, theShape2, theOperation, false);
1386   endService( " GEOM_Superv_i::MakeBoolean" );
1387   return anObj;
1388 }
1389
1390 //=============================================================================
1391 //  MakeThruSections:
1392 //=============================================================================
1393 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeThruSections(const GEOM::ListOfGO& theSeqSections,
1394                                          CORBA::Boolean theModeSolid,
1395                                          CORBA::Double thePreci,
1396                                          CORBA::Boolean theRuled)
1397 {
1398   beginService( " GEOM_Superv_i::MakeThruSections" );
1399   MESSAGE("GEOM_Superv_i::MakeThruSections");
1400   get3DPrimOp();
1401   GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeThruSections(theSeqSections, theModeSolid,thePreci,theRuled);
1402   endService( " GEOM_Superv_i::MakeThruSections" );
1403   return anObj;
1404 }
1405
1406 //=============================================================================
1407 //  MakePipe:
1408 //=============================================================================
1409 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeWithDifferentSections
1410                      (const GEOM::ListOfGO& theBases,
1411                       const GEOM::ListOfGO& theLocations,
1412                       GEOM::GEOM_Object_ptr thePath,
1413                       CORBA::Boolean theWithContact,
1414                       CORBA::Boolean theWithCorrections)
1415 {
1416   beginService( " GEOM_Superv_i::MakePipeWithDifferentSections" );
1417   MESSAGE("GEOM_Superv_i::MakePipeWithDifferentSections");
1418   get3DPrimOp();
1419   GEOM::ListOfGO_var aList = my3DPrimOp->MakePipeWithDifferentSections(theBases,theLocations, thePath,theWithContact,theWithCorrections, false, false);
1420   endService( " GEOM_Superv_i::MakePipeWithDifferentSections" );
1421   return aList[0];
1422 }
1423
1424
1425 //=============================================================================
1426 //  MakePipe:
1427 //=============================================================================
1428 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeWithShellSections
1429                    (const GEOM::ListOfGO& theBases,
1430                     const GEOM::ListOfGO& theSubBases,
1431                     const GEOM::ListOfGO& theLocations,
1432                     GEOM::GEOM_Object_ptr thePath,
1433                     CORBA::Boolean theWithContact,
1434                     CORBA::Boolean theWithCorrections)
1435 {
1436   beginService( " GEOM_Superv_i::MakePipeWithShellSections" );
1437   MESSAGE("GEOM_Superv_i::MakePipeWithShellSections");
1438   get3DPrimOp();
1439   GEOM::ListOfGO_var aList =
1440     my3DPrimOp->MakePipeWithShellSections(theBases, theSubBases,
1441                                           theLocations, thePath,
1442                                           theWithContact, theWithCorrections,
1443                                           false);
1444   endService( " GEOM_Superv_i::MakePipeWithShellSections" );
1445   return aList[0];
1446 }
1447
1448
1449 //=============================================================================
1450 //  MakePipe:
1451 //=============================================================================
1452 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeShellsWithoutPath
1453                    (const GEOM::ListOfGO& theBases,
1454                     const GEOM::ListOfGO& theLocations)
1455 {
1456   beginService( " GEOM_Superv_i::MakePipeShellsWithoutPath" );
1457   MESSAGE("GEOM_Superv_i::MakePipeShellsWithoutPath");
1458   get3DPrimOp();
1459   GEOM::ListOfGO_var aList =
1460     my3DPrimOp->MakePipeShellsWithoutPath(theBases,theLocations, false);
1461   endService( " GEOM_Superv_i::MakePipeShellsWithoutPath" );
1462   return aList[0];
1463 }
1464
1465
1466 //=============================================================================
1467 //  MakePipe:
1468 //=============================================================================
1469 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeBiNormalAlongVector
1470                                                 (GEOM::GEOM_Object_ptr theBase,
1471                                                  GEOM::GEOM_Object_ptr thePath,
1472                                                  GEOM::GEOM_Object_ptr theVec)
1473 {
1474   beginService( " GEOM_Superv_i::MakePipeBiNormalAlongVector" );
1475   MESSAGE("GEOM_Superv_i::MakePipeBiNormalAlongVector");
1476   get3DPrimOp();
1477   GEOM::ListOfGO_var aList =
1478     my3DPrimOp->MakePipeBiNormalAlongVector(theBase, thePath, theVec, false);
1479   endService( " GEOM_Superv_i::MakePipeBiNormalAlongVector" );
1480   return aList[0];
1481 }
1482
1483
1484 //=============================================================================
1485 //  MakeFuse:
1486 //=============================================================================
1487 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFuse
1488                                         (GEOM::GEOM_Object_ptr theShape1,
1489                                          GEOM::GEOM_Object_ptr theShape2)
1490 {
1491   beginService( " GEOM_Superv_i::MakeFuse" );
1492   MESSAGE("GEOM_Superv_i::MakeFuse");
1493   getBoolOp();
1494   GEOM::GEOM_Object_ptr anObj =
1495     myBoolOp->MakeBoolean(theShape1, theShape2, 3, false);
1496   endService( " GEOM_Superv_i::MakeFuse" );
1497   return anObj;
1498 }
1499
1500 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCommon (GEOM::GEOM_Object_ptr theShape1,
1501                                                  GEOM::GEOM_Object_ptr theShape2)
1502 {
1503   beginService( " GEOM_Superv_i::MakeCommon" );
1504   MESSAGE("GEOM_Superv_i::MakeCommon");
1505   getBoolOp();
1506   GEOM::GEOM_Object_ptr anObj =
1507     myBoolOp->MakeBoolean(theShape1, theShape2, 1, false);
1508   endService( " GEOM_Superv_i::MakeCommon" );
1509   return anObj;
1510 }
1511
1512 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCut (GEOM::GEOM_Object_ptr theShape1,
1513                                               GEOM::GEOM_Object_ptr theShape2)
1514 {
1515   beginService( " GEOM_Superv_i::MakeCut" );
1516   MESSAGE("GEOM_Superv_i::MakeCut");
1517   getBoolOp();
1518   GEOM::GEOM_Object_ptr anObj =
1519     myBoolOp->MakeBoolean(theShape1, theShape2, 2, false);
1520   endService( " GEOM_Superv_i::MakeCut" );
1521   return anObj;
1522 }
1523
1524 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSection (GEOM::GEOM_Object_ptr theShape1,
1525                                                   GEOM::GEOM_Object_ptr theShape2)
1526 {
1527   beginService( " GEOM_Superv_i::MakeCut" );
1528   MESSAGE("GEOM_Superv_i::MakeCut");
1529   getBoolOp();
1530   GEOM::GEOM_Object_ptr anObj =
1531     myBoolOp->MakeBoolean(theShape1, theShape2, 4, false);
1532   endService( " GEOM_Superv_i::MakeCut" );
1533   return anObj;
1534 }
1535
1536 //=============================================================================
1537 //  MakePartition:
1538 //=============================================================================
1539 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePartition (GEOM::GEOM_List_ptr   theShapes,
1540                                                     GEOM::GEOM_List_ptr   theTools,
1541                                                     GEOM::GEOM_List_ptr   theKeepInside,
1542                                                     GEOM::GEOM_List_ptr   theRemoveInside,
1543                                                     CORBA::Short      theLimit,
1544                                                     CORBA::Boolean    theRemoveWebs,
1545                                                     GEOM::GEOM_List_ptr theMaterials,
1546                                                     CORBA::Short theKeepNonlimitShapes)
1547 {
1548   beginService( " GEOM_Superv_i::MakePartition" );
1549   MESSAGE("GEOM_Superv_i::MakePartition");
1550   GEOM_List_i<GEOM::ListOfGO>* aListImplS =
1551     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShapes, myPOA).in());
1552   GEOM_List_i<GEOM::ListOfGO>* aListImplT =
1553     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theTools, myPOA).in());
1554   GEOM_List_i<GEOM::ListOfGO>* aListImplKI =
1555     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theKeepInside, myPOA).in());
1556   GEOM_List_i<GEOM::ListOfGO>* aListImplRI =
1557     dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theRemoveInside, myPOA).in());
1558   GEOM_List_i<GEOM::ListOfLong>* aListImplM =
1559     dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theMaterials, myPOA).in());
1560   if (aListImplS && aListImplT && aListImplKI && aListImplRI && aListImplM) {
1561     getBoolOp();
1562     GEOM::GEOM_Object_ptr anObj =
1563       myBoolOp->MakePartition(aListImplS->GetList(), aListImplT->GetList(),
1564                               aListImplKI->GetList(), aListImplRI->GetList(),
1565                               theLimit, theRemoveWebs, aListImplM->GetList(),
1566                               theKeepNonlimitShapes);
1567     endService( " GEOM_Superv_i::MakePartition" );
1568     return anObj;
1569   }
1570   endService( " GEOM_Superv_i::MakePartition" );
1571   return NULL;
1572 }
1573
1574 //=============================================================================
1575 //  MakeHalfPartition:
1576 //=============================================================================
1577 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHalfPartition (GEOM::GEOM_Object_ptr theShape,
1578                                                         GEOM::GEOM_Object_ptr thePlane)
1579 {
1580   beginService( " GEOM_Superv_i::MakeHalfPartition" );
1581   MESSAGE("GEOM_Superv_i::MakeHalfPartition");
1582   getBoolOp();
1583   GEOM::GEOM_Object_ptr anObj =
1584     myBoolOp->MakeHalfPartition(theShape, thePlane);
1585   endService( " GEOM_Superv_i::MakeHalfPartition" );
1586   return anObj;
1587 }
1588
1589 //============================== InsertOperations =============================
1590 //=============================================================================
1591 //  MakeCopy:
1592 //=============================================================================
1593 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCopy (GEOM::GEOM_Object_ptr theOriginal)
1594 {
1595   beginService( " GEOM_Superv_i::MakeCopy" );
1596   MESSAGE("GEOM_Superv_i::MakeCopy");
1597   getInsOp();
1598   GEOM::GEOM_Object_ptr anObj = myInsOp->MakeCopy(theOriginal);
1599   endService( " GEOM_Superv_i::MakeCopy" );
1600   return anObj;
1601 }
1602
1603 //=============================================================================
1604 //  Export:
1605 //=============================================================================
1606 void GEOM_Superv_i::Export (GEOM::GEOM_Object_ptr theObject,
1607                             const char*           theFileName,
1608                             const char*           theFormatName)
1609 {
1610   beginService( " GEOM_Superv_i::Export" );
1611   MESSAGE("GEOM_Superv_i::Export");
1612   getInsOp();
1613   myInsOp->Export(theObject, theFileName, theFormatName);
1614   endService( " GEOM_Superv_i::Export" );
1615 }
1616
1617 //=============================================================================
1618 //  Import:
1619 //=============================================================================
1620 GEOM::GEOM_Object_ptr GEOM_Superv_i::ImportFile (const char* theFileName,
1621                                                  const char* theFormatName)
1622 {
1623   beginService( " GEOM_Superv_i::ImportFile" );
1624   MESSAGE("GEOM_Superv_i::ImportFile");
1625   getInsOp();
1626   GEOM::ListOfGBO_var aSeq = myInsOp->ImportFile(theFileName, theFormatName);
1627   GEOM::GEOM_Object_var anObj;
1628   
1629   if (aSeq->length() > 0) {
1630     anObj = GEOM::GEOM_Object::_narrow(aSeq[0]);
1631   }
1632
1633   endService( " GEOM_Superv_i::ImportFile" );
1634   return anObj._retn();
1635 }
1636
1637 //============================= TransformOperations ===========================
1638 //=============================================================================
1639 //  TranslateTwoPoints:
1640 //=============================================================================
1641 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateTwoPoints (GEOM::GEOM_Object_ptr theObject,
1642                                                          GEOM::GEOM_Object_ptr thePoint1,
1643                                                          GEOM::GEOM_Object_ptr thePoint2)
1644 {
1645   beginService( " GEOM_Superv_i::TranslateTwoPoints" );
1646   MESSAGE("GEOM_Superv_i::TranslateTwoPoints");
1647   getTransfOp();
1648   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateTwoPoints(theObject, thePoint1, thePoint2);
1649   endService( " GEOM_Superv_i::TranslateTwoPoints" );
1650   return anObj;
1651 }
1652
1653 //=============================================================================
1654 //  TranslateTwoPointsCopy:
1655 //=============================================================================
1656 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateTwoPointsCopy (GEOM::GEOM_Object_ptr theObject,
1657                                                              GEOM::GEOM_Object_ptr thePoint1,
1658                                                              GEOM::GEOM_Object_ptr thePoint2)
1659 {
1660   beginService( " GEOM_Superv_i::TranslateTwoPointsCopy" );
1661   MESSAGE("GEOM_Superv_i::TranslateTwoPointsCopy");
1662   getTransfOp();
1663   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateTwoPointsCopy(theObject, thePoint1, thePoint2);
1664   endService( " GEOM_Superv_i::TranslateTwoPointsCopy" );
1665   return anObj;
1666 }
1667
1668 //=============================================================================
1669 //  TranslateDXDYDZ:
1670 //=============================================================================
1671 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZ (GEOM::GEOM_Object_ptr theObject,
1672                                                       CORBA::Double theDX,
1673                                                       CORBA::Double theDY,
1674                                                       CORBA::Double theDZ)
1675 {
1676   beginService( " GEOM_Superv_i::TranslateDXDYDZ" );
1677   MESSAGE("GEOM_Superv_i::TranslateDXDYDZ");
1678   getTransfOp();
1679   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateDXDYDZ(theObject, theDX, theDY, theDZ);
1680   endService( " GEOM_Superv_i::TranslateDXDYDZ" );
1681   return anObj;
1682 }
1683
1684 //=============================================================================
1685 //  TranslateDXDYDZCopy:
1686 //=============================================================================
1687 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateDXDYDZCopy (GEOM::GEOM_Object_ptr theObject,
1688                                                           CORBA::Double theDX,
1689                                                           CORBA::Double theDY,
1690                                                           CORBA::Double theDZ)
1691 {
1692   beginService( " GEOM_Superv_i::TranslateDXDYDZCopy" );
1693   MESSAGE("GEOM_Superv_i::TranslateDXDYDZCopy");
1694   getTransfOp();
1695   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ);
1696   endService( " GEOM_Superv_i::TranslateDXDYDZCopy" );
1697   return anObj;
1698 }
1699
1700 //=============================================================================
1701 //  TranslateVector:
1702 //=============================================================================
1703 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVector (GEOM::GEOM_Object_ptr theObject,
1704                                                       GEOM::GEOM_Object_ptr theVector)
1705 {
1706   beginService( " GEOM_Superv_i::TranslateVector" );
1707   MESSAGE("GEOM_Superv_i::TranslateVector");
1708   getTransfOp();
1709   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVector(theObject, theVector);
1710   endService( " GEOM_Superv_i::TranslateVector" );
1711   return anObj;
1712 }
1713
1714 //=============================================================================
1715 //  TranslateVectorCopy:
1716 //=============================================================================
1717 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVectorCopy (GEOM::GEOM_Object_ptr theObject,
1718                                                           GEOM::GEOM_Object_ptr theVector)
1719 {
1720   beginService( " GEOM_Superv_i::TranslateVectorCopy" );
1721   MESSAGE("GEOM_Superv_i::TranslateVectorCopy");
1722   getTransfOp();
1723   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVectorCopy(theObject, theVector);
1724   endService( " GEOM_Superv_i::TranslateVectorCopy" );
1725   return anObj;
1726 }
1727
1728 //=============================================================================
1729 //  TranslateVectorDistance:
1730 //=============================================================================
1731 GEOM::GEOM_Object_ptr GEOM_Superv_i::TranslateVectorDistance (GEOM::GEOM_Object_ptr theObject,
1732                                                               GEOM::GEOM_Object_ptr theVector,
1733                                                               CORBA::Double theDistance,
1734                                                               CORBA::Boolean theCopy)
1735 {
1736   beginService( " GEOM_Superv_i::TranslateVectorDistance" );
1737   MESSAGE("GEOM_Superv_i::TranslateVectorDistance");
1738   getTransfOp();
1739   GEOM::GEOM_Object_ptr anObj = myTransfOp->TranslateVectorDistance(theObject,
1740                                                                     theVector, theDistance, theCopy);
1741   endService( " GEOM_Superv_i::TranslateVectorDistance" );
1742   return anObj;
1743 }
1744
1745 //=============================================================================
1746 //  MultiTranslate1D:
1747 //=============================================================================
1748 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiTranslate1D (GEOM::GEOM_Object_ptr theObject,
1749                                                        GEOM::GEOM_Object_ptr theVector,
1750                                                        CORBA::Double theStep,
1751                                                        CORBA::Long theNbTimes)
1752 {
1753   beginService( " GEOM_Superv_i::MultiTranslate1D" );
1754   MESSAGE("GEOM_Superv_i::MultiTranslate1D");
1755   getTransfOp();
1756   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiTranslate1D(theObject, theVector, theStep, theNbTimes);
1757   endService( " GEOM_Superv_i::MultiTranslate1D" );
1758   return anObj;
1759 }
1760
1761 //=============================================================================
1762 //  MultiTranslate2D:
1763 //=============================================================================
1764 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiTranslate2D (GEOM::GEOM_Object_ptr theObject,
1765                                                        GEOM::GEOM_Object_ptr theVector1,
1766                                                        CORBA::Double theStep1,
1767                                                        CORBA::Long theNbTimes1,
1768                                                        GEOM::GEOM_Object_ptr theVector2,
1769                                                        CORBA::Double theStep2,
1770                                                        CORBA::Long theNbTimes2)
1771 {
1772   beginService( " GEOM_Superv_i::MultiTranslate2D" );
1773   MESSAGE("GEOM_Superv_i::MultiTranslate2D");
1774   getTransfOp();
1775   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiTranslate2D(theObject, theVector1, theStep1, theNbTimes1,
1776                                                              theVector2, theStep2, theNbTimes2);
1777   endService( " GEOM_Superv_i::MultiTranslate2D" );
1778   return anObj;
1779 }
1780
1781 //=============================================================================
1782 //  Rotate:
1783 //=============================================================================
1784 GEOM::GEOM_Object_ptr GEOM_Superv_i::Rotate (GEOM::GEOM_Object_ptr theObject,
1785                                              GEOM::GEOM_Object_ptr theAxis,
1786                                              CORBA::Double theAngle)
1787 {
1788   beginService( " GEOM_Superv_i::Rotate" );
1789   MESSAGE("GEOM_Superv_i::Rotate");
1790   getTransfOp();
1791   GEOM::GEOM_Object_ptr anObj = myTransfOp->Rotate(theObject, theAxis, theAngle);
1792   endService( " GEOM_Superv_i::Rotate" );
1793   return anObj;
1794 }
1795
1796 //=============================================================================
1797 //  RotateCopy:
1798 //=============================================================================
1799 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateCopy (GEOM::GEOM_Object_ptr theObject,
1800                                                  GEOM::GEOM_Object_ptr theAxis,
1801                                                  CORBA::Double theAngle)
1802 {
1803   beginService( " GEOM_Superv_i::RotateCopy" );
1804   MESSAGE("GEOM_Superv_i::RotateCopy");
1805   getTransfOp();
1806   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateCopy(theObject, theAxis, theAngle);
1807   endService( " GEOM_Superv_i::RotateCopy" );
1808   return anObj;
1809 }
1810 //=============================================================================
1811 //  RotateThreePoints:
1812 //=============================================================================
1813 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateThreePoints (GEOM::GEOM_Object_ptr theObject,
1814                                                         GEOM::GEOM_Object_ptr theCentPoint,
1815                                                         GEOM::GEOM_Object_ptr thePoint1,
1816                                                         GEOM::GEOM_Object_ptr thePoint2)
1817 {
1818   beginService( " GEOM_Superv_i::RotateThreePoints" );
1819   MESSAGE("GEOM_Superv_i::RotateThreePoints");
1820   getTransfOp();
1821   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateThreePoints(theObject, theCentPoint, thePoint1, thePoint2);
1822   endService( " GEOM_Superv_i::RotateThreePoints" );
1823   return anObj;
1824 }
1825
1826 //=============================================================================
1827 //  RotateThreePointsCopy:
1828 //=============================================================================
1829 GEOM::GEOM_Object_ptr GEOM_Superv_i::RotateThreePointsCopy (GEOM::GEOM_Object_ptr theObject,
1830                                                             GEOM::GEOM_Object_ptr theCentPoint,
1831                                                             GEOM::GEOM_Object_ptr thePoint1,
1832                                                             GEOM::GEOM_Object_ptr thePoint2)
1833 {
1834   beginService( " GEOM_Superv_i::RotateThreePointsCopy" );
1835   MESSAGE("GEOM_Superv_i::RotateThreePointsCopy");
1836   getTransfOp();
1837   GEOM::GEOM_Object_ptr anObj = myTransfOp->RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2);
1838   endService( " GEOM_Superv_i::RotateThreePointsCopy" );
1839   return anObj;
1840 }
1841
1842 //=============================================================================
1843 //  MultiRotate1D:
1844 //=============================================================================
1845 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate1D (GEOM::GEOM_Object_ptr theObject,
1846                                                     GEOM::GEOM_Object_ptr theAxis,
1847                                                     CORBA::Long theNbTimes)
1848 {
1849   beginService( " GEOM_Superv_i::MultiRotate1D" );
1850   MESSAGE("GEOM_Superv_i::MultiRotate1D");
1851   getTransfOp();
1852   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiRotate1D(theObject, theAxis, theNbTimes);
1853   endService( " GEOM_Superv_i::MultiRotate1D" );
1854   return anObj;
1855 }
1856
1857 //=============================================================================
1858 //  MultiRotate2D:
1859 //=============================================================================
1860 GEOM::GEOM_Object_ptr GEOM_Superv_i::MultiRotate2D (GEOM::GEOM_Object_ptr theObject,
1861                                                     GEOM::GEOM_Object_ptr theAxis,
1862                                                     CORBA::Double theAngle,
1863                                                     CORBA::Long theNbTimes1,
1864                                                     CORBA::Double theStep,
1865                                                     CORBA::Long theNbTimes2)
1866 {
1867   beginService( " GEOM_Superv_i::MultiRotate2D" );
1868   MESSAGE("GEOM_Superv_i::MultiRotate2D");
1869   getTransfOp();
1870   GEOM::GEOM_Object_ptr anObj = myTransfOp->MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2);
1871   endService( " GEOM_Superv_i::MultiRotate2D" );
1872   return anObj;
1873 }
1874
1875 //=============================================================================
1876 //  MirrorPlane:
1877 //=============================================================================
1878 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlane (GEOM::GEOM_Object_ptr theObject,
1879                                                   GEOM::GEOM_Object_ptr thePlane)
1880 {
1881   beginService( " GEOM_Superv_i::MirrorPlane" );
1882   MESSAGE("GEOM_Superv_i::MirrorPlane");
1883   getTransfOp();
1884   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPlane(theObject, thePlane);
1885   endService( " GEOM_Superv_i::MirrorPlane" );
1886   return anObj;
1887 }
1888
1889 //=============================================================================
1890 //  MirrorPlaneCopy:
1891 //=============================================================================
1892 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPlaneCopy (GEOM::GEOM_Object_ptr theObject,
1893                                                       GEOM::GEOM_Object_ptr thePlane)
1894 {
1895   beginService( " GEOM_Superv_i::MirrorPlaneCopy" );
1896   MESSAGE("GEOM_Superv_i::MirrorPlaneCopy");
1897   getTransfOp();
1898   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPlaneCopy(theObject, thePlane);
1899   endService( " GEOM_Superv_i::MirrorPlaneCopy" );
1900   return anObj;
1901 }
1902
1903 //=============================================================================
1904 //  MirrorAxis:
1905 //=============================================================================
1906 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxis (GEOM::GEOM_Object_ptr theObject,
1907                                                  GEOM::GEOM_Object_ptr theAxis)
1908 {
1909   beginService( " GEOM_Superv_i::MirrorAxis" );
1910   MESSAGE("GEOM_Superv_i::MirrorAxis");
1911   getTransfOp();
1912   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorAxis(theObject, theAxis);
1913   endService( " GEOM_Superv_i::MirrorAxis" );
1914   return anObj;
1915 }
1916
1917 //=============================================================================
1918 //  MirrorAxisCopy:
1919 //=============================================================================
1920 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorAxisCopy (GEOM::GEOM_Object_ptr theObject,
1921                                                      GEOM::GEOM_Object_ptr theAxis)
1922 {
1923   beginService( " GEOM_Superv_i::MirrorAxisCopy" );
1924   MESSAGE("GEOM_Superv_i::MirrorAxisCopy");
1925   getTransfOp();
1926   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorAxisCopy(theObject, theAxis);
1927   endService( " GEOM_Superv_i::MirrorAxisCopy" );
1928   return anObj;
1929 }
1930
1931 //=============================================================================
1932 //  MirrorPoint:
1933 //=============================================================================
1934 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPoint (GEOM::GEOM_Object_ptr theObject,
1935                                                   GEOM::GEOM_Object_ptr thePoint)
1936 {
1937   beginService( " GEOM_Superv_i::MirrorPoint" );
1938   MESSAGE("GEOM_Superv_i::MirrorPoint");
1939   getTransfOp();
1940   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPoint(theObject, thePoint);
1941   endService( " GEOM_Superv_i::MirrorPoint" );
1942   return anObj;
1943 }
1944
1945 //=============================================================================
1946 //  MirrorPointCopy:
1947 //=============================================================================
1948 GEOM::GEOM_Object_ptr GEOM_Superv_i::MirrorPointCopy (GEOM::GEOM_Object_ptr theObject,
1949                                                       GEOM::GEOM_Object_ptr thePoint)
1950 {
1951   beginService( " GEOM_Superv_i::MirrorPoint" );
1952   MESSAGE("GEOM_Superv_i::MirrorPointCopy");
1953   getTransfOp();
1954   GEOM::GEOM_Object_ptr anObj = myTransfOp->MirrorPointCopy(theObject, thePoint);
1955   endService( " GEOM_Superv_i::MirrorPoint" );
1956   return anObj;
1957 }
1958
1959 //=============================================================================
1960 //  OffsetShape:
1961 //=============================================================================
1962 GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShape (GEOM::GEOM_Object_ptr theObject,
1963                                                   CORBA::Double theOffset)
1964 {
1965   beginService( " GEOM_Superv_i::OffsetShape" );
1966   MESSAGE("GEOM_Superv_i::OffsetShape");
1967   getTransfOp();
1968   GEOM::GEOM_Object_ptr anObj = myTransfOp->OffsetShape(theObject, theOffset, true);
1969   endService( " GEOM_Superv_i::OffsetShape" );
1970   return anObj;
1971 }
1972
1973 //=============================================================================
1974 //  OffsetShapeCopy:
1975 //=============================================================================
1976 GEOM::GEOM_Object_ptr GEOM_Superv_i::OffsetShapeCopy (GEOM::GEOM_Object_ptr theObject,
1977                                                       CORBA::Double theOffset)
1978 {
1979   beginService( " GEOM_Superv_i::OffsetShapeCopy" );
1980   MESSAGE("GEOM_Superv_i::OffsetShapeCopy");
1981   getTransfOp();
1982   GEOM::GEOM_Object_ptr anObj = myTransfOp->OffsetShapeCopy(theObject, theOffset, true);
1983   endService( " GEOM_Superv_i::OffsetShapeCopy" );
1984   return anObj;
1985 }
1986
1987 //=============================================================================
1988 //  ScaleShape:
1989 //=============================================================================
1990 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShape (GEOM::GEOM_Object_ptr theObject,
1991                                                  GEOM::GEOM_Object_ptr thePoint,
1992                                                  CORBA::Double theFactor)
1993 {
1994   beginService( " GEOM_Superv_i::ScaleShape" );
1995   MESSAGE("GEOM_Superv_i::ScaleShape");
1996   getTransfOp();
1997   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShape(theObject, thePoint, theFactor);
1998   endService( " GEOM_Superv_i::ScaleShape" );
1999   return anObj;
2000 }
2001
2002 //=============================================================================
2003 //  ScaleShapeCopy:
2004 //=============================================================================
2005 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeCopy (GEOM::GEOM_Object_ptr theObject,
2006                                                      GEOM::GEOM_Object_ptr thePoint,
2007                                                      CORBA::Double theFactor)
2008 {
2009   beginService( " GEOM_Superv_i::ScaleShapeCopy" );
2010   MESSAGE("GEOM_Superv_i::ScaleShapeCopy");
2011   getTransfOp();
2012   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeCopy(theObject, thePoint, theFactor);
2013   endService( " GEOM_Superv_i::ScaleShapeCopy" );
2014   return anObj;
2015 }
2016
2017 //=============================================================================
2018 //  ScaleShapeAlongAxes:
2019 //=============================================================================
2020 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeAlongAxes (GEOM::GEOM_Object_ptr theObject,
2021                                                           GEOM::GEOM_Object_ptr thePoint,
2022                                                           CORBA::Double theFactorX,
2023                                                           CORBA::Double theFactorY,
2024                                                           CORBA::Double theFactorZ)
2025 {
2026   beginService( " GEOM_Superv_i::ScaleShapeAlongAxes" );
2027   MESSAGE("GEOM_Superv_i::ScaleShapeAlongAxes");
2028   getTransfOp();
2029   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeAlongAxes
2030     (theObject, thePoint, theFactorX, theFactorY, theFactorZ);
2031   endService( " GEOM_Superv_i::ScaleShapeAlongAxes" );
2032   return anObj;
2033 }
2034
2035 //=============================================================================
2036 //  ScaleShapeAlongAxesCopy:
2037 //=============================================================================
2038 GEOM::GEOM_Object_ptr GEOM_Superv_i::ScaleShapeAlongAxesCopy (GEOM::GEOM_Object_ptr theObject,
2039                                                               GEOM::GEOM_Object_ptr thePoint,
2040                                                               CORBA::Double theFactorX,
2041                                                               CORBA::Double theFactorY,
2042                                                               CORBA::Double theFactorZ)
2043 {
2044   beginService( " GEOM_Superv_i::ScaleShapeAlongAxesCopy" );
2045   MESSAGE("GEOM_Superv_i::ScaleShapeAlongAxesCopy");
2046   getTransfOp();
2047   GEOM::GEOM_Object_ptr anObj = myTransfOp->ScaleShapeAlongAxesCopy
2048     (theObject, thePoint, theFactorX, theFactorY, theFactorZ);
2049   endService( " GEOM_Superv_i::ScaleShapeAlongAxesCopy" );
2050   return anObj;
2051 }
2052
2053 //=============================================================================
2054 //  PositionShape:
2055 //=============================================================================
2056 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShape (GEOM::GEOM_Object_ptr theObject,
2057                                                     GEOM::GEOM_Object_ptr theStartLCS,
2058                                                     GEOM::GEOM_Object_ptr theEndLCS)
2059 {
2060   beginService( " GEOM_Superv_i::PositionShape" );
2061   MESSAGE("GEOM_Superv_i::PositionShape");
2062   getTransfOp();
2063   GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionShape(theObject, theStartLCS, theEndLCS);
2064   endService( " GEOM_Superv_i::PositionShape" );
2065   return anObj;
2066 }
2067
2068 //=============================================================================
2069 //  PositionShapeCopy:
2070 //=============================================================================
2071 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShapeCopy (GEOM::GEOM_Object_ptr theObject,
2072                                                         GEOM::GEOM_Object_ptr theStartLCS,
2073                                                         GEOM::GEOM_Object_ptr theEndLCS)
2074 {
2075   beginService( " GEOM_Superv_i::PositionShapeCopy" );
2076   MESSAGE("GEOM_Superv_i::PositionShapeCopy");
2077   getTransfOp();
2078   GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionShapeCopy(theObject, theStartLCS, theEndLCS);
2079   endService( " GEOM_Superv_i::PositionShapeCopy" );
2080   return anObj;
2081 }
2082
2083 //=============================================================================
2084 //  PositionAlongPath:
2085 //=============================================================================
2086 GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionAlongPath (GEOM::GEOM_Object_ptr theObject,
2087                                                         GEOM::GEOM_Object_ptr thePath,
2088                                                         CORBA::Double         theDistance,
2089                                                         CORBA::Boolean        theCopy,
2090                                                         CORBA::Boolean        theReverse)
2091 {
2092   beginService( " GEOM_Superv_i::PositionAlongPath" );
2093   MESSAGE("GEOM_Superv_i::PositionAlongPath");
2094   getTransfOp();
2095   GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionAlongPath(theObject, thePath, theDistance, theCopy, theReverse);
2096   endService( " GEOM_Superv_i::PositionAlongPath" );
2097   return anObj;
2098 }
2099
2100 //=============================== ShapesOperations ============================
2101 //=============================================================================
2102 //  Make:
2103 //=============================================================================
2104 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEdge (GEOM::GEOM_Object_ptr thePnt1,
2105                                                GEOM::GEOM_Object_ptr thePnt2)
2106 {
2107   beginService( " GEOM_Superv_i::MakeEdge" );
2108   MESSAGE("GEOM_Superv_i::MakeEdge");
2109   getShapesOp();
2110   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeEdge(thePnt1, thePnt2);
2111   endService( " GEOM_Superv_i::MakeEdge" );
2112   return anObj;
2113 }
2114
2115 //=============================================================================
2116 //  MakeEdgeOnCurveByLength:
2117 //=============================================================================
2118 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEdgeOnCurveByLength (GEOM::GEOM_Object_ptr theRefCurve,
2119                                                               CORBA::Double theLength,
2120                                                               GEOM::GEOM_Object_ptr theStartPoint)
2121 {
2122   beginService( " GEOM_Superv_i::MakeEdgeOnCurveByLength" );
2123   MESSAGE("GEOM_Superv_i::MakeEdgeOnCurveByLength");
2124   getShapesOp();
2125   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeEdgeOnCurveByLength(theRefCurve, theLength, theStartPoint);
2126   endService( " GEOM_Superv_i::MakeEdgeOnCurveByLength" );
2127   return anObj;
2128 }
2129
2130 //=============================================================================
2131 //  MakeWire:
2132 //=============================================================================
2133 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeWire (GEOM::GEOM_List_ptr theEdgesAndWires,
2134                                                CORBA::Double       theTolerance)
2135 {
2136   beginService( " GEOM_Superv_i::MakeWire" );
2137   MESSAGE("GEOM_Superv_i::MakeWire");
2138   if (GEOM_List_i<GEOM::ListOfGO>* aListImplEW =
2139       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theEdgesAndWires, myPOA).in())) {
2140     getShapesOp();
2141     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeWire(aListImplEW->GetList(), theTolerance);
2142     endService( " GEOM_Superv_i::MakeWire" );
2143     return anObj;
2144   }
2145   endService( " GEOM_Superv_i::MakeWire" );
2146   return NULL;
2147 }
2148
2149 //=============================================================================
2150 //  MakeFace:
2151 //=============================================================================
2152 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFace (GEOM::GEOM_Object_ptr theWire,
2153                                                CORBA::Boolean isPlanarWanted)
2154 {
2155   beginService( " GEOM_Superv_i::MakeFace" );
2156   MESSAGE("GEOM_Superv_i::MakeFace");
2157   getShapesOp();
2158   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeFace(theWire, isPlanarWanted);
2159   endService( " GEOM_Superv_i::MakeFace" );
2160   return anObj;
2161 }
2162
2163 //=============================================================================
2164 //  MakeFaceWires:
2165 //=============================================================================
2166 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceWires (GEOM::GEOM_List_ptr theWires,
2167                                                     CORBA::Boolean isPlanarWanted)
2168 {
2169   beginService( " GEOM_Superv_i::MakeFaceWires" );
2170   MESSAGE("GEOM_Superv_i::MakeFaceWires");
2171   if (GEOM_List_i<GEOM::ListOfGO>* aListImplW =
2172       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theWires, myPOA).in())) {
2173     getShapesOp();
2174     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeFaceWires(aListImplW->GetList(), isPlanarWanted);
2175     endService( " GEOM_Superv_i::MakeFaceWires" );
2176     return anObj;
2177   }
2178   endService( " GEOM_Superv_i::MakeFaceWires" );
2179   return NULL;
2180 }
2181
2182 //=============================================================================
2183 //  MakeFaceWithConstraints:
2184 //=============================================================================
2185 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFaceWithConstraints (GEOM::GEOM_List_ptr theConstraints)
2186 {
2187   beginService( " GEOM_Superv_i::MakeFaceWithConstraints" );
2188   MESSAGE("GEOM_Superv_i::MakeFaceWithConstraints");
2189   if (GEOM_List_i<GEOM::ListOfGO>* aConstraints =
2190       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theConstraints, myPOA).in())) {
2191     getShapesOp();
2192     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeFaceWithConstraints(aConstraints->GetList());
2193     endService( " GEOM_Superv_i::MakeFaceWithConstraints" );
2194     return anObj;
2195   }
2196   endService( " GEOM_Superv_i::MakeFaceWithConstraints" );
2197   return NULL;
2198 }
2199
2200 //=============================================================================
2201 //  MakeShell:
2202 //=============================================================================
2203 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeShell (GEOM::GEOM_List_ptr theFacesAndShells)
2204 {
2205   beginService( " GEOM_Superv_i::MakeShell" );
2206   MESSAGE("GEOM_Superv_i::MakeShell");
2207   if (GEOM_List_i<GEOM::ListOfGO>* aListImplFS =
2208       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theFacesAndShells, myPOA).in())) {
2209     getShapesOp();
2210     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeShell(aListImplFS->GetList());
2211     endService( " GEOM_Superv_i::MakeShell" );
2212     return anObj;
2213   }
2214   endService( " GEOM_Superv_i::MakeShell" );
2215   return NULL;
2216 }
2217
2218 //=============================================================================
2219 //  MakeSolidShell:
2220 //=============================================================================
2221 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShell (GEOM::GEOM_Object_ptr theShell)
2222 {
2223   beginService( " GEOM_Superv_i::MakeSolidShell" );
2224   MESSAGE("GEOM_Superv_i::MakeSolidShell");
2225   getShapesOp();
2226   GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeSolidShell(theShell);
2227   endService( " GEOM_Superv_i::MakeSolidShell" );
2228   return anObj;
2229 }
2230
2231 //=============================================================================
2232 //  MakeSolidShells:
2233 //=============================================================================
2234 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidShells (GEOM::GEOM_List_ptr theShells)
2235 {
2236   beginService( " GEOM_Superv_i::MakeSolidShells" );
2237   MESSAGE("GEOM_Superv_i::MakeSolidShells");
2238   if (GEOM_List_i<GEOM::ListOfGO>* aListImplS =
2239       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShells, myPOA).in())) {
2240     getShapesOp();
2241     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeSolidShells(aListImplS->GetList());
2242     endService( " GEOM_Superv_i::MakeSolidShells" );
2243     return anObj;
2244   }
2245   endService( " GEOM_Superv_i::MakeSolidShells" );
2246   return NULL;
2247 }
2248
2249 //=============================================================================
2250 //  MakeCompound:
2251 //=============================================================================
2252 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCompound (GEOM::GEOM_List_ptr theShapes)
2253 {
2254   beginService( " GEOM_Superv_i::MakeCompound" );
2255   MESSAGE("GEOM_Superv_i::MakeCompound");
2256   if (GEOM_List_i<GEOM::ListOfGO>* aListImpl =
2257       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theShapes, myPOA).in())) {
2258     getShapesOp();
2259     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeCompound(aListImpl->GetList());
2260     endService( " GEOM_Superv_i::MakeCompound" );
2261     return anObj;
2262   }
2263   endService( " GEOM_Superv_i::MakeCompound" );
2264   return NULL;
2265 }
2266
2267 //=============================================================================
2268 //  MakeSolidFromConnectedFaces:
2269 //=============================================================================
2270 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSolidFromConnectedFaces (GEOM::GEOM_List_ptr theFacesOrShells,
2271                                                                   CORBA::Boolean isIntersect)
2272 {
2273   beginService( " GEOM_Superv_i::MakeSolidFromConnectedFaces" );
2274   MESSAGE("GEOM_Superv_i::MakeSolidFromConnectedFaces");
2275   if (GEOM_List_i<GEOM::ListOfGO>* aListImpl =
2276       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theFacesOrShells, myPOA).in())) {
2277     getShapesOp();
2278     GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeSolidFromConnectedFaces(aListImpl->GetList(), isIntersect);
2279     endService( " GEOM_Superv_i::MakeSolidFromConnectedFaces" );
2280     return anObj;
2281   }
2282   endService( " GEOM_Superv_i::MakeSolidFromConnectedFaces" );
2283   return NULL;
2284 }
2285
2286 //=============================================================================
2287 //  MakeGlueFaces:
2288 //=============================================================================
2289 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFaces (GEOM::GEOM_Object_ptr theShape,
2290                                                     CORBA::Double   theTolerance,
2291                                                     CORBA::Boolean doKeepNonSolids)
2292 {
2293   beginService( " GEOM_Superv_i::MakeGlueFaces" );
2294   MESSAGE("GEOM_Superv_i::MakeGlueFaces");
2295   getShapesOp();
2296   GEOM::ListOfGO_var objList = new GEOM::ListOfGO;
2297   objList->length( 1 );
2298   objList[0] = theShape;
2299   GEOM::GEOM_Object_ptr anObj =
2300     myShapesOp->MakeGlueFaces(objList, theTolerance, doKeepNonSolids);
2301   endService( " GEOM_Superv_i::MakeGlueFaces" );
2302   return anObj;
2303 }
2304
2305 //=============================================================================
2306 //  GetGlueFaces:
2307 //=============================================================================
2308 GEOM::GEOM_List_ptr GEOM_Superv_i::GetGlueFaces (GEOM::GEOM_Object_ptr theShape,
2309                                                  CORBA::Double theTolerance)
2310 {
2311   beginService( " GEOM_Superv_i::GetGlueFaces" );
2312   MESSAGE("GEOM_Superv_i::GetGlueFaces");
2313   getShapesOp();
2314   GEOM::ListOfGO_var objList = new GEOM::ListOfGO;
2315   objList->length( 1 );
2316   objList[0] = theShape;
2317   GEOM::ListOfGO* aList = myShapesOp->GetGlueFaces(objList, theTolerance);
2318   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
2319   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
2320   endService( " GEOM_Superv_i::GetGlueFaces" );
2321   return aListPtr->_this();
2322 }
2323
2324 //=============================================================================
2325 //  MakeGlueFacesByList:
2326 //=============================================================================
2327 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFacesByList (GEOM::GEOM_Object_ptr theShape,
2328                                                           CORBA::Double theTolerance,
2329                                                           const GEOM::ListOfGO& theFaces,
2330                                                           CORBA::Boolean doKeepNonSolids,
2331                                                           CORBA::Boolean doGlueAllEdges)
2332 {
2333   beginService( " GEOM_Superv_i::MakeGlueFacesByList" );
2334   MESSAGE("GEOM_Superv_i::MakeGlueFacesByList");
2335   getShapesOp();
2336   GEOM::ListOfGO_var objList = new GEOM::ListOfGO;
2337   objList->length( 1 );
2338   objList[0] = theShape;
2339   GEOM::GEOM_Object_ptr anObj =
2340     myShapesOp->MakeGlueFacesByList(objList, theTolerance, theFaces,
2341                                     doKeepNonSolids, doGlueAllEdges);
2342   endService( " GEOM_Superv_i::MakeGlueFacesByList" );
2343   return anObj;
2344 }
2345
2346 //=============================================================================
2347 //  MakeExplode:
2348 //=============================================================================
2349 GEOM::GEOM_List_ptr GEOM_Superv_i::MakeExplode (GEOM::GEOM_Object_ptr theShape,
2350                                                     CORBA::Long theShapeType,
2351                                                     CORBA::Boolean isSorted)
2352 {
2353   beginService( " GEOM_Superv_i::MakeExplode" );
2354   MESSAGE("GEOM_Superv_i::MakeExplode");
2355   getShapesOp();
2356
2357   GEOM::ListOfGO* aList = myShapesOp->MakeExplode(theShape, theShapeType, isSorted);
2358   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
2359   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
2360   endService( " GEOM_Superv_i::MakeExplode" );
2361   return aListPtr->_this();
2362 }
2363
2364 //=============================================================================
2365 //  NumberOfFaces:
2366 //=============================================================================
2367 CORBA::Long GEOM_Superv_i::NumberOfFaces (GEOM::GEOM_Object_ptr theShape)
2368 {
2369   beginService( " GEOM_Superv_i::NumberOfFaces" );
2370   MESSAGE("GEOM_Superv_i::NumberOfFaces");
2371   getShapesOp();
2372   CORBA::Long aRes = myShapesOp->NumberOfFaces(theShape);
2373   endService( " GEOM_Superv_i::NumberOfFaces" );
2374   return aRes;
2375 }
2376
2377 //=============================================================================
2378 //  NumberOfEdges:
2379 //=============================================================================
2380 CORBA::Long GEOM_Superv_i::NumberOfEdges (GEOM::GEOM_Object_ptr theShape)
2381 {
2382   beginService( " GEOM_Superv_i::NumberOfEdges" );
2383   MESSAGE("GEOM_Superv_i::NumberOfEdges");
2384   getShapesOp();
2385   CORBA::Long aRes = myShapesOp->NumberOfEdges(theShape);
2386   endService( " GEOM_Superv_i::NumberOfEdges" );
2387   return aRes;
2388 }
2389
2390
2391 //=============================================================================
2392 //  ChangeOrientation:
2393 //=============================================================================
2394 GEOM::GEOM_Object_ptr GEOM_Superv_i::ChangeOrientation (GEOM::GEOM_Object_ptr theShape)
2395 {
2396   beginService( " GEOM_Superv_i::ChangeOrientation" );
2397   MESSAGE("GEOM_Superv_i::ChangeOrientation");
2398   getShapesOp();
2399   GEOM::GEOM_Object_ptr anObj = myShapesOp->ChangeOrientation(theShape);
2400   endService( " GEOM_Superv_i::ChangeOrientation" );
2401   return anObj;
2402 }
2403
2404
2405 //=============================================================================
2406 //  GetShapesOnShape:
2407 //=============================================================================
2408 GEOM::GEOM_List_ptr GEOM_Superv_i::GetShapesOnShape
2409                                           (GEOM::GEOM_Object_ptr theCheckShape,
2410                                            GEOM::GEOM_Object_ptr theShape,
2411                                            CORBA::Short theShapeType,
2412                                            GEOM::shape_state theState)
2413 {
2414   beginService( " GEOM_Superv_i::GetShapesOnShape" );
2415   MESSAGE("GEOM_Superv_i::GetShapesOnShape");
2416   getShapesOp();
2417   GEOM::ListOfGO* aList =
2418     myShapesOp->GetShapesOnShape(theCheckShape, theShape, theShapeType, theState);
2419   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
2420   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
2421   endService( " GEOM_Superv_i::GetShapesOnShape" );
2422   return aListPtr->_this();
2423 }
2424
2425
2426 //=============================================================================
2427 //  GetShapesOnShapeAsCompound:
2428 //=============================================================================
2429 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetShapesOnShapeAsCompound
2430                                           (GEOM::GEOM_Object_ptr theCheckShape,
2431                                            GEOM::GEOM_Object_ptr theShape,
2432                                            CORBA::Short theShapeType,
2433                                            GEOM::shape_state theState)
2434 {
2435   beginService( " GEOM_Superv_i::GetShapesOnShapeAsCompound" );
2436   MESSAGE("GEOM_Superv_i::GetShapesOnShapeAsCompound");
2437   getShapesOp();
2438   GEOM::GEOM_Object_ptr anObj =
2439     myShapesOp->GetShapesOnShapeAsCompound(theCheckShape, theShape, theShapeType, theState);
2440   endService( " GEOM_Superv_i::GetShapesOnShapeAsCompound" );
2441   return anObj;
2442 }
2443
2444
2445 //=============================== BlocksOperations ============================
2446 //=============================================================================
2447 //  MakeQuad4Vertices:
2448 //=============================================================================
2449 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad4Vertices (GEOM::GEOM_Object_ptr thePnt1,
2450                                                         GEOM::GEOM_Object_ptr thePnt2,
2451                                                         GEOM::GEOM_Object_ptr thePnt3,
2452                                                         GEOM::GEOM_Object_ptr thePnt4)
2453 {
2454   beginService( " GEOM_Superv_i::MakeQuad4Vertices" );
2455   MESSAGE("GEOM_Superv_i::MakeQuad4Vertices");
2456   getBlocksOp();
2457   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad4Vertices(thePnt1, thePnt2, thePnt3, thePnt4);
2458   endService( " GEOM_Superv_i::MakeQuad4Vertices" );
2459   return anObj;
2460 }
2461
2462 //=============================================================================
2463 //  MakeQuad:
2464 //=============================================================================
2465 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad (GEOM::GEOM_Object_ptr theEdge1,
2466                                                GEOM::GEOM_Object_ptr theEdge2,
2467                                                GEOM::GEOM_Object_ptr theEdge3,
2468                                                GEOM::GEOM_Object_ptr theEdge4)
2469 {
2470   beginService( " GEOM_Superv_i::MakeQuad" );
2471   MESSAGE("GEOM_Superv_i::MakeQuad");
2472   getBlocksOp();
2473   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad(theEdge1, theEdge2, theEdge3, theEdge4);
2474   endService( " GEOM_Superv_i::MakeQuad" );
2475   return anObj;
2476 }
2477
2478 //=============================================================================
2479 //  MakeQuad2Edges:
2480 //=============================================================================
2481 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeQuad2Edges (GEOM::GEOM_Object_ptr theEdge1,
2482                                                      GEOM::GEOM_Object_ptr theEdge2)
2483 {
2484   beginService( " GEOM_Superv_i::MakeQuad2Edges" );
2485   MESSAGE("GEOM_Superv_i::MakeQuad2Edges");
2486   getBlocksOp();
2487   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeQuad2Edges(theEdge1, theEdge2);
2488   endService( " GEOM_Superv_i::MakeQuad2Edges" );
2489   return anObj;
2490 }
2491
2492 //=============================================================================
2493 //  MakeHexa:
2494 //=============================================================================
2495 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa (GEOM::GEOM_Object_ptr theFace1,
2496                                                GEOM::GEOM_Object_ptr theFace2,
2497                                                GEOM::GEOM_Object_ptr theFace3,
2498                                                GEOM::GEOM_Object_ptr theFace4,
2499                                                GEOM::GEOM_Object_ptr theFace5,
2500                                                GEOM::GEOM_Object_ptr theFace6)
2501 {
2502   beginService( " GEOM_Superv_i::MakeHexa" );
2503   MESSAGE("GEOM_Superv_i::MakeHexa");
2504   getBlocksOp();
2505   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeHexa(theFace1, theFace2, theFace3, theFace4, theFace5, theFace6);
2506   endService( " GEOM_Superv_i::MakeHexa" );
2507   return anObj;
2508 }
2509
2510 //=============================================================================
2511 //  MakeHexa2Faces:
2512 //=============================================================================
2513 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHexa2Faces (GEOM::GEOM_Object_ptr theFace1,
2514                                                      GEOM::GEOM_Object_ptr theFace2)
2515 {
2516   beginService( " GEOM_Superv_i::MakeHexa2Faces" );
2517   MESSAGE("GEOM_Superv_i::MakeHexa2Faces");
2518   getBlocksOp();
2519   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeHexa2Faces(theFace1, theFace2);
2520   endService( " GEOM_Superv_i::MakeHexa2Faces" );
2521   return anObj;
2522 }
2523
2524 //=============================================================================
2525 //  GetPoint:
2526 //=============================================================================
2527 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetPoint (GEOM::GEOM_Object_ptr theShape,
2528                                                CORBA::Double   theX,
2529                                                CORBA::Double   theY,
2530                                                CORBA::Double   theZ,
2531                                                CORBA::Double   theEpsilon)
2532 {
2533   beginService( " GEOM_Superv_i::GetPoint" );
2534   MESSAGE("GEOM_Superv_i::GetPoint");
2535   getBlocksOp();
2536   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetPoint(theShape, theX, theY, theZ, theEpsilon);
2537   endService( " GEOM_Superv_i::GetPoint" );
2538   return anObj;
2539 }
2540
2541 //=============================================================================
2542 //  GetEdge:
2543 //=============================================================================
2544 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdge (GEOM::GEOM_Object_ptr theShape,
2545                                               GEOM::GEOM_Object_ptr thePoint1,
2546                                               GEOM::GEOM_Object_ptr thePoint2)
2547 {
2548   beginService( " GEOM_Superv_i::GetEdge" );
2549   MESSAGE("GEOM_Superv_i::GetEdge");
2550   getBlocksOp();
2551   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetEdge(theShape, thePoint1, thePoint2);
2552   endService( " GEOM_Superv_i::GetEdge" );
2553   return anObj;
2554 }
2555
2556 //=============================================================================
2557 //  GetEdgeNearPoint:
2558 //=============================================================================
2559 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetEdgeNearPoint (GEOM::GEOM_Object_ptr theShape,
2560                                                        GEOM::GEOM_Object_ptr thePoint)
2561 {
2562   beginService( " GEOM_Superv_i::GetEdgeNearPoint" );
2563   MESSAGE("GEOM_Superv_i::GetEdgeNearPoint");
2564   getBlocksOp();
2565   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetEdgeNearPoint(theShape, thePoint);
2566   endService( " GEOM_Superv_i::GetEdgeNearPoint" );
2567   return anObj;
2568 }
2569
2570 //=============================================================================
2571 //  GetFaceByPoints:
2572 //=============================================================================
2573 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByPoints (GEOM::GEOM_Object_ptr theShape,
2574                                                       GEOM::GEOM_Object_ptr thePoint1,
2575                                                       GEOM::GEOM_Object_ptr thePoint2,
2576                                                       GEOM::GEOM_Object_ptr thePoint3,
2577                                                       GEOM::GEOM_Object_ptr thePoint4)
2578 {
2579   beginService( " GEOM_Superv_i::GetFaceByPoints" );
2580   MESSAGE("GEOM_Superv_i::GetFaceByPoints");
2581   getBlocksOp();
2582   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4);
2583   endService( " GEOM_Superv_i::GetFaceByPoints" );
2584   return anObj;
2585 }
2586
2587 //=============================================================================
2588 //  GetFaceByEdges:
2589 //=============================================================================
2590 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByEdges (GEOM::GEOM_Object_ptr theShape,
2591                                                      GEOM::GEOM_Object_ptr theEdge1,
2592                                                      GEOM::GEOM_Object_ptr theEdge2)
2593 {
2594   beginService( " GEOM_Superv_i::GetFaceByEdges" );
2595   MESSAGE("GEOM_Superv_i::GetFaceByEdges");
2596   getBlocksOp();
2597   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByEdges(theShape, theEdge1, theEdge2);
2598   endService( " GEOM_Superv_i::GetFaceByEdges" );
2599   return anObj;
2600 }
2601
2602 //=============================================================================
2603 //  GetOppositeFace:
2604 //=============================================================================
2605 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetOppositeFace (GEOM::GEOM_Object_ptr theBlock,
2606                                                       GEOM::GEOM_Object_ptr theFace)
2607 {
2608   beginService( " GEOM_Superv_i::GetOppositeFace" );
2609   MESSAGE("GEOM_Superv_i::GetOppositeFace");
2610   getBlocksOp();
2611   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetOppositeFace(theBlock, theFace);
2612   endService( " GEOM_Superv_i::GetOppositeFace" );
2613   return anObj;
2614 }
2615
2616 //=============================================================================
2617 //  GetFaceNearPoint:
2618 //=============================================================================
2619 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceNearPoint (GEOM::GEOM_Object_ptr theShape,
2620                                                        GEOM::GEOM_Object_ptr thePoint)
2621 {
2622   beginService( " GEOM_Superv_i::GetFaceNearPoint" );
2623   MESSAGE("GEOM_Superv_i::GetFaceNearPoint");
2624   getBlocksOp();
2625   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceNearPoint(theShape, thePoint);
2626   endService( " GEOM_Superv_i::GetFaceNearPoint" );
2627   return anObj;
2628 }
2629
2630 //=============================================================================
2631 //  GetFaceByNormale:
2632 //=============================================================================
2633 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetFaceByNormale (GEOM::GEOM_Object_ptr theBlock,
2634                                                        GEOM::GEOM_Object_ptr theVector)
2635 {
2636   beginService( " GEOM_Superv_i::GetFaceByNormale" );
2637   MESSAGE("GEOM_Superv_i::GetFaceByNormale");
2638   getBlocksOp();
2639   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetFaceByNormale(theBlock, theVector);
2640   endService( " GEOM_Superv_i::GetFaceByNormale" );
2641   return anObj;
2642 }
2643
2644 //=============================================================================
2645 //  IsCompoundOfBlocks:
2646 //=============================================================================
2647 CORBA::Boolean GEOM_Superv_i::IsCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
2648                                                   CORBA::Long     theMinNbFaces,
2649                                                   CORBA::Long     theMaxNbFaces,
2650                                                   CORBA::Long&          theNbBlocks)
2651 {
2652   beginService( " GEOM_Superv_i::IsCompoundOfBlocks" );
2653   MESSAGE("GEOM_Superv_i::IsCompoundOfBlocks");
2654   getBlocksOp();
2655   CORBA::Boolean aRes = myBlocksOp->IsCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces, theNbBlocks);
2656   endService( " GEOM_Superv_i::IsCompoundOfBlocks" );
2657   return aRes;
2658 }
2659
2660 //=============================================================================
2661 //  CheckCompoundOfBlocks:
2662 //=============================================================================
2663 CORBA::Boolean GEOM_Superv_i::CheckCompoundOfBlocks
2664 (GEOM::GEOM_Object_ptr theCompound,
2665  GEOM::GEOM_IBlocksOperations::BCErrors_out theErrors)
2666 {
2667   beginService( " GEOM_Superv_i::CheckCompoundOfBlocks" );
2668   MESSAGE("GEOM_Superv_i::CheckCompoundOfBlocks");
2669   getBlocksOp();
2670   CORBA::Boolean aRes = myBlocksOp->CheckCompoundOfBlocks(theCompound, -1., theErrors);
2671   endService( " GEOM_Superv_i::CheckCompoundOfBlocks" );
2672   return aRes;
2673 }
2674
2675 //=============================================================================
2676 //  PrintBCErrors:
2677 //=============================================================================
2678 char* GEOM_Superv_i::PrintBCErrors (GEOM::GEOM_Object_ptr theCompound,
2679                                     const GEOM::GEOM_IBlocksOperations::BCErrors& theErrors)
2680 {
2681   beginService( " GEOM_Superv_i::PrintBCErrors" );
2682   MESSAGE("GEOM_Superv_i::PrintBCErrors");
2683   getBlocksOp();
2684   char* anErrors = myBlocksOp->PrintBCErrors(theCompound, theErrors);
2685   endService( " GEOM_Superv_i::PrintBCErrors" );
2686   return anErrors;
2687 }
2688
2689 //=============================================================================
2690 //  ExplodeCompoundOfBlocks:
2691 //=============================================================================
2692 GEOM::GEOM_List_ptr GEOM_Superv_i::ExplodeCompoundOfBlocks (GEOM::GEOM_Object_ptr theCompound,
2693                                                                 CORBA::Long     theMinNbFaces,
2694                                                                 CORBA::Long     theMaxNbFaces)
2695 {
2696   beginService( " GEOM_Superv_i::ExplodeCompoundOfBlocks" );
2697   MESSAGE("GEOM_Superv_i::ExplodeCompoundOfBlocks");
2698   getBlocksOp();
2699   GEOM::ListOfGO* aBlocks = myBlocksOp->ExplodeCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces);
2700   GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aBlocks));
2701   endService( " GEOM_Superv_i::ExplodeCompoundOfBlocks" );
2702   return aListPtr->_this();
2703 }
2704
2705 //=============================================================================
2706 //  GetBlockNearPoint:
2707 //=============================================================================
2708 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockNearPoint (GEOM::GEOM_Object_ptr theCompound,
2709                                                         GEOM::GEOM_Object_ptr thePoint)
2710 {
2711   beginService( " GEOM_Superv_i::GetBlockNearPoint" );
2712   MESSAGE("GEOM_Superv_i::GetBlockNearPoint");
2713   getBlocksOp();
2714   GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetBlockNearPoint(theCompound, thePoint);
2715   endService( " GEOM_Superv_i::GetBlockNearPoint" );
2716   return anObj;
2717 }
2718
2719 //=============================================================================
2720 //  GetBlockByParts:
2721 //=============================================================================
2722 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetBlockByParts (GEOM::GEOM_Object_ptr theCompound,
2723                                                       GEOM::GEOM_List_ptr theParts)
2724 {
2725   beginService( " GEOM_Superv_i::GetBlockByParts" );
2726   MESSAGE("GEOM_Superv_i::GetBlockByParts");
2727   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
2728       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theParts, myPOA).in())) {
2729     getBlocksOp();
2730     GEOM::GEOM_Object_ptr anObj = myBlocksOp->GetBlockByParts(theCompound, aListImplP->GetList());
2731     endService( " GEOM_Superv_i::GetBlockByParts" );
2732     return anObj;
2733   }
2734   endService( " GEOM_Superv_i::GetBlockByParts" );
2735   return NULL;
2736 }
2737
2738 //=============================================================================
2739 //  GetBlocksByParts:
2740 //=============================================================================
2741 GEOM::GEOM_List_ptr GEOM_Superv_i::GetBlocksByParts (GEOM::GEOM_Object_ptr theCompound,
2742                                                          GEOM::GEOM_List_ptr theParts)
2743 {
2744   beginService( " GEOM_Superv_i::GetBlocksByParts" );
2745   MESSAGE("GEOM_Superv_i::GetBlocksByParts");
2746   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
2747       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theParts, myPOA).in())) {
2748     getBlocksOp();
2749
2750     GEOM::ListOfGO* aBlocks = myBlocksOp->GetBlocksByParts(theCompound, aListImplP->GetList());
2751     GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aBlocks));
2752     endService( " GEOM_Superv_i::GetBlocksByParts" );
2753     return aListPtr->_this();
2754   }
2755   endService( " GEOM_Superv_i::GetBlocksByParts" );
2756   return NULL;
2757 }
2758
2759 //=============================================================================
2760 //  MakeMultiTransformation1D:
2761 //=============================================================================
2762 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMultiTransformation1D (GEOM::GEOM_Object_ptr theBlock,
2763                                                                 CORBA::Long     theDirFace1,
2764                                                                 CORBA::Long     theDirFace2,
2765                                                                 CORBA::Long     theNbTimes)
2766 {
2767   beginService( " GEOM_Superv_i::MakeMultiTransformation1D" );
2768   MESSAGE("GEOM_Superv_i::MakeMultiTransformation1D");
2769   getBlocksOp();
2770   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeMultiTransformation1D(theBlock, theDirFace1, theDirFace2, theNbTimes);
2771   endService( " GEOM_Superv_i::MakeMultiTransformation1D" );
2772   return anObj;
2773 }
2774
2775 //=============================================================================
2776 //  MakeMultiTransformation2D:
2777 //=============================================================================
2778 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeMultiTransformation2D
2779 (GEOM::GEOM_Object_ptr theBlock,
2780  CORBA::Long     theDirFace1U,
2781  CORBA::Long     theDirFace2U,
2782  CORBA::Long     theNbTimesU,
2783  CORBA::Long     theDirFace1V,
2784  CORBA::Long     theDirFace2V,
2785  CORBA::Long     theNbTimesV)
2786 {
2787   beginService( " GEOM_Superv_i::MakeMultiTransformation2D" );
2788   MESSAGE("GEOM_Superv_i::MakeMultiTransformation2D");
2789   getBlocksOp();
2790   GEOM::GEOM_Object_ptr anObj = myBlocksOp->MakeMultiTransformation2D(theBlock,
2791                                                                       theDirFace1U, theDirFace2U, theNbTimesU,
2792                                                                       theDirFace1V, theDirFace2V, theNbTimesV);
2793   endService( " GEOM_Superv_i::MakeMultiTransformation2D" );
2794   return anObj;
2795 }
2796
2797 //=============================== CurvesOperations ============================
2798 //=============================================================================
2799 //  MakeCirclePntVecR:
2800 //=============================================================================
2801 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCirclePntVecR (GEOM::GEOM_Object_ptr theCenter,
2802                                                         GEOM::GEOM_Object_ptr theVector,
2803                                                         CORBA::Double theR)
2804 {
2805   beginService( " GEOM_Superv_i::MakeCirclePntVecR" );
2806   MESSAGE("GEOM_Superv_i::MakeCirclePntVecR");
2807   getCurvesOp();
2808   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCirclePntVecR(theCenter, theVector, theR);
2809   endService( " GEOM_Superv_i::MakeCirclePntVecR" );
2810   return anObj;
2811 }
2812
2813 //=============================================================================
2814 //  MakeCircleThreePnt:
2815 //=============================================================================
2816 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCircleThreePnt (GEOM::GEOM_Object_ptr thePnt1,
2817                                                          GEOM::GEOM_Object_ptr thePnt2,
2818                                                          GEOM::GEOM_Object_ptr thePnt3)
2819 {
2820   beginService( " GEOM_Superv_i::MakeCircleThreePnt" );
2821   MESSAGE("GEOM_Superv_i::MakeCircleThreePnt");
2822   getCurvesOp();
2823   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCircleThreePnt(thePnt1, thePnt2, thePnt3);
2824   endService( " GEOM_Superv_i::MakeCircleThreePnt" );
2825   return anObj;
2826 }
2827 //=============================================================================
2828 //  MakeCircleCenter2Pnt:
2829 //=============================================================================
2830 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCircleCenter2Pnt (GEOM::GEOM_Object_ptr thePnt1,
2831                                                              GEOM::GEOM_Object_ptr thePnt2,
2832                                                            GEOM::GEOM_Object_ptr thePnt3)
2833 {
2834   beginService( " GEOM_Superv_i::MakeCircleCenter2Pnt" );
2835   MESSAGE("GEOM_Superv_i::MakeCircleCenter2Pnt");
2836   getCurvesOp();
2837   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCircleCenter2Pnt(thePnt1, thePnt2, thePnt3);
2838   endService( " GEOM_Superv_i::MakeCircleCenter2Pnt" );
2839   return anObj;
2840 }
2841
2842 //=============================================================================
2843 //  MakeEllipse:
2844 //=============================================================================
2845 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEllipse (GEOM::GEOM_Object_ptr theCenter,
2846                                                   GEOM::GEOM_Object_ptr theVector,
2847                                                   CORBA::Double theRMajor,
2848                                                   CORBA::Double theRMinor)
2849 {
2850   beginService( " GEOM_Superv_i::MakeEllipse" );
2851   MESSAGE("GEOM_Superv_i::MakeEllipse");
2852   getCurvesOp();
2853   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeEllipse(theCenter, theVector, theRMajor, theRMinor);
2854   endService( " GEOM_Superv_i::MakeEllipse" );
2855   return anObj;
2856 }
2857
2858 //=============================================================================
2859 //  MakeEllipseVec:
2860 //=============================================================================
2861 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeEllipseVec (GEOM::GEOM_Object_ptr theCenter,
2862                                                      GEOM::GEOM_Object_ptr theVector,
2863                                                      CORBA::Double theRMajor,
2864                                                      CORBA::Double theRMinor,
2865                                                      GEOM::GEOM_Object_ptr theVectorMajor)
2866 {
2867   beginService( " GEOM_Superv_i::MakeEllipseVec" );
2868   MESSAGE("GEOM_Superv_i::MakeEllipseVec");
2869   getCurvesOp();
2870   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeEllipseVec(theCenter, theVector, theRMajor, theRMinor, theVectorMajor);
2871   endService( " GEOM_Superv_i::MakeEllipseVec" );
2872   return anObj;
2873 }
2874
2875 //=============================================================================
2876 //  MakeArc:
2877 //=============================================================================
2878 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArc (GEOM::GEOM_Object_ptr thePnt1,
2879                                               GEOM::GEOM_Object_ptr thePnt2,
2880                                               GEOM::GEOM_Object_ptr thePnt3)
2881 {
2882   beginService( " GEOM_Superv_i::MakeArc" );
2883   MESSAGE("GEOM_Superv_i::MakeArc");
2884   getCurvesOp();
2885   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArc(thePnt1, thePnt2, thePnt3);
2886   endService( " GEOM_Superv_i::MakeArc" );
2887   return anObj;
2888 }
2889
2890 //=============================================================================
2891 //  MakeArcCenter:
2892 //=============================================================================
2893 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArcCenter (GEOM::GEOM_Object_ptr theCenter,
2894                                                     GEOM::GEOM_Object_ptr thePnt1,
2895                                                     GEOM::GEOM_Object_ptr thePnt2,
2896                                                     CORBA::Boolean theSense)
2897 {
2898   beginService( " GEOM_Superv_i::MakeArcCenter" );
2899   MESSAGE("GEOM_Superv_i::MakeArcCenter");
2900   getCurvesOp();
2901   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArcCenter(theCenter, thePnt1, thePnt2,theSense);
2902   endService( " GEOM_Superv_i::MakeArcCenter" );
2903   return anObj;
2904 }
2905
2906 //=============================================================================
2907 //  MakeArcOfEllipse:
2908 //=============================================================================
2909 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArcOfEllipse (GEOM::GEOM_Object_ptr thePnt1,
2910                                                        GEOM::GEOM_Object_ptr thePnt2,
2911                                                        GEOM::GEOM_Object_ptr thePnt3)
2912 {
2913   beginService( " GEOM_Superv_i::MakeArcOfEllipse" );
2914   MESSAGE("GEOM_Superv_i::MakeArcOfEllipse");
2915   getCurvesOp();
2916   GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeArcOfEllipse(thePnt1, thePnt2, thePnt3);
2917   endService( " GEOM_Superv_i::MakeArcOfEllipse" );
2918   return anObj;
2919 }
2920
2921 //=============================================================================
2922 //  MakePolyline:
2923 //=============================================================================
2924 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePolyline (GEOM::GEOM_List_ptr thePoints,
2925                                                    CORBA::Boolean      theIsClosed)
2926 {
2927   beginService( " GEOM_Superv_i::MakePolyline" );
2928   MESSAGE("GEOM_Superv_i::MakePolyline");
2929   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
2930       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
2931     getCurvesOp();
2932     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakePolyline(aListImplP->GetList(), theIsClosed);
2933     endService( " GEOM_Superv_i::MakePolyline" );
2934     return anObj;
2935   }
2936   endService( " GEOM_Superv_i::MakePolyline" );
2937   return NULL;
2938 }
2939
2940 //=============================================================================
2941 //  MakeSplineBezier:
2942 //=============================================================================
2943 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineBezier (GEOM::GEOM_List_ptr thePoints,
2944                                                        CORBA::Boolean      theIsClosed)
2945 {
2946   beginService( " GEOM_Superv_i::MakeSplineBezier" );
2947   MESSAGE("GEOM_Superv_i::MakeSplineBezier");
2948   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
2949       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
2950     getCurvesOp();
2951     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSplineBezier(aListImplP->GetList(), theIsClosed);
2952     endService( " GEOM_Superv_i::MakeSplineBezier" );
2953     return anObj;
2954   }
2955   endService( " GEOM_Superv_i::MakeSplineBezier" );
2956   return NULL;
2957 }
2958
2959 //=============================================================================
2960 //  MakeSplineInterpolation:
2961 //=============================================================================
2962 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSplineInterpolation (GEOM::GEOM_List_ptr thePoints,
2963                                                               CORBA::Boolean      theIsClosed,
2964                                                               CORBA::Boolean      theDoReordering)
2965 {
2966   beginService( " GEOM_Superv_i::MakeSplineInterpolation" );
2967   MESSAGE("GEOM_Superv_i::MakeSplineInterpolation");
2968   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
2969       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thePoints, myPOA).in())) {
2970     getCurvesOp();
2971     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSplineInterpolation(aListImplP->GetList(), theIsClosed, theDoReordering);
2972     endService( " GEOM_Superv_i::MakeSplineInterpolation" );
2973     return anObj;
2974   }
2975   endService( " GEOM_Superv_i::MakeSplineInterpolation" );
2976   return NULL;
2977 }
2978
2979 //=============================================================================
2980 //  MakeSketcher:
2981 //=============================================================================
2982 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSketcher (const char* theCommand,
2983                                                    GEOM::GEOM_List_ptr theWorkingPlane)
2984 {
2985   beginService( " GEOM_Superv_i::MakeSketcher" );
2986   MESSAGE("GEOM_Superv_i::MakeSketcher");
2987   if (GEOM_List_i<GEOM::ListOfDouble>* aListImplWP =
2988       dynamic_cast<GEOM_List_i<GEOM::ListOfDouble>*>(GetServant(theWorkingPlane, myPOA).in())) {
2989     getCurvesOp();
2990     GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeSketcher(theCommand, aListImplWP->GetList());
2991     endService( " GEOM_Superv_i::MakeSketcher" );
2992     return anObj;
2993   }
2994   endService( " GEOM_Superv_i::MakeSketcher" );
2995   return NULL;
2996 }
2997
2998 //=============================================================================
2999 //  Make3DSketcher:
3000 //=============================================================================
3001 GEOM::GEOM_Object_ptr GEOM_Superv_i::Make3DSketcher ( GEOM::GEOM_List_ptr theCoordinates)
3002 {
3003   beginService( " GEOM_Superv_i::Make3DSketcher" );
3004   MESSAGE("GEOM_Superv_i::Make3DSketcher");
3005   if (GEOM_List_i<GEOM::ListOfDouble>* aListImpl =
3006       dynamic_cast<GEOM_List_i<GEOM::ListOfDouble>*>(GetServant(theCoordinates, myPOA).in())) {
3007     getCurvesOp();
3008     GEOM::GEOM_Object_ptr anObj = myCurvesOp->Make3DSketcher(aListImpl->GetList());
3009     endService( " GEOM_Superv_i::Make3DSketcher" );
3010     return anObj;
3011   }
3012   endService( " GEOM_Superv_i::Make3DSketcher" );
3013   return NULL;
3014 }
3015
3016 //=============================== LocalOperations =============================
3017 //=============================================================================
3018 //  MakeFilletAll:
3019 //=============================================================================
3020 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletAll (GEOM::GEOM_Object_ptr theShape,
3021                                                     CORBA::Double theR)
3022 {
3023   beginService( " GEOM_Superv_i::MakeFilletAll" );
3024   MESSAGE("GEOM_Superv_i::MakeFilletAllMakeSketcher");
3025   getLocalOp();
3026   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletAll(theShape, theR);
3027   endService( " GEOM_Superv_i::MakeFilletAll" );
3028   return anObj;
3029 }
3030
3031 //=============================================================================
3032 //  MakeFilletEdges:
3033 //=============================================================================
3034 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletEdges (GEOM::GEOM_Object_ptr theShape,
3035                                                       CORBA::Double theR,
3036                                                       GEOM::GEOM_List_ptr theEdges)
3037 {
3038   beginService( " GEOM_Superv_i::MakeFilletEdges" );
3039   MESSAGE("GEOM_Superv_i::MakeFilletEdges");
3040   if (GEOM_List_i<GEOM::ListOfLong>* aListImplE =
3041       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
3042     getLocalOp();
3043     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletEdges(theShape, theR, aListImplE->GetList());
3044     endService( " GEOM_Superv_i::MakeFilletEdges" );
3045     return anObj;
3046   }
3047   endService( " GEOM_Superv_i::MakeFilletEdges" );
3048   return NULL;
3049 }
3050
3051 //=============================================================================
3052 //  MakeFilletEdges R1 R2:
3053 //=============================================================================
3054 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletEdgesR1R2 (GEOM::GEOM_Object_ptr theShape,
3055                                                           CORBA::Double theR1,
3056                                                           CORBA::Double theR2,
3057                                                           GEOM::GEOM_List_ptr theEdges)
3058 {
3059   beginService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
3060   MESSAGE("GEOM_Superv_i::MakeFilletEdgesR1R2");
3061   if (GEOM_List_i<GEOM::ListOfLong>* aListImplE =
3062       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
3063     getLocalOp();
3064     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletEdgesR1R2(theShape, theR1,
3065                                                                  theR2, aListImplE->GetList());
3066     endService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
3067     return anObj;
3068   }
3069   endService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
3070   return NULL;
3071 }
3072
3073 //=============================================================================
3074 //  MakeFilletFaces:
3075 //=============================================================================
3076 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletFaces (GEOM::GEOM_Object_ptr theShape,
3077                                                       CORBA::Double theR,
3078                                                       GEOM::GEOM_List_ptr theFaces)
3079 {
3080   beginService( " GEOM_Superv_i::MakeFilletFaces" );
3081   MESSAGE("GEOM_Superv_i::MakeFilletFaces");
3082   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
3083       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
3084     getLocalOp();
3085     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletFaces(theShape, theR, aListImplF->GetList());
3086     endService( " GEOM_Superv_i::MakeFilletFaces" );
3087     return anObj;
3088   }
3089   endService( " GEOM_Superv_i::MakeFilletFaces" );
3090   return NULL;
3091 }
3092
3093 //=============================================================================
3094 //  MakeFilletFaces R1 R2:
3095 //=============================================================================
3096 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletFacesR1R2 (GEOM::GEOM_Object_ptr theShape,
3097                                                           CORBA::Double theR1,
3098                                                           CORBA::Double theR2,
3099                                                           GEOM::GEOM_List_ptr theFaces)
3100 {
3101   beginService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
3102   MESSAGE("GEOM_Superv_i::MakeFilletFacesR1R2");
3103   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
3104       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
3105     getLocalOp();
3106     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletFacesR1R2(theShape, theR1, theR2,
3107                                                                  aListImplF->GetList());
3108     endService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
3109     return anObj;
3110   }
3111   endService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
3112   return NULL;
3113 }
3114
3115 //=============================================================================
3116 //  MakeFillet2D:
3117 //=============================================================================
3118 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFillet2D (GEOM::GEOM_Object_ptr theShape,
3119                                                    CORBA::Double theR,
3120                                                    GEOM::GEOM_List_ptr theVertexes)
3121 {
3122   beginService( " GEOM_Superv_i::MakeFillet2D" );
3123   MESSAGE("GEOM_Superv_i::MakeFillet2D");
3124   if (GEOM_List_i<GEOM::ListOfLong>* aListImplV =
3125       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theVertexes, myPOA).in())) {
3126     getLocalOp();
3127     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFillet2D(theShape, theR, aListImplV->GetList());
3128     endService( " GEOM_Superv_i::MakeFillet2D" );
3129     return anObj;
3130   }
3131   endService( " GEOM_Superv_i::MakeFillet2D" );
3132   return NULL;
3133 }
3134
3135 //=============================================================================
3136 //  MakeFillet1D:
3137 //=============================================================================
3138 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFillet1D (GEOM::GEOM_Object_ptr theShape,
3139                                                    CORBA::Double theR,
3140                                                    GEOM::GEOM_List_ptr theVertexes,
3141                                                    CORBA::Boolean doIgnoreSecantVertices)
3142 {
3143   beginService( " GEOM_Superv_i::MakeFillet1D" );
3144   MESSAGE("GEOM_Superv_i::MakeFillet1D");
3145   if (GEOM_List_i<GEOM::ListOfLong>* aListImplV =
3146       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theVertexes, myPOA).in())) {
3147     getLocalOp();
3148     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFillet1D
3149       (theShape, theR, aListImplV->GetList(), doIgnoreSecantVertices);
3150     endService( " GEOM_Superv_i::MakeFillet1D" );
3151     return anObj;
3152   }
3153   endService( " GEOM_Superv_i::MakeFillet1D" );
3154   return NULL;
3155 }
3156
3157 //=============================================================================
3158 //  MakeChamferAll:
3159 //=============================================================================
3160 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferAll (GEOM::GEOM_Object_ptr theShape, CORBA::Double theD)
3161 {
3162   beginService( " GEOM_Superv_i::MakeChamferAll" );
3163   MESSAGE("GEOM_Superv_i::MakeChamferAll");
3164   getLocalOp();
3165   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferAll(theShape, theD);
3166   endService( " GEOM_Superv_i::MakeChamferAll" );
3167   return anObj;
3168 }
3169
3170 //=============================================================================
3171 //  MakeChamferEdge:
3172 //=============================================================================
3173 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdge (GEOM::GEOM_Object_ptr theShape,
3174                                                       CORBA::Double theD1, CORBA::Double theD2,
3175                                                       CORBA::Long theFace1, CORBA::Long theFace2)
3176 {
3177   beginService( " GEOM_Superv_i::MakeChamferEdge" );
3178   MESSAGE("GEOM_Superv_i::MakeChamferEdge");
3179   getLocalOp();
3180   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2);
3181   endService( " GEOM_Superv_i::MakeChamferEdge" );
3182   return anObj;
3183 }
3184
3185 //=============================================================================
3186 //  MakeChamferEdgeAD:
3187 //=============================================================================
3188 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdgeAD (GEOM::GEOM_Object_ptr theShape,
3189                                                         CORBA::Double theD, CORBA::Double theAngle,
3190                                                         CORBA::Long theFace1, CORBA::Long theFace2)
3191 {
3192   beginService( " GEOM_Superv_i::MakeChamferEdgeAD" );
3193   MESSAGE("GEOM_Superv_i::MakeChamferEdgeAD");
3194   getLocalOp();
3195   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdgeAD(theShape, theD, theAngle, theFace1, theFace2);
3196   endService( " GEOM_Superv_i::MakeChamferEdgeAD" );
3197   return anObj;
3198 }
3199
3200 //=============================================================================
3201 //  MakeChamferFaces:
3202 //=============================================================================
3203 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferFaces (GEOM::GEOM_Object_ptr theShape,
3204                                                        CORBA::Double theD1, CORBA::Double theD2,
3205                                                        GEOM::GEOM_List_ptr theFaces)
3206 {
3207   beginService( " GEOM_Superv_i::MakeChamferFaces" );
3208   MESSAGE("GEOM_Superv_i::MakeChamferFaces");
3209   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
3210       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
3211     getLocalOp();
3212     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferFaces(theShape, theD1, theD2, aListImplF->GetList());
3213     endService( " GEOM_Superv_i::MakeChamferFaces" );
3214     return anObj;
3215   }
3216   endService( " GEOM_Superv_i::MakeChamferFaces" );
3217   return NULL;
3218 }
3219
3220 //=============================================================================
3221 //  MakeChamferFacesAD:
3222 //=============================================================================
3223 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferFacesAD (GEOM::GEOM_Object_ptr theShape,
3224                                                          CORBA::Double theD, CORBA::Double theAngle,
3225                                                          GEOM::GEOM_List_ptr theFaces)
3226 {
3227   beginService( " GEOM_Superv_i::MakeChamferFacesAD" );
3228   MESSAGE("GEOM_Superv_i::MakeChamferFacesAD");
3229   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
3230       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
3231     getLocalOp();
3232     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferFacesAD(theShape, theD, theAngle, aListImplF->GetList());
3233     endService( " GEOM_Superv_i::MakeChamferFacesAD" );
3234     return anObj;
3235   }
3236   endService( " GEOM_Superv_i::MakeChamferFacesAD" );
3237   return NULL;
3238 }
3239
3240 //=============================================================================
3241 //  MakeChamferEdges:
3242 //=============================================================================
3243 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdges (GEOM::GEOM_Object_ptr theShape,
3244                                                        CORBA::Double theD1, CORBA::Double theD2,
3245                                                        GEOM::GEOM_List_ptr theEdges)
3246 {
3247   beginService( " GEOM_Superv_i::MakeChamferEdges" );
3248   MESSAGE("GEOM_Superv_i::MakeChamferEdges");
3249   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
3250       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
3251     getLocalOp();
3252     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdges(theShape, theD1, theD2, aListImplF->GetList());
3253     endService( " GEOM_Superv_i::MakeChamferEdges" );
3254     return anObj;
3255   }
3256   endService( " GEOM_Superv_i::MakeChamferEdges" );
3257   return NULL;
3258 }
3259
3260 //=============================================================================
3261 //  MakeChamferEdgesAD:
3262 //=============================================================================
3263 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdgesAD (GEOM::GEOM_Object_ptr theShape,
3264                                                          CORBA::Double theD, CORBA::Double theAngle,
3265                                                          GEOM::GEOM_List_ptr theEdges)
3266 {
3267   beginService( " GEOM_Superv_i::MakeChamferEdgesAD" );
3268   MESSAGE("GEOM_Superv_i::MakeChamferEdgesAD");
3269   if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
3270       dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
3271     getLocalOp();
3272     GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdgesAD(theShape, theD, theAngle, aListImplF->GetList());
3273     endService( " GEOM_Superv_i::MakeChamferEdgesAD" );
3274     return anObj;
3275   }
3276   endService( " GEOM_Superv_i::MakeChamferEdgesAD" );
3277   return NULL;
3278 }
3279
3280 //=============================================================================
3281 //  MakeArchimede:
3282 //=============================================================================
3283 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeArchimede (GEOM::GEOM_Object_ptr theShape,
3284                                                     CORBA::Double theWeight,
3285                                                     CORBA::Double theWaterDensity,
3286                                                     CORBA::Double theMeshingDeflection)
3287 {
3288   beginService( " GEOM_Superv_i::MakeArchimede" );
3289   MESSAGE("GEOM_Superv_i::MakeArchimede");
3290   getLocalOp();
3291   GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeArchimede(theShape, theWeight, theWaterDensity, theMeshingDeflection);
3292   endService( " GEOM_Superv_i::MakeArchimede" );
3293   return anObj;
3294 }
3295
3296 //=============================================================================
3297 //  GetSubShapeIndexMakeFilletAll:
3298 //=============================================================================
3299 CORBA::Long GEOM_Superv_i::GetSubShapeIndex (GEOM::GEOM_Object_ptr theShape,
3300                                              GEOM::GEOM_Object_ptr theSubShape)
3301 {
3302   beginService( " GEOM_Superv_i::GetSubShapeIndex" );
3303   MESSAGE("GEOM_Superv_i::GetSubShapeIndexMakeArchimede");
3304   getLocalOp();
3305   CORBA::Long aRes = myLocalOp->GetSubShapeIndex(theShape, theSubShape);
3306   endService( " GEOM_Superv_i::GetSubShapeIndex" );
3307   return aRes;
3308 }
3309
3310 //=============================== GroupOperations =============================
3311 //=============================================================================
3312 //  CreateGroup:
3313 //=============================================================================
3314 GEOM::GEOM_Object_ptr GEOM_Superv_i::CreateGroup (GEOM::GEOM_Object_ptr theMainShape,
3315                                                   CORBA::Long theShapeType)
3316 {
3317   beginService( " GEOM_Superv_i::CreateGroup" );
3318   MESSAGE("GEOM_Superv_i::CreateGroup");
3319   getGroupOp();
3320   GEOM::GEOM_Object_ptr anObj = myGroupOp->CreateGroup(theMainShape, theShapeType);
3321   endService( " GEOM_Superv_i::CreateGroup" );
3322   return anObj;
3323 }
3324
3325 //=============================================================================
3326 //  AddObject:
3327 //=============================================================================
3328 void GEOM_Superv_i::AddObject (GEOM::GEOM_Object_ptr theGroup,
3329                                CORBA::Long theSubShapeId)
3330 {
3331   beginService( " GEOM_Superv_i::AddObject" );
3332   MESSAGE("GEOM_Superv_i::AddObject");
3333   getGroupOp();
3334   myGroupOp->AddObject(theGroup, theSubShapeId);
3335   endService( " GEOM_Superv_i::AddObject" );
3336 }
3337
3338 //=============================================================================
3339 //  RemoveObject:
3340 //=============================================================================
3341 void GEOM_Superv_i::RemoveObject (GEOM::GEOM_Object_ptr theGroup,
3342                                   CORBA::Long theSubShapeId)
3343 {
3344   beginService( " GEOM_Superv_i::RemoveObject" );
3345   MESSAGE("GEOM_Superv_i::RemoveObject");
3346   getGroupOp();
3347   myGroupOp->RemoveObject(theGroup, theSubShapeId);
3348   endService( " GEOM_Superv_i::RemoveObject" );
3349 }
3350
3351 //=============================================================================
3352 //  GetType:
3353 //=============================================================================
3354 CORBA::Long GEOM_Superv_i::GetType (GEOM::GEOM_Object_ptr theGroup)
3355 {
3356   beginService( " GEOM_Superv_i::GetType" );
3357   MESSAGE("GEOM_Superv_i::GetType");
3358   getGroupOp();
3359   CORBA::Long aResult = myGroupOp->GetType(theGroup);
3360   endService( " GEOM_Superv_i::GetType" );
3361   return aResult;
3362 }
3363
3364 //=============================================================================
3365 //  GetMainShape:
3366 //=============================================================================
3367 GEOM::GEOM_Object_ptr GEOM_Superv_i::GetMainShape (GEOM::GEOM_Object_ptr theGroup)
3368 {
3369   beginService( " GEOM_Superv_i::GetMainShape" );
3370   MESSAGE("GEOM_Superv_i::GetMainShape");
3371   getGroupOp();
3372   GEOM::GEOM_Object_ptr anObj = myGroupOp->GetMainShape(theGroup);
3373   endService( " GEOM_Superv_i::GetMainShape" );
3374   return anObj;
3375 }
3376
3377 //=============================================================================
3378 //  GetObjects:
3379 //=============================================================================
3380 GEOM::GEOM_List_ptr GEOM_Superv_i::GetObjects (GEOM::GEOM_Object_ptr theGroup)
3381 {
3382   beginService( " GEOM_Superv_i::GetObjects" );
3383   MESSAGE("GEOM_Superv_i::GetObjects");
3384   getGroupOp();
3385
3386   GEOM::ListOfLong* aList = myGroupOp->GetObjects(theGroup);
3387   GEOM_List_i<GEOM::ListOfLong>* aListPtr = new GEOM_List_i<GEOM::ListOfLong>(*(aList));
3388   MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
3389   endService( " GEOM_Superv_i::GetObjects" );
3390   return aListPtr->_this();
3391 }
3392
3393 //=============================== Import/Export Operations =============================
3394 //=============================================================================
3395 //  Export STL
3396 //=============================================================================
3397 void GEOM_Superv_i::ExportSTL( GEOM::GEOM_Object_ptr theObject,
3398                                const char*           theFileName,
3399                                const bool            theIsASCII,
3400                                CORBA::Double         theDeflection,
3401                                const bool            theIsRelative )
3402 {
3403   beginService( " GEOM_Superv_i::ExportSTL" );
3404   MESSAGE("GEOM_Superv_i::ExportSTL");
3405   getSTLPluginOp();
3406   mySTLOp->ExportSTL( theObject, theFileName, theIsASCII, theDeflection, theIsRelative );
3407   endService( " GEOM_Superv_i::ExportSTL" );
3408 }
3409
3410 //=============================================================================
3411 //  Import STL
3412 //=============================================================================
3413 GEOM::GEOM_Object_ptr GEOM_Superv_i::ImportSTL( const char* theFileName )
3414 {
3415   beginService( " GEOM_Superv_i::ImportSTL" );
3416   MESSAGE("GEOM_Superv_i::ImportSTL");
3417   getSTLPluginOp();
3418   GEOM::ListOfGO* aSeq = mySTLOp->ImportSTL(theFileName );
3419   GEOM::GEOM_Object_var anObj;
3420
3421   if (aSeq->length() > 0) {
3422     anObj = aSeq->operator[](0);
3423   }
3424
3425   endService( " GEOM_Superv_i::ImportSTL" );
3426   return anObj._retn();
3427 }
3428
3429 //=============================================================================
3430 //  Export BREP
3431 //=============================================================================
3432 void GEOM_Superv_i::ExportBREP( GEOM::GEOM_Object_ptr theObject,
3433                                 const char*           theFileName )
3434 {
3435   beginService( " GEOM_Superv_i::ExportBREP" );
3436   MESSAGE("GEOM_Superv_i::ExportBREP");
3437   getBREPPluginOp();
3438   myBREPOp->ExportBREP( theObject, theFileName );
3439   endService( " GEOM_Superv_i::ExportBREP" );
3440 }
3441
3442 //=============================================================================
3443 //  Import BREP
3444 //=============================================================================
3445 GEOM::GEOM_Object_ptr GEOM_Superv_i::ImportBREP( const char* theFileName )
3446 {
3447   beginService( " GEOM_Superv_i::ImportBREP" );
3448   MESSAGE("GEOM_Superv_i::ImportBREP");
3449   getBREPPluginOp();
3450   GEOM::ListOfGO* aSeq = myBREPOp->ImportBREP(theFileName );
3451   GEOM::GEOM_Object_var anObj;
3452
3453   if (aSeq->length() > 0) {
3454     anObj = aSeq->operator[](0);
3455   }
3456
3457   endService( " GEOM_Superv_i::ImportBREP" );
3458   return anObj._retn();
3459 }
3460
3461 //=============================================================================
3462 //  Export STEP
3463 //=============================================================================
3464 void GEOM_Superv_i::ExportSTEP( GEOM::GEOM_Object_ptr theObject,
3465                                 const char*           theFileName )
3466 {
3467   beginService( " GEOM_Superv_i::ExportSTEP" );
3468   MESSAGE("GEOM_Superv_i::ExportSTEP");
3469   getSTEPPluginOp();
3470
3471   const GEOM::length_unit aUnit = GEOM::LU_METER;
3472
3473   mySTEPOp->ExportSTEP( theObject, theFileName, aUnit );
3474   endService( " GEOM_Superv_i::ExportSTEP" );
3475 }
3476
3477 //=============================================================================
3478 //  Import STEP
3479 //=============================================================================
3480 GEOM::GEOM_Object_ptr GEOM_Superv_i::ImportSTEP( const char* theFileName,
3481                                                  const bool  theIsIgnoreUnits )
3482 {
3483   beginService( " GEOM_Superv_i::ImportSTEP" );
3484   MESSAGE("GEOM_Superv_i::ImportSTEP");
3485   getSTEPPluginOp();
3486   GEOM::ListOfGO* aSeq = mySTEPOp->ImportSTEP(theFileName, theIsIgnoreUnits, false );
3487   GEOM::GEOM_Object_var anObj;
3488
3489   if (aSeq->length() > 0) {
3490     anObj = aSeq->operator[](0);
3491   }
3492
3493   endService( " GEOM_Superv_i::ImportSTEP" );
3494   return anObj._retn();
3495 }
3496
3497 //=============================================================================
3498 //  Export IGES
3499 //=============================================================================
3500 void GEOM_Superv_i::ExportIGES( GEOM::GEOM_Object_ptr theObject,
3501                                 const char*           theFileName,
3502                                 const char*           theVersion )
3503 {
3504   beginService( " GEOM_Superv_i::ExportIGES" );
3505   MESSAGE("GEOM_Superv_i::ExportIGES");
3506   getIGESPluginOp();
3507   myIGESOp->ExportIGES( theObject, theFileName, theVersion );
3508   endService( " GEOM_Superv_i::ExportIGES" );
3509 }
3510
3511 //=============================================================================
3512 //  Import IGES
3513 //=============================================================================
3514 GEOM::GEOM_Object_ptr GEOM_Superv_i::ImportIGES( const char* theFileName,
3515                                                  const bool  theIsIgnoreUnits )
3516 {
3517   beginService( " GEOM_Superv_i::ImportIGES" );
3518   MESSAGE("GEOM_Superv_i::ImportIGES");
3519   getIGESPluginOp();
3520   GEOM::ListOfGO* aSeq = myIGESOp->ImportIGES(theFileName, theIsIgnoreUnits );
3521   GEOM::GEOM_Object_var anObj;
3522
3523   if (aSeq->length() > 0) {
3524     anObj = aSeq->operator[](0);
3525   }
3526
3527   endService( " GEOM_Superv_i::ImportIGES" );
3528   return anObj._retn();
3529 }
3530
3531 //=============================================================================
3532 //  Export XAO
3533 //=============================================================================
3534 CORBA::Boolean GEOM_Superv_i::ExportXAO( GEOM::GEOM_Object_ptr shape,
3535                                          const GEOM::ListOfGO& groups,
3536                                          const GEOM::ListOfFields& fields,
3537                                          const char* author,
3538                                          const char* fileName,
3539                                          const char* shapeFileName )
3540 {
3541   beginService( " GEOM_Superv_i::ExportXAO" );
3542   MESSAGE("GEOM_Superv_i::ExportXAO");
3543   getXAOPluginOp();
3544   CORBA::Boolean isGood = myXAOOp->ExportXAO( shape, groups, fields, author, fileName, shapeFileName );
3545   endService( " GEOM_Superv_i::ExportXAO" );
3546   return isGood;
3547 }
3548
3549 //=============================================================================
3550 //  Import XAO
3551 //=============================================================================
3552 CORBA::Boolean GEOM_Superv_i::ImportXAO( const char* /*fileName*/,
3553                                          GEOM::GEOM_Object_out /*shape*/,
3554                                          GEOM::ListOfGO_out /*subShapes*/,
3555                                          GEOM::ListOfGO_out /*groups*/,
3556                                          GEOM::ListOfFields_out /*fields*/ )
3557 {
3558   return false;
3559 }
3560
3561
3562 //=============================================================================
3563 //  Export VTK
3564 //=============================================================================
3565 void GEOM_Superv_i::ExportVTK(  GEOM::GEOM_Object_ptr theObject,
3566                                 const char*           theFileName,
3567                                 CORBA::Double         theDeflection )
3568 {
3569   #ifdef WITH_VTK
3570   beginService( " GEOM_Superv_i::ExportVTK" );
3571   MESSAGE("GEOM_Superv_i::ExportVTK");
3572   getVTKPluginOp();
3573   myVTKOp->ExportVTK( theObject, theFileName, theDeflection );
3574   endService( " GEOM_Superv_i::ExportVTK" );
3575 #else
3576   std::string message("GEOM_Superv_i::ExportVTK functionality is unavailable");
3577   THROW_SALOME_CORBA_EXCEPTION(message.c_str(), SALOME::INTERNAL_ERROR);
3578 #endif
3579 }
3580
3581 //=============================== Advanced Operations =============================
3582 //=============================================================================
3583 //  MakePipeTShape
3584 //=============================================================================
3585 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShape
3586                     (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
3587                      CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
3588                      CORBA::Boolean theHexMesh)
3589 {
3590   beginService( " GEOM_Superv_i::MakePipeTShape" );
3591   MESSAGE("GEOM_Superv_i::MakePipeTShape");
3592   getAdvancedOp();
3593
3594   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShape(theR1, theW1, theL1, theR2, theW2, theL2, theHexMesh);
3595   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3596   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3597   endService( " GEOM_Superv_i::MakePipeTShape" );
3598   return aSeqPtr->_this();
3599 }
3600
3601 //=============================================================================
3602 //  MakePipeTShapeWithPosition
3603 //=============================================================================
3604 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeWithPosition
3605                     (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
3606                      CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2, CORBA::Boolean theHexMesh,
3607                      GEOM::GEOM_Object_ptr theP1, GEOM::GEOM_Object_ptr theP2, GEOM::GEOM_Object_ptr theP3)
3608 {
3609   beginService( " GEOM_Superv_i::MakePipeTShapeWithPosition" );
3610   MESSAGE("GEOM_Superv_i::MakePipeTShapeWithPosition");
3611   getAdvancedOp();
3612
3613   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeWithPosition(theR1, theW1, theL1, theR2, theW2, theL2, theHexMesh, theP1, theP2, theP3);
3614   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3615   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3616   endService( " GEOM_Superv_i::MakePipeTShapeWithPosition" );
3617   return aSeqPtr->_this();
3618 }
3619
3620 //=============================================================================
3621 //  MakePipeTShapeChamfer
3622 //=============================================================================
3623 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeChamfer
3624                     (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
3625                      CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
3626                      CORBA::Double theH, CORBA::Double theW, CORBA::Boolean theHexMesh)
3627 {
3628   beginService( " GEOM_Superv_i::MakePipeTShapeChamfer" );
3629   MESSAGE("GEOM_Superv_i::MakePipeTShapeChamfer");
3630   getAdvancedOp();
3631
3632   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeChamfer(theR1, theW1, theL1, theR2, theW2, theL2, theH, theW, theHexMesh);
3633   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3634   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3635   endService( " GEOM_Superv_i::MakePipeTShapeChamfer" );
3636   return aSeqPtr->_this();
3637 }
3638
3639 //=============================================================================
3640 //  MakePipeTShapeChamferWithPosition
3641 //=============================================================================
3642 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeChamferWithPosition
3643                     (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
3644                      CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
3645                      CORBA::Double theH, CORBA::Double theW, CORBA::Boolean theHexMesh,
3646                      GEOM::GEOM_Object_ptr theP1, GEOM::GEOM_Object_ptr theP2, GEOM::GEOM_Object_ptr theP3)
3647 {
3648   beginService( " GEOM_Superv_i::MakePipeTShapeChamferWithPosition" );
3649   MESSAGE("GEOM_Superv_i::MakePipeTShapeChamferWithPosition");
3650   getAdvancedOp();
3651
3652   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeChamferWithPosition(theR1, theW1, theL1, theR2, theW2, theL2, theH, theW, theHexMesh, theP1, theP2, theP3);
3653   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3654   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3655   endService( " GEOM_Superv_i::MakePipeTShapeChamferWithPosition" );
3656   return aSeqPtr->_this();
3657 }
3658
3659 //=============================================================================
3660 //  MakePipeTShapeFillet
3661 //=============================================================================
3662 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeFillet
3663                     (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
3664                      CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
3665                      CORBA::Double theRF, CORBA::Boolean theHexMesh)
3666 {
3667   beginService( " GEOM_Superv_i::MakePipeTShapeFillet" );
3668   MESSAGE("GEOM_Superv_i::MakePipeTShapeFillet");
3669   getAdvancedOp();
3670
3671   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeFillet(theR1, theW1, theL1, theR2, theW2, theL2, theRF, theHexMesh);
3672   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3673   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3674   endService( " GEOM_Superv_i::MakePipeTShapeFillet" );
3675   return aSeqPtr->_this();
3676 }
3677
3678 //=============================================================================
3679 //  MakePipeTShapeFilletWithPosition
3680 //=============================================================================
3681 GEOM::GEOM_List_ptr GEOM_Superv_i::MakePipeTShapeFilletWithPosition
3682                     (CORBA::Double theR1, CORBA::Double theW1, CORBA::Double theL1,
3683                      CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2,
3684                      CORBA::Double theRF, CORBA::Boolean theHexMesh,
3685                      GEOM::GEOM_Object_ptr theP1, GEOM::GEOM_Object_ptr theP2, GEOM::GEOM_Object_ptr theP3)
3686 {
3687   beginService( " GEOM_Superv_i::MakePipeTShapeFilletWithPosition" );
3688   MESSAGE("GEOM_Superv_i::MakePipeTShapeFilletWithPosition");
3689   getAdvancedOp();
3690
3691   GEOM::ListOfGO* aSeq = myAdvancedOp->MakePipeTShapeFilletWithPosition(theR1, theW1, theL1, theR2, theW2, theL2, theRF, theHexMesh, theP1, theP2, theP3);
3692   GEOM_List_i<GEOM::ListOfGO>* aSeqPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aSeq));
3693   MESSAGE(" List of "<<aSeqPtr->GetList().length()<<" element(s)");
3694   endService( " GEOM_Superv_i::MakePipeTShapeFilletWithPosition" );
3695   return aSeqPtr->_this();
3696 }
3697
3698 //=============================================================================
3699 //  MakeDividedDisk
3700 //=============================================================================
3701 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDividedDisk (CORBA::Double theR, CORBA::Double theRatio, 
3702                                                       CORBA::Short theOrientation, GEOM::pattern thePattern)
3703 {
3704   beginService( " GEOM_Superv_i::MakeDividedDisk" );
3705   MESSAGE("GEOM_Superv_i::MakeDividedDisk");
3706   getAdvancedOp();
3707   GEOM::GEOM_Object_ptr anObj = myAdvancedOp->MakeDividedDisk(theR, theRatio, theOrientation, thePattern);
3708   endService( " GEOM_Superv_i::MakeDividedDisk" );
3709   return anObj;
3710 }
3711
3712 //=============================================================================
3713 //  MakeDividedCylinder
3714 //=============================================================================
3715 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDividedCylinder (CORBA::Double theR, 
3716                                                           CORBA::Double theH,
3717                                                           GEOM::pattern thePattern)
3718 {
3719   beginService( " GEOM_Superv_i::MakeDividedCylinder" );
3720   MESSAGE("GEOM_Superv_i::MakeDividedCylinder");
3721   getAdvancedOp();
3722   GEOM::GEOM_Object_ptr anObj = myAdvancedOp->MakeDividedCylinder(theR, theH, thePattern);
3723   endService( " GEOM_Superv_i::MakeDividedCylinder" );
3724   return anObj;
3725 }
3726
3727 //=============================================================================
3728 //  MakeSmoothingSurface
3729 //=============================================================================
3730 GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeSmoothingSurface (GEOM::GEOM_List_ptr thelPoints)
3731 {
3732   beginService( " GEOM_Superv_i::MakeSmoothingSurface" );
3733   MESSAGE("GEOM_Superv_i::MakeSmoothingSurface");
3734   getAdvancedOp();
3735   if (GEOM_List_i<GEOM::ListOfGO>* aListImplP =
3736       dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(thelPoints, myPOA).in())) {
3737     getCurvesOp();
3738     GEOM::GEOM_Object_ptr anObj = myAdvancedOp->MakeSmoothingSurface(aListImplP->GetList(), 2, 8, 0.);
3739     endService( " GEOM_Superv_i::MakeSmoothingSurface" );
3740     return anObj;
3741   }
3742   endService( " GEOM_Superv_i::MakeSmoothingSurface" );
3743   return NULL;
3744 }
3745
3746 /*@@ insert new functions before this line @@ do not remove this line @@*/
3747
3748 GEOM_Superv_i_With_Session::GEOM_Superv_i_With_Session(CORBA::ORB_ptr orb,
3749                 PortableServer::POA_ptr poa,
3750                 PortableServer::ObjectId * contId,
3751                 const char *instanceName,
3752                 const char *interfaceName):GEOM_Superv_i(orb,poa,contId,instanceName,interfaceName,true,new SALOME_NamingService(orb))
3753 {
3754 }
3755
3756 GEOM_Superv_i_Without_Session::GEOM_Superv_i_Without_Session(CORBA::ORB_ptr orb,
3757                 PortableServer::POA_ptr poa,
3758                 PortableServer::ObjectId * contId,
3759                 const char *instanceName,
3760                 const char *interfaceName, SALOME_NamingService_Abstract *my_name_service):GEOM_Superv_i(orb,poa,contId,instanceName,interfaceName,false, my_name_service)
3761 {
3762 }
3763
3764 //=====================================================================================
3765 // EXPORTED METHODS
3766 //=====================================================================================
3767 extern "C"
3768 {
3769 #ifdef WIN32
3770   __declspec( dllexport )
3771 #endif
3772   PortableServer::ObjectId * GEOM_SupervEngine_factory(CORBA::ORB_ptr orb,
3773                                                        PortableServer::POA_ptr poa,
3774                                                        PortableServer::ObjectId * contId,
3775                                                        const char *instanceName,
3776                                                        const char * interfaceName)
3777   {
3778     CORBA::Object_var o = poa->id_to_reference(*contId);
3779     Engines::Container_var cont = Engines::Container::_narrow(o);
3780     GEOM_Superv_i *myGEOM_Superv_i(nullptr);
3781     if(cont->is_SSL_mode())
3782     {
3783       PortableServer::ServantBase *contPtr = poa->reference_to_servant(cont);
3784       Abstract_Engines_Container_i *contPtrEff = dynamic_cast<Abstract_Engines_Container_i *>(contPtr);
3785       SALOME_NamingService_Abstract *decoNS = new SALOME_NamingService_Abstract_Decorator(contPtrEff->getNS());
3786       myGEOM_Superv_i = new GEOM_Superv_i_Without_Session(orb, poa, contId, instanceName, interfaceName,decoNS);
3787       //Don't understand the reason why this component is registered ???
3788   //    myGEOM_Superv_i->register_name("/myGEOM_Superv");
3789       return myGEOM_Superv_i->getId() ;
3790     }
3791     else
3792     {
3793       myGEOM_Superv_i = new GEOM_Superv_i_With_Session(orb, poa, contId, instanceName, interfaceName);
3794       return myGEOM_Superv_i->getId() ;
3795     }
3796   }
3797 }