From 9b2d995ef5703f895fb54e9f42478a1d62b61443 Mon Sep 17 00:00:00 2001 From: SaraP Date: Wed, 2 Apr 2025 08:30:05 +0200 Subject: [PATCH] Extern : - C3d aggiornamento librerie ( 118029). --- C3d/Include/action_b_shaper.h | 2 +- C3d/Include/action_polymesh.h | 22 ++ C3d/Include/action_solid.h | 2 +- C3d/Include/alg_curve_distance.h | 4 +- C3d/Include/alg_polyline.h | 2 +- C3d/Include/assembly.h | 10 +- C3d/Include/ats_check.h | 2 +- C3d/Include/attr_hotpoint_attribute.h | 2 +- C3d/Include/attr_user_attribute.h | 6 +- C3d/Include/attribute_item.h | 4 +- C3d/Include/cdet_data.h | 12 +- C3d/Include/contour_graph.h | 2 +- C3d/Include/conv_model_document.h | 57 ++-- C3d/Include/conv_requestor.h | 55 +++- C3d/Include/cr_attribute_provider.h | 2 +- C3d/Include/cr_stamp_bead_solid.h | 2 +- C3d/Include/cr_stamp_jalousie_solid.h | 2 +- C3d/Include/cr_stamp_solid.h | 2 +- C3d/Include/cr_stamp_spherical_solid.h | 2 +- C3d/Include/creator.h | 6 +- C3d/Include/creator_transaction.h | 4 +- C3d/Include/cur_contour.h | 2 +- C3d/Include/cur_contour3d.h | 2 +- C3d/Include/cur_contour_on_surface.h | 52 ++-- C3d/Include/cur_contour_with_breaks.h | 4 +- C3d/Include/cur_projection_curve.h | 10 +- C3d/Include/cur_surface_curve.h | 4 +- C3d/Include/cur_surface_intersection.h | 29 ++- C3d/Include/curve.h | 10 +- C3d/Include/curve3d.h | 6 +- C3d/Include/function.h | 2 +- C3d/Include/gce_api.h | 49 +++- C3d/Include/gce_types.h | 16 +- C3d/Include/halfedge.h | 16 +- C3d/Include/halfedge_element.h | 1 + C3d/Include/halfedge_range_iterators.h | 1 - C3d/Include/halfedge_segm_range_iterators.h | 272 ++++++++++++++++++++ C3d/Include/instance_item.h | 4 +- C3d/Include/io_tape_define.h | 6 +- C3d/Include/lump.h | 2 +- C3d/Include/math_version.h | 7 +- C3d/Include/mb_cart_point.h | 4 +- C3d/Include/mb_cart_point3d.h | 4 +- C3d/Include/mb_cube.h | 4 +- C3d/Include/mb_data.h | 10 +- C3d/Include/mb_enum.h | 5 +- C3d/Include/mb_homogeneous.h | 2 +- C3d/Include/mb_matrix.h | 2 +- C3d/Include/mb_matrix3d.h | 2 +- C3d/Include/mb_nurbs_function.h | 14 +- C3d/Include/mb_placement3d.h | 10 +- C3d/Include/mb_property.h | 12 +- C3d/Include/mb_rect.h | 4 +- C3d/Include/mb_smooth_nurbs_fit_curve.h | 6 +- C3d/Include/mb_variables.h | 2 +- C3d/Include/mb_vector.h | 12 +- C3d/Include/mesh.h | 2 +- C3d/Include/mesh_float_point3d.h | 2 +- C3d/Include/mesh_halfedge_attr.h | 9 + C3d/Include/mesh_halfedge_attr_base.h | 1 + C3d/Include/mesh_primitive.h | 8 +- C3d/Include/mesh_triangle.h | 2 +- C3d/Include/model_item.h | 2 +- C3d/Include/name_item.h | 20 +- C3d/Include/op_binding_data.h | 6 +- C3d/Include/op_curve_parameter.h | 119 +++++++-- C3d/Include/op_direct_mod_parameter.h | 8 +- C3d/Include/op_polymesh_parameter.h | 70 ++++- C3d/Include/op_shell_parameter.h | 217 +++++++++++++++- C3d/Include/op_swept_parameter.h | 45 +++- C3d/Include/plane_instance.h | 2 +- C3d/Include/point_frame.h | 2 +- C3d/Include/reference_item.h | 2 +- C3d/Include/solid.h | 4 +- C3d/Include/space_instance.h | 2 +- C3d/Include/space_item.h | 4 +- C3d/Include/surf_channel_surface.h | 80 +++--- C3d/Include/surf_fillet_surface.h | 231 ++++++++++++++--- C3d/Include/surf_section_surface.h | 2 +- C3d/Include/surf_spine.h | 2 +- C3d/Include/templ_sptr.h | 2 +- C3d/Include/tool_multithreading.h | 2 +- C3d/Include/topology.h | 14 +- C3d/Include/topology_faceset.h | 12 +- C3d/Include/topology_item.h | 2 +- C3d/Include/wire_frame.h | 12 +- C3d/Lib/x32/Debug/c3d.lib | Bin 11207182 -> 11240284 bytes C3d/Lib/x32/Release/c3d.lib | Bin 12260878 -> 12293980 bytes C3d/Lib/x64/Debug/c3d.lib | Bin 11519232 -> 11554724 bytes C3d/Lib/x64/Release/c3d.lib | Bin 12608904 -> 12644396 bytes 90 files changed, 1335 insertions(+), 341 deletions(-) create mode 100644 C3d/Include/halfedge_segm_range_iterators.h diff --git a/C3d/Include/action_b_shaper.h b/C3d/Include/action_b_shaper.h index 42bc492..12f3ff1 100644 --- a/C3d/Include/action_b_shaper.h +++ b/C3d/Include/action_b_shaper.h @@ -27,7 +27,7 @@ class MbMesh; class MbSurface; class MbSNameMaker; class MbFace; -class MATH_CLASS MbCollection; +class MbCollection; struct MbCurvature; diff --git a/C3d/Include/action_polymesh.h b/C3d/Include/action_polymesh.h index be4790b..ed03a1d 100644 --- a/C3d/Include/action_polymesh.h +++ b/C3d/Include/action_polymesh.h @@ -33,6 +33,7 @@ class MbPolylinePolymeshProjectParams; class MbPolylinePolymeshProjectResults; class MbFillClosedCurveParams; class MbFillPolymeshHoleParams; +class MbPolymeshNormalsParams; //------------------------------------------------------------------------------ @@ -428,6 +429,7 @@ MATH_FUNC( MbResultType ) ProjectPolylineOnPolymesh( MbPolymesh & mesh, const Mb */ // --- MATH_FUNC( MbResultType ) FillClosedCurve( const MbFillClosedCurveParams & params, MbPolymesh & patch ); + //------------------------------------------------------------------------------ /** \brief \ru Заполнить отверстие полигонального объекта. \en Fill a polygonal object hole. \~ @@ -449,4 +451,24 @@ MATH_FUNC( MbResultType ) FillClosedCurve( const MbFillClosedCurveParams & param MATH_FUNC( MbResultType ) FillPolymeshHole( const MbFillPolymeshHoleParams & params, MbPolymesh & mesh ); +//------------------------------------------------------------------------------ +/** \brief \ru Рассчитать нормали в вершинах полигонального объекта. + \en Calculate normal vectors at the vertices of a polygonal object. \~ + \details \ru Рассчитать нормали в вершинах полигонального объекта. + В результате операции у полигонального объекта появится атрибут нормалей, если его не было, + и обновится, если был. + \en Calculate normal vectors at the vertices of a polygonal object. + As a result of the operation, the polygonal object will have a attribute with normals if it did not exist, + and will be updated if it did. \~ + \param[in] params - \ru Параметры расчета нормалей. + \en Parameters for calculation of normal vectors. \~ + \param[in-out] mesh - \ru Полигональный объект. + \en A polygonal object. \~ + \return \ru Код результата операции. + \en Returns the operation result code. \~ + \warning \ru В разработке. + \en Under development. \~ +*/ // --- +MATH_FUNC( MbResultType ) CalculatePolymeshNormals( const MbPolymeshNormalsParams & params, MbPolymesh & mesh ); + #endif // __ACTION_POLYMESH_H diff --git a/C3d/Include/action_solid.h b/C3d/Include/action_solid.h index 2a36234..6b5f60a 100644 --- a/C3d/Include/action_solid.h +++ b/C3d/Include/action_solid.h @@ -53,7 +53,7 @@ class MbPartSolidIndices; class MbSpine; class MbMesh; class MbGrid; -class MATH_CLASS MbCollection; +class MbCollection; class IProgressIndicator; diff --git a/C3d/Include/alg_curve_distance.h b/C3d/Include/alg_curve_distance.h index 44970de..3050435 100644 --- a/C3d/Include/alg_curve_distance.h +++ b/C3d/Include/alg_curve_distance.h @@ -18,9 +18,9 @@ class MbCurve; class MbLineSegment; -class MATH_CLASS MbArc; +class MbArc; class MbLine; -class MATH_CLASS MbTempCircle; +class MbTempCircle; //------------------------------------------------------------------------------ diff --git a/C3d/Include/alg_polyline.h b/C3d/Include/alg_polyline.h index 3b7d9c1..4b28fdf 100644 --- a/C3d/Include/alg_polyline.h +++ b/C3d/Include/alg_polyline.h @@ -25,7 +25,7 @@ class MbVector; class MbCurve; class MbCartPoint; class MbPlacement3D; -class MATH_CLASS MbBezier; +class MbBezier; class MbNurbs; class MbCurve3D; class MbMatrix3D; diff --git a/C3d/Include/assembly.h b/C3d/Include/assembly.h index a4e7dc4..2e32909 100644 --- a/C3d/Include/assembly.h +++ b/C3d/Include/assembly.h @@ -17,14 +17,14 @@ class MbConstraintSystem; -class MATH_CLASS MtGeomArgument; -class MATH_CLASS MtGeomConstraint; -class MATH_CLASS MtConstraintIter; +class MtGeomArgument; +class MtGeomConstraint; +class MtConstraintIter; struct ItAssemblyReactor; struct ItAssemblyImportData; struct ItModelVisitor; class MbModelTreeReader; -class MATH_CLASS MbAssembly; +class MbAssembly; namespace c3d // namespace C3D { @@ -115,7 +115,7 @@ public: void SetBasisPoints( const MbControlData3D & ) override; // \ru Изменить объект по контрольным точкам. \en Change the object by control points. // \ru Выдать локальную систему координат. Объект сборки не имеет локальной системы координат, для него всегда возвращается глобальная система координат. \en Get the local coordinate system. An assembly object does not have a local coordinate system, the global coordinate system is always returned for it. - inline bool GetPlacement( MbPlacement3D & p ) const { p = MbPlacement3D::global; return true; } + bool GetPlacement( MbPlacement3D & p ) const override { p = MbPlacement3D::global; return true; } // \ru Перестроить объект по журналу построения. \en Rebuild object according to the history tree. bool RebuildItem( MbeCopyMode sameShell, RPArray * items, IProgressIndicator * progInd ) override; // \ru Создать полигональный объект - упрощенную копию данного объекта. \en Create a polygonal object - a simplified copy of the given object. diff --git a/C3d/Include/ats_check.h b/C3d/Include/ats_check.h index fbbaa92..209c41c 100644 --- a/C3d/Include/ats_check.h +++ b/C3d/Include/ats_check.h @@ -17,7 +17,7 @@ #include -class MATH_CLASS MbSolid; +class MbSolid; //------------------------------------------------------------------------------ diff --git a/C3d/Include/attr_hotpoint_attribute.h b/C3d/Include/attr_hotpoint_attribute.h index 7723519..adf37ce 100644 --- a/C3d/Include/attr_hotpoint_attribute.h +++ b/C3d/Include/attr_hotpoint_attribute.h @@ -14,7 +14,7 @@ #include #include -class MATH_CLASS MbBaseHotPointAttribute; +class MbBaseHotPointAttribute; namespace c3d // namespace C3D diff --git a/C3d/Include/attr_user_attribute.h b/C3d/Include/attr_user_attribute.h index bba1457..26012f1 100644 --- a/C3d/Include/attr_user_attribute.h +++ b/C3d/Include/attr_user_attribute.h @@ -19,9 +19,9 @@ #include #include -class MATH_CLASS MbExternalAttribute; -class MATH_CLASS MbUserAttribute; -class MATH_CLASS MbFixAttrSet; +class MbExternalAttribute; +class MbUserAttribute; +class MbFixAttrSet; //------------------------------------------------------------------------------ diff --git a/C3d/Include/attribute_item.h b/C3d/Include/attribute_item.h index 5cd7419..4387c06 100644 --- a/C3d/Include/attribute_item.h +++ b/C3d/Include/attribute_item.h @@ -21,12 +21,12 @@ class MbVector3D; class MbAxis3D; class MbMatrix3D; class MbProperties; -class MATH_CLASS MbAttributeContainer; +class MbAttributeContainer; class MbRegDuplicate; class MbRegTransform; -class MATH_CLASS MbAttribute; +class MbAttribute; namespace c3d // namespace C3D { typedef SPtr AttrSPtr; diff --git a/C3d/Include/cdet_data.h b/C3d/Include/cdet_data.h index 331afbd..1e7f638 100644 --- a/C3d/Include/cdet_data.h +++ b/C3d/Include/cdet_data.h @@ -262,8 +262,8 @@ public: */ void Group( cdet_app_item fst, cdet_app_item snd ) { - fst = _Parent( fst ); - snd = _Parent( snd ); + fst = PivoteItem_( fst ); + snd = PivoteItem_( snd ); if ( fst < snd ) { std::swap( fst, snd ); @@ -279,7 +279,7 @@ public: void ExludeGroup( cdet_app_item member ) { if ( excluded == CDET_APP_NULL ) - excluded = _Parent( member ); + excluded = PivoteItem_( member ); else Group( excluded, member ); } @@ -336,7 +336,7 @@ private: return CBACK_VOID; } - cdet_app_item _Parent( cdet_app_item appItem ) const + cdet_app_item PivoteItem_( cdet_app_item appItem ) const { std::map::const_iterator iter = groups.find( appItem ); if ( iter == groups.end() || (iter->second == iter->first) ) @@ -345,12 +345,12 @@ private: } C3D_ASSERT( iter->second < iter->first ); - return _Parent( iter->second ); + return PivoteItem_( iter->second ); } bool _SameGroups( cdet_app_item fst, cdet_app_item snd ) const { - return _Parent( fst ) == _Parent( snd ); + return PivoteItem_( fst ) == PivoteItem_( snd ); } OBVIOUS_PRIVATE_COPY( cdet_collided_faces ); diff --git a/C3d/Include/contour_graph.h b/C3d/Include/contour_graph.h index ead894e..9737399 100644 --- a/C3d/Include/contour_graph.h +++ b/C3d/Include/contour_graph.h @@ -17,7 +17,7 @@ #include -class MATH_CLASS MpEdge; +class MpEdge; class ProgressBarWrapper; class IProgressIndicator; diff --git a/C3d/Include/conv_model_document.h b/C3d/Include/conv_model_document.h index d4d5b32..06441c1 100644 --- a/C3d/Include/conv_model_document.h +++ b/C3d/Include/conv_model_document.h @@ -16,12 +16,14 @@ #include #include #include +#include #include #include #include #include +//class IConverterMetadataReceiver; class MbPlacement3D; class MbName; @@ -116,6 +118,16 @@ public: */ virtual ModelPartPtr GetInstancePart( ) = 0; + + /** \brief \ru Получить обработчик метаданных. + \en Get metadata provider. \~ + \details \ru Метаданные используются в тех случаях, когда не вписываются не в геометрическую, ни в атрибутивную модели. + \en Metadata are used in cases they don't fin in neigher geometric nor attribute-based models. \~ + \return \ru Реализацию для приема метаданных с целью дальнейшей обработки. + \en Implementation of metadata processor. \~ + */ + virtual SPtr GetMetadataReceiver() { return {}; }; + /** \brief \ru Завершить импорт и сохранить документ. \en Complete the import and save the document. \~ \return \ru true, если операция прошла успешно, false в противном случае. @@ -198,44 +210,48 @@ public: // --- class CONV_CLASS C3dModelDocument: public ItModelDocument { - ModelPartPtr part; ///< \ru Представление в виде детали. \en Representation as detail. - ModelAssemblyPtr assembly; ///< \ru Представление в виде сборки. \en Representation as assembly. - map_of_visual_items visualItems; ///< \ru Элементы аннотации. \en Annotation items. - c3d::ItemSPtr rawContent; ///< \ru Передаваемый модельный элемент. \en Converted model item. - SPtr pmiToItem; ///< \ru Включены ли элементы аннотации непосредственно в модельный элемент. \en Model item contains PMI. + ModelPartPtr m_part{}; ///< \ru Представление в виде детали. \en Representation as detail. + ModelAssemblyPtr m_assembly{}; ///< \ru Представление в виде сборки. \en Representation as assembly. + map_of_visual_items m_visualItems{}; ///< \ru Элементы аннотации. \en Annotation items. + c3d::ItemSPtr m_rawContent{}; ///< \ru Передаваемый модельный элемент. \en Converted model item. + SPtr m_pmiToItem{}; ///< \ru Включены ли элементы аннотации непосредственно в модельный элемент. \en Model item contains PMI. + SPtr m_metadataReceiver{}; ///< \ru Обработчик метаданных. \en Metadata provider. public: C3dModelDocument( SPtr pmiToContent = SPtr() ); ///< \ru Конструктор. \en Conscructor. - virtual ~C3dModelDocument(); ///< \ru Деструктор. \en Descructor. + ~C3dModelDocument() override; ///< \ru Деструктор. \en Descructor. - // Является ли сборкой. - virtual bool IsAssembly() const; + // Является ли сборкой. + bool IsAssembly() const override; // Пуст ли. - virtual bool IsEmpty() const; + bool IsEmpty() const override; // Задать модель напрямую. - virtual void SetContent( MbItem* /*content*/); + void SetContent( MbItem* /*content*/) override; // Выдать модель напрямую. - virtual MbItem * GetContent(); + MbItem * GetContent() override; // Создать сборку. - virtual ModelAssemblyPtr CreateAssembly( const c3d::ItemsSPtrVector & componentItems, const c3d::string_t& fileName ); + ModelAssemblyPtr CreateAssembly( const c3d::ItemsSPtrVector & componentItems, const c3d::string_t& fileName ) override; // Создать деталь. - virtual ModelPartPtr CreatePart( const c3d::ItemsSPtrVector & componentItems, const c3d::string_t& fileName ); + ModelPartPtr CreatePart( const c3d::ItemsSPtrVector & componentItems, const c3d::string_t& fileName ) override; // Выдать сборку. - virtual ModelAssemblyPtr GetInstanceAssembly( ); + ModelAssemblyPtr GetInstanceAssembly( ) override; // Выдать деталь. - virtual ModelPartPtr GetInstancePart( ); + ModelPartPtr GetInstancePart( ) override; // Завершить импорт. - virtual bool FinishImport( IProgressIndicator * ); + bool FinishImport( IProgressIndicator * ) override; // Выдать элементы аннотации. DEPRECATE_DECLARE - virtual map_of_visual_items GetAnnotationItems( eTextForm ) const; + map_of_visual_items GetAnnotationItems( eTextForm ) const override; // Задать элементы аннотации. DEPRECATE_DECLARE - virtual void SetAnnotationItems( const map_of_visual_items& vi ); + void SetAnnotationItems( const map_of_visual_items& vi ) override; // Открыть документ. DEPRECATE_DECLARE - virtual void OpenDocument(); + void OpenDocument() override; + + // Получить интерфейс передачи метаданных. + SPtr GetMetadataReceiver() override; /// \ru Включены ли PMI в элемент модели. \en If PMI is included into model item. SPtr PmiInContent() const; @@ -247,6 +263,9 @@ public: /// \ru Сбросить итераторы вставок. \en Reset instances itrerators. void ResetInstanceIterators(); + /// \ru Задать особенный обработчик метаданных. \en Set specific metadata provider. + void SetMetadataReceiver( SPtr const & ); + /// \ru Инициализировать документ по двойнику. \en Build document by twin. void InitDocumentByTwin( MbModel const& ); }; diff --git a/C3d/Include/conv_requestor.h b/C3d/Include/conv_requestor.h index 0a27de3..d7b187f 100644 --- a/C3d/Include/conv_requestor.h +++ b/C3d/Include/conv_requestor.h @@ -119,16 +119,65 @@ public: //------------------------------------------------------------------------------ -/** -\brief \ru Интерфейс передачи метаданных. - \en Metadata transfer. \~ +/** \brief \ru Интерфейс передачи метаданных. + \en Metadata transfer. \~ + + \details \ru Метаданные используются в тех случаях, когда исходные данные от +конвертеров плохо вписываются в геометрическую и атрибутивную модель. Пример метаданных - +альтернативные представления дерева модели. + \en Metadata are used in cases when geometric or attribute model doesn't +match structure of information from converters. Alternate tree sutrucure is a sample of +metadata. \~ */ // --- class CONV_CLASS IConverterMetadataReceiver : public MbRefItem { public: + +/** \brief \ru Инициализировать передачу метаданных для элемента. + \en Initialize metadata transfer for item. \~ + \details \ru Вызывается перед началом передачи метаданных, относящихся к элементу негеометрических данных, с целью подготовки приемника. + \en Should be called before metadata related to non-geometric element to prepare the reciever. \~ + \param[in] category - \ru Категория, к которой относится элемент. + \en Category element belongs to.\~ + \param[in] nameInCategory - \ru Название элемента внутри категории. + \en Element's name in category.\~ + \param[in] contentType - \ru Представление передаваемых метаданных. + \en Representation of metadata.\~ + + \return \ru Признак, возможна ли передача метаданных. + \en Wether the metadata transfer is possible. \~ + \note \ru Ожидается, что вызывается однократно для каждой пары категория - название. + \en Expected it is called once for each category - name pair. \~ + */ virtual bool InitMetadataForItem(const c3d::string_t& category, const c3d::string_t& nameInCategory, const c3d::string_t& contentType) = 0; + + /** \brief \ru Завершить передачу метаданных для элемента. + \en Finalize metadata transfer for item. \~ + \details \ru Вызывается после передачи метаданных, относящихся к элементу негеометрических данных, с целью освободить ресурсы. + \en Should be called after metadata related to non-geometric element to free related resources. \~ + \param[in] category - \ru Категория, к которой относится элемент. + \en Category element belongs to.\~ + \param[in] nameInCategory - \ru Название элемента внутри категории. + \en Element's name in category. + \note \ru Ожидается, что вызывается не более одного раза для каждой пары категория - название и только в случае, если передача была инициализирована успешно. + \en Expected it is called once for each category - name pair in case transfer is possible or not called otherwise. \~ + */ virtual void CloseMetadataForItem(const c3d::string_t& category, const c3d::string_t& nameInCategory) = 0; + + /** \brief \ru Передать блок метаданных для элемента. + \en Transfer metadata block for item. \~ + \param[in] category - \ru Категория, к которой относится элемент. + \en Category element belongs to.\~ + \param[in] nameInCategory - \ru Название элемента внутри категории. + \en Element's name in category.\~ + \param[in] metadataBuffer - \ru Адрес бинарного буфера, содержащего данные блока. + \en Binary buffer containing block data.\~ + \param[in] bufferCapacity - \ru Длина бинарного буфера, содержащего данные блока. + \en Lenght of binary buffer containing block data.\~ + \note \ru Возможен многократный вызов для каждой пары категория - название. + \en Many calls for each category - name are possible. \~ + */ virtual void TransferMetadataForItem(const c3d::string_t& category, const c3d::string_t& nameInCategory, const char* metadataBuffer, unsigned long int bufferCapacity) = 0; }; diff --git a/C3d/Include/cr_attribute_provider.h b/C3d/Include/cr_attribute_provider.h index b7e9ef6..d53a6aa 100644 --- a/C3d/Include/cr_attribute_provider.h +++ b/C3d/Include/cr_attribute_provider.h @@ -16,7 +16,7 @@ #include -class MATH_CLASS MbNamedAttributeContainer; +class MbNamedAttributeContainer; class MbFaceShell; diff --git a/C3d/Include/cr_stamp_bead_solid.h b/C3d/Include/cr_stamp_bead_solid.h index 8eff8d2..3a69c18 100644 --- a/C3d/Include/cr_stamp_bead_solid.h +++ b/C3d/Include/cr_stamp_bead_solid.h @@ -15,7 +15,7 @@ class MbPlacement3D; -class MATH_CLASS MbCurveBoundedSurface; +class MbCurveBoundedSurface; //------------------------------------------------------------------------------ diff --git a/C3d/Include/cr_stamp_jalousie_solid.h b/C3d/Include/cr_stamp_jalousie_solid.h index 7a830fe..49cc101 100644 --- a/C3d/Include/cr_stamp_jalousie_solid.h +++ b/C3d/Include/cr_stamp_jalousie_solid.h @@ -14,7 +14,7 @@ #include -class MATH_CLASS MbCurveBoundedSurface; +class MbCurveBoundedSurface; //------------------------------------------------------------------------------ diff --git a/C3d/Include/cr_stamp_solid.h b/C3d/Include/cr_stamp_solid.h index 9e9fdfd..91dc561 100644 --- a/C3d/Include/cr_stamp_solid.h +++ b/C3d/Include/cr_stamp_solid.h @@ -16,7 +16,7 @@ #include -class MATH_CLASS MbCurveBoundedSurface; +class MbCurveBoundedSurface; //------------------------------------------------------------------------------ diff --git a/C3d/Include/cr_stamp_spherical_solid.h b/C3d/Include/cr_stamp_spherical_solid.h index d2e8e0a..82ec034 100644 --- a/C3d/Include/cr_stamp_spherical_solid.h +++ b/C3d/Include/cr_stamp_spherical_solid.h @@ -15,7 +15,7 @@ #include -class MATH_CLASS MbCurveBoundedSurface; +class MbCurveBoundedSurface; //------------------------------------------------------------------------------ diff --git a/C3d/Include/creator.h b/C3d/Include/creator.h index 6bbb798..577a8d6 100644 --- a/C3d/Include/creator.h +++ b/C3d/Include/creator.h @@ -18,9 +18,9 @@ class MbVertex; class MbCurveEdge; -class MATH_CLASS MbPointFrame; -class MATH_CLASS MbWireFrame; -class MATH_CLASS MbCreator; +class MbPointFrame; +class MbWireFrame; +class MbCreator; namespace c3d // namespace C3D diff --git a/C3d/Include/creator_transaction.h b/C3d/Include/creator_transaction.h index 17abe4b..f94a7e3 100644 --- a/C3d/Include/creator_transaction.h +++ b/C3d/Include/creator_transaction.h @@ -26,8 +26,8 @@ class MbAxis3D; class MbMatrix3D; class MbSpaceItem; class MbFaceShell; -class MATH_CLASS MbWireFrame; -class MATH_CLASS MbPointFrame; +class MbWireFrame; +class MbPointFrame; class MbProperties; struct MbControlData3D; class MbRegDuplicate; diff --git a/C3d/Include/cur_contour.h b/C3d/Include/cur_contour.h index 1f59fb4..eee5c0a 100644 --- a/C3d/Include/cur_contour.h +++ b/C3d/Include/cur_contour.h @@ -24,7 +24,7 @@ class SimpleNameArray; class MbCurveIntoNurbsInfo; -class MATH_CLASS MbContour; +class MbContour; namespace c3d // namespace C3D { typedef SPtr PlaneContourSPtr; diff --git a/C3d/Include/cur_contour3d.h b/C3d/Include/cur_contour3d.h index b7e7f3e..0c91ea1 100644 --- a/C3d/Include/cur_contour3d.h +++ b/C3d/Include/cur_contour3d.h @@ -21,7 +21,7 @@ class SimpleNameArray; -class MATH_CLASS MbContour3D; +class MbContour3D; namespace c3d // namespace C3D { typedef SPtr SpaceContourSPtr; diff --git a/C3d/Include/cur_contour_on_surface.h b/C3d/Include/cur_contour_on_surface.h index 2ce41bd..3c62e37 100644 --- a/C3d/Include/cur_contour_on_surface.h +++ b/C3d/Include/cur_contour_on_surface.h @@ -12,21 +12,21 @@ #include #include -#include +#include #include -class MbMatrix; -class MbContour; -class MbSurface; -class MbSurfaceCurve; -class MbContour3D; -class MbCurveTessellation; -class MbCurveIntoNurbsInfo; -class MbSegmentsSearchTree; +class MbMatrix; +class bContour; +class MbSurface; +class MbSurfaceCurve; +class MbContour3D; +class MbCurveTessellation; +class MbCurveIntoNurbsInfo; +class MbSegmentsSearchTree; -class MATH_CLASS MbContourOnSurface; +class MbContourOnSurface; namespace c3d // namespace C3D { typedef SPtr ContourOnSurfaceSPtr; @@ -65,28 +65,42 @@ protected : mutable atomic_double area; ///< \ru Площадь 2D-контура со знаком. \en The area of 2D-contour with sign. mutable MbCube cube; ///< \ru Габаритный куб. \en Bounding box. mutable atomic_double metricLength; ///< \ru Метрическая длина. \en The metric length. - mutable MbSegmentsSearchTree * searchTree; ///< \ru Дерево габаритов для ускорения поиска сегментов. \en A tree of bounding boxes for segment search acceleration. private: + //------------------------------------------------------------------------------ - /** \brief \ru Вспомогательные данные. - \en Auxiliary data. \~ + /** \brief \ru Дерево габаритов для ускорения поиска сегментов. Вспомогательные данные. + \en A tree of bounding boxes for segment search acceleration. An auxiliary data. \~ + \details \ru Вспомогательные данные служат для ускорения работы объекта. + \en Auxiliary data are used for fast calculations. \n \~ + */ + // --- + class MbSearchTreeAuxiliaryData : public AuxiliaryData { + public: + MbSegmentsSearchTree * searchTree; + MbSearchTreeAuxiliaryData(); + MbSearchTreeAuxiliaryData( const MbSearchTreeAuxiliaryData & init ); + virtual ~MbSearchTreeAuxiliaryData(); + }; + + mutable CacheManager searchTreeCache; /// \ru Кэш дерева габаритов. \en A cache for the tree of bounding boxes. + + //------------------------------------------------------------------------------ + /** \brief \ru Разбивка кривой. Вспомогательные данные. + \en Curve tessellation. An auxiliary data. \~ \details \ru Вспомогательные данные служат для ускорения работы объекта. \en Auxiliary data are used for fast calculations. \n \~ */ // --- class MbContourOnSurfaceAuxiliaryData : public AuxiliaryData { public: - std::vector< SPtr > tessellation; ///< \ru Разбивка кривой. \en Curve tessellation.. - + std::vector< SPtr > tessellation; MbContourOnSurfaceAuxiliaryData(); - MbContourOnSurfaceAuxiliaryData( const MbContourOnSurfaceAuxiliaryData & init ); - virtual ~MbContourOnSurfaceAuxiliaryData() {} }; - mutable CacheManager cache; + mutable CacheManager cache; /// Кэш разбивки кривой.\en A cache for the curve tessellation. public : /// \ru Конструктор по поверхности, контуру и флагу использования оригинала контура. \en Constructor by surface, contour and flag of using original contour. @@ -375,7 +389,7 @@ private: bool FindNearestSegmentsByTree( const MbCartPoint & point, std::vector & indFound ) const; /// \ru Поиск ближайших к точке сегментов с помощью дерева габаритов на плоскости. \en Nearest to point segment search with bounding box tree in 2D space. bool FindNearestSegmentsByTree3D( const MbCartPoint3D & point, const size_t & indStart, const size_t & indEnd, std::vector & indFound ) const; /// \ru Поиск ближайших к точке сегментов с помощью дерева габаритов в пространстве. \en Nearest to point segment search with bounding box tree in 3D space. - void CacheReset() const; // \ru Удалить кэши. \en Delete caches. + void TessCacheReset() const; // \ru Удалить кэши. \en Delete caches. friend void MbSurfaceCurve::SetTesselation( const MbContourOnSurface & contour, size_t indSegment ); // \ru Установить разбиение из контура. \en Set tessellation from contour. diff --git a/C3d/Include/cur_contour_with_breaks.h b/C3d/Include/cur_contour_with_breaks.h index 2d0d777..f95eb5d 100644 --- a/C3d/Include/cur_contour_with_breaks.h +++ b/C3d/Include/cur_contour_with_breaks.h @@ -16,8 +16,8 @@ #include -class MATH_CLASS MbBreaksPart; -class MATH_CLASS MbBreak; +class MbBreaksPart; +class MbBreak; //------------------------------------------------------------------------------ diff --git a/C3d/Include/cur_projection_curve.h b/C3d/Include/cur_projection_curve.h index 11e0530..1fac5df 100644 --- a/C3d/Include/cur_projection_curve.h +++ b/C3d/Include/cur_projection_curve.h @@ -312,10 +312,10 @@ private: void Init( const MbCurve3D & sCurve, bool sameSpaceCurve, const MbSurface & surface, const MbCurve & pCurve, bool samePlaneCurve, size_t vers, MbRegDuplicate * iReg = nullptr ); - void CheckPoint ( double & t, bool ext, MbCartPoint & cPoint ) const; // \ru Обнулить данные, вычислить точку \en Set data to zero, calculate point. - void CheckFirst ( double & t, bool ext, MbVector & cFirst ) const; // \ru Вычислить производную \en Calculate derivative - void CheckSecond( double & t, bool ext, MbVector & cSecond ) const; // \ru Вычислить производную \en Calculate derivative - void CheckThird ( double & t, bool ext, MbVector & cThird ) const; // \ru Вычислить производную \en Calculate derivative + void CheckPoint ( double & t, bool ext, MbCartPoint & cPoint, MbProjCurveAuxiliaryData * loccache ) const; // \ru Обнулить данные, вычислить точку \en Set data to zero, calculate point. + void CheckFirst ( double & t, bool ext, MbVector & cFirst, MbProjCurveAuxiliaryData * loccache ) const; // \ru Вычислить производную \en Calculate derivative + void CheckSecond( double & t, bool ext, MbVector & cSecond, MbProjCurveAuxiliaryData * loccache ) const; // \ru Вычислить производную \en Calculate derivative + void CheckThird ( double & t, bool ext, MbVector & cThird, MbProjCurveAuxiliaryData * loccache ) const; // \ru Вычислить производную \en Calculate derivative bool CalculatePoint( const MbCartPoint3D & sPoint, MbCartPoint & cPoint, MbCartPoint3D & pnt, MbVector3D & uDer, MbVector3D & vDer, MbVector3D & uuDer, MbVector3D & vvDer, MbVector3D & uvDer, MbVector3D * nor ) const; // \ru Вычислить данные для точки. \en Calculate point. @@ -338,7 +338,7 @@ private: void PlaneCaseExplore( double t, size_t ord, bool single ) const; // \ru Расчет в точке. // \en Calculation at a point. - void Explore( double & t, bool ext, size_t ord, bool single ) const; + void Explore( double & t, bool ext, size_t ord, bool single, MbProjCurveAuxiliaryData * loccache ) const; // \ru Определение типа проецирования. \en Determining the type of projection void SetProjType(); // \ru Обновить связь кривой и поверхности. \en Refresh curve-to-surface relationship. diff --git a/C3d/Include/cur_surface_curve.h b/C3d/Include/cur_surface_curve.h index bb35688..23e0e31 100644 --- a/C3d/Include/cur_surface_curve.h +++ b/C3d/Include/cur_surface_curve.h @@ -23,8 +23,8 @@ class MbRect; class MbPlacement3D; class MbCurve; class MbSurface; -class MATH_CLASS MbSurfaceIntersectionCurve; -class MATH_CLASS MbContourOnSurface; +class MbSurfaceIntersectionCurve; +class MbContourOnSurface; class MbCurveTessellation; class MbCurveIntoNurbsInfo; diff --git a/C3d/Include/cur_surface_intersection.h b/C3d/Include/cur_surface_intersection.h index 68c90ba..cf3f73d 100644 --- a/C3d/Include/cur_surface_intersection.h +++ b/C3d/Include/cur_surface_intersection.h @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -135,7 +136,33 @@ private : } ~SpaceCurveAuxiliaryData() {} }; - mutable CacheManager spaceCurveCache; ///< \ru Кэш пространственной аппроксимационной кривой. \en Cache of a spatial approximating curve. \~ + + //------------------------------------------------------------------------------ + /** \brief \ru Класс кэша пространственной аппроксимационной кривой. + \en Class for a cache of the spatial approximating curve. \~ + \details \ru Класс кэша пространственной аппроксимационной кривой. + \en Class for a cache of the spatial approximating curve. \~ + */ + // --- + class SpaceCurveCacheManager : public CacheManager { + std::set< SPtr > curvesCache; + public: + +#ifdef CACHE_DELETE_LOCK + SpaceCurveCacheManager( bool createLock = false ) : CacheManager( createLock ) {} +#else + SpaceCurveCacheManager( bool createLock = true ) : CacheManager( createLock ) {} +#endif + SpaceCurveCacheManager( const CacheManager & m ) : CacheManager ( m ) {} + + bool ResetCacheData() final { bool res = CacheManager::ResetCacheData(); curvesCache.clear(); return res; } + + void PreserveSpaceCurve( SPtr & curve ) { + curvesCache.insert( curve ); + } + }; + + mutable SpaceCurveCacheManager spaceCurveCache; ///< \ru Кэш пространственной аппроксимационной кривой. \en Cache of a spatial approximating curve. \~ MbSurfaceCurve curveOne; ///< \ru Кривая на первой поверхности. \en Curve on the first surface. MbSurfaceCurve curveTwo; ///< \ru Кривая на второй поверхности. \en Curve on the second surface. diff --git a/C3d/Include/curve.h b/C3d/Include/curve.h index ada52c6..9eabfc9 100644 --- a/C3d/Include/curve.h +++ b/C3d/Include/curve.h @@ -29,18 +29,18 @@ class MbPlacement; -class MATH_CLASS MbNurbs; -class MATH_CLASS MbLine; -class MATH_CLASS MbContour; +class MbNurbs; +class MbLine; +class MbContour; class MbPolygon; class MbCrossPoint; -class MATH_CLASS MbCurveExtensionParameters; +class MbCurveExtensionParameters; class MbDimAccuracy; class MbCurveIntoNurbsInfo; struct MbNurbsParameters; -class MATH_CLASS MbCurve; +class MbCurve; namespace c3d // namespace C3D { typedef SPtr PlaneCurveSPtr; diff --git a/C3d/Include/curve3d.h b/C3d/Include/curve3d.h index a2e3ad3..7c9ed38 100644 --- a/C3d/Include/curve3d.h +++ b/C3d/Include/curve3d.h @@ -34,15 +34,15 @@ class MbCurve; class MbSurface; class MbPolygon3D; -class MATH_CLASS MbNurbs3D; +class MbNurbs3D; class MbPlacement3D; -class MATH_CLASS MbCurveExtensionParameters3D; +class MbCurveExtensionParameters3D; class MbDimAccuracy; class MbCurveIntoNurbsInfo; struct MbNurbsParameters; -class MATH_CLASS MbCurve3D; +class MbCurve3D; namespace c3d // namespace C3D { typedef SPtr SpaceCurveSPtr; diff --git a/C3d/Include/function.h b/C3d/Include/function.h index e710f78..d253bf9 100644 --- a/C3d/Include/function.h +++ b/C3d/Include/function.h @@ -24,7 +24,7 @@ class MbProperties; class MbRegTransform; -class MATH_CLASS MbFunction; +class MbFunction; namespace c3d // namespace C3D { typedef SPtr FunctionSPtr; diff --git a/C3d/Include/gce_api.h b/C3d/Include/gce_api.h index 923aa7b..59420d4 100644 --- a/C3d/Include/gce_api.h +++ b/C3d/Include/gce_api.h @@ -636,7 +636,7 @@ GCE_FUNC(geom_item) GCE_PointOf( GCE_system gSys, geom_item g, point_type pnt ); \en Vector coordinates. \~ */ //--- -GCE_FUNC(GCE_vec2d) GCE_GetVectorValue( GCE_system gSys, geom_item g, query_geom_type vType ); +GCE_FUNC(GCE_vec2d) GCE_GetVectorValue( GCE_system gSys, geom_item g, subgeom_type vType ); //---------------------------------------------------------------------------------------- /** \brief \ru Получить текущие координаты точки. @@ -762,6 +762,53 @@ GCE_FUNC(bool) GCE_SetCoordValue( GCE_system gSys, geom_item g, coord_name cName //--- GCE_FUNC(bool) GCE_SetVarValue( GCE_system gSys, var_item var, double val ); +//---------------------------------------------------------------------------------------- +/** \brief \ru Изменить вес контрольной точки сплайна. + \en Change the weight of the spline control point. \~ + \param[in] gSys - \ru Система ограничений. + \en System of constraints. \~ + \param[in] spline - \ru Сплайн или его инстанс. + \en Spline or its instances. \~ + \param[in] pntIdx - \ru Индекс контрольной точки сплайна. + \en Index of control point of the spline. \~ + \param[in] weight - \ru Вес контрольной точки сплайна. + \en Weight of spline control point. \~ + + \details \ru Метод изменяет вес контрольной точки сплайна и всех его экземпляров, связанных друг с + другом одним или более паттернами (GCE_PATTERN) образованными с помощью методов + #GCE_AddPatterned, #GCE_AddInstance. + \en The method changes the weight of the spline control point and all its instances + connected to each other by one or more patterns (GCE_PATTERN) formed using the + methods #GCE_AddPatterned, #GCE_AddInstance. \~ + + \note \ru Функция действует на сплайны (GCE_SPLINE), а также на кривые типов GCE_BOUNDED_CURVE, + GCE_OFFSET_CURVE, GCE_INSTANCE, основанных на сплайне. Если сплайн является элементом + паттерна, то вместе с ним поменяется вес остальных сплайнов, связанных друг с другом + с помощью методов #GCE_AddPatterned, #GCE_AddInstance. + \en The function is applied to splines (GCE_SPLINE), as well as to curves of types + GCE_BOUNDED_CURVE, GCE_OFFSET_CURVE, GCE_INSTANCE, based on a spline. + If a spline is an element of a pattern, the weight of other splines connected with each other + using methods #GCE_AddPatterned, #GCE_AddInstance will change together with it. \~ +*/ +//--- +GCT_FUNC(void) GCE_SetWeight( GCE_system gSys, geom_item spline, size_t pntIdx, double weight ); + +//---------------------------------------------------------------------------------------- +/** \brief \ru Выдать вес контрольной точки сплайна. + \en Get the weight of the spline control point. \~ + \param[in] gSys - \ru Система ограничений. + \en System of constraints. \~ + \param[in] spline - \ru Сплайн или его инстанс. + \en Spline or its instances. \~ + \param[in] pntIdx - \ru Индекс контрольной точки сплайна. + \en Index of control point of the spline. \~ + + \details \ru Метод возвращает вес контрольной точки сплайна. + \en The method returns the weight of the control point of the spline. \~ +*/ +//--- +GCT_FUNC(double) GCE_WeightOf( GCE_system gSys, geom_item spline, size_t pntIdx ); + //---------------------------------------------------------------------------------------- /** \brief \ru Дескриптор контрольной точки сплайна по индексу. \en Descriptor of spline control point by index \~ diff --git a/C3d/Include/gce_types.h b/C3d/Include/gce_types.h index aa2ad95..027094a 100644 --- a/C3d/Include/gce_types.h +++ b/C3d/Include/gce_types.h @@ -136,22 +136,21 @@ typedef enum /* The values below are used only within the solver. */ - , GCE_DIRECTION ///< \ru Направляющий вектор эллипса (направление "большой" полуоси ) или паттерна. \en Vector of ellipse direction (direction of "major" semiaxis) or pattern. - , GCE_L_NORMAL ///< \ru Вектор нормали линейного объекта. \en Normal vector of a linear geometry entity. + , GCE_DIRECTION ///< \ru Направляющий вектор эллипса (направление "большой" полуоси ) или паттерна. \en Vector of ellipse direction (direction of "major" semiaxis) or pattern. + , GCE_L_NORMAL ///< \ru Вектор нормали линейного объекта. \en Normal vector of a linear geometry entity. /** \brief \ru Единичный вектор ориентации: Нормаль прямой, направление "большой" полуоси эллипса. \en Unit vector of orientation: Normal of a line, direction of "major" semiaxis of ellipse. \~ */ , GCE_ORIENTATION , GCE_BASE_CURVE - -} query_geom_type; +} subgeom_type; //---------------------------------------------------------------------------------------- -/** \brief \ru Тип запрашиваемой точки (используется, как подмножество значений query_geom_type). - \en Type of the requested point (used as subset of values query_geom_type). +/** \brief \ru Тип запрашиваемой точки (используется, как подмножество значений subgeom_type). + \en Type of the requested point (used as subset of values subgeom_type). */ //--- -typedef query_geom_type point_type; +typedef subgeom_type point_type; //---------------------------------------------------------------------------------------- /** \brief \ru Перечисление координат геометрических объектов. @@ -807,6 +806,9 @@ typedef void ( *GCE_log_func )( GCE_journal, GCE_log_type logType, const char* r Constraints2D_API */ + +using query_geom_type = subgeom_type; // // Deprecated alias + #endif // __GCE_TYPES_H // eof diff --git a/C3d/Include/halfedge.h b/C3d/Include/halfedge.h index 2e254ec..ac628e9 100644 --- a/C3d/Include/halfedge.h +++ b/C3d/Include/halfedge.h @@ -14,14 +14,14 @@ #include #include -struct MATH_CLASS ActiveEdgesBegEndPair; -struct MATH_CLASS ActiveVerticesBegEndPair; -struct MATH_CLASS ActiveFacetsBegEndPair; -struct MATH_CLASS EdgesAroundFacetBegEndPair; -struct MATH_CLASS VerticesAroundFacetBegEndPair; -struct MATH_CLASS EdgesAroundVertexBegEndPair; -struct MATH_CLASS VerticesAroundVertexBegEndPair; -struct MATH_CLASS FacetsAroundVertexBegEndPair; +struct ActiveEdgesBegEndPair; +struct ActiveVerticesBegEndPair; +struct ActiveFacetsBegEndPair; +struct EdgesAroundFacetBegEndPair; +struct VerticesAroundFacetBegEndPair; +struct EdgesAroundVertexBegEndPair; +struct VerticesAroundVertexBegEndPair; +struct FacetsAroundVertexBegEndPair; //------------------------------------------------------------------------------- /** \brief \ru Топология полигональной сетки в виде half edge. diff --git a/C3d/Include/halfedge_element.h b/C3d/Include/halfedge_element.h index 2efbc59..8e14afe 100644 --- a/C3d/Include/halfedge_element.h +++ b/C3d/Include/halfedge_element.h @@ -13,6 +13,7 @@ #include #include + //------------------------------------------------------------------------------- /** \brief \ru Базовый класс элемента топологии полигональной сетки. \en Base class for a polygon mesh topology elementary unit. diff --git a/C3d/Include/halfedge_range_iterators.h b/C3d/Include/halfedge_range_iterators.h index 888bcf4..0f11346 100644 --- a/C3d/Include/halfedge_range_iterators.h +++ b/C3d/Include/halfedge_range_iterators.h @@ -12,7 +12,6 @@ #include -class MbHalfedge; /** \brief \ru Итератор по ребрам топологии для поддержки range-based for. \en Edge iterator for haldedge range based for support diff --git a/C3d/Include/halfedge_segm_range_iterators.h b/C3d/Include/halfedge_segm_range_iterators.h new file mode 100644 index 0000000..3a49c06 --- /dev/null +++ b/C3d/Include/halfedge_segm_range_iterators.h @@ -0,0 +1,272 @@ +//////////////////////////////////////////////////////////////////////////////// +/** + \file + \brief \ru Итераторы для использования range-based-for в Halfedge сегментации. + \en Iterators with range-based-for support to use in a HalfEdge segmentation class \~ + +*/ +//////////////////////////////////////////////////////////////////////////////// + +#ifndef __HALFEDGE_SEGM_RANGE_ITERATORS_H +#define __HALFEDGE_SEGM_RANGE_ITERATORS_H + +#include + +class MbHalfedgeSegmentation; + + +/** \brief \ru Итератор по ребрам сегментации для поддержки range-based for. + \en Subregion iterator for haldedge range based for support +*/ +struct MATH_CLASS ActiveEdgeSegmConstIterator +{ + const MbHalfedgeSegmentation & _segm; //< \ru Ссылка на сегментацию. \en Segmentation reference. + size_t _edge = SYS_MAX_T; //< \ru Индекс текущего segmentation cycle. \en An actual segmentation edge index. + + /** \brief \ru Конструктор. \en Constructor. + \param[in] segm - \ru Сегментация. \en Halfedge segmentation. + \param[in] begin - \ru Если true создает начальный итератор, иначе - конечный. + \en If true creates begin iterator, creates end iterator otherwise. + */ + ActiveEdgeSegmConstIterator( const MbHalfedgeSegmentation & segm, bool begin = true ) noexcept; + + /// \ru Оператор инкремента. \en An increment operator. + ActiveEdgeSegmConstIterator & operator ++() noexcept; + /// \ru Оператор сравнения. \en A comparison operator. + bool operator != ( const ActiveEdgeSegmConstIterator & it ) const noexcept; + /// \ru Доступ к данным. \en Data access. + const MbHalfedgeEdge & operator*() const noexcept; +}; + + +/** \brief \ru Объект хранящий begin() и end() для итерации по циклам сегментации для поддержки range-based for. + \en Storage for begin-end pair to support halfedge range-based for iteration +*/ +struct MATH_CLASS ActiveEdgesSegmBegEndPair +{ + const MbHalfedgeSegmentation & _segm; //< \ru Ссылка на сегментацию. \en Segmentation reference. + + /// \ru Констуктор. \en Constructor. + ActiveEdgesSegmBegEndPair( const MbHalfedgeSegmentation & segm ) noexcept + : _segm( segm ) + { + } + + /// \ru Начальный итератор. \en Begin iterator. + ActiveEdgeSegmConstIterator begin() const noexcept + { + return ActiveEdgeSegmConstIterator( _segm ); + } + + /// \ru Конечный итератор. \en End Iterator. + ActiveEdgeSegmConstIterator end() const noexcept + { + return ActiveEdgeSegmConstIterator( _segm, false ); + } +}; + + +/** \brief \ru Итератор по вершинам сегментации для поддержки range-based for. + \en Subregion iterator for haldedge range based for support +*/ +struct MATH_CLASS ActiveVertexSegmConstIterator +{ + const MbHalfedgeSegmentation & _segm; //< \ru Ссылка на сегментацию. \en Segmentation reference. + size_t _vertex = SYS_MAX_T; //< \ru Индекс текущего segmentation cycle. \en An actual segmentation edge index. + + /** \brief \ru Конструктор. \en Constructor. + \param[in] segm - \ru Сегментация. \en Halfedge segmentation. + \param[in] begin - \ru Если true создает начальный итератор, иначе - конечный. + \en If true creates begin iterator, creates end iterator otherwise. + */ + ActiveVertexSegmConstIterator( const MbHalfedgeSegmentation & segm, bool begin = true ) noexcept; + + /// \ru Оператор инкремента. \en An increment operator. + ActiveVertexSegmConstIterator & operator ++() noexcept; + /// \ru Оператор сравнения. \en A comparison operator. + bool operator != ( const ActiveVertexSegmConstIterator & it ) const noexcept; + /// \ru Доступ к данным. \en Data access. + const MbHalfedgeVertex & operator*() const noexcept; +}; + + +/** \brief \ru Объект хранящий begin() и end() для итерации по вершинам сегментации для поддержки range-based for. + \en Storage for begin-end pair to support halfedge range-based for iteration +*/ +struct MATH_CLASS ActiveVertexesSegmBegEndPair +{ + const MbHalfedgeSegmentation & _segm; //< \ru Ссылка на сегментацию. \en Segmentation reference. + + /// \ru Констуктор. \en Constructor. + ActiveVertexesSegmBegEndPair( const MbHalfedgeSegmentation & segm ) noexcept + : _segm( segm ) + { + } + + /// \ru Начальный итератор. \en Begin iterator. + ActiveVertexSegmConstIterator begin() const noexcept + { + return ActiveVertexSegmConstIterator( _segm ); + } + + /// \ru Конечный итератор. \en End Iterator. + ActiveVertexSegmConstIterator end() const noexcept + { + return ActiveVertexSegmConstIterator( _segm, false ); + } +}; + + +/** \brief \ru Итератор по циклам сегментации для поддержки range-based for. + \en Subregion iterator for haldedge range based for support +*/ +struct MATH_CLASS ActiveLoopSegmConstIterator +{ + const MbHalfedgeSegmentation & _segm; //< \ru Ссылка на сегментацию. \en Segmentation reference. + size_t _iLoopSegm = SYS_MAX_T; //< \ru Индекс текущего segmentation cycle. \en An actual segmentation cycle index. + + /** \brief \ru Конструктор. \en Constructor. + \param[in] segm - \ru Сегментация. \en Halfedge segmentation. + \param[in] begin - \ru Если true создает начальный итератор, иначе - конечный. + \en If true creates begin iterator, creates end iterator otherwise. + */ + ActiveLoopSegmConstIterator( const MbHalfedgeSegmentation & segm, bool begin = true ) noexcept; + + /// \ru Оператор инкремента. \en An increment operator. + ActiveLoopSegmConstIterator & operator ++() noexcept; + /// \ru Оператор сравнения. \en A comparison operator. + bool operator != ( const ActiveLoopSegmConstIterator & it ) const noexcept; + /// \ru Доступ к данным. \en Data access. + const MbSegmentationLoop & operator*() const noexcept; +}; + + +/** \brief \ru Объект хранящий begin() и end() для итерации по циклам сегментации для поддержки range-based for. + \en Storage for begin-end pair to support halfedge range-based for iteration +*/ +struct MATH_CLASS ActiveLoopsSegmBegEndPair +{ + const MbHalfedgeSegmentation & _segm; //< \ru Ссылка на сегментацию. \en Segmentation reference. + + /// \ru Констуктор. \en Constructor. + ActiveLoopsSegmBegEndPair( const MbHalfedgeSegmentation & segm ) noexcept + : _segm( segm ) + { + } + + /// \ru Начальный итератор. \en Begin iterator. + ActiveLoopSegmConstIterator begin() const noexcept + { + return ActiveLoopSegmConstIterator( _segm ); + } + + /// \ru Конечный итератор. \en End Iterator. + ActiveLoopSegmConstIterator end() const noexcept + { + return ActiveLoopSegmConstIterator( _segm, false ); + } +}; + + +/** \brief \ru Итератор по подрегионам сегментации для поддержки range-based for. + \en Subregion iterator for haldedge range based for support +*/ +struct MATH_CLASS ActiveSubRegionConstIterator +{ + const MbHalfedgeSegmentation & _segm; //< \ru Ссылка на сегментацию. \en Segmentation reference. + size_t _iSubregion = SYS_MAX_T; //< \ru Индекс текущего подрегиона. \en An actual subregion index. + + /** \brief \ru Конструктор. \en Constructor. + \param[in] segm - \ru Сегментация. \en Halfedge segmentation. + \param[in] begin - \ru Если true создает начальный итератор, иначе - конечный. + \en If true creates begin iterator, creates end iterator otherwise. + */ + ActiveSubRegionConstIterator( const MbHalfedgeSegmentation & segm, bool begin = true ) noexcept; + + /// \ru Оператор инкремента. \en An increment operator. + ActiveSubRegionConstIterator & operator ++() noexcept; + /// \ru Оператор сравнения. \en A comparison operator. + bool operator != ( const ActiveSubRegionConstIterator & it ) const noexcept; + /// \ru Доступ к данным. \en Data access. + const MbSegmentationSubRegion & operator*() const noexcept; +}; + + +/** \brief \ru Объект хранящий begin() и end() для итерации по подрегионам для поддержки range-based for. + \en Storage for begin-end pair to support halfedge range-based for iteration +*/ +struct MATH_CLASS ActiveSubRegionsBegEndPair +{ + const MbHalfedgeSegmentation & _segm; //< \ru Ссылка на сегментацию. \en Segmentation reference. + + /// \ru Констуктор. \en Constructor. + ActiveSubRegionsBegEndPair( const MbHalfedgeSegmentation & segm ) noexcept + : _segm( segm ) + { + } + + /// \ru Начальный итератор. \en Begin iterator. + ActiveSubRegionConstIterator begin() const noexcept + { + return ActiveSubRegionConstIterator( _segm ); + } + + /// \ru Конечный итератор. \en End Iterator. + ActiveSubRegionConstIterator end() const noexcept + { + return ActiveSubRegionConstIterator( _segm, false ); + } +}; + + +/** \brief \ru Итератор по дрегионам сегментации для поддержки range-based for. + \en Subregion iterator for haldedge range based for support +*/ +struct MATH_CLASS ActiveRegionConstIterator +{ + const MbHalfedgeSegmentation & _segm; //< \ru Ссылка на сегментацию. \en Segmentation reference. + size_t _iRegion = SYS_MAX_T; //< \ru Индекс текущего региона. \en An actual region index. + + /** \brief \ru Конструктор. \en Constructor. + \param[in] segm - \ru Сегментация. \en Halfedge segmentation. + \param[in] begin - \ru Если true создает начальный итератор, иначе - конечный. + \en If true creates begin iterator, creates end iterator otherwise. + */ + ActiveRegionConstIterator( const MbHalfedgeSegmentation & segm, bool begin = true ) noexcept; + + /// \ru Оператор инкремента. \en An increment operator. + ActiveRegionConstIterator & operator ++() noexcept; + /// \ru Оператор сравнения. \en A comparison operator. + bool operator != ( const ActiveRegionConstIterator & it ) const noexcept; + /// \ru Доступ к данным. \en Data access. + const MbHalfedgeFacet & operator*() const noexcept; +}; + + +/** \brief \ru Объект хранящий begin() и end() для итерации по регионам для поддержки range-based for. + \en Storage for begin-end pair to support halfedge range-based for iteration +*/ +struct MATH_CLASS ActiveRegionsBegEndPair +{ + const MbHalfedgeSegmentation & _segm; //< \ru Ссылка на сегментацию. \en Segmentation reference. + + /// \ru Констуктор. \en Constructor. + ActiveRegionsBegEndPair( const MbHalfedgeSegmentation & segm ) noexcept + : _segm( segm ) + { + } + + /// \ru Начальный итератор. \en Begin iterator. + ActiveRegionConstIterator begin() const noexcept + { + return ActiveRegionConstIterator( _segm ); + } + + /// \ru Конечный итератор. \en End Iterator. + ActiveRegionConstIterator end() const noexcept + { + return ActiveRegionConstIterator( _segm, false ); + } +}; + +#endif // __HALFEDGE_SEGM_RANGE_ITERATORS_H \ No newline at end of file diff --git a/C3d/Include/instance_item.h b/C3d/Include/instance_item.h index c730bb2..b4cf05a 100644 --- a/C3d/Include/instance_item.h +++ b/C3d/Include/instance_item.h @@ -20,8 +20,8 @@ class MbSolid; -class MATH_CLASS MbInstance; -class MATH_CLASS MbAssembly; +class MbInstance; +class MbAssembly; namespace c3d // namespace C3D { diff --git a/C3d/Include/io_tape_define.h b/C3d/Include/io_tape_define.h index c22064e..5ea7780 100644 --- a/C3d/Include/io_tape_define.h +++ b/C3d/Include/io_tape_define.h @@ -202,12 +202,12 @@ // \ru Предварительное объявление классов. // \en The forward declaration of classes. \~ // --- -class MATH_CLASS TapeManager; -class MATH_CLASS TapeRegistrator; +class TapeManager; +class TapeRegistrator; class iobuf_Seq; class IProgressIndicator; class ProgressBarWrapper; -class MATH_CLASS ClassDescriptor; +class ClassDescriptor; struct TapeClassContainer; //---------------------------------------------------------------------------------------- diff --git a/C3d/Include/lump.h b/C3d/Include/lump.h index a08aee4..c2831c2 100644 --- a/C3d/Include/lump.h +++ b/C3d/Include/lump.h @@ -19,7 +19,7 @@ class MbRegDuplicate; -struct MATH_CLASS MbLump; +struct MbLump; class MbSolid; class MbMesh; diff --git a/C3d/Include/math_version.h b/C3d/Include/math_version.h index 9eaa589..29e0b46 100644 --- a/C3d/Include/math_version.h +++ b/C3d/Include/math_version.h @@ -105,6 +105,8 @@ #define MATH_23_HF2_VERSION 0x17000004L ///< \ru Версия файла - 23.0 HF2. \en The file version - 23.0 HF2. \~ \ingroup Base_Tools #define MATH_23_UHF_VERSION 0x17000101L ///< \ru Версия файла - 23.0 UHF (Upper Hot Fix). \en The file version - 23.0 UHF (Upper Hot Fix). \~ \ingroup Base_Tools #define C3D_2024_VERSION 0x17001002L ///< \ru Версия файла - C3D 2024. \en The file version - C3D 2024. \~ \ingroup Base_Tools +#define MATH_24_VERSION 0x18000001L ///< \ru Версия файла - 24.0. \en The file version - 24.0. \~ \ingroup Base_Tools +#define MATH_24_UHF_VERSION 0x18000101L ///< \ru Версия файла - 24.0 UHF (Upper Hot Fix). \en The file version - 24.0 UHF (Upper Hot Fix). \~ \ingroup Base_Tools //------------------------------------------------------------------------------ /// \ru Является ли версия файла 16-битной. \en Whether there is a 16-bit file version. \~ \ingroup Base_Tools @@ -160,9 +162,10 @@ enum MbeWritableReleaseVersion wrv_C3D_2023 = C3D_2023_VERSION, ///< \ru Версия файла - C3D 2023. \en The file version - C3D 2023. wrv_MATH_23 = MATH_23_VERSION, ///< \ru Версия файла - 23.0. \en The file version - 23.0. wrv_C3D_2024 = C3D_2024_VERSION, ///< \ru Версия файла - C3D 2024. \en The file version - C3D 2024. + wrv_MATH_24 = MATH_24_VERSION, ///< \ru Версия файла - 24.0. \en The file version - 24.0. - wrv_PrevRelease = wrv_MATH_23, ///< \ru Версия потока предпоследнего релиза. \en The previous release version. - wrv_LastRelease = wrv_C3D_2024, ///< \ru Версия потока последнего релиза. \en The last release version. + wrv_PrevRelease = wrv_C3D_2024, ///< \ru Версия потока предпоследнего релиза. \en The previous release version. + wrv_LastRelease = wrv_MATH_24, ///< \ru Версия потока последнего релиза. \en The last release version. wrv_MaxPossible = SYS_MAX_INT32 ///< \ru Использовать последнюю версия потока. \en Use current working version. }; diff --git a/C3d/Include/mb_cart_point.h b/C3d/Include/mb_cart_point.h index 08c1a88..f91925d 100644 --- a/C3d/Include/mb_cart_point.h +++ b/C3d/Include/mb_cart_point.h @@ -14,8 +14,8 @@ #include -class MATH_CLASS MbFloatPoint; -class MATH_CLASS MbCartPoint; +class MbFloatPoint; +class MbCartPoint; namespace c3d // namespace C3D diff --git a/C3d/Include/mb_cart_point3d.h b/C3d/Include/mb_cart_point3d.h index ab5a681..efbeb49 100644 --- a/C3d/Include/mb_cart_point3d.h +++ b/C3d/Include/mb_cart_point3d.h @@ -16,8 +16,8 @@ class MbCartPoint; -class MATH_CLASS MbCartPoint3D; -class MATH_CLASS MbFloatPoint3D; +class MbCartPoint3D; +class MbFloatPoint3D; namespace c3d // namespace C3D diff --git a/C3d/Include/mb_cube.h b/C3d/Include/mb_cube.h index afb9ea5..daa7889 100644 --- a/C3d/Include/mb_cube.h +++ b/C3d/Include/mb_cube.h @@ -27,10 +27,10 @@ constexpr size_t CUBE_FACES_COUNT = 6; ///< \ru Количество class MbRect; class MbRect1D; -class MATH_CLASS MbCube; +class MbCube; class MbPlacement3D; class MbCurve3D; -class MATH_CLASS MbSurface; +class MbSurface; namespace c3d // namespace C3D { diff --git a/C3d/Include/mb_data.h b/C3d/Include/mb_data.h index 972addc..31f7ab0 100644 --- a/C3d/Include/mb_data.h +++ b/C3d/Include/mb_data.h @@ -559,8 +559,7 @@ public: MbeFairCurvature accountCurvature; ///< \ru Учет кривизны в концевых точках. \en Accounting for curvature at end points. \~ MbeFairVector accountInflexVector; ///< \ru Учет вектора в точке перегиба при построении NURBzS кривой (0 - направление звена S-полигона, 1 - направление касательной). \en How to take into account the vector at the inflection point at creating NURBzS (0 - direction of segment of S-polygon, 1 - direction of tangent to curve). \~ bool tangentCorrectBspline;///< \ru Сохранение вектора в точке перегиба при построении B-кривой (0 - направление звена S-полигона, 1 - направление касательной). \en Save the vector at the inflection point at creating B-curve (0 - direction of segment of S-polygon, 1 - direction of tangent to curve). \~ - bool yesLoop; ///< \ru Разрешить петли S-полигона. \en Allow loops of S-polygon \~ - bool yesShiftClosedArray; ///< \ru Флаг разрешает сдвиг замкнутого контура. \en The flag enables closed loop shifting. \~ + MbeFixPntTng fixPntTng; ///< \ru Фиксировать точки на касательных / касательные в точках. \en Fix the points on tangents / the tangents on points. MbeFairApprox approx; ///< \ru Метод аппроксимации. \en Approx method. \~ MbeFairMethod create; ///< \ru Исходные ГО: 1 - опорная ломаная, 2 - касательная ломаная. \en Initial GD: 1 - base polyline, 2 - tangent polyline. \~ @@ -577,7 +576,6 @@ public: double realAccuracyBSpl; ///< \ru Точность построения B-сплайна (заданная и фактическая). \en The accuracy of creating the B-spline (given and actual). /// \ru Параметры аппроксимации V-кривой. \en Params of Approximation of V-curve. - size_t defaultEndTngs; ///< \ru Способ построения концевых касательных на окружности (1) аффинное построение (0) упрощенное (2) bool switchEndTangents; ///< \ru Флаги учета значений концевых касательных. \en Flags accounting tangents values. bool switchEndCurvature; ///< \ru Флаги учета значений кривизны. \en Flags accounting curvature values. MbVector3D firstTangent; ///< \ru Касательная в начальной точке. \en Tangent in the first point. @@ -605,11 +603,12 @@ public: public: /// \ru Пустой конструктор. \en Empty constructor. MbFairCurveData() : - fairing( fairSmooth_Yes ), arrange( false ), yesLoop( false ), yesShiftClosedArray( true ), subdivision( fairSubdiv_Single ), + fairing( fairSmooth_Yes ), arrange( false ), subdivision( fairSubdiv_Single ), accountCurvature( fairCur_No ), accountInflexVector( fairVector_Tangent ), tangentCorrectBspline( true ), fixPntTng( fixPntTng_NotFix ), - approx( fairApprox_IsoSpline ), create( fairMethod_Polyline ), degreeBSpline( 8 ), + //approx( fairApprox_KnotsSpline ), create( 1 ), degreeBSpline( 8 ), + approx( fairApprox_IsoSpline ), create( fairMethod_Polyline ), degreeBSpline( 8 ), //DEBUG 2020 25 outFormat( fairFormat_Close ), nSegments( 4 ), numSegment( 0 ), tParam( 0.1 ), clothoidRMin( 50.0 ), clothoidLMax( 200.0 ), clothoidSegms( 10 ), numberOfIterationsBSpl( 1000 ), @@ -617,7 +616,6 @@ public: prt( nullptr ), #endif realAccuracyBSpl( METRIC_ACCURACY*0.1 ), - defaultEndTngs( 0 ), switchEndTangents( false ), switchEndCurvature( false ), firstCurvature( 0.0 ), lastCurvature( 0.0 ), smoothTorsion( false ), clearanceNoisy( 0.002 ), clearanceNoisyIteration( 10 ), scaleParam( 1.0 ), diff --git a/C3d/Include/mb_enum.h b/C3d/Include/mb_enum.h index e75e544..bca4cc1 100644 --- a/C3d/Include/mb_enum.h +++ b/C3d/Include/mb_enum.h @@ -356,7 +356,8 @@ enum MbeLabelState { */ // --- enum MbeSmoothForm { - st_Unknown = -2, ///< \ru Неопределенное сопряжение. \en Undefined blend item. + st_Unknown = -3, ///< \ru Неопределенное сопряжение. \en Undefined blend item. + st_Ellipse = -2, ///< \ru Скругление дугой эллипса с пересчетом радиусов!!! \en Filleting by ellipical arc with recalculating the radii!!! st_Span = -1, ///< \ru Скругление с заданной хордой. \en Fillet with a given chord. st_Fillet = 0, ///< \ru Скругление с заданными радиусами. \en Fillet with given radii. st_Chamfer = 1, ///< \ru Фаска с заданными катетами. \en Chamfer with given cathetuses. @@ -688,7 +689,7 @@ enum MbeFairSubdivision fairSubdiv_No = 0, ///< \ru Без уплотнения. \en Without subdivision. fairSubdiv_Single = 1, ///< \ru Однократное уплотнение. \en Single subdivision. fairSubdiv_Double = 2, ///< \ru Двукратное уплотнение. \en Double subdivision. - fairSubdiv_Thrice = 3 ///< \ru Трехкратное уплотнение. \en Double subdivision. + fairSubdiv_Thrice = 3 ///< \ru Двукратное уплотнение. \en Double subdivision. }; //------------------------------------------------------------------------------ diff --git a/C3d/Include/mb_homogeneous.h b/C3d/Include/mb_homogeneous.h index 6412e60..012c68b 100644 --- a/C3d/Include/mb_homogeneous.h +++ b/C3d/Include/mb_homogeneous.h @@ -14,7 +14,7 @@ #include -class MATH_CLASS MbMatrix; +class MbMatrix; //------------------------------------------------------------------------------ diff --git a/C3d/Include/mb_matrix.h b/C3d/Include/mb_matrix.h index da0e045..c57a097 100644 --- a/C3d/Include/mb_matrix.h +++ b/C3d/Include/mb_matrix.h @@ -19,7 +19,7 @@ #define MATRIX_DIM_2D 3 -class MATH_CLASS MbPlacement; +class MbPlacement; class MbHomogeneous; diff --git a/C3d/Include/mb_matrix3d.h b/C3d/Include/mb_matrix3d.h index f899204..e049b19 100644 --- a/C3d/Include/mb_matrix3d.h +++ b/C3d/Include/mb_matrix3d.h @@ -23,7 +23,7 @@ constexpr size_t AXIS_0Z = 2; // \ru Ось 0Z \en 0Z-axis class MbMatrix; class MbAxis3D; -class MATH_CLASS MbPlacement3D; +class MbPlacement3D; class MbHomogeneous3D; class MbVector3D; class MbCartPoint3D; diff --git a/C3d/Include/mb_nurbs_function.h b/C3d/Include/mb_nurbs_function.h index 0f15c1a..916f998 100644 --- a/C3d/Include/mb_nurbs_function.h +++ b/C3d/Include/mb_nurbs_function.h @@ -31,8 +31,8 @@ class MbContour; class MbContour3D; -class MATH_CLASS MbNurbs; -class MATH_CLASS MbNurbs3D; +class MbNurbs; +class MbNurbs3D; //------------------------------------------------------------------------------ /** \brief \ru Флаг, определяющий построение сплайна, проходящего через точки. @@ -2198,6 +2198,7 @@ size_t DefineApproxPointsClosed( const Curve & curve, size_t pCount, double pmin const double angle = Math::deviateSag; size_t segmCount = curve.GetSegmentsCount(); + bool notZeroLen = pmin < pmax; SArray segmPointsCnt( segmCount, 2 ); SArray tList, restList; @@ -2205,6 +2206,15 @@ size_t DefineApproxPointsClosed( const Curve & curve, size_t pCount, double pmin double tmin, tmax; ptrdiff_t first_Segm = curve.FindSegment( pmin, tmin ); ptrdiff_t last_Segm = curve.FindSegment( pmax, tmax ); + + if ( segmCount == 1 && notZeroLen && !(tmin < tmax) ) { + if ( ::fabs(pmax - pmin) < NULL_REGION ) { + double period = curve.GetPeriod(); + pmax = pmin + period; + tmax = tmin + period; + } + } + ptrdiff_t i = 0; size_t freePntsCount = pCount, j = 0; diff --git a/C3d/Include/mb_placement3d.h b/C3d/Include/mb_placement3d.h index 8d58c60..862a15d 100644 --- a/C3d/Include/mb_placement3d.h +++ b/C3d/Include/mb_placement3d.h @@ -17,11 +17,11 @@ #include -class MbDirection; -class MbCurve3D; -class MbCube; -class MbLine3D; -class MATH_CLASS MbPlacement3D; +class MbDirection; +class MbCurve3D; +class MbCube; +class MbLine3D; +class MbPlacement3D; namespace c3d // namespace C3D { diff --git a/C3d/Include/mb_property.h b/C3d/Include/mb_property.h index f13126f..38fb5e7 100644 --- a/C3d/Include/mb_property.h +++ b/C3d/Include/mb_property.h @@ -1239,7 +1239,7 @@ void RefItemProperty::SetProperties( const MbProperties & props ) \ingroup Model_Properties */ // --- -class MbPolymeshPropertyBase : public MbProperty { +class MATH_CLASS MbPolymeshPropertyBase : public MbProperty { protected: MbPolymesh & _topo; ///< \ru Топология. \en Topology. PrePropType _type; ///< \ru Тип. \en Type. @@ -1289,7 +1289,7 @@ public: \ingroup Model_Properties */ // --- -class MbPolymeshRegionProperty : public MbPolymeshPropertyBase { +class MATH_CLASS MbPolymeshRegionProperty : public MbPolymeshPropertyBase { public: uint32 _facetCount; ///< \ru Количество фасетов. \en Facets count. uint32 _subCount; ///< \ru Количество подрегионов. \en Subregions count. @@ -1328,7 +1328,7 @@ public: \ingroup Model_Properties */ // --- -class MbPolymeshSubRegionProperty : public MbPolymeshPropertyBase { +class MATH_CLASS MbPolymeshSubRegionProperty : public MbPolymeshPropertyBase { public: uint32 _facetCount; ///< \ru Количество фасетов. \en Facets count. uint32 _loopCount; ///< \ru Количество циклов. \en Loops count. @@ -1367,7 +1367,7 @@ public: \ingroup Model_Properties */ // --- -class MbPolymeshLoopProperty : public MbPolymeshPropertyBase { +class MATH_CLASS MbPolymeshLoopProperty : public MbPolymeshPropertyBase { public: uint32 _edgeCount; ///< \ru Количество ребер. \en Edges count. @@ -1405,7 +1405,7 @@ public: \ingroup Model_Properties */ // --- -class MbPolymeshEdgeProperty : public MbPolymeshPropertyBase { +class MATH_CLASS MbPolymeshEdgeProperty : public MbPolymeshPropertyBase { public: uint32 _edgeCount; ///< \ru Количество ребер. \en Edges count. @@ -1445,7 +1445,7 @@ public: \ingroup Model_Properties */ // --- -class MbPolymeshVertexProperty : public MbPolymeshPropertyBase { +class MATH_CLASS MbPolymeshVertexProperty : public MbPolymeshPropertyBase { public: uint32 _edge; ///< \ru Ребро. \en Edge. diff --git a/C3d/Include/mb_rect.h b/C3d/Include/mb_rect.h index d5a9e39..2b88cd6 100644 --- a/C3d/Include/mb_rect.h +++ b/C3d/Include/mb_rect.h @@ -19,8 +19,8 @@ class MbMatrix; -class MATH_CLASS MbRect; -class MATH_CLASS MbRect2D; +class MbRect; +class MbRect2D; namespace c3d // namespace C3D { diff --git a/C3d/Include/mb_smooth_nurbs_fit_curve.h b/C3d/Include/mb_smooth_nurbs_fit_curve.h index d07fc6f..d6670b7 100644 --- a/C3d/Include/mb_smooth_nurbs_fit_curve.h +++ b/C3d/Include/mb_smooth_nurbs_fit_curve.h @@ -22,8 +22,8 @@ #include -class MATH_CLASS MbNurbs3D; -class MATH_CLASS MbNurbs; +class MbNurbs3D; +class MbNurbs; //------------------------------------------------------------------------------- @@ -536,6 +536,8 @@ public: void SetReferenceCurve( const Nurbs * pCurve ) { _pReference = pCurve; } /// \ru Установить коэффициент сглаживания. \en Set smoothing coefficient. void SetSmoothCoefficient( double smooth ) { _coefSmoothing = smooth; } + /// \ru Установить узловой вектор. \en Set knot vector. + void SetKnots( const c3d::DoubleVector & knots ) { _approxKnots = knots; } ///< \ru Получить версию математики. \en Get math version. VERSION GetVersion() const { return _version; } diff --git a/C3d/Include/mb_variables.h b/C3d/Include/mb_variables.h index 3f201a6..bc36b87 100644 --- a/C3d/Include/mb_variables.h +++ b/C3d/Include/mb_variables.h @@ -247,7 +247,7 @@ constexpr uint8 MB_UNSET = 0x80; ///< \ru Битовые флаги н /** \} */ -class MATH_CLASS MbRefItem; +class MbRefItem; class VersionContainer; // \ru Управление реализацией переменных в Math. \en Managing variables implementation in Math. diff --git a/C3d/Include/mb_vector.h b/C3d/Include/mb_vector.h index 96b725c..b7a7af7 100644 --- a/C3d/Include/mb_vector.h +++ b/C3d/Include/mb_vector.h @@ -19,12 +19,12 @@ #include -class MATH_CLASS MbDirection; -class MATH_CLASS MbCartPoint; -class MATH_CLASS MbPlacement; -class MATH_CLASS MbHomogeneous; -class MATH_CLASS MbMatrix; -class MATH_CLASS MbProperties; +class MbDirection; +class MbCartPoint; +class MbPlacement; +class MbHomogeneous; +class MbMatrix; +class MbProperties; //------------------------------------------------------------------------------ diff --git a/C3d/Include/mesh.h b/C3d/Include/mesh.h index 1f8a40b..2a16c4d 100644 --- a/C3d/Include/mesh.h +++ b/C3d/Include/mesh.h @@ -16,7 +16,7 @@ #include -class MATH_CLASS MbMesh; +class MbMesh; class MapPolymeshToMbMesh; class MbMeshTopology; diff --git a/C3d/Include/mesh_float_point3d.h b/C3d/Include/mesh_float_point3d.h index 6cda2f9..c231850 100644 --- a/C3d/Include/mesh_float_point3d.h +++ b/C3d/Include/mesh_float_point3d.h @@ -15,7 +15,7 @@ constexpr float MB_MAXFLOAT = (float)MAXIMON; // \ru Максимальное значение. \en Maximum value. -class MATH_CLASS MbFloatVector3D; +class MbFloatVector3D; //------------------------------------------------------------------------------ diff --git a/C3d/Include/mesh_halfedge_attr.h b/C3d/Include/mesh_halfedge_attr.h index 26594cc..3d80011 100644 --- a/C3d/Include/mesh_halfedge_attr.h +++ b/C3d/Include/mesh_halfedge_attr.h @@ -345,6 +345,15 @@ SIMPLE_FACET_ATTRIBUTE( int, SYS_MAX_UINT, MbHalfedgeAttrIntFacet, MbeTypeAttr:: SIMPLE_EDGE_ATTRIBUTE( size_t, SYS_MAX_T, MbHalfedgeAttrSizetEdge, MbeTypeAttr::ta_SizetValuesEdge ); +//------------------------------------------------------------------------------ +/** \brief \ru Атрибут для пар, ассоциированных с ребрами. + \en The c3d::IndicesPair attribute associated with edges. + \ingroup Data_Structures +*/ +// --- +SIMPLE_EDGE_ATTRIBUTE( c3d::IndicesPair, c3d::IndicesPair( SYS_MAX_T, SYS_MAX_T), MbHalfedgeAttrIndPairEdge, MbeTypeAttr::ta_PairValuesEdge ); + + //------------------------------------------------------------------------------ /** \brief \ru Атрибут для типа size_t, ассоциированных с фасетами. \en The size_t attribute associated with facets. diff --git a/C3d/Include/mesh_halfedge_attr_base.h b/C3d/Include/mesh_halfedge_attr_base.h index 5acb4f4..f97de67 100644 --- a/C3d/Include/mesh_halfedge_attr_base.h +++ b/C3d/Include/mesh_halfedge_attr_base.h @@ -65,6 +65,7 @@ enum class MbeTypeAttr ta_SegmentationSurface, ///< \ru Тип атрибута MbHalfedgeAttrSurfaces. \en Attribute's type is MbHalfedgeAttrSurfaces. ta_Parameters2DEdgeDependent, ///< \ru Тип атрибута MbHalfedgeAttrParamByEdge. \en Attribute's type is MbHalfedgeAttrParamByEdge. ta_Strains, ///< \ru Тип атрибута MbHalfedgeAttrStrains. \en Attribute's type is MbHalfedgeAttrSizetVertex. + ta_PairValuesEdge, ///< \ru Тип атрибута MbHalfedgeAttrIndPairEdge. \en Attribute's type is MbHalfedgeAttrIndPairEdge. ta_ContainerFacet = 1000, ///< \ru Внутренний тип атрибута MbHalfedgeAttrContainerFacet. \en Attribute's inner type is MbHalfedgeAttrContainerFacet. ta_ContainerEdge, ///< \ru Внутренний тип атрибута MbHalfedgeAttrContainerEdge. \en Attribute's inner type is MbHalfedgeAttrContainerEdge. ta_ContainerVertex, ///< \ru Внутренний тип атрибута MbHalfedgeAttrContainerVertex. \en Attribute's inner type is MbHalfedgeAttrContainerVertex. diff --git a/C3d/Include/mesh_primitive.h b/C3d/Include/mesh_primitive.h index e8f9081..cf66866 100644 --- a/C3d/Include/mesh_primitive.h +++ b/C3d/Include/mesh_primitive.h @@ -25,12 +25,12 @@ class MbRect; class MbCurve; class MbPolyline3D; class MbPlacement3D; -class MATH_CLASS MbPrimitive; -class MATH_CLASS MbPolygon3D; -class MATH_CLASS MbPolygon; +class MbPrimitive; +class MbPolygon3D; +class MbPolygon; class MbFloatAxis3D; class MbFloatPoint3D; -class MATH_CLASS MbGrid; +class MbGrid; struct MbGridSearchTree; diff --git a/C3d/Include/mesh_triangle.h b/C3d/Include/mesh_triangle.h index 931fb14..0e0520b 100644 --- a/C3d/Include/mesh_triangle.h +++ b/C3d/Include/mesh_triangle.h @@ -16,7 +16,7 @@ #include -class MATH_CLASS MbTriangle; +class MbTriangle; namespace c3d // namespace C3D { diff --git a/C3d/Include/model_item.h b/C3d/Include/model_item.h index 389b516..403e49f 100644 --- a/C3d/Include/model_item.h +++ b/C3d/Include/model_item.h @@ -23,7 +23,7 @@ #include -class MATH_CLASS MbItem; +class MbItem; namespace c3d // namespace C3D { typedef SPtr ItemSPtr; diff --git a/C3d/Include/name_item.h b/C3d/Include/name_item.h index 226238f..f577837 100644 --- a/C3d/Include/name_item.h +++ b/C3d/Include/name_item.h @@ -26,9 +26,9 @@ #include -class MATH_CLASS MbProperties; -class MATH_CLASS MbName; -class MATH_CLASS MbSNameMaker; +class MbProperties; +class MbName; +class MbSNameMaker; namespace c3d // namespace C3D { @@ -618,8 +618,8 @@ public: return name; } - friend class MATH_CLASS MbNameMaker; - friend class MATH_CLASS MbSNameMaker; + friend class MbNameMaker; + friend class MbSNameMaker; friend MATH_FUNC (int) MbDefNameCompare ( const MbName & n1, const MbName & n2 ); friend MATH_FUNC (int) MbMemDefNameCompare( const MbName & n1, const MbName & n2 ); @@ -852,8 +852,8 @@ public: */ // --- class MATH_CLASS MbNamePairList { - friend class MATH_CLASS MbNameMaker; - friend class MATH_CLASS MbSNameMaker; + friend class MbNameMaker; + friend class MbSNameMaker; private: mutable CSSArray checkList; ///< \ru Имена объектов и их копий. \en Names of objects and of its duplicates. public: @@ -929,9 +929,9 @@ private: // ////////////////////////////////////////////////////////////////////////////////////////// -class MATH_CLASS MbTopologyItem; -class MATH_CLASS MbPrimitive; -class MATH_CLASS MbTopologyProxy; +class MbTopologyItem; +class MbPrimitive; +class MbTopologyProxy; //---------------------------------------------------------------------------------------- /** \brief \ru Генератор имен. diff --git a/C3d/Include/op_binding_data.h b/C3d/Include/op_binding_data.h index fc1b064..dbe98ac 100644 --- a/C3d/Include/op_binding_data.h +++ b/C3d/Include/op_binding_data.h @@ -21,9 +21,9 @@ class MbMatrix3D; class MbAxis3D; -class MATH_CLASS MbCurveEdge; -class MATH_CLASS MbFace; -class MATH_CLASS MbFaceShell; +class MbCurveEdge; +class MbFace; +class MbFaceShell; struct MbItemIndex; struct MbEdgeFacesIndexes; diff --git a/C3d/Include/op_curve_parameter.h b/C3d/Include/op_curve_parameter.h index f4247c8..015fcf4 100644 --- a/C3d/Include/op_curve_parameter.h +++ b/C3d/Include/op_curve_parameter.h @@ -24,7 +24,7 @@ #include class MbSurfaceCurve; -class MATH_CLASS MbCurveExtensionParameters; +class MbCurveExtensionParameters; //------------------------------------------------------------------------------ /** \brief \ru Базовый класс для параметров создания кривой пересечения поверхностей. @@ -1827,18 +1827,22 @@ public: \en Initialize parameters for wrapping algorithm. \~ \details \ru Инициализация параметров для алгоритма сворачивания. \en Initialize parameters for wrapping algorithm. \~ - \param[in] curves - \ru Кривые, копии которых будут свёрнуты. - \en Curves, copies of which will be wrapped. \~ - \param[in] points - \ru Двумерные точки, которые будут свёрнуты. - \en Two-dimension points to be wrapped. \~ - \param[in] vals - \ru Параметры операции сворачивания. - \en The parameters of wrap operation.\~ - \param[in] operNames - \ru Именователь с версией операции. - \en Names maker with operation version. \~ - \param[in] cutByBounds - \ru Нужно ли обрезать полученные кривые по границам поверхности? - \en Whether the result curves to be cut with the surface bounds? \~ - \param[in] copyCurves - \ru Сохранить ли в этом классе параметров копии кривых. - \en Whether to save the curves copies in this parameter class. \~ + \param[in] curves - \ru Кривые, копии которых будут свёрнуты. + \en Curves, copies of which will be wrapped. \~ + \param[in] points - \ru Двумерные точки, которые будут свёрнуты. + \en Two-dimension points to be wrapped. \~ + \param[in] vals - \ru Параметры операции сворачивания. + \en The parameters of wrap operation.\~ + \param[in] operNames - \ru Именователь с версией операции. + \en Names maker with operation version. \~ + \param[in] cutByBounds - \ru Нужно ли обрезать полученные кривые по границам поверхности? + \en Whether the result curves to be cut with the surface bounds? \~ + \param[in] copyCurves - \ru Сохранить ли в этом классе параметров копии кривых? + \en Whether to save the curves copies in this parameter class? \~ + \param[in] removeExistCurves - \ru Если true, ранее добавленные кривые будут удалены. + \en If it is true the earlier added curves will be deleted. \~ + \param[in] removeExistPoints - \ru Если true, ранее добавленные точки будут удалены. + \en If it is true the earlier added points will be deleted. \~ */ template // c3d::ConstPlaneCurvesSPtrVector, c3d::ConstSpaceCurvesSPtrVector void InitWrap( const CurvesVector & curves, @@ -1846,24 +1850,30 @@ public: const MbWrapValues & vals, const MbSNameMaker & operNames, bool cutByBounds, - bool copyCurves ); + bool copyCurves, + bool removeExistCurves, + bool removeExistPoints ); /** \brief \ru Инициализация параметров для алгоритма разворачивания. \en Initialize parameters for unwrapping algorithm. \~ \details \ru Инициализация параметров для алгоритма разворачивания. \en Initialize parameters for unwrapping algorithm. \~ - \param[in] curves - \ru Кривые, копии которых будут развёрнуты. - \en Curves, copies of which will be unwrapped. \~ - \param[in] points - \ru Двумерные точки, которые будут развёрнуты. - \en Two-dimension points to be unwrapped. \~ - \param[in] vals - \ru Параметры операции разворачивания. - \en The parameters of unwrap operation.\~ - \param[in] operNames - \ru Именователь с версией операции. - \en Names maker with operation version. \~ - \param[in] surfBreakParam - \ru Место резки периодической поверхности. - \en The place, where the periodic surface is to be cut. \~ - \param[in] copyCurves - \ru Сохранить ли в этом классе параметров копии кривых. - \en Whether to save the curves copies in this parameter class. \~ + \param[in] curves - \ru Кривые, копии которых будут развёрнуты. + \en Curves, copies of which will be unwrapped. \~ + \param[in] points - \ru Двумерные точки, которые будут развёрнуты. + \en Two-dimension points to be unwrapped. \~ + \param[in] vals - \ru Параметры операции разворачивания. + \en The parameters of unwrap operation.\~ + \param[in] operNames - \ru Именователь с версией операции. + \en Names maker with operation version. \~ + \param[in] surfBreakParam - \ru Место резки периодической поверхности. + \en The place, where the periodic surface is to be cut. \~ + \param[in] copyCurves - \ru Сохранить ли в этом классе параметров копии кривых. + \en Whether to save the curves copies in this parameter class. \~ + \param[in] removeExistCurves - \ru Если true, ранее добавленные кривые будут удалены. + \en If it is true the earlier added curves will be deleted. \~ + \param[in] removeExistPoints - \ru Если true, ранее добавленные точки будут удалены. + \en If it is true the earlier added points will be deleted. \~ */ template // c3d::ConstPlaneCurvesSPtrVector, c3d::ConstSpaceCurvesSPtrVector void InitUnwrap( const CurvesVector & curves, @@ -1871,7 +1881,9 @@ public: const MbWrapValues & vals, const MbSNameMaker & operNames, double surfBreakParam, - bool copyCurves ); + bool copyCurves, + bool removeExistCurves, + bool removeExistPoints ); /// \ru Дать двумерные кривые. \en Get two-dimensional curves. \~ const c3d::ConstPlaneCurvesSPtrVector & GetCurves() const { return _curves; } @@ -2067,6 +2079,59 @@ public: */ DEPRECATE_DECLARE_REPLACE( MbCurvesWrappingParams::_surfBreakParam ) void SetUSeamStitch( bool /*s*/ ) { } + + /** \brief \ru Инициализация параметров для алгоритма сворачивания. + \en Initialize parameters for wrapping algorithm. \~ + \details \ru Инициализация параметров для алгоритма сворачивания. + \en Initialize parameters for wrapping algorithm. \~ + \param[in] curves - \ru Кривые, копии которых будут свёрнуты. + \en Curves, copies of which will be wrapped. \~ + \param[in] points - \ru Двумерные точки, которые будут свёрнуты. + \en Two-dimension points to be wrapped. \~ + \param[in] vals - \ru Параметры операции сворачивания. + \en The parameters of wrap operation.\~ + \param[in] operNames - \ru Именователь с версией операции. + \en Names maker with operation version. \~ + \param[in] cutByBounds - \ru Нужно ли обрезать полученные кривые по границам поверхности? + \en Whether the result curves to be cut with the surface bounds? \~ + \param[in] copyCurves - \ru Сохранить ли в этом классе параметров копии кривых. + \en Whether to save the curves copies in this parameter class. \~ + */ + template // c3d::ConstPlaneCurvesSPtrVector, c3d::ConstSpaceCurvesSPtrVector + DEPRECATE_DECLARE_REPLACE( InitWrap with parameters removeExistCurves and removeExistPoints ) + void InitWrap( const CurvesVector & curves, + const c3d::ParamPointsVector & points, + const MbWrapValues & vals, + const MbSNameMaker & operNames, + bool cutByBounds, + bool copyCurves ); + + /** \brief \ru Инициализация параметров для алгоритма разворачивания. + \en Initialize parameters for unwrapping algorithm. \~ + \details \ru Инициализация параметров для алгоритма разворачивания. + \en Initialize parameters for unwrapping algorithm. \~ + \param[in] curves - \ru Кривые, копии которых будут развёрнуты. + \en Curves, copies of which will be unwrapped. \~ + \param[in] points - \ru Двумерные точки, которые будут развёрнуты. + \en Two-dimension points to be unwrapped. \~ + \param[in] vals - \ru Параметры операции разворачивания. + \en The parameters of unwrap operation.\~ + \param[in] operNames - \ru Именователь с версией операции. + \en Names maker with operation version. \~ + \param[in] surfBreakParam - \ru Место резки периодической поверхности. + \en The place, where the periodic surface is to be cut. \~ + \param[in] copyCurves - \ru Сохранить ли в этом классе параметров копии кривых. + \en Whether to save the curves copies in this parameter class. \~ + */ + template // c3d::ConstPlaneCurvesSPtrVector, c3d::ConstSpaceCurvesSPtrVector + DEPRECATE_DECLARE_REPLACE( InitUnwrap with parameters removeExistCurves and removeExistPoints ) + void InitUnwrap( const CurvesVector & curves, + const c3d::ParamPointsVector & points, + const MbWrapValues & vals, + const MbSNameMaker & operNames, + double surfBreakParam, + bool copyCurves ); + private: /// \ru Добавить двумерные или трехмерные кривые с проверкой на нули. \en Add two- or three-dimension curves with nullptr check. \~ template diff --git a/C3d/Include/op_direct_mod_parameter.h b/C3d/Include/op_direct_mod_parameter.h index f07f68b..7c45cc9 100644 --- a/C3d/Include/op_direct_mod_parameter.h +++ b/C3d/Include/op_direct_mod_parameter.h @@ -450,8 +450,8 @@ public: class MATH_CLASS MbModifiedSolidParams : public MbCollectFacesParams { protected: - MbSNameMaker _names; ///< \ru Именователь. \en Name maker. - bool _hotPointsOn; ///< \ru Флаг расчета хот точек. \en Hot points calculation flag. + mutable SPtr _names; ///< \ru Именователь. \en Name maker. + bool _hotPointsOn; ///< \ru Флаг расчета хот точек. \en Hot points calculation flag. private: MbModifiedSolidParams(); @@ -840,9 +840,9 @@ public: /** \} */ /// \ru Получить именователь операции. \en Get the object defining names generation in the operation. - const MbSNameMaker & GetNameMaker() const { return _names; } + const MbSNameMaker & GetNameMaker() const; /// \ru Получить именователь операции. \en Get the object defining names generation in the operation. - MbSNameMaker & SetNameMaker() { return _names; } + MbSNameMaker & SetNameMaker(); /// \ru Установить именователь операции. \en Set the object defining names generation in the operation. void SetNameMaker( const MbSNameMaker & other, bool setVersion = true ); diff --git a/C3d/Include/op_polymesh_parameter.h b/C3d/Include/op_polymesh_parameter.h index 7347afb..53d7450 100644 --- a/C3d/Include/op_polymesh_parameter.h +++ b/C3d/Include/op_polymesh_parameter.h @@ -340,15 +340,30 @@ public: // --- class MATH_CLASS MbDrapeShellResults { +public: + //------------------------------------------------------------------------------ + /** \brief \ru Перечисление для типа ошибок драпировки. + \en Error code type. \~ + \details \ru Перечисление для типа ошибок драпировки. + \en Error code type. \~ + */ + // --- + enum class DrapErrorType : uint + { + unbuiltCells = 0x01, ///< \ru Невозможно построить некоторые ячейки. \en It is not possible to build some cells. + fabricOverlapping = 0x02 ///< \ru Наложение разных частей ткани. \en Overlapping fabric pieces were found. + }; + private: - SPtr _mesh; ///< \ru Результат. \en The result. \~ - std::vector _sides; ///< \ru Полилинии сторон ячеек. \en Cell sides polylines. \~ - std::vector _warp; ///< \ru Полилинии для нулевой нити основы. \en Warp polylines. \~ - std::vector _weft; ///< \ru Полилинии для нулевой нити утка. \en Weft polylines. \~ - MbHalfedgeAttrSizetEdge * _pAttrId; ///< \ru Атрибут индексов сторон ячеек. \en An attribute for cell sides indices. \~ - MbHalfedgeAttrDoubleEdge * _pAttrAng; ///< \ru Атрибут углов сторон ячеек. \en An attribute for cell sides angles. \~ - MbHalfedgeAttrBoolVertex * _pAttrNode; ///< \ru Атрибут флагов узлов ткани. \en An attribute for fiber nodes flags. \~ - MbHalfedgeAttrSizetEdge * _pAttrDir; ///< \ru Атрибут направлений сторон ячеек ткани. \en An attribute for cell sides directions. \~ + SPtr _mesh; ///< \ru Результат. \en The result. \~ + std::vector _sides; ///< \ru Полилинии сторон ячеек. \en Cell sides polylines. \~ + std::vector _warp; ///< \ru Полилинии для нулевой нити основы. \en Warp polylines. \~ + std::vector _weft; ///< \ru Полилинии для нулевой нити утка. \en Weft polylines. \~ + MbHalfedgeAttrSizetEdge * _pAttrId; ///< \ru Атрибут индексов сторон ячеек. \en An attribute for cell sides indices. \~ + MbHalfedgeAttrDoubleEdge * _pAttrAng; ///< \ru Атрибут углов сторон ячеек. \en An attribute for cell sides angles. \~ + MbHalfedgeAttrBoolVertex * _pAttrNode; ///< \ru Атрибут флагов узлов ткани. \en An attribute for fiber nodes flags. \~ + MbHalfedgeAttrSizetEdge * _pAttrDir; ///< \ru Атрибут направлений сторон ячеек ткани. \en An attribute for cell sides directions. \~ + uint _errorCodesMask; ///< \ru Коды ошибок драпировки. \en Codes of draping errors. \~ public: /// \ru Конструктор. \en Constructor. @@ -444,6 +459,15 @@ public: */ const MbHalfedgeAttrSizetEdge * GetDirectionalAttribute() const { return _pAttrDir; } + // \ru Очистить коды ошибок. \en Clear error codes. \~ + void ClearErrorCodes() { _errorCodesMask = 0; } + // \ru Добавить код ошибки. \en Add error code. \~ + void AddErrorCode( DrapErrorType type ) { _errorCodesMask |= static_cast( type ); } + // \ru Проверить наличие кода ошибки. \en Check for an error code. \~ + bool HasErrorCode( DrapErrorType type ) const { return _errorCodesMask & static_cast( type ); } + // \ru Получить маску кодов ошибок. \en Get an error code mask. \~ + uint GetErrorCodesMask() const { return _errorCodesMask; } + // \ru Инициализировать атрибуты сетки. \en Initialize the mesh attributes. \~ void InitAttributes(); @@ -726,4 +750,34 @@ public: OBVIOUS_PRIVATE_COPY( MbFillPolymeshHoleParams ); }; + +//------------------------------------------------------------------------------ +/** \brief \ru Параметры расчета нормалей в вершинах полигонального объекта. + \en Parameters for calculation of normal vectors at the vertices of a polygonal object. \~ + \details \ru Параметры расчета нормалей в вершинах полигонального объекта. \n + \en Parameters for calculation of normal vectors at the vertices of a polygonal object. \~ + \warning \ru В разработке. + \en Under development. \~ +*/ +// --- +class MATH_CLASS MbPolymeshNormalsParams +{ +private: + bool _bUseSegmentation; ///< \ru Учет сегментации. \en Use segmentation data. \~ + +public: + /// \ru Конструктор. \en Constructor. + MbPolymeshNormalsParams( bool bUseSegmentation ) + : _bUseSegmentation( bUseSegmentation ) + {} + /// \ru Деструктор. \en Destructor. + ~MbPolymeshNormalsParams() {} + +public: + // \ru Получить флаг учета сегментации. \en Segmentation usage flag. \~ + bool GetUseSegmentation() const { return _bUseSegmentation; } + + OBVIOUS_PRIVATE_COPY( MbPolymeshNormalsParams ); +}; + #endif // __OP_POLYMESH_PARAMETERS_H diff --git a/C3d/Include/op_shell_parameter.h b/C3d/Include/op_shell_parameter.h index 0d7d7c7..fe9a91a 100644 --- a/C3d/Include/op_shell_parameter.h +++ b/C3d/Include/op_shell_parameter.h @@ -53,6 +53,11 @@ public: ec_sharp = 3, ///< \ru Если в точке стыкуются два выпуклых (вогнутых) и одно вогнутое (выпуклое) ребро, то первыми обрабатываются выпуклые (вогнутые) ребра. \en If two convex (concave) and one concave (convex) edge are mated at the point, then concave (convex) edges are processed at the first. }; + /* \ru ВНИМАНИЕ!!! Все открытые поля будут перенесены в закрытую секцию. + Необходимо использовать соответствующие функции инициализации и функции доступа. + \en ATTENTION!!! All open fields will be moved to the closed section. + It is necessary to use the appropriate initialization functions and access functions. + */ public: double distance1; ///< \ru Радиус кривизны/катет на первой поверхности. \en Radius of curvature/leg on the first surface. double distance2; ///< \ru Радиус кривизны/катет на второй поверхности. \en Radius of curvature/leg on the second surface. @@ -92,6 +97,8 @@ public: \en Constructor. \~ \details \ru Конструктор по параметрам. \en Constructor by parameters. \~ + \deprecated \ru Конструктор устарел, взамен использовать функции инициализации. + \en The constructor is deprecated. Instead, use initialization functions. \~ \param[in] d1, d2 - \ru Радиусы кривизны/катеты. \en Radii of curvature/catheti. \~ \param[in] f - \ru Способ построения поверхности сопряжения. @@ -111,6 +118,7 @@ public: \param[in] equ - \ru В углах сочленения вставлять тороидальную поверхность. \en In corners of the joint insert toroidal surface. \~ */ + DEPRECATE_DECLARE_REPLACE ( SmoothValues::Init... ) SmoothValues( double d1, double d2, MbeSmoothForm f, double c, bool pro, CornerForm cor, bool autoS, bool keep, bool str, bool equ ) : distance1 ( d1 ) @@ -127,6 +135,8 @@ public: , vector1 ( ) , vector2 ( ) { + if ( form == st_Fillet && ::fabs(::fabs(d1) - ::fabs(d2)) > METRIC_EPSILON ) + form = st_Ellipse; keepCant = autoS ? ts_neutral : ts_negative; if ( keep ) keepCant = ts_positive; @@ -137,6 +147,8 @@ public: \en Constructor. \~ \details \ru Конструктор по параметрам. \en Constructor by parameters. \~ + \deprecated \ru Конструктор устарел, взамен использовать функции инициализации. + \en The constructor is deprecated. Instead, use initialization functions. \~ \param[in] d1, d2 - \ru Радиусы кривизны/катеты. \en Radii of curvature/catheti. \~ \param[in] smoothForm - \ru Способ построения поверхности сопряжения. @@ -154,6 +166,7 @@ public: \param[in] isEquable - \ru В углах сочленения вставлять тороидальную поверхность. \en In corners of the joint insert toroidal surface. \~ */ + DEPRECATE_DECLARE_REPLACE ( SmoothValues::Init... ) SmoothValues( double d1, double d2, MbeSmoothForm smoothForm, @@ -176,7 +189,10 @@ public: , equable ( isEquable ) , vector1 ( ) , vector2 ( ) - { } + { + if ( form == st_Fillet && ::fabs(::fabs(d1) - ::fabs(d2)) > METRIC_EPSILON ) + form = st_Ellipse; + } /// \ru Конструктор копирования. \en Copy-constructor. SmoothValues( const SmoothValues & other, MbRegDuplicate * iReg = nullptr ); @@ -185,7 +201,155 @@ public: /// \ru Функция инициализации. \en Initialization function. void Init( const SmoothValues & other ); -public: + + /** \brief \ru Функция инициализации скругления сферой с равными отступами от поверхностей. + \en Function for initializing filleting with a sphere with equal offsets from surfaces. \~ + \details \ru Функция устанавливает форму и величину отступов, не меняя остальные свойства класса. + Первая опорная кривая, отложенная по нормали к первой поверхности на расстояние rad, + будет совпадать со второй опорной кривой, отложенной по нормали ко второй + поверхности на расстояние rad. + \en The function sets the shape and size of the offsets without changing other properties of the class. + The first support curve, laid out along the normal to the first surface at a distance of rad, + will coincide with the second support curve, laid out along the normal to the second + surface at a distance of rad.\~ + \param[in] rad - \ru Радиус сферы. + \en Radius of a sphere. \~ + \return \ru Возвращает true в случае успеха. + \en Returns true on success. \~ + */ + bool InitEquidistantFillet( double rad ); + + /** \brief \ru Функция инициализации скругления сферой с разными отступами от поверхностей. + \en Function for initializing filleting with a sphere with different offsets from surfaces. \~ + \details \ru Функция устанавливает форму и величину отступов, не меняя остальные свойства класса. + Первая опорная кривая, отложенная по нормали к первой поверхности на расстояние r1, + будет совпадать со второй опорной кривой, отложенной по нормали ко второй + поверхности на расстояние r2. Не путать со скруглением эллипсом! + \en The function sets the shape and size of the offsets without changing other properties of the class. + The first support curve, laid out along the normal to the first surface at a distance of r1, + will coincide with the second support curve, laid out along the normal to the second + surface at a distance of r2. Not to be confused with ellipse filleting!\~ + \param[in] r1, r2 - \ru Величины отступов. + \en Offset values. \~ + \return \ru Возвращает true в случае успеха. + \en Returns true on success. \~ + */ + bool InitEquidistantFillet( double r1, double r2 ); + + /** \brief \ru Функция инициализации скругления сферой с заданной хордой между точками касания. + \en Function for initializing filleting by a sphere with a given chord between the points of contact of the surfaces. \~ + \details \ru Функция устанавливает форму и величину отступов, не меняя остальные свойства класса. + \en The function sets the shape and size of the offsets without changing other properties of the class. \~ + \param[in] chord - \ru Величин хорды. + \en Chord value. \~ + \return \ru Возвращает true в случае успеха. + \en Returns true on success. \~ + */ + bool InitChordFillet( double chord ); + + + /** \brief \ru Функция инициализации скругления "дугой эллипса" + \en Function for initializing the rounding by "ellipse arc" \~ + \details \ru Функция устанавливает форму и величину отступов, не меняя остальные свойства класса. + Каждое сечение скругления представляет собой эллипс с полуосями a и b, оринтированный + таким образом, чтобы большая полуось была направлена по нормали к соответствующей поверхности. + Не путать со скруглением сферой с разными отступами! + \en The function sets the shape and size of the offsets without changing other properties of the class. + Each fillet section is an ellipse with semi-axes a and b, oriented so that the major semi-axis + is directed along the normal to the corresponding surface. Not to be confused with a sphere fillet with different offsets!\~ + \param[in] a, b - \ru Полуоси эллипса. + \en Semi-axes of an ellipse. \~ + \return \ru Возвращает true в случае успеха. + \en Returns true on success. \~ + */ + bool InitEllipseFillet( double a, double b ) ; + + /** \brief \ru Функция инициализации фаски с равными отступами. + \en Function for initializing a chamfer with equal offsets. \~ + \details \ru Функция устанавливает форму и величину отступов, не меняя остальные свойства класса. + \en The function sets the shape and size of the offsets without changing other properties of the class. \~ + \param[in] dist - \ru Величина отступа. + \en Offset value. \~ + \return \ru Возвращает true в случае успеха. + \en Returns true on success. \~ + */ + bool InitChamfer( double dist ); + + /** \brief \ru Функция инициализации фаски с разными отступами. + \en Function for initializing a chamfer with different offsets. \~ + \details \ru Функция устанавливает форму и величину отступов, не меняя остальные свойства класса. + \en The function sets the shape and size of the offsets without changing other properties of the class. \~ + \param[in] dist1, dist2 - \ru Величины отступов. + \en Offset values. \~ + \return \ru Возвращает true в случае успеха. + \en Returns true on success. \~ + */ + bool InitChamfer( double dist1, double dist2 ); + + /** \brief \ru Функция инициализации фаски по катету и углу. + \en Function for initializing chamfers by cathetus and angle. \~ + \details \ru Функция устанавливает форму и величину отступов, не меняя остальные свойства класса. + \en The function sets the shape and size of the offsets without changing other properties of the class. \~ + \param[in] firstSide - \ru true - если катет задан для первой поверхности. + \en true - if the cathetus is specified for the first surface. \~ + \param[in] dist - \ru Величина катета. + \en Cathetus value. \~ + \param[in] ang - \ru Величина угла в градусах (от 0 до 90). + \en The angle value in degrees (from 0 to 90). \~ + \return \ru Возвращает true в случае успеха. + \en Returns true on success. \~ + */ + bool InitOneSideChamfer( bool firstSide, double dist, double ang ); + + /** \brief \ru Расчет угла по двум катетам. + \en Calculation of an angle using two cathetus. \~ + \param[in] d1 - \ru Прилежащий катет. + \en Adjacent cathetus. \~ + \param[in] d2 - \ru Противолежащий катет. + \en Opposite cathetus. \~ + \param[in] ang - \ru Величина угла в градусах (от 0 до 90). + \en The angle value in degrees (from 0 to 90). \~ + \return \ru Возвращает угол в градусах. + \en Returns angle value in degrees. \~ + */ + static double GetAngleBySide( double d1, double d2 ); + + + /** \brief \ru Функция модификации величины отступов. + \en Function for modifying the size of offsets. \~ + \details \ru Функция меняет отступы в соответствии с установленной формой в функциях инициализации. + Для скругления хордой используется только первый отступ. + Для фаски по катету и углу будет произведен перерасчет угла по двум катетам + Для остальных форм будут установлены переданные в функцию отступы. + \en The function changes the offsets in accordance with the form set in the initialization functions. + For chord filleting, only the first offset is used. For chamfering by cathetus and angle, the angle + will be recalculated by two cathetus. For other forms, the offsets passed to the function will be set. \~ + \param[in] d1, d2 - \ru Величины отступов. + \en Offset values. \~ + \return \ru Возвращает true в случае успеха. + \en Returns true on success. \~ + */ + bool ModifyDistances( double d1, double d2 ); + + /** \brief \ru Установка опций операции. + \en Setting operation options. \~ + \param[in] c - \ru Коэффициент формы, изменяется от 0.05 до 0.95 (при 0 - дуга окружности). + \en Coefficient of shape is changed from 0.05 to 0.95 (if 0 - circular arc). \~ + \param[in] pro - \ru Продолжить по касательной. + \en Prolong along the tangent. \~ + \param[in] cor - \ru Способ скругления "чемоданных" углов. + \en Method for bending corner of three surfaces. \~ + \param[in] autoS - \ru Автоопределение сохранения кромки/поверхности. + \en Auto detection of boundary/surface saving. \~ + \param[in] keep - \ru Сохранять кромку (true) или сохранять поверхность скругления/фаски (false). + \en Keep boundary (true) or keep surface of fillet/chamfer (false). \~ + \param[in] str - \ru Строгое скругление. Если false, скруглить хотя бы то, что возможно. + \en Strict fillet. If false - round at least what is possible. \~ + \param[in] equ - \ru В углах сочленения вставлять тороидальную поверхность. + \en In corners of the joint insert toroidal surface. \~ + */ + void SetProperties( double c, bool pro, CornerForm cor, bool autoS, bool keep, bool str, bool equ); + /// \ru Преобразовать объект согласно матрице. \en Transform an object according to the matrix. virtual void Transform( const MbMatrix3D &, MbRegTransform * ireg = nullptr ); /// \ru Сдвинуть объект вдоль вектора. \en Move an object along a vector. @@ -207,34 +371,75 @@ public: void GetBegVector( MbVector3D & vect ) const { vect.Init( vector1 ); } /// \ru Получить вектор нормали к плоскости остановки в конце скругления. \en Get normal vector to the bound plane at the end of the fillet. void GetEndVector( MbVector3D & vect ) const { vect.Init( vector2 ); } - /// \ru Установить радиус кривизны/катет на первой поверхности. \en Set radius of curvature/leg on the first surface. + + /** \brief \ru Установить радиус кривизны/катет на первой поверхности. + \en Set radius of curvature/leg on the first surface. + \deprecated \ru Функция устарела, вместо нее использовать функции инициализации. + \en This function is deprecated, use initialization functions instead. \~ + */ + DEPRECATE_DECLARE_REPLACE ( SmoothValues::Init... ) void SetDistance1( double d ) { distance1 = d; } - /// \ru Установить радиус кривизны/катет на второй поверхности. \en Set radius of curvature/leg on the second surface. + + /** \brief \ru Установить радиус кривизны/катет на второй поверхности. + \en Set radius of curvature/leg on the second surface. + \deprecated \ru Функция устарела, вместо нее использовать функции инициализации. + \en This function is deprecated, use initialization functions instead. \~ + */ + DEPRECATE_DECLARE_REPLACE ( SmoothValues::Init... ) void SetDistance2( double d ) { distance2 = d; } /// \ru Дать радиус кривизны/катет на первой поверхности. \en Get radius of curvature/leg on the first surface. double GetDistance1() const { return distance1; } /// \ru Дать радиус кривизны/катет на второй поверхности. \en Get radius of curvature/leg on the second surface. double GetDistance2() const { return distance2; } - + ///< \ru Тип сопряжения скругление/фаска. \en Mate type of fillet/chamfer. MbeSmoothForm GetForm() const { return form; } + + /** \brief \ru Установить тип сопряжения скругления/фаски. + \en Set form of fillet/chamer. + \deprecated \ru Функция устарела, вместо нее использовать функции инициализации. + \en This function is deprecated, use initialization functions instead. \~ + */ + DEPRECATE_DECLARE_REPLACE ( SmoothValues::Init... ) void SetForm( MbeSmoothForm f ) { form = f; } + ///< \ru Способ обработки углов стыковки трёх рёбер. \en Method of processing corners of connection by three edges. CornerForm GetSmoothCorner() const { return smoothCorner; } + CornerForm &SetSmoothCorner() { return smoothCorner; } void SetSmoothCorner( CornerForm f ) { smoothCorner = f; } + ///< \ru Продолжить по касательной. \en Prolong along the tangent. bool GetProlong() const { return prolong; } + bool & SetProlong() { return prolong; } void SetProlong( bool p ) { prolong = p; } + ///< \ru Автоопределение сохранения кромки (ts_neutral), сохранение поверхности (ts_negative), сохранение кромки (ts_positive). \en Auto detection of boundary saving (ts_neutral), surface saving (ts_negative), boundary saving (ts_positive). ThreeStates GetKeepCant() const { return keepCant; } + ThreeStates&SetKeepCant() { return keepCant; } void SetKeepCant( ThreeStates s ) { keepCant = s; } + ///< \ru При false скруглить хотя бы то, что возможно. \en If false - round at least what is possible. bool GetStrict() const { return strict; } + bool & SetStrict() { return strict; } void SetStrict( bool s ) { strict = s; } + ///< \ru В углах сочленения вставлять тороидальную поверхность (для штамповки листового тела). \en In corners of the joint insert toroidal surface (for stamping sheet solid). bool GetEquable() const { return equable; } + bool & SetEquable() { return equable; } void SetEquable( bool e ) { equable = e; } + ///< \ru Расстояние от начала скругления до точки остановки \en Distance from the beginning of fillet to the stop point. + double GetBegLength() const { return begLength; } + double & SetBegLength() { return begLength; } + + ///< \ru Расстояние от конца скругления до точки остановки. \en Distance from the end of fillet to the stop point. + double GetEndLength() const { return endLength; } + double & SetEndLength() { return endLength; } + + ///< \ru Коэффициент формы\en Coefficient of shape. + double GetConic() const { return conic; } + double & SetConic() { return conic; } + /// \ru Оператор присваивания. \en Assignment operator. SmoothValues & operator = ( const SmoothValues & other ) { Init( other ); @@ -1772,7 +1977,7 @@ public: /// \ru Получить массив весов. \en Get array of weights. bool GetWeights( Array2 & wts ) const; /// \ru Получить плоскость проецирования. \en Get the plane of projection. - const MbPlane * GetCloudPlane() const { return (pointsCloud ? cloudPlane : nullptr);} + const MbPlane * GetCloudPlane() const { return (pointsCloud ? cloudPlane : nullptr); } // SKIP_SA /** \brief \ru Минимально возможный порядок сплайнов в случае облака точек. \en The smallest possible order of splines in the case of point cloud. \~ diff --git a/C3d/Include/op_swept_parameter.h b/C3d/Include/op_swept_parameter.h index a3feb08..21852f1 100644 --- a/C3d/Include/op_swept_parameter.h +++ b/C3d/Include/op_swept_parameter.h @@ -1916,12 +1916,14 @@ public: struct MATH_CLASS MbSectionRule { private: - c3d::FunctionSPtr discr; ///< \ru Функция управления сечением (дискриминант или радиус, может быть nullptr). \en Section control function (discriminant or radius). \~ - c3d::SpaceCurveSPtr track; ///< \ru Кривая, через которую должно пройти сечение. \en The curve that the section should pass through. \~ - c3d::SurfaceSPtr touch; ///< \ru Поверхность, которой должно касаться сечение. \en The surface that the section should touch. \~ - c3d::ShellSPtr shell; ///< \ru Оболочка, которой должно касаться сечение. \en The shell that the section should touch. \~ - MbeSmoothForm sform; ///< \ru Форма поверхности сопряжения (скругления или фаски). \en The blend surface cross-section form (fillet or chamfer). \~ - double ratio; ///< \ru Или натяжение, или скос, или соотношение. \en Or tension, or bevel, or ratio. \~ + c3d::FunctionSPtr discr; ///< \ru Функция управления сечением (дискриминант или радиус, может быть nullptr). \en Section control function (discriminant or radius). \~ + c3d::SpaceCurveSPtr track; ///< \ru Кривая, через которую должно пройти сечение. \en The curve that the section should pass through. \~ + c3d::SurfaceSPtr touch; ///< \ru Поверхность, которой должно касаться сечение. \en The surface that the section should touch. \~ + c3d::ShellSPtr shell; ///< \ru Оболочка, которой должно касаться сечение. \en The shell that the section should touch. \~ + bool faceSide; ///< \ru Строить со стороны нормали поверхности или граней при true. \en Build from the side of the surface or faces normal if true. \~ + std::vector faceIndex; ///< \ru Номера используемых граней оболочки (все при отсутствии). \en The numbers of the shell faces used (all if empty). \~ + MbeSmoothForm sform; ///< \ru Форма поверхности сопряжения (скругления или фаски). \en The blend surface cross-section form (fillet or chamfer). \~ + double ratio; ///< \ru Или натяжение, или скос, или соотношение. \en Or tension, or bevel, or ratio. \~ public: /// \ru Конструктор по умолчанию. \en Empty constructor. @@ -1931,9 +1933,9 @@ public: /// \ru Конструктор по кривой. \en The constructor by function. MbSectionRule( MbCurve3D * cur ); /// \ru Конструктор по поверхности. \en The constructor by surface. - MbSectionRule( MbSurface * sur ); + MbSectionRule( MbSurface * sur, bool side = true ); /// \ru Конструктор по оболочке. \en The constructor by shell. \~ - MbSectionRule( MbFaceShell * sur ); + MbSectionRule( MbFaceShell * she, bool side = true ); /// \ru Конструктор копирования. \en Copy-constructor. \~ MbSectionRule( const MbSectionRule & other ); /// \ru Конструктор копирования. \en Copy-constructor. \~ @@ -1963,6 +1965,26 @@ public: const MbFaceShell * GetShell() const { return shell.get(); } /// \ru Установить оболочку управления сечением. \en Set section control shell. \~ void SetShell( MbFaceShell & s ); + /// \ru С какой стороны касаться поверхностей? \en On which side to touch surfaces? + bool GetFaceSide() const { return faceSide; } + void SetFaceSide( bool fs ) { faceSide = fs; } + /// \ru Выдать номера используемых граней. \en Get used face numbers. + void GetFaceIndex( std::vector & fas ) const; + const std::vector & GetFaceIndex() const { return faceIndex; } + std::vector & SetFaceIndex() { return faceIndex; } + /// \ru Выдать количество используемых граней. \en Get used faces count. + size_t GetFaceIndexCount() const { return faceIndex.size(); } + /// \ru Выдать номер грани. \en Get face number. + MbItemIndex GetFaceIndex( size_t i ) const { + MbItemIndex ind; + if ( i < faceIndex.size() ) + ind = faceIndex[i]; + return ind; + } + /// \ru Добавить номер грани. \en Set face number. + void AddFaceIndex( size_t faceInd ); + void AddFaceIndex( const MbFace * face ); + /// \ru Выдать форму поверхности сопряжения (скругления или фаски). \en Get a blend surface cross-section form (fillet or chamfer). \~ MbeSmoothForm GetSubForm() const { return sform; } /// \ru Установить форму поверхности сопряжения (скругления или фаски). \en Set a blend surface cross-section form (fillet or chamfer). \~ @@ -2289,6 +2311,13 @@ public: const MbSurface * GetDescriptSurface() const { return descript.GetSurface(); } /// \ru Выдать оболочку управления сечением. \en Get section control shell. const MbFaceShell * GetDescriptShell() const { return descript.GetShell(); } + /// \ru С какой стороны касаться поверхностей? \en On which side to touch surfaces? + bool GetFaceSide3() const { return descript.GetFaceSide(); } + void SetFaceSide3( bool fs ) { descript.SetFaceSide(fs); } + /// \ru Выдать количество используемых граней. \en Get used faces count. + size_t GetFaceIndex3Count() const { return descript.GetFaceIndexCount(); } + /// \ru Выдать номера используемых граней. \en Get used face numbers. + MbItemIndex GetFaceIndex3( size_t i ) const { return descript.GetFaceIndex(i); } /// \ru Выдать форму поверхности сопряжения (скругления или фаски). \en Get a blend surface cross-section form (fillet or chamfer). \~ MbeSmoothForm GetSubForm() const { return descript.GetSubForm(); } /// \ru Установить форму поверхности сопряжения (скругления или фаски). \en Set a blend surface cross-section form (fillet or chamfer). \~ diff --git a/C3d/Include/plane_instance.h b/C3d/Include/plane_instance.h index c76b8fb..1e21924 100644 --- a/C3d/Include/plane_instance.h +++ b/C3d/Include/plane_instance.h @@ -17,7 +17,7 @@ #include -class MATH_CLASS MbPlaneInstance; +class MbPlaneInstance; namespace c3d // namespace C3D { typedef SPtr PInstanceSPtr; diff --git a/C3d/Include/point_frame.h b/C3d/Include/point_frame.h index 6b4f23a..c860d7a 100644 --- a/C3d/Include/point_frame.h +++ b/C3d/Include/point_frame.h @@ -20,7 +20,7 @@ #include #include -class MATH_CLASS MbPointFrame; +class MbPointFrame; class MbPoint3D; diff --git a/C3d/Include/reference_item.h b/C3d/Include/reference_item.h index be38bc3..ce8cf6a 100644 --- a/C3d/Include/reference_item.h +++ b/C3d/Include/reference_item.h @@ -44,7 +44,7 @@ enum MbeRefType }; -class MATH_CLASS MbRefItem; +class MbRefItem; namespace c3d // namespace C3D { typedef SPtr RefItemSPtr; diff --git a/C3d/Include/solid.h b/C3d/Include/solid.h index 14611b3..573cc6a 100644 --- a/C3d/Include/solid.h +++ b/C3d/Include/solid.h @@ -13,8 +13,8 @@ #include #include -class MATH_CLASS MbIngotSolidParams; -class MATH_CLASS MbSolid; +class MbIngotSolidParams; +class MbSolid; namespace c3d // namespace C3D { typedef SPtr SolidSPtr; diff --git a/C3d/Include/space_instance.h b/C3d/Include/space_instance.h index 41b8187..7f843fc 100644 --- a/C3d/Include/space_instance.h +++ b/C3d/Include/space_instance.h @@ -23,7 +23,7 @@ class MbCurve3D; class MbSurface; -class MATH_CLASS MbSpaceInstance; +class MbSpaceInstance; namespace c3d // namespace C3D { typedef SPtr SInstanceSPtr; diff --git a/C3d/Include/space_item.h b/C3d/Include/space_item.h index 5d49130..4497a62 100644 --- a/C3d/Include/space_item.h +++ b/C3d/Include/space_item.h @@ -28,14 +28,14 @@ class MbAxis3D; class MbCube; class MbProperty; class MbProperties; -class MATH_CLASS MbMesh; +class MbMesh; struct MbControlData3D; class MbStepData; class MbRegTransform; class MbRegDuplicate; -class MATH_CLASS MbSpaceItem; +class MbSpaceItem; namespace c3d // namespace C3D { typedef SPtr SpaceItemSPtr; ///< \ru Умный указатель на геометрический объект. \en Smart pointer of an geometrical object. diff --git a/C3d/Include/surf_channel_surface.h b/C3d/Include/surf_channel_surface.h index 6d25bee..f0b7e3c 100644 --- a/C3d/Include/surf_channel_surface.h +++ b/C3d/Include/surf_channel_surface.h @@ -66,8 +66,10 @@ public: \en Mate type: \n st_Span - fillet with a given chord \n st_Fillet - fillet with given radii. \~ - \param[in] cn - \ru Коэффициент формы, изменяется от 0.05 до 0.95 (при 0.5 - дуга окружности) - \en Coefficient of shape is changed from 0.05 to 0.95 (if 0.5 - circular arc) \~ + \param[in] cn - \ru Коэффициент формы. Значение 0 соответствует профилю "дуга окружности". + Значения от 0.05 до 0.95 соответствуют коническому сечению. + \en Coefficient of shape. The value 0 corresponds to a "circular arc" profile. + Values between 0.05 and 0.95 represent conic section. \~ \param[in] func - \ru Функция изменения радиуса \en Function of change of the radius \~ \param[in] ev - \ru Равномерная параметризация по дуге или нет @@ -94,8 +96,10 @@ public: \en Mate type: \n st_Span - fillet with a given chord \n st_Fillet - fillet with given radii. \~ - \param[in] cn - \ru Коэффициент формы, изменяется от 0.05 до 0.95 (при 0.5 - дуга окружности) - \en Coefficient of shape is changed from 0.05 to 0.95 (if 0.5 - circular arc) \~ + \param[in] cn - \ru Коэффициент формы. Значение 0 соответствует профилю "дуга окружности". + Значения от 0.05 до 0.95 соответствуют коническому сечению. + \en Coefficient of shape. The value 0 corresponds to a "circular arc" profile. + Values between 0.05 and 0.95 represent conic section. \~ \param[in] func - \ru Функция изменения радиуса \en Function of change of the radius \~ \param[in] byFirst - \ru true - кривая curve2 является кромкой, false - кривая curve1 является кромкой @@ -132,8 +136,10 @@ public: \en Mate type: \n st_Span - fillet with a given chord \n st_Fillet - fillet with given radii. \~ - \param[in] cn - \ru Коэффициент формы, изменяется от 0.05 до 0.95 (при 0.5 - дуга окружности) - \en Coefficient of shape is changed from 0.05 to 0.95 (if 0.5 - circular arc) \~ + \param[in] cn - \ru Коэффициент формы. Значение 0 соответствует профилю "дуга окружности". + Значения от 0.05 до 0.95 соответствуют коническому сечению. + \en Coefficient of shape. The value 0 corresponds to a "circular arc" profile. + Values between 0.05 and 0.95 represent conic section. \~ \param[in] func - \ru Функция изменения радиуса. \en Function of change of the radius. \~ \param[in] byFirst - \ru true - кривая curve2 является кромкой, false - кривая curve1 является кромкой @@ -150,6 +156,8 @@ public: \en Create a fillet surface from two surfaces according to the law. \~ \details \ru В случае успеха создается поверхность скругления с версией >= fsv_Ver1. \en If successful, a fillet surface is created with version >= fsv_Ver1. \~ + \deprecated \ru Конструктор устарел, взамен использовать конструктор с переменным коэффициентом формы. + \en The constructor is deprecated. Instead, use a constructor with a variable shape coefficient. \~ \param[in] rad - \ru Радиус скругления. \en Fillet radius. \~ \param[in] law - \ru Функция домножения радиуса rad, зависящая от параметра u поверхности. @@ -167,7 +175,37 @@ public: \return \ru Возвращает указатель на созданную поверхность скругления в случае успеха, иначе - nullptr. \en Returns a pointer to the created fillet surface if successful, nullptr otherwise. \~ */ - static MbChannelSurface * CreateLawFillet( double rad, MbFunction & law, MbSurfaceCurve & curv1, bool sgn1, MbSurfaceCurve & curv2, bool sgn2, VERSION vers ); + DEPRECATE_DECLARE_REPLACE( CreateLawFillet with a variable shape coefficient ) + static MbChannelSurface * CreateLawFillet( double rad, MbFunction & law, MbSurfaceCurve & curv1, bool sgn1, + MbSurfaceCurve & curv2, bool sgn2, VERSION vers ); + + /** \brief \ru Создать поверхность скругления по двум поверхностям по закону. + \en Create a fillet surface from two surfaces according to the law. \~ + \details \ru В случае успеха создается поверхность скругления с версией >= fsv_Ver1. + \en If successful, a fillet surface is created with version >= fsv_Ver1. \~ + \param[in] rad - \ru Радиус скругления. + \en Fillet radius. \~ + \param[in] law - \ru Функция домножения радиуса rad, зависящая от параметра u поверхности. + \en Multiplication function of radius rad, depending on the parameter u of the surface. \~ + \param[in] curv1 - \ru Опорная кривая в параметрах первой поверхности + \en Support curve at parameters of the first surface \~ + \param[in] sgn1 - \ru Ориентация первой опорной поверхности. + \en The orientation of the first support surface. \~ + \param[in] curv2 - \ru Опорная кривая в параметрах второй поверхности + \en Support curve at parameters of the second surface \~ + \param[in] sgn2 - \ru Ориентация второй опорной поверхности. + \en The orientation of the second support surface. \~ + \param[in] cn - \ru Функция коэффициента формы. Если функция не задана или значение коэффициента 0,то в качестве профиля используется "дуга окружности". + Значения от 0.05 до 0.95 соответствуют коническому сечению. Переменный коэффициент формы используется только для создания скругления граней. + \en A function of the shape coefficient. If the function is not specified or the coefficient value is 0, then the "circle arc" profile is used. + Values between 0.05 and 0.95 represent to the conic section. A variable shape coefficient is only used to create faces fillets. \~ + \param[in] vers - \ru Версия. + \en Version. \~ + \return \ru Возвращает указатель на созданную поверхность скругления в случае успеха, иначе - nullptr. + \en Returns a pointer to the created fillet surface if successful, nullptr otherwise. \~ + */ + static MbChannelSurface * CreateLawFillet( double rad, MbFunction & law, MbSurfaceCurve & curv1, bool sgn1, + MbSurfaceCurve & curv2, bool sgn2, MbFunction * cn, VERSION vers ); /** \brief \ru Создать поверхность скругления по поверхности и кромке с радиусом по закону \en Create fillet surface by support surface and by kerb-curve with a radius that varies according to the law. \~ @@ -195,34 +233,10 @@ public: static MbChannelSurface * CreateKerbLawFillet( double rad, MbFunction & law, MbSurfaceCurve & curv1, bool sgn1, MbSurfaceCurve & curv2, bool sgn2, bool byFirst, VERSION vers ); - /// \ru Создать поверхность скругления по поверхности и кромке с касанием - /// \en - /** \brief \ru Создать поверхность скругления по двум поверхностям с указанием кромки касания - \en Create a fillet surface by two support surfaces, specifying the kerb-curve of touching \~ - \details \ru В случае успеха создается поверхность скругления с версией >= fsv_Ver1. - \en If successful, a fillet surface is created with version >= fsv_Ver1. \~ - \param[in] curv1 - \ru Опорная кривая в параметрах первой поверхности - \en Support curve at parameters of the first surface \~ - \param[in] sgn1 - \ru Ориентация первой опорной поверхности. - \en The orientation of the first support surface. \~ - \param[in] curv2 - \ru Опорная кривая в параметрах второй поверхности - \en Support curve at parameters of the second surface \~ - \param[in] sgn2 - \ru Ориентация второй опорной поверхности. - \en The orientation of the second support surface. \~ - \param[in] byFirst - \ru true - кривая curve2 является кромкой, false - кривая curve1 является кромкой - \en True - curve2 curve is fillet, false - curve1 curve is fillet. \~ - \param[in] vers - \ru Версия. - \en Version. \~ - \return \ru Возвращает указатель на созданную поверхность скругления в случае успеха, иначе - nullptr. - \en Returns a pointer to the created fillet surface if successful, nullptr otherwise. \~ - */ - static MbChannelSurface * CreateKerbTouchingFillet( double rad, MbFunction & law, MbSurfaceCurve & curv1, bool sgn1, - MbSurfaceCurve & curv2, bool sgn2, bool byFirst, VERSION vers ); - protected: /// \ru Конструктор для наследников обычной поверхности скругления. \en Constructor for inheritors of ordinary fillet surface. - MbChannelSurface( MbSurfaceCurve & curv1, double d1, - MbSurfaceCurve & curv2, double d2, MbFunction & func ); + MbChannelSurface( MbSurfaceCurve & curv1, double d1, + MbSurfaceCurve & curv2, double d2, MbFunction * cn, MbFunction & func ); MbChannelSurface( MbSurfaceCurve & curv1, double d1, MbSurfaceCurve & curv2, double d2, MbFunction & func, bool byFirst ); MbChannelSurface( const MbChannelSurface &, MbRegDuplicate * ); diff --git a/C3d/Include/surf_fillet_surface.h b/C3d/Include/surf_fillet_surface.h index 5f6bd8d..f28e9f8 100644 --- a/C3d/Include/surf_fillet_surface.h +++ b/C3d/Include/surf_fillet_surface.h @@ -75,15 +75,15 @@ public: }; protected: - MbCurve3D * curve0; ///< \ru Кривая пересечения касательных к поверхностям - всегда не nullptr. \en Intersection curve of tangents to surfaces - always not nullptr. - MbFunction * weights0; ///< \ru Функция веса точек средней кривой curve0. \en Function of weight of points of curve0 mid-curve. - double conic; ///< \ru Коэффициент формы, изменяется от 0.05 до 0.95, определяет вес точек кривой curve0. \en Coefficient of shape is changed between 0.05 and 0.95 and determines weight of points of curve0 curve. - bool even; ///< \ru Равномерная параметризация по дуге или нет. \en Whether arc length parameterization is uniform or not. - bool equable; ///< \ru true - обычная поверхность, false - curve1 или curve2 является кромкой. \en True - ordinary surface, false - curve1 or curve2 is fillet. - bool byCurve1; ///< \ru true - curve2 является кромкой, false - curve1 является кромкой. \en True - curve2 is fillet, false - curve1 is fillet. - MbCurve3D * spine; ///< \ru Кривая центров дуг окружности для случая равномерной параметризации. \en Curve of centers of circular arcs in case of uniform parameterization. - MbVector3D * spineDerUMin; // \ru Производные spine в точках uMin и uMax ( для случая равномерной параметризации ). \en Derivatives of spine at uMin and uMax points (in case of uniform parameterization). - MbVector3D * spineDerUMax; // \ru Производные spine в точках uMin и uMax ( для случая равномерной параметризации ). \en Derivatives of spine at uMin and uMax points (in case of uniform parameterization). + MbCurve3D * curve0; ///< \ru Кривая пересечения касательных к поверхностям - всегда не nullptr. \en Intersection curve of tangents to surfaces - always not nullptr. + MbFunction * weights0; ///< \ru Функция веса точек средней кривой curve0. \en Function of weight of points of curve0 mid-curve. + SPtr conic; ///< \ru Коэффициент формы, изменяется от 0.05 до 0.95, определяет вес точек кривой curve0.Всегда не nullptr. \en Coefficient of shape is changed between 0.05 and 0.95 and determines weight of points of curve0 curve. Always not nullptr. + bool even; ///< \ru Равномерная параметризация по дуге или нет. \en Whether arc length parameterization is uniform or not. + bool equable; ///< \ru true - обычная поверхность, false - curve1 или curve2 является кромкой. \en True - ordinary surface, false - curve1 or curve2 is fillet. + bool byCurve1; ///< \ru true - curve2 является кромкой, false - curve1 является кромкой. \en True - curve2 is fillet, false - curve1 is fillet. + MbCurve3D * spine; ///< \ru Кривая центров дуг окружности для случая равномерной параметризации. \en Curve of centers of circular arcs in case of uniform parameterization. + MbVector3D * spineDerUMin; // \ru Производные spine в точках uMin и uMax ( для случая равномерной параметризации ). \en Derivatives of spine at uMin and uMax points (in case of uniform parameterization). + MbVector3D * spineDerUMax; // \ru Производные spine в точках uMin и uMax ( для случая равномерной параметризации ). \en Derivatives of spine at uMin and uMax points (in case of uniform parameterization). MbeFilletSurfaceVersion version; ///< \ru Версия \en Version. protected: //------------------------------------------------------------------------------ @@ -125,8 +125,10 @@ public: \en Conjugation type: \n st_Span - fillet with a given chord st_Fillet - fillet with given radii \~ - \param[in] cn - \ru Коэффициент формы, изменяется от 0.05 до 0.95 (при 0 - дуга окружности) - \en Coefficient of shape is changed between 0.05 and 0.95 (if 0 - circular arc) \~ + \param[in] cn - \ru Коэффициент формы. Значение 0 соответствует профилю "дуга окружности". + Значения от 0.05 до 0.95 соответствуют коническому сечению. + \en Coefficient of shape. The value 0 corresponds to a "circular arc" profile. + Values between 0.05 and 0.95 represent conic section. \~ \param[in] ev - \ru Равномерная параметризация по дуге или нет \en Whether arc length parameterization is uniform or not \~ */ @@ -151,8 +153,10 @@ public: \en Conjugation type: \n st_Span - fillet with a given chord\n st_Fillet - fillet with given radii \~ - \param[in] cn - \ru Коэффициент формы, изменяется от 0.05 до 0.95 (при 0 - дуга окружности) - \en Coefficient of shape is changed between 0.05 and 0.95 (if 0 - circular arc) \~ + \param[in] cn - \ru Коэффициент формы. Значение 0 соответствует профилю "дуга окружности". + Значения от 0.05 до 0.95 соответствуют коническому сечению. + \en Coefficient of shape. The value 0 corresponds to a "circular arc" profile. + Values between 0.05 and 0.95 represent conic section. \~ \param[in] byFirst - \ru true - кривая curve2 является кромкой, false - кривая curve1 является кромкой \en True - curve2 curve is fillet, false - curve1 curve is fillet. \~ \param[in] ev - \ru Равномерная параметризация по дуге или нет @@ -185,8 +189,10 @@ public: \en Conjugation type: \n st_Span - fillet with a given chord\n st_Fillet - fillet with given radii \~ - \param[in] cn - \ru Коэффициент формы, изменяется от 0.05 до 0.95 (при 0 - дуга окружности) - \en Coefficient of shape is changed between 0.05 and 0.95 (if 0 - circular arc) \~ + \param[in] cn - \ru Коэффициент формы. Значение 0 соответствует профилю "дуга окружности". + Значения от 0.05 до 0.95 соответствуют коническому сечению. + \en Coefficient of shape. The value 0 corresponds to a "circular arc" profile. + Values between 0.05 and 0.95 represent conic section. \~ \param[in] ev - \ru Равномерная параметризация по дуге или нет \en Whether arc length parameterization is uniform or not \~ */ @@ -198,6 +204,8 @@ public: \en Create a fillet surface by two surfaces with a constant radius. \~ \details \ru В случае успеха создается поверхность скругления с версией >= fsv_Ver1. \en If successful, a fillet surface is created with version >= fsv_Ver1. \~ + \deprecated \ru Конструктор устарел, взамен использовать конструктор с переменным коэффициентом формы. + \en The constructor is deprecated. Instead, use a constructor with a variable shape coefficient. \~ \param[in] rad - \ru Радиус скругления. \en Fillet radius. \~ \param[in] curv1 - \ru Опорная кривая в параметрах первой поверхности @@ -208,38 +216,100 @@ public: \en Support curve at parameters of the second surface \~ \param[in] sgn2 - \ru Ориентация второй опорной поверхности. \en The orientation of the second support surface. \~ - \param[in] cn - \ru Коэффициент формы, изменяется от 0.05 до 0.95 (при 0 - дуга окружности) - \en Coefficient of shape is changed between 0.05 and 0.95 (if 0 - circular arc) \~ + \param[in] cn - \ru Коэффициент формы. Значение 0 соответствует профилю "дуга окружности". + Значения от 0.05 до 0.95 соответствуют коническому сечению. + \en Coefficient of shape. The value 0 corresponds to a "circular arc" profile. + Values between 0.05 and 0.95 represent conic section. \~ \param[in] vers - \ru Версия. \en Version. \~ \return \ru Возвращает указатель на созданную поверхность скругления в случае успеха, иначе - nullptr. \en Returns a pointer to the created fillet surface if successful, nullptr otherwise. \~ */ - static MbFilletSurface * CreateSimpleFillet( double rad, MbSurfaceCurve & curv1, bool sgn1, MbSurfaceCurve & curv2, bool sgn2, double conicFact, VERSION vers ); + DEPRECATE_DECLARE_REPLACE ( CreateSimpleFillet with a variable shape coefficient ) + static MbFilletSurface * CreateSimpleFillet( double rad, MbSurfaceCurve & curv1, bool sgn1, + MbSurfaceCurve & curv2, bool sgn2, double cn, VERSION vers ); + + /** \brief \ru Создать поверхность скругления по двум поверхностям с постоянным радиусом. + \en Create a fillet surface by two surfaces with a constant radius. \~ + \details \ru В случае успеха создается поверхность скругления с версией >= fsv_Ver1. + Первая опорная кривая, отложенная по нормали к первой поверхности на расстояние rad1, + будет совпадать со второй опорной кривой, отложенной по нормали ко второй + поверхности на расстояние rad2. + \en If successful, a fillet surface is created with version >= fsv_Ver1. + The first support curve, laid out along the normal to the first surface at a distance of rad1, + will coincide with the second support curve, laid out along the normal to the second + surface at a distance of rad2.\~ + \param[in] curv1, curv2 - \ru Опорные кривые. + \en Support curves. \~ + \param[in] rad1, rad2 - \ru Ориентированные радиусы скругления для опорных поверхностей. + \en Oriented fillet radii for support surfaces. \~ + \param[in] cn - \ru Функция коэффициента формы. Если функция не задана или значение коэффициента 0,то в качестве профиля используется "дуга окружности". + Значения от 0.05 до 0.95 соответствуют коническому сечению. + \en A function of the shape coefficient. If the function is not specified or the coefficient value is 0, then the "circle arc" profile is used. + Values between 0.05 and 0.95 correspond to the conic section. \~ + \param[in] vers - \ru Версия. + \en Version. \~ + \return \ru Возвращает указатель на созданную поверхность скругления в случае успеха, иначе - nullptr. + \en Returns a pointer to the created fillet surface if successful, nullptr otherwise. \~ + */ + static MbFilletSurface * CreateSimpleFillet( MbSurfaceCurve & curv1, double rad1, + MbSurfaceCurve & curv2, double rad2, MbFunction * cn, VERSION vers ); /** \brief \ru Создать поверхность скругления по двум поверхностям "дугой эллипса". \en Create a fillet surface by two surfaces by an "arc of an ellipse". \~ - \details \ru В случае успеха создается поверхность скругления с версией >= fsv_Ver1. - \en If successful, a fillet surface is created with version >= fsv_Ver1. \~ - \param[in] curv1 - \ru Опорная кривая в параметрах первой поверхности - \en Support curve at parameters of the first surface \~ - \param[in] rad1 - \ru Радиус скругления со знаком для поверхности кривой curv1 - \en Fillet radius with sign for surface of curv1 curve \~ - \param[in] curv2 - \ru Опорная кривая в параметрах второй поверхности - \en Support curve at parameters of the second surface \~ - \param[in] rad2 - \ru Радиус скругления со знаком для поверхности кривой curv2 - \en Fillet radius with sign for surface of curv2 curve \~ + \details \ru Каждое сечение поверхности представляет собой эллипс с полуосями rad1 и rad2, оринтированный + таким образом, чтобы большая полуось была направлена по нормали к соответствующей поверхности. + В случае успеха создается поверхность скругления с версией >= fsv_Ver1. + \en If successful, a fillet surface is created with version >= fsv_Ver1. + Each section of the surface is an ellipse with semi-axes rad1 and rad2, + oriented so that the major semi-axis is directed along the normal to the corresponding surface.\~ + If successful, a fillet surface is created with version >= fsv_Ver1. \~ + \deprecated \ru Конструктор устарел, взамен использовать конструктор с переменным коэффициентом формы. + \en The constructor is deprecated. Instead, use a constructor with a variable shape coefficient. \~ + \param[in] curv1, curv2 - \ru Опорные кривые. + \en Support curves. \~ + \param[in] rad1, rad2 - \ru Полуоси эллиптического сечения для первой и второй опорной поверхности. + \en Elliptical section semi-axes for the first and second support surfaces. \~ \param[in] vers - \ru Версия. \en Version. \~ \return \ru Возвращает указатель на созданную поверхность скругления в случае успеха, иначе - nullptr. \en Returns a pointer to the created fillet surface if successful, nullptr otherwise. \~ */ - static MbFilletSurface * CreateEllipticalFillet( MbSurfaceCurve & curv1, double rad1, MbSurfaceCurve & curv2, double rad2, VERSION vers ); + DEPRECATE_DECLARE_REPLACE ( CreateEllipticalFillet with a variable shape coefficient ) + static MbFilletSurface * CreateEllipticalFillet( MbSurfaceCurve & curv1, double rad1, + MbSurfaceCurve & curv2, double rad2, VERSION vers ); + + /** \brief \ru Создать поверхность скругления по двум поверхностям "дугой эллипса". + \en Create a fillet surface by two surfaces by an "arc of an ellipse". \~ + \details \ru Каждое сечение поверхности представляет собой эллипс с полуосями rad1 и rad2, оринтированный + таким образом, чтобы большая полуось была направлена по нормали к соответствующей поверхности. + В случае успеха создается поверхность скругления с версией >= fsv_Ver1. + \en If successful, a fillet surface is created with version >= fsv_Ver1. + Each section of the surface is an ellipse with semi-axes rad1 and rad2, + oriented so that the major semi-axis is directed along the normal to the corresponding surface.\~ + If successful, a fillet surface is created with version >= fsv_Ver1. \~ + \param[in] curv1, curv2 - \ru Опорные кривые. + \en Support curves. \~ + \param[in] rad1, rad2 - \ru Полуоси эллиптического сечения для первой и второй опорной поверхности. + \en Elliptical section semi-axes for the first and second support surfaces. \~ + \param[in] cn - \ru Функция коэффициента формы. Если функция не задана или значение коэффициента 0,то в качестве профиля используется "дуга окружности". + Значения от 0.05 до 0.95 соответствуют коническому сечению. Переменный коэффициент формы используется только для создания скругления граней. + \en A function of the shape coefficient. If the function is not specified or the coefficient value is 0, then the "circle arc" profile is used. + Values between 0.05 and 0.95 represent to the conic section. A variable shape coefficient is only used to create faces fillets. \~ + \param[in] vers - \ru Версия. + \en Version. \~ + \return \ru Возвращает указатель на созданную поверхность скругления в случае успеха, иначе - nullptr. + \en Returns a pointer to the created fillet surface if successful, nullptr otherwise. \~ + */ + static MbFilletSurface * CreateEllipticalFillet( MbSurfaceCurve & curv1, double rad1, + MbSurfaceCurve & curv2, double rad2, MbFunction * cn, VERSION vers ); /** \brief \ru Создать поверхность скругления по двум поверхностям с постоянной хордой. \en Create a fillet surface by two surfaces with a constant chord. \~ \details \ru В случае успеха создается поверхность скругления с версией >= fsv_Ver1. \en If successful, a fillet surface is created with version >= fsv_Ver1. \~ + \deprecated \ru Конструктор устарел, взамен использовать конструктор с переменным коэффициентом формы. + \en The constructor is deprecated. Instead, use a constructor with a variable shape coefficient. \~ \param[in] h - \ru Величина хорды. \en Fillet radius. \~ \param[in] curv1 - \ru Опорная кривая в параметрах первой поверхности @@ -255,7 +325,62 @@ public: \return \ru Возвращает указатель на созданную поверхность скругления в случае успеха, иначе - nullptr. \en Returns a pointer to the created fillet surface if successful, nullptr otherwise. \~ */ - static MbFilletSurface * CreateChordFillet( double h, MbSurfaceCurve & curv1, bool sgn1, MbSurfaceCurve & curv2, bool sgn2, VERSION vers ); + DEPRECATE_DECLARE_REPLACE( CreateChordFillet with a variable shape coefficient ) + static MbFilletSurface * CreateChordFillet( double h, MbSurfaceCurve & curv1, bool sgn1, + MbSurfaceCurve & curv2, bool sgn2, VERSION vers ); + + /** \brief \ru Создать поверхность скругления по двум поверхностям с постоянной хордой. + \en Create a fillet surface by two surfaces with a constant chord. \~ + \details \ru В случае успеха создается поверхность скругления с версией >= fsv_Ver1. + \en If successful, a fillet surface is created with version >= fsv_Ver1. \~ + \param[in] h - \ru Величина хорды. + \en Fillet radius. \~ + \param[in] curv1 - \ru Опорная кривая в параметрах первой поверхности + \en Support curve at parameters of the first surface \~ + \param[in] sgn1 - \ru Ориентация первой опорной поверхности. + \en The orientation of the first support surface. \~ + \param[in] curv2 - \ru Опорная кривая в параметрах второй поверхности + \en Support curve at parameters of the second surface \~ + \param[in] sgn2 - \ru Ориентация второй опорной поверхности. + \en The orientation of the second support surface. \~ + \param[in] cn - \ru Функция коэффициента формы. Если функция не задана или значение коэффициента 0,то в качестве профиля используется "дуга окружности". + Значения от 0.05 до 0.95 соответствуют коническому сечению. Переменный коэффициент формы используется только для создания скругления граней. + \en A function of the shape coefficient. If the function is not specified or the coefficient value is 0, then the "circle arc" profile is used. + Values between 0.05 and 0.95 represent to the conic section. A variable shape coefficient is only used to create faces fillets. \~ + \param[in] vers - \ru Версия. + \en Version. \~ + \return \ru Возвращает указатель на созданную поверхность скругления в случае успеха, иначе - nullptr. + \en Returns a pointer to the created fillet surface if successful, nullptr otherwise. \~ + */ + static MbFilletSurface * CreateChordFillet( double h, MbSurfaceCurve & curv1, bool sgn1, + MbSurfaceCurve & curv2, bool sgn2, MbFunction * cn, VERSION vers ); + + /** \brief \ru Создать поверхность скругления по поверхности и кромке с постоянным радиусом + \en Create fillet surface a constant radius by support surface and support kerb-curve. \~ + \details \ru В случае успеха создается поверхность скругления с версией >= fsv_Ver1. + \en If successful, a fillet surface is created with version >= fsv_Ver1. \~ + \deprecated \ru Конструктор устарел, взамен использовать конструктор с переменным коэффициентом формы. + \en The constructor is deprecated. Instead, use a constructor with a variable shape coefficient. \~ + \param[in] rad - \ru Радиус скругления. + \en Fillet radius. \~ + \param[in] curv1 - \ru Опорная кривая в параметрах первой поверхности + \en Support curve at parameters of the first surface \~ + \param[in] sgn1 - \ru Ориентация первой опорной поверхности. + \en The orientation of the first support surface. \~ + \param[in] curv2 - \ru Опорная кривая в параметрах второй поверхности + \en Support curve at parameters of the second surface \~ + \param[in] sgn2 - \ru Ориентация второй опорной поверхности. + \en The orientation of the second support surface. \~ + \param[in] byFirst - \ru true - кривая curve2 является кромкой, false - кривая curve1 является кромкой + \en True - curve2 curve is fillet, false - curve1 curve is fillet. \~ + \param[in] vers - \ru Версия. + \en Version. \~ + \return \ru Возвращает указатель на созданную поверхность скругления в случае успеха, иначе - nullptr. + \en Returns a pointer to the created fillet surface if successful, nullptr otherwise. \~ + */ +DEPRECATE_DECLARE_REPLACE( CreateKerbFillet with a variable shape coefficient ) +static MbFilletSurface * CreateKerbFillet( double rad, MbSurfaceCurve & curv1, bool sgn1, + MbSurfaceCurve & curv2, bool sgn2, bool byFirst, VERSION vers ); /** \brief \ru Создать поверхность скругления по поверхности и кромке с постоянным радиусом \en Create fillet surface a constant radius by support surface and support kerb-curve. \~ @@ -273,15 +398,18 @@ public: \en The orientation of the second support surface. \~ \param[in] byFirst - \ru true - кривая curve2 является кромкой, false - кривая curve1 является кромкой \en True - curve2 curve is fillet, false - curve1 curve is fillet. \~ - \param[in] cn - \ru Коэффициент формы, изменяется от 0.05 до 0.95 (при 0 - дуга окружности) - \en Coefficient of shape is changed between 0.05 and 0.95 (if 0 - circular arc) \~ + \param[in] cn - \ru Коэффициент формы. Значение 0 соответствует профилю "дуга окружности". + Значения от 0.05 до 0.95 соответствуют коническому сечению. + \en Coefficient of shape. The value 0 corresponds to a "circular arc" profile. + Values between 0.05 and 0.95 represent conic section. \~ \param[in] vers - \ru Версия. \en Version. \~ \return \ru Возвращает указатель на созданную поверхность скругления в случае успеха, иначе - nullptr. \en Returns a pointer to the created fillet surface if successful, nullptr otherwise. \~ */ - static MbFilletSurface * CreateKerbFillet( double rad, MbSurfaceCurve & curv1, bool sgn1, MbSurfaceCurve & curv2, bool sgn2, bool byFirst, double conicFact, VERSION vers ); - + static MbFilletSurface * CreateKerbFillet( double rad, MbSurfaceCurve & curv1, bool sgn1, + MbSurfaceCurve & curv2, bool sgn2, bool byFirst, double conicFact, VERSION vers ); + /// \ru Создать поверхность скругления по поверхности и кромке с касанием /// \en /** \brief \ru Создать поверхность скругления по двум поверхностям с указанием кромки касания @@ -303,12 +431,16 @@ public: \return \ru Возвращает указатель на созданную поверхность скругления в случае успеха, иначе - nullptr. \en Returns a pointer to the created fillet surface if successful, nullptr otherwise. \~ */ - static MbFilletSurface * CreateKerbTouchingFillet( MbSurfaceCurve & curv1, bool sgn1, MbSurfaceCurve & curv2, bool sgn2, bool byFirst, VERSION vers ); + static MbFilletSurface * CreateKerbTouchingFillet( MbSurfaceCurve & curv1, bool sgn1, + MbSurfaceCurve & curv2, bool sgn2, bool byFirst, VERSION vers ); protected: /// \ru Конструктор для наследников обычной поверхности скругления. \en Constructor for inheritors of ordinary fillet surface. MbFilletSurface( MbSurfaceCurve & curv1, double d1, MbSurfaceCurve & curv2, double d2, MbeSmoothForm fm, double cn, bool ev ); + /// \ru Конструктор для наследников обычной поверхности скругления c переменным коэффициентом формы. \en Constructor for inheritors of ordinary fillet surface with a variable shape coefficient. + MbFilletSurface( MbSurfaceCurve & curv1, double d1, + MbSurfaceCurve & curv2, double d2, MbeSmoothForm fm, MbFunction * cn, bool ev ); /// \ru Конструктор для наследников поверхности с сохранением кромки. \en Constructor for inheritors of surface with preservation of fillet. MbFilletSurface( MbSurfaceCurve & curv1, double d1, MbSurfaceCurve & curv2, double d2, MbeSmoothForm fm, double cn, bool byFirst, bool ev ); @@ -608,21 +740,37 @@ public: \en General conic section. \~ \details \ru Коническое сечение общего вида. \en General conic section. \~ + \param[in] precision - \ru Точность сравнения. + \en The precision of comparison. \~ \return \ru false, если сечение поверхности скругления является дугой окружности \en False if section of fillet surface is circular arc \~ */ - bool IsConic() const { return ( ::fabs(conic - c3d::_ARC_) >= EPSILON ); } // \ru Коническое сечение общего вида \en General conic section - + bool IsConic( double precision = EPSILON ) const; + /** \brief \ru Коэффициент формы. \en Coefficient of shape. \~ \details \ru Коэффициент формы сечения поверхности скругления.\n Изменяется от 0.05 до 0.95, при 0 сечение является дугой окружности. \en Coefficient of shape of section of fillet surface.\n Is changed between 0.05 and 0.95, if 0, then section is circular arc. \~ + \deprecated \ru Метод устарел. + \en Method is deprecated. \return \ru Коэффициент - \en Coefficient \~ + \en Coefficient \~ */ - double Conic() const { return conic; } + DEPRECATE_DECLARE_REPLACE( Conic with surface U parameter ) + double Conic() const; + + /** \brief \ru Выдать значение коэффициента формы. + \en Get shape coefficient value. \~ + \details \ru Коэффициент формы сечения поверхности скругления.\n + Значение 0 соответствует профилю "дуга окружности". Значения от 0.05 до 0.95 соответствуют коническому сечению. + \en Shape coefficient of fillet surface section.\n + The value 0 corresponds to a "circular arc" profile. Values between 0.05 and 0.95 represent conic section. \~ + \return \ru Коэффициент + \en Coefficient \~ + */ + double Conic( double u ) const; /** \brief \ru Поверхность скругления с сохранением кромки. \en Fillet surface with preservation of fillet. \~ @@ -653,6 +801,9 @@ public: */ void SetKerbSurface( bool bc1 ) { if ( equable ) { equable = false; byCurve1 = bc1; } } + // \ru Выдать функцию коэффициента формы. \en Get shape coefficient function. + const MbFunction & GetConic() const { return *conic; }; + // \ru Выдать функцию весов точек средней кривой curve0. \en Get weight function for points of mid-curve (curve0). const MbFunction * GetWeights() const; // \ru Установить функцию весов точек средней кривой curve0. \en Set weight function for points of mid-curve (curve0). @@ -664,7 +815,7 @@ bool SetWeights( MbFunction & func ); /** \} */ protected: - void WeightKoefficient( double & w ) const; // \ru Вычисление веса при заданном коэффициенте \en Calculation of weight at given coefficient + void WeightKoefficient( double u, double & w ) const; // \ru Вычисление веса при заданном коэффициенте \en Calculation of weight at given coefficient void InitFilletSurface ( const MbFilletSurface & init ); void CalculateCurve( double wmin, double wmax, bool insertPoints ); double CalculateVParam( const MbCartPoint3D & p, double u ) const; // \ru Нахождение параметра v проекции точки на вырожденную поверхность \en Searching of v parameter of point projection onto degenerate surface diff --git a/C3d/Include/surf_section_surface.h b/C3d/Include/surf_section_surface.h index e838034..b867957 100644 --- a/C3d/Include/surf_section_surface.h +++ b/C3d/Include/surf_section_surface.h @@ -441,7 +441,7 @@ public: ThreeStates Salient() const override; /// \ru Касается ли поверхность опорных граней? \en Does the surface tangent with its reference faces? - bool IsSurfaceTangent() const { return ( sform == st_Fillet || sform == st_Span ) && ( form == cs_Conic || form == cs_Cubic || form == cs_Disked || form == cs_Fillet ); } + bool IsSurfaceTangent() const { return ( sform==st_Fillet || sform == st_Ellipse || sform == st_Span ) && ( form == cs_Conic || form == cs_Cubic || form == cs_Disked || form == cs_Fillet ); } // \ru Определение разбивки параметрической области поверхности вертикалями и горизонталями. \en Determine splitting of parametric region of surface by vertical and horizontal lines. void GetTesselation( const MbStepData & stepData, diff --git a/C3d/Include/surf_spine.h b/C3d/Include/surf_spine.h index 809bc47..2ec659e 100644 --- a/C3d/Include/surf_spine.h +++ b/C3d/Include/surf_spine.h @@ -21,7 +21,7 @@ const VERSION SPINE_ALG_VERSION1 = 0x0A000000L; // \ru Добавлена option const VERSION SPINE_ALG_VERSION2 = 0x0D000023L; // \ru Добавлено создание optionalCurve в общем случае \en Added creation of "optionalCurve" in general case -class MATH_CLASS MbSpine; +class MbSpine; class MbWireFrame; namespace c3d // namespace C3D diff --git a/C3d/Include/templ_sptr.h b/C3d/Include/templ_sptr.h index 0609942..928b916 100644 --- a/C3d/Include/templ_sptr.h +++ b/C3d/Include/templ_sptr.h @@ -107,7 +107,7 @@ public: template SPtr & assign( _T * elem ) { - if ( m_pI != elem ) + if ( m_pI != elem ) // SKIP_SA { if ( elem != nullptr ) { elem->AddRef(); } // SKIP_SA if ( m_pI != nullptr ) { m_pI->Release(); } // SKIP_SA diff --git a/C3d/Include/tool_multithreading.h b/C3d/Include/tool_multithreading.h index 12bc16e..77e20e3 100644 --- a/C3d/Include/tool_multithreading.h +++ b/C3d/Include/tool_multithreading.h @@ -246,7 +246,7 @@ public: \en Get a pointer to the lock for operations with the main thread cache, considering whether the code runs in parallel. Can return null value (good for use with ScopedLock). \~ */ - CommonMutex* GetLock() { if ( ::LocksEnabled() ) return GetLockHard(); return lock; } + CommonMutex* GetLock() { if ( ::LocksEnabled() ) return GetLockHard(); return nullptr; } /** \brief \ru Функция очистки, используемая сборщиком мусора. \en Cleaning function, used by the garbage collector. \~ diff --git a/C3d/Include/topology.h b/C3d/Include/topology.h index 76d7592..14af472 100644 --- a/C3d/Include/topology.h +++ b/C3d/Include/topology.h @@ -29,19 +29,19 @@ class MbCurve; class MbContour; -class MATH_CLASS MbMesh; +class MbMesh; class MbCurve3D; class MbContour3D; class MbPlane; class MbContourOnSurface; class MbContourOnPlane; class MbSurfaceIntersectionCurve; -class MATH_CLASS MbVertex; -class MATH_CLASS MbEdge; -class MATH_CLASS MbCurveEdge; -class MATH_CLASS MbOrientedEdge; -class MATH_CLASS MbLoop; -class MATH_CLASS MbFace; +class MbVertex; +class MbEdge; +class MbCurveEdge; +class MbOrientedEdge; +class MbLoop; +class MbFace; class MbFunction; class MbFaceTemp; diff --git a/C3d/Include/topology_faceset.h b/C3d/Include/topology_faceset.h index 99d651e9..6e807ee 100644 --- a/C3d/Include/topology_faceset.h +++ b/C3d/Include/topology_faceset.h @@ -26,12 +26,12 @@ class MbCube; class MbFunction; struct MbEdgeFacesIndexes; class MbShellHistory; -class MATH_CLASS MbPntLoc; -struct MATH_CLASS MbEdgeFunction; -class MATH_CLASS MbCheckTopologyParams; -class MATH_CLASS MbFaceShell; -class MATH_CLASS MbShellsDistanceData; -struct MATH_CLASS MbUnitInfo; +class MbPntLoc; +struct MbEdgeFunction; +class MbCheckTopologyParams; +class MbFaceShell; +class MbShellsDistanceData; +struct MbUnitInfo; class MbFaceSetTemp; namespace c3d // namespace C3D diff --git a/C3d/Include/topology_item.h b/C3d/Include/topology_item.h index f2fbe56..e2b7fe1 100644 --- a/C3d/Include/topology_item.h +++ b/C3d/Include/topology_item.h @@ -25,7 +25,7 @@ class MbCartPoint3D; class MbMatrix3D; class MbAxis3D; class MbCube; -class MATH_CLASS MbMesh; +class MbMesh; class MbStepData; struct MbFormNote; class MbRegTransform; diff --git a/C3d/Include/wire_frame.h b/C3d/Include/wire_frame.h index 3ba14c0..28349a8 100644 --- a/C3d/Include/wire_frame.h +++ b/C3d/Include/wire_frame.h @@ -79,17 +79,17 @@ public : /// \ru Конструктор по кривой и строителю. \en Constructor by a curve and creator. MbWireFrame( const MbCurve3D &, const MbCreator * = nullptr ); /// \ru Конструктор по множеству кривых и строителю. \en Constructor by a set of curves and creator. - MbWireFrame( const RPArray &, const MbCreator * = nullptr ); + DEPRECATE_DECLARE MbWireFrame( const RPArray &, const MbCreator * = nullptr ); /// \ru Конструктор по множеству кривых и строителю. \en Constructor by a set of curves and creator. - MbWireFrame( const c3d::SpaceCurvesSPtrVector &, const MbCreator * = nullptr ); + DEPRECATE_DECLARE MbWireFrame( const c3d::SpaceCurvesSPtrVector &, const MbCreator * = nullptr ); /// \ru Конструктор по ребру и строителю. \en Constructor by an edge and creator. MbWireFrame( const MbEdge &, const MbCreator * = nullptr, bool same = true ); /// \ru Конструктор по множеству рёбер и строителю. \en Constructor by a set of edges and creator. - MbWireFrame( const RPArray &, const MbCreator * = nullptr, bool same = true ); + DEPRECATE_DECLARE MbWireFrame( const RPArray &, const MbCreator * = nullptr, bool same = true ); /// \ru Конструктор по множеству рёбер и строителю. \en Constructor by a set of edges and creator. - MbWireFrame( const c3d::WireEdgesSPtrVector &, const MbCreator * = nullptr, bool same = true ); + DEPRECATE_DECLARE MbWireFrame( const c3d::WireEdgesSPtrVector &, const MbCreator * = nullptr, bool same = true ); /// \ru Конструктор по множеству рёбер и строителю. \en Constructor by a set of edges and creator. - MbWireFrame( const c3d::WireEdgesSPtrVector &, const MbWireFrame & oldFrame, const MbCreator * = nullptr ); + DEPRECATE_DECLARE MbWireFrame( const c3d::WireEdgesSPtrVector &, const MbWireFrame & oldFrame, const MbCreator * = nullptr ); /** \brief \ru Создать каркас. \en Create wireframe. \~ \details \ru Создать каркас по множеству ребер и строителю.\n @@ -308,7 +308,7 @@ public : /// \ru Разложен ли каркас на связные части? \en Is a frame split into connected parts? bool IsNormalizeWire() const { return normal; } /// \ru Переставить кривые и переориентировать ребра, создав связные цепочки с общими вершинами. \en Perform curves reposition and edges reorientation by creating connected chains with common vertices. - bool NormalizeWire( double precision = METRIC_REGION ); ///< \deprecated \ru Метод устарел. \en The method is deprecated. + DEPRECATE_DECLARE bool NormalizeWire( double precision = METRIC_REGION ); /// \ru Переставить кривые и переориентировать ребра, создав связные цепочки с общими вершинами (совпадающими геометрически с точностью precision ). \en Perform curves reposition and edges reorientation by creating connected chains with common vertices (coincident geometrically with accuracy precision). bool NormalizeWire( double precision, VERSION version = Math::DefaultMathVersion() ); /** \brief \ru Отделение частей каркаса. diff --git a/C3d/Lib/x32/Debug/c3d.lib b/C3d/Lib/x32/Debug/c3d.lib index 063a6e5f181b524700b6da4849ca1588220c64e3..3aa8bca4474f9c8ad0bf5cac6547f27e8ff5f1ec 100644 GIT binary patch delta 1217488 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

T_5sL1kl9@fieXNIA{paX0gS*Kc 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%0Aq?%uCld&q=F@I$}JVWHYwbl86V;uxuKq>e{5 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%0DQS%Gkr?0XBsnQ>T=Cwx@=n;e;Gh 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