13 months 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

13 months 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

13 months 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

13 months 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().

13 months 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.

13 months 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.

13 months 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

- 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

13 months 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

13 months 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.

13 months 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().

13 months 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

13 months 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.

13 months 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.

13 months 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

13 months 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.

14 months 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.

14 months 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.

14 months 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

14 months 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

14 months 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.

14 months 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

14 months 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.

14 months 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.

14 months 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

14 months 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.

14 months 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.

14 months 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

14 months 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

14 months 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"

14 months 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.

14 months 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

14 months 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.

14 months ago0031483: Configuration - __asm keyword not supported on ARM within Windows target
kgv [Thu, 2 Apr 2020 12:38:46 +0000 (15:38 +0300)]
0031483: Configuration - __asm keyword not supported on ARM within Windows target

_M_IX86 is now checked before using _asm fot TBB workaround.

14 months ago0031462: Modeling Algorithms - BOP result depends on the arguments order IR-2020-04-04
emv [Mon, 30 Mar 2020 13:33:53 +0000 (16:33 +0300)]
0031462: Modeling Algorithms - BOP result depends on the arguments order

Eliminate numerical instability by ensuring that the tolerance of intersection entities is slightly grater than the actual distance to the shapes creating the entity.

14 months ago0031471: Confuguration, genproj - unable to build OCC Products
kgv [Mon, 30 Mar 2020 14:55:16 +0000 (17:55 +0300)]
0031471: Confuguration, genproj - unable to build OCC Products

Restored parsing of src/VAS/Products.tcl.

14 months ago0031461: Mesh - Add possibility to force the meshing of the shape
emv [Mon, 23 Mar 2020 11:52:01 +0000 (14:52 +0300)]
0031461: Mesh - Add possibility to force the meshing of the shape

BRepMesh: Add new mesh parameter *AllowQualityDecrease* which affects the criteria used for checking of the consistency of the existing mesh to new meshing parameters.
So if set to true it will force the meshing of the shape if current deflection strongly vary from the new one, no matter in which side.

BRepTools::Clean: Keep triangulation on non-geometric shapes (faces with no surface or edges with no curves).

14 months ago0031468: Visualization - add public interface to return embedding a single fallback...
osa [Fri, 27 Mar 2020 13:09:10 +0000 (16:09 +0300)]
0031468: Visualization - add public interface to return embedding a single fallback font

14 months ago0031467: Foundation Classes, OSD_MemInfo - disable reading /proc/%d/status with Emscr... IR-2020-03-27
kgv [Thu, 26 Mar 2020 20:59:02 +0000 (23:59 +0300)]
0031467: Foundation Classes, OSD_MemInfo - disable reading /proc/%d/status with Emscripten

OSD_MemInfo::Update() no more uses procfs with Emscripten.
OSD_MemInfo::MemVirtual counter is now set to WebAssembly module heap length.

14 months ago0031465: Data Exchange, RWObj_Reader - skip duplicating smooth groups
kgv [Thu, 26 Mar 2020 10:48:09 +0000 (13:48 +0300)]
0031465: Data Exchange, RWObj_Reader - skip duplicating smooth groups

RWObj_Reader::pushSmoothGroup() now ignores smooth groups statements pointing to the same group.

14 months ago0031458: Visualization - refine classes across Prs3d and StdPrs packages
kgv [Sat, 14 Mar 2020 10:32:48 +0000 (13:32 +0300)]
0031458: Visualization - refine classes across Prs3d and StdPrs packages

Prs3d::GetDeflection() has been moved to StdPrs_ToolTriangulatedShape::GetDeflection().
Prs3d_ShapeTool has been moved to StdPrs_ShapeTool.
Code collecting free edges on Poly_Triangulation
has been moved out from StdPrs_WFShape to Prs3d::AddFreeEdges().
StdPrs_BndBox has been moved to Prs3d_BndBox.
Geom_Transformation has been replaced by TopLoc_Datum3D within visualization classes.

Select3D_SensitiveCircle constructor now takes gp_Circ instead of Geom_Circle.
StdSelect_ViewerSelector3d has been moved to SelectMgr_ViewerSelector3d.
Methods ::GetPoint3d() and ::ArrayBounds() has been moved
from subclass Select3D_SensitiveCircle to the base class Select3D_SensitiveCurve.
StdSelect_ViewerSelector3d::computeSensitivePrs() has been moved to SelectMgr::ComputeSensitivePrs().

