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