occt.git
3 years ago0031687: Draw Harness, ViewerTest - extend command vrenderparams with option updating... IR-2020-07-24
kgv [Thu, 23 Jul 2020 19:39:27 +0000 (22:39 +0300)]
0031687: Draw Harness, ViewerTest - extend command vrenderparams with option updating viewer defaults

SelectMgr_ViewerSelector3d::ClearSensitive() - fixed crash on removing presentations (via command vsensera).

Added new parameters -sync and -reset to vrenderparams command synchronizing parameters across Views.
Parameters -raster and -rayTrace now accept optional on|off values.
Improved command description.

3 years ago0031682: Visualization - Prs3d_ShadingAspect::SetTransparency() has no effect with...
kgv [Wed, 22 Jul 2020 19:34:03 +0000 (22:34 +0300)]
0031682: Visualization - Prs3d_ShadingAspect::SetTransparency() has no effect with Graphic3d_TOSM_UNLIT shading model

Prs3d_ShadingAspect::SetTransparency() now sets transparency also to interior color.
AIS_RubberBand now uses Graphic3d_TOSM_UNLIT.

3 years ago0031353: TDocStd_Application does not have api to set progress indicator
akaftasev [Mon, 2 Mar 2020 12:29:34 +0000 (15:29 +0300)]
0031353: TDocStd_Application does not have api to set progress indicator

Add support of Message_ProgressIndicator in BinTools classes.

Add support of Message_ProgressIndicator with possibility of user break in methods of opening and saving TDocStd_Application.

Add tests of ProgressIndicator in TDocStd_Applacation.

3 years ago0031677: Configuration - Allow Optimization Level O3 When Compiling With G++
Benjamin Bihler [Tue, 21 Jul 2020 09:39:52 +0000 (11:39 +0200)]
0031677: Configuration - Allow Optimization Level O3 When Compiling With G++

Removed suppression of optimization level O3 with using Mingw64.

3 years ago0031618: Data Exchange, RWGltf_CafWriter - exporting some models produces glTF files...
mkrylova [Tue, 14 Jul 2020 13:49:41 +0000 (16:49 +0300)]
0031618: Data Exchange, RWGltf_CafWriter - exporting some models produces glTF files not passing validation

Added a check for non-empty mesh and new warning
that notifies about skipping an empty node

3 years ago0031035: Coding - uninitialized class fields reported by Visual Studio Code Analysis
mkrylova [Fri, 17 Jul 2020 10:08:31 +0000 (13:08 +0300)]
0031035: Coding - uninitialized class fields reported by Visual Studio Code Analysis

Added initialization of fields that had not initialization
Added default constructors to classes without constructors

3 years ago0028345: Data Exchange - Reading STEP model using STEPCAF crashes
dpasukhi [Tue, 14 Apr 2020 08:51:56 +0000 (11:51 +0300)]
0028345: Data Exchange - Reading STEP model using STEPCAF crashes

# Add test to verify import
* Note: Each layer contains a valid name, but only one contains a link to the shape, so .step file contains only one valid Layer.

3 years ago0031617: Export STEP in nonmanifold mode corrupts the shape
jgv [Mon, 20 Jul 2020 14:38:22 +0000 (17:38 +0300)]
0031617: Export STEP in nonmanifold mode corrupts the shape

Modify method XSControl_TransferWriter::TransferWriteShape: add removal of locations before writing the shape.

3 years ago0031680: Configuration - Compilation Fails With G++ 10.1, LD 2.34 and Link-Time Optim...
Benjamin Bihler [Tue, 21 Jul 2020 11:37:03 +0000 (13:37 +0200)]
0031680: Configuration - Compilation Fails With G++ 10.1, LD 2.34 and Link-Time Optimization

Added a non-inline empty virtual destructor to LDOM_OSStream to force vtable generation in one
translation unit only.

3 years ago0031673: Draw Harness, ViewerTest - command vlocation applies transformation in oppos...
kgv [Sat, 18 Jul 2020 21:36:04 +0000 (00:36 +0300)]
0031673: Draw Harness, ViewerTest - command vlocation applies transformation in opposite order

gp_Trsf::SetRotationPart() - added method replacing rotation matrix without reseting other components,
similar to existing SetTraslationPart() and SetScaleFactor().

Transformation multiplication order has been fixed
for vlocation arguments -rotate, -translate, -mirror and -scale.
Added -prerotate, -pretranslate, -premirror and -prescale options following previous behavior.

vlocation -setRotation now uses new method gp_Trsf::SetRotationPart()
for consistency with methods -setLocation and -setScale.

3 years ago0031671: Coding Rules - eliminate warnings issued by clang 11
kgv [Fri, 17 Jul 2020 12:12:49 +0000 (15:12 +0300)]
0031671: Coding Rules - eliminate warnings issued by clang 11

Fixed -Wdeprecated-copy warning by removing trivial operator=.
Fixed formatting issues in places producing -Wmisleading-indentation warning.

3 years ago0031668: Visualization - WebGL sample doesn't work on Emscripten 1.39
kgv [Thu, 16 Jul 2020 13:15:22 +0000 (16:15 +0300)]
0031668: Visualization - WebGL sample doesn't work on Emscripten 1.39

OpenGl_Context now skips loading functions related to mapping buffer,
which are required by OpenGL ES 3.0 specs but not provided by WebGL 2.0.
Message_PrinterSystemLog does not use a broken emscripten_log() anymore, which corrupted UNICODE strings.

WasmOcctView::initWindow() - callbacks now set using EMSCRIPTEN_EVENT_TARGET_WINDOW
instead of 0 used by older Emscripten API.

Mouse callbacks now track canvas element and use
EmscriptenMouseEvent::targetX/targetY instead of ::canvasX/canvasY
as the latter was broken.

Added emscripten_set_main_loop() setup to shut up eglSwapInterval() error message.
Fixed missing \0 at the end of string converted by toUtf8Array().

3 years ago0031016: Projection of an ellipse is a B-spline in some cases
azv [Tue, 7 Jul 2020 14:40:50 +0000 (17:40 +0300)]
0031016: Projection of an ellipse is a B-spline in some cases

Improve projection of ellipse and circle on a plane in case of the same parametrization of the original curve and the projected one is not necessary. Now the projection is a canonical curve instead of B-spline.