Removed unused declarations StdSelect_Prs, StdSelect_DisplayMode,
StdSelect_SensitivityMode, StdSelect_TypeOfResult, SelectMgr_SOPtr, TColQuantity.

Package Graphic3d has been moved from TKV3d to TKService.

14 months ago0031456: Visualization - move out Dimensions and Relations from package AIS to PrsDims
kgv [Sat, 21 Mar 2020 13:31:03 +0000 (16:31 +0300)]
0031456: Visualization - move out Dimensions and Relations from package AIS to PrsDims

The following classes and their subclasses within AIS package
have been moved to new package PrsDim and renamed:
- AIS_Relation  -> PrsDim_Relation;
- AIS_Dimension -> PrsDim_Dimension,

14 months ago0031459: Visualization, AIS_TextLabel - add missing getters
mzernova [Thu, 26 Mar 2020 07:03:48 +0000 (10:03 +0300)]
0031459: Visualization, AIS_TextLabel - add missing getters

Add getters for Text, FontName and FontAspect
Remove duplicate properties: Font and FontAspect

14 months ago0031441: UnifySameDomain corrupts the shape
jgv [Sun, 22 Mar 2020 19:39:12 +0000 (22:39 +0300)]
0031441: UnifySameDomain corrupts the shape

Local function TransformPCurves is modified to process correctly same-domain elementary surfaces with different local coordinate systems.

14 months ago0031378: Modeling algorithms - brep incremental mesh is frozen during STEP file loading
oan [Thu, 12 Mar 2020 14:37:09 +0000 (17:37 +0300)]
0031378: Modeling algorithms - brep incremental mesh is frozen during STEP file loading

Refactoring of BRepMesh_Delaun::isBoundToFrontier() to unwind the recursion loop.

14 months ago0031415: Modeling Algorithms - Solid classifier works incorrectly on a cylinder
ifv [Fri, 20 Mar 2020 11:28:02 +0000 (14:28 +0300)]
0031415: Modeling Algorithms - Solid classifier works incorrectly on a cylinder

BRepClass3d_SClassifier.cxx : revert integration for CR29712

Test case added

14 months ago0031454: Visualization - perceptually uniform color scale
abv [Thu, 19 Mar 2020 07:03:40 +0000 (10:03 +0300)]
0031454: Visualization - perceptually uniform color scale

Support of CIE Lab and Lch color spaces is introduced in Quantity_Color:
- Enumeration Quantity_TypeOfColor is extended by new values representing CIE Lab and Lch color spaces (with D65 2 deg illuminant).
- Conversion of RGB color to and from these color spaces is implemented in Quantity_Color class (within existing API).
- Color difference calculation using CIE Delta E 200 formula is implemented in method DeltaE2000().

New methods MakeUniformColors() and SetUniformColors() are added in class AIS_ColorScale, generating and setting color scale based on colors of the same lightness in CIE Lch color model.

DRAW commands vcolorconvert and vcolordiff are added to perform conversions and compute difference, respectively.
A new option -uniform is added in DRAW command vcolorscale, to set uniform color scale.

Added test grid v3d colors (color conversions and difference), test bugs vis bug31454 (uniform color scale)

15 months ago0029803: STEP Import: Units (inch) not applied to entity possessing GEOMETRIC_REPRESE...
gka [Mon, 17 Feb 2020 17:24:59 +0000 (20:24 +0300)]
0029803: STEP Import: Units (inch) not applied to entity possessing GEOMETRIC_REPRESENTATION_CONTEXT

Translation of the entities AXIS2_PLACEMENT_3D including in the entity CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP was added.
Entity  AXIS2_PLACEMENT_3D is translated to the planar face with axis equal to AXIS2_PLACEMENT_3D.
New parameter "read.step.constructivegeom.relationship" is added to enable this translation (by default it is OFF).

Added test bugs step bug29803

15 months ago0031460: Modeling Algorithms - Regression: Revolution not done.
ifv [Tue, 24 Mar 2020 07:23:46 +0000 (10:23 +0300)]
0031460: Modeling Algorithms - Regression: Revolution not done.

BRepPrimAPI_MakeRevol.cxx: check of intersection of edge with rotation axis is improved.
Test case added

15 months ago0028880: Modeling Algorithms - add missing BRepFeat_SplitShape::Right() getter
antonavt [Mon, 2 Mar 2020 09:16:14 +0000 (12:16 +0300)]
0028880: Modeling Algorithms - add missing BRepFeat_SplitShape::Right() getter

