7159 Commits

Author SHA1 Message Date
Pasukhin Dmitry 3d097a0328 Documentation - Fix documentation generation (#1499) 2026-08-24 17:30:03 +01:00
Pasukhin Dmitry 59d88e7b1c Coding - Windows unused font function (#1498)
Issue after rework of font functonality.
Some of the internal functions are not used for Windows.
2026-08-24 16:01:30 +01:00
Pasukhin Dmitry b185eaf66a DRAW - misprint in scale and 2dscale commands (#1493)
Fixed incorrect operator for scale and 2dscale.
Replaced ^ with *
2026-08-24 09:10:33 +01:00
Pasukhin Dmitry 8ab68fe939 Visualization - Rework BRep font and text construction (#1485)
- Introduce BRepFont with planar glyph regularization and TopoDS/BRepGraph builders.
- Add glyph outline identities and direct outline loading to Font_FTFont.
- Consolidate glyph and text conversion in StdPrs_BRepFont with
  bounded thread-safe caching and per-call contour concatenation.
- Remove legacy Font_BRepFont and BRep text builders and migrate existing callers.
- Add focused tests and update the 8.1.0 migration documentation.
2026-08-23 16:38:54 +01:00
Pasukhin Dmitry 1a2e039ab9 Coding - Clean up the trace debug files (#1487)
Some *trace* old debug classes existed for long time.
Their purpose is accumulte some trace logic for TopOpe or BRepFeat packages.
The problem is that that functionality is no longer used by active developers.
And the functionality in some cases changes behavior and make more complicated to debug.
Lack of documentation how to work with and impact on behavior and
  usage of global/static variables make these classes heavy legacy.
2026-08-23 15:00:47 +01:00
Pasukhin Dmitry 5b145ea48a Coding - Remove obsolete ChFi3d debug instrumentation (#1490)
ChFi3d_Debug and OCCT_DEBUG definitions sometimes impact on
  algorihm behavior and have lack of documentation to use.
- Remove unused ChFi3d trace and context switches
- Remove global performance counters and chronometers
- Remove cross-toolkit timing code from BiTgte_Blend
- Remove obsolete ChFi3d_Debug source file
2026-08-23 13:15:43 +01:00
Pasukhin Dmitry 9248874be6 Modeling Algorithms - eliminate global state from exact HLR (#1489)
- Replace raw rejection-cache arrays with locally owned NCollection_LinearVector storage
- Manage the rejection cache through std::unique_ptr and make destruction idempotent
- Replace mutable masks and numeric globals with constexpr calculations and Precision::Angular()
- Remove obsolete HLRBRep_InternalAlgo debug state, counters, traces, and the hdebug command
- Simplify dead interference-handling branches
- Add exact HLR tests for empty storage, reversed edge ordering, 32-bit word boundaries, and empty algorithms
2026-08-23 13:03:29 +01:00
Pasukhin Dmitry 04082876f3 Modeling Data - Rework ExtremaPC and add 2D algorithms (#1480)
Rework ExtremaPC with analytical and derivative-aware numerical algorithms
  and introduce ExtremaPC2d for planar curves.
Add planar 3D delegation, checked periodic root enumeration, reusable workspaces,
  size_t indexing, adaptor lifetime contracts, and focused GTests.
Extend MathRoot utilities with safe periodic root counting.
2026-08-21 09:29:55 +01:00
Pasukhin Dmitry 8c31e671c2 Modeling Data - Modernize GeomLib storage and evaluation (#1482)
- Replace handled parameter arrays and sequence-based interval fusion
  with direct Array1 and LinearVector APIs, and migrate all callers.
- Reuse LinearVector and Array buffers in surface extension and use
  LocalArray views for fixed small curve workspaces.
- Adopt size_t zero-based access and EvalD methods while narrowing
  temporary lifetimes and using structured bindings where clearer.
- Centralize numerical policy constants and preserve parameter ranges
  during repeated denominator-derivative cancellation.
- Correct affine line directions, isoline degeneration checks, and
  rational Bezier and BSpline boundary comparisons.
- Add focused GTests for array bounds, interval fusion, curve and
  surface extension, rational closedness, and normal estimation.
2026-08-21 08:22:22 +01:00
Pasukhin Dmitry bd81fbfaed Modeling Data - Unify Adaptor2d curve evaluation API (#1484)
- Make Value(), D0-D3(), and DN() non-virtual wrappers delegating to EvalD*().
  - Move evaluation logic to EvalD*() in Adaptor2d_Line2d and Adaptor2d_OffsetCurve.
  - Remove redundant legacy evaluation overrides from Geom2dAdaptor_Curve.
  - Migrate ProjLib_CompProjectedCurve evaluation logic to EvalD*().
  - Remove unimplemented evaluation overrides from ProjLib_ProjectedCurve.
  - Update related documentation for the Eval-based API.
2026-08-21 08:16:49 +01:00
Pasukhin Dmitry 2fa332705f Foundation Classes, TKMath - Rework numerical algorithms (#1479)
- Introduce consistent zero-based APIs using size_t for dimensions and indices.
  - Add explicit result statuses, optional outputs, and callback error handling.
  - Improve scaling, validation, and convergence checks in numerical solvers.
  - Strengthen polynomial root isolation, multiplicity reporting, and deflation.
  - Improve integration, optimization, root-finding, and nonlinear-system methods.
  - Keep fixed-size Newton solvers allocation-free in their iteration loops.
  - Add zero-based accessors to math_Vector, math_Matrix, and NCollection_Array2.
  - Expand GTests and comparisons with equivalent legacy math_* algorithms.
  - Document indexing, failure behavior, tolerances, and convergence contracts.
2026-08-19 20:30:20 +01:00
Pasukhin Dmitry e62f6b2483 Shape Healing - Restore removed connectivity and sewing tools (#1476)
- Restore ShapeFix_EdgeConnect for rebuilding shared vertices
  between connected edges.
- Restore ShapeFix_FaceConnect for sewing selected face boundaries
  and rebuilding affected shells.
- Restore ShapeUpgrade_ShellSewing for sewing individual shells and
  correcting solid orientation.
- Register all restored classes in the TKShHealing source manifests.
- Add focused GTests covering connectivity, tolerances,
  orientation, topology, repeated use, and failure cases.
- Validate resulting edge lengths and surface areas against input
  properties and analytical references.
- Refactor the restored implementations into smaller, maintainable
  phases while preserving the original algorithms.
- Modernize NCollection containers, lookup APIs, and iteration
  according to ordering and storage requirements.
- Synchronize declaration and definition argument names.
2026-08-19 19:18:53 +01:00
Pasukhin Dmitry 8f4df11e17 Draw - Fix C4459 warning in BRepTest_CheckCommands (#1477)
Rename the global shape context map according to the convention for file-scope variables.
2026-08-19 14:31:33 +01:00
Pasukhin Dmitry 76667c8d7e Coding - Fix high-severity CodeQL multiplication warnings (#1478)
- Promote allocation-size operands to size_t before multiplication in
    BSplCLib, BSplSLib, PLib, ApproxInt, GeomEval, and OpenGl
- Compute AdvApp2Var workspace offsets in intptr_t to avoid intermediate
    integer overflow
- Evaluate quadric and manipulator coordinates in double before storing
    them in gp_Pnt
- Use widened OpenGl row offsets consistently for buffer allocation and
    indexing.
- Mark immutable geometry values and buffer sizes as const.
2026-08-19 14:08:00 +01:00
Pasukhin Dmitry 219d198c5d Coding - Restore deprecated type alias headers (#1475)
- Restore compatibility headers for removed typedef-only declarations.
- Mark restored headers and aliases deprecated since OCCT 8.1.0.
- Group legacy typedefs under Deprecated/TypeAliases.
- Keep aliases of fully removed classes excluded.
2026-08-18 17:40:39 +01:00
Pasukhin Dmitry 4478114223 Application Framework - Remove obsolete UTL package (#1474)
- Replace UTL path, environment, file-access, string,
  and storage helpers with OSD, TCollection.
- Remove the UTL package from TKCDF.
- Share document-reference parsing between binary and XML retrieval drivers.
- Validate malformed reference records without introducing new exceptions.
- Handle extensionless document paths without querying an invalid resource key.
- Simplify path decomposition using OSD_Path::FolderAndFileFromPath().
2026-08-18 14:22:53 +01:00
Pasukhin Dmitry e4da2bbd16 Modeling - Modernize BRepGProp_Gauss integration storage (#1473)
- Replace handled math_Vector buffers with NCollection_Array1 and
  NCollection_LocalArray storage.
- Reuse Gauss and knot buffers across integration iterations.
- Use zero-based size_t indexing and standard algorithms for interval
  construction and error selection.
- Convert the Gauss integration type to enum class.
- Simplify inertia initialization and remove obsolete helper methods.
2026-08-18 09:55:23 +01:00
Pasukhin Dmitry 3ed71f8914 Data Exchange, STEP - add FieldKind enum and fix field handling (#1470)
- introduce StepData_Field::FieldKind and remove duplicated numeric kind macros
- preserve compact field storage while correcting 2D dimensions and bounds
- fix integer access and independent copying of one-dimensional lists
- preserve false, true, and unknown logical select values
- iterate entity fields from their actual array lower bounds
- validate StepData_FieldListN sizes
- handle null and unsupported values safely in StepData_StepWriter
- support arbitrary lower bounds when writing real arrays
2026-08-17 18:32:55 +01:00
Pasukhin Dmitry 1349657592 Modeling - Correct BRepTools transformations (#1472)
- Transform geometry and polygonal data in their representation frames.
- Correct triangulation winding and normals for mirrored and general transformations.
- Stabilize normal transformation for very small, large, and singular scales.
- Preserve absent and parameterless polygonal representations correctly.
- Keep the cached general-transformation scale synchronized through the restricted API.
2026-08-17 17:54:28 +01:00
Pasukhin Dmitry ec6533d50d Documentation - Improve Doxygen configuration and build (#1469)
- Add configurable search and Graphviz settings.
- Use the selected Doxygen executable for documentation targets.
- Simplify the Windows documentation build workflow.
- Update Doxygen-related CMake option descriptions.
2026-08-15 21:37:40 +01:00
Pasukhin Dmitry 4719d5fa98 Modeling Data - Refactor Geom_OsculatingSurface (#1468)
- Replace sequence storage with linear vectors and paired orientation data.
- Reuse GeomAdaptor_Surface for EvalD1-based quasi-punctual checks.
- Use LocalArray-backed buffers with At()/ChangeAt() access.
- Sample geometry-driven intervals without fixed floating-point loops.
- Preserve initialization failure cleanup with RAII.
2026-08-15 20:51:37 +01:00
Pasukhin Dmitry 4c8d3df98d Tests - Fix DRAW test migration (#1464)
Use stream APIs instead of temporary files in migrated GTests.
Restore DRAW cases whose serialized data or file-bound behavior is part of the regression.
Keep incomplete cases as explicit TODO skips and tighten deterministic storage expectations.
2026-08-15 01:05:05 +01:00
Pasukhin Dmitry 8abc975c07 Revert "Mesh - Fix iterator invalidation in Delaun triangle-kill cascade (#1450)" (#1459)
This reverts commit 7d2efad9c8.
2026-08-14 14:20:54 +01:00
Brandon Ross 7d2efad9c8 Mesh - Fix iterator invalidation in Delaun triangle-kill cascade (#1450)
Added snapshot of the neighbours links for delaun algo.
Added checks for removed connections during iterations.
2026-08-10 21:07:52 +01:00
Pasukhin Dmitry 6bf468c87c Data Exchange, IGES - Fix stream rework for corrupted files (#1455)
- Preserve carriage returns embedded within fixed-width 80-column IGES records.
- Support CR, LF, CRLF, and delimiter-free record boundaries.
- Restore legacy handling of physical preambles, encoded FNES records, and shifted D-exponent values.
- Serialize IGES provider tests because the legacy reader uses global state.
- Add exact regression expectations for parsed entities, topology, and corrupted input.
2026-08-10 18:38:29 +01:00
gsdali 07e6d8d40e Modeling Data - Fix AdvApp2Var Jacobi maxima written to the wrong workspace slot (#1418)
Fixed approximation of spherical surfaces]
Regression after https://github.com/Open-Cascade-SAS/OCCT/commit/3016a390713d2e893f4bfa797882b9f0266840e1
2026-08-10 12:20:16 +01:00
Pasukhin Dmitry e177d7e68c Modeling - Fix circular wire handling in BRepOffsetAPI_MakeOffset (#1453)
- Correct KPartCircle() handling when an offset collapses a circular edge.
- Prevent fallback to the generic MAT algorithm after the circular special case has been recognized.
- Add GTests for circular wires at, above, and below the 2 mm diameter boundary.
- Cover negative taper, positive offset, and collapsed-circle cases.
2026-08-10 11:18:46 +01:00
Pasukhin Dmitry 5eba9aff4f Tests - Migrate DRAW tests to Gtests (#1448)
Migrate some DRAW tests which do not use external
  CAD files and which do not use visualisation/image dump.
Some tests were modified, but the original idea was preserved
2026-08-09 22:10:30 +01:00
Pasukhin Dmitry 0f7ab882d5 Foundation Classes, NCollection - optimize iteration workflow (#1446)
Introduce native STL-compatible iterators across NCollection containers.
Streamline container storage and access paths.
Split indexed and double-map base implementations.
Retain legacy iterator interfaces and remove obsolete iterator helper headers.
Improved AliasedArray to handle size_t
2026-08-09 18:52:23 +01:00
Pasukhin Dmitry f713b1305f Modeling Algorithms - Enhance fillet and chamfer handling. Part 2 (#1449)
- Detect complete coincidence between fillet and chamfer intersection curves.
- Preserve orientation relationships between equivalent intersection curves.
- Reuse existing restriction edges instead of constructing duplicate topology.
- Merge coincident curve endpoints into shared topological vertices.
- Exclude fully consumed faces and their obsolete boundary edges during reconstruction.
- Mark edges collapsed to a single vertex as degenerated during construction.
- Accept tangential contacts while rejecting transversal intersections.
- Preserve generated and modified shape history in the resulting topology.
- Add GTests for convex, concave, opposing-edge, chamfer, and history cases.
2026-08-09 15:16:27 +01:00
Angelo Bartolome cbca11e975 Modeling - Enhance fillet and chamfer handling. Part 1 (#1293)
- Retain coincident segments only when no regular hatching domain exists.
- Add synthetic tests for limiting and partial boundary overlaps.
CLA: 1144
2026-08-09 13:45:33 +01:00
Pasukhin Dmitry 0d47342863 Coding, Modeling Data - Clean up dead headers (#1439) 2026-08-08 07:19:35 +01:00
Pasukhin Dmitry 4c2c356490 Data Exchange, IGES - Add stream-based I/O support (#1406)
- Add IGES stream reading and writing to DEIGES providers.
- Extend IFSelect, XSControl, and work libraries with generic stream output.
- Keep STEP work-library output aligned with the shared stream interface.
- Convert the legacy IGES parser from C to modern C++.
- Introduce buffered parsing of fixed 80-column IGES records.
- Support LF, CRLF, CR-only, and delimiter-free record layouts.
- Preserve FNES preamble detection and encoded record handling.
- Handle stream errors, enabled exceptions, partial reads, and cleanup safely.
- Isolate mutable parser data with thread-local storage.
- Serialize access to process-wide IGES configuration and restore it on exit.
- Preserve supplied work sessions, transferred models, and selected modifiers.
- Apply modern OCCT naming, casting, documentation, and control-flow style.
- Add tests for shape and document stream I/O, record layouts, and failures.
2026-08-07 20:28:17 +01:00
Pasukhin Dmitry 1cb09f481b Modeling - Optimize exact face classification fallback (#1400)
- Add a thread-safe lazy grid to CSLib_Class2d for constant-time
  classification away from polygon boundaries while preserving the exact
  tolerance path for boundary cells.
- Normalize coordinates and explicit tolerances robustly, handle invalid and
  extreme input values, and preserve cache state correctly across copy and
  move operations.
- Cache face wires, edge occurrences, pcurves, parameter ranges, and optional
  2D bounding boxes in BRepClass_FaceExplorer to avoid repeated topology and
  geometry traversal during exact classification.
- Introduce explicit cached-geometry and bounding-box states in
  BRepClass_Edge, invalidate derived data on topology changes, and isolate
  bounding-box construction failures per edge.
- Reuse a lazily constructed exact face explorer in
  BRepTopAdaptor_FClass2d, cache periodic surface properties, and serialize
  access to mutable exact-classification traversal state.
- Replace node-based classifier and point sequences with contiguous linear
  vectors, remove intermediate polygon copies, and make tighter wire
  discretization transactional.
- Consolidate Perform() and TestOnRestriction() through a shared
  classification path while preserving their boundary and periodic
  recadrement semantics.
2026-08-07 19:05:46 +01:00
Pasukhin Dmitry caad597813 Coding, Modeling Algo - Clean up dead headers (#1442) 2026-08-07 15:18:39 +01:00
Pasukhin Dmitry e616f301da Coding, Data Exchange - Clean up dead headers (#1438)
VRML is intentionally skipped
2026-08-06 16:41:41 +01:00
Pasukhin Dmitry e521a4a7a7 Coding, OCAF - Clean up dead headers (#1441) 2026-08-06 16:05:42 +01:00
Pasukhin Dmitry 4bcc7dae06 Coding, Foundation - Clean up dead headers (#1437) 2026-08-06 14:36:49 +01:00
Pasukhin Dmitry ea716e3fa4 Coding, Draw - Clean up dead headers (#1440) 2026-08-06 14:00:53 +01:00
Pasukhin Dmitry a2a9a8d96f Configuration - Clean up unsupported scripts and templates (#1428)
Removed adm/scripts which were no longer actual and not validated.
Removed adm/templates which were no longer used and not validated.
Fixed the issue with the mixing FreeType/FreeImage inside env.bat
2026-08-03 15:35:45 +01:00
Pasukhin Dmitry 299344fc95 Coding - Move PR GH template (#1423) 2026-08-02 13:07:25 +01:00
Pasukhin Dmitry 7219e39b2c Coding - Bump version to 8.1.0.dev1 (#1422) 2026-08-02 13:07:11 +01:00
Pasukhin Dmitry b8f597c677 Coding - Bump version to 8.0.1 (#1412) V8_0_1 V8.0.1 2026-07-30 12:43:15 +01:00
Pasukhin Dmitry 06f63f15d5 Coding - Add PR GH template (#1411) 2026-07-30 12:12:20 +01:00
Pasukhin Dmitry 50314b6938 Shape Healing - Skip internal and external edges in ShapeAnalysis_FreeBounds (#1408)
- free bounds should be built from boundary edges only
- ignore edges with INTERNAL and EXTERNAL orientation in ConnectEdgesToWires()
2026-07-30 00:01:25 +01:00
David Kaufman 72f14ee359 Shape Healing - Prevent crash on non-manifold wires in ShapeAnalysis_FreeBounds (#1331)
Shape Healing - Prevent crash on non-manifold wires in ShapeAnalysis_FreeBounds

- Exclude non-manifold-only wires from endpoint-based chaining
- Preserve INTERNAL and EXTERNAL-only wires as standalone results
- Skip empty wires and ensure input-order-independent processing
- Replace the DRAW regression with comprehensive GTests
- Cover mixed, empty, reordered, and non-manifold-only inputs through
  ConnectWiresToWires() and ConnectEdgesToWires()
---------
CLA ID: 1147
Co-authored-by: dpasukhi <dpasukhi@opencascade.com>
2026-07-29 21:16:09 +01:00
Pasukhin Dmitry cffb2852ba Modeling - Prevent crashes in ChFi3d_Builder::StartSol (#1407)
Guard invalid edges, faces, adaptors, and missing pcurves before they
  are passed to BRepAdaptor_Curve2d or dereferenced during chamfer construction.
When the topology does not provide a valid curve-on-surface, preserve
  the existing state where possible and return false.
This makes an oversized or otherwise invalid chamfer finish with IsDone() == false
  instead of crashing in BRep_Tool::CurveOnSurface.
2026-07-29 19:14:52 +01:00
Andy Aragon d8b85a6626 Modeling - Optimize elementary deviations in GeomLib_CheckCurveOnSurface (#1373)
Use Adaptor3d_CurveOnSurface composed-curve recognition to handle
  provable elementary cases directly:
- compute the exact maximum at interval endpoints for line pairs;
- Compute exact maxima for line pairs and use trigonometric roots for
   circle and ellipse pairs.
- preserve the existing PSO/Newton pipeline for all other cases.
---------
CLA ID 1148
Co-authored-by: dpasukhi <dpasukhi@opencascade.com>
2026-07-29 19:01:17 +01:00
Pasukhin Dmitry fcf1ea22e9 Documentation, Configuration - Correct guides and generation setup (#1404)
Correct obsolete API references, code examples, terminology, links, and
contribution workflow instructions across the documentation.

Generate Doxygen example paths from OCCT package metadata and fix license
markup. Remove obsolete documentation CMake, layout, and unused PDF
generation files.
2026-07-29 00:36:13 +01:00
Pasukhin Dmitry 13526d7a1b Configuration - support MSYS2 FreeType and TBB discovery (#1403)
Enable system TBB discovery on Windows when no explicit third-party
installation is selected. Support MinGW FreeType import libraries and
versioned runtime DLLs.

Preserve imported CMake targets during CSF processing and validate
MSYS2 GCC and Clang dependency artifacts in master validation.
2026-07-28 20:31:20 +01:00