3 years ago0031662: Modeling Algorithms - Incomplete result of section operation IR-2020-07-10
emv [Fri, 10 Jul 2020 11:19:31 +0000 (14:19 +0300)]
0031662: Modeling Algorithms - Incomplete result of section operation

Integrating test case for the issue as the problem is not reproduced.

3 years ago0031655: Modeling Algorithms - Invalid result of General Fuse operation
emv [Fri, 10 Jul 2020 06:02:26 +0000 (09:02 +0300)]
0031655: Modeling Algorithms - Invalid result of General Fuse operation

IntTools_BeanFaceIntersector: Perform exact intersection range search in case there are few intersection points.

3 years ago0030277: Coding Rules - avoid extremely long class names in STEP packages
mkrylova [Wed, 8 Jul 2020 09:46:33 +0000 (12:46 +0300)]
0030277: Coding Rules - avoid extremely long class names in STEP packages

Has changed the names of classes that are too long
and fixed names in files where these classes are used

3 years ago0026555: Modeling Algorithms - Exception-safe status reporting in BRepOffset_MakeOffset
akaftasev [Tue, 12 May 2020 09:21:59 +0000 (12:21 +0300)]
0026555: Modeling Algorithms - Exception-safe status reporting in BRepOffset_MakeOffset

Set safe exit status for:
Standard_NullObject exception,
Standard_NullObject: BRep_Tool:: TopoDS_Vertex hasn't gp_Pnt,
BRep_Tool: no parameter on edge,
BRepOffset_MakeOffset::TrimEdge no projection

3 years ago0031637: Documentation - minor clean-up of User Guide for Visualization module
kgv [Sun, 28 Jun 2020 18:59:22 +0000 (21:59 +0300)]
0031637: Documentation - minor clean-up of User Guide for Visualization module

Fixed a couple of misprints, usage of changed classes / methods.
Added references to other supported 3d displays.
Added reference to PBR metallic-roughness material properties in addition to Common.

Cosmetics: removed numerous trailing spaces, double spaces.
Added missing {.cpp} language qualifier to code quotations.
Sentences within paragraphs have been split into multiple lines in source file.

3 years ago0027909: Modeling Algorithms - Exception during offset computation
akaftasev [Tue, 12 May 2020 09:21:59 +0000 (12:21 +0300)]
0027909: Modeling Algorithms - Exception during offset computation

Added function ChFi3d::IsTangentFaces for more accurate definition of connection type.
Test cases have been changed according to the current behavior.

3 years ago0029839: Modeling Algorithms - Unexpected Circle to BSpline surface extrema behavior
ifv [Fri, 15 May 2020 13:17:34 +0000 (16:17 +0300)]
0029839: Modeling Algorithms - Unexpected Circle to BSpline surface extrema behavior

Extrema_ExtCS.cxx: treatment of small line segments is added;
Extrema_GenExtCS.cxx: treatment of particular cases curve-quadric and conic-surface are added
Extrema_GlobOptFuncCQuadric, Extrema_GlobOptFuncConicS: new distance functions for particular cases are added

BOPAlgo_PaveFiller_5.cxx : treatment of large common parts edge-face is improved
ElSLib.cxx : method TorusParameters(...) is modified to avoid divide by zero
math_PSOParticlesPool.cxx : initialization of array is added

3 years ago0031604: Wrong result of Boolean Operation Cut
emv [Mon, 6 Jul 2020 09:05:30 +0000 (12:05 +0300)]
0031604: Wrong result of Boolean Operation Cut

BOPAlgo_WireSplitter::Path - continue building the next loop with the last edge not included into found loop.

3 years ago0031649: Visualization, TKOpenGL - broken skybox in VR output
kgv [Fri, 3 Jul 2020 16:48:57 +0000 (19:48 +0300)]
0031649: Visualization, TKOpenGL - broken skybox in VR output

OpenGl_ShaderManager::GetBgCubeMapProgram() and OpenGl_BackgroundArray::createCubeMapArray()
have been corrected to draw cube in straightforward way instead of a screen-quad.

Graphic3d_Camera::SetCustomStereoProjection() now recieves decomposed projection + head-to-eye matrices.
Added method Graphic3d_Camera::StereoProjection() returning projection matrix without translation part.
OpenGl_BackgroundArray::Render() now applies stereoscopic projection matrix in case of VR output,
but keeps using mono projection matrix in case of common 3D displays.

3 years ago0031652: Visualization - crash on highlighting HLR Computed presentation displayed...
kgv [Sat, 4 Jul 2020 20:37:04 +0000 (23:37 +0300)]
0031652: Visualization - crash on highlighting HLR Computed presentation displayed with Shaded display mode

PrsMgr_PresentationManager::displayImmediate() now uses proper ZLayer for a shadow presentation
of computed presentation (fixes dynamic highlighting on mouse move).
Graphic3d_CView::SetComputedMode() - added invalidation of bounding box on turning OFF compute mode.
AIS_ViewController::contextLazyMoveTo() now ignores MoveTo() while rotating
view with temporary disabled compute mode (leading to undefined results and crashes).

Graphic3d_Structure::Graphic3d_Structure() - do not copy Graphic3d_TOS_COMPUTED visual
from linked structure, as Graphic3d_CView::SetComputedMode() does not compute such structures.

3 years ago0031650: Visualization - invalid picking of object with local transformation and...
kgv [Sat, 4 Jul 2020 11:37:05 +0000 (14:37 +0300)]
0031650: Visualization - invalid picking of object with local transformation and per-object clipping plane

SelectMgr_SelectingVolumeManager::SetViewClipping() now updates clipping range
using picking ray in world coordinates, as clipping planes are always defined in world space.

3 years ago0029993: Visualization - AIS_TextLabel computes selection primitive only for attachme...
mzernova [Tue, 3 Dec 2019 09:32:39 +0000 (12:32 +0300)]
0029993: Visualization - AIS_TextLabel computes selection primitive only for attachment point

The text label is selected as a rectangle (adds a sensitive object - Select3D_SensitiveFace).
The bounding box has been resized to fit the sensitive rectangle.
Transform persistent has been added to AIS_TextLabel to correctly position the sensitive rectangle.
The findConnectedObject function has also been changed to correctly set transform persistence.