- Added Right() method to BRepFeat_SplitShape;
- Added an option in command buc60854, which allows to select Left() or Right() method;
- Modified method BUC60854 in QABugs_14.cxx;
- Added new option to the help of command buc60854;
- Modified test case buc60854. Now its state is "OK";
- Added check Right() in buc60854 test case.

15 months ago0031455: Modeling Algorithms - useless pointer casts in BRepAlgoAPI classes
abv [Fri, 20 Mar 2020 20:41:52 +0000 (23:41 +0300)]
0031455: Modeling Algorithms - useless pointer casts in BRepAlgoAPI classes

Useless casts are removed.

Off-topic: corrected description of constructor of TCollection_HAsciiString class from TCollection_HExtendedString for the case when input string contains non-Ascii character.

15 months ago0031301: Data Exchange - Export to STEP corrupts the shape IR-2020-03-20
gka [Thu, 27 Feb 2020 12:26:42 +0000 (15:26 +0300)]
0031301: Data Exchange - Export to STEP corrupts the shape

For small edges fully covered by tolerances of vertices BSpline periodic curves are converted to not periodic BSpline curves by cutting segment before writing.
In the class TopoDSToStep_MakeStepEdge permute of edge vertices for closed curves was added for the case when the range obtained from the vertex projection contradicts the edge range in order to avoid computation of the invalid edge range after reading.

Second test script for bug 0031301

15 months ago0031442: Samples - remove unsupported sample mfc/occtdemo
kgv [Thu, 19 Mar 2020 06:47:09 +0000 (09:47 +0300)]
0031442: Samples - remove unsupported sample mfc/occtdemo

15 months ago0031445: Advanced wrappers, C# wrapper - provide device info in About dialog of WPF...
kgv [Thu, 19 Mar 2020 14:14:48 +0000 (17:14 +0300)]
0031445: Advanced wrappers, C# wrapper - provide device info in About dialog of WPF sample

D3DHost_View::DiagnosticInformation() now appends D3D device information to the map.

15 months ago0031404: Modeling Algorithms - BOP Fuse produces a self-interfering or a good shape...
ifv [Tue, 17 Mar 2020 08:45:30 +0000 (11:45 +0300)]
0031404: Modeling Algorithms - BOP Fuse produces a self-interfering or a good shape depending on the order of arguments

Approx_ComputeCLine.gxx : number of possible cuttings is increased

tests/bugs/modalg_7/bug31404 : test case added

15 months ago0030052: Data Exchange - STEP import missing surfaces IR-2020-03-19
gka [Wed, 26 Feb 2020 13:35:58 +0000 (16:35 +0300)]
0030052: Data Exchange - STEP import missing surfaces

Changes made for #31233 are reverted.

Correction in the ShapeFix_ComposeShell:
 Modification of the method SplitByLine in order to find all points of the intersection for case when initial curve shifts in the positive or negative direction
 to avoid splitting edge when split point lies in the limits of the tolerance of the vertex.
 to correct shift of the pcurves for case when initial shift is more than 1 in the method ShapeFix_ComposeShell::SplitByLine

In the method ShapeFix_Face::FixMissingSeam added removing small edges having length less than working precision and removing wires having area less than working precision

Modified test cases; added test for related issue: bugs step bug31301

15 months ago0031439: Visualization - Access to the active axis of AIS Manipulator
mgn [Wed, 18 Mar 2020 09:30:44 +0000 (12:30 +0300)]
0031439: Visualization - Access to the active axis of AIS Manipulator

A new method that returns the active axis of the manipulator has been added.

15 months ago0031430: Offset surfaces on C1 surfaces (with multiplicity equal to degree) may still...
Roman Lygin [Sat, 14 Mar 2020 10:49:17 +0000 (13:49 +0300)]
0031430: Offset surfaces on C1 surfaces (with multiplicity equal to degree) may still throw exception

In constructor of Geom_RectangularTrimmedSurface, skip check if an offset surface has insufficient continuity. The reason is that this surface has already passed the check once created. So, here we must not apply more strict check than that first time.

15 months ago0031424: Visualization - stop using Prs3d_Drawer::HLRAngle() parameter
kgv [Thu, 12 Mar 2020 21:35:06 +0000 (00:35 +0300)]
0031424: Visualization - stop using Prs3d_Drawer::HLRAngle() parameter

