Back to index

salome-geom  6.5.0
GEOM_IBasicOperations_i.cc
Go to the documentation of this file.
00001 // Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
00002 //
00003 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
00004 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
00005 //
00006 // This library is free software; you can redistribute it and/or
00007 // modify it under the terms of the GNU Lesser General Public
00008 // License as published by the Free Software Foundation; either
00009 // version 2.1 of the License.
00010 //
00011 // This library is distributed in the hope that it will be useful,
00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014 // Lesser General Public License for more details.
00015 //
00016 // You should have received a copy of the GNU Lesser General Public
00017 // License along with this library; if not, write to the Free Software
00018 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
00019 //
00020 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
00021 //
00022 
00023 #include <Standard_Stream.hxx>
00024 
00025 #include "GEOM_IBasicOperations_i.hh"
00026 
00027 #include "utilities.h"
00028 #include "OpUtil.hxx"
00029 #include "Utils_ExceptHandlers.hxx"
00030 
00031 #include "GEOM_Engine.hxx"
00032 #include "GEOM_Object.hxx"
00033 
00034 //=============================================================================
00038 //=============================================================================
00039 GEOM_IBasicOperations_i::GEOM_IBasicOperations_i (PortableServer::POA_ptr thePOA,
00040                                                   GEOM::GEOM_Gen_ptr theEngine,
00041                                                   ::GEOMImpl_IBasicOperations* theImpl)
00042      :GEOM_IOperations_i(thePOA, theEngine, theImpl)
00043 {
00044   MESSAGE("GEOM_IBasicOperations_i::GEOM_IBasicOperations_i");
00045 }
00046 
00047 //=============================================================================
00051 //=============================================================================
00052 GEOM_IBasicOperations_i::~GEOM_IBasicOperations_i()
00053 {
00054   MESSAGE("GEOM_IBasicOperations_i::~GEOM_IBasicOperations_i");
00055 }
00056 
00057 
00058 //=============================================================================
00062 //=============================================================================
00063 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointXYZ
00064   (CORBA::Double theX, CORBA::Double theY, CORBA::Double theZ)
00065 {
00066   GEOM::GEOM_Object_var aGEOMObject;
00067 
00068   //Set a not done flag
00069   GetOperations()->SetNotDone();
00070 
00071   //Create the point
00072   Handle(GEOM_Object) anObject = GetOperations()->MakePointXYZ(theX, theY, theZ);
00073   if (!GetOperations()->IsDone() || anObject.IsNull())
00074     return aGEOMObject._retn();
00075 
00076   return GetObject(anObject);
00077 }
00078 
00079 //=============================================================================
00083 //=============================================================================
00084 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointWithReference
00085   (GEOM::GEOM_Object_ptr theReference, CORBA::Double theX, CORBA::Double theY, CORBA::Double theZ)
00086 {
00087   GEOM::GEOM_Object_var aGEOMObject;
00088 
00089   //Set a not done flag
00090   GetOperations()->SetNotDone();
00091 
00092   //Get the reference point
00093   Handle(GEOM_Object) aReference = GetObjectImpl(theReference);
00094   if (aReference.IsNull()) return aGEOMObject._retn();
00095 
00096   //Create the point
00097   Handle(GEOM_Object) anObject =
00098     GetOperations()->MakePointWithReference(aReference, theX, theY, theZ);
00099   if (!GetOperations()->IsDone() || anObject.IsNull())
00100     return aGEOMObject._retn();
00101 
00102   return GetObject(anObject);
00103 }
00104 
00105 //=============================================================================
00109 //=============================================================================
00110 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnLinesIntersection
00111                   (GEOM::GEOM_Object_ptr theLine1,  GEOM::GEOM_Object_ptr theLine2)
00112 {
00113   GEOM::GEOM_Object_var aGEOMObject;
00114 
00115   //Set a not done flag
00116   GetOperations()->SetNotDone();
00117 
00118   //Get the reference Lines
00119   Handle(GEOM_Object) aRef1 = GetObjectImpl(theLine1);
00120   Handle(GEOM_Object) aRef2 = GetObjectImpl(theLine2);
00121   if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn();
00122 
00123   //Create the point
00124   Handle(GEOM_Object) anObject =
00125     GetOperations()->MakePointOnLinesIntersection(aRef1, aRef2);
00126   if (!GetOperations()->IsDone() || anObject.IsNull())
00127     return aGEOMObject._retn();
00128 
00129   return GetObject(anObject);
00130 }
00131 
00132 //=============================================================================
00136 //=============================================================================
00137 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnCurve
00138                   (GEOM::GEOM_Object_ptr theCurve,  CORBA::Double theParameter)
00139 {
00140   GEOM::GEOM_Object_var aGEOMObject;
00141 
00142   //Set a not done flag
00143   GetOperations()->SetNotDone();
00144 
00145   //Get the reference curve
00146   Handle(GEOM_Object) aReference = GetObjectImpl(theCurve);
00147   if (aReference.IsNull()) return aGEOMObject._retn();
00148 
00149   //Create the point
00150   Handle(GEOM_Object) anObject =
00151     GetOperations()->MakePointOnCurve(aReference, theParameter);
00152   if (!GetOperations()->IsDone() || anObject.IsNull())
00153     return aGEOMObject._retn();
00154 
00155   return GetObject(anObject);
00156 }
00157 
00158 //=============================================================================
00162 //=============================================================================
00163 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnCurveByLength
00164                   (GEOM::GEOM_Object_ptr theCurve,  
00165                  CORBA::Double         theLength,
00166                  GEOM::GEOM_Object_ptr theStartPoint)
00167 {
00168   GEOM::GEOM_Object_var aGEOMObject;
00169 
00170   //Set a not done flag
00171   GetOperations()->SetNotDone();
00172 
00173   //Get the reference curve
00174   Handle(GEOM_Object) aReference = GetObjectImpl(theCurve);
00175   if (aReference.IsNull()) return aGEOMObject._retn();
00176 
00177   //Get the reference point (can be NULL)
00178   Handle(GEOM_Object) aRefPoint;
00179   if (!CORBA::is_nil(theStartPoint)) {
00180     aRefPoint = GetObjectImpl(theStartPoint);
00181   }
00182 
00183   //Create the point
00184   Handle(GEOM_Object) anObject =
00185     GetOperations()->MakePointOnCurveByLength(aReference, theLength, aRefPoint);
00186   if (!GetOperations()->IsDone() || anObject.IsNull())
00187     return aGEOMObject._retn();
00188 
00189   return GetObject(anObject);
00190 }
00191 
00192 //=============================================================================
00196 //=============================================================================
00197 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnCurveByCoord
00198                   (GEOM::GEOM_Object_ptr theCurve, 
00199                    CORBA::Double theXParameter,
00200                    CORBA::Double theYParameter,
00201                    CORBA::Double theZParameter)
00202 {
00203   GEOM::GEOM_Object_var aGEOMObject;
00204 
00205   //Set a not done flag
00206   GetOperations()->SetNotDone();
00207 
00208   //Get the reference curve
00209   Handle(GEOM_Object) aReference = GetObjectImpl(theCurve);
00210   if (aReference.IsNull()) return aGEOMObject._retn();
00211 
00212   //Create the point
00213   Handle(GEOM_Object) anObject =
00214     GetOperations()->MakePointOnCurveByCoord(aReference, theXParameter,
00215                                              theYParameter, theZParameter);
00216   if (!GetOperations()->IsDone() || anObject.IsNull())
00217     return aGEOMObject._retn();
00218 
00219   return GetObject(anObject);
00220 }
00221 
00222 //=============================================================================
00226 //=============================================================================
00227 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnSurface
00228                                              (GEOM::GEOM_Object_ptr theSurface,
00229                                               CORBA::Double theUParameter,
00230                                               CORBA::Double theVParameter)
00231 {
00232   GEOM::GEOM_Object_var aGEOMObject;
00233 
00234   //Set a not done flag
00235   GetOperations()->SetNotDone();
00236 
00237   //Get the reference surface
00238   Handle(GEOM_Object) aReference = GetObjectImpl(theSurface);
00239   if (aReference.IsNull()) return aGEOMObject._retn();
00240 
00241   //Create the point
00242   Handle(GEOM_Object) anObject =
00243     GetOperations()->MakePointOnSurface(aReference, theUParameter, theVParameter);
00244   if (!GetOperations()->IsDone() || anObject.IsNull())
00245     return aGEOMObject._retn();
00246 
00247   return GetObject(anObject);
00248 }
00249 
00250 //=============================================================================
00254 //=============================================================================
00255 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnSurfaceByCoord
00256                                              (GEOM::GEOM_Object_ptr theSurface,
00257                                               CORBA::Double theXParameter,
00258                                               CORBA::Double theYParameter,
00259                                               CORBA::Double theZParameter)
00260 {
00261   GEOM::GEOM_Object_var aGEOMObject;
00262 
00263   //Set a not done flag
00264   GetOperations()->SetNotDone();
00265 
00266   //Get the reference surface
00267   Handle(GEOM_Object) aReference = GetObjectImpl(theSurface);
00268   if (aReference.IsNull()) return aGEOMObject._retn();
00269 
00270   //Create the point
00271   Handle(GEOM_Object) anObject =
00272     GetOperations()->MakePointOnSurfaceByCoord(aReference, theXParameter,
00273                                                theYParameter, theZParameter);
00274   if (!GetOperations()->IsDone() || anObject.IsNull())
00275     return aGEOMObject._retn();
00276 
00277   return GetObject(anObject);
00278 }
00279 
00280 
00281 //=============================================================================
00285 //=============================================================================
00286 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeTangentOnCurve
00287                   (GEOM::GEOM_Object_ptr theCurve,  CORBA::Double theParameter)
00288 {
00289   GEOM::GEOM_Object_var aGEOMObject;
00290 
00291   //Set a not done flag
00292   GetOperations()->SetNotDone();
00293 
00294   //Get the reference curve
00295   Handle(GEOM_Object) aReference = GetObjectImpl(theCurve);
00296   if (aReference.IsNull()) return aGEOMObject._retn();
00297 
00298   //Create the vector
00299   Handle(GEOM_Object) anObject =
00300     GetOperations()->MakeTangentOnCurve(aReference, theParameter);
00301   if (!GetOperations()->IsDone() || anObject.IsNull())
00302     return aGEOMObject._retn();
00303 
00304   return GetObject(anObject);
00305 }
00306 
00307 //=============================================================================
00311 //=============================================================================
00312 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeVectorDXDYDZ
00313   (CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
00314 {
00315   GEOM::GEOM_Object_var aGEOMObject;
00316 
00317   //Set a not done flag
00318   GetOperations()->SetNotDone();
00319 
00320   //Create the Vector
00321 
00322   Handle(GEOM_Object) anObject = GetOperations()->MakeVectorDXDYDZ(theDX, theDY, theDZ);
00323   if (!GetOperations()->IsDone() || anObject.IsNull())
00324     return aGEOMObject._retn();
00325 
00326   return GetObject(anObject);
00327 }
00328 
00329 //=============================================================================
00333 //=============================================================================
00334 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeVectorTwoPnt
00335                  (GEOM::GEOM_Object_ptr thePnt1, GEOM::GEOM_Object_ptr thePnt2)
00336 {
00337   GEOM::GEOM_Object_var aGEOMObject;
00338 
00339   //Set a not done flag
00340   GetOperations()->SetNotDone();
00341 
00342   //Get the reference points
00343   Handle(GEOM_Object) aRef1 = GetObjectImpl(thePnt1);
00344   Handle(GEOM_Object) aRef2 = GetObjectImpl(thePnt2);
00345   if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn();
00346 
00347   //Create the vector
00348   Handle(GEOM_Object) anObject = GetOperations()->MakeVectorTwoPnt(aRef1, aRef2);
00349   if (!GetOperations()->IsDone() || anObject.IsNull())
00350     return aGEOMObject._retn();
00351 
00352   return GetObject(anObject);
00353 }
00354 
00355 
00356 //=============================================================================
00360 //=============================================================================
00361 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeLine
00362                    (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theDir)
00363 {
00364   GEOM::GEOM_Object_var aGEOMObject;
00365 
00366   //Set a not done flag
00367   GetOperations()->SetNotDone();
00368 
00369   //Get the reference objects
00370   Handle(GEOM_Object) aRef1 = GetObjectImpl(thePnt);
00371   Handle(GEOM_Object) aRef2 = GetObjectImpl(theDir);
00372   if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn();
00373 
00374   //Create the Line
00375   Handle(GEOM_Object) anObject = GetOperations()->MakeLine(aRef1, aRef2);
00376   if (!GetOperations()->IsDone() || anObject.IsNull())
00377     return aGEOMObject._retn();
00378 
00379   return GetObject(anObject);
00380 }
00381 
00382 //=============================================================================
00386 //=============================================================================
00387 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeLineTwoPnt
00388                  (GEOM::GEOM_Object_ptr thePnt1, GEOM::GEOM_Object_ptr thePnt2)
00389 {
00390   GEOM::GEOM_Object_var aGEOMObject;
00391 
00392   //Set a not done flag
00393   GetOperations()->SetNotDone();
00394 
00395   //Get the reference points
00396   Handle(GEOM_Object) aRef1 = GetObjectImpl(thePnt1);
00397   Handle(GEOM_Object) aRef2 = GetObjectImpl(thePnt2);
00398   if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn();
00399 
00400   //Create the Line
00401   Handle(GEOM_Object) anObject = GetOperations()->MakeLineTwoPnt(aRef1, aRef2);
00402   if (!GetOperations()->IsDone() || anObject.IsNull())
00403     return aGEOMObject._retn();
00404 
00405   return GetObject(anObject);
00406 }
00407 
00408 //=============================================================================
00412 //=============================================================================
00413 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeLineTwoFaces
00414                  (GEOM::GEOM_Object_ptr theFace1, GEOM::GEOM_Object_ptr theFace2)
00415 {
00416   GEOM::GEOM_Object_var aGEOMObject;
00417 
00418   //Set a not done flag
00419   GetOperations()->SetNotDone();
00420 
00421   //Get the reference points
00422   Handle(GEOM_Object) aRef1 = GetObjectImpl(theFace1);
00423   Handle(GEOM_Object) aRef2 = GetObjectImpl(theFace2);
00424   if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn();
00425 
00426   //Create the Line
00427   Handle(GEOM_Object) anObject =
00428     GetOperations()->MakeLineTwoFaces(aRef1, aRef2);
00429   if (!GetOperations()->IsDone() || anObject.IsNull())
00430     return aGEOMObject._retn();
00431 
00432   return GetObject(anObject);
00433 }
00434 
00435 
00436 //=============================================================================
00440 //=============================================================================
00441 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePlanePntVec
00442                  (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theVec,
00443                   CORBA::Double theTrimSize)
00444 {
00445   GEOM::GEOM_Object_var aGEOMObject;
00446 
00447   //Set a not done flag
00448   GetOperations()->SetNotDone();
00449 
00450   //Get the references
00451   Handle(GEOM_Object) aRef1 = GetObjectImpl(thePnt);
00452   Handle(GEOM_Object) aRef2 = GetObjectImpl(theVec);
00453   if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn();
00454 
00455   //Create the plane
00456   Handle(GEOM_Object) anObject =
00457     GetOperations()->MakePlanePntVec(aRef1, aRef2, theTrimSize);
00458   if (!GetOperations()->IsDone() || anObject.IsNull())
00459     return aGEOMObject._retn();
00460 
00461   return GetObject(anObject);
00462 }
00463 
00464 //=============================================================================
00468 //=============================================================================
00469 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePlaneThreePnt
00470                  (GEOM::GEOM_Object_ptr thePnt1, GEOM::GEOM_Object_ptr thePnt2,
00471                   GEOM::GEOM_Object_ptr thePnt3, CORBA::Double theTrimSize)
00472 {
00473   GEOM::GEOM_Object_var aGEOMObject;
00474 
00475   //Set a not done flag
00476   GetOperations()->SetNotDone();
00477 
00478   //Get the reference points
00479   Handle(GEOM_Object) aRef1 = GetObjectImpl(thePnt1);
00480   Handle(GEOM_Object) aRef2 = GetObjectImpl(thePnt2);
00481   Handle(GEOM_Object) aRef3 = GetObjectImpl(thePnt3);
00482   if (aRef1.IsNull() || aRef2.IsNull() || aRef3.IsNull())
00483     return aGEOMObject._retn();
00484 
00485   //Create the plane
00486   Handle(GEOM_Object) anObject =
00487     GetOperations()->MakePlaneThreePnt(aRef1, aRef2, aRef3, theTrimSize);
00488   if (!GetOperations()->IsDone() || anObject.IsNull())
00489     return aGEOMObject._retn();
00490 
00491   return GetObject(anObject);
00492 }
00493 
00494 //=============================================================================
00498 //=============================================================================
00499 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePlaneFace
00500                      (GEOM::GEOM_Object_ptr theFace, CORBA::Double theTrimSize)
00501 {
00502   GEOM::GEOM_Object_var aGEOMObject;
00503 
00504   //Set a not done flag
00505   GetOperations()->SetNotDone();
00506 
00507   //Get the reference face
00508   Handle(GEOM_Object) aRef = GetObjectImpl(theFace);
00509   if (aRef.IsNull()) return aGEOMObject._retn();
00510 
00511   //Create the plane
00512   Handle(GEOM_Object) anObject =
00513     GetOperations()->MakePlaneFace(aRef, theTrimSize);
00514   if (!GetOperations()->IsDone() || anObject.IsNull())
00515     return aGEOMObject._retn();
00516 
00517   return GetObject(anObject);
00518 }
00519 
00520 //=============================================================================
00524 //=============================================================================
00525 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePlane2Vec
00526                  (GEOM::GEOM_Object_ptr theVec1, GEOM::GEOM_Object_ptr theVec2,
00527                   CORBA::Double theTrimSize)
00528 {
00529   GEOM::GEOM_Object_var aGEOMObject;
00530 
00531   //Set a not done flag
00532   GetOperations()->SetNotDone();
00533 
00534   //Get the references
00535   Handle(GEOM_Object) aRef1 = GetObjectImpl(theVec1);
00536   Handle(GEOM_Object) aRef2 = GetObjectImpl(theVec2);
00537   if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn();
00538 
00539   //Create the plane
00540   Handle(GEOM_Object) anObject =
00541     GetOperations()->MakePlane2Vec(aRef1, aRef2, theTrimSize);
00542   if (!GetOperations()->IsDone() || anObject.IsNull())
00543     return aGEOMObject._retn();
00544 
00545   return GetObject(anObject);
00546 }
00547 
00548 //=============================================================================
00552 //=============================================================================
00553 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePlaneLCS
00554                  (GEOM::GEOM_Object_ptr theLCS, CORBA::Double theTrimSize,
00555                 CORBA::Double theOrientation)
00556 {
00557   GEOM::GEOM_Object_var aGEOMObject;
00558 
00559   //Set a not done flag
00560   GetOperations()->SetNotDone();
00561 
00562   //Get the references
00563   Handle(GEOM_Object) aRef1 = GetObjectImpl(theLCS);
00564 
00565   //Create the plane
00566   Handle(GEOM_Object) anObject =
00567     GetOperations()->MakePlaneLCS(aRef1, theTrimSize, theOrientation);
00568   if (!GetOperations()->IsDone() || anObject.IsNull())
00569     return aGEOMObject._retn();
00570 
00571   return GetObject(anObject);
00572 }
00573 
00574 //=============================================================================
00578 //=============================================================================
00579 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeMarker
00580   (CORBA::Double theOX , CORBA::Double theOY , CORBA::Double theOZ,
00581    CORBA::Double theXDX, CORBA::Double theXDY, CORBA::Double theXDZ,
00582    CORBA::Double theYDX, CORBA::Double theYDY, CORBA::Double theYDZ)
00583 {
00584   GEOM::GEOM_Object_var aGEOMObject;
00585 
00586   //Set a not done flag
00587   GetOperations()->SetNotDone();
00588 
00589   //Create the point
00590   Handle(GEOM_Object) anObject = GetOperations()->MakeMarker(theOX , theOY , theOZ,
00591                                                              theXDX, theXDY, theXDZ,
00592                                                              theYDX, theYDY, theYDZ);
00593   if (!GetOperations()->IsDone() || anObject.IsNull())
00594     return aGEOMObject._retn();
00595 
00596   return GetObject(anObject);
00597 }
00598 
00599 //=============================================================================
00603 //=============================================================================
00604 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeMarkerFromShape
00605                                               (GEOM::GEOM_Object_ptr theShape)
00606 {
00607   GEOM::GEOM_Object_var aGEOMObject;
00608 
00609   //Set a not done flag
00610   GetOperations()->SetNotDone();
00611 
00612   //Get the referenced object
00613   Handle(GEOM_Object) aRef = GetObjectImpl(theShape);
00614   if (aRef.IsNull()) return aGEOMObject._retn();
00615 
00616   //Create the point
00617   Handle(GEOM_Object) anObject = GetOperations()->MakeMarkerFromShape(aRef);
00618   if (!GetOperations()->IsDone() || anObject.IsNull())
00619     return aGEOMObject._retn();
00620 
00621   return GetObject(anObject);
00622 }
00623 
00624 //=============================================================================
00628 //=============================================================================
00629 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeMarkerPntTwoVec
00630                                               (GEOM::GEOM_Object_ptr theOrigin,
00631                                                GEOM::GEOM_Object_ptr theXVec,
00632                                                GEOM::GEOM_Object_ptr theYVec)
00633 {
00634   GEOM::GEOM_Object_var aGEOMObject;
00635 
00636   //Set a not done flag
00637   GetOperations()->SetNotDone();
00638 
00639   //Get the referenced objects
00640   Handle(GEOM_Object) aRef1 = GetObjectImpl(theOrigin);
00641   Handle(GEOM_Object) aRef2 = GetObjectImpl(theXVec);
00642   Handle(GEOM_Object) aRef3 = GetObjectImpl(theYVec);
00643   if (aRef1.IsNull() || aRef2.IsNull() || aRef3.IsNull()) return aGEOMObject._retn();
00644 
00645   //Create the point
00646   Handle(GEOM_Object) anObject = GetOperations()->MakeMarkerPntTwoVec(aRef1,
00647                                                                       aRef2,
00648                                                               aRef3);
00649   if (!GetOperations()->IsDone() || anObject.IsNull())
00650     return aGEOMObject._retn();
00651 
00652   return GetObject(anObject);
00653 }
00654 
00655 //=============================================================================
00659 //=============================================================================
00660 
00661 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeTangentPlaneOnFace
00662                      (GEOM::GEOM_Object_ptr theFace,
00663                       CORBA::Double theParameterU,
00664                       CORBA::Double theParameterV,
00665                       CORBA::Double theTrimSize)
00666 {
00667   GEOM::GEOM_Object_var aGEOMObject;
00668 
00669   //Set a not done flag
00670   GetOperations()->SetNotDone();
00671 
00672   //Get the reference face
00673   Handle(GEOM_Object) aRef = GetObjectImpl(theFace);
00674   if (aRef.IsNull()) return aGEOMObject._retn();
00675 
00676   //Create the plane
00677   Handle(GEOM_Object) anObject =
00678     GetOperations()->MakeTangentPlaneOnFace(aRef, theParameterU,theParameterV,theTrimSize);
00679   if (!GetOperations()->IsDone() || anObject.IsNull())
00680     return aGEOMObject._retn();
00681 
00682   return GetObject(anObject);
00683 }