diff --git a/C3d/Include/action_analysis.h b/C3d/Include/action_analysis.h index 0f6d40a..9b6fccd 100644 --- a/C3d/Include/action_analysis.h +++ b/C3d/Include/action_analysis.h @@ -531,7 +531,7 @@ private: OBVIOUS_PRIVATE_COPY( MbSurfacesJointAnalysisParams ) }; -//DEPRECATE_DECLARE_REPLACE( MbSurfacesJointAnalysisParams ) +DEPRECATE_DECLARE_REPLACE( MbSurfacesJointAnalysisParams ) typedef MbSurfacesJointAnalysisParams MbNormalsMinMaxAnglesParams; @@ -605,7 +605,7 @@ public: OBVIOUS_PRIVATE_COPY( MbSurfacesJointAnalysisResults ) }; -//DEPRECATE_DECLARE_REPLACE( MbSurfacesJointAnalysisResults ) +DEPRECATE_DECLARE_REPLACE( MbSurfacesJointAnalysisResults ) typedef MbSurfacesJointAnalysisResults MbNormalsMinMaxAnglesResults; diff --git a/C3d/Include/action_b_shaper.h b/C3d/Include/action_b_shaper.h index dc32c6b..d37f10b 100644 --- a/C3d/Include/action_b_shaper.h +++ b/C3d/Include/action_b_shaper.h @@ -18,6 +18,7 @@ #include #include #include +#include #include @@ -153,20 +154,36 @@ enum MbeRejectOutliersType // --- 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. + 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. + + ///< \ru Предельные значения параметров аналитических поверхностей. \en Tresholds 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. ) + : _surfaceType ( st_Undefined ) + , _tolerance ( c3d::DELTA_MIN ) + , _indicies ( ) + , _typeReject ( rot_NoReject ) + , _valueReject ( 0. ) + , _order ( c3d::NURBS_DEGREE ) + , _countCpMax ( c3d::NURBS_POINTS_MAX_COUNT ) + , _smoothCoef ( METRIC_ACCURACY ) + , _angleConeMin ( 1. ) + , _angleConeMax ( 89. ) + , _radiusAnalyticShapeMax( 1500. ) {} public: @@ -174,24 +191,80 @@ public: explicit MbSurfaceFitToGridParameters( MbeSpaceType surfaceType, double tolerance, const c3d::IndicesVector & indicies ) - : _surfaceType( surfaceType ) - , _tolerance ( tolerance ) - , _indicies ( indicies ) - , _typeReject ( rot_NoReject ) - , _valueReject( 0. ) + : _surfaceType ( surfaceType ) + , _tolerance ( tolerance ) + , _indicies ( indicies ) + , _typeReject ( rot_NoReject ) + , _valueReject ( 0. ) + , _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 ) + : _surfaceType ( surfaceType ) + , _tolerance ( tolerance ) + , _indicies ( indicies ) + , _typeReject ( rejectType ) + , _valueReject ( rejectValue ) + , _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 ) + , _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. ) + , _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. @@ -202,6 +275,32 @@ public: 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 Set tresholds 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; + } OBVIOUS_PRIVATE_COPY( MbSurfaceFitToGridParameters ) }; diff --git a/C3d/Include/action_mesh.h b/C3d/Include/action_mesh.h index 755c1f7..bb95f16 100644 --- a/C3d/Include/action_mesh.h +++ b/C3d/Include/action_mesh.h @@ -537,7 +537,7 @@ MATH_FUNC (MbResultType) MeshCutting( MbMesh & mesh, \en Returns operation result code. \~ \ingroup Polygonal_Objects */ // --- -//DEPRECATE_DECLARE +DEPRECATE_DECLARE MATH_FUNC (MbResultType) MeshSection( const MbMesh & mesh, const MbPlacement3D & place, RPArray & polylines ); diff --git a/C3d/Include/action_phantom.h b/C3d/Include/action_phantom.h index 0ab1a5f..5e90f3c 100644 --- a/C3d/Include/action_phantom.h +++ b/C3d/Include/action_phantom.h @@ -263,7 +263,7 @@ MATH_FUNC (MbResultType) OffsetPhantom( const MbSolid & solid, \ingroup Shell_Modeling */ // --- -//DEPRECATE_DECLARE_REPLACE(LocalCubePhantom with LocalCubePhantomParam) +DEPRECATE_DECLARE_REPLACE(LocalCubePhantom with LocalCubePhantomParam) MATH_FUNC (MbResultType) LocalCubePhantom( const MbSolid & solid, const MbPlacement3D & place, bool bScale, diff --git a/C3d/Include/action_sheet.h b/C3d/Include/action_sheet.h index 44d2da9..4ca51f9 100644 --- a/C3d/Include/action_sheet.h +++ b/C3d/Include/action_sheet.h @@ -953,8 +953,8 @@ MATH_FUNC (MbResultType) CutSolidArrayByBorders( MbSolid & \en - The operation result code. \~ \ingroup Sheet_Metal_Modeling */ -//DEPRECATE_DECLARE_REPLACE( CreateStampParts with 'MbStampPartsParams' argument ) // --- +DEPRECATE_DECLARE_REPLACE( CreateStampParts with 'MbStampPartsParams' argument ) MATH_FUNC (MbResultType) CreateStampParts( const MbFace * face, const MbPlacement3D & placement, const MbContour & contour, @@ -1031,7 +1031,7 @@ MATH_FUNC (MbResultType) CreateStampParts( const MbPlacement3D & placement, \ingroup Sheet_Metal_Modeling */ // --- -//DEPRECATE_DECLARE_REPLACE( StampWithToolSolid with 'MbStampWithToolPartsParams' argument ) +DEPRECATE_DECLARE_REPLACE( CreateStampWithToolSolidParts with 'MbStampWithToolPartsParams' argument ) MATH_FUNC(MbResultType) CreateStampWithToolSolidParts( MbSolid & solid, MbeCopyMode sameShell, const MbFace & targetFace, @@ -1096,7 +1096,7 @@ MATH_FUNC(MbResultType) CreateStampWithToolSolidParts( const c3d::SolidSPtr & \ingroup Sheet_Metal_Modeling */ // --- -//DEPRECATE_DECLARE_REPLACE( NormalizeCutSides with 'MbNormalizeCutSidesParams' argument ) +DEPRECATE_DECLARE_REPLACE( NormalizeCutSides with 'MbNormalizeCutSidesParams' argument ) MATH_FUNC(MbResultType) NormalizeCutSides ( MbSolid & solid, MbeCopyMode sameShell, const MbSNameMaker & nameMaker, @@ -1161,7 +1161,7 @@ MATH_FUNC(MbResultType) NormalizeCutSides ( MbSolid & so \ingroup Sheet_Metal_Modeling */ // --- -//DEPRECATE_DECLARE_REPLACE( Stamp with 'MbStampParams' argument ) +DEPRECATE_DECLARE_REPLACE( Stamp with 'MbStampParams' argument ) MATH_FUNC (MbResultType) Stamp( MbSolid & solid, MbeCopyMode sameShell, const MbFace & face, @@ -1236,7 +1236,7 @@ MATH_FUNC (MbResultType) Stamp( const c3d::SolidSPtr & solid, \ingroup Sheet_Metal_Modeling */ // --- -//DEPRECATE_DECLARE_REPLACE( StampWithToolSolid with 'MbStampWithToolParams' argument ) +DEPRECATE_DECLARE_REPLACE( StampWithToolSolid with 'MbStampWithToolParams' argument ) MATH_FUNC( MbResultType ) StampWithToolSolid( MbSolid & solid, MbeCopyMode sameShell, const MbFace & targetFace, @@ -1328,8 +1328,8 @@ MATH_FUNC (MbResultType) CreateSphericalStampParts( const MbSphericalStampPartsP \en - The operation result code. \~ \ingroup Sheet_Metal_Modeling */ -//DEPRECATE_DECLARE_REPLACE( CreateSphericalStampParts with 'MbSphericalStampPartsParams' argument ) // --- +DEPRECATE_DECLARE_REPLACE( CreateSphericalStampParts with 'MbSphericalStampPartsParams' argument ) MATH_FUNC (MbResultType) CreateSphericalStampParts( const MbFace * face, const MbPlacement3D & placement, const MbStampingValues & params, @@ -1343,6 +1343,7 @@ MATH_FUNC (MbResultType) CreateSphericalStampParts( const MbFace * fac //------------------------------------------------------------------------------ // устаревшая // --- +DEPRECATE_DECLARE MATH_FUNC (MbResultType) CreateSphericalStampParts( const MbPlacement3D & placement, const MbStampingValues & params, const double thickness, @@ -1406,7 +1407,7 @@ MATH_FUNC (MbResultType) SphericalStamp( const c3d::SolidSPtr & solid, \ingroup Sheet_Metal_Modeling */ // --- -//DEPRECATE_DECLARE_REPLACE( SphericalStamp with 'MbSphericalStampParams' argument ) +DEPRECATE_DECLARE_REPLACE( SphericalStamp with 'MbSphericalStampParams' argument ) MATH_FUNC (MbResultType) SphericalStamp( MbSolid & solid, MbeCopyMode sameShell, const MbFace & face, @@ -2069,7 +2070,7 @@ MATH_FUNC (bool) CalculateConicAxisLine( const MbFace & face, \ingroup Sheet_Metal_Modeling */ // --- -//DEPRECATE_DECLARE_REPLACE( BuildBends3DCenterlines with MbBends3DLinesParams ) +DEPRECATE_DECLARE_REPLACE( BuildBends3DCenterlines with MbBends3DLinesParams ) MATH_FUNC (bool) BuildBends3DAxisLines( const RPArray & bendFaces, RPArray & axisLineSegments ); @@ -2090,7 +2091,7 @@ MATH_FUNC (bool) BuildBends3DAxisLines( const RPArray & bendFac \ingroup Sheet_Metal_Modeling */ // --- -//DEPRECATE_DECLARE_REPLACE( BuildBends3DCenterlines with MbBends3DLinesParams ) +DEPRECATE_DECLARE_REPLACE( BuildBends3DCenterlines with MbBends3DLinesParams ) MATH_FUNC (bool) BuildBends3DCenterlines( const RPArray & bendFaces, RPArray & centerlines ); @@ -2576,7 +2577,7 @@ private: \ingroup Sheet_Metal_Modeling */ // --- -//DEPRECATE_DECLARE_REPLACE( SheetRibParts with MbSheetRibSolidParams ) +DEPRECATE_DECLARE_REPLACE( SheetRibParts with MbSheetRibSolidParams ) MATH_FUNC (MbResultType) SheetRibParts( MbSolid & solid, MbeCopyMode sameShell, const MbPlacement3D & place, @@ -2649,7 +2650,7 @@ MATH_FUNC (MbResultType) SheetRibParts( const c3d::SolidSPtr & solid, \ingroup Sheet_Metal_Modeling */ // --- -//DEPRECATE_DECLARE_REPLACE( SheetRibSolid with MbSheetRibSolidParams ) +DEPRECATE_DECLARE_REPLACE( SheetRibSolid with MbSheetRibSolidParams ) MATH_FUNC (MbResultType) SheetRibSolid( MbSolid & solid, MbeCopyMode sameShell, const MbPlacement3D & place, @@ -2807,7 +2808,7 @@ MATH_FUNC (MbResultType) RemoveOperationResult( MbSolid & \ingroup Sheet_Metal_Modeling */ // --- -//DEPRECATE_DECLARE_REPLACE( ConvertSolidToSheetMetal with 'MbSolidToSheetMetalParams' argument ) +DEPRECATE_DECLARE_REPLACE( ConvertSolidToSheetMetal with 'MbSolidToSheetMetalParams' argument ) MATH_FUNC (MbResultType) ConvertSolidToSheetMetal( MbSolid & solid, const MbeCopyMode sameShell, const MbFace & initFace, diff --git a/C3d/Include/cdet_utility.h b/C3d/Include/cdet_utility.h index c9679f6..2464abe 100644 --- a/C3d/Include/cdet_utility.h +++ b/C3d/Include/cdet_utility.h @@ -91,7 +91,7 @@ public: \en The value compItem can be CDET_NULL. This just means that the instance does not belong to any component. */ - cdet_item AddInstance( cdet_item compItem, cdet_item solidItem, const MbPlacement3D & place ); + cdet_item AddInstance( cdet_item compItem, cdet_item solidItem, const MbPlacement3D & place ); /** \brief \ru Удалить геометрический объект из набора для контроля столкновений. \en Remove a geometric object from the set of collision detection. \~ diff --git a/C3d/Include/conv_annotation_item.h b/C3d/Include/conv_annotation_item.h index 3f20ebc..e9da7f9 100644 --- a/C3d/Include/conv_annotation_item.h +++ b/C3d/Include/conv_annotation_item.h @@ -491,12 +491,6 @@ public: /// \ru Получить ЛСК. \en Get LCS. MbPlacement3D GetLocation() const; - /// \ru Задать имя. \en Specify name. - DEPRECATE_DECLARE_REPLACE( SetC3dName ) void SetName( const std::string & nm ); - - /// \ru Получить имя. \en Specify name. - DEPRECATE_DECLARE_REPLACE ( GetC3dName ) void GetName( std::string & nm ) const; - /// \ru Задать имя. \en Specify name. void SetC3dName ( const c3d::string_t& nm ); diff --git a/C3d/Include/conv_exchange_settings.h b/C3d/Include/conv_exchange_settings.h index 215d581..2db5ed7 100644 --- a/C3d/Include/conv_exchange_settings.h +++ b/C3d/Include/conv_exchange_settings.h @@ -498,24 +498,9 @@ public: virtual bool AddRemovedFacesAsShells() const { return false; } /// \ru Получить генератор однострочного идентификтора изделия. \en Get generator of one-line product identifier. virtual SPtr ProductIdentifierGenerator() const { return SPtr(); } - - /** \brief \ru Проводить ли аудит траснляции. - \en Whether to audit the translation. \~ - \details \ru Замещена GetDebugSettings::enableCERRout. - \en GetDebugSettings::enableCERRout should be used instead. \~ - \note \ru ТОЛЬКО ДЛЯ РАЗРАБОТЧИКОВ. - \en DEVELOPERS ONLY \~. - - */ - DEPRECATE_DECLARE virtual bool TotalAudit() const { return false; } // 16.06.2021. GetDebugSettings - /// \ru Получить настройки для выдачи отладочной информации. \en Get the settings of debug info. virtual C3DConverterDebugSettings GetDebugSettings() const { return C3DConverterDebugSettings(); }; - - /// \ru Следует ли формировать атрибут на основе идентификатора элемнта в файле. \en Whether to attatch the element's id in file as attribute. - DEPRECATE_DECLARE_REPLACE( GetDebugSettings ) virtual bool AttatchIdAttributes() const { return true; } - - /// \ru Получить пользовательский преобразователь строк. \en Get user string transformer. + /// \ru Получить пользовательский преобразователь строк. \en Get user string transformer. virtual SPtr GetUserCharEncodingTransformer() const { return SPtr(nullptr); } }; // IConvertorProperty3D diff --git a/C3d/Include/conv_model_document.h b/C3d/Include/conv_model_document.h index cd87918..4c5edf7 100644 --- a/C3d/Include/conv_model_document.h +++ b/C3d/Include/conv_model_document.h @@ -267,59 +267,6 @@ public: /// \ru Задать технические требования. \en Set technical requirements. virtual void SetRequirements( const AnnotationSptrVector & ) = 0; - /// \ru Наименование. \en Name. - - /// \ru Задать имя документа. \en Set document's name. \~ \deprecated \ru Метод устарел 06.05.2020. \en The method is deprecated 06.05.2020. - DEPRECATE_DECLARE virtual bool SetName( const std::string& /*name*/ ) { return false; }; - /// \ru Получить имя документа. \en Get document's name. \~ \deprecated \ru Метод устарел 06.05.2020. \en The method is deprecated 06.05.2020. - DEPRECATE_DECLARE virtual std::string Name() const { return std::string(); }; - - /// \ru Обозначение. \en Marking. - - /// \ru Задать обозначение документа. \en Set document marking. \~ \deprecated \ru Метод устарел 06.05.2020. \en The method is deprecated 06.05.2020. - DEPRECATE_DECLARE virtual bool SetMarking( const std::string& /*name*/ ) { return false; }; - /// \ru Получить обозначение документа. \en Get document marking. \~ \deprecated \ru Метод устарел 06.05.2020. \en The method is deprecated 06.05.2020. - DEPRECATE_DECLARE virtual std::string Marking() const { return std::string(); }; - - /// \ru Автор. \en Author. - - /// \ru Задать имя автора. \en Set author's name. \~ \deprecated \ru Метод устарел 06.05.2020. \en The method is deprecated 06.05.2020. - DEPRECATE_DECLARE virtual bool SetAuthor( const std::string& /*name*/ ) { return false; }; - /// \ru Получить имя автора. \en Get author's name. \~ \deprecated \ru Метод устарел 06.05.2020. \en The method is deprecated 06.05.2020. - DEPRECATE_DECLARE virtual std::string Author() const { return std::string(); }; - - /// \ru Организация. \en Organization. - - /// \ru Задать имя автора. \en Set author's name. \~ \deprecated \ru Метод устарел 06.05.2020. \en The method is deprecated 06.05.2020. - DEPRECATE_DECLARE virtual bool SetOrganization( const std::string& /*name*/ ) { return false; }; - /// \ru Получить имя автора. \en Get author's name. \~ \deprecated \ru Метод устарел 06.05.2020. \en The method is deprecated 06.05.2020. - DEPRECATE_DECLARE virtual std::string Organization() const { return std::string(); }; - - /// \ru Комментарий. \en Comment. - - /// \ru Задать комментарии. \en Set the comments. \~ \deprecated \ru Метод устарел 06.05.2020. \en The method is deprecated 06.05.2020. - DEPRECATE_DECLARE virtual bool SetComments( const std::vector< std::string > & /*comments*/ ) { return false; }; - /// \ru Получить следующий комментарий. \en Get the next comment. \~ \deprecated \ru Метод устарел 06.05.2020. \en The method is deprecated 06.05.2020. - DEPRECATE_DECLARE virtual std::vector< std::string > GetComments( ) const { return std::vector< std::string >(); }; - - /// \ru Цвет сборки, детали или вставки. \en Color of an assembly, a part or an instance. - - /// \ru Задать цветовые свойства. \en Set color properties. \~ \deprecated \ru Метод устарел 06.05.2020. \en The method is deprecated 06.05.2020. - DEPRECATE_DECLARE virtual bool SetColor( const MbAttributeContainer & ) { return false; }; - /// \ru Получить цветовые свойства. \en Get color properties. \~ \deprecated \ru Метод устарел 06.05.2020. \en The method is deprecated 06.05.2020. - DEPRECATE_DECLARE virtual bool GetColor( MbAttributeContainer & ) const { return false; }; - - /// \ru Цвет тела. \en Solid color. - - /// \ru Задать цветовые свойства оболочки. \en Set color properties of a shell. \~ \deprecated \ru Метод устарел 06.05.2020. \en The method is deprecated 06.05.2020. - DEPRECATE_DECLARE virtual bool SetColor( const MbAttributeContainer &, size_t ) { return false; }; - - /// \ru Цвет грани. \en Face color. - - /// \ru Задать цветовые свойства грани \en Set color properties of a face. \~ \deprecated \ru Метод устарел 06.05.2020. \en The method is deprecated 06.05.2020. - DEPRECATE_DECLARE virtual bool SetColor( const MbAttributeContainer &, const MbName & ) { return false; }; - /// \ru Получить цветовые свойства грани. \en Get color properties of a face. \~ \deprecated \ru Метод устарел 06.05.2020. \en The method is deprecated 06.05.2020. - DEPRECATE_DECLARE virtual bool GetColor( MbAttributeContainer &, const MbName & ) const { return false; }; }; @@ -586,4 +533,4 @@ public: }; -#endif // __CONV_MODEL_DOCUMENT_H \ No newline at end of file +#endif // __CONV_MODEL_DOCUMENT_H diff --git a/C3d/Include/conv_model_exchange.h b/C3d/Include/conv_model_exchange.h index ac4750d..58fdce8 100644 --- a/C3d/Include/conv_model_exchange.h +++ b/C3d/Include/conv_model_exchange.h @@ -27,6 +27,7 @@ class ItModelDocument; class IConvertorProperty3D; class IConfigurationSelector; class IAttributeNamesCollector; +class IConverterEventLogger; /** \addtogroup Exchange_Interface @@ -426,9 +427,9 @@ namespace c3d { \en Converter's interface implements methods of export of the model to files of exchange formats and import from them. \~ */ -class IConvertor3D { +class IConverter3D { public: - virtual ~IConvertor3D() {} + virtual ~IConverter3D() = default; public: /** \brief \ru Установить обработчик для выбора конфигураций. @@ -446,6 +447,14 @@ public: */ virtual void SetConfgiurationSelector( SPtr configuration_selector ) = 0; + /** \brief \ru Установить обработчик для логирования. + \en Set logging handler. \~ + \param[in] importEventLogger - \ru Указатель на устанавливаемый обработчик. + \en Pointer to handler to be set. \~ + */ + virtual void SetDeveloperEventLogger( SPtr importEventLogger ) = 0; + + /** \brief \ru Прочитать файл формата SAT. \en Read a file of SAT format. \~ \details \ru Прочитать файл формата SAT или указанный поток. @@ -908,7 +917,9 @@ public: */ virtual MbeConvResType ImportFromFile( ItModelDocument& mDoc, const c3d::path_string& filePath, IConvertorProperty3D* prop = nullptr, IProgressIndicator* indicator = nullptr ) = 0; -}; // IConvertor3D +}; // IConverter3D + +typedef IConverter3D IConvertor3D; //------------------------------------------------------------------------------ @@ -916,7 +927,7 @@ public: \en Get the converter interface. \~ \ingroup Exchange_Interface */ -CONV_FUNC( IConvertor3D* ) GetConvertor3D(); +CONV_FUNC( IConverter3D* ) GetConverter3D(); //------------------------------------------------------------------------------ @@ -924,7 +935,24 @@ CONV_FUNC( IConvertor3D* ) GetConvertor3D(); \en Release the converter interface. \~ \ingroup Exchange_Interface */ -CONV_FUNC( void ) ReleaseConvertor3D( IConvertor3D* ); +CONV_FUNC( void ) ReleaseConverter3D( IConverter3D* ); + + + +//------------------------------------------------------------------------------ +/** \brief \ru Получить интерфейс конвертера. + \en Get the converter interface. \~ +\ingroup Exchange_Interface +*/ +inline IConverter3D* GetConvertor3D() { return GetConverter3D(); } + + +//------------------------------------------------------------------------------ +/** \brief \ru Освободить интерфейс конвертера. + \en Release the converter interface. \~ +\ingroup Exchange_Interface +*/ +inline void ReleaseConvertor3D( IConverter3D* convInstance ) { ReleaseConverter3D( convInstance ); } /** \brief \ru Прочитать файл формата SAT. @@ -1215,113 +1243,6 @@ CONV_FUNC( MbeConvResType ) ASCIIPointCloudRead( IConvertorProperty3D& prop, ItM CONV_FUNC( MbeConvResType ) ASCIIPointCloudWrite( IConvertorProperty3D& prop, ItModelDocument& idoc, IProgressIndicator* indicator = 0 ); -namespace c3d { - - /** \brief \ru Импортировать данные из буфера в модель. - \en Import data from buffer into model. \~ - \deprecated \ru Метод устарел 26.06.2020. \en The method is deprecated 26.06.2020. \~ - \param[out] model - \ru Модель. - \en The model. \~ - \param[in] data - \ru Буфер. - \en Buffer. \~ - \param[in] length - \ru Размер буфера. - \en Buffer size. \~ - \param[in] modelFormat - \ru Формат модели. - \en Model format. \~ - \param[in] prop - \ru Реализация интерфейса свойств конвертера. - \en Implementation of converter's properties interface. \~ - \param[in] indicator - \ru Индикатор хода процесса. - \en The process progress indicator. \~ - \return \ru Код завершения операции. - \en Code of the operation termination. \~ - \ingroup Exchange_Interface - */ - DEPRECATE_DECLARE CONV_FUNC( MbeConvResType ) ImportFromBuffer( MbModel& model, - const char* data, - size_t length, - MbeModelExchangeFormat modelFormat, - IConvertorProperty3D* prop = 0, - IProgressIndicator* indicator = 0 ); - - /** \brief \ru Импортировать данные из буфера в модель. - \en Import data from buffer into model. \~ - \deprecated \ru Метод устарел 26.06.2020. \en The method is deprecated 26.06.2020. \~ - \param[out] item - \ru Замещаемый элемент. - \en The item to replace. \~ - \param[in] data - \ru Буфер. - \en Buffer. \~ - \param[in] length - \ru Размер буфера. - \en Buffer size. \~ - \param[in] modelFormat - \ru Формат модели. - \en Model format. \~ - \param[in] prop - \ru Реализация интерфейса свойств конвертера. - \en Implementation of converter's properties interface. \~ - \param[in] indicator - \ru Индикатор хода процесса. - \en The process progress indicator. \~ - \return \ru Код завершения операции. - \en Code of the operation termination. \~ - \ingroup Exchange_Interface - */ - DEPRECATE_DECLARE CONV_FUNC( MbeConvResType ) ImportFromBuffer( c3d::ItemSPtr& item, - const char* data, - size_t length, - MbeModelExchangeFormat modelFormat, - IConvertorProperty3D* prop = nullptr, IProgressIndicator* indicator = nullptr ); - - /** \brief \ru Экспортировать модель в буфер. - \en Export model into buffer. \~ - \deprecated \ru Метод устарел 26.06.2020. \en The method is deprecated 26.06.2020. \~ - \param[in] model - \ru Модель. - \en The model. \~ - \param[in] modelFormat - \ru Формат модели. - \en Model format. \~ - \param[out] data - \ru Буфер. - \en Buffer. \~ - \param[out] length - \ru Размер буфера. - \en Buffer size. \~ - \param[in] prop - \ru Реализация интерфейса свойств конвертера. - \en Implementation of converter's properties interface. \~ - \param[in] indicator - \ru Индикатор хода процесса. - \en The process progress indicator. \~ - \return \ru Код завершения операции. - \en Code of the operation termination. \~ - \ingroup Exchange_Interface - */ - DEPRECATE_DECLARE CONV_FUNC( MbeConvResType ) ExportIntoBuffer( MbModel& model, - MbeModelExchangeFormat modelFormat, - char*& data, - size_t& length, - IConvertorProperty3D* prop = 0, - IProgressIndicator* indicator = 0 ); - - - /** \brief \ru Экспортировать модель в буфер. - \en Export model into buffer. \~ - \deprecated \ru Метод устарел 26.06.2020. \en The method is deprecated 26.06.2020. \~ - \param[in] item - \ru Экспортируемый элемент. - \en The item to export. \~ - \param[in] modelFormat - \ru Формат модели. - \en Model format. \~ - \param[out] data - \ru Буфер. - \en Buffer. \~ - \param[out] length - \ru Размер буфера. - \en Buffer size. \~ - \param[in] prop - \ru Реализация интерфейса свойств конвертера. - \en Implementation of converter's properties interface. \~ - \param[in] indicator - \ru Индикатор хода процесса. - \en The process progress indicator. \~ - \return \ru Код завершения операции. - \en Code of the operation termination. \~ - \ingroup Exchange_Interface - */ - DEPRECATE_DECLARE CONV_FUNC( MbeConvResType ) ExportIntoBuffer( MbItem& item, MbeModelExchangeFormat modelFormat, - char*& data, - size_t& length, - IConvertorProperty3D* prop = nullptr, IProgressIndicator* indicator = nullptr ); - -} - - /** \} */ diff --git a/C3d/Include/conv_requestor.h b/C3d/Include/conv_requestor.h index 49ac239..806ac05 100644 --- a/C3d/Include/conv_requestor.h +++ b/C3d/Include/conv_requestor.h @@ -91,4 +91,17 @@ public: }; +//------------------------------------------------------------------------------ +/** +\brief \ru Интерфейс запроса отладочного вывода. + \en Debug output request interface \~ +*/ +// --- +class IConverterEventLogger : public MbRefItem +{ +public: + virtual bool WriteToLog( const char * ) = 0; +}; + + #endif // __CONV_REQUESTOR_H diff --git a/C3d/Include/cr_duplication_solid.h b/C3d/Include/cr_duplication_solid.h index fbcb362..d7a838f 100644 --- a/C3d/Include/cr_duplication_solid.h +++ b/C3d/Include/cr_duplication_solid.h @@ -95,7 +95,7 @@ IMPL_PERSISTENT_OPS( MbDuplicationSolid ) \en Returns the constructor if the operation has been successfully performed. \~ \ingroup Solid_Modeling */ -//DEPRECATE_DECLARE_REPLACE(CreateDuplication with MbDuplicationSolidParams) +DEPRECATE_DECLARE_REPLACE(CreateDuplication with MbDuplicationSolidParams) MATH_FUNC (MbCreator *) CreateDuplication( const MbFaceShell & solid, const DuplicationValues & params, const MbSNameMaker & operNames, diff --git a/C3d/Include/cr_elementary_solid.h b/C3d/Include/cr_elementary_solid.h index 9b78f50..d502a24 100644 --- a/C3d/Include/cr_elementary_solid.h +++ b/C3d/Include/cr_elementary_solid.h @@ -215,7 +215,7 @@ MbElementarySolid::MbElementarySolid( const PointsVector & pnts, ElementaryShell \ingroup Solid_Modeling */ // --- -//DEPRECATE_DECLARE_REPLACE( CreateElementary with MbElementarySolidParams ) +DEPRECATE_DECLARE_REPLACE( CreateElementary with MbElementarySolidParams ) MATH_FUNC (MbCreator *) CreateElementary( const SArray & points, const ElementaryShellType t, const MbSNameMaker & n, @@ -247,7 +247,7 @@ MATH_FUNC (MbCreator *) CreateElementary( const SArray & points, \ingroup Solid_Modeling */ // --- -//DEPRECATE_DECLARE_REPLACE( CreateElementary with MbElementarySolidParams ) +DEPRECATE_DECLARE_REPLACE( CreateElementary with MbElementarySolidParams ) MATH_FUNC (MbCreator *) CreateElementary( const MbElementarySurface & surface, const MbSNameMaker & n, MbResultType & res, diff --git a/C3d/Include/gc_api.h b/C3d/Include/gc_api.h index d1fa809..4d47159 100644 --- a/C3d/Include/gc_api.h +++ b/C3d/Include/gc_api.h @@ -60,11 +60,9 @@ private: */ //---------------------------------------------------------------------------------------- -/** - \brief \ru Состояние определенности системы геометрических ограничений. - \en Difinition State of geometric constraints system. -*/ -//--- +/** \brief \ru Состояние определенности системы геометрических ограничений. + \en Difinition State of geometric constraints system. +*/ //--- typedef enum { GCE_STATE_Unknown = 0 ///< \ru О состоянии ничего не известно. \en State is unknown. @@ -104,13 +102,12 @@ GCE_FUNC(bool) GCE_CheckPointSatisfaction( GCE_system gSys, geom_item pnt, point DEPRECATE_DECLARE GCE_FUNC(GCE_s_state) GCE_StateOfSystem( GCE_system gSys ); //---------------------------------------------------------------------------------------- -/** - \brief \ru Выдать состояние определенности системы ограничений. - \en Get constraint system definition state. +/** \brief \ru Выдать состояние определенности системы ограничений. + \en Get constraint system definition state. - \param[in] gSys - \ru Система ограничений. + \param[in] gSys - \ru Система ограничений. \en System of constraints. \~ - \details + \details \ru Функция вернет состояние #GCE_STATE_Underconstrained, если имеется хотя бы один геометрический объект с ненулевой степенью свободы. Состояние #GCE_STATE_WellConstrained означает, что геометрия полностью определена, а другое diff --git a/C3d/Include/gce_api.h b/C3d/Include/gce_api.h index 6a3876a..098570a 100644 --- a/C3d/Include/gce_api.h +++ b/C3d/Include/gce_api.h @@ -1510,19 +1510,19 @@ GCE_FUNC(constraint_item) GCE_FixVariable( GCE_system gSys, var_item var ); GCE_FUNC(constraint_item) GCE_FixGeom( GCE_system gSys, geom_item g ); //---------------------------------------------------------------------------------------- -/** \brief \ru Задать ограничение "Фиксированная длина отрезка" - \en Set the constraint "Fixation of segment length" \~ +/** \brief \ru Задать ограничение "Фиксированная длина кривой" + \en Set the constraint "Fixation of curve length" \~ \param[in] gSys - \ru Система ограничений. \en System of constraints. \~ - \param[in] ls - \ru Дескриптор отрезка. - \en Descriptor of segment. \~ + \param[in] ls - \ru Дескриптор кривой. + \en Descriptor of curve. \~ \return \ru Дескриптор нового ограничения. \en Descriptor of a new constraint. \~ \details \ru У кривой должны быть начальная и конечная точки (#GCE_FIRST_END и #GCE_SECOND_END). - Ограничение поддерживается для линейных объектов и дуг окружностей. + Ограничение поддерживается для линейных объектов, дуг окружностей и сплайнов. \en The curve must have a start and end points (#GCE_FIRST_END и #GCE_SECOND_END). - Constraint is supported for linear objects and circular arcs.\~ + Constraint is supported for linear objects circular arcs and splines.\~ */ //--- GCE_FUNC(constraint_item) GCE_FixLength( GCE_system gSys, geom_item ls ); diff --git a/C3d/Include/gce_types.h b/C3d/Include/gce_types.h index 60e6613..c55f6b7 100644 --- a/C3d/Include/gce_types.h +++ b/C3d/Include/gce_types.h @@ -228,25 +228,37 @@ typedef enum //--- typedef enum { - GCE_RESULT_None = 0, ///< \ru Нет результата (пустое сообщение). \en No result (empty message). - GCE_RESULT_Ok = 1, ///< \ru Успешный результат. \en Successful result. - GCE_RESULT_Satisfied = 1, ///< \ru Ограничение удовлетворено. \en The constraint is satisfied. - GCE_RESULT_Not_Satisfied = 2, ///< \ru Система ограничений не решена. \en The system of constraints is not solved. - GCE_RESULT_Overconstrained = 3, ///< \ru Переопределенная (несовместная) система ограничений. \en Overdetermined (inconsistent) system of constraints. - GCE_RESULT_InvalidGeometry = 4, ///< \ru Решение привело к нарушению геометрии. \en Solution leaded to violation of geometry. - GCE_RESULT_MovingOfFixedGeom = 5, ///< \ru Попытка перемещения фиксированного объекта. \en Attempt of a fixed object translation. - GCE_RESULT_Unregistered = 6, ///< \ru Обращение к недействительному объекту. \en Access to invalid object. - GCE_RESULT_SystemError = 7, ///< \ru Внутренняя системная ошибка. \en Internal system error. - GCE_RESULT_NullSystem = 8, ///< \ru Обращение к недействительной системе ограничений. \en Access to invalid system of constraints. - GCE_RESULT_CircleCantStretched = 9, ///< \ru Окружность не может быть масштабирована с разными коэффициентами по осям (растяжение). \en The circle can't be scaled with different scaling factors for each axis (stretching). - GCE_RESULT_SingularMatrix = 10, ///< \ru Прислали вырожденную матрицу трансформации. \en A singular transform matrix was received. - GCE_RESULT_DegenerateScalingFactor = 11, ///< \ru Вырожденный коэффициент масштабирования. \en Degenerate scaling factor. - GCE_RESULT_InvalidDimensionTransform = 12, ///< \ru Неудачное преобразование размера. \en Invalid dimension transformation. - GCE_RESULT_Aborted = 13, ///< \ru Процесс вычислений был прерван по запросу приложения. \en The evaluation process aborted by the application. \~ - GCE_RESULT_IsNotDrivingDimension = 14, ///< \ru Данное ограничение должно быть управляющим размером. \en Given constraint should be a driving dimension. - GCE_RESULT_UnsupportedConstraint = 15, ///< \ru На геометрические объекты было наложено невозможное ограничение. \en An impossible constraint was set on geometric objects. - GCE_RESULT_AnisotropicScaling = 16, ///< \ru Анизотропное масштабирование. \en Anisotropic scaling. - GCE_RESULT_OverconstrainedInstance = 17, ///< \ru Попытка подчинить экземпляр более, чем одному паттерну. \en An attempt to make an instance patterned on more than one pattern. + /* + Evaluation results. + */ + GCE_RESULT_None ///< \ru Нет результата (пустое сообщение). \en No result (empty message). + , GCE_RESULT_Ok ///< \ru Успешный результат. \en Successful result. + , GCE_RESULT_Satisfied = GCE_RESULT_Ok ///< \ru Ограничение удовлетворено. \en The constraint is satisfied. + , GCE_RESULT_Not_Satisfied ///< \ru Система ограничений не решена. \en The system of constraints is not solved. + , GCE_RESULT_Overconstrained ///< \ru Переопределенная (несовместная) система ограничений. \en Overdetermined (inconsistent) system of constraints. + , GCE_RESULT_InvalidGeometry ///< \ru Решение привело к нарушению геометрии. \en Solution leaded to violation of geometry. + + /* + Data validation errors. + */ + , GCE_RESULT_MovingOfFixedGeom ///< \ru Попытка перемещения фиксированного объекта. \en Attempt of a fixed object translation. + , GCE_RESULT_CircleCantStretched ///< \ru Окружность не может быть масштабирована с разными коэффициентами по осям (растяжение). \en The circle can't be scaled with different scaling factors for each axis (stretching). + , GCE_RESULT_SingularMatrix ///< \ru Прислали вырожденную матрицу трансформации. \en A singular transform matrix was received. + , GCE_RESULT_DegenerateScalingFactor ///< \ru Вырожденный коэффициент масштабирования. \en Degenerate scaling factor. + , GCE_RESULT_InvalidDimensionTransform ///< \ru Неудачное преобразование размера. \en Invalid dimension transformation. + , GCE_RESULT_IsNotDrivingDimension ///< \ru Данное ограничение должно быть управляющим размером. \en Given constraint should be a driving dimension. + , GCE_RESULT_UnsupportedConstraint ///< \ru На геометрические объекты было наложено невозможное ограничение. \en An impossible constraint was set on geometric objects. + , GCE_RESULT_AnisotropicScaling ///< \ru Анизотропное масштабирование. \en Anisotropic scaling. + , GCE_RESULT_OverconstrainedInstance ///< \ru Попытка подчинить экземпляр более, чем одному паттерну. \en An attempt to make an instance patterned on more than one pattern. + + /* + System errors. + */ + , GCE_RESULT_SystemError ///< \ru Внутренняя системная ошибка. \en Internal system error. + , GCE_RESULT_NullSystem ///< \ru Обращение к недействительной системе ограничений. \en Access to invalid system of constraints. + , GCE_RESULT_Unregistered ///< \ru Обращение к недействительному объекту. \en Access to invalid object. + , GCE_RESULT_Aborted ///< \ru Процесс вычислений был прерван по запросу приложения. \en The evaluation process aborted by the application. \~ + } GCE_result; //---------------------------------------------------------------------------------------- diff --git a/C3d/Include/gcm_constraint.h b/C3d/Include/gcm_constraint.h index 14be7c2..d32ddf6 100644 --- a/C3d/Include/gcm_constraint.h +++ b/C3d/Include/gcm_constraint.h @@ -9,12 +9,14 @@ #define __GCM_CONSTRAINT_H #include +#include #include #include #include -class MbTopologyItem; -class MtConstraintNode; +class MbTopologyItem; +class MtConstraintNode; +struct CNodesRange; /** \addtogroup GCM_3D_ObjectAPI @@ -31,6 +33,10 @@ struct GCM_CLASS GCM_geom_axis GCM_geom_axis() : axis( MbVector3D::zero ) , geomPtr( nullptr ) {} + + GCM_geom_axis( const MbVector3D & axis, const ItGeom * g ) + : axis( axis ) + , geomPtr( g ) {} }; @@ -508,6 +514,52 @@ inline MtArgument ItConstraintItem::GeomArg( int geomN ) const return MtArgument( GeomItem(geomN), SubGeom(geomN) ); } +//---------------------------------------------------------------------------------------- +/** \brief \ru Диапазон из набора геометрических ограничений. + \en The range of the geometric constraints set. \~ + \note it is for testing purposes. +*/ +//--- +class GCM_CLASS GeConstraintsRange +{ +public: + struct constraint_t: public MtObjectId {}; + using value_type = constraint_t; +public: + GeConstraintsRange(); + GeConstraintsRange( const GeConstraintsRange & ); + GeConstraintsRange( const MtConstraintSystem & ); + GeConstraintsRange & operator = ( const GeConstraintsRange & ); +public: + bool empty() const; + size_t size() const; + GeConstraintsRange & drop_front(); + GeConstraintsRange & drop_back(); + GCM_constraint frontId() const; + GCM_constraint backId() const; +private: + SPtr m_pOwner; + CNodesRange * m_pImpl; +}; + +//---------------------------------------------------------------------------------------- +// Get a range to traverse constraints of the system. +// for testing only. +//--- +GCM_FUNC(GeConstraintsRange) GCM_GetConstraints( GCM_system gSys ); + +//---------------------------------------------------------------------------------------- +// Get unified data record of a geometric constraint. +// for testing only. +//--- +GCM_FUNC(GCM_c_record) GCM_ConstraintRecord( GCM_system gSys, GCM_constraint conId ); + +//---------------------------------------------------------------------------------------- +// Get S-expression of a geometric constraint. +// for testing only. +//--- +GCM_FUNC(std::string&) GCM_SExprRecord( GCM_system gSys, GCM_constraint conId, std::string& str ); + #endif // __GCM_CONSTRAINT_H // eof diff --git a/C3d/Include/gcm_manager.h b/C3d/Include/gcm_manager.h index 38bb560..ff76cf0 100644 --- a/C3d/Include/gcm_manager.h +++ b/C3d/Include/gcm_manager.h @@ -700,20 +700,21 @@ private: //---------------------------------------------------------------------------------------- /** \brief \ru Создать объектно-ориентированный интерфейс 3D солвера. \en Create an object-oriented interface of 3D solver. \~ - \details \ru Вызов создает пустую систему ограничений. Кроме того, в памяти - создаются внутренние структуры данных геометрического решателя, обслуживающего - систему ограничений. Функция возвращает экземпляр класса, представляющего - объектно-ориентированный интерфейс солвера. - \en The call creates an empty constraint system. Besides, there are created - internal data structures of geometric solver maintaining the system of constraints. - The function returns an instance of class representing an object-oriented interface - of the 3D solver. \~ + + \param[in] pMan - \ru Интерфейс, предоставляющий функции репозиции геометрических объектов на стороне приложения. + \en Interface that provides functions of reposition of geometric objects on the application side. \~ + \details \ru Вызов создает пустую систему ограничений. Кроме того, в памяти создаются + внутренние структуры данных геометрического решателя, обслуживающего систему ограничений. + Функция возвращает экземпляр класса, представляющего объектно-ориентированный интерфейс солвера. + \en The call creates an empty constraint system. Besides, there are created internal + data structures of geometric solver maintaining the constraint system. The function returns + an instance of class representing an object-oriented interface of the 3D solver. \~ - \return \ru Решатель геометрических ограничений. - \en A geometric constraint solver. \~ + \return \ru Указатель (с автоматическим подсчетом ссылок) на новый экземпляр геометрического решателя. + \en Smart-pointer to a new instance of geometric constraint solver. \~ */ //--- -GCM_FUNC(SPtr) GCM_CreateSolver( SPtr ); +GCM_FUNC(SPtr) GCM_CreateSolver( SPtr pMan ); //---------------------------------------------------------------------------------------- /** \brief \ru Выдать решатель для данной системы геометрических ограничений. diff --git a/C3d/Include/gcm_routines.h b/C3d/Include/gcm_routines.h index faa9044..e69686b 100644 --- a/C3d/Include/gcm_routines.h +++ b/C3d/Include/gcm_routines.h @@ -161,21 +161,6 @@ struct GCM_CLASS MtADimensionTraits {} }; -//---------------------------------------------------------------------------------------- -/** \brief \ru Создать Интерфейс геометрического решателя. - \en Create interface of geometric solver. \~ - \details \ru Функция возвращает smart-pointer интерфейса решателя. - \en The function returns smart-pointer of solver Interface. \~ - \param[in] pMan - \ru Интерфейс клиентского приложения, предоставляющий - функции репозиции геометрических объектов на стороне клиента. - \en Interface of the client application that provides - functions of reposition of geometric objects on the client side. \~ - \return \ru smart-pointer на экземпляр геометрического решателя. - \en smart-pointer to an instance of geometric solver. \~ -*/ -//--- -GCM_FUNC(SPtr) CreateSolver( ItPositionManager & pMan ); - //---------------------------------------------------------------------------------------- /** \brief \ru Автоматически назначить тип сопряжению для его аргументов. \en Automatically assign the mate type for its arguments. \~ @@ -483,6 +468,44 @@ GCM_FUNC(size_t) VolumeOfAlignOption( const ItConstraintItem & ); /** \} */ // GCM_3D_Routines +//---------------------------------------------------------------------------------------- +// for testing only. +//--- +GCT_FUNC(bool) CheckSatisfaction( GCM_system ); + +//---------------------------------------------------------------------------------------- +// for testing only. +//--- +GCT_FUNC(size_t) GetGeomsCount( GCM_system ); + +//---------------------------------------------------------------------------------------- +// for testing only. +//--- +GCT_FUNC(size_t) GetConstraintsCount( GCM_system ); + +//---------------------------------------------------------------------------------------- +// Get a range to traverse constraints of the system. +//--- +GCT_FUNC(void) GCM_GetConstraints( GCM_system gSys, CNodeIterator & begIter, CNodeIterator & endIter ); + +//---------------------------------------------------------------------------------------- +// Callback function for logging messages from the solver. +//--- +typedef void ( *GCM_log_func )( GCM_journal, GCM_log_type logType, const char* recStr ); + +//---------------------------------------------------------------------------------------- +/** \brief \ru Выдать журнал записывающий вызовы Solver API, а также другие события, имеющие отношение к взаимодействием с солвером. + \en Get a logger that recording API calls, as well as other events related to interaction with the solver. \~ + \note \ru Вызов используется пока только для тестовых целей. Может быть изменен или удален из API в следующих ревизиях. + \en The call is used for testing purposes only. It may be changed or removed in future revisions. \~ +*/ +//--- +GCM_FUNC(GCM_journal) GCM_SubscribeJournal( GCM_system gSys, GCM_log_func logFunc, GCM_extra_param extParam ); + +/* + * Deprecated calls. + */ + //---------------------------------------------------------------------------------------- // for internal use only // \en This call is out of date, it will be removed in 2023. \~ @@ -490,24 +513,11 @@ GCM_FUNC(size_t) VolumeOfAlignOption( const ItConstraintItem & ); DEPRECATE_DECLARE GCM_FUNC(MtResultCode3D) AdHocDiagnose(GCM_system, const ItGeom*); //---------------------------------------------------------------------------------------- -// for testing only +/** \brief The deprecated version of GCM_CreateSolver. + \note The call is deprecated. Use GCM_CreateSolver instead. It will be removed in 2024. +*/ //--- -GCT_FUNC(bool) CheckSatisfaction( GCM_system ); - -//---------------------------------------------------------------------------------------- -// for testing only -//--- -GCT_FUNC(size_t) GetGeomsCount( GCM_system ); - -//---------------------------------------------------------------------------------------- -// for testing only -//--- -GCT_FUNC(size_t) GetConstraintsCount( GCM_system ); - -//---------------------------------------------------------------------------------------- -// Get a range to traverse constraints of the system -//--- -GCT_FUNC(void) GCM_GetConstraints( GCM_system gSys, CNodeIterator & begIter, CNodeIterator & endIter ); +DEPRECATE_DECLARE GCM_FUNC(SPtr) CreateSolver( ItPositionManager & ); #endif // __GCM_ROUTINES_H diff --git a/C3d/Include/gcm_types.h b/C3d/Include/gcm_types.h index 66e1f80..93d9072 100644 --- a/C3d/Include/gcm_types.h +++ b/C3d/Include/gcm_types.h @@ -461,8 +461,8 @@ typedef enum //--- struct GCM_CLASS GCM_extra_param { - size_t funcId; // integral identifier of a user-defined callback - void * funcData; // pointer to an application data structure + size_t funcId; // Integral identifier of a user-defined callback. + void * funcData; // Pointer to an application data structure. GCM_extra_param() { funcId = 0, funcData = 0; } }; @@ -593,6 +593,34 @@ inline const uint32 & _id( const MtObjectId & obj ) { return obj; } #endif // GCM_ID_TYPE + +//---------------------------------------------------------------------------------------- +// It represents a journal that logs Solver API transactions. +//--- +struct ItJrnLogger; + +//---------------------------------------------------------------------------------------- +// It represents a journal that logs Solver API transactions. +//--- +typedef struct +{ + const ItJrnLogger * logger; // Internal C3D Solver logger. + GCM_extra_param extra; // Callback extra data interpreted in the application side. +} GCM_journal; + +//---------------------------------------------------------------------------------------- +// Type of log string. +//--- +typedef enum +{ + GCM_LOG_JournalLine /// \ru Строка отчета о вызове Solver API. \en Reporting string about the Solver API call. + , GCM_LOG_Message /// \ru Строка передает некоторое информативное сообщение. \en The string notifies that something informative happend. + , GCM_LOG_Error /// \ru Строка извещает об ошибочной ситуации. \en Error notification. +} GCM_log_type; + +//---------------------------------------------------------------------------------------- +// +//--- typedef GCM_alignment MtAlignType; typedef GCM_g_type MtGeometryType; typedef GCM_result MtResultCode3D; diff --git a/C3d/Include/lump.h b/C3d/Include/lump.h index d7ddddd..d038370 100644 --- a/C3d/Include/lump.h +++ b/C3d/Include/lump.h @@ -117,7 +117,7 @@ public: /// \ru Инициализировать тело и матрицу. \en Initialize solid and matrix. void SetSolid( const MbSolid & solid, const MbMatrix3D & from, bool changed = true ); /// \ru Получить тело. \en Get solid. - //DEPRECATE_DECLARE_REPLACE( GetItem ) + DEPRECATE_DECLARE_REPLACE( GetItem ) const MbSolid & GetSolid() const; /// \ru Инициализировать тело и матрицу. \en Initialize solid and matrix. void SetMesh( const MbMesh & mesh, const MbMatrix3D & from, bool changed = true ); diff --git a/C3d/Include/map_thread.h b/C3d/Include/map_thread.h index a12d28f..b78b9dc 100644 --- a/C3d/Include/map_thread.h +++ b/C3d/Include/map_thread.h @@ -43,11 +43,11 @@ public: \param[in] lump - \ru Тело с матрицей преобразования. \en A solid with a matrix of transformation. \~ */ - //DEPRECATE_DECLARE_REPLACE( ThreadMapperStruct with 'MbSolid' ) + DEPRECATE_DECLARE_REPLACE( ThreadMapperStruct with 'MbSolid' ) ThreadMapperStruct( const MbThread & thr, const MbLump & lump, const VERSION ver = Math::DefaultMathVersion() ) : thread ( thr ) - , solid ( lump.GetSolid() ) + , solid ( static_cast(lump.GetItem()) ) , matrFrom ( lump.GetMatrixFrom() ) , placeView ( ) , thrMapType( tmt_CompleteView ) @@ -88,11 +88,11 @@ public: \param[in] tmType - \ru Тип отображения резьбы. \en A type of thread mapping. \~ */ - //DEPRECATE_DECLARE_REPLACE( ThreadMapperStruct with 'MbSolid' ) + DEPRECATE_DECLARE_REPLACE( ThreadMapperStruct with 'MbSolid' ) ThreadMapperStruct( const MbThread & thr, const MbLump & lump, const MbPlacement3D & plView, MbeThrMapType tmType, const VERSION ver = Math::DefaultMathVersion() ) : thread ( thr ) - , solid ( lump.GetSolid() ) + , solid ( static_cast(lump.GetItem()) ) , matrFrom ( lump.GetMatrixFrom() ) , placeView ( plView ) , thrMapType( tmType ) diff --git a/C3d/Include/math_version.h b/C3d/Include/math_version.h index 803b128..9a4a063 100644 --- a/C3d/Include/math_version.h +++ b/C3d/Include/math_version.h @@ -92,6 +92,7 @@ #define MATH_21_UHF_VERSION 0x15000011L ///< \ru Версия файла - 21.0 UHF (Upper Hot Fix). \en The file version - 21.0 UHF (Upper Hot Fix). \~ \ingroup Base_Tools #define C3D_2022_VERSION 0x15001001L ///< \ru Версия файла - C3D 2022. \en The file version - C3D 2021. \~ \ingroup Base_Tools #define MATH_22_VERSION 0x16000001L ///< \ru Версия файла - 22.0. \en The file version - 22.0. \~ \ingroup Base_Tools +#define MATH_22_HF1_VERSION 0x16000002L ///< \ru Версия файла - 22.0 HF1. \en The file version - 22.0 HF1. \~ \ingroup Base_Tools #define MATH_22_UHF_VERSION 0x16000011L ///< \ru Версия файла - 22.0 UHF (Upper Hot Fix). \en The file version - 22.0 UHF (Upper Hot Fix). \~ \ingroup Base_Tools diff --git a/C3d/Include/mb_axis3d.h b/C3d/Include/mb_axis3d.h index 67d933c..f7b8de9 100644 --- a/C3d/Include/mb_axis3d.h +++ b/C3d/Include/mb_axis3d.h @@ -88,6 +88,8 @@ public : /// \ru Проекция точки на ось. \en The point projection on the axis. double PointProjection( const MbCartPoint3D & p0, MbCartPoint3D & proj ) const; + /// \ru Проекция точки на ось. \en The point projection on the axis. + double PointProjection( const MbCartPoint3D & p0 ) const; /// \ru Проверка соосности. \en The check of complanarity. bool Complanar ( const MbPlacement3D & p, double eps = Math::angleRegion ) const; /// \ru Проверка коллинеарности осей. \en The check of axes collinearity. diff --git a/C3d/Include/mb_cube_tree.h b/C3d/Include/mb_cube_tree.h index 00ca336..7eaace5 100644 --- a/C3d/Include/mb_cube_tree.h +++ b/C3d/Include/mb_cube_tree.h @@ -1207,11 +1207,14 @@ inline void MbCubeTree::GetIntersectObjects( const Po Point segmPnt1( rayPnt1 ), segmPnt2( rayPnt2 ); double segmLen = segmPnt1.DistanceToPoint( segmPnt2 ); + double sameEps = std_min( eps, LENGTH_EPSILON ); + sameEps = std_max( sameEps, EXTENT_EPSILON ); + C3D_ASSERT( !branchCube.IsEmpty() ); - C3D_ASSERT( !rayPnt1.IsSame( rayPnt2, eps ) ); + C3D_ASSERT( !rayPnt1.IsSame( rayPnt2, sameEps ) ); if ( isBranch || isLeaf ) { - if ( !branchCube.IsEmpty() && !rayPnt1.IsSame( rayPnt2, eps ) ) { + if ( !branchCube.IsEmpty() && !rayPnt1.IsSame( rayPnt2, sameEps ) ) { Vector rayVect( rayPnt1, rayPnt2 ); { double rayLen = rayVect.Length(); diff --git a/C3d/Include/mb_operation_result.h b/C3d/Include/mb_operation_result.h index 2030d26..08e8438 100644 --- a/C3d/Include/mb_operation_result.h +++ b/C3d/Include/mb_operation_result.h @@ -280,6 +280,8 @@ enum MbResultType { rt_NonBijectiveFunc, ///< \ru Отображение множества значений параметра функции во множество значений параметра кривой не является взаимно однозначным. \en A map from function parameter range to curve parameter range is not bijective. + rt_LicenseError, ///< \ru Ошибка лицензии: неправильная или истекшая лицензия. \en License error: wrong or expired license. + // \ru !!! СТРОКИ ВСТАВЛЯТЬ СТРОГО ПЕРЕД ЭТОЙ СТРОКОЙ !!!! \en !!! INSERT LINES STRICTLY BEFORE THIS LINE !!!! rt_ErrorTotal // \ru НИЖЕ НЕ ДОБАВЛЯТЬ! \en DON'T ADD BELOW! }; diff --git a/C3d/Include/op_swept_parameter.h b/C3d/Include/op_swept_parameter.h index c8ddbdc..ad5bce7 100644 --- a/C3d/Include/op_swept_parameter.h +++ b/C3d/Include/op_swept_parameter.h @@ -2023,11 +2023,16 @@ public: const MbCurve3D * GetSpine() const { return spine.get(); } MbCurve3D * SetSpine() { return spine.get(); } - /// \ru Выдать форму сечения поверхности. \en Get cross-section shape. +DEPRECATE_DECLARE_REPLACE( GetSectionForm ) MbeSectionShape GetForm() const { return form; } - /// \ru Установить форму сечения поверхности. \en Set cross-section shape. +DEPRECATE_DECLARE_REPLACE( SetSectionForm ) void SetForm( MbeSectionShape f ) { form = f; } + /// \ru Выдать форму сечения поверхности. \en Get cross-section shape. + MbeSectionShape GetSectionForm() const { return form; } + /// \ru Установить форму сечения поверхности. \en Set cross-section shape. + void SetSectionForm( MbeSectionShape f ) { form = f; } + ///< \ru Данные начального края сечения. \en The data of the begining of section. MbSectionRail & GetRrail1() { return rail1; } ///< \ru Данные конечного края сечения. \en The data of the end of section. diff --git a/C3d/Include/surf_section_surface.h b/C3d/Include/surf_section_surface.h index 19d5491..81c60a2 100644 --- a/C3d/Include/surf_section_surface.h +++ b/C3d/Include/surf_section_surface.h @@ -385,6 +385,8 @@ public: /// \ru Дать образующую кривую при form==cs_Shape (для других форм nullptr). \en Get forming curve for form==cs_Shape (nullptr on other case). const MbPolyCurve * GetPattern() const { return pattern; } /// \ru Дать форму сечения поверхности при фиксированном втором параметре. \en Get the surface cross-section shape with the second parameter fixed. + MbeSectionShape GetSectionForm() const { return form; } +DEPRECATE_DECLARE_REPLACE( GetSectionForm ) MbeSectionShape GetForm() const { return form; } /// \ru Дать параметры опорной кривой, для которых направляющие терпят излом. \en Get parameters of the reference curve for which the guides have a break. void GetBreakVParams( std::vector & vParams ) const; diff --git a/C3d/Include/tool_enabler.h b/C3d/Include/tool_enabler.h index 2b6bf3a..9f5a8b7 100644 --- a/C3d/Include/tool_enabler.h +++ b/C3d/Include/tool_enabler.h @@ -101,6 +101,17 @@ extern "C" MATH_FUNC (bool) IsMathBShaperEnable(); extern "C" MATH_FUNC (bool) IsMathCollisionEnable(); +//------------------------------------------------------------------------------ +/** \brief \ru Проверить контроллер защиты FairCurve моделировщика. + \en Check the controller of the FairCurve modeler. \~ + \details \ru Проверить контроллер защиты FairCurve моделировщика. + \en Check the controller of the FairCurve modeler. \~ + \ingroup Base_Tools +*/ +// --- +extern "C" MATH_FUNC (bool) IsMathFairCurveEnable(); + + //------------------------------------------------------------------------------ /** \brief \ru Отпустить контролера работы модулей ядра. \en Free the controller of the kernel modules work. \~ diff --git a/C3d/Lib/x32/Debug/c3d.lib b/C3d/Lib/x32/Debug/c3d.lib index 16f807f..59298a7 100644 Binary files a/C3d/Lib/x32/Debug/c3d.lib and b/C3d/Lib/x32/Debug/c3d.lib differ diff --git a/C3d/Lib/x32/Release/c3d.lib b/C3d/Lib/x32/Release/c3d.lib index 0437b8e..2cb61ca 100644 Binary files a/C3d/Lib/x32/Release/c3d.lib and b/C3d/Lib/x32/Release/c3d.lib differ diff --git a/C3d/Lib/x64/Debug/c3d.lib b/C3d/Lib/x64/Debug/c3d.lib index 1e10696..b008b92 100644 Binary files a/C3d/Lib/x64/Debug/c3d.lib and b/C3d/Lib/x64/Debug/c3d.lib differ diff --git a/C3d/Lib/x64/Release/c3d.lib b/C3d/Lib/x64/Release/c3d.lib index e77b6db..680682a 100644 Binary files a/C3d/Lib/x64/Release/c3d.lib and b/C3d/Lib/x64/Release/c3d.lib differ