Prs3d_Drawer, AIS_Shape, AIS_InteractiveContext - removed properties HLRDeviationCoefficient() and HLRAngle().
Prs3d_Drawer::HLRAngle() is kept as alias to Prs3d_Drawer::DeviationAngle() with deprecated flag.
Prs3d_Drawer::DeviationAngle() default value is changed from 12 to 20 degrees
to match Prs3d_Drawer::HLRAngle() which has been previously used in majority of cases.
Removed unused property HLRBRep_PolyAlgo::Angle().

15 months ago0031431: Visualization, PrsMgr_PresentableObject - simplify HLR computing interface
kgv [Sat, 14 Mar 2020 17:34:46 +0000 (20:34 +0300)]
0031431: Visualization, PrsMgr_PresentableObject - simplify HLR computing interface

Multiple PrsMgr_PresentableObject::Compute() methods have been replaced by single one
Dummy implementations of previously declared methods have been removed
from AIS classes not implementng HLR presentation.
Class Prs3d_Projector has been removed and Graphic3d_Camera is now passed directly,
so that redundant dependency from HLRAlgo_Projector in Prs3d interfaces has been eliminated.
StdPrs_HLRShape and StdPrs_HLRPolyShape now implement common interface StdPrs_HLRShapeI.

15 months ago0031425: Visualization - free Edge has selection sensitivity inconsistent to presentation IR-2020-03-13
kgv [Wed, 11 Mar 2020 14:06:49 +0000 (17:06 +0300)]
0031425: Visualization - free Edge has selection sensitivity inconsistent to presentation

BRepTools::Triangulation() has been extended with a new parameter for checking Poly_Polygon3D presense within free Edges.
StdPrs_WFShape::Add() now performs auto-triangulation in the same way as StdPrs_ShadedShape::Add().
StdSelect_BRepSelectionTool::GetEdgeSensitive() now creates Select3D_SensitiveSegment instead of Select3D_SensitiveCurve for tessellated segment.
Select3D_SensitiveSegment default sensitivity factor has been changed to 3 pixels to match Select3D_SensitiveCurve.

Test case bug23625_1, added workaround for out-of-range crash in HLRBRep_PolyAlgo on re-triangulated shape.

15 months ago0031419: Visualization, TKOpenGl - per-object Graphic3d_TOSM_FACET is ignored within...
kgv [Tue, 10 Mar 2020 18:56:59 +0000 (21:56 +0300)]
0031419: Visualization, TKOpenGl - per-object Graphic3d_TOSM_FACET is ignored within obsolete FFP

OpenGl_ShaderManager::PushState() now sets GL_SHADE_MODEL within FFP.
OpenGl_Context::SetShadeModel(), added property holding cached GL_SHADE_MODEL state.

15 months ago0031303: Different calculation of offset direction in Adaptor2d_OffsetCurve and Geom2...
ifv [Tue, 25 Feb 2020 08:27:28 +0000 (11:27 +0300)]
0031303: Different calculation of offset direction in Adaptor2d_OffsetCurve and Geom2d_OffsetCurve

Calculations in Adaptor2d_OffsetCurve are unified with similar calculations in Geom2d_OffsetCurve using   methods extracted from Geom2dEvaluator_OffsetCurve to Geom2dEvaluator.cxx

BRepFill_OffsetWire.cxx, Geom2dGcc_Circ2d2TanRadGeo.cxx, Geom2dGcc_Circ2dTanOnRadGeo.cxx, MAT2d_Circuit.cxx are modified to satisfy changing offset direction.

15 months ago0031407: [Regression to 7.3.0] Extrema does not process parallel circles correctly IR-2020-03-06
azv [Thu, 5 Mar 2020 08:07:37 +0000 (11:07 +0300)]
0031407: [Regression to 7.3.0] Extrema does not process parallel circles correctly

Use correct ranges of circles when processing the concentric case. Repeat the range comparison 3 times shifting each time for a half-period to process the extrema between boundary points of arcs.

15 months ago0031405: Advanced wrappers, C# wrapper - dark colors in WPF sample
kgv [Wed, 4 Mar 2020 14:32:44 +0000 (17:32 +0300)]
0031405: Advanced wrappers, C# wrapper - dark colors in WPF sample

D3DHost_FrameBuffer::IsSRGBReady() - added new propery defining if
D3D application handles FBO as sRGB-ready texture or not.

15 months ago0027531: Modeling Algorithms - Make the algorithm Approx_SameParameter more clear...
ifv [Fri, 31 May 2019 13:36:44 +0000 (16:36 +0300)]
0027531: Modeling Algorithms - Make the algorithm Approx_SameParameter more clear and robust

