Extern :
- C3d aggiornamento librerie ( 118012).
This commit is contained in:
@@ -16,6 +16,10 @@
|
||||
#include <topology.h>
|
||||
|
||||
|
||||
class MbCurveMinMaxCurvatureParams;
|
||||
class MbCurveMinMaxCurvatureResults;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Алгоритмы поиска экстремумов на поверхности.
|
||||
\en Algorithms for finding extremes on the surface. \~
|
||||
@@ -483,6 +487,8 @@ MATH_FUNC( double ) CurveOrientedCurvature( const MbCurve3D & curve,
|
||||
Для неплоской кривой наибольшее и наименьшее значение всегда неотрицательны.
|
||||
\en For a flat curve, the largest and smallest value may go into the negative region.
|
||||
For a non-planar curve, the largest and smallest values are always non-negative. \~
|
||||
\deprecated \ru Метод устарел, взамен использовать #CurveMinMaxCurvature с набором параметров #MbCurveMinMaxCurvatureParams.
|
||||
\en The method is deprecated, instead use #CurveMinMaxCurvature with the parameter list #MbCurveMinMaxCurvatureParams. \~
|
||||
\param[in] curve - \ru Исследуемая кривая.
|
||||
\en Test curve. \~
|
||||
\param[out] maxCurv - \ru Наибольшее значение кривизны.
|
||||
@@ -505,6 +511,7 @@ MATH_FUNC( double ) CurveOrientedCurvature( const MbCurve3D & curve,
|
||||
For each break two points are inserted, before and after. \~
|
||||
\ingroup Algorithms_3D
|
||||
*/
|
||||
DEPRECATE_DECLARE_REPLACE( CurveMinMaxCurvature with MbCurveMinMaxCurvatureParams)
|
||||
MATH_FUNC( void ) CurveMinMaxCurvature( const MbCurve3D & curve,
|
||||
double & maxCurv,
|
||||
double & maxParam,
|
||||
@@ -784,4 +791,29 @@ MATH_FUNC( bool ) SurfacesJointMinMaxValues( const MbSurfacesJointAnalysisParams
|
||||
MbSurfacesJointAnalysisResults & results );
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Найти точки на кривой, в которых кривизна принимает наибольшее и наименьшее значения.
|
||||
\en Find the points on the curve at which the curvature takes the largest and smallest values. \~
|
||||
\details \ru Для плоской кривой наибольшее и наименьшее значение может уходить в отрицательную область.
|
||||
Для неплоской кривой наибольшее и наименьшее значение всегда неотрицательны. \n
|
||||
Метод может быть использован для поиска экстремумов, точек разрыва и точек перегиба функции кривизны кривой,
|
||||
а также для расчета потенциальной энергии кривой. Энергия вычисляется как интеграл от квадрата кривизны по длине кривой. \n
|
||||
\en For a flat curve, the largest and smallest value may go into the negative region.
|
||||
For a non-planar curve, the largest and smallest values are always non-negative. \n
|
||||
The method can be used to find local minimum and maximum, break points and bending points of the curvature function and
|
||||
to calculate the potential energy of the curve. The energy is calculated as the integral of the square of curvature along the length of the curve. \n \~
|
||||
\param[in] curve - \ru Исследуемая кривая.
|
||||
\en Test curve. \~
|
||||
\param[in] params - \ru Параметры расчета особых точек кривизны кривой и вычисления потенциальной энергии кривой.
|
||||
\en Parameters for calculation of special points of curvature and curve potential energy.\~
|
||||
\param[out] results - \ru Результаты поиска особых точек кривизны и вычисления потенциальной энергии кривой.
|
||||
\en Results of curvature special points search and calculation of curve potential energy.\~
|
||||
\ingroup Algorithms_3D
|
||||
\warning \ru В разработке.
|
||||
\en Under development. \~
|
||||
*/
|
||||
MATH_FUNC( void ) CurveMinMaxCurvature( const MbCurve3D & curve,
|
||||
const MbCurveMinMaxCurvatureParams & params,
|
||||
MbCurveMinMaxCurvatureResults & results );
|
||||
|
||||
#endif // __ACTION_CURVATURE_ANALYSIS_H
|
||||
|
||||
@@ -22,13 +22,13 @@
|
||||
#include <vector>
|
||||
|
||||
|
||||
class MATH_CLASS MbPlacement3D;
|
||||
class MATH_CLASS MbMesh;
|
||||
class MATH_CLASS MbSurface;
|
||||
class MATH_CLASS MbSNameMaker;
|
||||
class MATH_CLASS MbFace;
|
||||
class MbPlacement3D;
|
||||
class MbMesh;
|
||||
class MbSurface;
|
||||
class MbSNameMaker;
|
||||
class MbFace;
|
||||
class MATH_CLASS MbCollection;
|
||||
struct MATH_CLASS MbCurvature;
|
||||
struct MbCurvature;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
@@ -130,521 +130,6 @@ public:
|
||||
};
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Параметры вписывания поверхности.
|
||||
\en Parameters of surface fitting. \~
|
||||
\ingroup Polygonal_Objects
|
||||
*/
|
||||
// ---
|
||||
class MATH_CLASS MbSurfaceFitToGridParameters {
|
||||
private:
|
||||
MbeSpaceType _surfaceType; ///< \ru Тип поверхности. \en A surface type.
|
||||
double _tolerance; ///< \ru Точность распознавания. \en A fitting tolerance.
|
||||
c3d::IndicesVector _indicies; ///< \ru Индексы полигонов сетки. \en Indicies of polygons.
|
||||
MbeRejectOutliersType _typeReject; ///< \ru Способ отбраковки выбросов. \en Outliers rejection mode.
|
||||
double _valueReject; ///< \ru Пороговое значения для отбраковки выбросов. \en Outliers rejection mode treshold value.
|
||||
MbSurfaceFitConstraint _fitConstraint; ///< \ru Ограничение. \en Constraint.
|
||||
size_t _pointsFittingMax; ///< \ru Максимальное количество точек для вписывания. \en Maximum count of fitting points.
|
||||
bool _withRefinement; ///< \ru Уточнять ли поверхность по всем точкам. \en Refine the surface by all the points or not.
|
||||
|
||||
///< \ru Предельные значения параметров аналитических поверхностей. \en Thresholds for analytical surfaces parameters.
|
||||
double _angleConeMin; ///< \ru Минимально возможный половинный угол конуса (градусы). \en Mininmum allowed cone half-angle ( degrees ).
|
||||
double _angleConeMax; ///< \ru Максимально возможный половинный угол конуса (градусы). \en Maximum allowed cone half-angle( degrees ).
|
||||
double _radiusAnalyticShapeMax; ///< \ru Максимально возможный радиальный размер аналитических поверхностей. \en Maximum allowed analytical shapes radial size.
|
||||
|
||||
///< \ru Параметры для вписывания нурбс поверхности. \en NURBs surface fitting parameters.
|
||||
size_t _order; ///< \ru Порядок нурбс поверхности. \en NURBs surface order.
|
||||
size_t _countCpMax; ///< \ru Максимально разрешенное количество контрольных точек. \en Maximum allowed control points count.
|
||||
double _smoothCoef; ///< \ru Коэффициент сглаживания [1e-9 - 1e-3]. \en Smoothing coefficient [1e-9 - 1e-3].
|
||||
|
||||
private:
|
||||
/// \ru Конструктор по умолчанию. \en Default constructor.
|
||||
MbSurfaceFitToGridParameters()
|
||||
: _surfaceType ( st_Undefined )
|
||||
, _tolerance ( c3d::DELTA_MIN )
|
||||
, _indicies ( )
|
||||
, _typeReject ( rot_NoReject )
|
||||
, _valueReject ( 0. )
|
||||
, _pointsFittingMax ( 10000 )
|
||||
, _withRefinement ( false )
|
||||
, _order ( c3d::NURBS_DEGREE )
|
||||
, _countCpMax ( c3d::NURBS_POINTS_MAX_COUNT )
|
||||
, _smoothCoef ( METRIC_ACCURACY )
|
||||
, _angleConeMin ( 1. )
|
||||
, _angleConeMax ( 89. )
|
||||
, _radiusAnalyticShapeMax( 1500. )
|
||||
{}
|
||||
|
||||
public:
|
||||
/// \ru Конструктор по параметрам. \en Constructor by parameters.
|
||||
explicit MbSurfaceFitToGridParameters( MbeSpaceType surfaceType,
|
||||
double tolerance,
|
||||
const c3d::IndicesVector & indicies )
|
||||
: _surfaceType ( surfaceType )
|
||||
, _tolerance ( tolerance )
|
||||
, _indicies ( indicies )
|
||||
, _typeReject ( rot_NoReject )
|
||||
, _valueReject ( 0. )
|
||||
, _pointsFittingMax ( 10000 )
|
||||
, _withRefinement ( false )
|
||||
, _order ( c3d::NURBS_DEGREE )
|
||||
, _countCpMax ( c3d::NURBS_POINTS_MAX_COUNT )
|
||||
, _smoothCoef ( METRIC_ACCURACY )
|
||||
, _angleConeMin ( 1. )
|
||||
, _angleConeMax ( 89. )
|
||||
, _radiusAnalyticShapeMax( 1500. )
|
||||
{}
|
||||
|
||||
/// \ru Конструктор по параметрам. \en Constructor by parameters.
|
||||
explicit MbSurfaceFitToGridParameters( MbeSpaceType surfaceType,
|
||||
double tolerance,
|
||||
const c3d::IndicesVector & indicies,
|
||||
MbeRejectOutliersType rejectType,
|
||||
double rejectValue )
|
||||
: _surfaceType ( surfaceType )
|
||||
, _tolerance ( tolerance )
|
||||
, _indicies ( indicies )
|
||||
, _typeReject ( rejectType )
|
||||
, _valueReject ( rejectValue )
|
||||
, _pointsFittingMax ( 10000 )
|
||||
, _withRefinement ( false )
|
||||
, _order ( c3d::NURBS_DEGREE )
|
||||
, _countCpMax ( c3d::NURBS_POINTS_MAX_COUNT )
|
||||
, _smoothCoef ( METRIC_ACCURACY )
|
||||
, _angleConeMin ( 1. )
|
||||
, _angleConeMax ( 89. )
|
||||
, _radiusAnalyticShapeMax( 1500. )
|
||||
{}
|
||||
|
||||
/// \ru Конструктор по параметрам для вписывания аналитических поверхностей. \en Constructor by parameters for analytic surfaces fitting.
|
||||
explicit MbSurfaceFitToGridParameters( MbeSpaceType surfaceType,
|
||||
double tolerance,
|
||||
const c3d::IndicesVector & indicies,
|
||||
MbeRejectOutliersType rejectType,
|
||||
double rejectValue,
|
||||
double angleConeMin,
|
||||
double angleConeMax,
|
||||
double radiusAnalyticShapeMax )
|
||||
: _surfaceType ( surfaceType )
|
||||
, _tolerance ( tolerance )
|
||||
, _indicies ( indicies )
|
||||
, _typeReject ( rejectType )
|
||||
, _valueReject ( rejectValue )
|
||||
, _pointsFittingMax ( 10000 )
|
||||
, _withRefinement ( false )
|
||||
, _order ( c3d::NURBS_DEGREE )
|
||||
, _countCpMax ( c3d::NURBS_POINTS_MAX_COUNT )
|
||||
, _smoothCoef ( METRIC_ACCURACY )
|
||||
, _angleConeMin ( angleConeMin )
|
||||
, _angleConeMax ( angleConeMax )
|
||||
, _radiusAnalyticShapeMax( radiusAnalyticShapeMax )
|
||||
{}
|
||||
|
||||
/// \ru Конструктор по параметрам для вписывания нурбс поверхности. \en Constructor by parameters for NURBs surface fitting.
|
||||
explicit MbSurfaceFitToGridParameters( MbeSpaceType surfaceType,
|
||||
double tolerance,
|
||||
const c3d::IndicesVector & indicies,
|
||||
size_t order,
|
||||
size_t countCpMax,
|
||||
double smoothCoef )
|
||||
: _surfaceType ( surfaceType )
|
||||
, _tolerance ( tolerance )
|
||||
, _indicies ( indicies )
|
||||
, _typeReject ( rot_NoReject )
|
||||
, _valueReject ( 0. )
|
||||
, _pointsFittingMax ( 10000 )
|
||||
, _withRefinement ( false )
|
||||
, _order ( order )
|
||||
, _countCpMax ( countCpMax )
|
||||
, _smoothCoef ( smoothCoef )
|
||||
, _angleConeMin ( 1. )
|
||||
, _angleConeMax ( 89. )
|
||||
, _radiusAnalyticShapeMax( 1500. )
|
||||
{}
|
||||
|
||||
/// \ru Выдать тип поверхности. \en Get surface type.
|
||||
MbeSpaceType GetSurfaceType() const { return _surfaceType; }
|
||||
/// \ru Выдать точность распознавания. \en Get fitting tolerance.
|
||||
double GetTolerance() const { return _tolerance; }
|
||||
/// \ru Выдать индексы полигонов. \en Get indicies of polygons.
|
||||
const c3d::IndicesVector & GetIndicies() const { return _indicies; }
|
||||
/// \ru Выдать метод отбраковки выбросов. \en Get outliers rejection mode.
|
||||
MbeRejectOutliersType GetOutliersRejectionMode() const { return _typeReject; }
|
||||
/// \ru Выдать пороговое значения для отбраковки выбросов. \en Get outliers rejection mode treshold value.
|
||||
double GetOutliersRejectionValue() const { return _valueReject; }
|
||||
/// \ru Выдать порядок нурбс поверхности. \en Get NURBs order.
|
||||
size_t GetNurbsOrder() const { return _order; }
|
||||
/// \ru Выдать максимально разрешенное количество контрольных точек. \en Get maximum allowed control points count.
|
||||
size_t GetCountCpMax() const { return _countCpMax; }
|
||||
/// \ru Выдать коэффициент сглаживания. \en Get smoothing coefficient.
|
||||
double GetSmoothCoef() const { return _smoothCoef; }
|
||||
/// \ru Выдать минимально возможный половинный угол конуса. \en Get mininmum allowed cone half-angle.
|
||||
double GetAngleConeMin() const { return _angleConeMin; }
|
||||
/// \ru Выдать максимально возможный половинный угол конуса. \en Get maximum allowed cone half-angle.
|
||||
double GetAngleConeMax() const { return _angleConeMax; }
|
||||
/// \ru Выдать максимально возможный радиальный размер аналитических поверхностей. \en Get maximum allowed analytical shapes radial size.
|
||||
double GetRadiusAnalyticShapeMax() const { return _radiusAnalyticShapeMax; }
|
||||
/// \ru Выдать ограничение. \en Get the constraint.
|
||||
const MbSurfaceFitConstraint & GetFitConstraint() const { return _fitConstraint; }
|
||||
/// \ru Выдать максимальное количество точек для вписывания. \en Get the maximum count of fitting points.
|
||||
size_t GetPointsFittingMax() const { return _pointsFittingMax; }
|
||||
/// \ru Выдать флаг уточнения поверхности по всем точкам. \en Get the flag of surface refinement by all the points.
|
||||
bool GetWithRefinement() const { return _withRefinement; }
|
||||
/// \ru Установить предельные значения параметров аналитических поверхностей. \en Set thresholds for analytical surfaces parameters.
|
||||
void SetAnalyticBounds( double angleConeMin, double angleConeMax, double radiusAnalyticShapeMax )
|
||||
{
|
||||
_angleConeMin = angleConeMin;
|
||||
_angleConeMax = angleConeMax;
|
||||
_radiusAnalyticShapeMax = radiusAnalyticShapeMax;
|
||||
}
|
||||
/// \ru Установить параметры для вписывания нурбс поверхности. \en Set NURBs surface fitting parameters.
|
||||
void SetNurbsFitParams( size_t order, size_t countCpMax, double smoothCoef )
|
||||
{
|
||||
_order = order;
|
||||
_countCpMax = countCpMax;
|
||||
_smoothCoef = smoothCoef;
|
||||
}
|
||||
/** \brief \ru Ограничить ось примитива.
|
||||
\en Add an axis constraint. \~
|
||||
\details \ru Ограничить ось цилиндра, конуса или тора, а также нормаль плоскости.
|
||||
По умолчанию ось примитива или нормаль плоскости будет коллинеарна направлению direction.
|
||||
Дополнительно можно задать желаемый угол angle между осью примитива или нормалью плоскости и заданным направлением из промежутка [0; П/2].
|
||||
Для построения плоскости с нормалью, которая перпендикулярна заданному направлению, необходимо задать угол П/2.
|
||||
Функция сбрасывает выставленные ранее ограничения на ось.
|
||||
\en Add an axis constraint to a cylinder, cone, torus or plane.
|
||||
The axis of a primitive or plane normal will be collinear to a given direction by default.
|
||||
Besides there may be given a desired angle between the axis of a primitive or plane normal and a given direction from [0; П/2].
|
||||
Fitting a plane with a normal, which is perpendicular to a given direction, implies an angle П/2.
|
||||
The function resets all previous axis constraints. \~
|
||||
\param[in] direction - \ru Эталонное направление.
|
||||
\en Reference direction. \~
|
||||
\param[in] angle - \ru Угол между осью примитива и заданным направлением.
|
||||
\en Angle between the axis of a primitive and a given direction. \~
|
||||
\return \ru Возвращает true, если задан корректный угол, и false - иначе.
|
||||
\en Returns true, if an angle is correct, or false otherwise. \~
|
||||
\ingroup Polygonal_Objects
|
||||
*/
|
||||
bool AddAxisConstraint( const MbVector3D & direction, double angle = 0. )
|
||||
{
|
||||
return _fitConstraint.AddAxisConstraint( direction, angle );
|
||||
}
|
||||
/** \brief \ru Зафиксировать ось примитива.
|
||||
\en Add a coaxial constraint. \~
|
||||
\details \ru Зафиксировать ось цилиндра, конуса, тора или сферы.
|
||||
Вписывается примитив с заданной осью.
|
||||
Если вписывается сфера, ее центр лежит на заданной оси.
|
||||
Функция сбрасывает выставленные ранее ограничения на ось.
|
||||
\en Add a coaxial constraint to a cylinder, cone, torus or sphere.
|
||||
A primitive will be fit with a given axis.
|
||||
If a sphere is fit, its center lies on a given axis.
|
||||
The function resets all previous axis constraints. \~
|
||||
\param[in] axis - \ru Ось.
|
||||
\en Axis. \~
|
||||
\ingroup Polygonal_Objects
|
||||
*/
|
||||
void AddCoaxialConstraint( const MbAxis3D & axis )
|
||||
{
|
||||
return _fitConstraint.AddCoaxialConstraint( axis );
|
||||
}
|
||||
/** \brief \ru Зафиксировать радиус цилиндра.
|
||||
\en Fix cylinder radius. \~
|
||||
\details \ru Зафиксировать радиус цилиндра.
|
||||
Радиус должен быть положительным.
|
||||
\en Fix cylinder radius.
|
||||
The value has to be positive. \~
|
||||
\param[in] radius - \ru Радиус цилиндра.
|
||||
\en Cylinder radius. \~
|
||||
\return \ru Возвращает true, если задан корректный радиус, и false - иначе.
|
||||
\en Returns true, if a radius is correct, or false otherwise. \~
|
||||
\ingroup Polygonal_Objects
|
||||
*/
|
||||
bool AddCylinderRadiusConstraint( double radius )
|
||||
{
|
||||
return _fitConstraint.AddCylinderRadiusConstraint( radius );
|
||||
}
|
||||
/** \brief \ru Зафиксировать радиус сферы.
|
||||
\en Fix sphere radius. \~
|
||||
\details \ru Зафиксировать радиус сферы.
|
||||
Радиус должен быть положительным.
|
||||
\en Fix sphere radius.
|
||||
The value has to be positive. \~
|
||||
\param[in] radius - \ru Радиус сферы.
|
||||
\en Sphere radius. \~
|
||||
\return \ru Возвращает true, если задан корректный радиус, и false - иначе.
|
||||
\en Returns true, if a radius is correct, or false otherwise. \~
|
||||
\ingroup Polygonal_Objects
|
||||
*/
|
||||
bool AddSphereRadiusConstraint( double radius )
|
||||
{
|
||||
return _fitConstraint.AddSphereRadiusConstraint( radius );
|
||||
}
|
||||
/** \brief \ru Зафиксировать угол конуса.
|
||||
\en Fix cone angle. \~
|
||||
\details \ru Зафиксировать угол конуса.
|
||||
Угол должен быть из промежутка (0; П/2).
|
||||
\en Fix cone angle.
|
||||
The angle has to be from (0; П/2). \~
|
||||
\param[in] angle - \ru Угол конуса.
|
||||
\en Cone angle. \~
|
||||
\return \ru Возвращает true, если задан корректный угол, и false - иначе.
|
||||
\en Returns true, if an angle is correct, or false otherwise. \~
|
||||
\ingroup Polygonal_Objects
|
||||
*/
|
||||
bool AddConeAngleConstraint( double angle )
|
||||
{
|
||||
return _fitConstraint.AddConeAngleConstraint( angle );
|
||||
}
|
||||
/** \brief \ru Зафиксировать радиусы тора.
|
||||
\en Fix torus radii. \~
|
||||
\details \ru Зафиксировать радиусы тора.
|
||||
Можно зафиксировать большой и малый радиусы тора (только один их них или сразу оба).
|
||||
Малый радиус должен быть положительным (=0 - значение не зафиксировано).
|
||||
Большой радиус может быть отрицательным для торов типа "лимон" (=0 - значение не зафиксировано).
|
||||
Большой радиус (центров) должен быть больше малого радиуса (трубки), взятого с обратным знаком: majorRadius>–minorRadius.
|
||||
\en Fix torus radii.
|
||||
There may be fixed the major radius (_size1) or the minor radius (_size2) of a torus (one or both of them).
|
||||
The minor radius has to be positive (=0 - value is not fixed).
|
||||
The major radius may be negative if a torus is of "lemon" type (=0 - value is not fixed).
|
||||
The major radius (of centers) has to be greater than the opposite of the minor radius (of a tube): majorRadius>–minorRadius. \~
|
||||
\param[in] majorRadius - \ru Большой радиус тора.
|
||||
\en Major torus radius. \~
|
||||
\param[in] minorRadius - \ru Малый радиус тора.
|
||||
\en Minor torus radius. \~
|
||||
\return \ru Возвращает true, если заданы корректные радиусы, и false - иначе.
|
||||
\en Returns true, if radii are correct, or false otherwise. \~
|
||||
\ingroup Polygonal_Objects
|
||||
*/
|
||||
bool AddTorusRadiiConstraint( double majorRadius, double minorRadius )
|
||||
{
|
||||
return _fitConstraint.AddTorusRadiiConstraint( majorRadius, minorRadius );
|
||||
}
|
||||
/** \brief \ru Установить ограничение типа XYW.
|
||||
\en Set the XYW-constraint. \~
|
||||
\details \ru Установить ограничение типа XYW.
|
||||
Ограничение типа XYW допускает только параллельный перенос вдоль осей OX и OY и поворот вокруг оси OZ заданной системы координат.
|
||||
Для плоскости, цилиндра, конуса или тора должен быть зафиксирован угол theta между осью объекта и осью OZ заданной СК.
|
||||
Угол theta должен принадлежать отрезку [0; П/2].
|
||||
Для сферы должна быть зафиксирована координата z ее центра в заданной СК.
|
||||
Для тора должна быть зафиксирована координата z центра его направляющей окружности в заданной СК.
|
||||
При необходимости можно зафиксировать размерные параметры объекта.
|
||||
Функция сбрасывает выставленные ранее ограничения (например, добавленные с помощью методов "Add*Constraint").
|
||||
\en Set the XYW-constraint.
|
||||
Translation along the OX и OY axes and rotation about the OZ axis of a local coordinate system are only allowed.
|
||||
For a plane, a cylinder, a cone or a torus there has to be fixed the angle theta between an object's axis and the OZ axis of a given coordinate system.
|
||||
The angle theta has to belong to [0; П/2].
|
||||
For a sphere there has to be fixed the Z coordinate of its center.
|
||||
For a torus there has to be fixed the Z coordinate of its directrix circle.
|
||||
There may be fixed some dimensional parameters of an object if necessary.
|
||||
The function resets all previous constraints (for example, having been set by "Add*Constraint"). \~
|
||||
\param[in] typeSurface - \ru Тип поверхности.
|
||||
\en Surface type. \~
|
||||
\param[in] typeDim - \ru Тип размерного ограничения.
|
||||
\en Dimensional constraint type. \~
|
||||
\param[in] fixedValues - \ru Фиксированные значения параметров поверхности.
|
||||
\en Structure with fixed values of surface parameters. \~
|
||||
\param[in] place - \ru Локальная система координат.
|
||||
\en Local coordinate system. \~
|
||||
\return \ru Возвращает код результата операции.
|
||||
\en Returns operation result code. \~
|
||||
\ingroup Polygonal_Objects
|
||||
*/
|
||||
MbResultType SetFitConstraintXYW( MbeSpaceType typeSurface,
|
||||
MbeDimensionalConstraintType typeDim,
|
||||
const MbConstraintFixedValues & fixedValues,
|
||||
const MbPlacement3D & place )
|
||||
{
|
||||
return _fitConstraint.InitializeXYW( typeSurface, typeDim, fixedValues, place );
|
||||
}
|
||||
/** \brief \ru Установить ограничение типа Z.
|
||||
\en Set the Z-constraint. \~
|
||||
\details \ru Установить ограничение типа Z.
|
||||
Ограничение типа Z допускает только сдвиг вдоль оси OZ заданной системы координат.
|
||||
Для плоскости, цилиндра, конуса или тора должны быть зафиксированы:
|
||||
- зенитный угол theta: угол между осью объекта и осью OZ заданной СК, должен принадлежать отрезку [0; П/2],
|
||||
- азимутальный угол phi: угол между проекцией оси объекта на плоскость OXY и осью OX заданной СК,
|
||||
должен принадлежать промежутку [0; 2П).
|
||||
Для цилиндра, конуса или тора должны быть зафиксированы координаты x и y некоторой точки на оси объекта.
|
||||
Для сферы должны быть зафиксированы координаты x и y ее центра в заданной СК.
|
||||
При необходимости можно зафиксировать размерные параметры объекта.
|
||||
Функция сбрасывает выставленные ранее ограничения (например, добавленные с помощью методов "Add*Constraint").
|
||||
\en Set the Z-constraint.
|
||||
Translation along the OZ axis of a local coordinate system is only allowed.
|
||||
For a plane, a cylinder, a cone or a torus there have to be fixed:
|
||||
- the zenith angle theta: the angle between an object's axis and the OZ axis of a given CS, has to belong to [0; П/2],
|
||||
- the azimuthal angle phi: the angle between the projection of an object's axis onto the OXY plane
|
||||
and the OX axis of a given CS, has to belong to [0; 2П).
|
||||
For a cylinder, a cone or a torus there have to be fixed the X and Y coordinates of a point of an object's axis.
|
||||
For a sphere there have to be fixed the X and Y coordinates of its center.
|
||||
There may be fixed some dimensional parameters of an object if necessary.
|
||||
The function resets all previous constraints (for example, having been set by "Add*Constraint"). \~
|
||||
\param[in] typeSurface - \ru Тип поверхности.
|
||||
\en Surface type. \~
|
||||
\param[in] typeDim - \ru Тип размерного ограничения.
|
||||
\en Dimensional constraint type. \~
|
||||
\param[in] fixedValues - \ru Фиксированные значения параметров поверхности.
|
||||
\en Structure with fixed values of surface parameters. \~
|
||||
\param[in] place - \ru Локальная система координат.
|
||||
\en Local coordinate system. \~
|
||||
\return \ru Возвращает код результата операции.
|
||||
\en Returns operation result code. \~
|
||||
\ingroup Polygonal_Objects
|
||||
*/
|
||||
MbResultType SetFitConstraintZ( MbeSpaceType typeSurface,
|
||||
MbeDimensionalConstraintType typeDim,
|
||||
const MbConstraintFixedValues & fixedValues,
|
||||
const MbPlacement3D & place )
|
||||
{
|
||||
return _fitConstraint.InitializeZ( typeSurface, typeDim, fixedValues, place );
|
||||
}
|
||||
/** \brief \ru Установить ограничение типа XYZ.
|
||||
\en Set the XYZ-constraint. \~
|
||||
\details \ru Установить ограничение типа XYZ.
|
||||
Ограничение типа XYZ допускает только параллельный перенос (запрещены повороты вокруг координатных осей заданной системы координат).
|
||||
Для плоскости, цилиндра, конуса или тора должны быть зафиксированы:
|
||||
- зенитный угол theta: угол между осью объекта и осью OZ заданной СК, должен принадлежать отрезку [0; П/2],
|
||||
- азимутальный угол phi: угол между проекцией оси объекта на плоскость OXY и осью OX заданной СК,
|
||||
должен принадлежать промежутку [0; 2П).
|
||||
При необходимости можно зафиксировать размерные параметры объекта.
|
||||
Функция сбрасывает выставленные ранее ограничения (например, добавленные с помощью методов "Add*Constraint").
|
||||
\en Set the XYZ-constraint.
|
||||
Translation is only allowed (any rotation is forbidden).
|
||||
For a plane, a cylinder, a cone or a torus there have to be fixed:
|
||||
- the zenith angle theta: the angle between an object's axis and the OZ axis of a given CS, has to belong to [0; П/2],
|
||||
- the azimuthal angle phi: the angle between the projection of an object's axis onto the OXY plane
|
||||
and the OX axis of a given CS, has to belong to [0; 2П).
|
||||
There may be fixed some dimensional parameters of an object if necessary.
|
||||
The function resets all previous constraints (for example, having been set by "Add*Constraint"). \~
|
||||
\param[in] typeSurface - \ru Тип поверхности.
|
||||
\en Surface type. \~
|
||||
\param[in] typeDim - \ru Тип размерного ограничения.
|
||||
\en Dimensional constraint type. \~
|
||||
\param[in] fixedValues - \ru Фиксированные значения параметров поверхности.
|
||||
\en Structure with fixed values of surface parameters. \~
|
||||
\param[in] place - \ru Локальная система координат.
|
||||
\en Local coordinate system. \~
|
||||
\return \ru Возвращает код результата операции.
|
||||
\en Returns operation result code. \~
|
||||
\ingroup Polygonal_Objects
|
||||
*/
|
||||
MbResultType SetFitConstraintXYZ( MbeSpaceType typeSurface,
|
||||
MbeDimensionalConstraintType typeDim,
|
||||
const MbConstraintFixedValues & fixedValues,
|
||||
const MbPlacement3D & place )
|
||||
{
|
||||
return _fitConstraint.InitializeXYZ( typeSurface, typeDim, fixedValues, place );
|
||||
}
|
||||
/** \brief \ru Установить ограничение типа ZW.
|
||||
\en Set the ZW-constraint. \~
|
||||
\details \ru Установить ограничение типа ZW.
|
||||
Ограничение типа ZW допускает только сдвиг вдоль оси OZ и поворот вокруг оси OZ заданной системы координат.
|
||||
Для плоскости, цилиндра, конуса или тора должны быть зафиксированы:
|
||||
- зенитный угол theta: угол между осью объекта и осью OZ заданной СК, должен принадлежать отрезку [0; П/2],
|
||||
- начальный азимутальный угол phi: угол между проекцией оси объекта в начальной позиции на плоскость OXY и осью OX заданной СК,
|
||||
должен принадлежать промежутку [0; 2П),
|
||||
- расстояние dist от оси OZ заданной СК до оси объекта.
|
||||
Для сферы должно быть зафиксировано расстояние dist от ее центра до оси OZ заданной СК.
|
||||
При необходимости можно зафиксировать размерные параметры объекта.
|
||||
Функция сбрасывает выставленные ранее ограничения (например, добавленные с помощью методов "Add*Constraint").
|
||||
\en Set the ZW-constraint.
|
||||
Translation along the OZ axis and rotation about the OZ axis of a local coordinate system are only allowed.
|
||||
For a plane, a cylinder, a cone or a torus there have to be fixed:
|
||||
- the zenith angle theta: the angle between an object's axis and the OZ axis of a given CS, has to belong to [0; П/2],
|
||||
- the initial azimuthal angle phi: the angle between the projection of an object's axis in the initial position onto the OXY plane
|
||||
and the OX axis of a given CS, has to belong to [0; 2П),
|
||||
- the distance between an object's axis the OZ axis of a given CS.
|
||||
For a sphere there has to be fixed the distance between its center and the OZ axis of a given CS.
|
||||
There may be fixed some dimensional parameters of an object if necessary.
|
||||
The function resets all previous constraints (for example, having been set by "Add*Constraint"). \~
|
||||
\param[in] typeSurface - \ru Тип поверхности.
|
||||
\en Surface type. \~
|
||||
\param[in] typeDim - \ru Тип размерного ограничения.
|
||||
\en Dimensional constraint type. \~
|
||||
\param[in] fixedValues - \ru Фиксированные значения параметров поверхности.
|
||||
\en Structure with fixed values of surface parameters. \~
|
||||
\param[in] place - \ru Локальная система координат.
|
||||
\en Local coordinate system. \~
|
||||
\return \ru Возвращает код результата операции.
|
||||
\en Returns operation result code. \~
|
||||
\ingroup Polygonal_Objects
|
||||
*/
|
||||
MbResultType SetFitConstraintZW( MbeSpaceType typeSurface,
|
||||
MbeDimensionalConstraintType typeDim,
|
||||
const MbConstraintFixedValues & fixedValues,
|
||||
const MbPlacement3D & place )
|
||||
{
|
||||
return _fitConstraint.InitializeZW( typeSurface, typeDim, fixedValues, place );
|
||||
}
|
||||
/// \ru Установить максимальное количество точек для вписывания. \en Set the maximum count of fitting points.
|
||||
void SetPointsFittingMax( size_t value ) { _pointsFittingMax = value; }
|
||||
/// \ru Установить флаг уточнения поверхности по всем точкам. \en Set the flag of surface refinement by all the points.
|
||||
void SetWithRefinement( bool value ) { _withRefinement = value; }
|
||||
|
||||
OBVIOUS_PRIVATE_COPY( MbSurfaceFitToGridParameters )
|
||||
};
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Результат вписывания поверхности.
|
||||
\en Parameters of surface fitting. \~
|
||||
\ingroup Polygonal_Objects
|
||||
*/
|
||||
// ---
|
||||
class MATH_CLASS MbSurfaceFitToGridResults {
|
||||
private:
|
||||
c3d::SurfaceSPtr _surface; ///< \ru Поверхность. \en A surface.
|
||||
double _devMax; ///< \ru Максимальное получившееся отклонение. \en A maximal deviation.
|
||||
double _devMean; ///< \ru Среднее получившееся отклонение. \en A mean deviation.
|
||||
double _rmsd; ///< \ru Среднее квадратическое отклонение. \en A root-mean-square deviation.
|
||||
public:
|
||||
/// \ru Конструктор по умолчанию. \en Default constructor.
|
||||
MbSurfaceFitToGridResults()
|
||||
: _surface( nullptr )
|
||||
, _devMax ( 0.0 )
|
||||
, _devMean( 0.0 )
|
||||
, _rmsd ( 0.0 )
|
||||
{}
|
||||
/// \ru Конструктор по параметрам. \en Constructor by parameters.
|
||||
MbSurfaceFitToGridResults( MbSurface * surface, double tolerance )
|
||||
: _surface( surface )
|
||||
, _devMax ( tolerance )
|
||||
, _devMean( 0.0 )
|
||||
, _rmsd ( 0.0 )
|
||||
{}
|
||||
/// \ru Конструктор по параметрам. \en Constructor by parameters.
|
||||
MbSurfaceFitToGridResults( MbSurface * surface, double devMax, double devMean, double rmsd )
|
||||
: _surface( surface )
|
||||
, _devMax ( devMax )
|
||||
, _devMean( devMean )
|
||||
, _rmsd ( rmsd )
|
||||
{}
|
||||
/// \ru Инициализировать данные. \en Initialize data.
|
||||
void Init( MbSurface * surface, double tolerance ) {
|
||||
_surface = surface;
|
||||
_devMax = tolerance;
|
||||
_devMean = 0.;
|
||||
_rmsd = 0.;
|
||||
}
|
||||
/// \ru Инициализировать данные. \en Initialize data.
|
||||
void Init( MbSurface * surface, double devMax, double devMean, double rmsd ) {
|
||||
_surface = surface;
|
||||
_devMax = devMax;
|
||||
_devMean = devMean;
|
||||
_rmsd = rmsd;
|
||||
}
|
||||
/// \ru Выдать поверхность. \en Get surface.
|
||||
c3d::SurfaceSPtr GetSurface() const { return _surface; }
|
||||
/// \ru Выдать максимальное отклонение. \en Get maximal deviation.
|
||||
double GetTolerance() const { return _devMax; }
|
||||
/// \ru Выдать среднее отклонение. \en Get mean deviation.
|
||||
double GetMeanDeviation() const { return _devMean; }
|
||||
/// \ru Выдать среднее квадратическое отклонение. \en Get root-mean-square deviation.
|
||||
double GetRmsd() const { return _rmsd; }
|
||||
|
||||
OBVIOUS_PRIVATE_COPY( MbSurfaceFitToGridResults )
|
||||
};
|
||||
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Класс для создания оболочки в граничном представлении по полигональной сетке.
|
||||
\en Class for creating a BRep shell by polygonal mesh. \~
|
||||
|
||||
+39
-12
@@ -16,20 +16,18 @@
|
||||
|
||||
|
||||
#include <templ_s_array.h>
|
||||
#include <mb_cart_point.h>
|
||||
#include <plane_item.h>
|
||||
#include <mb_operation_result.h>
|
||||
#include <vector>
|
||||
#include <op_curve_parameter.h>
|
||||
|
||||
class MATH_CLASS MbPlacement3D;
|
||||
class MATH_CLASS MbCurve;
|
||||
class MATH_CLASS MbContour;
|
||||
class MATH_CLASS MbCurve3D;
|
||||
class MATH_CLASS MbSurface;
|
||||
class MATH_CLASS MbSNameMaker;
|
||||
class MATH_CLASS MbFace;
|
||||
class MATH_CLASS MbCurveFitParameters;
|
||||
class MATH_CLASS MbCurveFitResults;
|
||||
class MbPlacement3D;
|
||||
class MbCurve;
|
||||
class MbContour;
|
||||
class MbCurve3D;
|
||||
class MbSurface;
|
||||
class MbSNameMaker;
|
||||
class MbFace;
|
||||
class MbCurveFitParameters;
|
||||
class MbCurveFitResults;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Перечисление способов создания эллипса (окружности) или их дуг в двумерном пространстве.
|
||||
@@ -810,6 +808,35 @@ MATH_FUNC( MbContour * ) DeleteDegenerateSegments( const MbContour & cntr,
|
||||
MbSNameMaker * names = nullptr );
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Удалить самопересечения из контура.
|
||||
\en Remove self-intersections from contour. \~
|
||||
\details \ru Если контур самопересекается, удаляет части контура, чтобы в результате не осталось самопересечений. \n
|
||||
\en If the contour self-intersects, removes parts of the contour so that the result is free of self-intersections. \n \~
|
||||
\param[in, out] contour - \ru Исходный контур для изменения.
|
||||
\en The initial contour to be modified. \~
|
||||
\param[in] params - \ru Параметры операции.
|
||||
\en Operation parameters. \~
|
||||
\param[out] parts - \ru Набор несамопересекающихся замкнутых контуров, оставшихся после удаления самопересечений.
|
||||
\en The set of non-self-intersecting closed contours remaining after removing self-intersections. \~
|
||||
\return \ru Возвращает код результата операции:
|
||||
MbResultType::rt_NoIntersect, если самопересечений не найдено;
|
||||
MbResultType::rt_Success, если самопересечения успешно удалены;
|
||||
MbResultType::rt_Error в случае ошибки выполнения операции.
|
||||
\en Returns operation result code:
|
||||
MbResultType::rt_NoIntersect if no self-intersections were found;
|
||||
MbResultType::rt_Success if self-intersections were successfully removed;
|
||||
MbResultType::rt_Error if the operation failed. \~
|
||||
\ingroup Curve_Modeling
|
||||
\warning \ru В разработке.
|
||||
\en Under development. \~
|
||||
*/
|
||||
// ---
|
||||
MATH_FUNC( MbResultType ) RemoveSelfIntersections( MbContour & contour,
|
||||
const MbRemoveSelfIntParams & params,
|
||||
std::vector<SPtr<MbContour>> * parts = nullptr );
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Установить параметризацию кривой пропорционально длине кривой.
|
||||
\en Set curve parametrization proportional to the curve length. \~
|
||||
|
||||
@@ -27,24 +27,24 @@
|
||||
#include <vector>
|
||||
|
||||
|
||||
class MATH_CLASS MbCurve;
|
||||
class MATH_CLASS MbContour3D;
|
||||
class MATH_CLASS MbWireFrame;
|
||||
class MATH_CLASS MbFace;
|
||||
class MATH_CLASS MbSurface;
|
||||
class MATH_CLASS MbItem;
|
||||
class MATH_CLASS MbName;
|
||||
class MATH_CLASS MbSweptData;
|
||||
class MATH_CLASS MbContourChamferParams;
|
||||
struct MATH_CLASS MbNurbsParameters;
|
||||
class MATH_CLASS MbNurbsCopyCurveResult;
|
||||
class MATH_CLASS MbCurvesWrappingParams;
|
||||
class MATH_CLASS MbCurvesWrappingResults;
|
||||
class MATH_CLASS MbCurveFitParameters3D;
|
||||
class MATH_CLASS MbCurveFitResults3D;
|
||||
class MATH_CLASS MbCurveExtensionParameters3D;
|
||||
class MbCurve;
|
||||
class MbContour3D;
|
||||
class MbWireFrame;
|
||||
class MbFace;
|
||||
class MbSurface;
|
||||
class MbItem;
|
||||
class MbName;
|
||||
class MbSweptData;
|
||||
class MbContourChamferParams;
|
||||
struct MbNurbsParameters;
|
||||
class MbNurbsCopyCurveResult;
|
||||
class MbCurvesWrappingParams;
|
||||
class MbCurvesWrappingResults;
|
||||
class MbCurveFitParameters3D;
|
||||
class MbCurveFitResults3D;
|
||||
class MbCurveExtensionParameters3D;
|
||||
|
||||
struct MATH_CLASS EvolutionValues;
|
||||
struct EvolutionValues;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Создать прямую.
|
||||
@@ -1165,15 +1165,15 @@ MATH_FUNC( MbResultType ) CreateFairBSplineCurveOnBasePolylineOfHermiteGDInflex(
|
||||
// ---
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Создать плавную B-сплайновую кривую (со сглаживанием и репараметризацией) на зашумленных данных.
|
||||
\en Create a fair B-spline curve with smoothing and reparametrization on noisy data. \~
|
||||
\en Create a fair B-spline curve with smoothing and reparameterization on noisy data. \~
|
||||
\details \ru Создать плавную B-сплайновую кривую [со сглаживанием и репараметризацией] на зашумленных данных
|
||||
(опорной ломаной, ГО Эрмита).
|
||||
\en Create a fair B-spline curve with smoothing and reparametrization on noisy data (base polyline of Hermite GD). \n
|
||||
\attention \ru Экспериментальный класс. \en Experimental class. \~
|
||||
\param[in] polyline - \ru Исходная ломаная.
|
||||
\en An initial polyline. \~
|
||||
\param[in] inType - \ru Тип данных построения кривой.
|
||||
\en The type of the curve construction data. \~
|
||||
\param[in] plnNoisy - \ru Зашумленная ломаная (может быть nullptr).
|
||||
\en The noisy polyline (can be nullptr). \~
|
||||
\param[in] data - \ru Данные построения кривой.
|
||||
\en The curve construction data. \~
|
||||
\param[out] resCurve - \ru Сплайновая кривая.
|
||||
@@ -1184,7 +1184,7 @@ MATH_FUNC( MbResultType ) CreateFairBSplineCurveOnBasePolylineOfHermiteGDInflex(
|
||||
*/
|
||||
// ---
|
||||
MATH_FUNC( MbResultType ) CreateFairBSplineCurveOnNoisyData( MbCurve3D* pllne,
|
||||
int inType, // 1 - простая ломаная, 2 - ГО Эрмита
|
||||
MbCurve3D* plnNoisy,
|
||||
MbFairCurveData & data,
|
||||
MbCurve3D *& resCurve );
|
||||
|
||||
|
||||
+29
-19
@@ -16,25 +16,25 @@
|
||||
|
||||
#include <op_direct_mod_parameter.h>
|
||||
|
||||
class MATH_CLASS MbCartPoint3D;
|
||||
class MATH_CLASS MbCurve;
|
||||
class MATH_CLASS MbCurve3D;
|
||||
class MATH_CLASS MbCurveEdge;
|
||||
class MATH_CLASS MbFace;
|
||||
class MATH_CLASS MbFaceShell;
|
||||
class MATH_CLASS MbModifiedSolidParams;
|
||||
class MATH_CLASS MbModifiedSolidResults;
|
||||
class MATH_CLASS MbPlacement3D;
|
||||
class MATH_CLASS MbSNameMaker;
|
||||
class MATH_CLASS MbSolid;
|
||||
class MATH_CLASS MbSplineSurface;
|
||||
class MATH_CLASS MbSurface;
|
||||
class MATH_CLASS MbSurfaceIntersectionCurve;
|
||||
class MbCartPoint3D;
|
||||
class MbCurve;
|
||||
class MbCurve3D;
|
||||
class MbCurveEdge;
|
||||
class MbFace;
|
||||
class MbFaceShell;
|
||||
class MbModifiedSolidParams;
|
||||
class MbModifiedSolidResults;
|
||||
class MbPlacement3D;
|
||||
class MbSNameMaker;
|
||||
class MbSolid;
|
||||
class MbSplineSurface;
|
||||
class MbSurface;
|
||||
class MbSurfaceIntersectionCurve;
|
||||
|
||||
struct MATH_CLASS ModifyValues;
|
||||
struct MATH_CLASS NurbsBlockValues;
|
||||
struct MATH_CLASS NurbsValues;
|
||||
struct MATH_CLASS TransformValues;
|
||||
struct ModifyValues;
|
||||
struct NurbsBlockValues;
|
||||
struct NurbsValues;
|
||||
struct TransformValues;
|
||||
|
||||
template <class Type> class Array2;
|
||||
template <class Type> class SArray;
|
||||
@@ -198,7 +198,17 @@ MATH_FUNC (MbResultType) CollectFacesForModification( MbFaceShell * shell,
|
||||
\param[out] results - \ru Результаты модификации.
|
||||
\en Results of the modifcation. \~
|
||||
\return \ru Возвращает код результата операции.
|
||||
\en Returns operation result code. \~
|
||||
Возможные коды ошибок:
|
||||
Для типа dmm_ReplaceGroupFaces:
|
||||
rt_StitchShellsError -- Невозможно сшить итоговоую оболочку.
|
||||
rt_CuttingError -- Невозможно усечь оболочку новой группой граней.
|
||||
rt_FacesGroupsOverlapError -- Ошибка в параметрах. Среди заменяющих граней есть заменяемые, массивы не должны пересекаться.
|
||||
\en Returns operation result code.
|
||||
Possible error codes:
|
||||
For the type dmm_ReplaceGroupFaces:
|
||||
rt_StitchShellsError -- Impossible to stitch the final shell.
|
||||
rt_CuttingError -- Impossible to cut the shell with the new faces group
|
||||
rt_FacesGroupsOverlapError -- Parameter error. There are replacement faces among the replaced faces. Those arrays must not overlap. \~
|
||||
\ingroup Direct_Modeling
|
||||
*/
|
||||
// ---
|
||||
|
||||
@@ -16,10 +16,11 @@
|
||||
#include <op_swept_parameter.h>
|
||||
#include <mb_operation_result.h>
|
||||
|
||||
class MATH_CLASS MbPlanarGrid;
|
||||
class MATH_CLASS MbGrid;
|
||||
struct MATH_CLASS MbShellsIntersectionData;
|
||||
class IProgressIndicator;
|
||||
class MbPlanarGrid;
|
||||
class MbGrid;
|
||||
struct MbShellsIntersectionData;
|
||||
class MbShellProjectionParams;
|
||||
class IProgressIndicator;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Проверить оболочку на предмет разделения на отдельные части.
|
||||
@@ -1341,4 +1342,57 @@ SPtr<Item> GetTransformedItem( SPtr<Item> & item, const MbMatrix3D & matr, MbReg
|
||||
}
|
||||
return resItem;
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Класс для проецирования на оболочку.
|
||||
\en Class for projection onto shell. \~
|
||||
\details \ru Класс для проецирования на оболочку. \n
|
||||
\en Class for projection onto shell. \n \~
|
||||
\ingroup Algorithms_3D
|
||||
\warning \ru В разработке.
|
||||
\en Under development. \~
|
||||
*/
|
||||
// ---
|
||||
class MATH_CLASS MbFaceShellProjector
|
||||
{
|
||||
protected:
|
||||
MbFaceShellProjector() {}
|
||||
|
||||
public:
|
||||
/// \ru Деструктор. \en Destructor.
|
||||
virtual ~MbFaceShellProjector() {}
|
||||
|
||||
/** \brief \ru Создать экземпляр класса по оболочке и параметрам.
|
||||
\en Create class instance by shell and parameters. \~
|
||||
\details \ru Создать экземпляр класса по оболочке и параметрам. Пользователь должен сам удалить объект.
|
||||
\en Create class instance by shell and parameters. User must delete created object. \~
|
||||
\param[in] shell - \ru Оболочка. \n
|
||||
\en Shell. \~
|
||||
\param[in] params - \ru Параметры для многократного проецирования точек на оболочку. \n
|
||||
\en Parameters for multiple projection of points onto the shell. \~
|
||||
\return \ru Возвращает указатель на созданный объект.
|
||||
\en Returns pointer to created object. \~
|
||||
*/
|
||||
static MbFaceShellProjector * Create( const MbFaceShell & shell, const MbShellProjectionParams & params );
|
||||
|
||||
/** \brief \ru Найти ближайшую проекцию точки на оболочку.
|
||||
\en Find nearest point projection to the shell. \~
|
||||
\details \ru Найти номер грани и параметры её поверхности для ближайшей проекции точки на оболочку. \n
|
||||
\en Find face index and surface parameters for the nearest point projection to the shell. \n \~
|
||||
\param[in] p - \ru Проецируемая точка.
|
||||
\en A point to project. \~
|
||||
\param[out] faceIndex - \ru Номер грани в оболочке для ближайшей проекции.
|
||||
\en The index of nearest face of the shell. \~
|
||||
\param[out] u - \ru Первый параметр поверхности грани проекций для ближайшей проекции точки на оболочку.
|
||||
\en The first parameter of the face surface for the nearest projection. \~
|
||||
\param[out] v - \ru Второй параметр поверхности грани проекций для ближайшей проекции точки на оболочку.
|
||||
\en The second parameter of the face surface for the nearest projection. \~
|
||||
\return \ru Удалось ли определить положение точки.
|
||||
\en Whether the point projection was successfully defined. \~
|
||||
*/
|
||||
virtual bool NearPointProjection( const MbCartPoint3D & point, size_t & faceIndex, double & u, double & v ) const = 0;
|
||||
|
||||
OBVIOUS_PRIVATE_COPY( MbFaceShellProjector );
|
||||
};
|
||||
#endif // __ACTION_GENERAL_H
|
||||
+41
-25
@@ -20,25 +20,26 @@
|
||||
#include <curve3d.h>
|
||||
#include <vector>
|
||||
|
||||
class MATH_CLASS MbPlacement3D;
|
||||
class MATH_CLASS MbMesh;
|
||||
class MATH_CLASS MbSurface;
|
||||
class MATH_CLASS MbSolid;
|
||||
class MATH_CLASS MbPlaneItem;
|
||||
class MATH_CLASS MbSNameMaker;
|
||||
class MATH_CLASS MbFace;
|
||||
class MATH_CLASS MbCollection;
|
||||
class MATH_CLASS MbMeshSimplificationParams;
|
||||
class MATH_CLASS MbConvexHullParams;
|
||||
struct MATH_CLASS MbConvexHullResults;
|
||||
class MATH_CLASS MbConvexHullParams3D;
|
||||
class MATH_CLASS MbMeshToInstanceParams;
|
||||
class MATH_CLASS MbMeshToInstanceResults;
|
||||
class MATH_CLASS MbOrientedBox;
|
||||
class MATH_CLASS MbMeshUnwrapParams;
|
||||
class MATH_CLASS MbMeshUnwrapResult;
|
||||
class MATH_CLASS MbObjectAlignmentParams;
|
||||
class MATH_CLASS MbObjectAlignmentResult;
|
||||
class MbPlacement3D;
|
||||
class MbMesh;
|
||||
class MbSurface;
|
||||
class MbSolid;
|
||||
class MbPlaneItem;
|
||||
class MbSNameMaker;
|
||||
class MbFace;
|
||||
class MbCollection;
|
||||
class MbMeshSimplificationParams;
|
||||
class MbConvexHullParams;
|
||||
struct MbConvexHullResults;
|
||||
class MbConvexHullParams3D;
|
||||
class MbRepairInconsistentMeshParams;
|
||||
class MbMeshToInstanceParams;
|
||||
class MbMeshToInstanceResults;
|
||||
class MbOrientedBox;
|
||||
class MbMeshUnwrapParams;
|
||||
class MbMeshUnwrapResult;
|
||||
class MbObjectAlignmentParams;
|
||||
class MbObjectAlignmentResult;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Данные диагностики полигонального объекта.
|
||||
@@ -627,15 +628,31 @@ MATH_FUNC(MbOrientedBox) CalculateBoundingBox( const MbMesh & mesh );
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Исправить несовместную ориентацию полигонов сетки по отношению друг к другу.
|
||||
\en Repair inconsistent orientation of mesh polygons with respect to each other. \~
|
||||
\param[out] result - \ru Полигональный объект.
|
||||
\en The polygonal object. \~
|
||||
|
||||
\return \ru Возвращает код результата операции.
|
||||
\en Returns operation result code. \~
|
||||
\ingroup Polygonal_Objects
|
||||
\deprecated
|
||||
*/ // ---
|
||||
DEPRECATE_DECLARE_REPLACE( RepairInconsistentMesh with parameter )
|
||||
MATH_FUNC (MbResultType) RepairInconsistentMesh( MbMesh & mesh );
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Исправить несовместную ориентацию полигонов сетки по отношению друг к другу.
|
||||
\en Repair inconsistent orientation of mesh polygons with respect to each other. \~
|
||||
\param[in] params - \ru Параметры операции.
|
||||
\en Parameters of the operation \~
|
||||
\param[in] mesh - \ru Полигональный объект.
|
||||
\en The polygonal object. \~
|
||||
\return \ru Возвращает код результата операции.
|
||||
\en Returns operation result code. \~
|
||||
\ingroup Polygonal_Objects
|
||||
\warning \ru В разработке.
|
||||
\en Under development. \~
|
||||
*/ // ---
|
||||
MATH_FUNC (MbResultType) RepairInconsistentMesh( MbMesh & mesh );
|
||||
MATH_FUNC (MbResultType) RepairInconsistentMesh( const MbRepairInconsistentMeshParams & params,
|
||||
MbMesh & mesh );
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
@@ -777,8 +794,7 @@ MATH_FUNC( MbResultType ) AlignObjects( const MbItem & fixed,
|
||||
\details \ru Класс для драпировки оболочки тканью. \n
|
||||
\en Class for shell draping. \n \~
|
||||
\ingroup Polygonal_Objects
|
||||
\warning \ru В разработке.
|
||||
\en Under development. \~
|
||||
\deprecated
|
||||
*/
|
||||
// ---
|
||||
class MATH_CLASS MbDrapMaker
|
||||
@@ -798,6 +814,7 @@ public:
|
||||
\return \ru Возвращает указатель на созданный объект.
|
||||
\en Returns pointer to created object. \~
|
||||
*/
|
||||
DEPRECATE_DECLARE_REPLACE( DrapeShell )
|
||||
static MbDrapMaker * Create( const MbMeshUnwrapParams & params, double cellSize );
|
||||
/// \ru Деструктор. \en Destructor.
|
||||
virtual ~MbDrapMaker() {}
|
||||
@@ -861,5 +878,4 @@ public:
|
||||
|
||||
OBVIOUS_PRIVATE_COPY( MbDrapMaker );
|
||||
};
|
||||
|
||||
#endif // __ACTION_MESH_H
|
||||
|
||||
@@ -21,13 +21,13 @@
|
||||
#include <mb_operation_result.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbCurve;
|
||||
class MATH_CLASS MbCurve3D;
|
||||
class MATH_CLASS MbSurface;
|
||||
class MATH_CLASS MbCurveEdge;
|
||||
class MATH_CLASS MbFace;
|
||||
class MATH_CLASS MbSolid;
|
||||
class MATH_CLASS MbSNameMaker;
|
||||
class MbCurve;
|
||||
class MbCurve3D;
|
||||
class MbSurface;
|
||||
class MbCurveEdge;
|
||||
class MbFace;
|
||||
class MbSolid;
|
||||
class MbSNameMaker;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -22,12 +22,12 @@
|
||||
#include <mb_variables.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbCurve;
|
||||
class MATH_CLASS MbLineSegment;
|
||||
class MATH_CLASS MbLine3D;
|
||||
class MATH_CLASS MbCurve3D;
|
||||
class MATH_CLASS MbSurface;
|
||||
class MATH_CLASS MbFaceShell;
|
||||
class MbCurve;
|
||||
class MbLineSegment;
|
||||
class MbLine3D;
|
||||
class MbCurve3D;
|
||||
class MbSurface;
|
||||
class MbFaceShell;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -17,10 +17,12 @@
|
||||
#include <mb_operation_result.h>
|
||||
#include <curve3d.h>
|
||||
|
||||
class MATH_CLASS MbPolymesh;
|
||||
class MATH_CLASS MbPolymeshTopo;
|
||||
class MATH_CLASS MbHalfedgeBoundaryCriterionBase;
|
||||
class MbPolymesh;
|
||||
class MbPolymeshTopo;
|
||||
class MbHalfedgeBoundaryCriterionBase;
|
||||
class MATH_CLASS MbMeshCurvatureParams;
|
||||
class MATH_CLASS MbDrapeShellParams;
|
||||
class MATH_CLASS MbDrapeShellResults;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
@@ -228,4 +230,21 @@ MATH_FUNC( bool ) IsPolymeshTriangulation( const MbPolymesh & mesh );
|
||||
MATH_FUNC( MbResultType ) CalculatePolymeshCurvatures( const MbMeshCurvatureParams & params, MbPolymesh & mesh );
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Драпировка оболочки тканью.
|
||||
\en Drap a shell with fabric. \~
|
||||
\details \ru Драпировка оболочки тканью.
|
||||
\en Drap a shell with fabric.
|
||||
\param[in] params - \ru Параметры алгоритма.
|
||||
\en The parameters. \~
|
||||
\param[out] results - \ru Результаты алгоритма.
|
||||
\en Results. \~
|
||||
\return \ru Код результата операции, rt_Success если драпировка получилась.
|
||||
\en Returns the operation result code, rt_Success if drape is successful. \n
|
||||
\ingroup Shell_Modeling
|
||||
\warning \ru В разработке.
|
||||
\en Under development. \~
|
||||
*/
|
||||
// ---
|
||||
MATH_FUNC( MbResultType ) DrapeShell( const MbDrapeShellParams & params, MbDrapeShellResults & results );
|
||||
#endif // __ACTION_POLYMESH_H
|
||||
|
||||
@@ -37,14 +37,14 @@
|
||||
#include <mb_operation_result.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbCurve;
|
||||
class MATH_CLASS MbCurve3D;
|
||||
class MATH_CLASS MbSurface;
|
||||
class MATH_CLASS MbCurveEdge;
|
||||
class MATH_CLASS MbFace;
|
||||
class MATH_CLASS MbSolid;
|
||||
class MATH_CLASS MbSNameMaker;
|
||||
class MATH_CLASS MbPatchCurve;
|
||||
class MbCurve;
|
||||
class MbCurve3D;
|
||||
class MbSurface;
|
||||
class MbCurveEdge;
|
||||
class MbFace;
|
||||
class MbSolid;
|
||||
class MbSNameMaker;
|
||||
class MbPatchCurve;
|
||||
class IProgressIndicator;
|
||||
|
||||
|
||||
@@ -468,7 +468,7 @@ MATH_FUNC (MbCurve3D *) CreateJoinedCurve( const RPArray<MbCurveEdge> & edges,
|
||||
\ingroup Shell_Modeling
|
||||
*/
|
||||
// ---
|
||||
MATH_FUNC (MbResultType) FacesFillet( const MbFilletData & params,
|
||||
MATH_FUNC (MbResultType) FacesFillet( const MbSectionData & params,
|
||||
c3d::SolidSPtr & result );
|
||||
|
||||
|
||||
|
||||
+13
-13
@@ -41,20 +41,20 @@
|
||||
#include <op_duplication_parameter.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbCurve;
|
||||
class MATH_CLASS MbCurve3D;
|
||||
class MATH_CLASS MbSurface;
|
||||
class MATH_CLASS MbCurveEdge;
|
||||
class MATH_CLASS MbFace;
|
||||
class MATH_CLASS MbSolid;
|
||||
class MATH_CLASS MbItem;
|
||||
class MATH_CLASS MbSNameMaker;
|
||||
class MATH_CLASS MbPartSolidIndices;
|
||||
class MATH_CLASS MbSpine;
|
||||
class MATH_CLASS MbMesh;
|
||||
class MATH_CLASS MbGrid;
|
||||
class MbCurve;
|
||||
class MbCurve3D;
|
||||
class MbSurface;
|
||||
class MbCurveEdge;
|
||||
class MbFace;
|
||||
class MbSolid;
|
||||
class MbItem;
|
||||
class MbSNameMaker;
|
||||
class MbPartSolidIndices;
|
||||
class MbSpine;
|
||||
class MbMesh;
|
||||
class MbGrid;
|
||||
class MATH_CLASS MbCollection;
|
||||
class MATH_CLASS IProgressIndicator;
|
||||
class IProgressIndicator;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -22,13 +22,13 @@
|
||||
#include <vector>
|
||||
|
||||
|
||||
class MATH_CLASS MbCurve;
|
||||
class MATH_CLASS MbCurve3D;
|
||||
class MATH_CLASS MbSolid;
|
||||
class MATH_CLASS MbSurfaceCurve;
|
||||
class MATH_CLASS MbFunction;
|
||||
class MATH_CLASS MbGrid;
|
||||
class MATH_CLASS MbRegion;
|
||||
class MbCurve;
|
||||
class MbCurve3D;
|
||||
class MbSolid;
|
||||
class MbSurfaceCurve;
|
||||
class MbFunction;
|
||||
class MbGrid;
|
||||
class MbRegion;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -28,18 +28,18 @@
|
||||
#include <op_curve_parameter.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbAxis3D;
|
||||
class MATH_CLASS MbPlacement3D;
|
||||
class MATH_CLASS MbCurve;
|
||||
class MATH_CLASS MbCurve3D;
|
||||
class MATH_CLASS MbContour3D;
|
||||
class MATH_CLASS MbSurfaceCurve;
|
||||
class MATH_CLASS MbSurface;
|
||||
class MATH_CLASS MbElementarySurface;
|
||||
class MATH_CLASS MbFace;
|
||||
class MATH_CLASS MbSolid;
|
||||
class MATH_CLASS MbWireFrame;
|
||||
class MATH_CLASS MbSNameMaker;
|
||||
class MbAxis3D;
|
||||
class MbPlacement3D;
|
||||
class MbCurve;
|
||||
class MbCurve3D;
|
||||
class MbContour3D;
|
||||
class MbSurfaceCurve;
|
||||
class MbSurface;
|
||||
class MbElementarySurface;
|
||||
class MbFace;
|
||||
class MbSolid;
|
||||
class MbWireFrame;
|
||||
class MbSNameMaker;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -12,11 +12,11 @@
|
||||
|
||||
#include <wire_frame.h>
|
||||
|
||||
class MATH_CLASS MbWireFrameFilletsParams;
|
||||
class MATH_CLASS MbNurbsWireFrameParams;
|
||||
class MATH_CLASS MbTrimmedWireFrameParams;
|
||||
class MATH_CLASS MbWireFrameProjParams;
|
||||
class MATH_CLASS MbWireFrameProjResult;
|
||||
class MbWireFrameFilletsParams;
|
||||
class MbNurbsWireFrameParams;
|
||||
class MbTrimmedWireFrameParams;
|
||||
class MbWireFrameProjParams;
|
||||
class MbWireFrameProjResult;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
#include <vector>
|
||||
|
||||
|
||||
class MATH_CLASS MbCurve3D;
|
||||
class MATH_CLASS MbMatrix3D;
|
||||
class MbCurve3D;
|
||||
class MbMatrix3D;
|
||||
|
||||
namespace c3d // namespace C3D
|
||||
{
|
||||
|
||||
@@ -15,9 +15,9 @@
|
||||
#include <alg_curve_distance.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbCurve;
|
||||
class MATH_CLASS MbLine;
|
||||
class MATH_CLASS MbArc;
|
||||
class MbCurve;
|
||||
class MbLine;
|
||||
class MbArc;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -16,10 +16,10 @@
|
||||
#include <templ_s_array.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbCurve;
|
||||
class MATH_CLASS MbLineSegment;
|
||||
class MbCurve;
|
||||
class MbLineSegment;
|
||||
class MATH_CLASS MbArc;
|
||||
class MATH_CLASS MbLine;
|
||||
class MbLine;
|
||||
class MATH_CLASS MbTempCircle;
|
||||
|
||||
|
||||
|
||||
@@ -13,9 +13,9 @@
|
||||
#include <curve.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbLineSegment;
|
||||
class MATH_CLASS MbArc;
|
||||
class MATH_CLASS MbContour;
|
||||
class MbLineSegment;
|
||||
class MbArc;
|
||||
class MbContour;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -22,12 +22,12 @@
|
||||
#include <surface.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbCartPoint3D;
|
||||
class MATH_CLASS MbVector3D;
|
||||
class MATH_CLASS MbPlacement3D;
|
||||
class MATH_CLASS MbAxis3D;
|
||||
class MATH_CLASS MbPlaneCurve;
|
||||
class MATH_CLASS IProgressIndicator;
|
||||
class MbCartPoint3D;
|
||||
class MbVector3D;
|
||||
class MbPlacement3D;
|
||||
class MbAxis3D;
|
||||
class MbPlaneCurve;
|
||||
class IProgressIndicator;
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -198,6 +198,9 @@ public:
|
||||
/// \ru Перерисовать модель. \en Redraw the model.
|
||||
virtual void RedrawModel() = 0;
|
||||
|
||||
// Получить плейсмент активного окна (например для прорисовки плоской кривой).
|
||||
virtual void GetWindowPlace( MbPlacement3D & place ) = 0;
|
||||
|
||||
OBVIOUS_PRIVATE_COPY( IfDrawGI )
|
||||
};
|
||||
|
||||
@@ -1005,6 +1008,10 @@ public:
|
||||
*/
|
||||
static void RedrawModel();
|
||||
|
||||
/** \brief Получить плейсмент активного окна (например для прорисовки плоской кривой).
|
||||
\ingroup Drawing
|
||||
*/
|
||||
static void GetWindowPlace( MbPlacement3D & place );
|
||||
}; // class DrawGI
|
||||
|
||||
|
||||
|
||||
@@ -19,11 +19,11 @@
|
||||
#include <math_define.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbCartPoint;
|
||||
class MATH_CLASS MbCartPoint3D;
|
||||
class MATH_CLASS MbAxis3D;
|
||||
class MATH_CLASS MbCurve3D;
|
||||
class MATH_CLASS MbSurface;
|
||||
class MbCartPoint;
|
||||
class MbCartPoint3D;
|
||||
class MbAxis3D;
|
||||
class MbCurve3D;
|
||||
class MbSurface;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
+11
-11
@@ -21,18 +21,18 @@
|
||||
#include <plane_item.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbVector;
|
||||
class MATH_CLASS MbCurve;
|
||||
class MATH_CLASS MbCartPoint;
|
||||
class MATH_CLASS MbPlacement3D;
|
||||
class MbVector;
|
||||
class MbCurve;
|
||||
class MbCartPoint;
|
||||
class MbPlacement3D;
|
||||
class MATH_CLASS MbBezier;
|
||||
class MATH_CLASS MbNurbs;
|
||||
class MATH_CLASS MbCurve3D;
|
||||
class MATH_CLASS MbMatrix3D;
|
||||
class MATH_CLASS MbNurbs3D;
|
||||
class MATH_CLASS MbCurve3D;
|
||||
class MATH_CLASS MbContour3D;
|
||||
class MATH_CLASS MbCubicSpline3D;
|
||||
class MbNurbs;
|
||||
class MbCurve3D;
|
||||
class MbMatrix3D;
|
||||
class MbNurbs3D;
|
||||
class MbCurve3D;
|
||||
class MbContour3D;
|
||||
class MbCubicSpline3D;
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
|
||||
@@ -16,11 +16,11 @@
|
||||
#include <mb_variables.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbVector3D;
|
||||
class MATH_CLASS MbPlacement3D;
|
||||
class MATH_CLASS MbCurve;
|
||||
class MATH_CLASS MbSurface;
|
||||
class MATH_CLASS MbMesh;
|
||||
class MbVector3D;
|
||||
class MbPlacement3D;
|
||||
class MbCurve;
|
||||
class MbSurface;
|
||||
class MbMesh;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
#include <math_define.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbCube;
|
||||
class MATH_CLASS MbProperties;
|
||||
class MATH_CLASS MbMesh;
|
||||
class MbCube;
|
||||
class MbProperties;
|
||||
class MbMesh;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -372,7 +372,7 @@ public :
|
||||
void SetChromInt ( uint8 v ) { _chrom = v; } // \ru Установить коэффициент зеркального отражения объектов. \en Set a coefficient of specular reflection for objects.
|
||||
|
||||
/// \ru Методы работы с составляющей цвета (использовать в случае, если используется только цвет). \en Methods working with a color component (use in case only the color is used).
|
||||
uint32 GetColor() const { return _diffuse.Get(); } // \ru Выдать составляющую цвета. \en Get a color component.
|
||||
uint32 GetColor() const { return MbRGBA(_diffuse[0], _diffuse[1], _diffuse[2], 0).Get(); } // \ru Выдать составляющую цвета. \en Get a color component.
|
||||
void SetColor( uint32 c ); // \ru Установить составляющую цвета. \en Set a color component.
|
||||
void SetColor( const MbRGBA & c ); // \ru Установить составляющую цвета. \en Set a color component.
|
||||
void SetColor( int iR, int iG, int iB ); // \ru Установить составляющую цвета. \en Set a color component.
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
#include <creator.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbSpaceItem;
|
||||
class MATH_CLASS MbProperty;
|
||||
class MATH_CLASS MbProperties;
|
||||
class MbSpaceItem;
|
||||
class MbProperty;
|
||||
class MbProperties;
|
||||
class MbRegTransform;
|
||||
class MbRegDuplicate;
|
||||
|
||||
|
||||
@@ -18,18 +18,18 @@
|
||||
#include <attr_registry.h>
|
||||
|
||||
|
||||
class MATH_CLASS reader;
|
||||
class MATH_CLASS writer;
|
||||
class MATH_CLASS MbVector3D;
|
||||
class MATH_CLASS MbAxis3D;
|
||||
class MATH_CLASS MbMatrix3D;
|
||||
class MATH_CLASS MbAttribute;
|
||||
class MATH_CLASS MbUserAttribute;
|
||||
class MATH_CLASS MbExternalAttribute;
|
||||
class MATH_CLASS MbRGBA;
|
||||
class MATH_CLASS MbProperties;
|
||||
class MbRegDuplicate;
|
||||
class MbRegTransform;
|
||||
class reader;
|
||||
class writer;
|
||||
class MbVector3D;
|
||||
class MbAxis3D;
|
||||
class MbMatrix3D;
|
||||
class MbAttribute;
|
||||
class MbUserAttribute;
|
||||
class MbExternalAttribute;
|
||||
class MbRGBA;
|
||||
class MbProperties;
|
||||
class MbRegDuplicate;
|
||||
class MbRegTransform;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -17,10 +17,10 @@
|
||||
#include <mb_property_title.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbVector3D;
|
||||
class MATH_CLASS MbAxis3D;
|
||||
class MATH_CLASS MbMatrix3D;
|
||||
class MATH_CLASS MbProperties;
|
||||
class MbVector3D;
|
||||
class MbAxis3D;
|
||||
class MbMatrix3D;
|
||||
class MbProperties;
|
||||
class MATH_CLASS MbAttributeContainer;
|
||||
class MbRegDuplicate;
|
||||
class MbRegTransform;
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
#include <vector>
|
||||
|
||||
|
||||
class MATH_CLASS MbSolid;
|
||||
class MATH_CLASS MbSNameMaker;
|
||||
class MATH_CLASS MbCurveEdge;
|
||||
class MbSolid;
|
||||
class MbSNameMaker;
|
||||
class MbCurveEdge;
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
@@ -55,4 +55,4 @@ MATH_FUNC (MbResultType) InterferenceSolids( MbSolid & solid1, MbSolid & solid2,
|
||||
|
||||
#endif // __CDET_BOOL_H
|
||||
|
||||
// eof
|
||||
// eof
|
||||
@@ -494,4 +494,4 @@ using MbProximityParameters = CdProximityParameters;
|
||||
|
||||
#endif // __CDET_DATA_H
|
||||
|
||||
// eof
|
||||
// eof
|
||||
@@ -73,14 +73,14 @@ public:
|
||||
cdet_item AddMesh( const MbMesh & mesh, const MbPlacement3D & place
|
||||
, cdet_app_item appItem = CDET_APP_NULL, double gap = 0. );
|
||||
/**
|
||||
\brief \ru Добавить новый компонент контроля соударений и параметров близости.
|
||||
\brief \ru Добавить новый компонент контроля столкновений и параметров близости.
|
||||
\en Add a new component to track collisions and proximity parameters. \~
|
||||
\details \ru Компонент позволяет объединять тела в геометрически-жесткие множества.
|
||||
\en Component is able to unite solids into the rigid geometric sets.
|
||||
*/
|
||||
cdet_item AddComponent( cdet_app_item );
|
||||
/**
|
||||
\brief \ru Добавить новый экземпляр тела в компонент контроля соударений.
|
||||
\brief \ru Добавить новый экземпляр тела в компонент контроля столкновений.
|
||||
\en Add a new instance of a reused solid into the component. \~
|
||||
\param[in] compItem - \ru Компонент, которому будет принадлежать экземпляр.
|
||||
\en A component to witch the instance will belong.
|
||||
@@ -88,7 +88,7 @@ public:
|
||||
\en An original solid added by the method #AddSolid by which the instance is made.
|
||||
\param[in] place - \ru Положение, которое занимает тело экземпляра в глобальной СК.
|
||||
\en The placement that the instance solid takes in global space.
|
||||
\return \ru Новый экземпляр тела, зарегистрированный в аппарате контроля соударений.
|
||||
\return \ru Новый экземпляр тела, зарегистрированный в аппарате контроля столкновений.
|
||||
\en The new solid instance registered in the detector.
|
||||
\note \ru Значение compItem может быть нулевым. Значит просто вставка не будет
|
||||
принадлежать ни одному компоненту.
|
||||
@@ -97,7 +97,7 @@ public:
|
||||
*/
|
||||
cdet_item AddInstance( cdet_item compItem, cdet_item solidItem, const MbPlacement3D & place );
|
||||
/**
|
||||
\brief \ru Добавить новый экземпляр тела по образцу в компонент контроля соударений.
|
||||
\brief \ru Добавить новый экземпляр тела по образцу в компонент контроля столкновений.
|
||||
\en Add a new instance of a reused solid into the component. \~
|
||||
\param[in] compItem - \ru Компонент, которому будет принадлежать экземпляр.
|
||||
\en A component to witch the instance will belong.
|
||||
@@ -106,7 +106,7 @@ public:
|
||||
\param[in] place - \ru Положение, которое занимает тело экземпляра в глобальной СК.
|
||||
\en The placement that the instance solid takes in global space.
|
||||
\param[in] appItem - \ru Геометрический объект пользователя. \en User geometric item.
|
||||
\return \ru Новый экземпляр тела, зарегистрированный в сцене контроля соударений.
|
||||
\return \ru Новый экземпляр тела, зарегистрированный в сцене контроля столкновений.
|
||||
\en The new solid instance registered in the detector.
|
||||
\note \ru Значение compItem может быть нулевым. Значит просто вставка не будет
|
||||
принадлежать ни одному компоненту.
|
||||
@@ -126,14 +126,14 @@ public:
|
||||
*/
|
||||
void Reposition( cdet_item, const MbPlacement3D & );
|
||||
/**
|
||||
\brief \ru Проверить соударения между геометрическими объектами набора.
|
||||
\brief \ru Проверить столкновения между геометрическими объектами набора.
|
||||
\en Check collisions between geometric objects of the set. \~
|
||||
\return \ru Функция вернет CDM_RESULT_CollisionDetected при обранужении хотя бы одной коллизии.
|
||||
\en The function will return CDM_RESULT_CollisionDetected if it detects at least one collision.
|
||||
*/
|
||||
cdet_result CheckCollisions( cdet_query & );
|
||||
/**
|
||||
\brief \ru Проверить соударения между геометрическими объектами набора.
|
||||
\brief \ru Проверить столкновения между геометрическими объектами набора.
|
||||
\en Check collisions between geometric objects of the set. \~
|
||||
\return \ru Функция вернет CDM_RESULT_CollisionDetected при обранужении хотя бы одной коллизии.
|
||||
\en The function will return CDM_RESULT_CollisionDetected if it detects at least one collision.
|
||||
@@ -155,7 +155,7 @@ public: // the functions below can be deprecated in future version.
|
||||
*/
|
||||
cdet_item AddSolid( const MbLumpAndFaces & );
|
||||
/// \ru Добавить тело с заданным положением. \en Add a solid with a given placement.
|
||||
cdet_item AddSolid( const MbSolid &, const MbPlacement3D &, cdet_app_item = CDET_APP_NULL, double gap = 0. );
|
||||
DEPRECATE_DECLARE cdet_item AddSolid(const MbSolid &, const MbPlacement3D &, cdet_app_item = CDET_APP_NULL, double gap = 0.);
|
||||
/// \ru Удалить твердотельную модель или луч из детектора столкновений. \en Remove a solid model or ray from a collision detector.
|
||||
void RemoveSolid( cdet_item );
|
||||
/// \ru Выдать количество добавленных твердотельных моделей или лучей. \en Get number of added solid models or rays.
|
||||
@@ -250,4 +250,4 @@ using MbCollisionDetectionUtility = CdCollisionDetection;
|
||||
|
||||
/** \} */
|
||||
|
||||
// eof
|
||||
// eof
|
||||
@@ -0,0 +1,186 @@
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
\file
|
||||
\brief \ru Программный интерфейс модуля обнаружения столкновений.
|
||||
\en Program interface of collision detection module. \~
|
||||
*/
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef __CDM_API_H
|
||||
#define __CDM_API_H
|
||||
|
||||
#include <cdm_types.h>
|
||||
#include <solid.h>
|
||||
#include <conv_res_type.h>
|
||||
|
||||
/**
|
||||
\addtogroup Collision_Detection
|
||||
\{
|
||||
*/
|
||||
|
||||
/*
|
||||
Creation and removing a scene of collision detection.
|
||||
*/
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
/** \brief \ru Создать пустую сцену для обнаружения столкновений.
|
||||
\en Create an empty collision detection scene. \~
|
||||
|
||||
\return \ru Дескриптор сцены для обнаружения столкновений и запросов на близость тел.
|
||||
\en Descriptor of collision detection scene and proximity queries. \~
|
||||
*/
|
||||
//---
|
||||
MATH_FUNC(cdet_scene) CDM_CreateScene();
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
/** \brief \ru Удалить сцену обнаружения столкновений.
|
||||
\en Delete collision detection scene. \~
|
||||
\details \ru Данный метод освобождает память от внутренних структур данных, обслуживающих
|
||||
детектор столкновений. Удаляемая сцена становится недействительной после
|
||||
данного вызова.
|
||||
\en This method releases memory from internal data structures maintaining
|
||||
the collision detector. The removed collision scene is invalidated after this call. \~
|
||||
\param[in] scn - \ru Сцена запросов на столкновения и близость тел.
|
||||
\en Scene of the collision and proximity queries. \~
|
||||
*/
|
||||
//---
|
||||
MATH_FUNC(void) CDM_RemoveScene( cdet_scene scn );
|
||||
|
||||
//---------------------------------------------------------------------------------------
|
||||
/**
|
||||
\brief \ru Добавить новый компонент контроля столкновений и параметров близости.
|
||||
\en Add a new component to track collisions and proximity parameters. \~
|
||||
\param[in] comp - \ru Компонент, являющийся геометрическим объединением тел или
|
||||
полигональных объектов, наделенный собственной локальной системой координат.
|
||||
\en A component that is a geometric union of bodies or polygonal objects. It have
|
||||
its own local coordinate system. \~
|
||||
\return \ru Новый компонет, зарегистрированный в сцене контроля столкновений.
|
||||
\en New component registered in the collision control scene. \~
|
||||
\details \ru Компонент позволяет объединять тела в геометрически-жесткие множества.
|
||||
\en Component is able to unite solids into the rigid geometric sets. \~
|
||||
*/
|
||||
//---
|
||||
MATH_FUNC(cdet_item) CDM_AddComponent( cdet_scene scn, const CDM_component & comp );
|
||||
|
||||
//---------------------------------------------------------------------------------------
|
||||
/**
|
||||
\brief \ru Добавить экземпляр тела с заданным положением в набор для контроля столкновений.
|
||||
\en Add a solid with given placement to the collision detection set. \~
|
||||
\param[in] inst - \ru Запись экземпляра геометрического объекта (полигональное или граничное представление).
|
||||
\en The instance record of geometric object (polygonal or boundary representation). \~
|
||||
\return \ru Дескриптор объекта для контроля столкновений. \en Descriptor of object for collision detection. \~
|
||||
\details
|
||||
\par \ru Повторно-используемые элементы сцены
|
||||
\en Reused scene elements.
|
||||
\ru Один и тот же экземпляр класса 'MbItem' может быть добавлен в сцену сколько угодно раз с помощью данного вызова.
|
||||
При многократном добавлении одного и того же геометрического объекта модуль столкновений создает только одну
|
||||
поисковую структуру данных (BVT). Ресурсы памяти и времени вычислений, потраченные на создание такой структуры,
|
||||
повторно используется для всех экземпляров сцены, основанные на одном и том же объекте 'MbItem'. \~
|
||||
\en The same instance of the 'MbItem' class can be added to the scene as many times as necessary using this call.
|
||||
When the same geometric object is added multiple times, the collision module creates only one
|
||||
search data structure (BVT). The memory and computation time resources spent to create this structure,
|
||||
are reused for all scene instances based on the same 'MbItem' object. \~
|
||||
*/
|
||||
//---
|
||||
MATH_FUNC(cdet_item) CDM_AddInstance( cdet_scene scn, const CDM_instance & inst );
|
||||
|
||||
//---------------------------------------------------------------------------------------
|
||||
/**
|
||||
\brief \ru Добавить новый экземпляр тела в компонент контроля столкновений.
|
||||
\en Add a new instance of a reused solid into the component. \~
|
||||
\param[in] compItem - \ru Компонент, которому будет принадлежать экземпляр.
|
||||
\en A component to witch the instance will belong. \~
|
||||
\param[in] inst - \ru Запись экземпляра геометрического объекта (полигональное или граничное представление).
|
||||
\en The instance record of geometric object (polygonal or boundary representation). \~
|
||||
\return \ru Новый экземпляр тела, зарегистрированный в аппарате контроля столкновений.
|
||||
\en The new solid instance registered in the detector. \~
|
||||
\note \ru Значение compItem может быть нулевым. Значит просто вставка не будет
|
||||
принадлежать ни одному компоненту.
|
||||
\en The value compItem can be CDM_NULL. This just means that the
|
||||
instance doesn't belong to any component. \~
|
||||
*/
|
||||
//---
|
||||
MATH_FUNC(cdet_item) CDM_AddInstance( cdet_scene scn, cdet_item compItem, const CDM_instance & inst );
|
||||
|
||||
//---------------------------------------------------------------------------------------
|
||||
/**
|
||||
\brief \ru Удалить геометрический объект из сцены контроля столкновений.
|
||||
\en Remove a geometric object from the set of collision detection. \~
|
||||
\param[in] cItem - \ru Дескриптор объекта в сцене детектора столкновений.
|
||||
\en Decriptor of object in collision detector scene. \~
|
||||
*/
|
||||
//---
|
||||
MATH_FUNC(void) CDM_RemoveItem( cdet_scene scn, cdet_item cItem );
|
||||
|
||||
//---------------------------------------------------------------------------------------
|
||||
/**
|
||||
\brief \ru Поменять текущее положение геометрического объекта в наборе.
|
||||
\en Change current position of a geometric object. \~
|
||||
\param[in] cItem - \ru Дескриптор объекта в сцене детектора столкновений.
|
||||
\en Decriptor of object in collision detector scene. \~
|
||||
\param[in] place - \ru Положение, которое занимает объект в глобальной СК.
|
||||
\en The placement that the object takes in global space. \~
|
||||
*/
|
||||
//---
|
||||
MATH_FUNC(void) CDM_Reposition( cdet_scene scn, cdet_item cItem, const MbPlacement3D & place );
|
||||
|
||||
//---------------------------------------------------------------------------------------
|
||||
/**
|
||||
\brief \ru Запросить поиск столкновений между элементами сцены.
|
||||
\en Request a collision search between scene elements. \~
|
||||
\return \ru Коды результата контроля столкновений и измерение расстояния.
|
||||
\en Collision control result codes and distance measurement. \~
|
||||
\details
|
||||
\ru Осуществляется поиск столкновения между элементами сцены согласно запроса `cdQuery`,
|
||||
а именно проверяются пары, как на уровне сборки, включая компоненты целиком, так и
|
||||
на уровне отдельных компонент. Клиентское приложение имеет возможность настроить запрос
|
||||
так, чтобы искать столкновения не всех со всеми, а только между группами объектов.
|
||||
\en The search for collisions between scene elements is performed according to the `cdQuery`
|
||||
structure, namely, pairs are checked both at the root level, including entire components,
|
||||
and at the level within a component. The client application has the ability to configure
|
||||
the query so as to search not for collisisons "all with all", but only between groups of objects. \~
|
||||
*/
|
||||
//---
|
||||
MATH_FUNC(cdet_result) CDM_CheckCollisions( cdet_scene scn, cdet_query & cdQuery );
|
||||
|
||||
//---------------------------------------------------------------------------------------
|
||||
/**
|
||||
\brief \ru Проверить столкновения между геометрическими объектами набора.
|
||||
\en Check collisions between geometric objects of the set. \~
|
||||
\return \ru Коды результата контроля столкновений и измерение расстояния.
|
||||
\en Collision control result codes and distance measurement. \~
|
||||
*/
|
||||
//---
|
||||
MATH_FUNC(cdet_result) CDM_CheckCollisions( cdet_scene scn );
|
||||
|
||||
//---------------------------------------------------------------------------------------
|
||||
/**
|
||||
\brief \ru Выдать дескриптор клиентского приложения по дескриптору объекта сцены детктора столкновений.
|
||||
\en Get an application pointer by object descriptor of the collision detection scenet. \~
|
||||
\param[in] cItem - \ru Дескриптор объекта в сцене детектора столкновений.
|
||||
\en Object descriptor in the collision detector scene.
|
||||
\return cdet_app_item - \ru Дескриптор клиентского приложения.
|
||||
\en Descriptor of client application. \~
|
||||
*/
|
||||
//---
|
||||
MATH_FUNC(cdet_app_item) CDM_AppItem( cdet_scene scn, cdet_item cItem );
|
||||
|
||||
//---------------------------------------------------------------------------------------
|
||||
/**
|
||||
\brief \ru Экспортировать сцену поиска столкновений в модель C3D.
|
||||
\en Export collision detection scene into C3D model.
|
||||
\return \ru Результат конвертирования
|
||||
\en Result of converting operation. \~
|
||||
*/
|
||||
//---
|
||||
MATH_FUNC(MbeConvResType) CDM_ExportToC3D( cdet_scene scn, const TCHAR * c3dFile );
|
||||
|
||||
/*
|
||||
The functions below can be deprecated in future version.
|
||||
*/
|
||||
|
||||
/** \} */ // Collision_Detection
|
||||
|
||||
#endif // __CDM_API_H
|
||||
|
||||
// eof
|
||||
@@ -0,0 +1,89 @@
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
\file
|
||||
\brief \ru Типы данных модуля обнаружения столкновений.
|
||||
\en Data types of collision detection module. \~
|
||||
*/
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef __CDM_TYPES_H
|
||||
#define __CDM_TYPES_H
|
||||
|
||||
#include <cdet_data.h>
|
||||
#include <model_item.h>
|
||||
|
||||
class CdCollisionManager;
|
||||
|
||||
/**
|
||||
\addtogroup Collision_Detection
|
||||
\{
|
||||
*/
|
||||
|
||||
/*
|
||||
Data structures of Collision Detection Basic API.
|
||||
*/
|
||||
|
||||
typedef CdCollisionManager * cdet_scene;
|
||||
|
||||
//---------------------------------------------------------------------------------------
|
||||
// \ru Структура, определяющая экземпляр геометрического объекта (полигональное или граничное представление).
|
||||
// \en The structure specifing the instance of geometric object (polygonal or boundary representation).
|
||||
//---
|
||||
struct CDM_instance
|
||||
{
|
||||
SPtr<const MbItem> sample = nullptr; // \ru Геометрический объект, являющийся образцом экземпляра. \en The geometric object that is a sample of the instance.
|
||||
MbPlacement3D place = MbPlacement3D::global; // \ru Локальная система координат, указанная в компоненте-владельце экземпляра. \en The local coordinate system specified in the owning component of the instance.
|
||||
cdet_app_item appItem = CDET_APP_NULL; // \ru Инстанс, представляющий экземпляр на стороне приложения. \en Application-side instance representative.
|
||||
CDM_instance() = default;
|
||||
CDM_instance(const CDM_instance & ) = default;
|
||||
CDM_instance & operator= (const CDM_instance&) = default;
|
||||
CDM_instance(const SPtr<MbItem> & mbItem, const MbPlacement3D & lcs, cdet_app_item aItem) : sample(mbItem), place(lcs), appItem(aItem) {};
|
||||
};
|
||||
|
||||
//---------------------------------------------------------------------------------------
|
||||
// \ru Компонентом является геометрическое объединение тел или полигональных объектов,
|
||||
// наделенных собственной локальной системой координат.
|
||||
// \en A component is a geometric union of bodies or polygonal objects which have their
|
||||
// own local coordinate system.
|
||||
struct CDM_component
|
||||
{
|
||||
MbPlacement3D place = MbPlacement3D::global; // \ru Локальная система координат, позиционирующая компонент. \en The local coordinate system positioning the component.
|
||||
cdet_app_item appItem = CDET_APP_NULL; // \ru Инстанс, представляющий экземпляр на стороне приложения. \en Application-side instance representative.
|
||||
CDM_component() = default;
|
||||
CDM_component(const CDM_component & ) = default;
|
||||
CDM_component & operator= (const CDM_component & ) = default;
|
||||
CDM_component(const MbPlacement3D & lcs, cdet_app_item aItem) : place(lcs), appItem(aItem) {};
|
||||
};
|
||||
|
||||
//---------------------------------------------------------------------------------------
|
||||
// Callback enquiries
|
||||
//---
|
||||
typedef SPtr<MbItem> (*CDM_item_registered)( cdet_app_item appItem ); ///< Application item was registered in the scene.
|
||||
typedef void (*CDM_item_unregistered)( cdet_app_item appItem ); ///< Application item was unregistered in the scene.
|
||||
typedef bool (*CDM_abort)(); ///< Query to interrupt calculations
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
/** \brief \ru Структура, объединяющая обратные вызовы детектора столкновений.
|
||||
\en The structure uniting collision detection callbacks.
|
||||
*/
|
||||
//---
|
||||
typedef struct
|
||||
{
|
||||
/*
|
||||
General system callbacks;
|
||||
*/
|
||||
CDM_item_registered gRegister;
|
||||
CDM_item_unregistered gUnregister;
|
||||
CDM_abort abortFunc;
|
||||
|
||||
/*
|
||||
Geometry properties
|
||||
*/
|
||||
} CDM_callback_table;
|
||||
|
||||
|
||||
/** \} */ // Collision_Detection
|
||||
|
||||
#endif // __CDM_DATA_H
|
||||
|
||||
// eof
|
||||
@@ -20,6 +20,7 @@
|
||||
#include <point_frame.h>
|
||||
#include <vector>
|
||||
#include <iterator>
|
||||
#include <curve3d.h>
|
||||
#include <utility>
|
||||
|
||||
|
||||
@@ -1091,4 +1092,311 @@ MATH_FUNC (const MbDoubleRangeAttribute *) GetEdgeSmoothnessAttribute( const MbC
|
||||
*/ //---
|
||||
MATH_FUNC (MbResultType) IsDegeneratedElementary( const MbSurface & inputSurface, double accuracy = Math::metricPrecision );
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Параметры проверки на самопересечение поверхности.
|
||||
\en Parameters for checking surface self-intersection. \~
|
||||
\details \ru Параметры проверки на самопересечение поверхности. \n
|
||||
\en Parameters for checking surface self-intersection. \n \~
|
||||
\warning \ru В разработке.
|
||||
\en Under development. \~
|
||||
\ingroup Algorithms_3D
|
||||
*/
|
||||
//---
|
||||
class MATH_CLASS MbSurfaceSelfIntParams {
|
||||
public:
|
||||
/// \ru Метод проверки самопересечений. \en Method of self intersection checking.
|
||||
enum class MbeCheckSelfIntMethod {
|
||||
csim_Auto , /// \ru Автоматический режим. \en Auto mode.
|
||||
csim_UVLine , /// \ru Вдоль uv линий. \en Along uv lines.
|
||||
csim_SegmIntersect /// \ru Сегментированное пересечение. \en Segmented intersection.
|
||||
};
|
||||
|
||||
private:
|
||||
MbeCheckSelfIntMethod _method; ///< \ru Метод проверки самопересечений. \en Method of self intersection checking.
|
||||
c3d::DoubleVector _uParams; ///< \ru Набор u параметров поверхности. \en Set of u parameters of surface.
|
||||
c3d::DoubleVector _vParams; ///< \ru Набор v параметров поверхности. \en Set of v parameters of surface.
|
||||
bool _ext; ///< \ru Опция проверки на расширенной поверхности. \en Extended surface option.
|
||||
const MbRect2D * _uvRange; ///< \ru Область uv для проверки. \en uv surface range for checking.
|
||||
VERSION _version; ///< \ru Версия алгоритма. \en Algorithm version.
|
||||
public:
|
||||
mutable IProgressIndicator * _progress; ///< \ru Индикатор прогресса выполнения операции. \en A progress indicator of the operation.
|
||||
|
||||
public:
|
||||
/// \ru Конструктор по умолчанию(автоматический режим). \en Default constructor(auto mode).
|
||||
MbSurfaceSelfIntParams();
|
||||
/** \brief \ru Конструктор проверки на самопересечение поверхности в автоматическом режиме.
|
||||
\en Constructor of checking for self-intersection of surface automatically. \~
|
||||
\details \ru Конструктор проверки на самопересечение поверхности в автоматическом режиме.
|
||||
\en Constructor of checking for self-intersection of surface automatically. \~
|
||||
\param[in] version - \ru Версия алгоритма.
|
||||
\en Algorithm version. \~
|
||||
\param[in] prog - \ru Индикатор прогресса выполнения операции.
|
||||
\en A progress indicator of the operation.
|
||||
*/
|
||||
MbSurfaceSelfIntParams( VERSION version, IProgressIndicator * prog = nullptr );
|
||||
/** \brief \ru Конструктор проверки на самопересечение поверхности вдоль вдоль uv линий.
|
||||
\en Constructor of checking for self-intersection of surface along uv lines. \~
|
||||
\details \ru Конструктор проверки на самопересечение поверхности вдоль вдоль uv линий.
|
||||
\en Constructor of checking for self-intersection of surface along uv lines. \~
|
||||
\param[in] uParams - \ru Набор u параметров поверхности.
|
||||
\en Set of u parameters of surface. \~
|
||||
\param[in] vParams - \ru Набор v параметров поверхности.
|
||||
\en Set of v parameters of surface. \~
|
||||
\param[in] ext - \ru Опция проверки на расширенной поверхности.
|
||||
\en Extended surface option. \~
|
||||
\param[in] uvRange - \ru Область uv для проверки.
|
||||
\en uv surface range for checking \~
|
||||
\param[in] version - \ru Версия алгоритма.
|
||||
\en Algorithm version. \~
|
||||
\param[in] prog - \ru Индикатор прогресса выполнения операции.
|
||||
\en A progress indicator of the operation.
|
||||
*/
|
||||
MbSurfaceSelfIntParams( const c3d::DoubleVector & uParams,
|
||||
const c3d::DoubleVector & vParams,
|
||||
bool ext,
|
||||
const MbRect2D * uvRange,
|
||||
VERSION version,
|
||||
IProgressIndicator * prog = nullptr );
|
||||
/** \brief \ru Конструктор проверки на самопересечение поверхности путем сегментированного пересечения.
|
||||
\en Constructor of checking for self-intersection of surface by segmented intersection. \~
|
||||
\details \ru Конструктор проверки на самопересечение поверхности путем сегментированного пересечения.
|
||||
\en Constructor of checking for self-intersection of surface by segmented intersection. \~
|
||||
\param[in] umin - \ru Минимальный u параметр поверхности.
|
||||
\en Minimal u parameter of surface. \~
|
||||
\param[in] umax - \ru Максимальный u параметр поверхности.
|
||||
\en Maximal u parameter of surface. \~
|
||||
\param[in] vmin - \ru Минимальный v параметр поверхности.
|
||||
\en Minimal v parameter of surface. \~
|
||||
\param[in] vmax - \ru Максимальный v параметр поверхности.
|
||||
\en Maximal v parameter of surface. \~
|
||||
\param[in] prog - \ru Индикатор прогресса выполнения операции.
|
||||
\en A progress indicator of the operation.
|
||||
*/
|
||||
MbSurfaceSelfIntParams( double umin, double umax, double vmin, double vmax, IProgressIndicator * prog = nullptr );
|
||||
/// \ru Деструктор. \en Destructor.
|
||||
~MbSurfaceSelfIntParams() {}
|
||||
public:
|
||||
/// \ru Получить метод проверки самопересечений. \en Get the method of self intersection checking.
|
||||
MbeCheckSelfIntMethod GetMethod() const { return _method; }
|
||||
/// \ru Получить набор u параметров поверхности. \en Get the set of u parameters of surface.
|
||||
const c3d::DoubleVector & GetUParams() const { return _uParams; }
|
||||
/// \ru Получить набор v параметров поверхности. \en Get the set of v parameters of surface.
|
||||
const c3d::DoubleVector & GetVParams() const { return _vParams; }
|
||||
/// \ru Получить опцию проверки на расширенной поверхности. \en Get the extended surface option.
|
||||
bool GetExt() const { return _ext; }
|
||||
/// \ru Получить uv область для проверки. \en Get uv surface range for checking.
|
||||
const MbRect2D * GetUVRange() const { return _uvRange; }
|
||||
/// \ru Получить версию алгоритма. \en Get the algorithm version.
|
||||
VERSION GetVersion() const { return _version; }
|
||||
OBVIOUS_PRIVATE_COPY( MbSurfaceSelfIntParams )
|
||||
};
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Проверить, имеет ли поверхность самопересечения.
|
||||
\en Check whether the surface is self-intersected. \~
|
||||
\details \ru Проверить, имеет ли поверхность самопересечения.
|
||||
\en Check whether the surface is self-intersected.\~
|
||||
\param[in] surface - \ru Проверяемая поверхность.
|
||||
\en Surface to check.\~
|
||||
\param[in] params - \ru Параметры проверки на самопересечение.
|
||||
\en Self-intersection checking parameters.\~
|
||||
\return \ru Возвращает true, если поверхность имеет самопересечения.
|
||||
\en Returns true if surface self-intersection is found. \~
|
||||
\warning \ru В разработке.
|
||||
\en Under development. \~
|
||||
\ingroup Algorithms_3D
|
||||
*/ //---
|
||||
MATH_FUNC( bool ) IsSelfIntersectSurface( const MbSurface & surface,
|
||||
const MbSurfaceSelfIntParams & params );
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Параметры проверки на самопересечение оболочки.
|
||||
\en Parameters for checking shell self-intersection. \~
|
||||
\details \ru Параметры проверки на самопересечение оболочки. \n
|
||||
\en Parameters for checking shell self-intersection. \n \~
|
||||
\warning \ru В разработке.
|
||||
\en Under development. \~
|
||||
\ingroup Algorithms_3D
|
||||
*/
|
||||
//---
|
||||
class MATH_CLASS MbShellSelfIntParams {
|
||||
public:
|
||||
/// \ru Режим проверки самопересечений. \en Mode of self intersection checking.
|
||||
enum class MbeCheckSelfIntMode
|
||||
{
|
||||
Auto , /// \ru Автоматический режим. \en Auto mode.
|
||||
SelfIntFacesOnly , /// \ru Проверять только самопересечение граней. \en Check only self-intersection of faces.
|
||||
IntDfferentFacesOnly /// \ru Проверять только пересечение различных граней. \en Check only the intersection of different faces.
|
||||
};
|
||||
|
||||
private:
|
||||
MbeCheckSelfIntMode _mode; ///< \ru Режим проверки самопересечений. \en Mode of self intersection checking.
|
||||
VERSION _version; ///< \ru Версия алгоритма. \en Algorithm version.
|
||||
public:
|
||||
mutable IProgressIndicator * _progress; ///< \ru Индикатор прогресса выполнения операции. \en A progress indicator of the operation.
|
||||
|
||||
public:
|
||||
/// \ru Конструктор по умолчанию. \en Default constructor.
|
||||
MbShellSelfIntParams();
|
||||
/** \brief \ru Конструктор проверки на самопересечение оболочки.
|
||||
\en Constructor of checking for self-intersection of shell. \~
|
||||
\details \ru Конструктор проверки на самопересечение оболчки.
|
||||
\en Constructor of checking for self-intersection of shell. \~
|
||||
\param[in] version - \ru Версия алгоритма.
|
||||
\en Algorithm version. \~
|
||||
\param[in] prog - \ru Индикатор прогресса выполнения операции.
|
||||
\en A progress indicator of the operation.
|
||||
*/
|
||||
MbShellSelfIntParams( VERSION version, IProgressIndicator * prog = nullptr );
|
||||
/** \brief \ru Конструктор проверки на самопересечение оболочки.
|
||||
\en Constructor of checking for self-intersection of shell. \~
|
||||
\details \ru Конструктор проверки на самопересечение оболчки.
|
||||
\en Constructor of checking for self-intersection of shell. \~
|
||||
\param[in] mode - \ru Режим проверки самопересечений.
|
||||
\en Mode of self intersection checking. \~
|
||||
\param[in] version - \ru Версия алгоритма.
|
||||
\en Algorithm version. \~
|
||||
\param[in] prog - \ru Индикатор прогресса выполнения операции.
|
||||
\en A progress indicator of the operation.
|
||||
*/
|
||||
MbShellSelfIntParams( MbeCheckSelfIntMode mode, VERSION version, IProgressIndicator * prog = nullptr );
|
||||
/// \ru Деструктор. \en Destructor.
|
||||
~MbShellSelfIntParams() {}
|
||||
public:
|
||||
/// \ru Получить режим проверки самопересечений. \en Get the mode of self intersection checking.
|
||||
MbeCheckSelfIntMode GetMode() const { return _mode; }
|
||||
/// \ru Установить режим проверки самопересечений. \en Set the mode of self intersection checking.
|
||||
void SetMode( MbeCheckSelfIntMode mode ) { _mode = mode; }
|
||||
/// \ru Получить версию алгоритма. \en Get the algorithm version.
|
||||
VERSION GetVersion() const { return _version; }
|
||||
OBVIOUS_PRIVATE_COPY( MbShellSelfIntParams )
|
||||
};
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Результаты проверки на самопересечение оболочки.
|
||||
\en Results for checking sell self-intersection. \~
|
||||
\details \ru Результаты проверки на самопересечение оболочки. \n
|
||||
\en Results for checking sell self-intersection. \n \~
|
||||
\warning \ru В разработке.
|
||||
\en Under development. \~
|
||||
\ingroup Algorithms_3D
|
||||
*/
|
||||
//---
|
||||
class MATH_CLASS MbShellSelfIntResults {
|
||||
private:
|
||||
/** \brief \ru Результат пересечения/самопересечения граней.
|
||||
\en Result of intersection/self-intersection of faces. \~
|
||||
\details \ru Результат пересечения/самопересечения граней. Если '_facesIndices' содержат
|
||||
одинаковые индексы, значит грань с данным индексом самопересекается.
|
||||
Кривые пересечения не вычисляются для сомопересечения и '_curves' будет пустым. \n
|
||||
\en The result of intersection/self-intersection of edges. If '_facesIndices' contains
|
||||
identical indices, which means the face with this index intersects itself.
|
||||
Intersection curves are not calculated for self-intersection and '_curves' will be empty. \n \~
|
||||
*/
|
||||
struct SelfIntResult {
|
||||
c3d::IndicesPair _facesIndices; ///< \ru Индексы пересекающихся/самопересекающихся граней. \en Indices of intersecting/self-intersecting faces.
|
||||
c3d::SpaceCurvesSPtrVector _curves; ///< \ru Кривые пересечения граней. \en Face intersection curves.
|
||||
|
||||
/// \ru Конструктор по умолчанию. \en Default constructor.
|
||||
SelfIntResult() {};
|
||||
/// \ru Конструктор по копирования. \en Copy constructor.
|
||||
SelfIntResult( const SelfIntResult & other );
|
||||
/// \ru Оператор присваивания. \en Assignment operator.
|
||||
SelfIntResult & operator =( const SelfIntResult & other );
|
||||
/** \brief \ru Конструктор результата проверки на самопересечение пары граней.
|
||||
\en Constructor of the result of checking for self-intersection of a pair of faces. \~
|
||||
\details \ru Конструктор результата проверки на самопересечение пары граней.
|
||||
\en Constructor of the result of checking for self-intersection of a pair of faces. \~
|
||||
\param[in] faceIndex1 - \ru Индекс первой грани.
|
||||
\en First face index. \~
|
||||
\param[in] faceIndex2 - \ru Индекс второй грани.
|
||||
\en Second face index. \~
|
||||
\param[in] intCurves - \ru Указатель на вектор кривых пересечения двух граней.
|
||||
\en Pointer to a vector of curves where two faces intersect. \~
|
||||
*/
|
||||
SelfIntResult( size_t faceIndex1, size_t faceIndex2, c3d::SpaceCurvesSPtrVector * intCurves = nullptr );
|
||||
/// \ru Обмен. \en Swap.
|
||||
void Swap( SelfIntResult & other );
|
||||
};
|
||||
|
||||
private:
|
||||
std::vector<SelfIntResult> _selfIntResults;
|
||||
|
||||
public:
|
||||
/// \ru Конструктор по умолчанию. \en Default constructor.
|
||||
MbShellSelfIntResults() {};
|
||||
/// \ru Деструктор. \en Destructor.
|
||||
~MbShellSelfIntResults() {};
|
||||
public:
|
||||
/// \ru Добавить результат самопересечения оболочки для пары граней. \en Add the result of self-intersection processing for a pair of faces.
|
||||
void AddResult( size_t faceIndex1, size_t faceIndex2, c3d::SpaceCurvesSPtrVector * intersectionCurves = nullptr );
|
||||
/** \brief \ru Получить результат самопересечения оболочки для пары граней по индексу.
|
||||
\en Get the result of self-intersection processing for a pair of faces. \~
|
||||
\details \ru Получить индексы пересекающихся/самопересекающихся граней и кривые пересечения
|
||||
(для пары различных граней) по индексу. Если параметр 'intersectionCurves' - nullptr,
|
||||
кривые пересечения не возвращаются. Если faceIndex1 == faceIndex2 значит грань
|
||||
с индексом faceIndex1 самопересекается. Кривые пересечения не вычисляются и
|
||||
'intersectionCurves' будет пустым.
|
||||
\en Get indices of intersecting/self-intersecting faces and intersection curves
|
||||
(for a pair of different faces) by index. If the 'intersectionCurves' parameter is nullptr,
|
||||
intersection curves are not returned. If faceIndex1 == faceIndex2 means face
|
||||
with the index faceIndex1 self-intersects. Intersection curves are not calculated and
|
||||
'intersectionCurves' will be empty. \~
|
||||
\param[in] index - \ru Индекс результата для пары граней.
|
||||
\en Result index for a pair of faces. \~
|
||||
\param[out] faceIndex1 - \ru Индекс первой грани.
|
||||
\en First face index. \~
|
||||
\param[out] faceIndex2 - \ru Индекс второй грани.
|
||||
\en Second face index. \~
|
||||
\param[out] intersectionCurves - \ru Указатель на вектор кривых пересечения двух граней.
|
||||
Если intersectionCurves = nullptr - кривые пересечения
|
||||
не возвращаются.
|
||||
\en Pointer to a vector of curves where two faces intersect.
|
||||
If intersectionCurves = nullptr - intersection curves
|
||||
do not return. \~
|
||||
\return \ru Возвращает:
|
||||
false, если результата с заданым индексом не содержится;
|
||||
true, если результата с заданым индексом найден;
|
||||
\en Returns:
|
||||
false, if there is no result with the given index;
|
||||
true, if a result with the given index is found; \~
|
||||
*/
|
||||
bool GetResult( size_t index, size_t & faceIndex1, size_t & faceIndex2, c3d::SpaceCurvesSPtrVector * intersectionCurves ) const;
|
||||
/// \ru Получить количество пар пересекающихся и самопересекающихся граней. \en Get the number of pairs of intersecting and self-intersecting faces.
|
||||
size_t Count() const { return _selfIntResults.size(); }
|
||||
/// \ru Установить значения по умолчанию. \en Set defaults.
|
||||
void Reset() { _selfIntResults.clear(); };
|
||||
OBVIOUS_PRIVATE_COPY( MbShellSelfIntResults )
|
||||
};
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Проверить оболочку на наличие самопересечений.
|
||||
\en Check shell for self-intersections. \~
|
||||
\details \ru Проверить оболочку на наличие самопересечений. Находит все кривые самопересечения оболочки.
|
||||
\en Check shell for self-intersections. Finds all shell self-intersection curves.\~
|
||||
\param[in] shell - \ru Оболочка, которую проверяем.
|
||||
\en Shell to check.\~
|
||||
\param[in] params - \ru Параметры проверки на самопересечение.
|
||||
\en Self-intersection checking parameters.\~
|
||||
\param[out] results - \ru Результаты проверки на самопересечение.
|
||||
\en Self-intersection checking results.\~
|
||||
\return \ru Возвращает:
|
||||
false, если оболочка не имеет самопересечений;
|
||||
true, если оболочка имеет самопересечения;
|
||||
\en Returns:
|
||||
false, if shell has no self-intersections;
|
||||
true, if shell has self-intersections.\~
|
||||
\warning \ru В разработке.
|
||||
\en Under development. \~
|
||||
\ingroup Algorithms_3D
|
||||
*/ //---
|
||||
MATH_FUNC( bool ) IsSelfIntersectShell( const MbFaceShell & shell,
|
||||
const MbShellSelfIntParams & params,
|
||||
MbShellSelfIntResults & results );
|
||||
|
||||
#endif // __CHECK_GEOMETRY_H
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
#include <vector>
|
||||
|
||||
|
||||
class MATH_CLASS MbMesh;
|
||||
class MATH_CLASS MbGrid;
|
||||
class MbMesh;
|
||||
class MbGrid;
|
||||
class MbGridTopology;
|
||||
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
|
||||
class MATH_CLASS MpEdge;
|
||||
class MATH_CLASS ProgressBarWrapper;
|
||||
class ProgressBarWrapper;
|
||||
class IProgressIndicator;
|
||||
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include <mb_placement.h>
|
||||
#include <mb_placement3d.h>
|
||||
#include <mb_pmi.h>
|
||||
#include <conv_pmi_depricated_convert.h>
|
||||
|
||||
#include <vector>
|
||||
#include <set>
|
||||
@@ -541,30 +542,6 @@ typedef std::vector< SPtr<MaTextItem> > vector_of_text;
|
||||
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Преобразовать элемент аннотации.
|
||||
\en Transform annotation item. \~
|
||||
*/
|
||||
// ---
|
||||
CONV_FUNC( SPtr<MbPMI> ) ConvertPMI( const MaAnnotationItem& it );
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Преобразовать элемент технического требования.
|
||||
\en Transform technical requirements. \~
|
||||
*/
|
||||
// ---
|
||||
CONV_FUNC( SPtr<MbPMI> ) ConvertTechnicalRequirements( const MaAnnotationItem& it );
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Преобразовать элемент аннотации.
|
||||
\en Transform annotation item. \~
|
||||
*/
|
||||
// ---
|
||||
CONV_FUNC( SPtr<MaAnnotationItem> ) ConvertPMI( const MbPMI& it );
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Размер - родоначальник классов для размеров различных типов.
|
||||
\en Dimension is the parent of all classes for dimensions of different types. \~
|
||||
@@ -933,14 +910,30 @@ void MaAnnotationItem::GetAnnotationText( Out dest ) const {
|
||||
// ---
|
||||
c3d::ItemsSPtrVector GetPMIGeometry( const MbPMI & it );
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Преобразовать текстовый элемент
|
||||
// Получить строковое название спецсимвола
|
||||
// ---
|
||||
SPtr<MbTextItem> CreateTextItem( const MaTextItem & it );
|
||||
SPtr<MaTextItem> CreateTextItem( const MbTextItem & it );
|
||||
c3d::string_t PredefinedSymbolToString( const MbeDefinedDimensionSymbol & symb );
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Получить спецсимвол из строки
|
||||
// ---
|
||||
bool StringToPredefinedSymbol( const c3d::string_t & txt, MbeDefinedDimensionSymbol & predefSymb );
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Получить строковое название тэга форматирования
|
||||
// ---
|
||||
c3d::string_t TextTagToString( const MaeTextFormatTag & tag );
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Получить тэг форматирования из строки
|
||||
// ---
|
||||
MaeTextFormatTag StringToTextTag( const c3d::string_t & txt );
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Получить строковое название типа терминатора
|
||||
// ---
|
||||
c3d::string_t GetTerminatorTypeStr( const MbeDefinedTerminatorSymbol termTrype );
|
||||
|
||||
#endif // __CONV_ANNOTATION_ITEM_H
|
||||
|
||||
@@ -13,9 +13,11 @@
|
||||
|
||||
#include <model_item.h>
|
||||
#include <attribute_item.h>
|
||||
#include <instance_item.h>
|
||||
#include <conv_annotation_item.h>
|
||||
#include <conv_predefined.h>
|
||||
#include <tool_cstring.h>
|
||||
#include <assisting_item.h>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
|
||||
@@ -377,7 +379,8 @@ enum MbeGettingItemType {
|
||||
git_AssociatedGeometry, ///< \ru Получить ассоциированные геометрические объекты (резьбы). \en Get associated geometry objects (threads).
|
||||
git_Polygonal, ///< \ru Получить полгональные объекты (MbMesh). !!! ЭКСПЕРИМЕНТАЛЬНЫЙ ФУНКЦИОНАЛ !!! \en Get polygonal objects (MbMesh). !!! EXPEREIMENTAL FUNCTIONALITY !!!
|
||||
git_PMI, ///< \ru Получить размеры и иные элементы аннотации. \en Get dimensions and other annotation items.
|
||||
git_TechnicalRquirments ///< \ru Получить технические требования. \en Get thecnical requirements.
|
||||
git_TechnicalRquirments, ///< \ru Получить технические требования. \en Get thecnical requirements.
|
||||
git_Placement ///< \ru Получить системы координат. \en Get placements.
|
||||
};
|
||||
|
||||
|
||||
@@ -450,14 +453,59 @@ public:
|
||||
virtual AnnotationSptrVector GetAnnotationItems( eTextForm, bool ) const { return AnnotationSptrVector(); }; // Реализация будет удалена после того, как она будет осуществлена на стороне 3D
|
||||
virtual AnnotationSptrVector GetAnnotationItems( eTextForm ) const { return AnnotationSptrVector(); }; // Будет удалена после её реализации на стороне 3D
|
||||
|
||||
/** \brief \ru Задать элементы аннотации в сборке.
|
||||
\en Set elements of annotation in the assembly. \~
|
||||
\param[in] sourceDim - \ru Элементы аннотации
|
||||
\en Elements of annotation. \~
|
||||
*/
|
||||
/** \brief \ru Задать элементы аннотации в сборке.
|
||||
\en Set elements of annotation in the assembly. \~
|
||||
\param[in] sourceDim - \ru Элементы аннотации
|
||||
\en Elements of annotation. \~
|
||||
*/
|
||||
virtual void SetAnnotationItems( const AnnotationSptrVector & ) = 0;
|
||||
|
||||
};
|
||||
/** \brief \ru Добавить объект с заданной ЛСК в корень сборки при импорте.
|
||||
\en Add object with a placement to the assembly root while importing. \~
|
||||
\param[in] item - \ru Объект, добавляемые в модель.
|
||||
\en Object to add to the model. \~
|
||||
\param[in] placement - \ru ЛСК.
|
||||
\en Placement. \~
|
||||
*/
|
||||
virtual void AddMappedItem( MbItem &, MbPlacement3D const &, c3d::AttrSPtrVector const& ) {};
|
||||
|
||||
/** \brief \ru Получить следующий объект с заданной ЛСК.
|
||||
\en Get the next item with placement. \~
|
||||
\return \ru Объект с заданной ЛС или nullptr.
|
||||
\en Item with placement and nullptr otherwise. \~
|
||||
*/
|
||||
virtual SPtr<MbInstance> NextMappedItem() const { return {}; }
|
||||
|
||||
/** \brief \ru Получить следующую группу конструкционных осей.
|
||||
\en Get the next construction axes grid. \~
|
||||
\return \ru Очередная группа конструкционных осей или нуль в случае исчерпания.
|
||||
\en Next construction axes grid or null in case of depletion. \~
|
||||
*/
|
||||
virtual c3d::ItemSPtr NextAxesGrid() const { return c3d::ItemSPtr{}; }
|
||||
|
||||
|
||||
/** \brief \ru Добавить следующую группу конструкционных осей.
|
||||
\en Add next construction axes grid. \~
|
||||
\param[in] group \ru Очередная группа конструкционных осей.
|
||||
\en Next construction axes grid. \~
|
||||
*/
|
||||
virtual void AddAxesGrid( c3d::ItemSPtr const & ) {}
|
||||
|
||||
/** \brief \ru Получить следующую систему координат.
|
||||
\en Get the next coordinate system. \~
|
||||
\return \ru Очередная система координат или нуль в случае исчерпания.
|
||||
\en Next coordinate system or null in case of depletion. \~
|
||||
*/
|
||||
virtual SPtr<MbAssistingItem> NextCoordinateSystem() const { return {}; }
|
||||
|
||||
|
||||
/** \brief \ru Добавить систему координат.
|
||||
\en Add a coordinate system. \~
|
||||
\param[in] group \ru Система координат.
|
||||
\en Coordinate system. \~
|
||||
*/
|
||||
virtual void AddCoordinateSystem( SPtr<MbAssistingItem> const & ) {}
|
||||
};
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
@@ -532,14 +580,75 @@ public:
|
||||
virtual AnnotationSptrVector GetAnnotationItems( eTextForm ) const { return AnnotationSptrVector(); }; // Будет удалена после её реализации на стороне 3D
|
||||
|
||||
|
||||
/** \brief \ru Задать элементы аннотации в детали.
|
||||
\en Set elements of annotation in the part. \~
|
||||
\param[in] sourceDim - \ru Элементы аннотации
|
||||
\en Elements of annotation. \~
|
||||
*/
|
||||
/** \brief \ru Задать элементы аннотации в детали.
|
||||
\en Set elements of annotation in the part. \~
|
||||
\param[in] sourceDim - \ru Элементы аннотации
|
||||
\en Elements of annotation. \~
|
||||
*/
|
||||
virtual void SetAnnotationItems( const AnnotationSptrVector & ) = 0;
|
||||
|
||||
/** \brief \ru Добавить объект с заданной ЛСК в корень сборки при импорте.
|
||||
\en Add object with a placement to the assembly root while importing. \~
|
||||
\param[in] item - \ru Объект, добавляемые в модель.
|
||||
\en Object to add to the model. \~
|
||||
\param[in] placement - \ru ЛСК.
|
||||
\en Placement. \~
|
||||
*/
|
||||
virtual void AddMappedItem( MbItem &, MbPlacement3D const &, c3d::AttrSPtrVector const& ) {};
|
||||
|
||||
/** \brief \ru Получить следующий объект с заданной ЛСК.
|
||||
\en Get the next item with placement. \~
|
||||
\return \ru Объект с заданной ЛС или nullptr.
|
||||
\en Item with placement and nullptr otherwise. \~
|
||||
*/
|
||||
virtual SPtr<MbInstance> NextMappedItem() const { return {}; }
|
||||
|
||||
/** \brief \ru Получить следующую группу конструкционных осей.
|
||||
\en Get the next conxtruction axes grid. \~
|
||||
\return \ru Очередная группа конструкционных осей или нуль в случае исчерпания.
|
||||
\en Next construction axes grid or null in case of depletion. \~
|
||||
*/
|
||||
virtual c3d::ItemSPtr NextAxesGrid() const { return c3d::ItemSPtr{}; }
|
||||
|
||||
|
||||
/** \brief \ru Добавить следующую группу конструкционных осей.
|
||||
\en Get the next conxtruction axes grid. \~
|
||||
\param[in] group \ru Очередная группа конструкционных осей или нуль в случае исчерпания.
|
||||
\en Next construction axes grid or null in case of depletion. \~
|
||||
*/
|
||||
virtual void AddAxesGrid( c3d::ItemSPtr const & ) {}
|
||||
|
||||
/** \brief \ru Получить следующую систему координат.
|
||||
\en Get the next coordinate system. \~
|
||||
\return \ru Очередная система координат или нуль в случае исчерпания.
|
||||
\en Next coordinate system or null in case of depletion. \~
|
||||
*/
|
||||
virtual SPtr<MbAssistingItem> NextCoordinateSystem() const { return {}; }
|
||||
|
||||
|
||||
/** \brief \ru Добавить систему координат.
|
||||
\en Add a coordinate system. \~
|
||||
\param[in] group \ru Система координат.
|
||||
\en Coordinate system. \~
|
||||
*/
|
||||
virtual void AddCoordinateSystem( SPtr<MbAssistingItem> const & ) {}
|
||||
};
|
||||
|
||||
|
||||
namespace c3d
|
||||
{
|
||||
namespace converter {
|
||||
/** \brief \ru Проверить корректность набора осей.
|
||||
\en Validate axes grid. \~
|
||||
\details \ru Либо это объект типа MbPlaneInstance либо MbAssembly, содержащий только MbPlaneInstance с одинаковыми ЛСК плоскостей\~
|
||||
\en. The item is or MbPlaneInstance or MbAssembly containing only MbPlaneInstance items with same LCS of the plane.\~
|
||||
\return \ru Пройдена ли валидация.
|
||||
\en Wether validation passed. \~
|
||||
\param[in] item - \ru Группа конструкционных осей.
|
||||
\en Construction axes grid. \~
|
||||
*/
|
||||
CONV_FUNC (bool) IsAxesGridValid( c3d::ItemSPtr const & );
|
||||
}
|
||||
}
|
||||
|
||||
#endif // __CONV_MODEL_DOCUMENT_H
|
||||
|
||||
@@ -830,7 +830,23 @@ public:
|
||||
\en EXPEREIMENTAL \~.
|
||||
\ingroup ASCII_Exchange
|
||||
*/
|
||||
virtual MbeConvResType LoadForeignReader( const c3d::path_string& pluginName, const c3d::optionNameValuePairs_t& pluginSpecificSettings, IConfigurationSelector * configSelector = 0 ) = 0;
|
||||
virtual MbeConvResType LoadForeignReader( const c3d::path_string& pluginName, const c3d::optionNameValuePairs_t& pluginSpecificSettings, IConfigurationSelector * configSelector ) = 0;
|
||||
|
||||
|
||||
/** \brief \ru Загрузить плагин получения данных для построения модели.
|
||||
\en Load plugin for getting information necessary to build model. \~
|
||||
\details \ru Описание специфичных для плагина настроек следует получить у поставщика комопонента.
|
||||
\en The description of plugin-specific settings shoud be taken from the plugin's vendor. \~
|
||||
\note \ru Экспериментальное API. \en Expereimental API. \~
|
||||
\param[in] pluginName - \ru Имя подключаемого файла.
|
||||
\en Name of the file to link. \~
|
||||
\param[in] pluginSpecificSettings - \ru Специфические для плагина настройки.
|
||||
\en Plugin-specific settings. \~
|
||||
\return \ru Код завершения операции.
|
||||
\en Code of the operation termination. \~
|
||||
\ingroup ASCII_Exchange
|
||||
*/
|
||||
virtual MbeConvResType LoadForeignReader( const c3d::path_string& pluginName, const c3d::optionNameValuePairs_t& pluginSpecificSettings ) = 0;
|
||||
|
||||
|
||||
/** \brief \ru Отключить загруженный плагин получения данных для построения модели.
|
||||
|
||||
@@ -0,0 +1,156 @@
|
||||
#include <conv_model_document.h>
|
||||
#include <mb_matrix.h>
|
||||
#include <solid.h>
|
||||
#include <vector>
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Данные терминатора
|
||||
// ---
|
||||
struct TerminatorData
|
||||
{
|
||||
int type;
|
||||
double parameter;
|
||||
double sizeX;
|
||||
double sizeY;
|
||||
bool sameDirection;
|
||||
};
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Данные кривой с терминаторами
|
||||
// ---
|
||||
struct DecoratedCurveData
|
||||
{
|
||||
int curveType;
|
||||
std::vector<TerminatorData> terminators;
|
||||
};
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Данные размера
|
||||
// ---
|
||||
struct DimensionData
|
||||
{
|
||||
double value;
|
||||
double valuePlus;
|
||||
double valueMinus;
|
||||
bool isRangeSet;
|
||||
bool isValueDefined;
|
||||
std::vector<DecoratedCurveData> decoratedCurves;
|
||||
};
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Контейнер элементов с вхождениями
|
||||
// ---
|
||||
template <typename ReferencedItemType>
|
||||
class LinearizedContainer {
|
||||
|
||||
ReferencedItemType item;
|
||||
mutable std::vector<MbMatrix3D> references;
|
||||
public:
|
||||
// Конструктор
|
||||
LinearizedContainer( const ReferencedItemType& it )
|
||||
: item( it )
|
||||
, references() {
|
||||
}
|
||||
|
||||
// Конструктор копирования
|
||||
LinearizedContainer( const LinearizedContainer& i )
|
||||
: item( i.item )
|
||||
, references( i.references ) {
|
||||
}
|
||||
|
||||
// Оператор сравнения
|
||||
bool operator ==(const LinearizedContainer& to) const {
|
||||
return item == to.item;
|
||||
}
|
||||
|
||||
// Получить элемент-ключ
|
||||
ReferencedItemType Item() const {
|
||||
return item;
|
||||
}
|
||||
|
||||
// Получить число вхождений
|
||||
size_t ReferencesCount() const {
|
||||
return references.size();
|
||||
}
|
||||
|
||||
// Получить матрицу вхождения по индексу
|
||||
MbMatrix3D Reference( size_t index ) const {
|
||||
MbMatrix3D result;
|
||||
if ( index < ReferencesCount() )
|
||||
result = references[index];
|
||||
return result;
|
||||
}
|
||||
|
||||
// Добавить матрицу вхождения
|
||||
void AddReference( const MbMatrix3D& matr ) {
|
||||
references.push_back( matr );
|
||||
}
|
||||
};
|
||||
|
||||
typedef std::vector<LinearizedContainer<ModelPartPtr>> PartsLinearized;
|
||||
typedef std::vector<LinearizedContainer<ModelAssemblyPtr>> AssembliesLinearized;
|
||||
typedef std::vector<LinearizedContainer<c3d::SolidSPtr>> SolidsLinearized;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Документ
|
||||
// ---
|
||||
class CONV_CLASS LinearizedTreeDocument : public C3dModelDocument
|
||||
{
|
||||
PartsLinearized parts;
|
||||
AssembliesLinearized assemblies;
|
||||
SolidsLinearized solids;
|
||||
std::vector<SPtr<MbCurve3D>> spaceCurves;
|
||||
std::vector<SPtr<MbMesh>> meshes;
|
||||
vector_of_annotation annotations;
|
||||
vector_of_annotation techReq;
|
||||
|
||||
bool calculateMIP;
|
||||
bool sliceSolids;
|
||||
|
||||
public:
|
||||
// Конструктор
|
||||
LinearizedTreeDocument();
|
||||
// Деструктор
|
||||
~LinearizedTreeDocument();
|
||||
|
||||
public:
|
||||
// Заполнить данные
|
||||
void FillLinearizedData();
|
||||
// Заполнены ли данные
|
||||
bool IsFilled();
|
||||
|
||||
bool GetSolid( const size_t ind, c3d::SolidSPtr& sld ) const;
|
||||
|
||||
void SetSliceSolids( const bool val ) { sliceSolids = val; }
|
||||
|
||||
// Заполнить списки компонент
|
||||
void FillComponents();
|
||||
// Заполнить списки объектов
|
||||
void FillObjectsFromComponents();
|
||||
// Обработать сборку со вставками
|
||||
void ProcessAssembly( ModelAssemblyPtr assm, const MbMatrix3D & matr );
|
||||
// Добавить деталь
|
||||
void AddPart( ModelPartPtr prt, const MbMatrix3D & matr );
|
||||
// Добавить сборку
|
||||
void AddAssembly( ModelAssemblyPtr assm, const MbMatrix3D & matr );
|
||||
// Добавить тело
|
||||
void AddSolid( c3d::SolidSPtr sld, const MbMatrix3D & matr );
|
||||
// Выдать данные размера
|
||||
void GetPmiDimensionData( MaDimension & dimension, DimensionData & dimData );
|
||||
// Сбросить данные размера
|
||||
void UnsetPmiDimensionData( DimensionData & dimData );
|
||||
// Выдать данные кривой с терминаторами
|
||||
void GetPmiDecoratedCurveData( MaDecoratedCurve & decoratedCurve, DecoratedCurveData & decCurveData );
|
||||
// Выдать данные терминатора
|
||||
void GetPmiTerminatorData( MaTerminatorSymbol & terminator, TerminatorData & termData );
|
||||
// Выдать идентификатор
|
||||
bool GetCadItemIdentifier( const MbAttributeContainer& item, ptrdiff_t & id );
|
||||
// Резка тела координатными плоскостями
|
||||
void SolidPlaneCutting( const MbSolid & solid, std::vector<MbResultType> & cutRes );
|
||||
// Резка тела
|
||||
MbResultType SolidCut( const MbSolid & solid, const MbSurface & surf, bool forward );
|
||||
};
|
||||
@@ -0,0 +1,54 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
\file
|
||||
\brief \ru Функции преобразования данных из устаревшего MaAnnotationItem в актуальный MbPmi и обратно.
|
||||
\en Functions for converting data from depicated MaAnnotationItem to current MbPmi and back. \~
|
||||
*/
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef __CONV_PMI_DEPRICATED_CONVERT_H
|
||||
#define __CONV_PMI_DEPRICATED_CONVERT_H
|
||||
|
||||
#include <mb_pmi.h>
|
||||
#include <conv_annotation_item.h>
|
||||
|
||||
class MaAnnotationItem;
|
||||
class MbPMI;
|
||||
class MaTextItem;
|
||||
class MbTextItem;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Преобразовать элемент аннотации.
|
||||
\en Transform annotation item. \~
|
||||
*/
|
||||
// ---
|
||||
CONV_FUNC( SPtr<MbPMI> ) ConvertPMI( const MaAnnotationItem & it );
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Преобразовать элемент технического требования.
|
||||
\en Transform technical requirements. \~
|
||||
*/
|
||||
// ---
|
||||
CONV_FUNC( SPtr<MbPMI> ) ConvertTechnicalRequirements( const MaAnnotationItem & it );
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Преобразовать элемент аннотации.
|
||||
\en Transform annotation item. \~
|
||||
*/
|
||||
// ---
|
||||
CONV_FUNC( SPtr<MaAnnotationItem> ) ConvertPMI( const MbPMI & it );
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Преобразовать текстовый элемент
|
||||
// ---
|
||||
SPtr<MbTextItem> CreateTextItem( const MaTextItem & it );
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Преобразовать текстовый элемент
|
||||
// ---
|
||||
SPtr<MaTextItem> CreateTextItem( const MbTextItem & it );
|
||||
|
||||
|
||||
#endif // __CONV_PMI_DEPRICATED_CONVERT_H
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
|
||||
class MATH_CLASS MbNamedAttributeContainer;
|
||||
class MATH_CLASS MbFaceShell;
|
||||
class MbFaceShell;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -13,9 +13,9 @@
|
||||
#include <creator.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbSolid;
|
||||
class MATH_CLASS MbBooleanOperationParams;
|
||||
struct MATH_CLASS MbBooleanFlags;
|
||||
class MbSolid;
|
||||
class MbBooleanOperationParams;
|
||||
struct MbBooleanFlags;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -13,11 +13,11 @@
|
||||
#include <creator.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbCartPoint;
|
||||
class MATH_CLASS MbCurve3D;
|
||||
class MATH_CLASS MbSurface;
|
||||
class MATH_CLASS MbElementarySurface;
|
||||
class MATH_CLASS MbEdge;
|
||||
class MbCartPoint;
|
||||
class MbCurve3D;
|
||||
class MbSurface;
|
||||
class MbElementarySurface;
|
||||
class MbEdge;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
#include <op_shell_parameter.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbSurface;
|
||||
class MATH_CLASS MbContour;
|
||||
class MbSurface;
|
||||
class MbContour;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
#include <creator.h>
|
||||
|
||||
class MATH_CLASS MbDraftSolidParams;
|
||||
class MbDraftSolidParams;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Строитель оболочки с уклонёнными гранями.
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#include <op_duplication_parameter.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbFaceShell;
|
||||
class MbFaceShell;
|
||||
class MbRegTransform;
|
||||
class MbRegDuplicate;
|
||||
|
||||
@@ -29,7 +29,8 @@ class MbRegDuplicate;
|
||||
// ---
|
||||
class MATH_CLASS MbDuplicationSolid : public MbCreator {
|
||||
protected:
|
||||
DuplicationValues * parameters; ///< \ru Параметры размножения. \en Parameters of duplication.
|
||||
DuplicationValues * _parameters; ///< \ru Параметры размножения. \en Parameters of duplication.
|
||||
c3d::ItemIndices _faceIndices; ///< \ru Индексы выбранных граней оболочки. \en Indices of selected shell faces.
|
||||
|
||||
public:
|
||||
/// \ru Конструктор по параметрам. \en Constructor by parameters.
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
#include <creator.h>
|
||||
#include <mb_enum.h>
|
||||
|
||||
class MATH_CLASS MbElementarySurface;
|
||||
class MATH_CLASS MbElementarySolidParams;
|
||||
class MbElementarySurface;
|
||||
class MbElementarySolidParams;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
#include <cr_swept_solid.h>
|
||||
#include <cur_contour_on_surface.h>
|
||||
|
||||
class MATH_CLASS MbEvolutionShellParams;
|
||||
struct MATH_CLASS MeshSurfaceValues;
|
||||
class MbEvolutionShellParams;
|
||||
struct MeshSurfaceValues;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Направляющая кинематической операции.
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#include <cr_swept_solid.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbRect;
|
||||
class MbRect;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include <solid.h>
|
||||
#include <op_shell_parameter.h>
|
||||
|
||||
|
||||
class MbFilletInternalMaker;
|
||||
|
||||
|
||||
@@ -24,24 +25,13 @@ class MbFilletInternalMaker;
|
||||
// ---
|
||||
class MATH_CLASS MbFaceFilletMaker
|
||||
{
|
||||
c3d::SolidSPtr _initSolid; ///< \ru Исходная оболочка. \en Initial shell.
|
||||
MbFilletInternalMaker * _impl; ///< \ru Реализация алгоритма. \en The algorithm implementation.
|
||||
public:
|
||||
|
||||
/// \ru Способ подрезки базовых объектов скруглением. \en The method for cutting the base objects with the fillet.
|
||||
enum class MbeModifySolidOption {
|
||||
noCut, ///< \ru Не модифицировать базовые объекты. \en Do not modify the base objects.
|
||||
cutFirstFaces, ///< \ru Подрезать только первый набор граней. \en Cut only the first set of faces.
|
||||
cutSecondFaces, ///< \ru Подрезать только второй набор граней. \en Cut only the second set of faces.
|
||||
sewAll ///< \ru Подрезать и сшить. \en Cut and sew.
|
||||
};
|
||||
|
||||
public:
|
||||
/// \ru Конструктор по телу. \en Constructor by a solid.
|
||||
explicit MbFaceFilletMaker( const c3d::SolidSPtr & solid, MbeCopyMode sameShell, const MbSectionData & data );
|
||||
|
||||
/// \ru Конструктор по оболочке. \en Constructor by a shell.
|
||||
explicit MbFaceFilletMaker( const c3d::ShellSPtr & solid, MbeCopyMode sameShell, const MbSectionData & data );
|
||||
/// \ru Конструктор. \en Constructor.
|
||||
explicit MbFaceFilletMaker( MbeCopyMode /*Будет удалено*/, const MbSectionData & data );
|
||||
|
||||
/// \ru Деструктор. \en Destructor.
|
||||
~MbFaceFilletMaker();
|
||||
@@ -52,10 +42,7 @@ public:
|
||||
/// \ru Модифицировать базовые объекты указанными частями скругления. Если массив индексов пустой, то выполняется подрезка всеми частями скругления.
|
||||
/// \en Modify base objects by the defines parts of the fillet. If indices array is empty then performed cutting with the all parts of the fillet.
|
||||
///
|
||||
MbResultType ModifyBaseObjects( const c3d::IndicesVector & partsIndicies, MbeModifySolidOption option, MbSectionResults & result );
|
||||
|
||||
/// \ru Построить скругления вместе с подрезкой базовых объектов за одну операцию. \en Create fillets together with cutting of base objects in a single operation.
|
||||
MbResultType CreateFillets( MbeModifySolidOption option, const c3d::IndicesVector & partsIndicies, MbSectionResults & result );
|
||||
MbResultType ModifyBaseObjects( const c3d::IndicesVector & partsIndicies, std::vector<MbSectionResults> & result );
|
||||
|
||||
/// \ru Получить параметры построения. \en Get the constructing parameters.
|
||||
const MbSectionData & GetSectionData() const;
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#include <function.h>
|
||||
|
||||
|
||||
struct MATH_CLASS MbEdgeFunction;
|
||||
struct MbEdgeFunction;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
#include <creator.h>
|
||||
|
||||
class MATH_CLASS MbWireFrameFilletsParams;
|
||||
class MbWireFrameFilletsParams;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Строитель скругления каркаса.
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#include <cr_swept_solid.h>
|
||||
#include <templ_sptr.h>
|
||||
|
||||
class MATH_CLASS MbLoftedSolidParams;
|
||||
class MbLoftedSolidParams;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Строитель оболочки тела по сечениям.
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
#include <op_shell_parameter.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbSNameMaker;
|
||||
class MATH_CLASS MedianShellFaces;
|
||||
class MbSNameMaker;
|
||||
class MedianShellFaces;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -14,11 +14,11 @@
|
||||
#include <creator.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbMesh;
|
||||
class MATH_CLASS MbGrid;
|
||||
class MATH_CLASS MbPolygon3D;
|
||||
class MATH_CLASS MbApex3D;
|
||||
class MATH_CLASS MbItem;
|
||||
class MbMesh;
|
||||
class MbGrid;
|
||||
class MbPolygon3D;
|
||||
class MbApex3D;
|
||||
class MbItem;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
#include <op_shell_parameter.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbFaceShell;
|
||||
class MbFaceShell;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -12,9 +12,9 @@
|
||||
#include <mb_operation_result.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbCreator;
|
||||
class MATH_CLASS MbSNameMaker;
|
||||
class MATH_CLASS MbFaceShell;
|
||||
class MbCreator;
|
||||
class MbSNameMaker;
|
||||
class MbFaceShell;
|
||||
struct NurbsSurfaceValues;
|
||||
class IProgressIndicator;
|
||||
|
||||
|
||||
@@ -17,10 +17,10 @@
|
||||
#include <op_shell_parameter.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbCreator;
|
||||
class MATH_CLASS MbSNameMaker;
|
||||
class MATH_CLASS MbFaceShell;
|
||||
struct MATH_CLASS NurbsSurfaceValues;
|
||||
class MbCreator;
|
||||
class MbSNameMaker;
|
||||
class MbFaceShell;
|
||||
struct NurbsSurfaceValues;
|
||||
class IProgressIndicator;
|
||||
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
#include <vector>
|
||||
|
||||
|
||||
class MATH_CLASS MbCurve3D;
|
||||
class MbCurve3D;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
#include <op_shell_parameter.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbCurve3D;
|
||||
class MATH_CLASS MbCurveEdge;
|
||||
class MATH_CLASS MbFaceShell;
|
||||
class MbCurve3D;
|
||||
class MbCurveEdge;
|
||||
class MbFaceShell;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -18,11 +18,11 @@
|
||||
#include <op_shell_parameter.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbFaceShell;
|
||||
class MATH_CLASS MbCurveEdge;
|
||||
class MATH_CLASS MbOrientedEdge;
|
||||
class MATH_CLASS MbLoop;
|
||||
struct MATH_CLASS RuledSurfaceValues;
|
||||
class MbFaceShell;
|
||||
class MbCurveEdge;
|
||||
class MbOrientedEdge;
|
||||
class MbLoop;
|
||||
struct RuledSurfaceValues;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
#include <cr_face_fillet_maker.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbFaceShell;
|
||||
class MATH_CLASS MbFaceFilletMaker;
|
||||
class MbFaceShell;
|
||||
class MbFaceFilletMaker;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
@@ -31,10 +31,10 @@ class MATH_CLASS MbFaceFilletMaker;
|
||||
*/
|
||||
// ---
|
||||
class MATH_CLASS MbSectionShell : public MbCreator {
|
||||
|
||||
protected :
|
||||
MbSectionData sectionData; ///< \ru Данные о поверхности переменного сечения. \en Data about mutable section surface.
|
||||
MbFaceFilletMaker::MbeModifySolidOption cutOption; ///< \ru Способ подрезки базовых объектов скруглением. \en The method for cutting the base objects with the fillet.
|
||||
c3d::IndicesVector partsIndicies;///< \ru Индексы частей скругления, которыми подрезать базовые объекты. \en Indices of the fillet parts by which to cut the base objects.
|
||||
MbSectionData sectionData; ///< \ru Данные о поверхности переменного сечения. \en Data about mutable section surface.
|
||||
c3d::IndicesVector partsIndicies;///< \ru Индексы частей скругления, которыми подрезать базовые объекты. \en Indices of the fillet parts by which to cut the base objects.
|
||||
|
||||
/** \brief \ru Конструктор.
|
||||
\en Constructor. \~
|
||||
@@ -43,7 +43,7 @@ protected :
|
||||
\param[in] names - \ru Именователь грани оболочки.
|
||||
\en Generating face names. \~
|
||||
*/
|
||||
MbSectionShell( const MbSectionData & data, MbFaceFilletMaker::MbeModifySolidOption option, const c3d::IndicesVector & indices = c3d::IndicesVector() );
|
||||
MbSectionShell( const MbSectionData & data, const c3d::IndicesVector & indices = c3d::IndicesVector() );
|
||||
private :
|
||||
MbSectionShell( const MbSectionShell & init, MbRegDuplicate * ireg );
|
||||
// \ru Объявление конструктора копирования без реализации, чтобы не было копирования по умолчанию. \en Declaration without implementation of the copy-constructor to prevent copying by default.
|
||||
@@ -86,11 +86,9 @@ public :
|
||||
\{ */
|
||||
/// \ru Дать параметры. \en Get the parameters.
|
||||
const MbSectionData & GetSectionData() { return sectionData; }
|
||||
MbFaceFilletMaker::MbeModifySolidOption & GetCutOption() { return cutOption; }
|
||||
const c3d::IndicesVector & GetIndices() { return partsIndicies; }
|
||||
/// \ru Установить параметры. \en Set the parameters.
|
||||
void SetSectionData( const MbSectionData & data ) { sectionData = data; }
|
||||
void SetCutOption( MbFaceFilletMaker::MbeModifySolidOption option ) { cutOption = option; }
|
||||
void SetIndices( const c3d::IndicesVector & indices ) { partsIndicies = indices; }
|
||||
/** \} */
|
||||
|
||||
@@ -138,15 +136,16 @@ DEPRECATE_DECLARE_REPLACE( Create with MbFaceFilletMaker )
|
||||
The function simultaneously creates the shell and its constructor.\n \~
|
||||
\param[in] fMaker - \ru Генератор скруглений граней.
|
||||
\en Maker of faces fillets. \~
|
||||
\param[in] option - \ru Способ подрезки базовых объектов скруглением.
|
||||
\en The method for cutting the base objects with the fillet. \~
|
||||
\param[in] option - \ru Опция выбора результата.
|
||||
\en Option for the result selection. \~
|
||||
\param[in] indices - \ru Индексы частей скругления, которыми подрезать базовые объекты. Если массив индексов пустой, то выполняется подрезка всеми частями скругления.
|
||||
\en Indices of the fillet parts by which to cut the base objects. If indices array is empty then performed cutting with the all parts of the fillet. \~
|
||||
\result \ru Возвращает строитель.
|
||||
\en Returns the constructor of operation. \~
|
||||
*/
|
||||
static
|
||||
c3d::CreatorSPtr Create( const MbFaceFilletMaker & fMaker, MbFaceFilletMaker::MbeModifySolidOption option, const c3d::IndicesVector & indices = c3d::IndicesVector() );
|
||||
c3d::CreatorSPtr Create( const MbFaceFilletMaker & fMaker,
|
||||
const c3d::IndicesVector & indices = c3d::IndicesVector() );
|
||||
|
||||
private :
|
||||
// \ru Объявление оператора присваивания без реализации, чтобы не было присваивания по умолчанию. \en The declaration of the assignment operator without implementation to prevent an assignment by default.
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#include <op_shell_parameter.h>
|
||||
|
||||
|
||||
struct MATH_CLASS MbSheetMetalBend;
|
||||
struct MbSheetMetalBend;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
#include <creator.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbFaceShell;
|
||||
class MATH_CLASS MbSolid;
|
||||
class MbFaceShell;
|
||||
class MbSolid;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \brief \ru Строитель оболочки тела без истории.
|
||||
|
||||
@@ -26,15 +26,15 @@
|
||||
|
||||
class reader;
|
||||
class writer;
|
||||
class MATH_CLASS MbProperties;
|
||||
class MATH_CLASS MbCartPoint3D;
|
||||
class MATH_CLASS MbAxis3D;
|
||||
class MATH_CLASS MbSpaceItem;
|
||||
class MATH_CLASS MbCurve;
|
||||
class MATH_CLASS MbSurfaceIntersectionCurve;
|
||||
class MATH_CLASS MbSNameMaker;
|
||||
class MATH_CLASS MbSolid;
|
||||
struct MATH_CLASS MbControlData3D;
|
||||
class MbProperties;
|
||||
class MbCartPoint3D;
|
||||
class MbAxis3D;
|
||||
class MbSpaceItem;
|
||||
class MbCurve;
|
||||
class MbSurfaceIntersectionCurve;
|
||||
class MbSNameMaker;
|
||||
class MbSolid;
|
||||
struct MbControlData3D;
|
||||
class MbRegDuplicate;
|
||||
class MbRegTransform;
|
||||
enum MbeSenseValue;
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#include <sheet_metal_param.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbPlacement3D;
|
||||
class MbPlacement3D;
|
||||
class MATH_CLASS MbCurveBoundedSurface;
|
||||
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
//#include <surf_plane.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbRemoveOperationResultParams;
|
||||
class MbRemoveOperationResultParams;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
#include <templ_rp_array.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbCartPoint;
|
||||
class MATH_CLASS MbSurface;
|
||||
class MbCartPoint;
|
||||
class MbSurface;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
#include <creator.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbSymmetrySolidParams;
|
||||
class MbSymmetrySolidParams;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#include <templ_dptr.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbTrimmedWireFrameParams;
|
||||
class MbTrimmedWireFrameParams;
|
||||
class MbTrimmedWireFrameInfo;
|
||||
|
||||
|
||||
|
||||
@@ -18,15 +18,15 @@
|
||||
#include <mb_operation_result.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbCurve;
|
||||
class MATH_CLASS MbAxis3D;
|
||||
class MATH_CLASS MbSpaceItem;
|
||||
class MATH_CLASS MbPlacement3D;
|
||||
class MATH_CLASS MbCurve3D;
|
||||
class MATH_CLASS MbFace;
|
||||
class MATH_CLASS MbSolid;
|
||||
class MATH_CLASS MbSNameMaker;
|
||||
struct MATH_CLASS MbMergingFlags;
|
||||
class MbCurve;
|
||||
class MbAxis3D;
|
||||
class MbSpaceItem;
|
||||
class MbPlacement3D;
|
||||
class MbCurve3D;
|
||||
class MbFace;
|
||||
class MbSolid;
|
||||
class MbSNameMaker;
|
||||
struct MbMergingFlags;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
#include <topology_faceset.h>
|
||||
#include <name_item.h>
|
||||
|
||||
class MATH_CLASS MbVertex;
|
||||
class MATH_CLASS MbCurveEdge;
|
||||
class MbVertex;
|
||||
class MbCurveEdge;
|
||||
class MATH_CLASS MbPointFrame;
|
||||
class MATH_CLASS MbWireFrame;
|
||||
class MATH_CLASS MbCreator;
|
||||
|
||||
@@ -17,19 +17,19 @@
|
||||
#include <vector>
|
||||
|
||||
|
||||
class MATH_CLASS reader;
|
||||
class MATH_CLASS writer;
|
||||
class MATH_CLASS IProgressIndicator;
|
||||
class MATH_CLASS MbCartPoint3D;
|
||||
class MATH_CLASS MbVector3D;
|
||||
class MATH_CLASS MbAxis3D;
|
||||
class MATH_CLASS MbMatrix3D;
|
||||
class MATH_CLASS MbSpaceItem;
|
||||
class MATH_CLASS MbFaceShell;
|
||||
class reader;
|
||||
class writer;
|
||||
class IProgressIndicator;
|
||||
class MbCartPoint3D;
|
||||
class MbVector3D;
|
||||
class MbAxis3D;
|
||||
class MbMatrix3D;
|
||||
class MbSpaceItem;
|
||||
class MbFaceShell;
|
||||
class MATH_CLASS MbWireFrame;
|
||||
class MATH_CLASS MbPointFrame;
|
||||
class MATH_CLASS MbProperties;
|
||||
struct MATH_CLASS MbControlData3D;
|
||||
class MbProperties;
|
||||
struct MbControlData3D;
|
||||
class MbRegDuplicate;
|
||||
class MbRegTransform;
|
||||
enum MbeCopyMode;
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
#include <mb_dim_accuracy.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbLine;
|
||||
class MATH_CLASS MbContour;
|
||||
class MbLine;
|
||||
class MbContour;
|
||||
class MbTrimmedCurve;
|
||||
class MbRect1D;
|
||||
class DiskreteLengthData;
|
||||
|
||||
@@ -21,7 +21,7 @@ constexpr size_t CONIC_COUNT = 32;
|
||||
constexpr size_t LINES_COUNT = 10;
|
||||
|
||||
|
||||
class MATH_CLASS MbArc;
|
||||
class MbArc;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
#include <curve3d.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbNurbs3D;
|
||||
class MATH_CLASS MbNurbs;
|
||||
class MbNurbs3D;
|
||||
class MbNurbs;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
#include <mb_dim_accuracy.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbArc;
|
||||
class MbArc;
|
||||
class MbRegDuplicate;
|
||||
class MbRegTransform;
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
#include <cur_polycurve3d.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbBezier;
|
||||
class MATH_CLASS MbArc3D;
|
||||
class MbBezier;
|
||||
class MbArc3D;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
#include <vector>
|
||||
|
||||
|
||||
class MATH_CLASS MbFunction;
|
||||
class MbFunction;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
#include <vector>
|
||||
|
||||
|
||||
class MATH_CLASS MbFunction;
|
||||
class MATH_CLASS MbCharacterCurve;
|
||||
class MbFunction;
|
||||
class MbCharacterCurve;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
#include <mb_cube_tree.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbArc;
|
||||
class MbArc;
|
||||
class SimpleNameArray;
|
||||
class MbCurveIntoNurbsInfo;
|
||||
|
||||
|
||||
@@ -315,8 +315,8 @@ public:
|
||||
|
||||
/// \ru Получить границы участков кривой, которые описываются одной аналитической функцией. \en Get the boundaries of the curve sections that are described by one analytical function. \~
|
||||
void GetAnalyticalFunctionsBounds( std::vector<double> & params ) const override;
|
||||
/// \ru Найти все особые точки функции кривизны кривой. \en Find all the special points of the curvature function of the curve.
|
||||
void GetCurvatureSpecialPoints( std::vector<c3d::DoublePair> & points ) const override;
|
||||
/// \ru Найти все особые точки функции кривизны кривой и вычислить значение потенциальной энергии кривой. \en Find all the special points of the curvature function of the curve and calculate potential energy of the curve.
|
||||
void GetCurvatureSpecialPoints( std::vector<c3d::DoublePair> & points, double * energy = nullptr ) const override;
|
||||
/// \ ru Определение точек излома контура. \en The determination of contour smoothness break points.
|
||||
void BreakPoints( std::vector<double> & vBreaks, double precision = ANGLE_REGION ) const override;
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#include <surf_plane.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbAxis3D;
|
||||
class MbAxis3D;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -16,12 +16,12 @@
|
||||
#include <cur_surface_curve.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbMatrix;
|
||||
class MATH_CLASS MbContour;
|
||||
class MATH_CLASS MbSurface;
|
||||
class MATH_CLASS MbSurfaceCurve;
|
||||
class MATH_CLASS MbContour3D;
|
||||
class MATH_CLASS MbCurveTessellation;
|
||||
class MbMatrix;
|
||||
class MbContour;
|
||||
class MbSurface;
|
||||
class MbSurfaceCurve;
|
||||
class MbContour3D;
|
||||
class MbCurveTessellation;
|
||||
class MbCurveIntoNurbsInfo;
|
||||
class MbSegmentsSearchTree;
|
||||
|
||||
@@ -204,8 +204,8 @@ public :
|
||||
|
||||
// \ru Получить границы участков кривой, которые описываются одной аналитической функцией. \en Get the boundaries of the curve sections that are described by one analytical function. \~
|
||||
void GetAnalyticalFunctionsBounds( std::vector<double> & params ) const override;
|
||||
// \ru Найти все особые точки функции кривизны кривой. \en Find all the special points of the curvature function of the curve.
|
||||
void GetCurvatureSpecialPoints( std::vector<c3d::DoublePair> & points ) const override;
|
||||
// \ru Найти все особые точки функции кривизны кривой и вычислить значение потенциальной энергии кривой. \en Find all the special points of the curvature function of the curve and calculate potential energy of the curve.
|
||||
void GetCurvatureSpecialPoints( std::vector<c3d::DoublePair> & points, double * energy = nullptr ) const override;
|
||||
// \ru Непрерывна ли первая производная? \en Have the first derivative the continuous?
|
||||
bool IsContinuousDerivative( bool & contLength, bool & contDirect, c3d::DoubleVector * params = nullptr, double epsilon = EPSILON ) const override;
|
||||
// \ru Устранить разрывы первых производных по длине. \en Eliminate the discontinuities of the first derivative at length.
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#include <cur_polycurve3d.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbHermit;
|
||||
class MbHermit;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#include <curve3d.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbLine;
|
||||
class MbLine;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#include <mb_rect1d.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbLine;
|
||||
class MbLine;
|
||||
class DiskreteLengthData;
|
||||
|
||||
|
||||
|
||||
@@ -14,9 +14,9 @@
|
||||
#include <curve3d.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbLineSegment;
|
||||
class MATH_CLASS MbLine3D;
|
||||
class MATH_CLASS MbCurveExtensionParameters;
|
||||
class MbLineSegment;
|
||||
class MbLine3D;
|
||||
class MbCurveExtensionParameters;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
#include <iterator>
|
||||
|
||||
|
||||
class MATH_CLASS MbLine;
|
||||
class MATH_CLASS MbBezier;
|
||||
class MATH_CLASS MbContour;
|
||||
class MbLine;
|
||||
class MbBezier;
|
||||
class MbContour;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
#include <iterator>
|
||||
|
||||
|
||||
class MATH_CLASS MbNurbs;
|
||||
class MATH_CLASS MbBezier3D;
|
||||
class MbNurbs;
|
||||
class MbBezier3D;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
#include <mb_cube.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbSpine;
|
||||
class MbSpine;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
#include <mb_cube.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbContour;
|
||||
class MbContour;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -14,9 +14,9 @@
|
||||
#include <vector>
|
||||
|
||||
|
||||
class MATH_CLASS MbLineSegment;
|
||||
class MATH_CLASS MbCubicSpline;
|
||||
class MATH_CLASS MbContour;
|
||||
class MbLineSegment;
|
||||
class MbCubicSpline;
|
||||
class MbContour;
|
||||
class MbRegDuplicate;
|
||||
class MbRegTransform;
|
||||
class MbPolylineSearchTree;
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
#include <vector>
|
||||
|
||||
|
||||
class MATH_CLASS MbPolyline;
|
||||
class MATH_CLASS MbItem;
|
||||
class MbPolyline;
|
||||
class MbItem;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -19,10 +19,10 @@
|
||||
#include <mb_cart_point3d.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbAxis3D;
|
||||
class MATH_CLASS MbMatrix3D;
|
||||
class MATH_CLASS MbCurve3D;
|
||||
class MATH_CLASS MbSurface;
|
||||
class MbAxis3D;
|
||||
class MbMatrix3D;
|
||||
class MbCurve3D;
|
||||
class MbSurface;
|
||||
class MbRegTransform;
|
||||
class MbRegDuplicate;
|
||||
class MbCurveIntoNurbsInfo;
|
||||
|
||||
@@ -168,9 +168,9 @@ public :
|
||||
bool NearPointProjection( const MbCartPoint3D &, double & t, bool ext, MbRect1D * tRange = nullptr ) const override;
|
||||
// \ru Определение точек касания изоклины \en Determination of tangent points of isocline
|
||||
void GetIsoclinal( const MbVector3D & nor, SArray<double> & tIso ) const override;
|
||||
/// \ru Найти все особые точки функции кривизны кривой.
|
||||
/// \en Find all the special points of the curvature function of the curve.
|
||||
void GetCurvatureSpecialPoints( std::vector<c3d::DoublePair> & points ) const override;
|
||||
/// \ru Найти все особые точки функции кривизны кривой и вычислить значение потенциальной энергии кривой.
|
||||
/// \en Find all the special points of the curvature function of the curve and calculate potential energy of the curve. \~
|
||||
void GetCurvatureSpecialPoints( std::vector<c3d::DoublePair> & points, double * energy = nullptr ) const override;
|
||||
/// \ ru Определение точек излома кривой. \en The determination of curve smoothness break points.
|
||||
void BreakPoints( std::vector<double> & vBreaks, double precision = ANGLE_REGION ) const override;
|
||||
|
||||
|
||||
@@ -186,7 +186,8 @@ private:
|
||||
MbeNewtonResult SilhouetteNewton( const MbCartPoint3D & point, const MbVector3D & vector,
|
||||
const MbRect & wrkRect, // \ru Рабочая область поиска \en Working region of search
|
||||
double funcEpsilon, size_t iterLimit,
|
||||
double & u, double & v ) const;
|
||||
double & u, double & v,
|
||||
MbCartPoint3D * pnt = nullptr ) const;
|
||||
|
||||
private:
|
||||
/// \ru Построить точную пространственную копию кривой. \en Construct the exact spatial curve copy.
|
||||
|
||||
@@ -19,13 +19,13 @@
|
||||
#include <surf_tessellation.h>
|
||||
|
||||
|
||||
class MATH_CLASS MbRect;
|
||||
class MATH_CLASS MbPlacement3D;
|
||||
class MATH_CLASS MbCurve;
|
||||
class MATH_CLASS MbSurface;
|
||||
class MbRect;
|
||||
class MbPlacement3D;
|
||||
class MbCurve;
|
||||
class MbSurface;
|
||||
class MATH_CLASS MbSurfaceIntersectionCurve;
|
||||
class MATH_CLASS MbContourOnSurface;
|
||||
class MATH_CLASS MbCurveTessellation;
|
||||
class MbCurveTessellation;
|
||||
class MbCurveIntoNurbsInfo;
|
||||
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user