]> OCCT Git - occt.git/log
occt.git
5 days agoCoding - Remove OSD_MAllocHook class (#707)
Pasukhin Dmitry [Mon, 8 Sep 2025 08:50:07 +0000 (09:50 +0100)]
Coding - Remove OSD_MAllocHook class (#707)

- 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

6 days agoTesting - Fix GTests for TKMath in Debug (#706)
Pasukhin Dmitry [Sun, 7 Sep 2025 18:17:58 +0000 (19:17 +0100)]
Testing - Fix GTests for TKMath in Debug (#706)

- 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

6 days agoTesting - Add unit tests for PLib functionality (#705)
Pasukhin Dmitry [Sun, 7 Sep 2025 18:17:13 +0000 (19:17 +0100)]
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.

7 days agoModeling - Fix array indexing bug in IntAna_IntQuadQuad::NextCurve method (#703)
Pasukhin Dmitry [Sat, 6 Sep 2025 12:36:48 +0000 (13:36 +0100)]
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

7 days agoTesting - Resolving CICD issues (#702)
Pasukhin Dmitry [Sat, 6 Sep 2025 10:14:31 +0000 (11:14 +0100)]
Testing - Resolving CICD issues (#702)

- Added missing `<algorithm>` include for C++ standard library functionality
- Suppressed unknown warning options in the macOS build configuration to prevent build failures

9 days agoShape Healing, STP Import - Revolved shape in STEP file is imported inverted (#699)
ikochetkova [Thu, 4 Sep 2025 16:05:44 +0000 (17:05 +0100)]
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.

10 days agoData Exchange, DE Wrapper - Reorganisation of plugin system for Configuration Nodes...
Pasukhin Dmitry [Wed, 3 Sep 2025 15:51:18 +0000 (16:51 +0100)]
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.

2 weeks agoTesting - Fix macOS setup to install Mono separately (#697)
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

2 weeks agoMesh - Stack overflow when meshing (#695)
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

2 weeks agoTesting - Cover math module with GTests (#684)
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

2 weeks agoDraw - Fix message color mixing (#685)
Kirill Gavrilov [Sat, 2 Mar 2024 12:03:11 +0000 (15:03 +0300)]
Draw - Fix message color mixing (#685)

Message color from previous message in Unix was mixed.

3 weeks agoCoding - Dangerous use of 'cin' (#681) IR
Pasukhin Dmitry [Sun, 17 Aug 2025 20:03:18 +0000 (21:03 +0100)]
Coding - Dangerous use of 'cin' (#681)

- Replaced hardcoded buffer sizes with `constexpr size_t aBufferSize` constants
- Added `width()` calls to input streams before reading to prevent buffer overflows
- Applied consistent buffer size management across multiple input operations

3 weeks agoCoding - Incorrect return-value check for a 'scanf'-like function (#680)
Pasukhin Dmitry [Sun, 17 Aug 2025 20:01:32 +0000 (21:01 +0100)]
Coding - Incorrect return-value check for a 'scanf'-like function (#680)

Fix sscanf condition checks in iges_lire function for better error handling

3 weeks agoCoding, TKXSBase - Translation to English (#679)
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.

3 weeks agoCoding - Moving to Sprintf call (#675)
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

3 weeks agoCoding, TKDEIGES - Translation to English (#678)
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.

4 weeks agoCoding - Update Clang-format with more macroses (#677)
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

4 weeks agoCoding - Reducing relying on exceptions (#676)
Pasukhin Dmitry [Sat, 16 Aug 2025 12:55:33 +0000 (13:55 +0100)]
Coding - Reducing relying on exceptions (#676)

- Replaced try-catch blocks with explicit validation checks in PCDM_ReadWriter_1.cxx
- Added division-by-zero protection in XSDRAWSTL.cxx using precision-based comparison
- Improved error handling for integer parsing operations

4 weeks agoCoding, StepData - Translation to English (#672)
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

4 weeks agoData Exchange, STP - Crash on empty list (#671)
Pasukhin Dmitry [Sat, 16 Aug 2025 08:24:21 +0000 (09:24 +0100)]
Data Exchange, STP - Crash on empty list (#671)

Added condition to always allocate an array in case of empty list

4 weeks agoCoding - Method guard iterative update (#674)
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

4 weeks agoTesting - Removed old test reference (#673)
Pasukhin Dmitry [Fri, 15 Aug 2025 08:43:27 +0000 (09:43 +0100)]
Testing - Removed old test reference (#673)

Fixed regression when retests were failed for not windows.

4 weeks agoCoding, DEGLTF_Provider - Hiding declaration (#669)
Pasukhin Dmitry [Thu, 14 Aug 2025 09:24:27 +0000 (10:24 +0100)]
Coding, DEGLTF_Provider - Hiding declaration (#669)

DEGLTF_Provider.cxx(144,29): warning C4456: declaration of 'aContext' hides previous local declaration

4 weeks agoData Exchange, STEP Export - General Attributes (#634)
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

5 weeks agoData Exchange, DE_Wrapper - Implement Stream support (#663)
Pasukhin Dmitry [Fri, 8 Aug 2025 11:05:27 +0000 (12:05 +0100)]
Data Exchange, DE_Wrapper - Implement Stream support (#663)

- Adds stream-based read/write methods to multiple data exchange providers
- Refactors underlying APIs (VrmlAPI_Writer, StlAPI_Writer, RWStl) to support stream operations
- Implements comprehensive test coverage for stream functionality
- Adds validation utilities for improved error handling

5 weeks agoFoundation Classes - Documentation update for TCollection (#665)
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

5 weeks agoModeling, Bnd_Box - CornerMax incorrect realisation (#664)
Pasukhin Dmitry [Fri, 8 Aug 2025 09:18:29 +0000 (10:18 +0100)]
Modeling, Bnd_Box - CornerMax incorrect realisation  (#664)

- 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

6 weeks agoModeling - Fix null surface crash in fixshape (#623)
Sander Adamson [Fri, 1 Aug 2025 17:10:21 +0000 (18:10 +0100)]
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

6 weeks agoModeling - Fix null surface crash in UnifySameDomain (#624)
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

6 weeks agoTesting - Create occt artefact action (#658)
Pasukhin Dmitry [Wed, 30 Jul 2025 20:07:08 +0000 (21:07 +0100)]
Testing - Create occt artefact action (#658)

- 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

6 weeks agoCoding - Add .DS_Store to ignore list (#655)
Pasukhin Dmitry [Wed, 30 Jul 2025 13:33:02 +0000 (14:33 +0100)]
Coding - Add .DS_Store to ignore list (#655)

6 weeks agoCoding - Bump version to 8.0.0-rc2 V8_0_0_rc2
dpasukhi [Tue, 29 Jul 2025 11:45:21 +0000 (12:45 +0100)]
Coding - Bump version to 8.0.0-rc2

6 weeks agoCoding - Remove unused dependencies from TKXDEDRAW (#650)
Pasukhin Dmitry [Tue, 29 Jul 2025 07:39:07 +0000 (08:39 +0100)]
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

6 weeks agoBuild - Remove GLTF files from XDEDRAW (#649)
Pasukhin Dmitry [Mon, 28 Jul 2025 20:48:29 +0000 (21:48 +0100)]
Build - Remove GLTF files from XDEDRAW (#649)

- Removes the `DEGLTF_ConfigurationNode.hxx` include from the XDEDRAW source file

6 weeks agoModeling - Implement new Helix Toolkit (#648)
Pasukhin Dmitry [Mon, 28 Jul 2025 11:51:16 +0000 (12:51 +0100)]
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

6 weeks agoConfiguration, CMake - Build config file is invalid (#647)
Pasukhin Dmitry [Sun, 27 Jul 2025 11:33:37 +0000 (12:33 +0100)]
Configuration, CMake - Build config file is invalid (#647)

- Fixed missing `@` delimiter in template variable substitution for QT directory detection
- Added compiler bitness calculation before custom script generation
- Implemented nested variable expansion for custom build paths

6 weeks agoConfiguration, CMake - Disable build GLTF without RapidJSON (#646)
Pasukhin Dmitry [Sun, 27 Jul 2025 09:21:21 +0000 (10:21 +0100)]
Configuration, CMake - Disable build GLTF without RapidJSON (#646)

Exclude TKDEGLTF and TKXSDRAWGLTF toolkits when RapidJSON is disabled

7 weeks agoCoding - Geom package Copy optimisation (#645)
Pasukhin Dmitry [Sat, 26 Jul 2025 16:38:46 +0000 (17:38 +0100)]
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

7 weeks agoCMake - Remove unused CMake script (#644)
Pasukhin Dmitry [Sat, 26 Jul 2025 12:21:22 +0000 (13:21 +0100)]
CMake - Remove unused CMake script (#644)

Removed script for OCCT toolkit sample preparation

7 weeks agoSamples - CMake configuration fix (#643)
Pasukhin Dmitry [Fri, 25 Jul 2025 09:38:48 +0000 (10:38 +0100)]
Samples - CMake configuration fix (#643)

- 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

7 weeks agoConfiguration, CMake - Flexible project root (#641)
Pasukhin Dmitry [Thu, 24 Jul 2025 08:49:19 +0000 (09:49 +0100)]
Configuration, CMake - Flexible project root (#641)

- 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

7 weeks agoTesting - Update GitHub Actions to use latest versions (#640)
Pasukhin Dmitry [Wed, 23 Jul 2025 15:51:43 +0000 (16:51 +0100)]
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

7 weeks agoConfiguration - Add VCPKG port opencascade (#638)
Pasukhin Dmitry [Wed, 23 Jul 2025 14:22:55 +0000 (15:22 +0100)]
Configuration - Add VCPKG port opencascade (#638)

- 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

7 weeks agoConfiguration - VCPKG extend feature list (#637)
Pasukhin Dmitry [Tue, 22 Jul 2025 20:13:11 +0000 (21:13 +0100)]
Configuration -  VCPKG extend feature list (#637)

- 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

7 weeks agoConfiguration - Add vcpkg layout support (#618)
Pasukhin Dmitry [Tue, 22 Jul 2025 20:12:11 +0000 (21:12 +0100)]
Configuration - Add vcpkg layout support (#618)

- 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

7 weeks agoFoundation classes - Include brackets type fix (#635)
Pasukhin Dmitry [Tue, 22 Jul 2025 12:10:36 +0000 (13:10 +0100)]
Foundation classes - Include brackets type fix (#635)

- Updates include statements to use angle brackets for foundation class headers

7 weeks agoModelling - Add option to not build history in BRepFill_PipeShell (#632)
Dmitrii Kulikov [Tue, 22 Jul 2025 09:42:02 +0000 (10:42 +0100)]
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

7 weeks agoModelling - GeomFill_CorrectedFrenet hangs in some cases (#630)
Dmitrii Kulikov [Mon, 21 Jul 2025 10:10:27 +0000 (11:10 +0100)]
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

8 weeks agoTesting - Fix skipped daily IR on macOS (#628)
Pasukhin Dmitry [Sat, 19 Jul 2025 10:32:13 +0000 (11:32 +0100)]
Testing - Fix skipped daily IR on macOS (#628)

Fix macOS job condition in daily vcpkg configuration workflow

8 weeks agoConfiguration - Fix ARCH for older 32-bit macs (#626)
Pasukhin Dmitry [Sat, 19 Jul 2025 10:04:38 +0000 (11:04 +0100)]
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

8 weeks agoFoundation classes - Leak of WinAPI resources. (#625)
Dmitrii Kulikov [Fri, 18 Jul 2025 15:58:59 +0000 (16:58 +0100)]
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

8 weeks agoCoding, AIS_InteractiveContext - mark as deprecated methods related to Immediate...
Kirill Gavrilov [Fri, 25 Apr 2025 05:49:11 +0000 (08:49 +0300)]
Coding, AIS_InteractiveContext - mark as deprecated methods related to Immediate Mode rendering (#521)

8 weeks agoDraw, vcomputehlr - Misprint in command leading to error if no Viewer (#526)
Kirill Gavrilov [Sat, 19 Apr 2025 07:09:10 +0000 (10:09 +0300)]
Draw, vcomputehlr - Misprint in command leading to error if no Viewer (#526)

8 weeks agoDocumentation, HLRBRep_HLRToShape - Add missing description to some methods (#525)
Kirill Gavrilov [Sat, 19 Apr 2025 07:34:22 +0000 (10:34 +0300)]
Documentation, HLRBRep_HLRToShape - Add missing description to some methods (#525)

8 weeks agoData Exchange, RWObj_Reader - Facets with empty normals like 'f 1// 2// 3//' (#520)
Kirill Gavrilov [Wed, 16 Jul 2025 12:16:52 +0000 (13:16 +0100)]
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.

8 weeks agoDocumentation - Graphic3d_Aspects::PolygonOffsets update comments (#519)
Kirill Gavrilov [Wed, 16 Jul 2025 10:43:52 +0000 (11:43 +0100)]
Documentation - Graphic3d_Aspects::PolygonOffsets update comments (#519)

Updated the documented default "units" value in Graphic3d_Aspects.hxx from 0 to 1.

8 weeks agoVisualization, Image_AlienPixMap - do not write comment into binary PPM image
Kirill Gavrilov [Wed, 16 Jul 2025 10:29:12 +0000 (11:29 +0100)]
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.).

2 months agoData Exchange, STP Import - Fixing missing GDT values (#617)
Dmitrii Kulikov [Tue, 15 Jul 2025 10:09:36 +0000 (11:09 +0100)]
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

2 months agoConfiguration - VCPKG add GTest feature (#616)
Pasukhin Dmitry [Mon, 14 Jul 2025 21:15:51 +0000 (22:15 +0100)]
Configuration - VCPKG add GTest feature (#616)

- Bumped OCCT version from 7.8.1 to 8.0.0 and updated the documentation URL.
- Enhanced descriptions for existing vcpkg features and introduced a “gtest” feature in vcpkg.json.
- Modified CMakeLists.txt to add/unset the GTest vcpkg feature and reorganized test setup calls.

2 months agoData Exchange, GLTF Reader - Fix indices during parsering of arrays (#602)
sshutina [Mon, 14 Jul 2025 10:04:03 +0000 (11:04 +0100)]
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.

2 months agoTesting - Fix master validation workflow (#611)
Pasukhin Dmitry [Sun, 13 Jul 2025 18:28:32 +0000 (19:28 +0100)]
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

2 months agoCoding - Function guard update (#610)
Pasukhin Dmitry [Sun, 13 Jul 2025 12:16:51 +0000 (13:16 +0100)]
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.

2 months agoTesting - Add performance summary posting to PR (#612)
Pasukhin Dmitry [Sun, 13 Jul 2025 11:55:30 +0000 (12:55 +0100)]
Testing - Add performance summary posting to PR (#612)

2 months agoFoundation Classes, math_DoubleTab - Rework to NCollection container (#607)
Pasukhin Dmitry [Sun, 13 Jul 2025 09:58:44 +0000 (10:58 +0100)]
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

2 months agoConfiguration - Fix link errors on macOS when not building using vcpkg (#609)
idz [Sun, 13 Jul 2025 08:04:07 +0000 (01:04 -0700)]
Configuration - Fix link errors on macOS when not building using vcpkg (#609)

Moved APPLE CSF definitions into general conditions.
CSF redefinition for APPLE is used for framework detection after the project initialization.

2 months agoFoundation Classes - Optimize NCollection_Array1 with type specific (#608)
Pasukhin Dmitry [Sat, 12 Jul 2025 19:05:55 +0000 (20:05 +0100)]
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

2 months agoData Exchange, Step Export - Preserving control directives (#601)
Pasukhin Dmitry [Sat, 12 Jul 2025 16:05:39 +0000 (17:05 +0100)]
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.

2 months agoTesting - Update samples C++ version (#606)
Pasukhin Dmitry [Sat, 12 Jul 2025 14:44:22 +0000 (15:44 +0100)]
Testing - Update samples C++ version (#606)

- Updating Qt project files to use C++17 standard instead of GNU++11
- Configuring Visual Studio project files to use C++17 language standard
- Setting CMake projects to require C++17 standard

2 months agoTesting - Daily vcpkg package validation (#605)
Pasukhin Dmitry [Sat, 12 Jul 2025 14:38:39 +0000 (15:38 +0100)]
Testing - Daily vcpkg package validation (#605)

- Introduce `.github/workflows/daily-ir-vcpkg-configure.yml` to run OCCT configuration daily on the IR branch for Windows, macOS, and Ubuntu.
- Create a `configure-occt` composite action to encapsulate vcpkg setup and CMake configuration per platform.
- Update the `build-occt` action to reuse the new `configure-occt` step instead of duplicating configuration logic.

2 months agoModeling, ShapeAnalysis_Curve - Mismatch between projected point and parameter (...
Dmitrii Kulikov [Sat, 12 Jul 2025 10:47:49 +0000 (11:47 +0100)]
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`.

2 months agoFoundation Classes - Rework atomic and Standard_Condition (#598)
Pasukhin Dmitry [Thu, 10 Jul 2025 09:10:33 +0000 (10:10 +0100)]
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`.

2 months agoTesting - GH Remove extra jobs (#594)
Pasukhin Dmitry [Sun, 6 Jul 2025 22:20:47 +0000 (23:20 +0100)]
Testing - GH Remove extra jobs (#594)

Clear up duplicated jobs from PR actions.

2 months agoTesting - Draw testing clear up (#595)
Pasukhin Dmitry [Sun, 6 Jul 2025 21:44:42 +0000 (22:44 +0100)]
Testing - Draw testing clear up (#595)

- Deleted slow V3D and performance tests under `tests/v3d` and `tests/perf`.
- Updated `de_before_script` in DE/IGES tests to set `new_resource_path` to a subfolder per file.
- Added cleanup logic in `de_after_script` to delete the temporary resource directories.

2 months agoTesting - Adding ASCII code validation (#593)
Pasukhin Dmitry [Sun, 6 Jul 2025 20:00:22 +0000 (21:00 +0100)]
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.

2 months agoTesting - Migration PR actions to VCPKG-based (#587)
Pasukhin Dmitry [Sun, 6 Jul 2025 13:35:22 +0000 (14:35 +0100)]
Testing - Migration PR actions to VCPKG-based (#587)

Update the default testing to use result of VCPKG.
The 3rd-party are stored in GitHub NuGet storage and reused.
The 3rd-party archive with installed 3rd-party added as an artefact
Updated the actions to work with VCPKG 3rd party

2 months agoDocumentation - Copilot instructions for OCCT development (#589)
Pasukhin Dmitry [Sun, 6 Jul 2025 12:27:09 +0000 (13:27 +0100)]
Documentation - Copilot instructions for OCCT development (#589)

Added copilot-instructions.md
Ignore other agents instruction for git history

2 months agoVisualization - Enhance FFmpeg Compatibility Layer and Update Video Recorder (#582)
Pasukhin Dmitry [Fri, 27 Jun 2025 13:38:01 +0000 (14:38 +0100)]
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.

2 months agoCoding - Optimize gp_Vec, gp_Vec2d, gp_XY, and gp_XYZ classes (#578)
Pasukhin Dmitry [Thu, 26 Jun 2025 08:37:35 +0000 (09:37 +0100)]
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.

2 months agoCoding - Add conversion utilities for STEP geometrical and visual enumerations (...
Pasukhin Dmitry [Wed, 25 Jun 2025 10:40:51 +0000 (11:40 +0100)]
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.

2 months agoConfiguration - VCPKG add TclTk support (#580)
Pasukhin Dmitry [Wed, 25 Jun 2025 09:15:04 +0000 (10:15 +0100)]
Configuration - VCPKG add TclTk support (#580)

Introduces a new "tcltk" feature in vcpkg.json with relevant dependencies.
Updates tcl portfiles and patches to incorporate Tk building, installation, and cleanup.
Modifies CMake and batch environment templates to align with the new TclTk support.

2 months agoConfiguration - Remove jemalloc port files (#581)
Pasukhin Dmitry [Wed, 25 Jun 2025 09:14:14 +0000 (10:14 +0100)]
Configuration - Remove jemalloc port files (#581)

Removed overrides for jemalloc, now use standard port

2 months agoFoundation Classes - Matrix multiplied issue (#522)
Pasukhin Dmitry [Tue, 24 Jun 2025 11:38:31 +0000 (12:38 +0100)]
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.

2 months agoShape Healing - Reusing Surface Analysis for Wire fixing (#565)
Pasukhin Dmitry [Mon, 23 Jun 2025 17:22:47 +0000 (18:22 +0100)]
Shape Healing - Reusing Surface Analysis for Wire fixing (#565)

Providing prepared analysis from ShapeFix_Face to wire.

2 months agoTesting - Update workflows to use Windows 2025 for builds and tests (#579)
Pasukhin Dmitry [Fri, 20 Jun 2025 20:22:15 +0000 (21:22 +0100)]
Testing - Update workflows to use Windows 2025 for builds and tests (#579)

- Replace all `windows-2022` runners with `windows-2025`
- Add `ubuntu-24.04-arm` and `ubuntu-22.04-arm` to the OCCT build matrix

2 months agoData Exchange, Step Export - Ignoring unit factors during tessellation export (#577)
ikochetkova [Fri, 20 Jun 2025 14:38:33 +0000 (15:38 +0100)]
Data Exchange, Step Export - Ignoring unit factors during tessellation export (#577)

Provide unit factors into the tessellation export methods.

3 months agoCoding, Data Exchange - Optimize entity graph evaluating #562
Pasukhin Dmitry [Fri, 30 May 2025 15:11:22 +0000 (16:11 +0100)]
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.

3 months agoCoding - Refactor switch-case statements and improve memory management #569
Pasukhin Dmitry [Fri, 30 May 2025 13:31:26 +0000 (14:31 +0100)]
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.

3 months agoConfiguration - Fixed issue with CSF variable overwriting #561
Pasukhin Dmitry [Sat, 24 May 2025 11:27:14 +0000 (12:27 +0100)]
Configuration - Fixed issue with CSF variable overwriting #561

Include occt_csf file to define CSF variable before usage.

3 months agoData Exchange, GLTF - fix saving edges when Merge Faces is enabled #554
Elias Cohenca [Fri, 23 May 2025 11:24:13 +0000 (14:24 +0300)]
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

3 months agoModeling - Infinite loop when Simplifying Fuse operation, CPU to 100% #557
Dmitrii Kulikov [Thu, 22 May 2025 10:29:54 +0000 (11:29 +0100)]
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.

3 months agoTesting - GCC bug workaround for test NCollection_LocalArrayTest, CustomType #549
Dmitrii Kulikov [Mon, 19 May 2025 18:32:46 +0000 (19:32 +0100)]
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.

3 months agoCoding - Small optimization of StepData_StepReaderData #543
Pasukhin Dmitry [Mon, 19 May 2025 11:07:31 +0000 (12:07 +0100)]
Coding - Small optimization of StepData_StepReaderData #543

Refactor SetEntityNumbers to use reusable memory pool.
Update SetRecord to avoid extra map searches.

3 months agoTesting - Add a new compilation on Clang without PCH #540
Pasukhin Dmitry [Sat, 17 May 2025 20:08:49 +0000 (21:08 +0100)]
Testing - Add a new compilation on Clang without PCH #540

Updated a main workflow to validate the header and more precise warnings.
No PCH helps to validate missed headers.
Fixed PCH issue for mac os
Extend the parameters for occt build action.

3 months agoDraw - Update DrawDefault script to handle missing directory cases #542
Pasukhin Dmitry [Sat, 17 May 2025 12:00:50 +0000 (13:00 +0100)]
Draw - Update DrawDefault script to handle missing directory cases #542

Fixed "Warning: could not find DRAW directory"

3 months agoData Exchange, GLTF - Change export line type to LINE_STRIP #535
Elias Cohenca [Sat, 17 May 2025 09:00:40 +0000 (12:00 +0300)]
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

3 months agoModeling - Bnd_BoundSortBox::Compare fails in some cases #518
Dmitrii Kulikov [Fri, 16 May 2025 15:04:48 +0000 (16:04 +0100)]
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.

3 months agoConfiguration - Update minimum version of C++ to 17 #537
Pasukhin Dmitry [Fri, 16 May 2025 09:30:25 +0000 (10:30 +0100)]
Configuration - Update minimum version of C++ to 17 #537

Update C++ standard to C++17 in build configuration and documentation

3 months agoModeling - General Fuse (BOPAlgo_PaveFiller) optimization #514
Dmitrii Kulikov [Thu, 15 May 2025 23:03:44 +0000 (00:03 +0100)]
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.

3 months agoModeling - BRepFilletAPI_MakeFillet Segfault with two curves and rim #532
Dmitrii Kulikov [Thu, 15 May 2025 18:35:52 +0000 (19:35 +0100)]
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.

3 months agoTesting - IR integration enable concurrency #536
Pasukhin Dmitry [Thu, 15 May 2025 18:34:23 +0000 (19:34 +0100)]
Testing - IR integration enable concurrency #536

Fix concurrency cancel-in-progress condition in CI workflow for IR branch