Class Approx_SameParameter refactoring. Logic is changed in many places to unify usage, simplify maintenance.
Method Curve2d() is changed to return Geom2d_Curve instead of Geom2d_BSplineCurve. Corresponding message is added to the upgrade guide.
.lxx file is merged into .hxx.
Tangent computation is extracted into special method.
Comparing number of sample points after CheckSameParameter(...) is added to define cases with projection fails.
Undesirable behavior when curves are not same parameterized is fixed.

Geom2dAdaptor/Geom2dAdaptor.cxx: treatment of offset curve is added

Adaptor3d/Adaptor3d_TopolTool.cxx: minor improvement of performance for BSpline surfaces with huge number of knots

Tests were modified according to new behavior of sameparameter algorithm

15 months ago0030386: Modeling Algorithms - Unable to perform Cut operation
emv [Fri, 21 Feb 2020 15:19:03 +0000 (18:19 +0300)]
0030386: Modeling Algorithms - Unable to perform Cut operation

Get rid of requirement for the arguments of Boolean operations of type CUT and COMMON to be one-dimensional shape. For FUSE operation this requirement is kept.

15 months ago0031381: Foundation Classes -wrong evaluations for rational BSpline curves using...
ifv [Thu, 20 Feb 2020 11:42:47 +0000 (14:42 +0300)]
0031381: Foundation Classes -wrong evaluations for rational BSpline curves using Adaptor curves

BSplCLib_Cache.cxx - it is forbidden zeroing derivatives for rational splines when derivative order more than degree

bug31381 - test case added

15 months ago0031400: Application Framework, TPrsStd_AISPresentation - Ocaf selection mechanism... CR0_AFAN740 IR-2020-02-28
vro [Fri, 28 Feb 2020 12:37:44 +0000 (15:37 +0300)]
0031400: Application Framework, TPrsStd_AISPresentation - Ocaf selection mechanism doesn't allow multiple selection

TPrsStd_AISPresentation::ActivateSelectionMode() uses Multiple enumeration for definition of the selection mode instead of GlobalOrLocal.

15 months ago0031394: Visualization, TKOpenGl - define OpenGl_Element::EstimatedDataSize() interface
kgv [Tue, 25 Feb 2020 11:00:31 +0000 (14:00 +0300)]
0031394: Visualization, TKOpenGl - define OpenGl_Element::EstimatedDataSize() interface

OpenGl_FrameStats::updateStructures() now relies on OpenGl_Element inteface
instead of handling OpenGl_PrimitiveArray specifically
for collecting Graphic3d_FrameStatsCounter_EstimatedBytesGeom counter.
OpenGl_PrimitiveArray and OpenGl_Text implement new interface.

16 months ago0031366: Documentation - Doxygen warnings in Standard_Dump.hxx IR-2020-02-22
nds [Tue, 18 Feb 2020 05:53:37 +0000 (08:53 +0300)]
0031366: Documentation - Doxygen warnings in Standard_Dump.hxx

16 months ago0030749: Inspectors - compilation under tcl scripts
nds [Sun, 9 Feb 2020 15:20:13 +0000 (18:20 +0300)]
0030749: Inspectors - compilation under tcl scripts

- 'Search Qt4' is renamed into 'Search Qt'. Configuration uses Qt5 from now. For Qt4 use CMake configuration.
- 'Build Inspector' check box is added. It causes 'tools' toolkits compilation. Activates automatically 'Search Qt' control.
- Many Tcl procedures are extended with additional parameter to giving a directory of processed toolkits. The default directory is 'src', inspector directory is 'tools'. This way is similar Inspector compilation implemented in Cmake build procedure.
- Dependency libraries in DEBUG are stored in __TKDEP_DEBUG__. Qt requires it as names of debug and release libraries are different.

16 months ago0030101: Application Framework - A mistake reading a RealArray attribute with too...
vro [Mon, 14 Oct 2019 07:29:54 +0000 (10:29 +0300)]
0030101: Application Framework - A mistake reading a RealArray attribute with too small value

A case of reading of a very small value was skipped, for example: 2.1219957909652723e-314.
Fixed in XmlMDataStd_RealArrayDriver.cxx and XmlMDataStd_RealListDriver.cxx

// A test file bug29452.xml is extended to check this skipped case.

