1 // Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
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.
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.
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
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 #include <Standard_Stream.hxx>
25 #include "GEOM_IBasicOperations_i.hh"
27 #include "utilities.h"
29 #include "Utils_ExceptHandlers.hxx"
31 #include "GEOM_Engine.hxx"
32 #include "GEOM_Object.hxx"
34 //=============================================================================
38 //=============================================================================
39 GEOM_IBasicOperations_i::GEOM_IBasicOperations_i (PortableServer::POA_ptr thePOA,
40 GEOM::GEOM_Gen_ptr theEngine,
41 ::GEOMImpl_IBasicOperations* theImpl)
42 :GEOM_IOperations_i(thePOA, theEngine, theImpl)
44 MESSAGE("GEOM_IBasicOperations_i::GEOM_IBasicOperations_i");
47 //=============================================================================
51 //=============================================================================
52 GEOM_IBasicOperations_i::~GEOM_IBasicOperations_i()
54 MESSAGE("GEOM_IBasicOperations_i::~GEOM_IBasicOperations_i");
58 //=============================================================================
62 //=============================================================================
63 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointXYZ
64 (CORBA::Double theX, CORBA::Double theY, CORBA::Double theZ)
66 GEOM::GEOM_Object_var aGEOMObject;
69 GetOperations()->SetNotDone();
72 HANDLE_NAMESPACE(GEOM_Object) anObject = GetOperations()->MakePointXYZ(theX, theY, theZ);
73 if (!GetOperations()->IsDone() || anObject.IsNull())
74 return aGEOMObject._retn();
76 return GetObject(anObject);
79 //=============================================================================
81 * MakePointWithReference
83 //=============================================================================
84 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointWithReference
85 (GEOM::GEOM_Object_ptr theReference, CORBA::Double theX, CORBA::Double theY, CORBA::Double theZ)
87 GEOM::GEOM_Object_var aGEOMObject;
90 GetOperations()->SetNotDone();
92 //Get the reference point
93 HANDLE_NAMESPACE(GEOM_Object) aReference = GetObjectImpl(theReference);
94 if (aReference.IsNull()) return aGEOMObject._retn();
97 HANDLE_NAMESPACE(GEOM_Object) anObject =
98 GetOperations()->MakePointWithReference(aReference, theX, theY, theZ);
99 if (!GetOperations()->IsDone() || anObject.IsNull())
100 return aGEOMObject._retn();
102 return GetObject(anObject);
105 //=============================================================================
107 * MakePointOnLinesIntersection
109 //=============================================================================
110 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnLinesIntersection
111 (GEOM::GEOM_Object_ptr theLine1, GEOM::GEOM_Object_ptr theLine2)
113 GEOM::GEOM_Object_var aGEOMObject;
115 //Set a not done flag
116 GetOperations()->SetNotDone();
118 //Get the reference Lines
119 HANDLE_NAMESPACE(GEOM_Object) aRef1 = GetObjectImpl(theLine1);
120 HANDLE_NAMESPACE(GEOM_Object) aRef2 = GetObjectImpl(theLine2);
121 if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn();
124 HANDLE_NAMESPACE(GEOM_Object) anObject =
125 GetOperations()->MakePointOnLinesIntersection(aRef1, aRef2);
126 if (!GetOperations()->IsDone() || anObject.IsNull())
127 return aGEOMObject._retn();
129 return GetObject(anObject);
132 //=============================================================================
136 //=============================================================================
137 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnCurve
138 (GEOM::GEOM_Object_ptr theCurve,
139 CORBA::Double theParameter,
140 CORBA::Boolean takeOrientationIntoAccount)
142 GEOM::GEOM_Object_var aGEOMObject;
144 //Set a not done flag
145 GetOperations()->SetNotDone();
147 //Get the reference curve
148 HANDLE_NAMESPACE(GEOM_Object) aReference = GetObjectImpl(theCurve);
149 if (aReference.IsNull()) return aGEOMObject._retn();
152 HANDLE_NAMESPACE(GEOM_Object) anObject = GetOperations()->MakePointOnCurve
153 (aReference, theParameter, takeOrientationIntoAccount);
154 if (!GetOperations()->IsDone() || anObject.IsNull())
155 return aGEOMObject._retn();
157 return GetObject(anObject);
160 //=============================================================================
162 * MakePointOnCurveByLength
164 //=============================================================================
165 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnCurveByLength
166 (GEOM::GEOM_Object_ptr theCurve,
167 CORBA::Double theLength,
168 GEOM::GEOM_Object_ptr theStartPoint)
170 GEOM::GEOM_Object_var aGEOMObject;
172 //Set a not done flag
173 GetOperations()->SetNotDone();
175 //Get the reference curve
176 HANDLE_NAMESPACE(GEOM_Object) aReference = GetObjectImpl(theCurve);
177 if (aReference.IsNull()) return aGEOMObject._retn();
179 //Get the reference point (can be NULL)
180 HANDLE_NAMESPACE(GEOM_Object) aRefPoint;
181 if (!CORBA::is_nil(theStartPoint)) {
182 aRefPoint = GetObjectImpl(theStartPoint);
186 HANDLE_NAMESPACE(GEOM_Object) anObject =
187 GetOperations()->MakePointOnCurveByLength(aReference, theLength, aRefPoint);
188 if (!GetOperations()->IsDone() || anObject.IsNull())
189 return aGEOMObject._retn();
191 return GetObject(anObject);
194 //=============================================================================
196 * MakePointOnCurveByCoord
198 //=============================================================================
199 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnCurveByCoord
200 (GEOM::GEOM_Object_ptr theCurve,
201 CORBA::Double theXParameter,
202 CORBA::Double theYParameter,
203 CORBA::Double theZParameter)
205 GEOM::GEOM_Object_var aGEOMObject;
207 //Set a not done flag
208 GetOperations()->SetNotDone();
210 //Get the reference curve
211 HANDLE_NAMESPACE(GEOM_Object) aReference = GetObjectImpl(theCurve);
212 if (aReference.IsNull()) return aGEOMObject._retn();
215 HANDLE_NAMESPACE(GEOM_Object) anObject =
216 GetOperations()->MakePointOnCurveByCoord(aReference, theXParameter,
217 theYParameter, theZParameter);
218 if (!GetOperations()->IsDone() || anObject.IsNull())
219 return aGEOMObject._retn();
221 return GetObject(anObject);
224 //=============================================================================
228 //=============================================================================
229 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnSurface
230 (GEOM::GEOM_Object_ptr theSurface,
231 CORBA::Double theUParameter,
232 CORBA::Double theVParameter)
234 GEOM::GEOM_Object_var aGEOMObject;
236 //Set a not done flag
237 GetOperations()->SetNotDone();
239 //Get the reference surface
240 HANDLE_NAMESPACE(GEOM_Object) aReference = GetObjectImpl(theSurface);
241 if (aReference.IsNull()) return aGEOMObject._retn();
244 HANDLE_NAMESPACE(GEOM_Object) anObject =
245 GetOperations()->MakePointOnSurface(aReference, theUParameter, theVParameter);
246 if (!GetOperations()->IsDone() || anObject.IsNull())
247 return aGEOMObject._retn();
249 return GetObject(anObject);
252 //=============================================================================
254 * MakePointOnSurfaceByCoord
256 //=============================================================================
257 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnSurfaceByCoord
258 (GEOM::GEOM_Object_ptr theSurface,
259 CORBA::Double theXParameter,
260 CORBA::Double theYParameter,
261 CORBA::Double theZParameter)
263 GEOM::GEOM_Object_var aGEOMObject;
265 //Set a not done flag
266 GetOperations()->SetNotDone();
268 //Get the reference surface
269 HANDLE_NAMESPACE(GEOM_Object) aReference = GetObjectImpl(theSurface);
270 if (aReference.IsNull()) return aGEOMObject._retn();
273 HANDLE_NAMESPACE(GEOM_Object) anObject =
274 GetOperations()->MakePointOnSurfaceByCoord(aReference, theXParameter,
275 theYParameter, theZParameter);
276 if (!GetOperations()->IsDone() || anObject.IsNull())
277 return aGEOMObject._retn();
279 return GetObject(anObject);
282 //=============================================================================
286 //=============================================================================
287 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnFace (GEOM::GEOM_Object_ptr theFace)
289 GEOM::GEOM_Object_var aGEOMObject;
291 //Set a not done flag
292 GetOperations()->SetNotDone();
294 //Get the reference face
295 HANDLE_NAMESPACE(GEOM_Object) aReference = GetObjectImpl(theFace);
296 if (aReference.IsNull()) return aGEOMObject._retn();
299 HANDLE_NAMESPACE(GEOM_Object) anObject = GetOperations()->MakePointOnFace(aReference);
300 if (!GetOperations()->IsDone() || anObject.IsNull())
301 return aGEOMObject._retn();
303 return GetObject(anObject);
306 //=============================================================================
310 //=============================================================================
311 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeTangentOnCurve
312 (GEOM::GEOM_Object_ptr theCurve, CORBA::Double theParameter)
314 GEOM::GEOM_Object_var aGEOMObject;
316 //Set a not done flag
317 GetOperations()->SetNotDone();
319 //Get the reference curve
320 HANDLE_NAMESPACE(GEOM_Object) aReference = GetObjectImpl(theCurve);
321 if (aReference.IsNull()) return aGEOMObject._retn();
324 HANDLE_NAMESPACE(GEOM_Object) anObject =
325 GetOperations()->MakeTangentOnCurve(aReference, theParameter);
326 if (!GetOperations()->IsDone() || anObject.IsNull())
327 return aGEOMObject._retn();
329 return GetObject(anObject);
332 //=============================================================================
336 //=============================================================================
337 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeVectorDXDYDZ
338 (CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ)
340 GEOM::GEOM_Object_var aGEOMObject;
342 //Set a not done flag
343 GetOperations()->SetNotDone();
347 HANDLE_NAMESPACE(GEOM_Object) anObject = GetOperations()->MakeVectorDXDYDZ(theDX, theDY, theDZ);
348 if (!GetOperations()->IsDone() || anObject.IsNull())
349 return aGEOMObject._retn();
351 return GetObject(anObject);
354 //=============================================================================
358 //=============================================================================
359 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeVectorTwoPnt
360 (GEOM::GEOM_Object_ptr thePnt1, GEOM::GEOM_Object_ptr thePnt2)
362 GEOM::GEOM_Object_var aGEOMObject;
364 //Set a not done flag
365 GetOperations()->SetNotDone();
367 //Get the reference points
368 HANDLE_NAMESPACE(GEOM_Object) aRef1 = GetObjectImpl(thePnt1);
369 HANDLE_NAMESPACE(GEOM_Object) aRef2 = GetObjectImpl(thePnt2);
370 if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn();
373 HANDLE_NAMESPACE(GEOM_Object) anObject = GetOperations()->MakeVectorTwoPnt(aRef1, aRef2);
374 if (!GetOperations()->IsDone() || anObject.IsNull())
375 return aGEOMObject._retn();
377 return GetObject(anObject);
381 //=============================================================================
385 //=============================================================================
386 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeLine
387 (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theDir)
389 GEOM::GEOM_Object_var aGEOMObject;
391 //Set a not done flag
392 GetOperations()->SetNotDone();
394 //Get the reference objects
395 HANDLE_NAMESPACE(GEOM_Object) aRef1 = GetObjectImpl(thePnt);
396 HANDLE_NAMESPACE(GEOM_Object) aRef2 = GetObjectImpl(theDir);
397 if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn();
400 HANDLE_NAMESPACE(GEOM_Object) anObject = GetOperations()->MakeLine(aRef1, aRef2);
401 if (!GetOperations()->IsDone() || anObject.IsNull())
402 return aGEOMObject._retn();
404 return GetObject(anObject);
407 //=============================================================================
411 //=============================================================================
412 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeLineTwoPnt
413 (GEOM::GEOM_Object_ptr thePnt1, GEOM::GEOM_Object_ptr thePnt2)
415 GEOM::GEOM_Object_var aGEOMObject;
417 //Set a not done flag
418 GetOperations()->SetNotDone();
420 //Get the reference points
421 HANDLE_NAMESPACE(GEOM_Object) aRef1 = GetObjectImpl(thePnt1);
422 HANDLE_NAMESPACE(GEOM_Object) aRef2 = GetObjectImpl(thePnt2);
423 if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn();
426 HANDLE_NAMESPACE(GEOM_Object) anObject = GetOperations()->MakeLineTwoPnt(aRef1, aRef2);
427 if (!GetOperations()->IsDone() || anObject.IsNull())
428 return aGEOMObject._retn();
430 return GetObject(anObject);
433 //=============================================================================
437 //=============================================================================
438 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeLineTwoFaces
439 (GEOM::GEOM_Object_ptr theFace1, GEOM::GEOM_Object_ptr theFace2)
441 GEOM::GEOM_Object_var aGEOMObject;
443 //Set a not done flag
444 GetOperations()->SetNotDone();
446 //Get the reference points
447 HANDLE_NAMESPACE(GEOM_Object) aRef1 = GetObjectImpl(theFace1);
448 HANDLE_NAMESPACE(GEOM_Object) aRef2 = GetObjectImpl(theFace2);
449 if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn();
452 HANDLE_NAMESPACE(GEOM_Object) anObject =
453 GetOperations()->MakeLineTwoFaces(aRef1, aRef2);
454 if (!GetOperations()->IsDone() || anObject.IsNull())
455 return aGEOMObject._retn();
457 return GetObject(anObject);
461 //=============================================================================
465 //=============================================================================
466 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePlanePntVec
467 (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theVec,
468 CORBA::Double theTrimSize)
470 GEOM::GEOM_Object_var aGEOMObject;
472 //Set a not done flag
473 GetOperations()->SetNotDone();
476 HANDLE_NAMESPACE(GEOM_Object) aRef1 = GetObjectImpl(thePnt);
477 HANDLE_NAMESPACE(GEOM_Object) aRef2 = GetObjectImpl(theVec);
478 if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn();
481 HANDLE_NAMESPACE(GEOM_Object) anObject =
482 GetOperations()->MakePlanePntVec(aRef1, aRef2, theTrimSize);
483 if (!GetOperations()->IsDone() || anObject.IsNull())
484 return aGEOMObject._retn();
486 return GetObject(anObject);
489 //=============================================================================
493 //=============================================================================
494 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePlaneThreePnt
495 (GEOM::GEOM_Object_ptr thePnt1, GEOM::GEOM_Object_ptr thePnt2,
496 GEOM::GEOM_Object_ptr thePnt3, CORBA::Double theTrimSize)
498 GEOM::GEOM_Object_var aGEOMObject;
500 //Set a not done flag
501 GetOperations()->SetNotDone();
503 //Get the reference points
504 HANDLE_NAMESPACE(GEOM_Object) aRef1 = GetObjectImpl(thePnt1);
505 HANDLE_NAMESPACE(GEOM_Object) aRef2 = GetObjectImpl(thePnt2);
506 HANDLE_NAMESPACE(GEOM_Object) aRef3 = GetObjectImpl(thePnt3);
507 if (aRef1.IsNull() || aRef2.IsNull() || aRef3.IsNull())
508 return aGEOMObject._retn();
511 HANDLE_NAMESPACE(GEOM_Object) anObject =
512 GetOperations()->MakePlaneThreePnt(aRef1, aRef2, aRef3, theTrimSize);
513 if (!GetOperations()->IsDone() || anObject.IsNull())
514 return aGEOMObject._retn();
516 return GetObject(anObject);
519 //=============================================================================
523 //=============================================================================
524 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePlaneFace
525 (GEOM::GEOM_Object_ptr theFace, CORBA::Double theTrimSize)
527 GEOM::GEOM_Object_var aGEOMObject;
529 //Set a not done flag
530 GetOperations()->SetNotDone();
532 //Get the reference face
533 HANDLE_NAMESPACE(GEOM_Object) aRef = GetObjectImpl(theFace);
534 if (aRef.IsNull()) return aGEOMObject._retn();
537 HANDLE_NAMESPACE(GEOM_Object) anObject =
538 GetOperations()->MakePlaneFace(aRef, theTrimSize);
539 if (!GetOperations()->IsDone() || anObject.IsNull())
540 return aGEOMObject._retn();
542 return GetObject(anObject);
545 //=============================================================================
549 //=============================================================================
550 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePlane2Vec
551 (GEOM::GEOM_Object_ptr theVec1, GEOM::GEOM_Object_ptr theVec2,
552 CORBA::Double theTrimSize)
554 GEOM::GEOM_Object_var aGEOMObject;
556 //Set a not done flag
557 GetOperations()->SetNotDone();
560 HANDLE_NAMESPACE(GEOM_Object) aRef1 = GetObjectImpl(theVec1);
561 HANDLE_NAMESPACE(GEOM_Object) aRef2 = GetObjectImpl(theVec2);
562 if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn();
565 HANDLE_NAMESPACE(GEOM_Object) anObject =
566 GetOperations()->MakePlane2Vec(aRef1, aRef2, theTrimSize);
567 if (!GetOperations()->IsDone() || anObject.IsNull())
568 return aGEOMObject._retn();
570 return GetObject(anObject);
573 //=============================================================================
577 //=============================================================================
578 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePlaneLCS
579 (GEOM::GEOM_Object_ptr theLCS, CORBA::Double theTrimSize,
580 CORBA::Double theOrientation)
582 GEOM::GEOM_Object_var aGEOMObject;
584 //Set a not done flag
585 GetOperations()->SetNotDone();
588 HANDLE_NAMESPACE(GEOM_Object) aRef1 = GetObjectImpl(theLCS);
591 HANDLE_NAMESPACE(GEOM_Object) anObject =
592 GetOperations()->MakePlaneLCS(aRef1, theTrimSize, theOrientation);
593 if (!GetOperations()->IsDone() || anObject.IsNull())
594 return aGEOMObject._retn();
596 return GetObject(anObject);
599 //=============================================================================
603 //=============================================================================
604 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeMarker
605 (CORBA::Double theOX , CORBA::Double theOY , CORBA::Double theOZ,
606 CORBA::Double theXDX, CORBA::Double theXDY, CORBA::Double theXDZ,
607 CORBA::Double theYDX, CORBA::Double theYDY, CORBA::Double theYDZ)
609 GEOM::GEOM_Object_var aGEOMObject;
611 //Set a not done flag
612 GetOperations()->SetNotDone();
615 HANDLE_NAMESPACE(GEOM_Object) anObject = GetOperations()->MakeMarker(theOX , theOY , theOZ,
616 theXDX, theXDY, theXDZ,
617 theYDX, theYDY, theYDZ);
618 if (!GetOperations()->IsDone() || anObject.IsNull())
619 return aGEOMObject._retn();
621 return GetObject(anObject);
624 //=============================================================================
626 * MakeMarkerFromShape
628 //=============================================================================
629 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeMarkerFromShape
630 (GEOM::GEOM_Object_ptr theShape)
632 GEOM::GEOM_Object_var aGEOMObject;
634 //Set a not done flag
635 GetOperations()->SetNotDone();
637 //Get the referenced object
638 HANDLE_NAMESPACE(GEOM_Object) aRef = GetObjectImpl(theShape);
639 if (aRef.IsNull()) return aGEOMObject._retn();
642 HANDLE_NAMESPACE(GEOM_Object) anObject = GetOperations()->MakeMarkerFromShape(aRef);
643 if (!GetOperations()->IsDone() || anObject.IsNull())
644 return aGEOMObject._retn();
646 return GetObject(anObject);
649 //=============================================================================
651 * MakeMarkerPntTwoVec
653 //=============================================================================
654 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeMarkerPntTwoVec
655 (GEOM::GEOM_Object_ptr theOrigin,
656 GEOM::GEOM_Object_ptr theXVec,
657 GEOM::GEOM_Object_ptr theYVec)
659 GEOM::GEOM_Object_var aGEOMObject;
661 //Set a not done flag
662 GetOperations()->SetNotDone();
664 //Get the referenced objects
665 HANDLE_NAMESPACE(GEOM_Object) aRef1 = GetObjectImpl(theOrigin);
666 HANDLE_NAMESPACE(GEOM_Object) aRef2 = GetObjectImpl(theXVec);
667 HANDLE_NAMESPACE(GEOM_Object) aRef3 = GetObjectImpl(theYVec);
668 if (aRef1.IsNull() || aRef2.IsNull() || aRef3.IsNull()) return aGEOMObject._retn();
671 HANDLE_NAMESPACE(GEOM_Object) anObject = GetOperations()->MakeMarkerPntTwoVec(aRef1,
674 if (!GetOperations()->IsDone() || anObject.IsNull())
675 return aGEOMObject._retn();
677 return GetObject(anObject);
680 //=============================================================================
682 * MakeTangentPlaneOnFace
684 //=============================================================================
686 GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeTangentPlaneOnFace
687 (GEOM::GEOM_Object_ptr theFace,
688 CORBA::Double theParameterU,
689 CORBA::Double theParameterV,
690 CORBA::Double theTrimSize)
692 GEOM::GEOM_Object_var aGEOMObject;
694 //Set a not done flag
695 GetOperations()->SetNotDone();
697 //Get the reference face
698 HANDLE_NAMESPACE(GEOM_Object) aRef = GetObjectImpl(theFace);
699 if (aRef.IsNull()) return aGEOMObject._retn();
702 HANDLE_NAMESPACE(GEOM_Object) anObject =
703 GetOperations()->MakeTangentPlaneOnFace(aRef, theParameterU,theParameterV,theTrimSize);
704 if (!GetOperations()->IsDone() || anObject.IsNull())
705 return aGEOMObject._retn();
707 return GetObject(anObject);