diff --git a/doc/salome/gui/GEOM/pics/set_rotation_point_dialog1.png b/doc/salome/gui/GEOM/pics/set_rotation_point_dialog1.png
new file mode 100644
index 000000000..bdab73b7d
Binary files /dev/null and b/doc/salome/gui/GEOM/pics/set_rotation_point_dialog1.png differ
diff --git a/doc/salome/gui/GEOM/pics/set_rotation_point_dialog2.png b/doc/salome/gui/GEOM/pics/set_rotation_point_dialog2.png
new file mode 100644
index 000000000..7f3696a56
Binary files /dev/null and b/doc/salome/gui/GEOM/pics/set_rotation_point_dialog2.png differ
diff --git a/doc/salome/gui/GEOM/pics/transformation4a.png b/doc/salome/gui/GEOM/pics/transformation4a.png
new file mode 100644
index 000000000..64d2d4149
Binary files /dev/null and b/doc/salome/gui/GEOM/pics/transformation4a.png differ
diff --git a/doc/salome/gui/GEOM/pics/view_rotation_point.png b/doc/salome/gui/GEOM/pics/view_rotation_point.png
new file mode 100644
index 000000000..7fe8f8389
Binary files /dev/null and b/doc/salome/gui/GEOM/pics/view_rotation_point.png differ
diff --git a/doc/salome/tui/GEOM/sources/bg_salome.gif b/doc/salome/tui/GEOM/sources/bg_salome.gif
index 677b70468..429489c69 100755
Binary files a/doc/salome/tui/GEOM/sources/bg_salome.gif and b/doc/salome/tui/GEOM/sources/bg_salome.gif differ
diff --git a/idl/GEOM_Gen.idl b/idl/GEOM_Gen.idl
index 95391389b..59f490e7f 100644
--- a/idl/GEOM_Gen.idl
+++ b/idl/GEOM_Gen.idl
@@ -470,6 +470,34 @@ module GEOM
in double theStep2,
in long theNbTimes2);
+ /*!
+ * Rotate given object around vector perpendicular to plane containing three points.
+ * \param theObject The object to be rotated.
+ * \param theCentPoint central point - the axis is the vector perpendicular to the plane
+ * containing the three points.
+ * \param thePoint1 and thePoint2 - in a perpendicular plan of the axis.
+ * \return theObject.
+ */
+ GEOM_Object RotateThreePoints (in GEOM_Object theObject,
+ in GEOM_Object theCentPoint,
+ in GEOM_Object thePoint1,
+ in GEOM_Object thePoint2);
+
+
+ /*!
+ * Rotate given object around vector perpendicular to plane containing three points.
+ * Creating its copy before the rotatation.
+ * \param theObject The object to be rotated.
+ * \param theCentPoint central point - the axis is the vector perpendicular to the plane
+ * containing the three points.
+ * \param thePoint1 and thePoint2 - in a perpendicular plan of the axis.
+ * \return New GEOM_Object, containing the rotated object.
+ */
+ GEOM_Object RotateThreePointsCopy (in GEOM_Object theObject,
+ in GEOM_Object theCentPoint,
+ in GEOM_Object thePoint1,
+ in GEOM_Object thePoint2);
+
/*!
* Rotate the given object around the given axis on the given angle.
* \param theObject The object to be rotated.
@@ -481,6 +509,7 @@ module GEOM
in GEOM_Object theAxis,
in double theAngle);
+
/*!
* Rotate the given object around the given axis
* on the given angle, creating its copy before the rotatation.
@@ -493,6 +522,7 @@ module GEOM
in GEOM_Object theAxis,
in double theAngle);
+
/*!
* Rotate the given object around the given axis a given number times.
* Rotation angle will be 2*PI/theNbTimes.
@@ -884,7 +914,7 @@ module GEOM
/*!
* Create a face on the given wire.
- * \param theWire Wire to build the face on.
+ * \param theWire closed Wire or Edge to build the face on.
* \param isPlanarWanted If TRUE, only planar face will be built.
* If impossible, NULL object will be returned.
* \return New GEOM_Object, containing the created face.
@@ -893,7 +923,7 @@ module GEOM
/*!
* Create a face on the given wires set.
- * \param theWires List of wires to build the face on.
+ * \param theWires List of closed wires or edges to build the face on.
* \param isPlanarWanted If TRUE, only planar face will be built.
* If impossible, NULL object will be returned.
* \return New GEOM_Object, containing the created face.
@@ -1053,6 +1083,24 @@ module GEOM
in long theShapeType,
in GEOM_Object theAx1,
in shape_state theState);
+ /*!
+ * Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+ * the specified plane by the certain way, defined through \a theState parameter.
+ * \param theShape Shape to find sub-shapes of.
+ * \param theShapeType Type of sub-shapes to be retrieved.
+ * \param theAx1 Vector (or line, or linear edge), specifying normal
+ * direction of the plane to find shapes on.
+ * \param thePnt Point specifying location of the plane to find shapes on.
+ * \param theState The state of the subshapes to find.
+ * \return List of all found sub-shapes.
+ */
+ ListOfGO GetShapesOnPlaneWithLocation (in GEOM_Object theShape,
+ in long theShapeType,
+ in GEOM_Object theAx1,
+ in GEOM_Object thePnt,
+ in shape_state theState);
+
+
/*!
* Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
@@ -1121,6 +1169,23 @@ module GEOM
in long theShapeType,
in GEOM_Object theAx1,
in shape_state theState);
+
+ /*!
+ * Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+ * the specified plane by the certain way, defined through \a theState parameter.
+ * \param theShape Shape to find sub-shapes of.
+ * \param theShapeType Type of sub-shapes to be retrieved.
+ * \param theAx1 Vector (or line, or linear edge), specifying normal
+ * direction of the plane to find shapes on.
+ * \param thePnt Point specifying location of the plane to find shapes on.
+ * \param theState The state of the subshapes to find.
+ * \return List of IDs of all found sub-shapes.
+ */
+ ListOfLong GetShapesOnPlaneWithLocationIDs (in GEOM_Object theShape,
+ in long theShapeType,
+ in GEOM_Object theAx1,
+ in GEOM_Object thePnt,
+ in shape_state theState);
/*!
* Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
@@ -1175,6 +1240,32 @@ module GEOM
in GEOM_Object theBottomRigthPoint,
in shape_state theState);
+ /*!
+ * \brief Find subshapes complying with given status
+ * \param theBox - the box to check state of subshapes against
+ * \param theShape - the shape to explore
+ * \param theShapeType - type of subshape of theShape
+ * \param theState - required state
+ * \return List of IDs of all found sub-shapes.
+ */
+ ListOfLong GetShapesOnBoxIDs (in GEOM_Object theBox,
+ in GEOM_Object theShape,
+ in long theShapeType,
+ in shape_state theState);
+
+ /*!
+ * \brief Find subshapes complying with given status
+ * \param theBox - the box to check state of subshapes against
+ * \param theShape - the shape to explore
+ * \param theShapeType - type of subshape of theShape
+ * \param theState - required state
+ * \return List of all found sub-shapes.
+ */
+ ListOfGO GetShapesOnBox (in GEOM_Object theBox,
+ in GEOM_Object theShape,
+ in long theShapeType,
+ in shape_state theState);
+
/*!
* Get sub-shape(s) of theShapeWhere, which are
* coincident with \a theShapeWhat or could be a part of it.
@@ -1184,6 +1275,16 @@ module GEOM
*/
GEOM_Object GetInPlace (in GEOM_Object theShapeWhere,
in GEOM_Object theShapeWhat);
+
+ /*!
+ * Get sub-shape of theShapeWhere, which are
+ * coincident with \a theShapeWhat that can either SOLID, FACE, EDGE or VERTEX.
+ * \param theShapeWhere Shape to find sub-shapes of.
+ * \param theShapeWhat Shape, specifying what to find.
+ * \return found sub-shape.
+ */
+ GEOM_Object GetSame (in GEOM_Object theShapeWhere,
+ in GEOM_Object theShapeWhat);
};
/*!
@@ -1544,13 +1645,21 @@ module GEOM
* Perform partition operation.
* \param theShapes Shapes to be intersected.
* \param theTools Shapes to intersect theShapes.
+ * \note Each compound from ListShapes and ListTools will be exploded in order
+ * to avoid possible intersection between shapes from this compound.
+ * \param theLimit Type of resulting shapes (corresponding to TopAbs_ShapeEnum).
+ *
+ * After implementation new version of PartitionAlgo (October 2006)
+ * other parameters are ignored by current functionality. They are kept
+ * in this function only for supporting old versions.
+ * Ignored parameters:
* \param theKeepInside Shapes, outside which the results will be deleted.
* Each shape from theKeepInside must belong to theShapes also.
* \param theRemoveInside Shapes, inside which the results will be deleted.
* Each shape from theRemoveInside must belong to theShapes also.
- * \param theLimit Type of resulting shapes (corresponding to TopAbs_ShapeEnum).
* \param theRemoveWebs If TRUE, perform Glue 3D algorithm.
* \param theMaterials Material indices for each shape. Make sence, only if theRemoveWebs is TRUE.
+ *
* \return New GEOM_Object, containing the result shapes.
*/
GEOM_Object MakePartition (in ListOfGO theShapes,
@@ -1561,6 +1670,27 @@ module GEOM
in boolean theRemoveWebs,
in ListOfLong theMaterials);
+ /*!
+ * Perform partition operation.
+ * This method may be usefull if it is needed to make a partition for
+ * a compound containing nonintersected shapes. Performance will be better
+ * since intersection between shapes from compound is not performed.
+ *
+ * Description of all parameters as in previous method MakePartition()
+ *
+ * \note Passed compounds (via ListShapes or via ListTools)
+ * have to consist of nonintersecting shapes.
+ *
+ * \return New GEOM_Object, containing the result shapes.
+ */
+ GEOM_Object MakePartitionNonSelfIntersectedShape (in ListOfGO theShapes,
+ in ListOfGO theTools,
+ in ListOfGO theKeepInside,
+ in ListOfGO theRemoveInside,
+ in short theLimit,
+ in boolean theRemoveWebs,
+ in ListOfLong theMaterials);
+
/*!
* Perform partition of the Shape with the Plane
* \param theShape Shape to be intersected.
diff --git a/idl/GEOM_Superv.idl b/idl/GEOM_Superv.idl
index 5056a4d0a..7c67d2826 100644
--- a/idl/GEOM_Superv.idl
+++ b/idl/GEOM_Superv.idl
@@ -244,6 +244,14 @@ module GEOM
GEOM_Object RotateCopy (in GEOM_Object theObject,
in GEOM_Object theAxis,
in double theAngle) ;
+ GEOM_Object RotateThreePoints (in GEOM_Object theObject,
+ in GEOM_Object theCentPoint,
+ in GEOM_Object thePoint1,
+ in GEOM_Object thePoint2);
+ GEOM_Object RotateThreePointsCopy (in GEOM_Object theObject,
+ in GEOM_Object theCentPoint,
+ in GEOM_Object thePoint1,
+ in GEOM_Object thePoint2);
GEOM_Object MultiRotate1D (in GEOM_Object theObject,
in GEOM_Object theAxis,
in long theNbTimes) ;
diff --git a/resources/GEOMCatalog.xml.in b/resources/GEOMCatalog.xml.in
index a47a5f49f..131c35263 100644
--- a/resources/GEOMCatalog.xml.in
+++ b/resources/GEOMCatalog.xml.in
@@ -2186,6 +2186,80 @@
+
+ RotateThreePoints
+ mkr
+ 2.1.0
+ unknown
+ 0
+
+
+ theObject
+ GEOM_Object
+ unknown
+
+
+ theCentPoint
+ GEOM_Object
+ unknown
+
+
+ thePoint1
+ GEOM_Object
+ unknown
+
+
+ thePoint2
+ GEOM_Object
+ unknown
+
+
+
+
+ return
+ GEOM_Object
+ unknown
+
+
+
+
+
+ RotateThreePointsCopy
+ mkr
+ 2.1.0
+ unknown
+ 0
+
+
+ theObject
+ GEOM_Object
+ unknown
+
+
+ theCentPoint
+ GEOM_Object
+ unknown
+
+
+ thePoint1
+ GEOM_Object
+ unknown
+
+
+ thePoint2
+ GEOM_Object
+ unknown
+
+
+
+
+ return
+ GEOM_Object
+ unknown
+
+
+
+
MultiRotate1D
mkr
diff --git a/resources/ImportExport b/resources/ImportExport
index d6837858e..c79adbc1a 100644
--- a/resources/ImportExport
+++ b/resources/ImportExport
@@ -1,18 +1,18 @@
Import: BREP|IGES|STEP
Export: BREP|IGES|IGES_5_3|STEP
-BREP.Import: libBREPImport.so
-BREP.Export: libBREPExport.so
+BREP.Import: libBREPImport
+BREP.Export: libBREPExport
BREP.Pattern: BREP Files ( *.brep )
-IGES.Import: libIGESImport.so
-IGES.Export: libIGESExport.so
+IGES.Import: libIGESImport
+IGES.Export: libIGESExport
IGES.Pattern: IGES Files ( *.iges *.igs )
IGES.ExportPattern: IGES 5.1 Files ( *.iges *.igs )
-IGES_5_3.Export: libIGESExport.so
+IGES_5_3.Export: libIGESExport
IGES_5_3.Pattern: IGES 5.3 Files ( *.iges *.igs )
-STEP.Import: libSTEPImport.so
-STEP.Export: libSTEPExport.so
+STEP.Import: libSTEPImport
+STEP.Export: libSTEPExport
STEP.Pattern: STEP Files ( *.step *.stp )
diff --git a/resources/prism2.png b/resources/prism2.png
index fdbe72eac..5d2f366af 100644
Binary files a/resources/prism2.png and b/resources/prism2.png differ
diff --git a/resources/rotatepnt.png b/resources/rotatepnt.png
new file mode 100755
index 000000000..2d4d2899a
Binary files /dev/null and b/resources/rotatepnt.png differ