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 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 
00481     GEOM_Object RotateThreePoints (in GEOM_Object theObject,
00482                        in GEOM_Object theCentPoint,
00483                        in GEOM_Object thePoint1,
00484                        in GEOM_Object thePoint2);
00485 
00486 
00496     GEOM_Object RotateThreePointsCopy (in GEOM_Object theObject,
00497                            in GEOM_Object theCentPoint,
00498                            in GEOM_Object thePoint1,
00499                            in GEOM_Object thePoint2);
00500 
00508     GEOM_Object Rotate (in GEOM_Object theObject,
00509                in GEOM_Object theAxis,
00510                in double theAngle);
00511 
00512 
00521     GEOM_Object RotateCopy (in GEOM_Object theObject,
00522                    in GEOM_Object theAxis,
00523                    in double theAngle);
00524 
00525 
00535     GEOM_Object MultiRotate1D (in GEOM_Object theObject,
00536                       in GEOM_Object theAxis,
00537                       in long theNbTimes);
00538 
00554     GEOM_Object MultiRotate2D (in GEOM_Object theObject,
00555                       in GEOM_Object theAxis,
00556                       in double theAngle,
00557                       in long theNbTimes1,
00558                       in double theStep,
00559                       in long theNbTimes2);
00560 
00567     GEOM_Object MirrorPlane (in GEOM_Object theObject, in GEOM_Object thePlane);
00568 
00576     GEOM_Object MirrorPlaneCopy (in GEOM_Object theObject, in GEOM_Object thePlane);
00577 
00585     GEOM_Object MirrorAxis (in GEOM_Object theObject, in GEOM_Object theAxis);
00586 
00594     GEOM_Object MirrorAxisCopy (in GEOM_Object theObject, in GEOM_Object theAxis);
00595 
00602     GEOM_Object MirrorPoint (in GEOM_Object theObject, in GEOM_Object thePoint);
00603 
00610     GEOM_Object MirrorPointCopy (in GEOM_Object theObject, in GEOM_Object thePoint);
00611 
00618     GEOM_Object OffsetShape (in GEOM_Object theObject, in double theOffset);
00619 
00626     GEOM_Object OffsetShapeCopy (in GEOM_Object theObject, in double theOffset);
00627 
00635     GEOM_Object ScaleShape (in GEOM_Object theObject, in GEOM_Object thePoint,
00636                    in double theFactor);
00637 
00645     GEOM_Object ScaleShapeCopy (in GEOM_Object theObject, in GEOM_Object thePoint,
00646                     in double theFactor);
00647 
00659     GEOM_Object PositionShape (in GEOM_Object theObject,
00660                       in GEOM_Object theStartLCS,
00661                       in GEOM_Object theEndLCS);
00662 
00675     GEOM_Object PositionShapeCopy (in GEOM_Object theObject,
00676                        in GEOM_Object theStartLCS,
00677                        in GEOM_Object theEndLCS);
00678   };
00679 
00685   interface GEOM_I3DPrimOperations : GEOM_IOperations
00686   {
00696     GEOM_Object MakeBoxDXDYDZ (in double theDX, in double theDY, in double theDZ);
00697 
00705     GEOM_Object MakeBoxTwoPnt (in GEOM_Object thePnt1, in GEOM_Object thePnt2);
00706 
00715     GEOM_Object MakeCylinderRH (in double theR, in double theH);
00716 
00725     GEOM_Object MakeCylinderPntVecRH (in GEOM_Object thePnt,
00726                           in GEOM_Object theAxis,
00727                           in double      theR,
00728                           in double      theH);
00729 
00741     GEOM_Object MakeConeR1R2H (in double theR1, in double theR2, in double theH);
00742 
00754     GEOM_Object MakeConePntVecR1R2H (in GEOM_Object thePnt,
00755                          in GEOM_Object theAxis,
00756                          in double      theR1,
00757                          in double      theR2,
00758                          in double      theH);
00759 
00766     GEOM_Object MakeTorusRR (in double theRMajor,
00767                     in double theRMinor);
00768 
00777     GEOM_Object MakeTorusPntVecRR (in GEOM_Object thePnt,
00778                        in GEOM_Object theVec,
00779                        in double theRMajor,
00780                        in double theRMinor);
00781 
00787     GEOM_Object MakeSphereR (in double theR);
00788 
00795     GEOM_Object MakeSpherePntR (in GEOM_Object thePnt, in double theR);
00796 
00806     GEOM_Object MakePrismVecH (in GEOM_Object theBase,
00807                       in GEOM_Object theVec,
00808                       in double      theH);
00809 
00817     GEOM_Object MakePrismTwoPnt (in GEOM_Object theBase,
00818                      in GEOM_Object thePoint1,
00819                      in GEOM_Object thePoint2);
00820 
00828     GEOM_Object MakePipe (in GEOM_Object theBase, in GEOM_Object thePath);
00829 
00839     GEOM_Object MakeRevolutionAxisAngle (in GEOM_Object theBase,
00840                           in GEOM_Object theAxis,
00841                           in double theAngle);
00842 
00852     GEOM_Object MakeFilling (in GEOM_Object theShape,
00853                     in long theMinDeg, in long theMaxDeg,
00854                     in double theTol2D, in double theTol3D,
00855                     in long theNbIter);
00856 
00865     GEOM_Object MakeThruSections(in ListOfGO theSeqSections,
00866                      in boolean theModeSolid,
00867                      in double thePreci,
00868                                  in boolean theRuled);
00869 
00885     GEOM_Object MakePipeWithDifferentSections (in ListOfGO theSeqBases,
00886                                 in ListOfGO theLocations,
00887                                 in GEOM_Object thePath,
00888                                 in boolean theWithContact ,
00889                                 in boolean theWithCorrection );
00890     
00907     GEOM_Object MakePipeWithShellSections (in ListOfGO theSeqBases,
00908                             in ListOfGO theSeqSubBases,
00909                             in ListOfGO theLocations,
00910                             in GEOM_Object thePath,
00911                             in boolean theWithContact ,
00912                             in boolean theWithCorrection );
00913     
00914   };
00915 
00921   interface GEOM_IShapesOperations : GEOM_IOperations
00922   {
00929     GEOM_Object MakeEdge (in GEOM_Object thePnt1, in GEOM_Object thePnt2);
00930 
00936     GEOM_Object MakeWire (in ListOfGO theEdgesAndWires);
00937 
00945     GEOM_Object MakeFace (in GEOM_Object theWire, in boolean isPlanarWanted);
00946 
00954     GEOM_Object MakeFaceWires (in ListOfGO theWires, in boolean isPlanarWanted);
00955 
00961     GEOM_Object MakeShell (in ListOfGO theFacesAndShells);
00962 
00968     GEOM_Object MakeSolidShell (in GEOM_Object theShell);
00969 
00975     GEOM_Object MakeSolidShells (in ListOfGO theShells);
00976 
00982     GEOM_Object MakeCompound (in ListOfGO theShapes);
00983 
00990     GEOM_Object MakeGlueFaces (in GEOM_Object theShape, in double theTolerance);
00991 
00998     ListOfGO GetGlueFaces (in GEOM_Object theShape, in double theTolerance);
00999 
01008     GEOM_Object MakeGlueFacesByList (in GEOM_Object theShape, in double theTolerance,
01009                          in ListOfGO theFaces);
01010 
01019     ListOfGO MakeExplode (in GEOM_Object theShape,
01020                  in long        theShapeType,
01021                  in boolean     isSorted);
01022 
01033     ListOfLong SubShapeAllIDs (in GEOM_Object theShape,
01034                       in long        theShapeType,
01035                       in boolean     isSorted);
01036 
01042     GEOM_Object GetSubShape (in GEOM_Object theMainShape,
01043                     in long        theID);
01044 
01051     long GetSubShapeIndex (in GEOM_Object theMainShape, in GEOM_Object theSubShape);
01052 
01061     long GetTopologyIndex (in GEOM_Object theMainShape, in GEOM_Object theSubShape);
01062 
01072     string GetShapeTypeString (in GEOM_Object theShape);
01073 
01079     long NumberOfFaces (in GEOM_Object theShape);
01080 
01086     long NumberOfEdges (in GEOM_Object theShape);
01087 
01093     GEOM_Object ChangeOrientation (in GEOM_Object theShape);
01094 
01101     ListOfLong GetFreeFacesIDs (in GEOM_Object theShape);
01102 
01110     ListOfGO GetSharedShapes (in GEOM_Object theShape1,
01111                      in GEOM_Object theShape2,
01112                      in long        theShapeType);
01113 
01124     ListOfGO GetShapesOnPlane (in GEOM_Object theShape,
01125                       in long        theShapeType,
01126                       in GEOM_Object theAx1,
01127                       in shape_state theState);
01139     ListOfGO GetShapesOnPlaneWithLocation (in GEOM_Object theShape,
01140                             in long        theShapeType,
01141                             in GEOM_Object theAx1,
01142                             in GEOM_Object thePnt,
01143                             in shape_state theState);
01144 
01145 
01146 
01158     ListOfGO GetShapesOnCylinder (in GEOM_Object theShape,
01159                       in long        theShapeType,
01160                       in GEOM_Object theAxis,
01161                       in double      theRadius,
01162                       in shape_state theState);
01163 
01174     ListOfGO GetShapesOnSphere (in GEOM_Object theShape,
01175                     in long        theShapeType,
01176                     in GEOM_Object theCenter,
01177                     in double      theRadius,
01178                     in shape_state theState);
01179 
01192     ListOfGO GetShapesOnQuadrangle (in GEOM_Object theShape,
01193                                     in long        theShapeType,
01194                                     in GEOM_Object theTopLeftPoint,
01195                                     in GEOM_Object theTopRigthPoint,
01196                                     in GEOM_Object theBottomLeftPoint,
01197                                     in GEOM_Object theBottomRigthPoint,
01198                                     in shape_state theState);
01199 
01210     ListOfLong GetShapesOnPlaneIDs (in GEOM_Object theShape,
01211                         in long        theShapeType,
01212                         in GEOM_Object theAx1,
01213                         in shape_state theState);
01214                         
01226     ListOfLong GetShapesOnPlaneWithLocationIDs (in GEOM_Object theShape,
01227                               in long        theShapeType,
01228                               in GEOM_Object theAx1,
01229                               in GEOM_Object thePnt,
01230                               in shape_state theState);
01231 
01243     ListOfLong GetShapesOnCylinderIDs (in GEOM_Object theShape,
01244                            in long        theShapeType,
01245                            in GEOM_Object theAxis,
01246                            in double      theRadius,
01247                            in shape_state theState);
01248 
01259     ListOfLong GetShapesOnSphereIDs (in GEOM_Object theShape,
01260                          in long        theShapeType,
01261                          in GEOM_Object theCenter,
01262                          in double      theRadius,
01263                          in shape_state theState);
01264 
01277     ListOfLong GetShapesOnQuadrangleIDs (in GEOM_Object theShape,
01278                                          in long        theShapeType,
01279                                          in GEOM_Object theTopLeftPoint,
01280                                          in GEOM_Object theTopRigthPoint,
01281                                          in GEOM_Object theBottomLeftPoint,
01282                                          in GEOM_Object theBottomRigthPoint,
01283                                          in shape_state theState);
01284 
01293     ListOfLong GetShapesOnBoxIDs (in GEOM_Object theBox,
01294                       in GEOM_Object theShape,
01295                       in long        theShapeType,
01296                       in shape_state theState);
01297 
01306     ListOfGO GetShapesOnBox (in GEOM_Object theBox,
01307                     in GEOM_Object theShape,
01308                     in long        theShapeType,
01309                     in shape_state theState);
01310 
01318     GEOM_Object GetInPlace (in GEOM_Object theShapeWhere,
01319                    in GEOM_Object theShapeWhat);
01320 
01328     GEOM_Object GetSame (in GEOM_Object theShapeWhere,
01329                         in GEOM_Object theShapeWhat);
01330   };
01331 
01337   interface GEOM_IBlocksOperations : GEOM_IOperations
01338   {
01349     GEOM_Object MakeQuad (in GEOM_Object theEdge1,
01350                  in GEOM_Object theEdge2,
01351                  in GEOM_Object theEdge3,
01352                  in GEOM_Object theEdge4);
01353 
01360     GEOM_Object MakeQuad2Edges (in GEOM_Object theEdge1,
01361                     in GEOM_Object theEdge2);
01362 
01369     GEOM_Object MakeQuad4Vertices (in GEOM_Object thePnt1,
01370                        in GEOM_Object thePnt2,
01371                        in GEOM_Object thePnt3,
01372                        in GEOM_Object thePnt4);
01373 
01380     GEOM_Object MakeHexa (in GEOM_Object theFace1,
01381                  in GEOM_Object theFace2,
01382                  in GEOM_Object theFace3,
01383                  in GEOM_Object theFace4,
01384                  in GEOM_Object theFace5,
01385                  in GEOM_Object theFace6);
01386 
01393     GEOM_Object MakeHexa2Faces (in GEOM_Object theFace1,
01394                     in GEOM_Object theFace2);
01395 
01408     GEOM_Object GetPoint (in GEOM_Object theShape,
01409                  in double      theX,
01410                  in double      theY,
01411                  in double      theZ,
01412                  in double      theEpsilon);
01413 
01420     GEOM_Object GetEdge (in GEOM_Object theShape,
01421                 in GEOM_Object thePoint1,
01422                 in GEOM_Object thePoint2);
01423 
01430     GEOM_Object GetEdgeNearPoint (in GEOM_Object theShape,
01431                       in GEOM_Object thePoint);
01432 
01439     GEOM_Object GetFaceByPoints (in GEOM_Object theShape,
01440                      in GEOM_Object thePoint1,
01441                      in GEOM_Object thePoint2,
01442                      in GEOM_Object thePoint3,
01443                      in GEOM_Object thePoint4);
01444 
01451     GEOM_Object GetFaceByEdges (in GEOM_Object theShape,
01452                     in GEOM_Object theEdge1,
01453                     in GEOM_Object theEdge2);
01454 
01461     GEOM_Object GetOppositeFace (in GEOM_Object theBlock,
01462                      in GEOM_Object theFace);
01463 
01470     GEOM_Object GetFaceNearPoint (in GEOM_Object theShape,
01471                       in GEOM_Object thePoint);
01472 
01479     GEOM_Object GetFaceByNormale (in GEOM_Object theBlock,
01480                       in GEOM_Object theVector);
01481 
01495     boolean IsCompoundOfBlocks (in GEOM_Object theCompound,
01496                     in long        theMinNbFaces,
01497                     in long        theMaxNbFaces,
01498                     out long       theNbBlocks);
01499 
01503     enum BCErrorType
01504     {
01505       /* Each element of the compound should be a Block */
01506       NOT_BLOCK,
01507 
01508       /* An element is a potential block, but has degenerated and/or seam edge(s). */
01509       EXTRA_EDGE,
01510 
01511       /* A connection between two Blocks should be an entire face or an entire edge */
01512       INVALID_CONNECTION,
01513 
01514       /* The compound should be connexe */
01515       NOT_CONNECTED,
01516 
01517       /* The glue between two quadrangle faces should be applied */
01518       NOT_GLUED
01519     };
01520 
01524     struct BCError
01525     {
01526       BCErrorType error;
01527       ListOfLong  incriminated;
01528     };
01529 
01533     typedef sequence<BCError> BCErrors;
01534 
01548     boolean CheckCompoundOfBlocks (in GEOM_Object theCompound,
01549                        out BCErrors   theErrors);
01550 
01558     string PrintBCErrors (in GEOM_Object theCompound,
01559                  in BCErrors    theErrors);
01560 
01567     GEOM_Object RemoveExtraEdges (in GEOM_Object theShape);
01568 
01576     GEOM_Object CheckAndImprove (in GEOM_Object theCompound);
01577 
01586     ListOfGO ExplodeCompoundOfBlocks (in GEOM_Object theCompound,
01587                           in long        theMinNbFaces,
01588                           in long        theMaxNbFaces);
01589 
01597     GEOM_Object GetBlockNearPoint (in GEOM_Object theCompound,
01598                        in GEOM_Object thePoint);
01599 
01606     GEOM_Object GetBlockByParts (in GEOM_Object theCompound,
01607                      in ListOfGO    theParts);
01608 
01615     ListOfGO GetBlocksByParts (in GEOM_Object theCompound,
01616                       in ListOfGO    theParts);
01617 
01633     GEOM_Object MakeMultiTransformation1D (in GEOM_Object theBlock,
01634                             in long        theDirFace1,
01635                             in long        theDirFace2,
01636                             in long        theNbTimes);
01637 
01646     GEOM_Object MakeMultiTransformation2D (in GEOM_Object theBlock,
01647                             in long        theDirFace1U,
01648                             in long        theDirFace2U,
01649                             in long        theNbTimesU,
01650                             in long        theDirFace1V,
01651                             in long        theDirFace2V,
01652                             in long        theNbTimesV);
01653 
01666     ListOfGO Propagate (in GEOM_Object theShape);
01667   };
01668 
01672   interface GEOM_IBooleanOperations : GEOM_IOperations
01673   {
01682     GEOM_Object MakeBoolean (in GEOM_Object theShape1,
01683                     in GEOM_Object theShape2,
01684                     in long theOperation);
01685 
01707     GEOM_Object MakePartition (in ListOfGO   theShapes,
01708                       in ListOfGO   theTools,
01709                       in ListOfGO   theKeepInside,
01710                       in ListOfGO   theRemoveInside,
01711                       in short      theLimit,
01712                       in boolean    theRemoveWebs,
01713                       in ListOfLong theMaterials);
01714 
01728     GEOM_Object MakePartitionNonSelfIntersectedShape (in ListOfGO   theShapes,
01729                                     in ListOfGO   theTools,
01730                                     in ListOfGO   theKeepInside,
01731                                     in ListOfGO   theRemoveInside,
01732                                     in short      theLimit,
01733                                     in boolean    theRemoveWebs,
01734                                     in ListOfLong theMaterials);
01735 
01742     GEOM_Object MakeHalfPartition (in GEOM_Object theShape,
01743                        in GEOM_Object thePlane);
01744   };
01745 
01750   interface GEOM_ICurvesOperations : GEOM_IOperations
01751   {
01759     GEOM_Object MakeCirclePntVecR (in GEOM_Object thePnt,
01760                        in GEOM_Object theVec,
01761                        in double theR);
01767     GEOM_Object MakeCircleThreePnt (in GEOM_Object thePnt1,
01768                         in GEOM_Object thePnt2,
01769                         in GEOM_Object thePnt3);
01770 
01779     GEOM_Object MakeEllipse (in GEOM_Object thePnt,
01780                     in GEOM_Object theVec,
01781                     in double theRMajor,
01782                     in double theRMinor);
01783 
01791     GEOM_Object MakeArc (in GEOM_Object thePnt1,
01792                 in GEOM_Object thePnt2,
01793                 in GEOM_Object thePnt3);
01794 
01803     GEOM_Object MakeArcCenter (in GEOM_Object theCenter,
01804                                in GEOM_Object thePnt1,
01805                                in GEOM_Object thePnt2,
01806                                in boolean theSense);
01807 
01808 
01814     GEOM_Object MakePolyline (in ListOfGO thePoints);
01815 
01821     GEOM_Object MakeSplineBezier (in ListOfGO thePoints);
01822 
01828     GEOM_Object MakeSplineInterpolation (in ListOfGO thePoints);
01829 
01864     GEOM_Object MakeSketcher (in string theCommand, in ListOfDouble theWorkingPlane);
01865 
01875     GEOM_Object MakeSketcherOnPlane (in string theCommand, in GEOM_Object theWorkingPlane);
01876   };
01877 
01881   interface GEOM_ILocalOperations : GEOM_IOperations
01882   {
01889     GEOM_Object MakeFilletAll (in GEOM_Object theShape,
01890                       in double      theR);
01891 
01901     GEOM_Object MakeFilletEdges (in GEOM_Object theShape,
01902                      in double      theR,
01903                      in ListOfLong  theEdges);
01904 
01914     GEOM_Object MakeFilletFaces (in GEOM_Object theShape,
01915                      in double      theR,
01916                      in ListOfLong  theFaces);
01917 
01924     GEOM_Object MakeChamferAll (in GEOM_Object theShape,
01925                     in double      theD);
01926 
01938     GEOM_Object MakeChamferEdge (in GEOM_Object theShape,
01939                      in double theD1, in double theD2,
01940                      in long theFace1, in long theFace2);
01941 
01955     GEOM_Object MakeChamferFaces (in GEOM_Object theShape,
01956                       in double theD1, in double theD2,
01957                       in ListOfLong theFaces);
01958 
01969     GEOM_Object MakeArchimede (in GEOM_Object theShape,
01970                       in double theWeight,
01971                       in double theWaterDensity,
01972                       in double theMeshDeflection);
01973 
01978     long GetSubShapeIndex (in GEOM_Object theShape, in GEOM_Object theSubShape);
01979   };
01980 
01985   interface GEOM_IHealingOperations : GEOM_IOperations
01986   {
01997     GEOM_Object ProcessShape (in GEOM_Object theShapes,
01998                      in string_array theOperators,
01999                      in string_array theParameters,
02000                      in string_array theValues);
02001 
02011     void GetShapeProcessParameters (out string_array theOperators,
02012                         out string_array theParameters,
02013                         out string_array theValues);
02023     void GetOperatorParameters (in string theOperator,
02024                     out string_array theParameters,
02025                     out string_array theValues);
02026 
02034     GEOM_Object SuppressFaces (in GEOM_Object theObject, in short_array theFaces);
02035 
02045     GEOM_Object CloseContour (in GEOM_Object theObject, in short_array theWires,
02046                      in boolean isCommonVertex);
02047 
02055     GEOM_Object RemoveIntWires (in GEOM_Object theObject, in short_array theWires);
02056 
02064     GEOM_Object FillHoles (in GEOM_Object theObject, in short_array theWires);
02065 
02072     GEOM_Object Sew (in GEOM_Object theObject, in double theTolerance);
02073 
02085     GEOM_Object DivideEdge (in GEOM_Object theObject, in short theEdgeIndex,
02086                    in double theValue, in boolean isByParameter);
02087 
02096     boolean GetFreeBoundary (in GEOM_Object theObject,
02097                     out ListOfGO theClosedWires,
02098                     out ListOfGO theOpenWires);
02099 
02105     GEOM_Object ChangeOrientation (in GEOM_Object theObject);
02106     GEOM_Object ChangeOrientationCopy (in GEOM_Object theObject);
02107 
02108   };
02109 
02114   interface GEOM_IInsertOperations : GEOM_IOperations
02115   {
02119     GEOM_Object MakeCopy (in GEOM_Object theOriginal);
02120 
02128     void Export (in GEOM_Object theObject, in string theFileName, in string theFormatName);
02129 
02138     GEOM_Object Import (in string theFileName, in string theFormatName);
02139 
02146     void ImportTranslators (out string_array theFormats,
02147                    out string_array thePatterns);
02148 
02155     void ExportTranslators (out string_array theFormats,
02156                    out string_array thePatterns);
02157   };
02158 
02162   interface GEOM_IKindOfShape
02163   {
02164     enum shape_kind {
02165       NO_SHAPE,
02166       // COMPOSITEs
02167       COMPOUND,
02168       COMPSOLID,
02169       SHELL,
02170       WIRE,
02171       // SOLIDs
02172       SPHERE,       // full sphere
02173       CYLINDER,     // cylinder
02174       BOX,          // box with faces, parallel to global coordinate planes
02175       ROTATED_BOX,  // other box
02176       TORUS,        // full torus
02177       CONE,         // cone
02178       POLYHEDRON,   // solid, bounded by polygons
02179       SOLID,        // other solid
02180       // FACEs
02181       SPHERE2D,     // spherical face (closed)
02182       CYLINDER2D,   // cylindrical face with defined height
02183       TORUS2D,      // toroidal face (closed)
02184       CONE2D,       // conical face with defined height
02185       DISK_CIRCLE,  // planar, bounded by circle
02186       DISK_ELLIPSE, // planar, bounded by ellipse
02187       POLYGON,      // planar, bounded by segments
02188       PLANE,        // infinite planar
02189       PLANAR,       // other planar
02190       FACE,         // other face
02191       // EDGEs
02192       CIRCLE,       // full circle
02193       ARC_CIRCLE,   // arc of circle
02194       ELLIPSE,      // full ellipse
02195       ARC_ELLIPSE,  // arc of ellipse
02196       LINE,         // infinite segment
02197       SEGMENT,      // segment
02198       EDGE,         // other edge
02199       // VERTEX
02200       VERTEX
02201     };
02202   };
02203 
02204 
02210   interface GEOM_IMeasureOperations : GEOM_IOperations
02211   {
02222     //short KindOfShape (in GEOM_Object   theShape,
02223     GEOM_IKindOfShape::shape_kind KindOfShape (in  GEOM_Object  theShape,
02224                                 out ListOfLong   theIntegers,
02225                                 out ListOfDouble theDoubles);
02226 
02238     void GetPosition (in GEOM_Object theShape,
02239                 out double Ox, out double Oy, out double Oz,
02240                 out double Zx, out double Zy, out double Zz,
02241                 out double Xx, out double Xy, out double Xz);
02242 
02252     void GetBasicProperties (in GEOM_Object theShape,
02253                     out double theLength,
02254                     out double theSurfArea,
02255                     out double theVolume);
02256 
02262     GEOM_Object GetCentreOfMass (in GEOM_Object theShape);
02263 
02271     void GetInertia (in GEOM_Object theShape,
02272                out double I11, out double I12, out double I13,
02273                out double I21, out double I22, out double I23,
02274                out double I31, out double I32, out double I33,
02275                out double Ix , out double Iy , out double Iz);
02276 
02285     void GetBoundingBox (in GEOM_Object theShape,
02286                 out double Xmin, out double Xmax,
02287                 out double Ymin, out double Ymax,
02288                 out double Zmin, out double Zmax);
02289 
02298     void GetTolerance (in GEOM_Object theShape,
02299                  out double FaceMin, out double FaceMax,
02300                  out double EdgeMin, out double EdgeMax,
02301                  out double VertMin, out double VertMax);
02302 
02309     boolean CheckShape (in GEOM_Object theShape,
02310                out string     theDescription);
02311 
02318     boolean CheckShapeWithGeometry (in GEOM_Object theShape,
02319                         out string     theDescription);
02320 
02326     string WhatIs (in GEOM_Object theShape);
02327 
02335     double GetMinDistance (in GEOM_Object theShape1, in GEOM_Object theShape2,
02336                   out double X1, out double Y1, out double Z1,
02337                   out double X2, out double Y2, out double Z2);
02338 
02339 
02343     void PointCoordinates (in GEOM_Object theShape, out double X, out double Y, out double Z);
02344   };
02345 
02346 
02350   interface GEOM_IGroupOperations : GEOM_IOperations
02351   {
02358     GEOM_Object CreateGroup (in GEOM_Object theMainShape, in long theShapeType);
02359 
02366     void AddObject (in GEOM_Object theGroup, in long theSubShapeId);
02367 
02374     void RemoveObject (in GEOM_Object theGroup, in long theSubShapeId);
02375 
02381     void UnionList (in GEOM_Object theGroup, in ListOfGO theSubShapes);
02382 
02388     void DifferenceList (in GEOM_Object theGroup, in ListOfGO theSubShapes);
02389 
02395     void UnionIDs (in GEOM_Object theGroup, in ListOfLong theSubShapes);
02396 
02402     void DifferenceIDs (in GEOM_Object theGroup, in ListOfLong theSubShapes);
02403 
02408     long GetType (in GEOM_Object theGroup);
02409 
02415     GEOM_Object GetMainShape (in GEOM_Object theGroup);
02416 
02421     ListOfLong GetObjects (in GEOM_Object theGroup);
02422   };
02423 
02424 
02429   interface GEOM_Gen : Engines::Component,SALOMEDS::Driver
02430   {
02435     void Undo (in long theStudyID);
02436 
02437     void Redo (in long theStudyID);
02438 
02445     SALOMEDS::SObject AddInStudy (in SALOMEDS::Study theStudy,
02446                       in GEOM_Object theObject,
02447                       in string theName,
02448                       in GEOM_Object theFather);
02449 
02453     GEOM_IBasicOperations     GetIBasicOperations    (in long theStudyID) raises (SALOME::SALOME_Exception);
02454     GEOM_ITransformOperations GetITransformOperations(in long theStudyID) raises (SALOME::SALOME_Exception);
02455     GEOM_I3DPrimOperations    GetI3DPrimOperations   (in long theStudyID) raises (SALOME::SALOME_Exception);
02456     GEOM_IShapesOperations    GetIShapesOperations   (in long theStudyID) raises (SALOME::SALOME_Exception);
02457     GEOM_IBooleanOperations   GetIBooleanOperations  (in long theStudyID) raises (SALOME::SALOME_Exception);
02458     GEOM_ICurvesOperations    GetICurvesOperations   (in long theStudyID) raises (SALOME::SALOME_Exception);
02459     GEOM_ILocalOperations     GetILocalOperations    (in long theStudyID) raises (SALOME::SALOME_Exception);
02460     GEOM_IHealingOperations   GetIHealingOperations  (in long theStudyID) raises (SALOME::SALOME_Exception);
02461     GEOM_IInsertOperations    GetIInsertOperations   (in long theStudyID) raises (SALOME::SALOME_Exception);
02462     GEOM_IMeasureOperations   GetIMeasureOperations  (in long theStudyID) raises (SALOME::SALOME_Exception);
02463     GEOM_IBlocksOperations    GetIBlocksOperations   (in long theStudyID) raises (SALOME::SALOME_Exception);
02464     GEOM_IGroupOperations     GetIGroupOperations    (in long theStudyID) raises (SALOME::SALOME_Exception);
02465 
02474     void RemoveObject (in GEOM_Object theObject);
02475 
02482     GEOM_Object GetObject (in long theStudyID, in string theEntry);
02483 
02491     GEOM_Object AddSubShape (in GEOM_Object theMainShape, in ListOfLong theIndices);
02492 
02501     GEOM_Object GetIORFromString (in string theIOR);
02502 
02507     string GetStringFromIOR (in GEOM_Object theObject);
02508 
02513     string GetDumpName (in string theStudyEntry);
02514 
02519     string_array GetAllDumpNames();
02520   };
02521 };
02522 
02523 #endif