- picked or selected objects are now highlighted via owners instead of interactive objects;
- support methods for owners were added to AIS_InteractiveContext;
- dynamically highlighted owners are now displayed in immediate mode;
- selection without opening of local context is enabled by default;
- added "-local" key to vselmode command to enable selection in local context;
- selection filters are now completely supported in AIS_InteractiveContext;
- the idea of differencing of selected items onto current (in interactive context) and selected (local selection) was eliminated;
- all calls to "current" were replaced by calls to "selected" in terms of future local context removal;
- AIS_InteractiveObject::mySelectionMode was removed;
- now each selectable object can define own selection mode for "global" selection of the whole object;
- whole object selection mode is 0 by default for all standard interactive objects;
- immediate structures are now added to topmost and top layer lists;
- added support of drawing immediate structures in different layers;
- unused code for immediate mode was removed;
- vfeedback and vexport commands now produce correct output for raytrace mode.
Use gp::Resolution() instead of Precision::SquareConfustion() in order to normalize normal vectors according to implementation of gp_Vec::Normalize().
Test case
Test-case for issue #26485
class BOPAlgo_PaveFiller
method void BOPAlgo_PaveFiller::PutPaveOnCurve
(const Standard_Integer nV,
const Standard_Real aTolR3D,
BOPDS_Curve& aNC,
const BOPCol_MapOfInteger& aMI,
BOPCol_DataMapOfIntegerReal& aMVTol,
const Standard_Integer iCheckExtend)
Do not put the pave on the curve in case if there is already one with the same parameter.
Update tolerance of the existing vertex to reach the new one.
Added test case bugs/modalg_6/bug26444.
Test boolean/volumemaker/G1 is stable now (deleted TODOs), test offset/faces_type_i/C9 is bad (offset is done with wrong result).
1) New Graphic3d_TransformPers structure for defining parameters and algorithm methods, featuring:
a) application of transformation to projection and world view matrices;
b) computation of model-world transformation of persistent object;
c) computation of transformed bounding box of persistent object.
2) Transform persistence algorithm does not make any changes to model-world transformation of object (deals with projection and world view matrices only), thus making possible to employ local transformation in a usual way.
3) Support of BVH selection for transform persistent objects (pan, rotate, zoom, trihedron persistence only).
4) Support efficient frustum culling for transform persistent objects (pan, rotate, zoom, trihedron persistence only).
5) Support of z-fitting algorithm for world-view space transform persistent objects (rotate, zoom persistence only).
6) Rewrite usage of transform persistence structures and utilities classes:
a) Replaced Graphic3d_CTransPers, TEL_TRANSFORM_PERSISTENCE by Graphic3d_TransformPers;
b) Move functions from OpenGl_Utils.hxx to Graphic3d_TransformUtils.hxx;
c) Extract matrix stack class from OpenGl_Utils.hxx to OpenGl_MatrixStack.hxx;
7) New class Graphic3d_WorldViewProjState to keep track of projection, world view matrices changes for a camera.
8) New test case bugs/vis/bug26344.
9) Renamed method Graphic3d_Camera::ModelViewState of to ::WorldViewState for consistency.
- now custom pixel tolerance from vselprecision is added to default sensitivity of the primitive;
- unnecessary field mytolerance was removed from SelectMgr_ViewerSelector;
- test case for issue #26413.
Computing is unified. ComputeFastTol3d() method was deleted.
If intersection result contains 3D- and corresponded two 2D-curves then tolerance will be computed with using BRepLib_CheckCurveOnSurface algorithm (check same-parameter).
If intersection result contains only 3D-curve (getting 2D-curve can be switched off by users) then tolerance will be computed with using GeomAPI_ProjectPointOnSurf algorithm (projects some point of 3D-curve on the surface and finds maximal distance).
Some workarounds have been deleted.
Some test case have been changed.
DRAW commands bmodified, bisdeleted, bgenerated have been implemented to track
the history of shapes modifications in Boolean and General Fuse operations.
Test-case for issue #26393
1. JoinWLines algorithm has been improved.
2. Reference to the V-boundaries is deleted when computing step.
3. Decreasing the tolerance when computing parameters of WLine.
4. Adding boundary point is forbidden if it lies in prolongation of found ones.
5. Possible reason of exception has been eliminated.
6. Processing of critical point has been improved.
Test cases for this issue have been created.
Correction of some test case(s).
Test case bugs/modalg_6/bug26310_4 is added
Update of test-cases for issue #26310
Performance improvements and regression elimination.
Handling of degenerated case added.
Update of test-case offset faces_type_a A2 according to the new behavior
Test-case for issue #26418
Attached invalid shape is represented by solid containing one face twice.
Protection from such case was added in ShapeFix_Shell class.
Creation of COMPSOLID was modified for case when shells composing COMPSOLID have the same shared faces in order to prevent hanging.
Small modification.Protection to avoid exception
Test-case for issue #26408
OpenGl_Context::init() - fix condition on initializing alien OpenGL context within core profile.
OpenGl_Font::renderGlyph() - use GL_RED data format in core profile.
OpenGl_Text::render() - do not use GL_ALPHA_TEST in core profile.
Test-case for issue #26424
C2 continuity intervals changed to Knots intervals in case of Bspline curve.
Fixed incorrect extremaPC usage.
Test case for issue CR26351
Update of test-cases according to the new behavior
Correction of new vertices insertion: remove all triangles shot by point even if they contain frontier edges in order to prevent cases of free edge glued with frontier;
findNextPolygonLink: choose link with opposite direction to previous one as the last resort in case if the is no another option;
Enlarge bounding boxes by Precision::PConfusion() in order to not to miss possible intersections;
Test-case for issue #26407
Return NoIntersection in case of end point touch and isConsiderEndPointTouch flag is not set
Update of test-cases according to the new behavior
Debug code enabled with OCCT_DEBUG macro corrected for compiling with new handles.
QANCollection_Handle.cxx simplified so as to avoid need of using /bigobj option when building by Visual Studio; templates of project files, CMake projects, and test perf fclasses handle corrected accordingly.
Script genproj corrected to recognize VTK and to build DRAWEXE as executable (rather than DLL).
Test commands for checking performance and functionality of OCCT handles and RTTI added.
New test case added for that: test perf fclasses handle.
Implementation of opencascade::handle improved to enable compile-time error if two handles of incompatible types are compared.
Comparison of handle to NULL is not possible any more; method IsNull() should be used instead.
Method LDOM_MemManager::Doc() is removed to avoid cyclic dependency of headers; constructor of LDOM_Document(LDOM_MemManager&) is used directly instead.
Inclusion of headers corrected for compilation after previous patch.
Global static functions instantiating RTTI descriptors for class types (used though STANDARD_TYPE macro) are replaced by template static method Instance() of the class Standard_Type.
Implementation of RTTI is revised accordingly (global registry of type descriptors added to ensure single instance of each type descriptor shared by all dynamic libraries).
Obsolete methods of Standard_Type class (IsInstance(), Ancestors()) are removed; new method Parent() is added returning type descriptor of the parent class.
Class Standard_AncestorIterator is removed; this iteration can be easily done by recursive calls to Standard_Type::Parent().
Definition of macro STANDARD_TYPE() moved from Standard_Macro.hxx to Standard_DefineHandle.hxx.
Inclusion of Standard_Type.hxx and the class header is now necessary for use of method DownCast() and function STANDARD_TYPE() for the class.
In general, Standard_Type.hxx should be included now instead of Standard_DefineHandle.hxx in places where these macros are used.
Macro DEFINE_STANDARD_EXCEPTION changed to define all methods inline; macro IMPLEMENT_STANDARD_EXCEPTION becomes obsolete.
Macros IMPLEMENT_DOWNCAST, IMPLEMENT_STANDARD_* become deprecated, they are still defined (as empty) for compatibility.
Implementation of Handle classes became fully inline.
Method get() is added in Handle classes returning pointer to the contained object.
RTTI removed from NCollection_Handle class.
Standard_Persistent is made empty descendant of Standard_Transient, instead of implementing its own hierarchy with reference counting.
Unused enumerations Standard_InternalType, Standard_WayOfLife, Standard_KindOfType are removed.
Global function HashCode() accepting Handle(Standard_Transient) is removed; HashCode() for Standard_CString with length should be used instead.
DRAW command dtryload is added for testing dynamic load / unload of the specified library.
New test perf fclasses bug24947 uses this command to measure performance of multiple (1000 times) loading / unloading OCCT libs on example of TKSTEP.
1. class BOPAlgo_ShellSplitter
static method void RefineShell(TopoDS_Shell& theShell,
BOPCol_ListOfShape& aLShX)
Added protection from INTERNAL edges.
2. class BOPAlgo_MakerVolume
method void BOPAlgo_MakerVolume::MakeBox(BOPCol_MapOfShape& theBoxFaces)
Creation of the overlapping box of proper size.
Test-cases for issue #26379
1. Divide B-spline curve on sub-intervals (bounded by knots values).
2. Class BRepLib_CheckCurveOnSurface_TargetFunc has been optimized for future implementation to checkshape algorithm (Adaptors are used instead of Geom_Curve(Surface)).
3. Parallelization of new algorithm.
The algorithm is based on math_PSO class.
Test cases for issue 25613 have been created.
Changes in accordance with the last remarks
Changed computation of point projection to more correct.
Calculation periodicity information added to cache.
Test case for issue CR26339
Small correction of test case for issue CR26339
Class CellFilterNDim added.
Class CellFulterNDim used in GlobOptMin to improve performance in case of many solutions.
Memory leak eliminated.
Test cases for issue CR26184
Small correction of test cases for issue CR26184