dpasukhi [Fri, 5 Dec 2025 23:13:07 +0000 (23:13 +0000)]
Testing - Update build-windows-packages workflow for OCCT version 7.9.3
- Bump OCCT version from 7.9.2 to 7.9.3.
- Refactor file handling in the workflow to use Rename-Item instead of Copy-Item for better clarity and efficiency.
- Update artifact paths to include the new version in the filenames.
- Fix env.bat THIRDPARTY_DIR path for Debug builds to use a relative path.
dpasukhi [Sat, 25 Oct 2025 19:58:19 +0000 (20:58 +0100)]
Testing - Add build-windows-packages workflow
Add .github/workflows/build-windows-packages.yml to build and package OCCT on Windows.
Workflow downloads 3rd-party archives, builds Release/Debug variants with and without PCH,
applies GitHub attestation to DLLs, and uploads individual and combined artifacts.
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.
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 [Sun, 30 Nov 2025 10:29:46 +0000 (10:29 +0000)]
Modeling - Memory consumption in BOPAlgo_PaveFiller_6.cxx (#864)
- Introduced a separate temporary allocator (`aTmpAllocator`) for per-iteration collections
- Reorganized collection declarations to distinguish between temporary (per-iteration) and persistent (cross-iteration) data structures
- Added allocator reset logic at the start of each iteration to reclaim memory
Dmitrii Kulikov [Thu, 4 Dec 2025 19:02:29 +0000 (19:02 +0000)]
Modeling - BRepBuilderAPI_GTransform face stretch crash (#875)
- Modified parameter validation to allow curves where `theUFirst > theULast` within `Precision::Confusion()` tolerance
- Updated documentation to reflect the new tolerance-based validation
- Added comprehensive test suites for both 2D and 3D curve adaptors
Dmitrii Kulikov [Sat, 29 Nov 2025 16:25:18 +0000 (16:25 +0000)]
Modelling - Boolean fuse segfaults on loft (#860)
- Added null checks for 2D curve handles to prevent dereferencing null geometry
- Refactored `ProcessDE()` to use modern C++ idioms (auto, structured bindings, range-based iteration patterns)
- Simplified `FindPaveBlocks()` using a lambda function to reduce code duplication
Dmitrii Kulikov [Thu, 27 Nov 2025 13:38:35 +0000 (13:38 +0000)]
Modeling - BRepFilletAPI_MakeFillet::Add hangs on adding edge (#859)
- Refactored the `ReorderFaces` function to iterate through all edges at a vertex instead of assuming only two edges exist
- Replaced manual face swapping with `std::swap` for cleaner code
- Removed debug output statements and unused debug declarations
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.
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
- 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
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.
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
- 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
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
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.
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.
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.
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`.
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.
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.
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.
Pasukhin Dmitry [Sun, 23 Mar 2025 18:57:11 +0000 (18:57 +0000)]
Foundation Classes - Update signal handling for GLIBC compatibility on Linux #458
Simply disabling the code which enables floating point exceptions
is probably wrong, but I don't have a replacement for the
non-posix functions fegetexcept(3) and feenableexcept(3).
Pasukhin Dmitry [Sun, 9 Mar 2025 00:07:17 +0000 (00:07 +0000)]
Visualization - AIS_Shape bounding box re-computation is not working properly #422
Fixed issue with bounding box cleaning algorithm that was causing the bounding box to be only increased.
Now the bounding box is increased and decreased to fit the shape.
Pasukhin Dmitry [Thu, 15 May 2025 12:04:14 +0000 (13:04 +0100)]
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
Configuration - TBB configuration prioritization to release #496
Refactor TBB CMake configuration for checking configuration type.
The solution will be reorganized to math release/debug version.
Prepared only for the hot-fix reason.
Pasukhin Dmitry [Wed, 12 Mar 2025 22:18:44 +0000 (22:18 +0000)]
Configuration - Remove -symbolic linker flag (#432)
Updated VCPKG workflow to follow the type of linking with the triplet.
Removed symbolic linker flag. As a result downgrade of performance.
The symbolic flag has high risk of instability, better to disable.
Zernova Marina [Mon, 17 Feb 2025 15:52:24 +0000 (15:52 +0000)]
Visualization - NCollection_DataMap::Find() exception from AIS_Selection::Select() #375
Problem with NCollection_DataMap::Find() exception during multiple selection in OCC viewer.
Incorrect call is made from AIS_Selection::Select() method at line:
AIS_NListOfEntityOwner::Iterator aListIter = myResultMap.Find (theOwner);
Original issue: 0033742
Extend ShapeUpgrade_UnifySameDomain algorithm working on cases,
where SurfaceOfRevolution or SurfaceOfLinearExtrusion was made on basis of TrimmedCurve.
Original issue: 0033328
Modeling - Removing surface after transformation #374
Old surface is not removed after translation or rotation with geometry copying
Removed unnecessary condition that was added by an earlier fix.
Added a test case.
Original issue: 0033591
Pasukhin Dmitry [Fri, 14 Feb 2025 16:08:45 +0000 (17:08 +0100)]
Testing - WebAssembly build validation #256
Add WebAssembly build workflow for Ubuntu and update CMake warnings for OpenGL usage
Add workaround for platform-specific macros setup before project command
Update CMake configuration for Emscripten and Android toolchains;
Disable default features for vcpkg manifest
Update GitHub workflows to support multiple build types and improve compiler flag handling
Disabled DETools module for Emscripten support in CMake configuration
Pasukhin Dmitry [Fri, 14 Feb 2025 10:47:45 +0000 (11:47 +0100)]
CMake - Disable building Overview by default #369
Updated default behavior to not build documentation
when find doxygen (in case of windows it ofter exist in env variables).
Fixed issue when not defined BUILD_DOC_Overview, but found doxygen cmake issue.
Pasukhin Dmitry [Wed, 12 Feb 2025 14:26:00 +0000 (15:26 +0100)]
Coding - Initialize member variables with default values #362
Clang-tidy applying rule for cppcoreguidelines-pro-type-member-init.
Updated: TKernel and TKMath
Update constructor in some classes instead of direct initialization
Refactor Bnd_BoundSortBox and Bnd_Box constructors to initialize member variables directly
luzpaz [Tue, 11 Feb 2025 12:38:56 +0000 (07:38 -0500)]
Documentation - Fix various typos found in codebase #361
Found via `codespell -q 3 -S "*.fr" -L aadd,abnd,abord,acount,adn,afile,aline,alo,alocation,alog,als,anc,ane,anid,anormal,anout,ans,anumber,aother,aparent,apoints,aprogram,asender,asign,asnd,ba,bbuild,bloc,bord,bu,caf,cas,childrens,childs,classe,clen,commun,cylindre,don,dout,dum,ede,entites,fo,fonction,guid,hist,identic,ii,indx,inout,invalide,ist,iterm,llength,lod,mape,modeling,methode,mye,myu,nam,nd,nin,normale,normales,ons,parametre,parametres,periode,pres,reste,resul,secont,serie,shs,slin,som,somme,syntaxe,sur,te,thei,theis,ther,theres,thes,thev,thex,thet,tol,transfert,va,vas,verifie,vertexes,weight`
Pasukhin Dmitry [Sun, 9 Feb 2025 23:00:37 +0000 (00:00 +0100)]
Testing - Samples build on GH #331
Add GitHub Action to build CSharp sample on Windows
Add MFC and Qt sample build actions
Improve CASROOT assignment logic in env.build.sh and env.install.sh for better compatibility with binary directories