Commit Graph

5384 Commits

Author SHA1 Message Date
Pasukhin Dmitry
7d2cce09cc Build - Remove GLTF files from XDEDRAW (#649)
- Removes the `DEGLTF_ConfigurationNode.hxx` include from the XDEDRAW source file
2025-07-28 21:48:29 +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
Pasukhin Dmitry
0eb86fb05a Coding - Geom package Copy optimisation (#645)
- 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
2025-07-26 17:38:46 +01:00
Pasukhin Dmitry
9219a3162e Foundation classes - Include brackets type fix (#635)
- Updates include statements to use angle brackets for foundation class headers
2025-07-22 13:10:36 +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
Dmitrii Kulikov
45f4afb8c7 Foundation classes - Leak of WinAPI resources. (#625)
- Replaces raw IWICBitmapFlipRotator pointer with Image_ComPtr smart pointer wrapper
- Updates pointer access patterns to use smart pointer methods (.ChangePtr() and .get())
- Maintains existing functionality while improving resource management
2025-07-18 16:58:59 +01:00
Kirill Gavrilov
0322620c85 Coding, AIS_InteractiveContext - mark as deprecated methods related to Immediate Mode rendering (#521) 2025-07-16 19:14:06 +01:00
Kirill Gavrilov
589960b20a Draw, vcomputehlr - Misprint in command leading to error if no Viewer (#526) 2025-07-16 19:08:26 +01:00
Kirill Gavrilov
afdcc4734d Documentation, HLRBRep_HLRToShape - Add missing description to some methods (#525) 2025-07-16 17:50:55 +01:00
Kirill Gavrilov
468bcd0c27 Data Exchange, RWObj_Reader - Facets with empty normals like 'f 1// 2// 3//' (#520)
Removing an obsolete header comment in the PPM writer
Correcting the handling of facet indices when normals or texture coordinates are empty in the OBJ reader.
- In Image_AlienPixMap.cxx, the unused header comment is removed.
- In Graphic3d_Aspects.hxx, the default viewer settings comment is updated.
- In RWObj_Reader.cxx, additional checks are added
    to correctly parse OBJ face definitions with empty texture and normal indices.
2025-07-16 15:24:48 +01:00
Kirill Gavrilov
90b0e1d590 Documentation - Graphic3d_Aspects::PolygonOffsets update comments (#519)
Updated the documented default "units" value in Graphic3d_Aspects.hxx from 0 to 1.
2025-07-16 11:44:49 +01:00
Kirill Gavrilov
4365b63531 Visualization, Image_AlienPixMap - do not write comment into binary PPM image
This comment is not skipped by some Linux image readers (including GIMP)
and display image corrupted (shifted colors, etc.).
2025-07-16 11:29:12 +01:00
Dmitrii Kulikov
413c08272b Data Exchange, STP Import - Fixing missing GDT values (#617)
- Changes type declarations from specific measure types to `Handle(Standard_Transient)` for broader compatibility
- Adds runtime type checking and conversion logic to extract measure values from both supported types
- Includes comprehensive unit tests to validate the new functionality
2025-07-15 11:09:36 +01:00
sshutina
ef187e7b20 Data Exchange, GLTF Reader - Fix indices during parsering of arrays (#602)
- Use the loop index (`anIndex` or `i`) instead of always reading `theValue[0]`.
- Preserve existing behavior of array allocation and string concatenation.
- Updated three loops in `RWGltf_GltfJsonParser.cxx` to reference the correct element.
2025-07-14 11:04:03 +01:00
Pasukhin Dmitry
06f6a5afec Testing - Fix master validation workflow (#611)
- Wrap deprecated FFmpeg calls in MSVC warning push/pop pragmas in two source files  
- Introduce `.github/workflows/master-validation.yml` and remove several old workflows  
- Broadened `if` conditions in `daily-ir-vcpkg-configure.yml` and updated macOS brew deps
2025-07-13 19:28:32 +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
Pasukhin Dmitry
ceafdb0436 Foundation Classes, math_DoubleTab - Rework to NCollection container (#607)
- Refactors `math_DoubleTab` to use `NCollection_Array2` as its underlying container
- Eemoves the old C‐array implementation, and updates collection classes to improve move semantics and bounds manipulation. 
- Rework `math_DoubleTab` to wrap `NCollection_Array2`, with buffer optimization for small sizes  
- Enhance `NCollection_Array2` and `NCollection_Array1` with proper move semantics and bound‐updating methods  
- Remove legacy `.lxx`/`.cxx` implementations, add tests and update CMake file lists
2025-07-13 10:58:44 +01:00
Pasukhin Dmitry
313630c282 Foundation Classes - Optimize NCollection_Array1 with type specific (#608)
- Replaced parameterless `construct()` and `destroy()` methods with parameterized versions that specify ranges
- Updated type trait checks from `is_arithmetic` to `is_trivially_default_constructible` and `is_trivially_destructible`
- Removed redundant local variable `anOldSize` in the `Resize` method
2025-07-12 20:05:55 +01:00
Pasukhin Dmitry
08f6de3aff Data Exchange, Step Export - Preserving control directives (#601)
- Introduced `CleanTextForSend` static helper with detailed documentation.
- Updated `StepData_StepWriter::Send` to use the new helper and simplified quoting/line‐wrapping logic.
- Added comprehensive GTests for `CleanTextForSend` and updated the test suite configuration.
2025-07-12 17:05:39 +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
9707a155c0 Foundation Classes - Rework atomic and Standard_Condition (#598)
- Replace all `Standard_Atomic_Increment`/`Decrement` calls and `volatile` counters with `std::atomic` usage.
- Rewrite `Standard_Condition` header to use `std::mutex`, `std::condition_variable`, and `std::atomic<bool>`.
- Deprecate old atomic APIs in `Standard_Atomic.hxx`.
2025-07-10 10:10:33 +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
22d437b771 Visualization - Enhance FFmpeg Compatibility Layer and Update Video Recorder (#582)
- Creation of Media_FFmpegCompatibility.pxx to wrap deprecated functions and API changes.
- Refactoring of Media_FormatContext and Media_CodecContext to use the new compatibility layer.
- Updates to Image_VideoRecorder and its tests to leverage the new compatibility functions and ensure proper codec context handling.
2025-06-27 14:38:01 +01:00
Pasukhin Dmitry
6b69f59803 Coding - Optimize gp_Vec, gp_Vec2d, gp_XY, and gp_XYZ classes (#578)
Renamed parameters and improved consistency across methods.
Simplified mathematical computations and replaced indirect API calls with direct data member access where performance‐critical.
Updated and optimized matrix operations including inversion, transposition, and power calculations.
2025-06-26 09:37:35 +01:00
Pasukhin Dmitry
ed7a447177 Coding - Add conversion utilities for STEP geometrical and visual enumerations (#545)
- Introduced RWStepGeom_RWTransitionCode for converting StepGeom_TransitionCode to/from string representations.
- Refactored RWStepGeom_RWTrimmedCurve to utilize RWStepGeom_RWTrimmingPreference for trimming preference conversions.
- Created RWStepGeom_RWTrimmingPreference for handling StepGeom_TrimmingPreference enumerations.
- Updated RWStepGeom_RWUniformCurve and related classes to use RWStepGeom_RWBSplineCurveForm for B-spline curve form conversions.
- Added RWStepGeom_RWUniformSurface and related classes to use RWStepGeom_RWBSplineSurfaceForm for B-spline surface form conversions.
- Implemented RWStepShape_RWBooleanOperator for boolean operator conversions in STEP shapes.
- Refactored RWStepShape_RWBooleanResult to utilize RWStepShape_RWBooleanOperator for boolean operator handling.
- Introduced RWStepVisual_RWCentralOrParallel for central or parallel projection type conversions.
- Added RWStepVisual_RWSurfaceSide for surface side enumeration conversions.
- Updated RWStepVisual_RWSurfaceStyleUsage to use RWStepVisual_RWSurfaceSide for handling surface side.
- Created RWStepVisual_RWTextPath for text path enumeration conversions.
- Refactored RWStepVisual_RWTextLiteral to utilize RWStepVisual_RWTextPath for text path handling.
- Updated RWStepVisual_RWViewVolume to use RWStepVisual_RWCentralOrParallel for projection type conversions.
2025-06-25 11:40:51 +01:00
Pasukhin Dmitry
97920011fa Foundation Classes - Matrix multiplied issue (#522)
Refactor multiplication to avoid self-correlation issues by using a temporary copy.
Add a test file (math_Matrix_Test.cxx) to verify proper behavior.
2025-06-24 12:38:31 +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
ikochetkova
f1cb756901 Data Exchange, Step Export - Ignoring unit factors during tessellation export (#577)
Provide unit factors into the tessellation export methods.
2025-06-20 15:38:33 +01:00
Pasukhin Dmitry
9ddcdae3f9 Coding, Data Exchange - Optimize entity graph evaluating #562
Updated the Evaluate() function to integrate memory pool usage and streamline the evaluation loop.
Simplified shared entity retrieval in GetShareds() and Sharings().
Added necessary include for NCollection_IncAllocator to support memory pooling.
2025-05-30 16:11:22 +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
Elias Cohenca
4f2d4c1f4b Data Exchange, GLTF - fix saving edges when Merge Faces is enabled #554
Removed check for LineStrip mode to force use of Lines for merged faces
Updated primitive mode checks by removing LineStrip references
Added getShapeType to correctly determine the underlying shape type from compounds and updated index calculation logic
2025-05-23 12:24:13 +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
2398b87d36 Testing - GCC bug workaround for test NCollection_LocalArrayTest, CustomType #549
Test was failing on Ubuntu, gcc 13.3.0, debug, due to incorrect linkage.
Fixed by renaming TestStruct to NCollection_LocalArray_TestStruct.
2025-05-19 19:32:46 +01:00
Pasukhin Dmitry
973259d411 Coding - Small optimization of StepData_StepReaderData #543
Refactor SetEntityNumbers to use reusable memory pool.
Update SetRecord to avoid extra map searches.
2025-05-19 12:07:31 +01:00
Elias Cohenca
b29788cae0 Data Exchange, GLTF - Change export line type to LINE_STRIP #535
GLTF exporter mark edges as a LINE, which is 2 connected points.
OCCT polylines is mostly line strip structure.
Updated GLTF reader to handle new type of lines
2025-05-17 10:00:40 +01:00
Dmitrii Kulikov
2eeb0ed5ba Modeling - Bnd_BoundSortBox::Compare fails in some cases #518
Class Bnd_BoundSortBox is refactored.
Some cases when Bnd_BoundSortBox could potentially fail to check
  intersection between boxes are fixed.
Google tests are added for Bnd_BoundSortBox class.
2025-05-16 16:04:48 +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
Dmitrii Kulikov
a56d85bf15 Modeling - BRepFilletAPI_MakeFillet Segfault with two curves and rim #532
Added null checks for TopoDS_Face in ChFi3d_Builder_2 and BRepAdaptor_Surface.
Added tests to check for crash.
2025-05-15 19:35:52 +01:00
Dmitrii Kulikov
66d2a06b5a Foundation Classes - Return value is overridden by OCCT #528
- Removed OSD_PerfMeter.h and integrated its functionality directly into OSD_PerfMeter.hxx.
- Updated OSD_PerfMeter to manage stopwatches through a singleton StopwatchStorage class.
- Enhanced meter initialization and management to support shared meters by name.
- Implemented methods for starting, stopping, and printing elapsed time for performance meters.
- Added OSD_PerfMeter_Test.cxx to implement unit tests for OSD_PerfMeter functionality.
- Test bug23237 is delete as it refers to removed code.
2025-05-15 15:21:52 +01:00
Pasukhin Dmitry
469da02ca6 Configuration - Fixed pathes to 3rd-party in cmake configuration (#523)
Update target_link_libraries to use PUBLIC and PRIVATE visibility for dependencies.
Now all 3rd-party is hidden for the external linking, no more issues to invalid path to 3rd-party
2025-05-15 13:04:14 +01:00
ikochetkova
6aa605ef2f Data Exchange - Add missed headers (#530)
Add headers missed due to enabled BUILD_USE_PCH configure setting
2025-05-14 18:11:12 +01:00
ikochetkova
1158cba0df Modeling Algorithms - XCAFDoc_Editor::RescaleGeometry does not rescale translation of roots reference (#529)
Add processing of roots, which are transformed references of parts/assemblies.
2025-05-14 12:07:52 +01:00
ikochetkova
18a46604fc Data Exchange, Step Export - Apply a scaling transformation (#513)
Add possibility to export scaling factor into the STEP file as a cartesian_transformation_operator_3d.
Add flag for turning on/off (on by default) this behavior.
2025-05-12 17:15:58 +01:00
ikochetkova
7cd39973a4 Data Exchange, Gltf Reader - Implement non-uniform scaling in Gltf Import #503
Apply non-uniform scale factors directly to the triangulation during Gltf import.
Add flag for turning on/off (on by default) this behavior.
OCP-1948
2025-04-24 14:20:36 +01:00
ikochetkova
3ee97f70d0 Data Exchange, IGES Export - Missing Model Curves in transfer cache #483
Check if the curve was already created and use it. Works for shared edges cases.
2025-04-22 18:01:06 +01:00
Pasukhin Dmitry
7aa85582ad Coding - MSVC warning fix for STEP Rendering properties #498
Fixed warning on MSVC compiler with name overriding and type mismatching.
2025-04-13 21:05:22 +01:00
luzpaz
a3595cb871 Documentation - Fix various typos found in codebase #495
Found via codespell
2025-04-12 15:02:50 +01:00
sshutina
db33e7a43f Data Exchange, GLTF Reader - Add stream to json parser to read lines and points #489
Reorganize GLTF mesh reader to work with streams.
The updated scenario is impact on Edge and Vertex reading, which were
  rely on postponed loading operation, which re-create stream by file name.
2025-04-12 13:40:29 +01:00
Pasukhin Dmitry
15ec314a87 Modeling - Periodic BSpline curve bounding #493
Enhance periodic curve handling in BndLib_Add3dCurve::Add method.
Checks the periodic BSpline on 3 directions of period for tolerance upgrade.
2025-04-11 22:08:02 +01:00