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