Commit Graph

56 Commits

Author SHA1 Message Date
Dmitrii Kulikov
c479f6e000 Coding - Rework of Math global functions to stl (#833)
Majority of functions now simply call same functions from std namespace.
Functions that duplicate std namespace functionality are declared
deprecated.
Calls of deprecated functions are replaced with std functions calls.
2025-11-17 14:20:24 +00:00
luzpaz
79289339d8 Documentation - Fix whitespaces and typos (#824)
- Fixed excessive whitespace in multi-line comments
- Corrected spelling errors (e.g., "selectionnable" → "selectable", "begenning" → "beginning")
- Improved comment formatting and readability
2025-11-13 20:31:57 +00:00
Pasukhin Dmitry
570b34b666 Coding - Removing simple gxx files (#827)
- Converted generic template files to direct implementations for three packages (Extrema, MAT, TopBas/HLRAlgo)
- Removed preprocessor macro-based includes and replaced with concrete type definitions
- Updated CMake FILES lists to remove deprecated `.gxx` and `.lxx` files
2025-11-13 19:28:14 +00:00
luzpaz
df59c53e79 Documentation - Fix whitespaces and typos (#821)
- Removed excessive whitespace between words in comments
- Removed <br> syntax
- Fixed spelling errors ("hilight" → "highlights", "texte" → "text")
- Improved comment formatting and structure
2025-11-13 09:30:53 +00:00
Pasukhin Dmitry
396b677095 Testing - Migrate QA DRAW tests to GTest (#823)
- Deletion of 20 legacy DRAW test files (.tcl format) from tests/bugs/ directories
- Addition of 15 new GTest C++ test files across multiple modules
- Removal of corresponding QA command implementations from TKQADraw
2025-11-13 09:28:07 +00:00
Pasukhin Dmitry
44df7106f3 Foundation Classes - Migrate Bnd_B2x and Bnd_B3x from macro-template to C++ templates (#820)
- Replaced macro-based template system with C++ templates for `Bnd_B2` and `Bnd_B3` classes
- Fixed incorrect use of Y-coordinate instead of Z-coordinate in transformation methods
- Added comprehensive GTest test coverage for both 2D and 3D bounding box classes
2025-11-12 18:46:10 +00:00
luzpaz
ed1d0c88cc Documentation - Fix whitespaces and typos (#819)
- Fixed inconsistent whitespace and line breaks in comments
- Corrected spelling errors ("witch" → "which", "sprcified" → "specified", "nul" → "null", etc.)
- Improved formatting consistency in documentation comments
2025-11-12 18:06:11 +00:00
Pasukhin Dmitry
d166ff70e7 Testing - Migrate QA DRAW tests to GTest (#818)
- Removed 37 DRAW test scripts from `tests/bugs/` directories
- Added 31 new GTest C++ test files in appropriate `GTests/` directories
- Removed corresponding QAcommands implementations from QABugs source files
- Updated CMake FILES.cmake files to include new test files
2025-11-10 21:17:50 +00:00
luzpaz
f9f94b6e36 Documentation - Fix whitespaces (#816)
- Standardized spacing in comment formatting (removing extra spaces after colons, between words)
- Fixed one typo in a parameter name within a comment
- Translated one French comment to English
2025-11-10 17:42:08 +00:00
luzpaz
a47cffd0eb Documentation - Fix whitespace and typos (#815) 2025-11-09 21:38:29 +00:00
luzpaz
7ef4b0f2a6 Documentation - Fix whitespaces (#809)
- Corrected spelling errors in comments (e.g., "od" to "of", "thr" to "the")
- Removed unnecessary `<br>` HTML tags from comment formatting
- Normalized whitespace in comments for consistency
- Fixed terminology (e.g., "3-d" to "3D")
2025-11-08 14:11:10 +00:00
Pasukhin Dmitry
2cc2bfdd27 Foundation Classes, gp - Add constexpr/noexcept constructors and standard direction enums (#803)
- Addition of `gp_Dir::D` and `gp_Dir2d::D` enums for standard directions (X, Y, Z, NX, NY, NZ)
- Constexpr/noexcept constructors for geometric primitives (circles, cones, cylinders, etc.)
- Enhanced axis placement classes with enum-based constructors
- Replacement of hardcoded direction values throughout the codebase
2025-11-04 16:21:59 +00:00
Pasukhin Dmitry
787bee375c Coding - Replace Standard_Mutex with std::mutex and migrate to RAII locks (#766)
- Replace legacy Standard_Mutex usage across many modules with std::mutex.
- Include <mutex> where needed and remove <Standard_Mutex.hxx> includes.
- Replace Standard_Mutex::Sentry / explicit Lock/Unlock with std::lock_guard or std::unique_lock.
- Convert optional/heap mutex holders to std::unique_ptr<std::mutex> and adapt locking accordingly.
- Simplify several singleton initializations (remove manual double-checked locking where safe).
- Use thread_local for per-thread flags instead of ad-hoc mutex protection.
- Fix BVH_BuildQueue Fetch logic to preserve thread counters and wasBusy handling.
- Remove obsolete TopTools_MutexForShapeProvider sources and update FILES.cmake.

This modernizes mutex usage, reduces dependency on custom mutex types and improves clarity of locking patterns.
2025-11-03 16:44:08 +00:00
Pasukhin Dmitry
ddffad0a65 Foundation Classes, gp - Mark 2D geometry APIs noexcept/constexpr (#796)
- Added `noexcept` to transformation and mirroring methods across all 2D geometry classes
- Added `constexpr` to trivial getters, setters, and simple computational methods where applicable
- Removed an unused variable declaration in GeomInt_IntSS_1.cxx
2025-11-02 21:02:53 +00:00
Pasukhin Dmitry
b30cee0125 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.
2025-11-02 00:52:32 +00:00
Pasukhin Dmitry
c88c05399f 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
2025-11-01 13:57:11 +00:00
luzpaz
ae33c4ef42 Documentation - Fix whitespace and typos (#772)
- Corrected spelling errors (e.g., "aera" → "area", "nithing" → "nothing")
- Normalized excessive whitespace in comments for better readability
- Standardized comment formatting while preserving technical content
2025-10-29 17:57:19 +00:00
Pasukhin Dmitry
8da5219913 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.
2025-10-27 21:27:16 +00:00
luzpaz
859d1d6f6c Documentation - Fix various typos and comment uniformity (#767)
Fixes user-facing and non-user-facing typos.  
Also removes code comment justification and optimizes whitespace.
2025-10-27 10:42:17 +00:00
Pasukhin Dmitry
1c0bb24479 Shape Healing - Regression after #584 (#753)
Fixed issue with unstable shape order after fixing.
Fixed reference data which was changed
2025-10-21 11:14:33 +01:00
Dmitrii Kulikov
de1fcc2018 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.
2025-10-16 18:46:10 +01:00
Pasukhin Dmitry
f4741d647f Coding - Checking for copyright notice (#749)
Created a new CI step to validate the presence of a copyright notice in each source file.
Updated existed files to include the copyright notice.
2025-10-16 18:39:56 +01:00
Dmitrii Kulikov
d54a7e0786 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
2025-10-16 08:54:40 +01:00
Pasukhin Dmitry
87c50319c7 Shape Healing - Optimize FixFaceOrientation (#584)
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
2025-10-11 12:19:50 +01:00
Dmitrii Kulikov
df7e26c79d Modeling - Crash in BRepOffsetAPI_MakePipeShell (#740)
Performed a basic refactoring of BRepFill_SectionPlacement::Perform()
  and fixed a crash.
2025-10-09 18:37:51 +01:00
Pasukhin Dmitry
0476fd3936 Testing - Add ShapeAnalysis_CanonicalRecognition unit tests (#720)
- Implements 20+ test cases covering curve recognition (line, circle, ellipse) and surface recognition (plane, cylinder, cone, sphere)
- Tests both simple canonical shapes and complex multi-segment/sewn geometry scenarios
- Includes error handling tests for invalid/null shapes
2025-10-09 11:27:04 +01:00
Pasukhin Dmitry
775454b75a 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
2025-10-08 20:31:35 +01:00
Pasukhin Dmitry
76b05809d0 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
2025-10-08 11:50:42 +01:00
Dmitrii Kulikov
6b431882bc Modeling - Segfault on chamfer or fillet approaching ellipse (#738)
Fixed nullptr dereference
2025-10-07 20:15:37 +01:00
Dmitrii Kulikov
1c3b9acf9d Data Exchange - Hang in STEPCAFControl_Reader (#733)
Constructor of BRepTopAdaptor_FClass2d is updated to guarantee
processing of curves with large parameters values with small difference
between them.
2025-09-24 16:47:24 +01:00
Pasukhin Dmitry
47bc102e28 Coding - Method guard iterative update (#732)
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,}[=]*
2025-09-21 11:50:56 +01:00
Pasukhin Dmitry
08c8482271 Coding - Applying formatting to gxx files (#730)
- Updated GitHub Action for ASCII Check and Clang-Format
- Formatted all gxx files in the src directory
2025-09-21 09:53:01 +01:00
ikochetkova
0d30b42cb1 Shape Healing, STP Import - Revolved shape in STEP file is imported inverted (#699)
Make the degenerated torus bounded in two values of parameters processed as a regular to insert a seam edge properly.
2025-09-04 17:05:44 +01:00
Dmitrii Kulikov
5bd288265f 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
2025-08-29 22:49:53 +01:00
Pasukhin Dmitry
5ae60b51d3 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
2025-08-17 12:45:30 +01:00
Pasukhin Dmitry
314527f5c0 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
2025-08-16 20:50:50 +01:00
Pasukhin Dmitry
ae4de70f98 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
2025-08-15 17:14:53 +01:00
Sander Adamson
599869329c Modeling - Fix null surface crash in fixshape (#623)
- Added null surface validation in ShapeAnalysis_Surface constructor and Init method
- Added null surface checks throughout ShapeFix_Face methods to prevent crashes
- Enhanced robustness by validating surface availability before performing surface-dependent operations
2025-08-01 18:10:21 +01:00
Sander Adamson
65742e7375 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
2025-08-01 09:47:28 +01:00
Pasukhin Dmitry
9f761b12ec Modeling - Implement new Helix Toolkit (#648)
- Adds a complete TKHelix toolkit with geometric helix curve adaptor and topological builders
- Implements advanced B-spline approximation algorithms for high-quality helix representation
- Provides comprehensive TCL command interface for interactive helix creation and testing
2025-07-28 12:51:16 +01:00
Dmitrii Kulikov
068aa6ae9f 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
2025-07-22 10:42:02 +01:00
Dmitrii Kulikov
3c2774ea5d 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
2025-07-21 11:10:27 +01:00
Kirill Gavrilov
afdcc4734d Documentation, HLRBRep_HLRToShape - Add missing description to some methods (#525) 2025-07-16 17:50:55 +01:00
Pasukhin Dmitry
0947067ed5 Coding - Function guard update (#610)
- Removed verbose function header comments (name, purpose) across multiple C++ source files.
- Introduced a single-line separator comment before each function for consistent formatting.
- Applied the change in visualization, modeling, algorithms, foundation, and application framework modules.
2025-07-13 13:16:51 +01:00
Dmitrii Kulikov
675d75d134 Modeling, ShapeAnalysis_Curve - Mismatch between projected point and parameter (#600)
- Refactored `ProjectOnSegments`: renamed parameters, added early exit, and detailed doxygen-style docs.
- Updated `ProjectAct`: renamed local variables, stored initial projection values for fallback, and streamlined closed-curve handling.
- Removed `#ifdef OCCT_DEBUG` blocks in `ValidateRange`.
2025-07-12 11:47:49 +01:00
Pasukhin Dmitry
d9684743dc Testing - Adding ASCII code validation (#593)
- Split the existing regression test artifact upload into separate Windows and macOS/Linux steps with platform-specific paths.
- Added `ascii-check` job in the build-and-test workflow to detect non-ASCII characters in changed files.
- Introduced a new composite action (`.github/actions/ascii-check`) to scan diffs and report any non-ASCII content.
2025-07-06 21:00:22 +01:00
Pasukhin Dmitry
57d6038b26 Shape Healing - Reusing Surface Analysis for Wire fixing (#565)
Providing prepared analysis from ShapeFix_Face to wire.
2025-06-23 18:22:47 +01:00
Pasukhin Dmitry
4629ee0ca3 Coding - Refactor switch-case statements and improve memory management #569
- Added missing break statements in switch-case blocks in LDOMBasicString, LDOM_BasicElement, PCDM_ReadWriter, and IntCurve_IntConicConic_1 to prevent fall-through behavior.
- Enhanced Standard_Macro.hxx to support fallthrough attributes across different compilers.
- Corrected the use of std::forward in Standard_MemoryUtils.hxx for better type deduction.
- Replaced raw arrays with NCollection_Array1 in AdvApp2Var_SysBase for improved memory safety.
- Updated Extrema_ExtCC2d to utilize smart pointers for better memory management and avoid potential leaks.
- Refactored Units_UnitsDictionary to use NCollection_Array2 for matrix representation, improving readability and maintainability.
- Initialized TranFirst and TranLast in TopTrans_CurveTransition constructor for better default state management.
- Set myStatus in ShapeConstruct_ProjectCurveOnSurface constructor to ensure proper initialization.
- Changed matrix access in Units_UnitsDictionary to use NCollection_Array2 syntax for consistency.
2025-05-30 14:31:26 +01:00
Dmitrii Kulikov
7ed396b0eb Modeling - Infinite loop when Simplifying Fuse operation, CPU to 100% #557
Minor refactoring of RelocatePCurvesToNewUorigin().
RelocatePCurvesToNewUorigin() can no longer stuck in infinite loop if it found the edge that is not present in theVEmap.
Test bug_gh544 is added to check the fix.
2025-05-22 11:29:54 +01:00
Dmitrii Kulikov
7b016e5c28 Modeling - General Fuse (BOPAlgo_PaveFiller) optimization #514
Adding a null check for the triangulation in BRep_Tool::IsClosed.
Simplifying index lookup logic in BOPDS_DS.
Introducing helper functions (IsPlaneFF and IsClosedFF) and updating iteration loops in BOPAlgo_PaveFiller_6 for improved clarity and robustness.
2025-05-16 00:03:44 +01:00