Pasukhin Dmitry [Sun, 2 Nov 2025 15:53:23 +0000 (15:53 +0000)]
Foundation Classes - remove PLib_Base and migrate to concrete polynomial types (#795)
- Delete PLib_Base.hxx / PLib_Base.cxx and remove from PLib/FILES.cmake.
- Convert PLib_JacobiPolynomial and PLib_HermitJacobi from polymorphic Handle-based types to direct value types:
- Remove inheritance from PLib_Base and RTTI macros.
- Replace DEFINE_STANDARD_HANDLE / Handle usage with plain objects/members.
- Make internal PLib_JacobiPolynomial member const where appropriate.
- Make basis evaluation methods const (D0/D1/D2/D3 and internal D0123) and mark trivial accessors noexcept:
- WorkDegree() and NivConstr() now noexcept.
- Update signatures (const correctness) across implementation and headers.
- Update all call sites to new API and value semantics:
- Tests: PLib_HermitJacobi_Test.cxx, PLib_JacobiPolynomial_Test.cxx updated to construct objects by value and call methods without '->'.
- Modeling/approximation & FEM code: AdvApprox_ApproxAFunction, AdvApprox_SimpleApprox, AppDef_LinearCriteria, AppDef_Variational, FEmTool_Curve, FEmTool_ElementsOfRefMatrix, FEmTool_LinearFlexion/Jerk/Tension and related headers updated to accept/use PLib_HermitJacobi by reference/value and call new methods.
- Replace Handle(...) constructions with stack/local objects and adapt calls (ToCoefficients, ReduceDegree, MaxError, AverageError, Points, Weights, etc.).
- Miscellaneous API adjustments to match new declarations (removed Standard_OVERRIDE annotations where not applicable).
- Keep behavior unchanged; this is an API/implementation refactor to remove legacy polymorphic base and improve const-correctness and performance.
luzpaz [Sun, 2 Nov 2025 13:25:26 +0000 (08:25 -0500)]
Documentation - Fix whitespace and typos (#794)
- Fixed capitalization of comment opening words to follow standard documentation conventions
- Reformatted multi-line comments to improve readability by reducing excessive line breaks
- Corrected a typo in parameter description
Pasukhin Dmitry [Sun, 2 Nov 2025 11:41:42 +0000 (11:41 +0000)]
Foundation Classes - Refactor PLib_HermitJacobi implementation (#780)
- Remove separate PLib_HermitJacobi.lxx and stop installing it in FILES.cmake.
- Move Hermite matrices and W coefficients into the .cxx translation unit (anonymous namespace) as constexpr/static helpers.
- Replace Handle(PLib_JacobiPolynomial) with a value member; forward WorkDegree() and NivConstr() inline to myJacobi.
- Update ToCoefficients, D0123 and related methods to use the new helper functions and value-style myJacobi API.
- Remove myH and myWCoeff members and adapt matrix/coeff access accordingly.
- Minor naming/variable adjustments for clarity (NivConstr/WorkDegree -> aNivConstr/aWorkDegree).
Pasukhin Dmitry [Sun, 2 Nov 2025 11:22:34 +0000 (11:22 +0000)]
Foundation Classes - Precompute Jacobi coefficients (#778)
- Add PLib_JacobiPolynomial_Coeffs.pxx with large constexpr tables and a JacobiCoefficientsCache + GetJacobiCoefficients() fast lookup to serve precomputed TNorm/CofA/CofB/Denom arrays for all constraint levels and degrees.
- Replace several runtime-initialized per-instance arrays/handles with zero-overhead constexpr data; remove myTNorm/myCofA/myCofB/myDenom handles from the class.
- Modernize PLib_JacobiPolynomial implementation:
- Use constructor initializer list and validate inputs there.
- Use constexpr lookup tables for weights/transforms and memcpy/std::fill_n to speed copying into TColStd arrays.
- Replace switch-based pointer selection with indexed arrays for cleaner selection of DB pointers.
- Simplify numerical loops, make offsets/indices const where possible and use clearer variable names.
- Use GetJacobiCoefficients() in D0123 (and callers) to remove on-demand initialization and reduce per-call overhead.
- Change static data types to constexpr double for stronger optimization and clearer intent.
- Various micro-optimizations and safety fixes (avoid NULL, tighten const correctness) to improve performance and reduce runtime allocations.
Pasukhin Dmitry [Sun, 2 Nov 2025 00:52:32 +0000 (00:52 +0000)]
Foundation Classes, gp - Mark core types and methods constexpr/noexcept (#790)
Make gp basic types and operations more constexpr-friendly and noexcept:
- Mark gp::Resolution as constexpr.
- Add constexpr and/or noexcept to many constructors and small access/modifier methods.
- Convert several functions to constexpr where safe to allow compile-time evaluation.
- Initialize members via initializer lists for several GTrsf/GTrsf2d/Mat/etc constructors.
- Add noexcept to transformation/serialization helpers and small utilities where appropriate.
This enables better compile-time optimizations and safer noexcept semantics across TKMath gp primitives.
Pasukhin Dmitry [Sat, 1 Nov 2025 22:39:12 +0000 (22:39 +0000)]
Foundation Classes, Strings - add EmptyString() for Ascii/Extended and use it everywhere (#788)
Introduce TCollection_AsciiString::EmptyString() and TCollection_ExtendedString::EmptyString()
and update headers.
Replace many local/static empty string instances and default-constructed
temporaries with the shared EmptyString() reference across ApplicationFramework, DataExchange,
Visualization and other modules.
Remove several unused local empty-key/static variables and
adjust default parameters and return paths to use the centralized empty-string accessors.
Add missing #include <TCollection_AsciiString.hxx> to several headers that use/forward TCollection_AsciiString.
Pasukhin Dmitry [Sat, 1 Nov 2025 21:38:48 +0000 (21:38 +0000)]
Foundation Classes, NCollection - Modernize code, add noexcept/constexpr (#793)
- Mark many methods and operators noexcept (iterators, containers, allocators, maps, lists, buffers, UTF/string utilities, etc.)
- Add constexpr to suitable functions and factory methods (matrices, vectors, static sizes) to enable compile-time usage
- Replace non-constexpr memcpy usages in NCollection_Mat3/NCollection_Mat4 with constexpr-friendly initialization and promote static arrays to constexpr
- Make several small API improvements: stronger const-correctness, noexcept on allocation/deallocation operators, delete forbidden copy ctors/assign where appropriate
- Remove obsolete NCollection_TypeDef.hxx and update FILES.cmake
- Miscellaneous small refactors to support modern C++ patterns and better compile-time guarantees
Pasukhin Dmitry [Sat, 1 Nov 2025 19:56:04 +0000 (19:56 +0000)]
Foundation Classes - Move to constexpr Pascal allocator for PLib::Bin (#777)
- Converts `BSplCLib::MaxDegree()` to a constexpr function to enable compile-time evaluation
- Replaces the dynamically allocated `BinomAllocator` with a template-based constexpr Pascal's triangle that is computed at compile time
Pasukhin Dmitry [Sat, 1 Nov 2025 19:52:20 +0000 (19:52 +0000)]
Configuration, gitignore - Ignore all at root except explicit allowlist (#787)
Add single-level rules to ignore everything at the repository root while whitelisting
essential config files and directories. Explicitly allow selected data subdirectories
and top-level src modules, and preserve deeper-level ignore rules.
Pasukhin Dmitry [Sat, 1 Nov 2025 17:42:53 +0000 (17:42 +0000)]
Data Exchange, STEP - Refactor StepType selection (#786)
- Removed static `lastvalue` variable and mutex-based synchronization, replacing them with a mutable member field `theLastValue`
- Restructured logic with early returns to reduce nesting and improve readability
- Updated variable naming to follow OCCT conventions (e.g., `module` → `aModule`, `CN` → `aCN`)
Pasukhin Dmitry [Sat, 1 Nov 2025 13:57:11 +0000 (13:57 +0000)]
Coding - Introduce compile-time sqrt constants and use them consistently (#789)
- Add M_SQRT2 macro in multiple sources and replace runtime sqrt/Sqrt(2) calls with the macro
- Add SQRT_3 constexpr in IGESGraph_Color and Bnd_OBB and replace Sqrt(3) usages
- Make BSplSLib_zero a constexpr array
- Replace a few computed sqrt literals with compile-time constants for clarity and consistency
ikochetkova [Fri, 31 Oct 2025 10:45:32 +0000 (10:45 +0000)]
Data Exchange, Step Import - Add import of coordinate system connection points for dimensions (#779)
Add possibility to retrieve and save the whole coordinate system as a connection point for dimensions.
Refactor reading of connection points from STEP.
Refactor Set and Get methods of Dimension XCAF object.
Add new exporting data to the test method XDumpDGTs and update the test cases respectively.
Pasukhin Dmitry [Fri, 31 Oct 2025 08:45:06 +0000 (08:45 +0000)]
Coding - Create a C++17 version macro (#785)
- Updated preprocessor directives to utilize Standard_CPP17_OR_HIGHER instead of direct __cplusplus checks.
- Removed unnecessary preprocessor checks for C++17 in TCollection_AsciiString implementation and tests.
- Enhanced code readability and maintainability by centralizing C++ version checks.
Pasukhin Dmitry [Thu, 30 Oct 2025 17:23:13 +0000 (17:23 +0000)]
Foundation Classes - Remove PLib_DoubleJacobiPolynomial implementation and tests (#781)
Delete PLib_DoubleJacobiPolynomial sources (cxx/hxx/lxx), remove associated Google Test (PLib_DoubleJacobiPolynomial_Test.cxx)
and update FILES.cmake entries in TKMath/PLib and TKMath/GTests to stop building the removed files.
Pasukhin Dmitry [Wed, 29 Oct 2025 08:48:47 +0000 (08:48 +0000)]
Coding, PerfMeter - Use NCollection_DataMap and TCollection_AsciiString (#774)
- Replace std::unordered_map<std::string, Stopwatch> with NCollection_DataMap<TCollection_AsciiString, Stopwatch>
- Update all method signatures to use TCollection_AsciiString instead of std::string
- Replace STL map operations with OCCT equivalents (Bind/Seek/ChangeSeek/IsBound/UnBind/Clear)
luzpaz [Tue, 28 Oct 2025 08:26:46 +0000 (04:26 -0400)]
Documentation - Fix whitespace uniformity (#770)
- Standardized spacing in documentation comments by removing extra spaces between words
- Fixed inconsistent line breaks in multi-line comment blocks
- Corrected minor spelling/grammar issues (e.g., "follow" → "follows", "form" → "from")
Pasukhin Dmitry [Mon, 27 Oct 2025 21:27:16 +0000 (21:27 +0000)]
Shape Healing - Regression after #584 (#769)
Second iteration of fixing regressions.
Fixed issue with loops and incorrect shell created.
#584 affected some tests which were not updated on time.
Now all test cases are passed.
Pasukhin Dmitry [Sat, 25 Oct 2025 14:49:04 +0000 (15:49 +0100)]
Configuration - Validate the configuration on CMake 3.10 and later (#762)
- adm/cmake/gtest.cmake: check CMake version before using FetchContent; emit a warning and skip FetchContent-based GoogleTest setup when CMake < 3.11.
- adm/cmake/occt_macros.cmake: wrap list(REMOVE_DUPLICATES ...) calls in if() checks to avoid operating on empty/unset variables.
Pasukhin Dmitry [Fri, 24 Oct 2025 08:11:48 +0000 (09:11 +0100)]
Application Framework - Early-return null NamedShape when TNaming_UsedShapes is missing (#760)
Check Acces.Root().FindAttribute(...) result in TNaming_Tool::NamedShape and return an empty Handle
if the TNaming_UsedShapes attribute is not found to avoid using an uninitialized map.
Pasukhin Dmitry [Wed, 22 Oct 2025 17:03:50 +0000 (18:03 +0100)]
Data Exchange, STEP - Replace String typedef and global temp buffers in StepData_StepReaderData (#756)
- Remove typedef TCollection_HAsciiString String and global statics (txtmes, initstr, subl)
- Use explicit string for message handles and function-local char txtmes buffers, drop constructor initstr logic, and update error/warning formatting.
- Reduce global mutable state and clarify message handling.
Pasukhin Dmitry [Wed, 22 Oct 2025 15:42:45 +0000 (16:42 +0100)]
Foundation, Testing - Use computational basis size for arrays in PLib_JacobiPolynomial tests (#755)
Allocate TColStd_Array1OfReal using aDegree = WorkDegree - 2*(NivConstr()+1) in BasisFunctionD0, BasisFunctionDerivatives and StressTests so array sizes match the actual number of basis functions and avoid sizing mismatches.
Pasukhin Dmitry [Wed, 22 Oct 2025 11:39:48 +0000 (12:39 +0100)]
Foundation Classes - Optimize AsciiString with pre-defined string (#752)
- Rename internal members mystring/mylength -> myString/myLength across AsciiString
implementation and related files to improve naming consistency.
- Add std::string_view support and efficient overloads:
- constructor from string_view, AssignCat/Copy/Insert/SetValue from string_view
- Cat, operators (+, +=) and comparison helpers accepting string_view
- Token/StartsWith/EndsWith/Search helpers and literal-template overloads
- operator std::string_view() to obtain a non-owning view
- IsEqual/IsSameString/IsDifferent variants for string_view/C-string combinations
- optimized literal templates to avoid runtime strlen for compile-time literals
- Improve memory handling and allocation helpers (allocate/reallocate/deallocate)
and keep padding strategy consistent.
- Add Insert/AssignCat implementations that accept string_view and use memmove/memcpy.
- Fix calls in HAsciiString to use direct method instead of members
- Adjust misc. parameter names and small code-style/clarity improvements.
These changes enable zero-copy interop with std::string_view, reduce redundant C-string
operations for literals, and unify internal naming for maintainability.
Dmitrii Kulikov [Wed, 22 Oct 2025 10:21:13 +0000 (11:21 +0100)]
Data Exchange - Step supplemental geometry support (#744)
- Added three new GUIDs to identify supplemental geometry containers, references, and individual supplemental geometry items in the XCAF document structure
- Implemented logic to extract and convert STEP geometric items (curves and surfaces) into TopoDS shapes when they are referenced by PMI but not present in the main model
- Refactored duplicate code for finding PMI reference positions and geometry into reusable functions
Dmitrii Kulikov [Thu, 16 Oct 2025 17:46:10 +0000 (18:46 +0100)]
Mesh - Import of STEP file crashes at the very end when visualizing the boundary curves (#745)
When an edge (BRepMeshData_Edge) has multiple PCurve curves (IMeshData_PCurve) with different orientations, the index array is filled for only one PCurve curve.
This would cause problems later, so a fix was made to fill index arrays for curves with another orientation.
Pasukhin Dmitry [Thu, 16 Oct 2025 13:13:50 +0000 (14:13 +0100)]
Visualization - Unexpected moving with AIS_ViewCube (#727)
- Removes Euler angle storage and calculations that caused rotation instabilities
- Replaces complex coordinate transformations with direct camera vector manipulation
- Implements quaternion-based rotation logic using stored camera direction and up vectors
Dmitrii Kulikov [Thu, 16 Oct 2025 07:54:40 +0000 (08:54 +0100)]
Modelling - Crash in BRepFilletAPI_MakeChamfer (#743)
- Refactored helper functions with clearer naming and improved parameter handling
- Added null safety checks to prevent crashes when edge lookup fails in face topology
- Removed debug code and simplified variable declarations for better maintainability
Refactor shell construction algorithm for improved performance:
- Add GetConnectedFaceGroups function using DFS to identify topologically
connected face groups before shell construction
- Replace O(nˆ3) iterations with pre-built connectivity maps (FaceEdgesMap,
EdgeFacesMap) using STL unordered_map with custom allocators for O(1) lookup.
- Process only the largest connected component first, significantly reducing
time complexity for large face sets
Pasukhin Dmitry [Wed, 8 Oct 2025 17:04:28 +0000 (18:04 +0100)]
Coding - Remove duplicate and self-referencing include directives (#739)
- Removal of self-referencing includes where files include themselves
- Elimination of duplicate include statements within the same file
- Cleanup of redundant includes in conditional compilation blocks
- Adding CI validation for validation PRs
Pasukhin Dmitry [Wed, 8 Oct 2025 10:50:42 +0000 (11:50 +0100)]
Testing - Cover Boolean operation with GTests (#721)
- Added systematic Boolean operation test coverage using Google Test framework
- Implemented test utilities for shape creation, transformation, and validation
- Migrated existing Draw-based Boolean tests to C++ GTests for better automation
Visualization - Fix method to transform AABB (#735)
Replace the incorrect implementation of Axis Aligned Bounding Boxes transformation to Jim Arvo's efficient AABB transformation algorithm described in his chapter in the Graphics Gems (1990) book.
The algorithm simplifies the number of operations necessary to transform the AABB. Instead of transforming the eight vertices of the original AABB, and then computing the bounding box of the transformed vertices, Arvo's algorithm works by forming both products for each component of the min and max point, and summing the smallest/largest terms, we arrive at the minimal/maximal value.
Used regex in src folder:
^//[\s\n\r\t]*[-=]{2,}[=]*[\n\r]*//[\s\n\r\t]*[a-z]+[\s\n\r\t]*:[\s\n\r\t]*[a-z0-9_:\t\s]*[\s\n\r\t]*//[\s\n\r\t]*[a-z]+[\s\n\r\t]*:[\s\n\r\t]*[a-z0-9_\s\t./-><]{0,22}//[\s\n\r\t]*[-=]{3,}[=]*
Foundation Classes - EigenValuesSearcher improvements (#714)
- Complete replacement of handle-based arrays (`TColStd_HArray`) with direct `NCollection_Array` instances
- Comprehensive algorithm refactoring using the QL algorithm with Wilkinson shifts for improved numerical stability
- Enhanced documentation with detailed mathematical context and algorithm explanations
- Addition of comprehensive unit tests covering edge cases and numerical stability scenarios
Foundation Classes - math Container optimization (#717)
Increase DoubleTab container buffer size to 64 from 16.
Optimize the vector initialisation with 5-10% increasing time.
Before the creating was takes too much branching.
- Removes all QANCollection header and source files that contained collection type definitions and test utilities
- Updates the build configuration to remove QANCollection from the package list
- Removes the QANCollection integration from the main QADraw factory
- Complete removal of old Draw Harness test infrastructure for NCollection classes
- Addition of new GTest files testing STL algorithm compatibility (min, max, replace, sort, reverse)
- Migration of OSD_Path and Handle operation tests to GTest format
Testing - Add unit tests for Standard_ArrayStreamBuffer (#708)
- Replaces legacy DRAW command-based tests with modern GTest framework
- Removes the `OCC28887` DRAW command and associated test files
- Adds comprehensive unit test coverage for `Standard_ArrayStreamBuffer` functionality
- Complete removal of the `OSD_MAllocHook` class and its related handler implementations
- Removal of the Draw command "mallochook" that provided command-line interface to the memory tracking functionality
- Updates to build configuration to exclude the removed files
- Relaxed mathematical tolerances from extremely tight values (1.0e-15) to more reasonable ones (1.0e-10/1.0e-12) for debug mode compatibility
- Increased iteration limits to allow algorithms more time to converge in debug builds
- Added exception handling with EXPECT_NO_THROW to prevent test crashes in debug mode
Testing - Add unit tests for PLib functionality (#705)
- Introduced comprehensive unit tests for the Jacobi polynomial implementation in PLib, covering constructors, edge cases, Gauss integration points, weights, and basis function evaluations.
- Added tests for basic utility functions in PLib, including pole conversion and binomial coefficient calculations.
- Implemented checks for Hermite interpolation and polynomial evaluation with derivatives.
- Enhanced error handling and edge case testing for small and large coefficients.
- Initialised MaxError in PLib_DoubleJacobiPolynomial to ensure consistent behaviour during degree reduction.
Modeling - Fix array indexing bug in IntAna_IntQuadQuad::NextCurve method (#703)
Fixed a critical indexing bug in IntAna_IntQuadQuad::NextCurve where the
method incorrectly used nextcurve[I] instead of nextcurve[I-1] for
determining the theOpposite parameter.
This mismatch between 1-indexed API
parameters and 0-indexed array access could lead to out-of-bounds memory
access and incorrect curve connectivity determination.
Changes:
- Fix IntAna_IntQuadQuad::NextCurve to use consistent I-1 indexing for both
condition check and return value
- Add comprehensive GTests covering NextCurve functionality, edge cases,
and performance
- Ensure proper error handling for invalid curve indices
- Added missing `<algorithm>` include for C++ standard library functionality
- Suppressed unknown warning options in the macOS build configuration to prevent build failures
Data Exchange, DE Wrapper - Reorganisation of plugin system for Configuration Nodes (#696)
- Added Register and UnRegister methods to DE_ConfigurationNode for managing bindings with DE_Wrapper.
- Introduced DE_MultiPluginHolder to facilitate registration of multiple configuration nodes simultaneously.
- Created new plugin factory functions for various configuration nodes (DEBREP, DEXCAF, DEGLTF, DEIGES, DEOBJ, DEPLY, DESTEP, DESTL, DEVRML) to streamline their registration with DE_Wrapper.
- Removed unnecessary DE_PluginHolder instances from individual configuration node implementations.
- Updated CMake files to include newly created source files for each configuration node.
- Implemented singleton patterns in draw commands to ensure plugins are registered only once during initialization.
Pasukhin Dmitry [Sat, 30 Aug 2025 16:16:23 +0000 (17:16 +0100)]
Testing - Fix macOS setup to install Mono separately (#697)
- Replaces single brew install command with multiple individual brew install commands
- Each package installation is wrapped with `|| true` to prevent failures from stopping the workflow
Dmitrii Kulikov [Fri, 29 Aug 2025 21:49:53 +0000 (22:49 +0100)]
Mesh - Stack overflow when meshing (#695)
- Introduced `StackOfFrames` class to manage processing frames iteratively instead of recursively
- Modified `killTrianglesAroundVertex` method to collect victim nodes in a provided container rather than recursively processing them
- Replaced recursive depth-first traversal with iterative processing using the new stack-based approach
Pasukhin Dmitry [Sun, 24 Aug 2025 18:52:47 +0000 (19:52 +0100)]
Testing - Cover math module with GTests (#684)
- Extensive test coverage for core mathematical algorithms (Newton methods, optimization, linear algebra, root finding)
- Bug fix for proper iteration count tracking in `math_FunctionRoot`
- Bug fix for custom vector bounds handling in `math_SVD`
- Dependency update in `OSD_PerfMeter_Test` by replacing Boolean operations with mathematical computations
Pasukhin Dmitry [Sun, 17 Aug 2025 18:42:21 +0000 (19:42 +0100)]
Coding, TKXSBase - Translation to English (#679)
- Updated French comments to English for better accessibility and understanding.
- Enhanced clarity of comments to better describe the functionality and purpose of the code.
- Ensured consistency in terminology and phrasing throughout the codebase.
- Made minor adjustments to comment formatting for improved readability.
Pasukhin Dmitry [Sun, 17 Aug 2025 11:45:30 +0000 (12:45 +0100)]
Coding - Moving to Sprintf call (#675)
- Updates function calls from `sprintf` to `Sprintf` across the entire codebase
- Updates comments and documentation references to reflect the new function name
- Adds format attribute annotations to the `Sprintf` function declaration for better compiler validation
Pasukhin Dmitry [Sun, 17 Aug 2025 08:53:01 +0000 (09:53 +0100)]
Coding, TKDEIGES - Translation to English (#678)
- Updated comments in IGESGeom_ToolCircularArc, IGESGeom_ToolCurveOnSurface, IGESGeom_ToolOffsetCurve, IGESGeom_ToolPlane, IGESGeom_ToolSplineSurface, IGESGeom_ToolTransformationMatrix, IGESGraph_ToolColor, IGESGraph_ToolDrawingUnits, IGESSelect, IGESSelect_Activator, IGESSelect_RebuildGroups, IGESSelect_SelectBypassGroup, IGESSelect_SelectBypassSubfigure, IGESSelect_SignStatus, IGESSelect_ViewSorter, IGESSelect_WorkLibrary, IGESToBRep, IGESToBRep_BRepEntity, IGESToBRep_BasicCurve, IGESToBRep_BasicSurface, IGESToBRep_TopoCurve, IGESToBRep_TopoSurface to improve readability and understanding.
- Translated French comments to English where applicable.
- Ensured comments accurately reflect the functionality and intent of the code.
Pasukhin Dmitry [Sat, 16 Aug 2025 19:50:50 +0000 (20:50 +0100)]
Coding - Update Clang-format with more macroses (#677)
- Updates `.clang-format` to include `OCC_CATCH_SIGNALS`, `DEFINE_STANDARD_RTTIEXT`, and `Draw_Drawable3D_FACTORY` as statement macros
- Adds a GitHub action step to automatically remove empty lines after `Standard_DEPRECATED` macro declarations
- Reformats numerous files by removing blank lines after deprecated method declarations and improving macro formatting
Pasukhin Dmitry [Sat, 16 Aug 2025 10:09:48 +0000 (11:09 +0100)]
Coding, StepData - Translation to English (#672)
- Comprehensive translation of French comments to English throughout the StepData module
- Enhanced inline documentation explaining complex algorithms and data structures
- Improved variable name comments and method descriptions for better code comprehension
Pasukhin Dmitry [Fri, 15 Aug 2025 16:14:53 +0000 (17:14 +0100)]
Coding - Method guard iterative update (#674)
- Standardizes comment formatting by replacing detailed comment blocks with a uniform "//=================================================================================================" separator
- Removes redundant "function:" and "purpose:" fields that often contained minimal or no useful information
- Maintains code functionality while improving visual consistency across the codebase
Petras Vestartas [Tue, 12 Aug 2025 08:29:47 +0000 (10:29 +0200)]
Data Exchange, STEP Export - General Attributes (#634)
- Adds metadata writing capability through new `MetadataMode` flag and `writeMetadata` method
- Exports string metadata as STEP `property_definition` entities linked to product definitions
- Integrates metadata writing into the main transfer workflow alongside existing property writing
Pasukhin Dmitry [Fri, 8 Aug 2025 09:31:54 +0000 (10:31 +0100)]
Foundation Classes - Documentation update for TCollection (#665)
- Introduces helper functions for consistent padded memory allocation across AsciiString and ExtendedString classes
- Improves documentation for UTF-8 conversion methods with clearer buffer allocation guidance
- Adds comprehensive test coverage for string constructors, memory allocation, and UTF-8 conversion functionality
- Fixed the logical error in `CornerMax()` method by correcting the openness condition checks
- Added comprehensive GTest suite for `Bnd_Box` class to prevent similar regressions
- Minor code formatting improvements in the `DumpJson()` method
Sander Adamson [Fri, 1 Aug 2025 08:47:28 +0000 (09:47 +0100)]
Modeling - Fix null surface crash in UnifySameDomain (#624)
- Added null safety checks in the ClearRts function and IntUnifyFaces method
- Refactored ClearRts to use a more concise implementation with null handling
- Added a test case to verify the fix works with tessellated geometry
- Created custom upload-artifacts and download-artifacts actions with platform-specific logic
- Updated all existing workflows to use the new custom artifact actions
- Added extraction steps for tar.gz archives in the test summary workflow
Coding - Remove unused dependencies from TKXDEDRAW (#650)
- Removed unused dependency includes from TKXDEDRAW/XDEDRAW module files
- Moved dimension type checking methods from STEPCAFControl_GDTProperty to XCAFDimTolObjects_DimensionObject
- Updated external library dependencies to remove unused libraries
- Adds copy constructors for 9 geometry classes (Bezier/BSpline curves and surfaces, offset curves and surfaces in both 2D and 3D)
- Updates Copy() methods to use the new copy constructors instead of recreating objects through standard constructors
- Includes comprehensive test coverage for all new copy constructors
- Migrates legacy text-based FILES, PACKAGES, and EXTERNLIB configuration files to proper CMake format (.cmake extensions)
- Updates CMakeLists.txt files to use modern CMake practices with explicit configurations and target-specific definitions
- Modifies the qt_macro.cmake to work with the new CMake variable-based file management system
- Replaces all `CMAKE_SOURCE_DIR` references with `OCCT_ROOT_DIR` across CMake files
- Updates build templates to use the new root directory variable
- Modifies environment variable configurations to use the flexible root path
Testing - Update GitHub Actions to use latest versions (#640)
- Updates `actions/checkout` from v4.1.7 to v4.2.2 across all workflows
- Updates `actions/upload-artifact` from v4.4.3 to v4.6.2 across all custom actions
- Updates `actions/download-artifact` from v4.1.7/v4.1.8 to v4.3.0 across all custom actions
- Restructures VCPKG manifest directory structure and updates path references accordingly
- Implements a comprehensive portfile.cmake with feature detection, build configuration, and installation logic
- Updates overlay port and triplet paths to reflect the new directory structure
- Added precompiled headers support for improved compilation performance
- Added C++20 and C++23 standard compilation mode options
- Added optimized build configuration for production deployments
- Added Direct3D graphics backend support for Windows platforms
- Addition of vcpkg layout configuration with CMake file placement in share/ directory for vcpkg compliance
- Introduction of OCCT_PROJECT_NAME parameter (defaults to "opencascade") for customizing directory structure in vcpkg layout
- Updated environment scripts and build templates to support vcpkg directory structure while maintaining backward compatibility
Modelling - Add option to not build history in BRepFill_PipeShell (#632)
- Adds `myIsBuildHistory` boolean member to `BRepFill_PipeShell` with default value `true`
- Implements getter/setter methods in both `BRepFill_PipeShell` and `BRepOffsetAPI_MakePipeShell` interfaces
- Conditionally calls `BuildHistory()` method based on the flag value
Modelling - GeomFill_CorrectedFrenet hangs in some cases (#630)
- Added parameter progression check to prevent infinite loops when step size becomes too small
- Improved code formatting and variable naming for better maintainability
- Added comprehensive test suite covering the infinite loop scenario and edge cases
Configuration - Fix ARCH for older 32-bit macs (#626)
- Updates architecture detection conditions to include aarch64 and arm64 as 64-bit architectures
- Removes redundant ARCH="64" assignment for Darwin systems since it's already handled by the architecture check
- Fixes a syntax error in the existing aarch64 condition