16 months ago0031315: Visualization - marker texture is lost after multi-textured object
kgv [Sun, 16 Feb 2020 12:04:17 +0000 (15:04 +0300)]
0031315: Visualization - marker texture is lost after multi-textured object

OpenGl_Context::BindTextures() now iterates over pair of texture sets
considering inconsistent texture unit ranges.

16 months ago0031206: Foundation Classes, Message_PrinterSystemLog - log messages to Browser conso...
kgv [Fri, 14 Feb 2020 18:27:58 +0000 (21:27 +0300)]
0031206: Foundation Classes, Message_PrinterSystemLog - log messages to Browser console within Emscripten

Message_PrinterOStream::SetConsoleTextColor() skips color tags in case of Emscripten.
Message_PrinterSystemLog now implements log via emscripten_log().

16 months ago0031375: Visualization, TKOpenGl - suppress warning on WebGL 1.0
kgv [Mon, 17 Feb 2020 10:59:58 +0000 (13:59 +0300)]
0031375: Visualization, TKOpenGl - suppress warning on WebGL 1.0

Check for WebGL version in advance.

16 months ago0031372: Visualization, TKOpenGl - failed to create texture on OpenGL ES 2.0 due...
kgv [Fri, 14 Feb 2020 16:29:51 +0000 (19:29 +0300)]
0031372: Visualization, TKOpenGl - failed to create texture on OpenGL ES 2.0 due to unknown GL_TEXTURE_BASE_LEVEL

OpenGl_Sampler::applySamplerParams() has been corrected to check for OpenGL ES 3.0

16 months ago0031014: Inspectors - variables for Qt in CMake IR-2020-02-14
nds [Mon, 10 Feb 2020 14:00:39 +0000 (17:00 +0300)]
0031014: Inspectors - variables for Qt in CMake

It restores path to Qt binaries in 3RDPARTY_DLL_DIRS for correct start TInspectorEXE under VStudio.

16 months ago0031336: Modeling data - extend BRepPrimAPI_MakeBox with planar shape creation
sshutina [Mon, 10 Feb 2020 13:32:56 +0000 (16:32 +0300)]
0031336: Modeling data - extend BRepPrimAPI_MakeBox with planar shape creation

-Create a new package BRepPreviewAPI, inherited from BRepPrimAPI to create both, valid and degenerative shapes
-Create a new class BRepPreviewAPI_MakeBox for working with a box
    Preview can be vertex, edge, rectangle or box
-BRepPrim_GWedge: in the case of non-valid data, the exception does not happen in the constructor, but at the moment of access to the shape
-BRepPrimAPI_MakeBox: myWedge is now not private, but protected, because used in  BRepPreviewAPI_MakeBox which inherits from BRepPrimAPI_MakeBox
-Add tests for checking of a creation a preview in tests/geometry/preview (vertex, edge, rectangle, box)
-Update a command "box": add new parameters

16 months ago0030268: Inspectors - improvements in VInspector plugin
nds [Fri, 31 Jan 2020 10:12:45 +0000 (13:12 +0300)]
0030268: Inspectors - improvements in VInspector plugin

- Convert package creation. It is used to prepare some auxiliary presentations/methods to prepare variables for inspector based on occt classes.
- ViewControl package improvement:
  Classes for property view, table, table model are implemented to visualize view of properties.
  This view is filled by selection in tree if the selected object has implemented DumpJson functionality.
- TreeModel package improvements:
  Method InitColumn is implemented in TreeModel_TreeModel to fill default columns in base model. The default columns are:
    Name, Visibility, Rows. Additional columns should be added in successors.
  Container of root items is moved into the base class
- View package imrovements:
  Store preferences: display mode, fit all checked state and type of external context
  View_DisplayPreview is added to process preview for selected in tree view objects
  hide actions Clear, Multi, Single by default (as selection in tree view or Visibility state of item define which presentations should be displayed or erased)
- ShapeView plugin improvements:
  Property View content based on DumpJson (columns in tree view for properties are removed),
  Properties for TopoDS_Shape are displayed
  Explode shape action in tree view to see content of shape by selected shape type. Type of displayed shapes is only preview, it is not used in export action.
  Export shape into BREP. The previous implementation about BREP files in some directory and default view is removed.
- VInspector plugin imrovements:
  Property View content based on DumpJson (columns in tree view for properties are removed),
  Properties for AIS_InteractiveContext and AIS_InteractiveObject are displayed
  obsolete classes to provide properties are removed.
