idl/GEOM_Gen.idl

Go to the documentation of this file.
00001 // Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
00002 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
00003 // 
00004 // This library is free software; you can redistribute it and/or
00005 // modify it under the terms of the GNU Lesser General Public
00006 // License as published by the Free Software Foundation; either 
00007 // version 2.1 of the License.
00008 // 
00009 // This library is distributed in the hope that it will be useful 
00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of 
00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
00012 // Lesser General Public License for more details.
00013 //
00014 // You should have received a copy of the GNU Lesser General Public  
00015 // License along with this library; if not, write to the Free Software 
00016 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
00017 //
00018 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
00019 //
00020 //  File   : GEOM_Gen.idl
00021 //  Author : Sergey RUIN
00022 
00023 #ifndef __GEOM_GEN__
00024 #define __GEOM_GEN__
00025 
00026 #include "SALOME_Exception.idl"
00027 #include "SALOME_Component.idl"
00028 #include "SALOMEDS.idl"
00029 
00030 #include "SALOME_GenericObj.idl"
00031 
00032 module GEOM
00033 {
00037   enum shape_type { COMPOUND, COMPSOLID, SOLID, SHELL,
00038                  FACE, WIRE, EDGE, VERTEX, SHAPE };
00039 
00040 
00045   enum shape_state
00046   {
00048     ST_ON,
00049 
00055     ST_OUT,
00056 
00061     ST_ONOUT,
00062 
00069     ST_IN,
00070 
00075     ST_ONIN
00076   };
00077 
00078   typedef sequence<string>      string_array;
00079   typedef sequence<short>       short_array;
00080   typedef sequence<long>        ListOfLong;
00081   typedef sequence<double>      ListOfDouble;
00082 
00083   interface GEOM_Object;
00084 
00085   typedef sequence<GEOM_Object> ListOfGO;
00086 
00090   interface GEOM_Object : SALOME::GenericObj
00091   {
00092 
00096     string GetEntry();
00097 
00101     long GetStudyID();
00102 
00106     long GetType();
00107 
00111     shape_type GetShapeType();
00112 
00117     void SetName (in string theName);
00118 
00122     string GetName();
00123 
00127     void SetStudyEntry (in string theEntry);
00128 
00132     string GetStudyEntry();
00133 
00139     ListOfGO GetDependency();
00140 
00145     ListOfGO GetLastDependency();
00146 
00150     long getShape();
00151 
00161     SALOMEDS::TMPFile GetShapeStream();
00162 
00163     /*
00164      *  Returns True if this object is not a sub shape of another object.
00165      */
00166     boolean IsMainShape();
00167 
00168     /*
00169      *  Get a list of ID's of sub shapes in the main shape.
00170      *  \note Internal method, suppopsed to be used only by GEOM_Client
00171      */
00172     ListOfLong GetSubShapeIndices();
00173 
00174     /*
00175      *  Get a main shape object to which this object is a sub shape
00176      *  \note Internal method, suppopsed to be used only by GEOM_Client
00177      */
00178     GEOM_Object GetMainShape();
00179 
00180     /*
00181      *  Return true if geom object representes a shape.
00182      *  For example, method return false for GEOM_MARKER
00183      */
00184      boolean IsShape();
00185   };
00186 
00187 
00191   interface GEOM_IOperations : SALOME::GenericObj
00192   {
00196     boolean IsDone();
00197 
00203     void SetErrorCode (in string theErrorID);
00204 
00208     string GetErrorCode();
00209 
00213     long GetStudyID();
00214 
00218     void StartOperation();
00219 
00223     void FinishOperation();
00224 
00228     void AbortOperation();
00229   };
00230 
00235   interface GEOM_IBasicOperations : GEOM_IOperations
00236   {
00244     GEOM_Object MakePointXYZ (in double theX, in double theY, in double theZ);
00245 
00255     GEOM_Object MakePointWithReference (in GEOM_Object theReference,
00256                          in double theX, in double theY, in double theZ);
00257 
00264     GEOM_Object MakePointOnCurve (in GEOM_Object theRefCurve,
00265                       in double theParameter);
00266 
00267     
00276      GEOM_Object MakeTangentOnCurve (in GEOM_Object theRefCurve,
00277                          in double theParameter);
00278 
00286     GEOM_Object MakeVectorDXDYDZ (in double theDX,
00287                       in double theDY,
00288                       in double theDZ);
00289 
00296     GEOM_Object MakeVectorTwoPnt (in GEOM_Object thePnt1, in GEOM_Object thePnt2);
00297 
00305     GEOM_Object MakeLine (in GEOM_Object thePnt, in GEOM_Object theDir);
00306 
00313     GEOM_Object MakeLineTwoPnt (in GEOM_Object thePnt1, in GEOM_Object thePnt2);
00314 
00323     GEOM_Object MakePlaneThreePnt (in GEOM_Object thePnt1,
00324                        in GEOM_Object thePnt2,
00325                        in GEOM_Object thePnt3,
00326                        in double theTrimSize);
00327 
00336     GEOM_Object MakePlanePntVec (in GEOM_Object thePnt,
00337                      in GEOM_Object theVec,
00338                      in double theTrimSize);
00339 
00346     GEOM_Object MakePlaneFace (in GEOM_Object theFace,
00347                       in double theTrimSize);
00348 
00356     GEOM_Object MakeMarker (in double theOX , in double theOY , in double theOZ,
00357                    in double theXDX, in double theXDY, in double theXDZ,
00358                    in double theYDX, in double theYDY, in double theYDZ);
00359      
00369     GEOM_Object MakeTangentPlaneOnFace(in GEOM_Object theFace,
00370                            in double theParameterU,
00371                            in double theParameterV,
00372                            in double theTrimSize);
00373   };
00374 
00375   interface GEOM_ITransformOperations : GEOM_IOperations
00376   {
00384     GEOM_Object TranslateTwoPoints (in GEOM_Object theObject,
00385                         in GEOM_Object thePoint1,
00386                         in GEOM_Object thePoint2);
00387 
00396     GEOM_Object TranslateTwoPointsCopy (in GEOM_Object theObject,
00397                          in GEOM_Object thePoint1,
00398                                         in GEOM_Object thePoint2);
00399 
00406     GEOM_Object TranslateDXDYDZ (in GEOM_Object theObject,
00407                      in double theDX, in double theDY, in double theDZ);
00408 
00416     GEOM_Object TranslateDXDYDZCopy (in GEOM_Object theObject,
00417                          in double theDX, in double theDY, in double theDZ);
00418 
00419 
00426     GEOM_Object TranslateVector (in GEOM_Object theObject,
00427                      in GEOM_Object theVector);
00428 
00436     GEOM_Object TranslateVectorCopy (in GEOM_Object theObject,
00437                          in GEOM_Object theVector);
00438 
00448     GEOM_Object MultiTranslate1D (in GEOM_Object theObject,
00449                       in GEOM_Object theVector,
00450                       in double theStep,
00451                       in long theNbTimes);
00452 
00465     GEOM_Object MultiTranslate2D (in GEOM_Object theObject,
00466                       in GEOM_Object theVector1,
00467                       in double theStep1,
00468                       in long theNbTimes1,
00469                       in GEOM_Object theVector2,
00470                       in double theStep2,
00471                       in long theNbTimes2);
00472 
00480     GEOM_Object Rotate (in GEOM_Object theObject,
00481                in GEOM_Object theAxis,
00482                in double theAngle);
00483 
00492     GEOM_Object RotateCopy (in GEOM_Object theObject,
00493                    in GEOM_Object theAxis,
00494                    in double theAngle);
00495 
00505     GEOM_Object MultiRotate1D (in GEOM_Object theObject,
00506                       in GEOM_Object theAxis,
00507                       in long theNbTimes);
00508 
00524     GEOM_Object MultiRotate2D (in GEOM_Object theObject,
00525                       in GEOM_Object theAxis,
00526                       in double theAngle,
00527                       in long theNbTimes1,
00528                       in double theStep,
00529                       in long theNbTimes2);
00530 
00537     GEOM_Object MirrorPlane (in GEOM_Object theObject, in GEOM_Object thePlane);
00538 
00546     GEOM_Object MirrorPlaneCopy (in GEOM_Object theObject, in GEOM_Object thePlane);
00547 
00555     GEOM_Object MirrorAxis (in GEOM_Object theObject, in GEOM_Object theAxis);
00556 
00564     GEOM_Object MirrorAxisCopy (in GEOM_Object theObject, in GEOM_Object theAxis);
00565 
00572     GEOM_Object MirrorPoint (in GEOM_Object theObject, in GEOM_Object thePoint);
00573 
00580     GEOM_Object MirrorPointCopy (in GEOM_Object theObject, in GEOM_Object thePoint);
00581 
00588     GEOM_Object OffsetShape (in GEOM_Object theObject, in double theOffset);
00589 
00596     GEOM_Object OffsetShapeCopy (in GEOM_Object theObject, in double theOffset);
00597 
00605     GEOM_Object ScaleShape (in GEOM_Object theObject, in GEOM_Object thePoint,
00606                    in double theFactor);
00607 
00615     GEOM_Object ScaleShapeCopy (in GEOM_Object theObject, in GEOM_Object thePoint,
00616                     in double theFactor);
00617 
00629     GEOM_Object PositionShape (in GEOM_Object theObject,
00630                       in GEOM_Object theStartLCS,
00631                       in GEOM_Object theEndLCS);
00632 
00645     GEOM_Object PositionShapeCopy (in GEOM_Object theObject,
00646                        in GEOM_Object theStartLCS,
00647                        in GEOM_Object theEndLCS);
00648   };
00649 
00655   interface GEOM_I3DPrimOperations : GEOM_IOperations
00656   {
00666     GEOM_Object MakeBoxDXDYDZ (in double theDX, in double theDY, in double theDZ);
00667 
00675     GEOM_Object MakeBoxTwoPnt (in GEOM_Object thePnt1, in GEOM_Object thePnt2);
00676 
00685     GEOM_Object MakeCylinderRH (in double theR, in double theH);
00686 
00695     GEOM_Object MakeCylinderPntVecRH (in GEOM_Object thePnt,
00696                           in GEOM_Object theAxis,
00697                           in double      theR,
00698                           in double      theH);
00699 
00711     GEOM_Object MakeConeR1R2H (in double theR1, in double theR2, in double theH);
00712 
00724     GEOM_Object MakeConePntVecR1R2H (in GEOM_Object thePnt,
00725                          in GEOM_Object theAxis,
00726                          in double      theR1,
00727                          in double      theR2,
00728                          in double      theH);
00729 
00736     GEOM_Object MakeTorusRR (in double theRMajor,
00737                     in double theRMinor);
00738 
00747     GEOM_Object MakeTorusPntVecRR (in GEOM_Object thePnt,
00748                        in GEOM_Object theVec,
00749                        in double theRMajor,
00750                        in double theRMinor);
00751 
00757     GEOM_Object MakeSphereR (in double theR);
00758 
00765     GEOM_Object MakeSpherePntR (in GEOM_Object thePnt, in double theR);
00766 
00776     GEOM_Object MakePrismVecH (in GEOM_Object theBase,
00777                       in GEOM_Object theVec,
00778                       in double      theH);
00779 
00787     GEOM_Object MakePrismTwoPnt (in GEOM_Object theBase,
00788                      in GEOM_Object thePoint1,
00789                      in GEOM_Object thePoint2);
00790 
00798     GEOM_Object MakePipe (in GEOM_Object theBase, in GEOM_Object thePath);
00799 
00809     GEOM_Object MakeRevolutionAxisAngle (in GEOM_Object theBase,
00810                           in GEOM_Object theAxis,
00811                           in double theAngle);
00812 
00822     GEOM_Object MakeFilling (in GEOM_Object theShape,
00823                     in long theMinDeg, in long theMaxDeg,
00824                     in double theTol2D, in double theTol3D,
00825                     in long theNbIter);
00826 
00835     GEOM_Object MakeThruSections(in ListOfGO theSeqSections,
00836                      in boolean theModeSolid,
00837                      in double thePreci,
00838                                  in boolean theRuled);
00839 
00855     GEOM_Object MakePipeWithDifferentSections (in ListOfGO theSeqBases,
00856                                 in ListOfGO theLocations,
00857                                 in GEOM_Object thePath,
00858                                 in boolean theWithContact ,
00859                                 in boolean theWithCorrection );
00860     
00861   };
00862 
00868   interface GEOM_IShapesOperations : GEOM_IOperations
00869   {
00876     GEOM_Object MakeEdge (in GEOM_Object thePnt1, in GEOM_Object thePnt2);
00877 
00883     GEOM_Object MakeWire (in ListOfGO theEdgesAndWires);
00884 
00892     GEOM_Object MakeFace (in GEOM_Object theWire, in boolean isPlanarWanted);
00893 
00901     GEOM_Object MakeFaceWires (in ListOfGO theWires, in boolean isPlanarWanted);
00902 
00908     GEOM_Object MakeShell (in ListOfGO theFacesAndShells);
00909 
00915     GEOM_Object MakeSolidShell (in GEOM_Object theShell);
00916 
00922     GEOM_Object MakeSolidShells (in ListOfGO theShells);
00923 
00929     GEOM_Object MakeCompound (in ListOfGO theShapes);
00930 
00937     GEOM_Object MakeGlueFaces (in GEOM_Object theShape, in double theTolerance);
00938 
00947     ListOfGO MakeExplode (in GEOM_Object theShape,
00948                  in long        theShapeType,
00949                  in boolean     isSorted);
00950 
00961     ListOfLong SubShapeAllIDs (in GEOM_Object theShape,
00962                       in long        theShapeType,
00963                       in boolean     isSorted);
00964 
00970     GEOM_Object GetSubShape (in GEOM_Object theMainShape,
00971                     in long        theID);
00972 
00979     long GetSubShapeIndex (in GEOM_Object theMainShape, in GEOM_Object theSubShape);
00980 
00989     long GetTopologyIndex (in GEOM_Object theMainShape, in GEOM_Object theSubShape);
00990 
01000     string GetShapeTypeString (in GEOM_Object theShape);
01001 
01007     long NumberOfFaces (in GEOM_Object theShape);
01008 
01014     long NumberOfEdges (in GEOM_Object theShape);
01015 
01021     GEOM_Object ChangeOrientation (in GEOM_Object theShape);
01022 
01029     ListOfLong GetFreeFacesIDs (in GEOM_Object theShape);
01030 
01038     ListOfGO GetSharedShapes (in GEOM_Object theShape1,
01039                      in GEOM_Object theShape2,
01040                      in long        theShapeType);
01041 
01052     ListOfGO GetShapesOnPlane (in GEOM_Object theShape,
01053                       in long        theShapeType,
01054                       in GEOM_Object theAx1,
01055                       in shape_state theState);
01056 
01068     ListOfGO GetShapesOnCylinder (in GEOM_Object theShape,
01069                       in long        theShapeType,
01070                       in GEOM_Object theAxis,
01071                       in double      theRadius,
01072                       in shape_state theState);
01073 
01084     ListOfGO GetShapesOnSphere (in GEOM_Object theShape,
01085                     in long        theShapeType,
01086                     in GEOM_Object theCenter,
01087                     in double      theRadius,
01088                     in shape_state theState);
01089 
01102     ListOfGO GetShapesOnQuadrangle (in GEOM_Object theShape,
01103                                     in long        theShapeType,
01104                                     in GEOM_Object theTopLeftPoint,
01105                                     in GEOM_Object theTopRigthPoint,
01106                                     in GEOM_Object theBottomLeftPoint,
01107                                     in GEOM_Object theBottomRigthPoint,
01108                                     in shape_state theState);
01109 
01120     ListOfLong GetShapesOnPlaneIDs (in GEOM_Object theShape,
01121                         in long        theShapeType,
01122                         in GEOM_Object theAx1,
01123                         in shape_state theState);
01124 
01136     ListOfLong GetShapesOnCylinderIDs (in GEOM_Object theShape,
01137                            in long        theShapeType,
01138                            in GEOM_Object theAxis,
01139                            in double      theRadius,
01140                            in shape_state theState);
01141 
01152     ListOfLong GetShapesOnSphereIDs (in GEOM_Object theShape,
01153                          in long        theShapeType,
01154                          in GEOM_Object theCenter,
01155                          in double      theRadius,
01156                          in shape_state theState);
01157 
01170     ListOfLong GetShapesOnQuadrangleIDs (in GEOM_Object theShape,
01171                                          in long        theShapeType,
01172                                          in GEOM_Object theTopLeftPoint,
01173                                          in GEOM_Object theTopRigthPoint,
01174                                          in GEOM_Object theBottomLeftPoint,
01175                                          in GEOM_Object theBottomRigthPoint,
01176                                          in shape_state theState);
01177 
01185     GEOM_Object GetInPlace (in GEOM_Object theShapeWhere,
01186                    in GEOM_Object theShapeWhat);
01187   };
01188 
01194   interface GEOM_IBlocksOperations : GEOM_IOperations
01195   {
01206     GEOM_Object MakeQuad (in GEOM_Object theEdge1,
01207                  in GEOM_Object theEdge2,
01208                  in GEOM_Object theEdge3,
01209                  in GEOM_Object theEdge4);
01210 
01217     GEOM_Object MakeQuad2Edges (in GEOM_Object theEdge1,
01218                     in GEOM_Object theEdge2);
01219 
01226     GEOM_Object MakeQuad4Vertices (in GEOM_Object thePnt1,
01227                        in GEOM_Object thePnt2,
01228                        in GEOM_Object thePnt3,
01229                        in GEOM_Object thePnt4);
01230 
01237     GEOM_Object MakeHexa (in GEOM_Object theFace1,
01238                  in GEOM_Object theFace2,
01239                  in GEOM_Object theFace3,
01240                  in GEOM_Object theFace4,
01241                  in GEOM_Object theFace5,
01242                  in GEOM_Object theFace6);
01243 
01250     GEOM_Object MakeHexa2Faces (in GEOM_Object theFace1,
01251                     in GEOM_Object theFace2);
01252 
01265     GEOM_Object GetPoint (in GEOM_Object theShape,
01266                  in double      theX,
01267                  in double      theY,
01268                  in double      theZ,
01269                  in double      theEpsilon);
01270 
01277     GEOM_Object GetEdge (in GEOM_Object theShape,
01278                 in GEOM_Object thePoint1,
01279                 in GEOM_Object thePoint2);
01280 
01287     GEOM_Object GetEdgeNearPoint (in GEOM_Object theShape,
01288                       in GEOM_Object thePoint);
01289 
01296     GEOM_Object GetFaceByPoints (in GEOM_Object theShape,
01297                      in GEOM_Object thePoint1,
01298                      in GEOM_Object thePoint2,
01299                      in GEOM_Object thePoint3,
01300                      in GEOM_Object thePoint4);
01301 
01308     GEOM_Object GetFaceByEdges (in GEOM_Object theShape,
01309                     in GEOM_Object theEdge1,
01310                     in GEOM_Object theEdge2);
01311 
01318     GEOM_Object GetOppositeFace (in GEOM_Object theBlock,
01319                      in GEOM_Object theFace);
01320 
01327     GEOM_Object GetFaceNearPoint (in GEOM_Object theShape,
01328                       in GEOM_Object thePoint);
01329 
01336     GEOM_Object GetFaceByNormale (in GEOM_Object theBlock,
01337                       in GEOM_Object theVector);
01338 
01352     boolean IsCompoundOfBlocks (in GEOM_Object theCompound,
01353                     in long        theMinNbFaces,
01354                     in long        theMaxNbFaces,
01355                     out long       theNbBlocks);
01356 
01360     enum BCErrorType
01361     {
01362       /* Each element of the compound should be a Block */
01363       NOT_BLOCK,
01364 
01365       /* An element is a potential block, but has degenerated and/or seam edge(s). */
01366       EXTRA_EDGE,
01367 
01368       /* A connection between two Blocks should be an entire face or an entire edge */
01369       INVALID_CONNECTION,
01370 
01371       /* The compound should be connexe */
01372       NOT_CONNECTED,
01373 
01374       /* The glue between two quadrangle faces should be applied */
01375       NOT_GLUED
01376     };
01377 
01381     struct BCError
01382     {
01383       BCErrorType error;
01384       ListOfLong  incriminated;
01385     };
01386 
01390     typedef sequence<BCError> BCErrors;
01391 
01405     boolean CheckCompoundOfBlocks (in GEOM_Object theCompound,
01406                        out BCErrors   theErrors);
01407 
01415     string PrintBCErrors (in GEOM_Object theCompound,
01416                  in BCErrors    theErrors);
01417 
01424     GEOM_Object RemoveExtraEdges (in GEOM_Object theShape);
01425 
01433     GEOM_Object CheckAndImprove (in GEOM_Object theCompound);
01434 
01443     ListOfGO ExplodeCompoundOfBlocks (in GEOM_Object theCompound,
01444                           in long        theMinNbFaces,
01445                           in long        theMaxNbFaces);
01446 
01454     GEOM_Object GetBlockNearPoint (in GEOM_Object theCompound,
01455                        in GEOM_Object thePoint);
01456 
01463     GEOM_Object GetBlockByParts (in GEOM_Object theCompound,
01464                      in ListOfGO    theParts);
01465 
01472     ListOfGO GetBlocksByParts (in GEOM_Object theCompound,
01473                       in ListOfGO    theParts);
01474 
01490     GEOM_Object MakeMultiTransformation1D (in GEOM_Object theBlock,
01491                             in long        theDirFace1,
01492                             in long        theDirFace2,
01493                             in long        theNbTimes);
01494 
01503     GEOM_Object MakeMultiTransformation2D (in GEOM_Object theBlock,
01504                             in long        theDirFace1U,
01505                             in long        theDirFace2U,
01506                             in long        theNbTimesU,
01507                             in long        theDirFace1V,
01508                             in long        theDirFace2V,
01509                             in long        theNbTimesV);
01510 
01523     ListOfGO Propagate (in GEOM_Object theShape);
01524   };
01525 
01529   interface GEOM_IBooleanOperations : GEOM_IOperations
01530   {
01539     GEOM_Object MakeBoolean (in GEOM_Object theShape1,
01540                     in GEOM_Object theShape2,
01541                     in long theOperation);
01542 
01556     GEOM_Object MakePartition (in ListOfGO   theShapes,
01557                       in ListOfGO   theTools,
01558                       in ListOfGO   theKeepInside,
01559                       in ListOfGO   theRemoveInside,
01560                       in short      theLimit,
01561                       in boolean    theRemoveWebs,
01562                       in ListOfLong theMaterials);
01563 
01570     GEOM_Object MakeHalfPartition (in GEOM_Object theShape,
01571                        in GEOM_Object thePlane);
01572   };
01573 
01578   interface GEOM_ICurvesOperations : GEOM_IOperations
01579   {
01587     GEOM_Object MakeCirclePntVecR (in GEOM_Object thePnt,
01588                        in GEOM_Object theVec,
01589                        in double theR);
01595     GEOM_Object MakeCircleThreePnt (in GEOM_Object thePnt1,
01596                         in GEOM_Object thePnt2,
01597                         in GEOM_Object thePnt3);
01598 
01607     GEOM_Object MakeEllipse (in GEOM_Object thePnt,
01608                     in GEOM_Object theVec,
01609                     in double theRMajor,
01610                     in double theRMinor);
01611 
01619     GEOM_Object MakeArc (in GEOM_Object thePnt1,
01620                 in GEOM_Object thePnt2,
01621                 in GEOM_Object thePnt3);
01622 
01628     GEOM_Object MakePolyline (in ListOfGO thePoints);
01629 
01635     GEOM_Object MakeSplineBezier (in ListOfGO thePoints);
01636 
01642     GEOM_Object MakeSplineInterpolation (in ListOfGO thePoints);
01643 
01678     GEOM_Object MakeSketcher (in string theCommand, in ListOfDouble theWorkingPlane);
01679 
01689     GEOM_Object MakeSketcherOnPlane (in string theCommand, in GEOM_Object theWorkingPlane);
01690   };
01691 
01695   interface GEOM_ILocalOperations : GEOM_IOperations
01696   {
01703     GEOM_Object MakeFilletAll (in GEOM_Object theShape,
01704                       in double      theR);
01705 
01715     GEOM_Object MakeFilletEdges (in GEOM_Object theShape,
01716                      in double      theR,
01717                      in ListOfLong  theEdges);
01718 
01728     GEOM_Object MakeFilletFaces (in GEOM_Object theShape,
01729                      in double      theR,
01730                      in ListOfLong  theFaces);
01731 
01738     GEOM_Object MakeChamferAll (in GEOM_Object theShape,
01739                     in double      theD);
01740 
01752     GEOM_Object MakeChamferEdge (in GEOM_Object theShape,
01753                      in double theD1, in double theD2,
01754                      in long theFace1, in long theFace2);
01755 
01769     GEOM_Object MakeChamferFaces (in GEOM_Object theShape,
01770                       in double theD1, in double theD2,
01771                       in ListOfLong theFaces);
01772 
01783     GEOM_Object MakeArchimede (in GEOM_Object theShape,
01784                       in double theWeight,
01785                       in double theWaterDensity,
01786                       in double theMeshDeflection);
01787 
01792     long GetSubShapeIndex (in GEOM_Object theShape, in GEOM_Object theSubShape);
01793   };
01794 
01799   interface GEOM_IHealingOperations : GEOM_IOperations
01800   {
01811     GEOM_Object ProcessShape (in GEOM_Object theShapes,
01812                      in string_array theOperators,
01813                      in string_array theParameters,
01814                      in string_array theValues);
01815 
01825     void GetShapeProcessParameters (out string_array theOperators,
01826                         out string_array theParameters,
01827                         out string_array theValues);
01837     void GetOperatorParameters (in string theOperator,
01838                     out string_array theParameters,
01839                     out string_array theValues);
01840 
01848     GEOM_Object SuppressFaces (in GEOM_Object theObject, in short_array theFaces);
01849 
01859     GEOM_Object CloseContour (in GEOM_Object theObject, in short_array theWires,
01860                      in boolean isCommonVertex);
01861 
01869     GEOM_Object RemoveIntWires (in GEOM_Object theObject, in short_array theWires);
01870 
01878     GEOM_Object FillHoles (in GEOM_Object theObject, in short_array theWires);
01879 
01886     GEOM_Object Sew (in GEOM_Object theObject, in double theTolerance);
01887 
01899     GEOM_Object DivideEdge (in GEOM_Object theObject, in short theEdgeIndex,
01900                    in double theValue, in boolean isByParameter);
01901 
01910     boolean GetFreeBoundary (in GEOM_Object theObject,
01911                     out ListOfGO theClosedWires,
01912                     out ListOfGO theOpenWires);
01913 
01919     GEOM_Object ChangeOrientation (in GEOM_Object theObject);
01920     GEOM_Object ChangeOrientationCopy (in GEOM_Object theObject);
01921 
01922   };
01923 
01928   interface GEOM_IInsertOperations : GEOM_IOperations
01929   {
01933     GEOM_Object MakeCopy (in GEOM_Object theOriginal);
01934 
01942     void Export (in GEOM_Object theObject, in string theFileName, in string theFormatName);
01943 
01952     GEOM_Object Import (in string theFileName, in string theFormatName);
01953 
01960     void ImportTranslators (out string_array theFormats,
01961                    out string_array thePatterns);
01962 
01969     void ExportTranslators (out string_array theFormats,
01970                    out string_array thePatterns);
01971   };
01972 
01978   interface GEOM_IMeasureOperations : GEOM_IOperations
01979   {
01991     void GetPosition (in GEOM_Object theShape,
01992                 out double Ox, out double Oy, out double Oz,
01993                 out double Zx, out double Zy, out double Zz,
01994                 out double Xx, out double Xy, out double Xz);
01995 
02005     void GetBasicProperties (in GEOM_Object theShape,
02006                     out double theLength,
02007                     out double theSurfArea,
02008                     out double theVolume);
02009 
02015     GEOM_Object GetCentreOfMass (in GEOM_Object theShape);
02016 
02024     void GetInertia (in GEOM_Object theShape,
02025                out double I11, out double I12, out double I13,
02026                out double I21, out double I22, out double I23,
02027                out double I31, out double I32, out double I33,
02028                out double Ix , out double Iy , out double Iz);
02029 
02038     void GetBoundingBox (in GEOM_Object theShape,
02039                 out double Xmin, out double Xmax,
02040                 out double Ymin, out double Ymax,
02041                 out double Zmin, out double Zmax);
02042 
02051     void GetTolerance (in GEOM_Object theShape,
02052                  out double FaceMin, out double FaceMax,
02053                  out double EdgeMin, out double EdgeMax,
02054                  out double VertMin, out double VertMax);
02055 
02062     boolean CheckShape (in GEOM_Object theShape,
02063                out string     theDescription);
02064 
02071     boolean CheckShapeWithGeometry (in GEOM_Object theShape,
02072                         out string     theDescription);
02073 
02079     string WhatIs (in GEOM_Object theShape);
02080 
02088     double GetMinDistance (in GEOM_Object theShape1, in GEOM_Object theShape2,
02089                   out double X1, out double Y1, out double Z1,
02090                   out double X2, out double Y2, out double Z2);
02091 
02092 
02096     void PointCoordinates (in GEOM_Object theShape, out double X, out double Y, out double Z);
02097   };
02098 
02099 
02103   interface GEOM_IGroupOperations : GEOM_IOperations
02104   {
02111     GEOM_Object CreateGroup (in GEOM_Object theMainShape, in long theShapeType);
02112 
02119     void AddObject (in GEOM_Object theGroup, in long theSubShapeId);
02120 
02127     void RemoveObject (in GEOM_Object theGroup, in long theSubShapeId);
02128 
02134     void UnionList (in GEOM_Object theGroup, in ListOfGO theSubShapes);
02135 
02141     void DifferenceList (in GEOM_Object theGroup, in ListOfGO theSubShapes);
02142 
02148     void UnionIDs (in GEOM_Object theGroup, in ListOfLong theSubShapes);
02149 
02155     void DifferenceIDs (in GEOM_Object theGroup, in ListOfLong theSubShapes);
02156 
02161     long GetType (in GEOM_Object theGroup);
02162 
02168     GEOM_Object GetMainShape (in GEOM_Object theGroup);
02169 
02174     ListOfLong GetObjects (in GEOM_Object theGroup);
02175   };
02176 
02177 
02182   interface GEOM_Gen : Engines::Component,SALOMEDS::Driver
02183   {
02188     void Undo (in long theStudyID);
02189 
02190     void Redo (in long theStudyID);
02191 
02198     SALOMEDS::SObject AddInStudy (in SALOMEDS::Study theStudy,
02199                       in GEOM_Object theObject,
02200                       in string theName,
02201                       in GEOM_Object theFather);
02202 
02206     GEOM_IBasicOperations     GetIBasicOperations    (in long theStudyID) raises (SALOME::SALOME_Exception);
02207     GEOM_ITransformOperations GetITransformOperations(in long theStudyID) raises (SALOME::SALOME_Exception);
02208     GEOM_I3DPrimOperations    GetI3DPrimOperations   (in long theStudyID) raises (SALOME::SALOME_Exception);
02209     GEOM_IShapesOperations    GetIShapesOperations   (in long theStudyID) raises (SALOME::SALOME_Exception);
02210     GEOM_IBooleanOperations   GetIBooleanOperations  (in long theStudyID) raises (SALOME::SALOME_Exception);
02211     GEOM_ICurvesOperations    GetICurvesOperations   (in long theStudyID) raises (SALOME::SALOME_Exception);
02212     GEOM_ILocalOperations     GetILocalOperations    (in long theStudyID) raises (SALOME::SALOME_Exception);
02213     GEOM_IHealingOperations   GetIHealingOperations  (in long theStudyID) raises (SALOME::SALOME_Exception);
02214     GEOM_IInsertOperations    GetIInsertOperations   (in long theStudyID) raises (SALOME::SALOME_Exception);
02215     GEOM_IMeasureOperations   GetIMeasureOperations  (in long theStudyID) raises (SALOME::SALOME_Exception);
02216     GEOM_IBlocksOperations    GetIBlocksOperations   (in long theStudyID) raises (SALOME::SALOME_Exception);
02217     GEOM_IGroupOperations     GetIGroupOperations    (in long theStudyID) raises (SALOME::SALOME_Exception);
02218 
02227     void RemoveObject (in GEOM_Object theObject);
02228 
02235     GEOM_Object GetObject (in long theStudyID, in string theEntry);
02236 
02244     GEOM_Object AddSubShape (in GEOM_Object theMainShape, in ListOfLong theIndices);
02245 
02254     GEOM_Object GetIORFromString (in string theIOR);
02255 
02260     string GetStringFromIOR (in GEOM_Object theObject);
02261 
02266     string GetDumpName (in string theStudyEntry);
02267 
02272     string_array GetAllDumpNames();
02273   };
02274 };
02275 
02276 #endif