mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2025-01-15 13:00:39 +05:00
Definition of IDL interface to CurveCreator
This commit is contained in:
parent
e1490f893e
commit
280a8fc502
@ -164,7 +164,8 @@ module GEOM
|
|||||||
/*!
|
/*!
|
||||||
* \brief Kind of the curves.
|
* \brief Kind of the curves.
|
||||||
*
|
*
|
||||||
* Used in the functions GEOM_ICurvesOperations.MakeCurveParametric(), GEOM_ICurvesOperations.MakeCurveParametricNew()
|
* Used in the functions GEOM_ICurvesOperations.MakeCurveParametric(), GEOM_ICurvesOperations.MakeCurveParametricNew(),
|
||||||
|
* GEOM_ICurvesOperations.MakePolyline2D, GEOM_ICurvesOperations.MakePolyline2DOnPlane.
|
||||||
*/
|
*/
|
||||||
enum curve_type {
|
enum curve_type {
|
||||||
/*! Polyline curve */
|
/*! Polyline curve */
|
||||||
@ -226,6 +227,7 @@ module GEOM
|
|||||||
typedef sequence<boolean> ListOfBool;
|
typedef sequence<boolean> ListOfBool;
|
||||||
typedef sequence<long> ListOfLong;
|
typedef sequence<long> ListOfLong;
|
||||||
typedef sequence<double> ListOfDouble;
|
typedef sequence<double> ListOfDouble;
|
||||||
|
typedef sequence<ListOfDouble> ListOfListOfDouble;
|
||||||
|
|
||||||
interface GEOM_Object;
|
interface GEOM_Object;
|
||||||
interface GEOM_BaseObject;
|
interface GEOM_BaseObject;
|
||||||
@ -3319,6 +3321,72 @@ module GEOM
|
|||||||
* \return New GEOM_Object, containing the created wire.
|
* \return New GEOM_Object, containing the created wire.
|
||||||
*/
|
*/
|
||||||
GEOM_Object Make3DSketcher (in ListOfDouble theCoordinates);
|
GEOM_Object Make3DSketcher (in ListOfDouble theCoordinates);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Create a 2D polyline (wire or a compound of wires).
|
||||||
|
*
|
||||||
|
* The polyline can have several sections. Each section represents a set
|
||||||
|
* of points in the form of list of coordinates of the following order:
|
||||||
|
* x1, y1, x2, y2, ..., xN, yN
|
||||||
|
* Each section has its own name, type of curve (can be either
|
||||||
|
* GEOM::Polyline or GEOM::Interpolation) and Closed flag.
|
||||||
|
* For each section a wire is created. It represents either a polyline or
|
||||||
|
* interpolation BSpline either closed or not depending on the Closed flag.
|
||||||
|
* The result represents a wire if there is only one section is defined.
|
||||||
|
* Otherwise a compound of wires is returned.
|
||||||
|
*
|
||||||
|
* \param theCoordsList the list of coordinates list. theCoordsList[0]
|
||||||
|
* is the coordinates list of the first section. theCoordsList[1]
|
||||||
|
* is for the second section etc.
|
||||||
|
* \param theNamesList the list of names. The order corresponds to
|
||||||
|
* theCoordsList.
|
||||||
|
* \param theTypesList the list of curve types. The order corresponds to
|
||||||
|
* theCoordsList.
|
||||||
|
* \param theClosedList the list of Closed flags. The order corresponds to
|
||||||
|
* theCoordsList.
|
||||||
|
* \param theWorkingPlane 9 double values, defining origin,
|
||||||
|
* OZ and OX directions of the working plane.
|
||||||
|
* \return New GEOM_Object, containing the created wire or a compound
|
||||||
|
* of wires.
|
||||||
|
*/
|
||||||
|
GEOM_Object MakePolyline2D (in ListOfListOfDouble theCoordsList,
|
||||||
|
in string_array theNamesList,
|
||||||
|
in short_array theTypesList,
|
||||||
|
in ListOfBool theClosedList,
|
||||||
|
in ListOfDouble theWorkingPlane);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Create a 2D polyline (wire or a compound of wires).
|
||||||
|
*
|
||||||
|
* The polyline can have several sections. Each section represents a set
|
||||||
|
* of points in the form of list of coordinates of the following order:
|
||||||
|
* x1, y1, x2, y2, ..., xN, yN
|
||||||
|
* Each section has its own name, type of curve (can be either
|
||||||
|
* GEOM::Polyline or GEOM::Interpolation) and Closed flag.
|
||||||
|
* For each section a wire is created. It represents either a polyline or
|
||||||
|
* interpolation BSpline either closed or not depending on the Closed flag.
|
||||||
|
* The result represents a wire if there is only one section is defined.
|
||||||
|
* Otherwise a compound of wires is returned.
|
||||||
|
*
|
||||||
|
* \param theCoordsList the list of coordinates list. theCoordsList[0]
|
||||||
|
* is the coordinates list of the first section. theCoordsList[1]
|
||||||
|
* is for the second section etc.
|
||||||
|
* \param theNamesList the list of names. The order corresponds to
|
||||||
|
* theCoordsList.
|
||||||
|
* \param theTypesList the list of curve types. The order corresponds to
|
||||||
|
* theCoordsList.
|
||||||
|
* \param theClosedList the list of Closed flags. The order corresponds to
|
||||||
|
* theCoordsList.
|
||||||
|
* \param theWorkingPlane planar Face or LCS(Marker) of the working plane.
|
||||||
|
* \return New GEOM_Object, containing the created wire or a compound
|
||||||
|
* of wires.
|
||||||
|
*/
|
||||||
|
GEOM_Object MakePolyline2DOnPlane (in ListOfListOfDouble theCoordsList,
|
||||||
|
in string_array theNamesList,
|
||||||
|
in short_array theTypesList,
|
||||||
|
in ListOfBool theClosedList,
|
||||||
|
in GEOM_Object theWorkingPlane);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// # GEOM_ILocalOperations:
|
// # GEOM_ILocalOperations:
|
||||||
|
@ -1499,3 +1499,37 @@ Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeIsoline
|
|||||||
SetErrorCode(OK);
|
SetErrorCode(OK);
|
||||||
return anIsoline;
|
return anIsoline;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* MakePolyline2D
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakePolyline2D
|
||||||
|
(const std::list <std::list <double> > &theCoords,
|
||||||
|
const Handle(TColStd_HArray1OfExtendedString) &theNames,
|
||||||
|
const Handle(TColStd_HArray1OfByte) &theTypes,
|
||||||
|
const Handle(TColStd_HArray1OfByte) &theCloseds,
|
||||||
|
const Handle(TColStd_HArray1OfReal) &theWorkingPlane)
|
||||||
|
{
|
||||||
|
Handle(GEOM_Object) aResult;
|
||||||
|
|
||||||
|
return aResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* MakePolyline2DOnPlane
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakePolyline2DOnPlane
|
||||||
|
(const std::list <std::list <double> > &theCoords,
|
||||||
|
const Handle(TColStd_HArray1OfExtendedString) &theNames,
|
||||||
|
const Handle(TColStd_HArray1OfByte) &theTypes,
|
||||||
|
const Handle(TColStd_HArray1OfByte) &theCloseds,
|
||||||
|
const Handle(GEOM_Object) &theWorkingPlane)
|
||||||
|
{
|
||||||
|
Handle(GEOM_Object) aResult;
|
||||||
|
|
||||||
|
return aResult;
|
||||||
|
}
|
||||||
|
@ -100,6 +100,19 @@ class GEOMImpl_ICurvesOperations : public GEOM_IOperations {
|
|||||||
const bool IsUIso,
|
const bool IsUIso,
|
||||||
const double theParameter);
|
const double theParameter);
|
||||||
|
|
||||||
|
Standard_EXPORT Handle(GEOM_Object) MakePolyline2D
|
||||||
|
(const std::list <std::list <double> > &theCoords,
|
||||||
|
const Handle(TColStd_HArray1OfExtendedString) &theNames,
|
||||||
|
const Handle(TColStd_HArray1OfByte) &theTypes,
|
||||||
|
const Handle(TColStd_HArray1OfByte) &theCloseds,
|
||||||
|
const Handle(TColStd_HArray1OfReal) &theWorkingPlane);
|
||||||
|
|
||||||
|
Standard_EXPORT Handle(GEOM_Object) MakePolyline2DOnPlane
|
||||||
|
(const std::list <std::list <double> > &theCoords,
|
||||||
|
const Handle(TColStd_HArray1OfExtendedString) &theNames,
|
||||||
|
const Handle(TColStd_HArray1OfByte) &theTypes,
|
||||||
|
const Handle(TColStd_HArray1OfByte) &theCloseds,
|
||||||
|
const Handle(GEOM_Object) &theWorkingPlane);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -30,6 +30,9 @@
|
|||||||
#include "GEOM_Engine.hxx"
|
#include "GEOM_Engine.hxx"
|
||||||
#include "GEOM_Object.hxx"
|
#include "GEOM_Object.hxx"
|
||||||
|
|
||||||
|
#include <TColStd_HArray1OfByte.hxx>
|
||||||
|
#include <TColStd_HArray1OfReal.hxx>
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
* constructor:
|
* constructor:
|
||||||
@ -667,3 +670,189 @@ GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::Make3DSketcher
|
|||||||
|
|
||||||
return GetObject(anObject);
|
return GetObject(anObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* MakePolyline2D
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakePolyline2D
|
||||||
|
(const GEOM::ListOfListOfDouble &theCoordsList,
|
||||||
|
const GEOM::string_array &theNamesList,
|
||||||
|
const GEOM::short_array &theTypesList,
|
||||||
|
const GEOM::ListOfBool &theClosedList,
|
||||||
|
const GEOM::ListOfDouble &theWorkingPlane)
|
||||||
|
{
|
||||||
|
//Set a not done flag
|
||||||
|
GetOperations()->SetNotDone();
|
||||||
|
|
||||||
|
// Convert input data
|
||||||
|
Handle(TColStd_HArray1OfExtendedString) aNames =
|
||||||
|
ConvertStringArray(theNamesList);
|
||||||
|
Handle(TColStd_HArray1OfByte) aTypes =
|
||||||
|
ConvertEnumArray(theTypesList);
|
||||||
|
Handle(TColStd_HArray1OfByte) aCloseds =
|
||||||
|
ConvertBoolArray(theClosedList);
|
||||||
|
std::list <std::list <double> > aCoords;
|
||||||
|
|
||||||
|
ConvertListListDouble(theCoordsList, aCoords);
|
||||||
|
|
||||||
|
Handle(TColStd_HArray1OfReal) aWorkingPlane;
|
||||||
|
const int n = theWorkingPlane.length();
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (n > 0) {
|
||||||
|
aWorkingPlane = new TColStd_HArray1OfReal(1, n);
|
||||||
|
|
||||||
|
for (i = 0; i < n; i++) {
|
||||||
|
aWorkingPlane->SetValue(i + 1, theWorkingPlane[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make Polyline
|
||||||
|
Handle(GEOM_Object) anObject = GetOperations()->MakePolyline2D
|
||||||
|
(aCoords, aNames, aTypes, aCloseds, aWorkingPlane);
|
||||||
|
|
||||||
|
if (!GetOperations()->IsDone() || anObject.IsNull()) {
|
||||||
|
return GEOM::GEOM_Object::_nil();
|
||||||
|
}
|
||||||
|
|
||||||
|
return GetObject(anObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* MakePolylineOnPlane
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakePolyline2DOnPlane
|
||||||
|
(const GEOM::ListOfListOfDouble &theCoordsList,
|
||||||
|
const GEOM::string_array &theNamesList,
|
||||||
|
const GEOM::short_array &theTypesList,
|
||||||
|
const GEOM::ListOfBool &theClosedList,
|
||||||
|
GEOM::GEOM_Object_ptr theWorkingPlane)
|
||||||
|
{
|
||||||
|
//Set a not done flag
|
||||||
|
GetOperations()->SetNotDone();
|
||||||
|
|
||||||
|
// Convert input data
|
||||||
|
Handle(TColStd_HArray1OfExtendedString) aNames =
|
||||||
|
ConvertStringArray(theNamesList);
|
||||||
|
Handle(TColStd_HArray1OfByte) aTypes =
|
||||||
|
ConvertEnumArray(theTypesList);
|
||||||
|
Handle(TColStd_HArray1OfByte) aCloseds =
|
||||||
|
ConvertBoolArray(theClosedList);
|
||||||
|
std::list <std::list <double> > aCoords;
|
||||||
|
Handle(GEOM_Object) aWorkingPlane =
|
||||||
|
GetObjectImpl(theWorkingPlane);
|
||||||
|
|
||||||
|
ConvertListListDouble(theCoordsList, aCoords);
|
||||||
|
|
||||||
|
// Make Polyline
|
||||||
|
Handle(GEOM_Object) anObject = GetOperations()->MakePolyline2DOnPlane
|
||||||
|
(aCoords, aNames, aTypes, aCloseds, aWorkingPlane);
|
||||||
|
|
||||||
|
if (!GetOperations()->IsDone() || anObject.IsNull()) {
|
||||||
|
return GEOM::GEOM_Object::_nil();
|
||||||
|
}
|
||||||
|
|
||||||
|
return GetObject(anObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* ConvertEnumArray
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
Handle(TColStd_HArray1OfByte) GEOM_ICurvesOperations_i::ConvertEnumArray
|
||||||
|
(const GEOM::short_array &theInArray)
|
||||||
|
{
|
||||||
|
Handle(TColStd_HArray1OfByte) anOutArray;
|
||||||
|
const int n = theInArray.length();
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (n <= 0) {
|
||||||
|
return anOutArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
anOutArray = new TColStd_HArray1OfByte(1, n);
|
||||||
|
|
||||||
|
for (i = 0; i < n; i++) {
|
||||||
|
bool isOK = true;
|
||||||
|
GEOMImpl_ICurvesOperations::CurveType aType;
|
||||||
|
|
||||||
|
switch(theInArray[i]) {
|
||||||
|
case GEOM::Polyline:
|
||||||
|
aType = GEOMImpl_ICurvesOperations::Polyline;
|
||||||
|
break;
|
||||||
|
case GEOM::Bezier:
|
||||||
|
aType = GEOMImpl_ICurvesOperations::Bezier;
|
||||||
|
break;
|
||||||
|
case GEOM::Interpolation:
|
||||||
|
aType = GEOMImpl_ICurvesOperations::Interpolation;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
isOK = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isOK) {
|
||||||
|
anOutArray->SetValue(i + 1, aType);
|
||||||
|
} else {
|
||||||
|
anOutArray.Nullify();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return anOutArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* ConvertBoolArray
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
Handle(TColStd_HArray1OfByte) GEOM_ICurvesOperations_i::ConvertBoolArray
|
||||||
|
(const GEOM::ListOfBool &theInArray)
|
||||||
|
{
|
||||||
|
Handle(TColStd_HArray1OfByte) anOutArray;
|
||||||
|
const int n = theInArray.length();
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (n <= 0) {
|
||||||
|
return anOutArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
anOutArray = new TColStd_HArray1OfByte(1, n);
|
||||||
|
|
||||||
|
for (i = 0; i < n; i++) {
|
||||||
|
anOutArray->SetValue(i + 1, theInArray[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return anOutArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* ConvertListListDouble
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
void GEOM_ICurvesOperations_i::ConvertListListDouble
|
||||||
|
(const GEOM::ListOfListOfDouble &theInList,
|
||||||
|
std::list <std::list <double> > &theOutList)
|
||||||
|
{
|
||||||
|
const int n = theInList.length();
|
||||||
|
int i;
|
||||||
|
std::list <double> anEmptyList;
|
||||||
|
|
||||||
|
for (i = 0; i < n; i++) {
|
||||||
|
theOutList.push_back(anEmptyList);
|
||||||
|
|
||||||
|
const int m = theInList[i].length();
|
||||||
|
int j;
|
||||||
|
|
||||||
|
for (j = 0; j < m; j++) {
|
||||||
|
theOutList.back().push_back(theInList[i][j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -112,8 +112,35 @@ class GEOM_I_EXPORT GEOM_ICurvesOperations_i :
|
|||||||
|
|
||||||
GEOM::GEOM_Object_ptr Make3DSketcher (const GEOM::ListOfDouble& theCoordinates);
|
GEOM::GEOM_Object_ptr Make3DSketcher (const GEOM::ListOfDouble& theCoordinates);
|
||||||
|
|
||||||
|
GEOM::GEOM_Object_ptr MakePolyline2D
|
||||||
|
(const GEOM::ListOfListOfDouble &theCoordsList,
|
||||||
|
const GEOM::string_array &theNamesList,
|
||||||
|
const GEOM::short_array &theTypesList,
|
||||||
|
const GEOM::ListOfBool &theClosedList,
|
||||||
|
const GEOM::ListOfDouble &theWorkingPlane);
|
||||||
|
|
||||||
|
GEOM::GEOM_Object_ptr MakePolyline2DOnPlane
|
||||||
|
(const GEOM::ListOfListOfDouble &theCoordsList,
|
||||||
|
const GEOM::string_array &theNamesList,
|
||||||
|
const GEOM::short_array &theTypesList,
|
||||||
|
const GEOM::ListOfBool &theClosedList,
|
||||||
|
GEOM::GEOM_Object_ptr theWorkingPlane);
|
||||||
|
|
||||||
::GEOMImpl_ICurvesOperations* GetOperations()
|
::GEOMImpl_ICurvesOperations* GetOperations()
|
||||||
{ return (::GEOMImpl_ICurvesOperations*)GetImpl(); }
|
{ return (::GEOMImpl_ICurvesOperations*)GetImpl(); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
Handle(TColStd_HArray1OfByte)
|
||||||
|
ConvertEnumArray(const GEOM::short_array &theInArray);
|
||||||
|
|
||||||
|
Handle(TColStd_HArray1OfByte)
|
||||||
|
ConvertBoolArray(const GEOM::ListOfBool &theInArray);
|
||||||
|
|
||||||
|
void ConvertListListDouble
|
||||||
|
(const GEOM::ListOfListOfDouble &theCoordsList,
|
||||||
|
std::list <std::list <double> > &theCoords);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user