- DFBrowser plugin improvements:
  Property View content based on DumpJson is not used yet. But there is the USE_DUMPJSON macro. It's switch off by default.
  If switch ON, it creates a Property View filled with DumpJson. It's a way of DFBrowser moving on this property view.
  Init uses static variable CDF_Session::CurrentSession()->CurrentApplication to fill plugin if application in plugin is not set but OCAF application exists

- OCC_VERSION_HEX variable used for previous OCCT versions support (before 6.9.0 or 7.2.0) is removed

16 months ago0031341: Visualization - Graphic3d_Layer::UpdateCulling() ignores Presentation range
kgv [Fri, 31 Jan 2020 21:50:04 +0000 (00:50 +0300)]
0031341: Visualization - Graphic3d_Layer::UpdateCulling() ignores Presentation range

Graphic3d_Layer::UpdateCulling() now takes into account BVH_Tree::EndPrimitive().
'vstatprofiler structs' now properly prints number of structures in case of no culling.

16 months ago0031364: Foundation Classes - unused enumerations in GeomAbs package
abv [Mon, 10 Feb 2020 07:29:57 +0000 (10:29 +0300)]
0031364: Foundation Classes - unused enumerations in GeomAbs package

Files GeomAbs_CurveForm.hxx, GeomAbs_SurfaceForm.hxx, GeomAbs_UVSense.hxx are removed

16 months ago0031363: Documentation - broken Doxygen documentation of header files in Standard...
abv [Mon, 10 Feb 2020 07:25:15 +0000 (10:25 +0300)]
0031363: Documentation - broken Doxygen documentation of header files in Standard package

Documentation is corrected

16 months ago0031360: Modeling Algorithms - Removing redundant class IR-2020-02-07
anv [Fri, 7 Feb 2020 10:12:31 +0000 (13:12 +0300)]
0031360: Modeling Algorithms - Removing redundant class

math_GaussPoints was removed.

16 months ago0031356: Visualization - out of range within StdPrs_WFShape::AddEdgesOnTriangulation()
kgv [Thu, 6 Feb 2020 17:12:55 +0000 (20:12 +0300)]
0031356: Visualization - out of range within StdPrs_WFShape::AddEdgesOnTriangulation()

Removed unused code causing the issue.

16 months ago0031233: Reading SAT files produces invalid shapes
anv [Tue, 21 Jan 2020 11:47:38 +0000 (14:47 +0300)]
0031233: Reading SAT files produces invalid shapes

Added removal of overlapping "tails" while splitting wires with a seam edge in ShapeFix_ComposeShell::SplitWire.

16 months ago0031333: Data Exchange - RWGltf_TriangulationReader::readBuffer() fails to read inter...
kgv [Thu, 30 Jan 2020 14:10:29 +0000 (17:10 +0300)]
0031333: Data Exchange - RWGltf_TriangulationReader::readBuffer() fails to read interleaved buffer at the end of file

Standard_ReadBuffer has been extended with a flag for reading an interleaved data.
RWGltf_TriangulationReader::readBuffer() uses new flag for reading vertex attributes.

16 months ago0025551: BRepMesh can produce internal nodes outside the face interior based on disto...
oan [Mon, 21 Oct 2019 08:52:01 +0000 (11:52 +0300)]
0025551: BRepMesh can produce internal nodes outside the face interior based on distorted BSpline surface

updated test script to see the difference on current version of OCCT

16 months ago0028247: Effect of minSize parameter of BRepMesh_IncrementalMesh seems to be too...
oan [Sat, 19 Oct 2019 13:28:55 +0000 (16:28 +0300)]
0028247: Effect of minSize parameter of BRepMesh_IncrementalMesh seems to be too strong Updated description of MinSize parameter of IMeshTools_Parameters

16 months ago0026382: BRepMesh produces internal nodes outside the face interior
oan [Sat, 19 Oct 2019 22:23:53 +0000 (01:23 +0300)]
0026382: BRepMesh produces internal nodes outside the face interior
updated test script: clean up shape before meshing to see the difference

16 months ago0031313: Foundation Classes - Dump improvement for classes IR-2020-01-31
nds [Tue, 28 Jan 2020 09:03:38 +0000 (12:03 +0300)]
0031313: Foundation Classes - Dump improvement for classes