3 years ago0031588: Visualization, TKOpenGl - display immediate updates in brackets within frame... IR-2020-07-03
kgv [Thu, 2 Jul 2020 09:29:44 +0000 (12:29 +0300)]
0031588: Visualization, TKOpenGl - display immediate updates in brackets within frame stats

3 years ago0031647: Samples - do not enable floating point exceptions in MFC samples
kgv [Thu, 2 Jul 2020 12:40:29 +0000 (15:40 +0300)]
0031647: Samples - do not enable floating point exceptions in MFC samples

3 years ago0031639: Modeling Algorithms - Offset algorithm incorrectly fills one of the holes
emv [Fri, 26 Jun 2020 11:20:52 +0000 (14:20 +0300)]
0031639: Modeling Algorithms - Offset algorithm incorrectly fills one of the holes

Check if unclassified edge may be added as neutral (invalid in one split, valid in other) by checking the SD faces in which the edge was classified.

3 years ago0031635: Documentation - minor clean-up of User Guide for Foundation Classes module
kgv [Fri, 26 Jun 2020 20:49:48 +0000 (23:49 +0300)]
0031635: Documentation - minor clean-up of User Guide for Foundation Classes module

Changes in Technical Overview:
Corrected reference of "Mesh" as dedicated module, which is actually a Toolkit within "Modeling Algorithms" module.
Reduced references to "Configurable optimized memory manager",
which has not been updated for a long time and no more encouraged to be used as replacement of standard memory allocator of C library.
VRML/STL converters have been moved from section Mesh to Data Exchange.
Visualization chapter has been slightly reworded and reordered;
added references to PBR metallic-roughness material model.
Data Exchange chapter - reworded sentence "The exchanges run smoothly regardless of the quality of external data..."
to "This module handles various problems of interoperability between CAD systems...";
added AP242 to the list of STEP capabilities.

Changes in User Guide for Foundation Classes:
Removed references to "physical quantities" in package Quanity, deprecated since #0028799 and not actually used anywhere.
Adjusted description of string classes to avoid duplicated statements.
Collections section has been refactored to replace obsolete TCollection references by NCollection.
Remove obsolete statement "furthermore *catch()* statement does not allow passing exception object as argument".

