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