- Provide DumpJson for geometrical, ocaf and visualization classes;
- Change depth parameter of DumpJson (constant is not obligate here)
- Introduce a new macro for transient objects to be called as the first row in DumpJson: OCCT_DUMP_TRANSIENT_CLASS_BEGIN. We need not put the class name in the macro, using get_type_name of Standard_Transient for it.
- change implementation of OCCT_DUMP_CLASS_BEGIN and OCCT_DUMP_TRANSIENT_CLASS_BEGIN. It is not an sentry more and it does not create a new hierarchy level. It appends a new row into the output stream: "className": <className>
- OCCT_DUMP_* does not require semicolon
- class header is included first in source files of TDataStd, TDocStd, TCAFDoc

16 months ago0031321: C# wrapper - wrap AIS_ViewController
kgv [Tue, 28 Jan 2020 19:51:24 +0000 (22:51 +0300)]
0031321: C# wrapper - wrap AIS_ViewController

Added missing virtual destructor for AIS_ViewController.

16 months ago0031322: Visualization, Select3D_SensitiveEntity - method NbSubElements() should...
nds [Thu, 30 Jan 2020 07:47:55 +0000 (10:47 +0300)]
0031322: Visualization, Select3D_SensitiveEntity - method NbSubElements() should be const

Set constant state for the method NbSubElement to be able to call it from other constant methods (e.g. DumpJson of Select3D_SensitiveEntity).

16 months ago0031332: Data Exchange - RWGltf_CafReader ignores bufferView.byteStride within glTF 2.0
kgv [Wed, 29 Jan 2020 17:48:24 +0000 (20:48 +0300)]
0031332: Data Exchange - RWGltf_CafReader ignores bufferView.byteStride within glTF 2.0

RWGltf_GltfJsonParser::gltfParseBufferView() now reads byteStride parameter within bufferView.

16 months ago0030904: Visualization - OSD_MemInfo provide Update with parameter of computation...
nds [Tue, 28 Jan 2020 12:01:42 +0000 (15:01 +0300)]
0030904: Visualization - OSD_MemInfo provide Update with parameter of computation kind

Added method OSD_MemInfo::SetActive() for disabling specific counter.

17 months ago0031275: Visualization, TKOpenGl - handle normal-map texture with Path-Tracing CR0_TS_740 IR-2020-01-24
iko [Tue, 21 Jan 2020 13:01:03 +0000 (16:01 +0300)]
0031275: Visualization, TKOpenGl - handle normal-map texture with Path-Tracing

Base normal map support has been implemented in path tracing (just geometry normal replacement).
Smooth normal adaptation has been implemeneted in order to avoid black areas artefacts during path tracing.
Tangent normal space calcuation has been moved to separate unified function.
Tangent space orthogonalization algorithm has been changed in order to handle all orientations and combinations of UV coordinates.

17 months ago0031312: Data Exchange - RWGltf_CafReader fails reading texture embedded into base64...
kgv [Wed, 22 Jan 2020 17:18:44 +0000 (20:18 +0300)]
0031312: Data Exchange - RWGltf_CafReader fails reading texture embedded into base64 bufferView

RWGltf_GltfJsonParser::gltfParseTexture() now handles images embedded into bufferView of non-glb file.

17 months ago0031258: Mesh - OCCT 7.4.0 VIS get wrong render data
oan [Tue, 21 Jan 2020 10:21:38 +0000 (13:21 +0300)]
0031258: Mesh - OCCT 7.4.0 VIS get wrong render data

Check intervals for infinite value causing exception in GeomLib::NormEstim

17 months ago0031306: Modeling Algorithms - Incomplete result of Cut operation
emv [Fri, 17 Jan 2020 13:46:20 +0000 (16:46 +0300)]
0031306: Modeling Algorithms - Incomplete result of Cut operation

The problem is fixed by #0029323. Integrating test case only.

17 months ago0031309: Data Exchange - RWObj_Reader fails to read mh03.obj with multi-line syntax
kgv [Mon, 20 Jan 2020 15:09:32 +0000 (18:09 +0300)]
0031309: Data Exchange - RWObj_Reader fails to read mh03.obj with multi-line syntax

Standard_ReadLineBuffer::SetMultilineMode() now accepts a flag to put gap space while joining lines, enabled by default.

17 months ago0031304: Configuration - TKACIS building failure due to duplicated symbol GeomFillFus... IR-2020-01-17
kgv [Fri, 17 Jan 2020 09:12:11 +0000 (12:12 +0300)]
0031304: Configuration - TKACIS building failure due to duplicated symbol GeomFillFusInt()

Added missing "static" to internal methods of GeomFill package.