Fixed broken nested enumeration in a couple of places.
Fixed usage of inappropriate quote symbols in code snippets.
Fixed references to non-existing classes like ZeroDivide instead of Standard_DivideByZero.
Removed suggested usage of Standard_Failure::Raise() instead of "throw Standard_Failure()" following #0026937.
Code snippets now suggest "catch(const Standard_Failure& )" instead of "catch(Standard_Failure )" (#0026937).
Fixed broken code snippets with lost symbols like <<.

Cosmetics: removed numerous trailing spaces, double spaces.
Added missing {.cpp} language qualifier to code quotations.
Sentences within paragraphs have been split into multiple lines in source file.

3 years ago0031642: Visualization - crash in Graphic3d_Structure::SetVisual() on redisplaying...
kgv [Tue, 30 Jun 2020 15:48:36 +0000 (18:48 +0300)]
0031642: Visualization - crash in Graphic3d_Structure::SetVisual() on redisplaying edge in AIS_Shape

Fixed unexpected calling of PrsMgr_Presentation::Erase() from Graphic3d_Structure::SetVisual().

3 years ago0031643: Visualization - Graphic3d_Camera::Copy() raises exception on copying ZNear...
kgv [Tue, 30 Jun 2020 22:12:37 +0000 (01:12 +0300)]
0031643: Visualization - Graphic3d_Camera::Copy() raises exception on copying ZNear < 0.0

Graphic3d_Camera::CopyMappingData() now copies ProjectionType at first.

3 years ago0031632: Draw Harness - handle 3d mouse Raw HID input on Windows
kgv [Fri, 26 Jun 2020 06:58:50 +0000 (09:58 +0300)]
0031632: Draw Harness - handle 3d mouse Raw HID input on Windows

WNT_HIDSpaceMouse - added auxiliary class for processing 3d mouse Raw HID input.
AIS_ViewController::Update3dMouse() - added default processor for 3d mouse input event.
ViewerTest now redirects WM_INPUT to AIS_ViewController::Update3dMouse().
Aspect_VKey enumeration has been extended by 3D view buttons.
WNT_Window::RegisterRawInputDevices() has beend added as a small wrapper
over WinAPI RegisterRawInputDevices() for common HID input devices.

AIS_ViewCube now stores animation duration within AIS_AnimationCamera instead of dedicated duplicating class property.

3 years ago0031616: Modeling algorithm - Section between two shells returns wire with gaps ...
ifv [Wed, 17 Jun 2020 14:10:12 +0000 (17:10 +0300)]
0031616: Modeling algorithm - Section between two shells returns wire with gaps (720)

Adaptor3d_TopolTool.cxx, IntTools_TopolTool.cxx:

Anisotropy of BSpline surface along U and V direction is taken in account for calculation of numbers of sample points;

bug31616: test case added

3 years ago0031279: Visualization, TKOpenGl - environment background is misplaced within Ray... IR-2020-06-26
mzernova [Mon, 13 Jan 2020 07:21:10 +0000 (10:21 +0300)]
0031279: Visualization, TKOpenGl - environment background is misplaced within Ray-Tracing

Fixed problem with misplacing background texture in Ray-Tracing.

An environment background is always drawn using a perspective matrix.

3 years ago0031370: Documentation - provide information about PBR implementation
iko [Fri, 21 Feb 2020 10:24:28 +0000 (13:24 +0300)]
0031370: Documentation - provide information about PBR implementation

PBR documentation (math) has been added as developer guide.

3 years ago0031621: Draw Harness - handle navigation keys
kgv [Sat, 20 Jun 2020 11:57:02 +0000 (14:57 +0300)]
0031621: Draw Harness - handle navigation keys

AIS_ViewController::handleNavigationKeys() - added an interface for processing navigation keys.
ViewerTest_EventManager now maps WASD+Arrows navigation keys.
Axonometric view hotkey A has been replaced by Backspace.
Shaded/Wireframe are now mapped with hotkeys W+Ctrl/S+Ctrl.
Hotkey D (reset view to undefined default state) has been removed.

3 years ago0031412: Visualization - entity behind is returned as topmost at the edges
mzernova [Tue, 10 Mar 2020 13:06:24 +0000 (16:06 +0300)]
0031412: Visualization - entity behind is returned as topmost at the edges

SelectMgr_RectangularFrustum now handles degenerated triangle as a segment or a point.
Triangle orthogonal to view direction is now handled as a segment.
myViewRayDir field is now defined as normalized vector to avoid confusing math.

For the case when the segment and myViewRayDir are almost parallel,
the segmentSegmentDistance function may set the depth to zero, although this will not
be the correct value, therefore it is better to pass a segment that will not
be parallel to myViewRayDir as an argument to the function.

vpoint command has been extended by arguments -2d and -nosel
for displaying picking mouse position as on-screen point in pixels.
Fixed double-binding-map error in case of displaying point with already used name.

bugs/vis/bug31412: test case added.

3 years ago0031622: Samples - update MFC Animation sample with proper frame updates
kgv [Sat, 20 Jun 2020 20:00:17 +0000 (23:00 +0300)]
0031622: Samples - update MFC Animation sample with proper frame updates

Animation sample has been updated to:
- use reuse AIS_ViewController for general viewer manipulations;
- update animation using elapsed time;
- do not block camera manipilations;
- get rid of redundant controls.

3 years ago0030939: Draw Harness, ViewerTest - AIS_ViewCube animation does not work on Linux...
kgv [Sat, 20 Jun 2020 14:48:52 +0000 (17:48 +0300)]
0030939: Draw Harness, ViewerTest - AIS_ViewCube animation does not work on Linux and macOS

ViewerTest_EventManager::handleViewRedraw() now starts ViewerTest_ContinuousRedrawer
working thread to workaround Tcl event loop invalidation issue.

3 years ago0031620: Samples - update Android JNI sample to use AIS_ViewController
kgv [Sat, 20 Jun 2020 00:18:12 +0000 (03:18 +0300)]
0031620: Samples - update Android JNI sample to use AIS_ViewController

Multi-touch input is now redirected to AIS_ViewController.
GLSurfaceView.RENDERMODE_WHEN_DIRTY is now used by 3D Viewer.
AIS_ViewCube is now displayed instead of trihedron.

3 years ago0031619: Samples - update JNI sample to use Android Studio
kgv [Fri, 19 Jun 2020 23:14:51 +0000 (02:14 +0300)]
0031619: Samples - update JNI sample to use Android Studio

Project structure and project files have been updated to use Android Studio 4.0, gradle and CMake.
Redundant OcctJni_Window has been replaced by Aspect_NeutralWindow.
SD Card permissions are not dynamically requested for compatibility with Android API level 26+.

3 years ago0031075: Application Framework - reading STEP file into TDocStd_Document leads to... IR-2020-06-19
mpv [Thu, 18 Jun 2020 07:24:07 +0000 (10:24 +0300)]
0031075: Application Framework - reading STEP file into TDocStd_Document leads to memory leaks

In the TDocStd_Owner keep simple pointer to TDocStd_Document instead of Handle. This causes automatic destruction of the document without explicit call of Close.
In Standard_Type added a static variable theType that initializes theRegistry map earlier. Otherwise exit from Draw interpreter crashes in many test-cases because not-closed transactions are aborted on document handle release from Draw theVariables map.

Corrected method for test OCC159bug due to the fact that Owner does not add a ref count now
Close the document in the end of bugs xde bug22776 otherwise double remove of visualization objects (on library exit and on visualization attributes remove from the document) causes crash on exit from draw
Added a new test bugs caf bug31075

3 years ago0031615: Coding - New warnings after integration fix for 0031552
ifv [Thu, 18 Jun 2020 07:31:06 +0000 (10:31 +0300)]
0031615: Coding - New warnings after integration fix for 0031552

3 years ago0031602: [Regression vs 7.0.0] Modeling Algorithms - Invalid result of boolean operation
ifv [Wed, 10 Jun 2020 16:33:27 +0000 (19:33 +0300)]
0031602: [Regression vs 7.0.0] Modeling Algorithms - Invalid result of boolean operation

IntPatch/IntPatch_ImpImpIntersection_4.gxx : adding tolerance in comparison surface range and surface period
bug31602: test case added

3 years ago0031611: Modeling Algorithms - BRepOffsetAPI_NormalProjection - can't build wire...
ifv [Mon, 15 Jun 2020 12:09:35 +0000 (15:09 +0300)]
0031611: Modeling Algorithms - BRepOffsetAPI_NormalProjection - can't build wire in 720 but it was possible in 691

BRepLib_MakeWire.cxx:
in method BRepLib_BndBoxVertexSelector::Accept() accepting tolerance criterion is changed

BRepLib_MakeWire.hxx:
correctionof class field name

bug31611: test case added

3 years ago0030922: Visualization - OpenGl_Text wrong local transformation if text has not own...
mzernova [Tue, 16 Jun 2020 11:24:26 +0000 (14:24 +0300)]
0030922: Visualization - OpenGl_Text wrong local transformation if text has not own attach point

bugs/vis/bug30922: test case added

3 years ago0031606: Configuration, CMake - build fails with Android NDK + CLang compiler + MinGW... IR-2020-06-11
kgv [Wed, 10 Jun 2020 17:07:12 +0000 (20:07 +0300)]
0031606: Configuration, CMake - build fails with Android NDK + CLang compiler + MinGW Makefiles

CLang is now checked before MINGW within occt_defs_flags.cmake.
Added "-Wl,-s" linker flag when using CLang for stripping symbols consistently to GCC builds.

3 years ago0031485: Data Exchange - Export STEP in nonmanifold mode looses all faces except one
jgv [Sun, 7 Jun 2020 19:04:39 +0000 (22:04 +0300)]
0031485: Data Exchange - Export STEP in nonmanifold mode looses all faces except one

Small correction in STEPControl_ActorWrite::TransferCompound - take into account the case when a subshape has type TopAbs_FACE.

3 years ago0031587: Modeling Data - add BRepTools::RemoveInternals() removing internal sub-shape...
emv [Tue, 2 Jun 2020 09:06:42 +0000 (12:06 +0300)]
0031587: Modeling Data - add BRepTools::RemoveInternals() removing internal sub-shapes from the shape

3 years ago0031599: Visualization - when using AIS_Manipulator, the scene rotates at the same...
kgv [Sat, 6 Jun 2020 16:13:28 +0000 (19:13 +0300)]
0031599: Visualization - when using AIS_Manipulator, the scene rotates at the same time

AIS_ViewController::HandleViewEvents() - reverted order of handleMoveTo() and handleCameraActions() events.

3 years ago0031504: Data Exchange - Wrong output of progress indicator when writing to stl
akaftasev [Fri, 22 May 2020 10:04:49 +0000 (13:04 +0300)]
0031504: Data Exchange - Wrong output of progress indicator when writing to stl

Added new condition for first indicated element at Draw_ProgressIndicator::Show(),
because it’s more logical that at start progress starts at 0
Changed usage of Next() to Next(step) for increment progress to IND_THRESHOLD in RWStl::writeASCII() and RWStl::writeBinary()
Changed condition for continuation of writing and add interrupt to this function
Added possibility to use Progress indicator in writestl
Changed paremeter in constructor Message_ProgressSentry aPS() IND_THRESHOLD to 1
Changed test

3 years ago0031596: Visualization, OpenGl_Context - take GL_OES_texture_float extension into...
kgv [Wed, 3 Jun 2020 09:20:49 +0000 (12:20 +0300)]
0031596: Visualization, OpenGl_Context - take GL_OES_texture_float extension into account for arbTexFloat flag

3 years ago0031477: Visualization, TKOpenGl - fetch/wrap getBufferSubData() function from WebGL 2.0 IR-2020-05-29
kgv [Thu, 28 May 2020 16:42:13 +0000 (19:42 +0300)]
0031477: Visualization, TKOpenGl - fetch/wrap getBufferSubData() function from WebGL 2.0

Added OpenGl_Context::GetBufferSubData() implementing getBufferSubData() based on capabilities of various APIs.
Added OpenGl_VertexBuffer::GetSubData() similar to OpenGl_VertexBuffer::SubData().

3 years ago0031583: Visualization, OpenGl_Context - load OpenGL ES 3.0 functions
kgv [Wed, 27 May 2020 17:46:34 +0000 (20:46 +0300)]
0031583: Visualization, OpenGl_Context - load OpenGL ES 3.0 functions

OpenGl_Context now retrieves complete functions sets of OpenGL ES 3.0, 3.1 and 3.2.

3 years ago0031573: Visualization - Do not show seam edge for shading presentation with boundary...
vsv [Wed, 20 May 2020 12:50:15 +0000 (15:50 +0300)]
0031573: Visualization - Do not show seam edge for shading presentation with boundary edges in VTK

3 years ago0031580: Visualization, TKOpenGl - cubemap initialization error on OpenGL ES 2.0
kgv [Wed, 27 May 2020 10:36:17 +0000 (13:36 +0300)]
0031580: Visualization, TKOpenGl - cubemap initialization error on OpenGL ES 2.0

OpenGl_Texture::InitCubeMap() now avoids using sized internal format in case of GLES2.
OpenGl_Sampler::applySamplerParams() now checks OpenGL version before setting GL_TEXTURE_WRAP_R.

3 years ago0029917: Foundation Classes - OSD_FileNode AccessMoment and CreationMoment return...
mkrylova [Fri, 15 May 2020 10:54:26 +0000 (13:54 +0300)]
0029917: Foundation Classes - OSD_FileNode AccessMoment and CreationMoment return the same date on Windows

fAccess in CreationMoment() function for Windows has been modified from TRUE to FALSE

3 years ago0031568: Data Exchange - invalid model produced after STEP import IR-2020-05-22
ika [Mon, 18 May 2020 13:21:22 +0000 (16:21 +0300)]
0031568: Data Exchange - invalid model produced after STEP import

Add protection against reference to reference in STEP import.

3 years ago0031478: Visualization, TKOpenGl - allow uploading Cubemap in compressed DDS format...
kgv [Fri, 15 May 2020 23:47:20 +0000 (02:47 +0300)]
0031478: Visualization, TKOpenGl - allow uploading Cubemap in compressed DDS format when supported by GPU

Graphic3d_TextureRoot::GetCompressedImage() - added new interface for fetching compressed texture image.
Default implementation detects DDS image files using Image_DDSParser parser.

Graphic3d_TextureRoot::GetImage() has been extended with new parameter
- the list of image formats supported by OpenGL driver.
Graphic3d_TextureRoot::convertToCompatible() implicitly converts
BGRA image to RGBA on OpenGL ES, which normally does not support BGR formats.

OpenGl_Caps::isTopDownTextureUV - new property defines how application defines
UV texture coordinates in primitive arrays.
OpenGl_Context::SetTextureMatrix() compares this flag with OpenGl_Texture::IsTopDown()
and automatically flips V coordinate in case of mismatch.

OpenGl_Texture now holds exact number of mipmap levels
instead of Boolean flag indicating that they are defined.
This allows loading DDS files with incomplete mipmap level set
by setting GL_TEXTURE_MAX_LEVEL to appropriate value instead of default 1000
(causing black textures in case if mipmap levels are not defined till 1x1).

Fixed order of texture coordinates transformation within GLSL program to match FFP matrix:
Rotate -> Translate -> Scale (previously Rotation was applied afterwards).

3 years ago0031550: Data Exchange, STEP Import - surface transparency is ignored (SURFACE_STYLE_...
Igor Khozhanov [Mon, 18 May 2020 10:04:19 +0000 (13:04 +0300)]
0031550: Data Exchange, STEP Import - surface transparency is ignored (SURFACE_STYLE_TRANSPARENT)

Implemented reading and writing transparency to/from step files

3 years ago0028229: BRep_Builder::Transfert must not raise exception if the input edge is Locked
ifv [Fri, 17 Apr 2020 07:02:34 +0000 (10:02 +0300)]
0028229: BRep_Builder::Transfert must not raise exception if the input edge is Locked

BRep/BRep_Builder.cxx : raising exception is removed

3 years ago0031558: BRepOffsetAPI_MakeFilling algorithm makes turned inside out face
jgv [Mon, 18 May 2020 13:27:55 +0000 (16:27 +0300)]
0031558: BRepOffsetAPI_MakeFilling algorithm makes turned inside out face

1. Modification in method BRepFill_Filling::Build - correction of building the wire.
2. Create new subgroup "filling" in the group "bugs".

3 years ago0031544: Visualization - show boundaries of faces in shading mode of VTK presentation IR-2020-05-15
vsv [Fri, 8 May 2020 15:14:49 +0000 (18:14 +0300)]
0031544: Visualization - show boundaries of faces in shading mode of VTK presentation

3 years ago0031004: Coding - eliminate warnings issued by gcc 9.1.0
kgv [Fri, 8 May 2020 20:41:22 +0000 (23:41 +0300)]
0031004: Coding - eliminate warnings issued by gcc 9.1.0

Fixed -Wrestrict warning within OSD::SetSignal().

Fixed -Wdeprecated-copy warning by adding missing counterpart
in pair copy constructor / assignment operator or by removing trivial constructor.

AdvApp2Var_Node, AdvApp2Var_Patch are now declared as Handle.
AdvApp2Var_Iso is now passed by Handle.

Disabled operator= for TDF_Transaction and TDF_IDFilter.

Standard.cxx - fixed GCC version mischeck causing building failure with experimental GCC versions.

TopOpeBRepDS_EXPORT.cxx - fixed -Wmaybe-uninitialized warnings.

3 years ago0031542: Modeling Algorithms - Offset algorithm produces incomplete result in mode...
emv [Mon, 13 Apr 2020 10:31:12 +0000 (13:31 +0300)]
0031542: Modeling Algorithms - Offset algorithm produces incomplete result in mode "Complete" join type "Intersection"

Mark unchecked edges originated from vertices as invalid if they are contained in invalid faces.

3 years ago0031307: Modeling Algorithms - Offset algorithm produces incorrect result in mode...
emv [Mon, 20 Jan 2020 13:45:34 +0000 (16:45 +0300)]
0031307: Modeling Algorithms - Offset algorithm produces incorrect result in mode "Complete" join type "Intersection"

Do not classify edges originated from combination of edges and vertices as the classification will likely be unstable.
Mark faces containing valid inverted edges as invalid but do not remove them from valid splits.

Extend the debug command DBRep_SetComp to allow different containers for creating the TopoDS_Compound.

3 years ago0031552: Bad performance of intersection of cylindrical surfaces
ifv [Thu, 7 May 2020 11:46:06 +0000 (14:46 +0300)]
0031552: Bad performance of intersection of cylindrical surfaces

Adjusting parameters of algorithm depending on axes and parameters of cylinders is added in order to reduce computation time

Test case added: tests/lowalgos/intss/bug31552

tests/perf/modalg/bug26310_1: test case corrected according to current state of algorithm

3 years ago0031565: Visualization - SIGFPE, Arithmetic exception if SelectMgr_TriangularFrustumS...
jfa [Thu, 14 May 2020 11:20:55 +0000 (14:20 +0300)]
0031565: Visualization - SIGFPE, Arithmetic exception if SelectMgr_TriangularFrustumSet::Build() is called with single point

3 years ago0029240: Data Exchange - Crash during reading STEP file
dpasukhi [Mon, 13 Apr 2020 08:49:14 +0000 (11:49 +0300)]
0029240: Data Exchange - Crash during reading STEP file

- Issue is done in previous version OCCT
- Add test to verify import

3 years ago0027087: [Regression to OCCT 6.7.1] BRepExtrema_DistShapeShape gives wrong result
ifv [Tue, 3 Sep 2019 12:48:24 +0000 (15:48 +0300)]
0027087: [Regression to OCCT 6.7.1] BRepExtrema_DistShapeShape gives wrong result

Extrema_ExtCs.cxx: number of subdivision is incresed for curve;

Modifications to fix regressions of some tests
IntTools_BeanFaceIntersector.cxx: restriction of curve, which is used in Extrema_ExtCS
ProjLib_CompProjectedCurve.cxx: tolerance is reduced for Extrema_ExtCS
BRepOffset_Tool.cxx: checking common vertex if it is Null

tests/bugs/modalg_7/bug27087 : test case added.

tests/bugs/modalg_5/bug25232_8 : test is modified according to new behavior of algorithms

3 years ago0026925: Data Exchange - Exception can be raised if assembly is empty
dpasukhi [Tue, 12 May 2020 16:51:12 +0000 (19:51 +0300)]
0026925: Data Exchange - Exception can be raised if assembly is empty

- Issue is done in previous version OCCT
- Add test to verify the creating of the label structure using plain OCAF/XDE API
- Situation when the assembly label has no shape attached is correct

3 years ago0031501: Foundation Classes, Message_Printer - remove theToPutEndl argument -- use... IR-2020-05-08
kgv [Fri, 8 May 2020 11:40:39 +0000 (14:40 +0300)]
0031501: Foundation Classes, Message_Printer - remove theToPutEndl argument -- use shortcuts

Message::DefaultMessenger()->Send() have been replaced by shortcuts Message::Send().

3 years ago0031501: Foundation Classes, Message_Printer - remove theToPutEndl argument
kgv [Wed, 15 Apr 2020 19:44:49 +0000 (22:44 +0300)]
0031501: Foundation Classes, Message_Printer - remove theToPutEndl argument

The argument putEndl has been removed from Message_Messenger::Send() and Message_Printer::Send() methods.

Message_Printer interface has been changed, so that sub-classes have to implement new method
Message_Printer::send() accepting TCollection_AsciiString.
Old three Message_Printer::Send() methods remain available without putEndl argument
and redirecting to new send() method by default.

Removed dummy Message_PrinterOStream::GetUseUtf8() property.
Message_PrinterOStream, Message_PrinterSystemLog and Draw_Printer
now implement single method Message_Printer::send() instead of triplet.

3 years ago0031501: Foundation Classes, Message_Printer - remove theToPutEndl argument -- prepar...
abv [Thu, 30 Apr 2020 12:45:31 +0000 (15:45 +0300)]
0031501: Foundation Classes, Message_Printer - remove theToPutEndl argument -- preparation

Operators << for Handle(Message_Messenger) are removed; their use is replaced by use of Message_Messenger::StreamBuffer
Message_Messenger has been replaced by Standard_OStream within Interface_InterfaceModel,IFSelect,IGES,STEP dump interfaces.

3 years ago0031546: Application Framework - Memory leak (100 bytes) on Load / Close OCAF document
abv [Mon, 4 May 2020 19:25:03 +0000 (22:25 +0300)]
0031546: Application Framework - Memory leak (100 bytes) on Load / Close OCAF document

Class Standard_BaseDriver is inherited from Standard_Transient, its descendants are updated accordingly.
Handle is used to manipulate objects of this class and its descendants (instead of references or raw pointers) to ensure automatic destruction.

Added test bugs caf bug31546

Related:
- Standard_OVERRIDE is added in declarations of virtual methods in descendants of Storage_BaseDriver
- Methods operator << and operator >> are removed in descendants of Storage_BaseDriver (they repeat the same methods inherited from the base class)
- Typedef PCDM_BaseDriverPointer is marked as deprecated
- Unused class DDI_Ostream is removed
- Private field Standard_Transient::count is renamed to myRefCount_ to avoid compiler warnings if the same name is used within the scope of a descendant class
- Output of meaningful error messages is restored in DRAW commands fsdread and fsdwrite

3 years ago0030185: Unify same domain algorithm corrupts the initial shape
ifv [Wed, 29 Apr 2020 07:08:39 +0000 (10:08 +0300)]
0030185: Unify same domain algorithm corrupts the initial shape

ShapeUpgrade_UnifySameDomain.cxx: checking of surface domains and projection to get pcurves are added
tests/bugs/heal/bug30185: test case added

3 years ago0029384: Visualization, TKOpenGl - basic integration with OpenVR
kgv [Thu, 16 Apr 2020 15:44:50 +0000 (18:44 +0300)]
0029384: Visualization, TKOpenGl - basic integration with OpenVR

V3d_View::AutoZFit() is now called only before redraw
within methods V3d_View::Redraw() and V3d_View::Update().

Graphic3d_CView now holds Aspect_ExtendedRealitySession object.
Aspect_OpenVRSession implements new interface via optional OpenVR library.
Graphic3d_CView::ProcessInput() - added new interface method
which should be called for processing positional input (head tracking).

Graphic3d_Camera now allows setting custom stereoscopic Projection matrices.

OpenGl_Context::Camera() - context now holds Camera object
in addition to active camera matrices.

genproj.tcl has been extended to handle optional CSF_OpenVR dependency.

3 years ago0031548: Visualization, SelectBasics_PickResult - include surface normal into picking...
kgv [Mon, 4 May 2020 22:23:41 +0000 (01:23 +0300)]
0031548: Visualization, SelectBasics_PickResult - include surface normal into picking details

SelectMgr_SortCriterion::Normal, SelectBasics_PickResult::SurfaceNormal() - added new property.
SelectMgr_RectangularFrustum::Overlaps() for triangle sets new normal property.
gp_GTrsf::GetMat4() - added conversion into NCollection_Mat4 similar to gp_Trsf::GetMat4().

3 years ago0031189: Draw Harness, ViewerTest - send messages to Message::DefaultMessenger()
kgv [Sun, 24 Nov 2019 12:02:39 +0000 (15:02 +0300)]
0031189: Draw Harness, ViewerTest - send messages to Message::DefaultMessenger()

Added short-cuts methods in Message_Messenger for sending message with specified gravity,
and stream buffer class for using stream-like interface for that.
Similar short-cuts to DefaultMessenger() are added in Message package.

ViewerTest has been updated to send messages to Message::DefaultMessenger()
instead of direct output to std::cout/std::cerr.

Off-topic: spelling error (duplicate "and") is corrected in two places

Added test bugs fclasses bug31189

3 years ago0031517: Data Exchange - wrong result of ShapeTool::UpdateAssemblies()
ika [Thu, 23 Apr 2020 14:58:59 +0000 (17:58 +0300)]
0031517: Data Exchange - wrong result of ShapeTool::UpdateAssemblies()

Get rid of problem with updating of parents shared one assembly.

3 years ago0031521: Samples - update MFC ImportExport sample to use AIS_ViewController
kgv [Fri, 24 Apr 2020 14:03:20 +0000 (17:03 +0300)]
0031521: Samples - update MFC ImportExport sample to use AIS_ViewController

The following MFC samples have been updated to use AIS_ViewController:
Geometry, HLR, ImportExport, Modeling, OCAF, Triangulation, Viewer2D.

3 years ago0031193: Visualization - OpenGl_Flipping wrong text position if local transformation set
nds [Tue, 27 Aug 2019 05:26:23 +0000 (08:26 +0300)]
0031193: Visualization - OpenGl_Flipping wrong text position if local transformation set

Before the patch, if the values of the isReversedX/Y/Z variables were set to false, then the WorldView matrix did not change and local transformation was not applied, which caused errors.
In order to correctly set the local transformation in case the text does not have its own attach point, the local transformation is set in OpenGl_Text, and the ModelWorld matrix is changed in OpenGl_Flipper, instead of the WorldView matrix. In this case, local transformation will always be applied.

bugs/vis/bug31193: test case added

3 years ago0031518: Samples - update QtWidget samples to use AIS_ViewController IR-2020-04-24
kgv [Thu, 23 Apr 2020 20:47:11 +0000 (23:47 +0300)]
0031518: Samples - update QtWidget samples to use AIS_ViewController

Qt samples IESample and Tutorial have been updated to use AIS_ViewController for view manipulations.

3 years ago0031519: Visualization, AIS_ViewController - add AIS_MouseGesture_ZoomWindow gesture
kgv [Thu, 23 Apr 2020 20:47:11 +0000 (23:47 +0300)]
0031519: Visualization, AIS_ViewController - add AIS_MouseGesture_ZoomWindow gesture

AIS_ViewController now supports AIS_MouseGesture_ZoomWindow gesture,
which displays zooming window via Rubber-Band rectangle.

3 years ago0031511: Point Cloud Rendering, Volume Rendering - reuse Graphic3d_CullingTool
kgv [Sun, 19 Apr 2020 18:42:42 +0000 (21:42 +0300)]
0031511: Point Cloud Rendering, Volume Rendering - reuse Graphic3d_CullingTool

Graphic3d_CullingTool::IsCulled() has been extended with theIsInside argument for full inclusion test.
Graphic3d_Layer::UpdateCulling() now avoids frustum culling tests for BVH children for parent nodes completely included into frustum.
Graphic3d_CullingTool::SetViewVolume() has been extended by optional model-world matrix.

3 years ago0031512: Foundation Classes - drop unused class NCollection_Comparator
kgv [Tue, 21 Apr 2020 19:26:13 +0000 (22:26 +0300)]
0031512: Foundation Classes - drop unused class NCollection_Comparator

3 years ago0031440: Visualization - Impossible to make common behaviour for multi-selection...
mzernova [Tue, 14 Apr 2020 21:54:32 +0000 (00:54 +0300)]
0031440: Visualization - Impossible to make common behaviour for multi-selection in viewer

A special mode for the selecting by polygon is added to select only completely overlapping objects.

In order to track the sensitives that were included completely by defined polygon, the boundary points of the polygonal frustrum are stored in the variable myBoundaryPoints.

If an sensitive intersects with at least one of the frustrums from myFrustums, then checking whether this object intersects with borders using the isIntersectBoundary method; if not, then the sensitive were included completely by defined polygon.

Because the polygon can be concave, then to check the sensitive were included completely by defined polygon, it is not enough to check of all its points, it is necessary that the edges of the sensitive do not intersect polygonal frustrum. To do this, for polygonal selection, a call to the Overlaps method for a point was replaced by a call to a segment where necessary.

bugs/vis/bug31440: test case added

3 years ago0031492: BRepBuilderAPI_MakeFace crashes on a wire
jgv [Fri, 10 Apr 2020 08:52:37 +0000 (11:52 +0300)]
0031492: BRepBuilderAPI_MakeFace crashes on a wire

Method BRepClass_Intersector::LocalGeometry is modified: check whether is tangent defined and check of infinite curvature is added.

4 years ago0031318: Documentation, TopoDS.hxx - typo in the reference manual IR-2020-04-17
akaftasev [Fri, 24 Jan 2020 13:34:15 +0000 (16:34 +0300)]
0031318: Documentation, TopoDS.hxx - typo in the reference manual

change "onject" to "object" in description of TopoDS class

4 years ago0031505: Point Cloud Rendering - fix on-screen statistics about number of visible...
kgv [Fri, 17 Apr 2020 07:36:57 +0000 (10:36 +0300)]
0031505: Point Cloud Rendering - fix on-screen statistics about number of visible points

OpenGl_Element now provide methods ::UpdateMemStats() and ::UpdateDrawStats()
for unified request of statistics used by OpenGl_FrameStats instead of direct handling of OpenGl_PrimitiveArray.
Graphic3d_FrameStatsCounter counters list has been extended by Graphic3d_FrameStatsCounter_NbLinesNotCulled.

4 years ago0031502: Coding - New warnings after integration fix for 0031456
kgv [Thu, 16 Apr 2020 13:51:31 +0000 (16:51 +0300)]
0031502: Coding - New warnings after integration fix for 0031456

Deprecated AIS class aliases have been moved from PrsDim to AIS package.

4 years ago0031435: Data Exchange - Problem importing STEP files
dpasukhi [Thu, 9 Apr 2020 15:40:32 +0000 (18:40 +0300)]
0031435: Data Exchange - Problem importing STEP files

- Fix recursion in EntityCluster's methods :
  -  Value
  -  SetValue
  -  Append
- Add destructor in the EntityCluster
- Add check null grade in the STEPCAFControl_GDTProperty::GetDimClassOfTolerance

4 years ago0031499: Boolean Operations - Custom fuzzy value corrupts the result of CUT
emv [Wed, 15 Apr 2020 12:53:36 +0000 (15:53 +0300)]
0031499: Boolean Operations - Custom fuzzy value corrupts the result of CUT

IntPatch_ImpImpIntersection::CyCyNoGeometric - Use the provided 3D tolerance to compare the points.

4 years ago0031207: Regression in Boolean Operations: fuse gives wrong result
emv [Mon, 13 Apr 2020 10:35:32 +0000 (13:35 +0300)]
0031207: Regression in Boolean Operations: fuse gives wrong result

ForceInterfEE, ForceInterfEF - Use normalized vectors for angle computation. Increase the criteria angle.

4 years ago0031496: Modeling Algorithms - BRepAlgo::ConcatenateWireC0() crashes
ifv [Mon, 13 Apr 2020 11:34:12 +0000 (14:34 +0300)]
0031496: Modeling Algorithms - BRepAlgo::ConcatenateWireC0() crashes

BRepAlgo.cxx: fixing of wrong treatment of reversed edges
bug31496: test case added

4 years ago0031470: Modeling Algorithms - Regression: BOP common produces empty result (box...
jgv [Mon, 30 Mar 2020 18:18:47 +0000 (21:18 +0300)]
0031470: Modeling Algorithms - Regression: BOP common produces empty result (box and holed sphere)

Approx_ComputeCLine.gxx : new class field is added to manage hang checking.
ProjLib/ProjLib_ComputeApprox.cxx : unset hang checking for analytical surfaces and curves

4 years ago0031472: Exception raised during translation of the STEP entity Constructive Geometry... IR-2020-04-10
gka [Mon, 30 Mar 2020 13:11:31 +0000 (16:11 +0300)]
0031472: Exception raised during translation of the STEP entity Constructive Geometry Representation containing one representation

Modification number of the representation items are considered for STEP entity "Constructive Geometry Representation"

4 years ago0031490: Foundation Classes, Poly_Connect - speed up temporary allocations
kgv [Wed, 8 Apr 2020 07:22:26 +0000 (10:22 +0300)]
0031490: Foundation Classes, Poly_Connect - speed up temporary allocations

Poly_Connect::Load() now uses NCollection_IncAllocator instead of new/delete
for allocation temporary sequence elements.

StdPrs_ShadedShape, fillFaceBoundaries() now uses NCollection_IncAllocator for temporary points.

4 years ago0031469: BRepFeat_MakePrism failed
ifv [Fri, 27 Mar 2020 11:45:28 +0000 (14:45 +0300)]
0031469: BRepFeat_MakePrism failed

BRepFeat_Form.cxx: methods IsDeleted, Modified, Generated are corrected
BRepTest_FeatureCommands.cxx: history treatment is added in methods DEFIN and PERF
bugs/modalg_7/bug31469: test case added

4 years ago0031464: BRepOffsetAPI_MakeFilling algorithm increases tolerances of vertices in...
jgv [Tue, 31 Mar 2020 15:18:14 +0000 (18:18 +0300)]
0031464: BRepOffsetAPI_MakeFilling algorithm increases tolerances of vertices in input edges

Modify history in BRepFill_Filling: now vertices are also stored in the map.