4 years ago0027784: Thickness fails on cylinder with draft
aml [Tue, 31 Oct 2017 03:43:57 +0000 (06:43 +0300)]
0027784: Thickness fails on cylinder with draft

Incorrect calculation of intersection in 2D space is fixed.

4 years ago0029277: Configuration, Cmake - remove 3rd-party libraries from INTERFACE_LINK_LIBRAR...
ski [Tue, 31 Oct 2017 09:07:18 +0000 (12:07 +0300)]
0029277: Configuration, Cmake - remove 3rd-party libraries from INTERFACE_LINK_LIBRARIES property of installed OCCT targets

3rd-party libraries were removed from INTERFACE_LINK_LIBRARIES properties of OCCT targets.

4 years ago0029249: Configuration - Standard_Failure compilation fails on VS2013 + Intel Compile...
kgv [Tue, 24 Oct 2017 08:21:03 +0000 (11:21 +0300)]
0029249: Configuration - Standard_Failure compilation fails on VS2013 + Intel Compiler due to unavailability of thread_local

Check __INTEL_COMPILER version in combination with _MSC_VER on Windows.

4 years ago0029262: Visualization - AIS_InteractiveContext::Load() does not register Object...
kgv [Wed, 25 Oct 2017 14:27:23 +0000 (17:27 +0300)]
0029262: Visualization - AIS_InteractiveContext::Load() does not register Object in the Viewer

AIS_InteractiveContext::Load() now loads the object regardless specified selection mode and decomposition flag.
AIS_InteractiveContext::Load() and ::KeepTemporary() now register object in the Viewer
in the same way as ::Display() does.

Draw Harness command vdisplay has been extended with new flag -erased to load object into context in erased state.

4 years ago0029250: Configuration, TKIVtk - build failure with VTK 6.3+ due to vtkRenderingFreeT...
apn [Tue, 24 Oct 2017 08:00:54 +0000 (11:00 +0300)]
0029250: Configuration, TKIVtk - build failure with VTK 6.3+ due to vtkRenderingFreeTypeOpenGL being removed

Remove vtkRenderingFreeTypeOpenGL from EXTERNLIB if used vtk version is 6.3.0 and above

4 years ago0029251: Configuration - problem compiling OCCT 7.2 with glibc 2.26
kgv [Sat, 21 Oct 2017 17:46:59 +0000 (20:46 +0300)]
0029251: Configuration - problem compiling OCCT 7.2 with glibc 2.26

Standard_CLocaleSentry does not include xlocale.h when using glibc anymore.
HAVE_XLOCALE_H has been renamed to OCCT_CLOCALE_POSIX2008 to avoid confusion.


4 years ago0029255: Configuration, .gitignore - do not track generated files with extensions...
kgv [Tue, 24 Oct 2017 10:55:48 +0000 (13:55 +0300)]
0029255: Configuration, .gitignore - do not track generated files with extensions VC.db, VC.opendb

4 years ago0029252: Coding rules - eliminate GCC compiler warnings -Wformat-overflow
kgv [Sat, 21 Oct 2017 18:17:14 +0000 (21:17 +0300)]
0029252: Coding rules - eliminate GCC compiler warnings -Wformat-overflow

OSD_DirectoryIterator and OSD_FileIterator now uses TCollection_AsciiString instead of unsafe sprintf.

4 years ago0024574: ICC compiler warnings on Windows
abv [Thu, 19 Oct 2017 14:12:05 +0000 (17:12 +0300)]
0024574: ICC compiler warnings on Windows

NCollection_UtfString and NCollection_UtfIterator classes are refactored to use methods overloading instead of switches to dispatch implementation depending on character (Unicode code unit) size.

ICC-specific preprocessor directives are added to avoid warnings.
Unused local functions and variables, class methods, unreachable statements, and extra throw() declarations reported by ICC are removed.
Usage of "expl" for name of local variable is avoided as it conflicts with standard C function "expl" defined in math.h as preprocessor macro.

Non-standard (MS-specific) argument envp is removed in definition of main() function on Windows.
Functions _main_ and _WinMain_ are renamed to Draw_Main and Draw_WinMain, respectively, to avoid using names reserved in C++.

Doxygen warning is fixed in XDE User's Guide.

4 years ago0029214: Application Framework - TPrsStd_AISPresentation::AISUpdate() should not...
kgv [Thu, 12 Oct 2017 08:31:41 +0000 (11:31 +0300)]
0029214: Application Framework - TPrsStd_AISPresentation::AISUpdate() should not implicitly redraw 3D Viewer

4 years ago0029247: Tests, CheckCommands.tcl - Tcl exception "expected integer but got 3dviewer...
apn [Thu, 19 Oct 2017 09:08:05 +0000 (12:08 +0300)]
0029247: Tests, CheckCommands.tcl - Tcl exception "expected integer but got 3dviewer" in test cases on macOS

Test cases on macOS (using native tcl from /usr/lib) fail when $lst starts with numeral, because upvar guesses that its first parameter is level rather than otherVar.
The fix is to explicitly supply level to 1 (default value if uplevel is omitted) to avoid tcl exception "expected integer but got 3dviewer".

4 years ago0029183: Result of general fuse of shell and edge produces a shape with too large...
ifv [Fri, 6 Oct 2017 11:52:20 +0000 (14:52 +0300)]
0029183: Result of general fuse of shell and edge produces a shape with too large tolerance

Adjusting parameters on approximation (boundary condition) for case when projected curve is far from surface
Test case is created

4 years ago0029157: Modeling - suspicious pass-through of case labels in switch statements
msv [Wed, 18 Oct 2017 16:20:30 +0000 (19:20 +0300)]
0029157: Modeling - suspicious pass-through of case labels in switch statements

Suspicious passes through case labels have been resolved either by using Standard_FALLTHROUGH macro or by redesigning the code.

4 years ago0029182: BOPAlgo_PaveFiller sometimes raises exception in parallel mode
msv [Fri, 6 Oct 2017 14:07:50 +0000 (17:07 +0300)]
0029182: BOPAlgo_PaveFiller sometimes raises exception in parallel mode

Data races have been prevented in the code of BOPAlgo_PaveFiller that makes pcurves of edges on faces. For that:
- Put into treatment only unique edge-face pairs.
- If the same edge is treated with different faces in different threads simultaneously this also causes data races. To avoid this make the edge's copy in each thread and update the copy. The original edge is updated only after finishing parallel processing.

The new method BOPTools_AlgoTools::CopyEdge has been added to make a copy of an edge with vertices.

Big screenshot in the test script tests/bugs/modalg_7/bug28200 has been replaced with a small one.

4 years ago0029186: Move AddTool(), SetTools(), Tools() and other common methods of BOP tools...
oan [Thu, 12 Oct 2017 10:47:00 +0000 (13:47 +0300)]
0029186: Move AddTool(), SetTools(), Tools() and other common methods of BOP tools to separate interface class

Methods AddTool(), SetTools(), Tools() have been moved to BOPAlgo_ToolsProvider class;
BOPAlgo_BOP and BOPAlgo_Splitter are now successors of BOPAlgo_ToolsProvider

4 years ago0029228: Coding Rules - define rule for avoiding header inclusion list pollution
kgv [Fri, 13 Oct 2017 15:49:18 +0000 (18:49 +0300)]
0029228: Coding Rules - define rule for avoiding header inclusion list pollution

4 years ago0029229: Crash at Poly_Triangulation::Normal
dbv [Sat, 14 Oct 2017 15:14:06 +0000 (18:14 +0300)]
0029229: Crash at Poly_Triangulation::Normal

Fixed creation of returning gp_Dir

4 years ago0028763: Projection of a short line segment on a polar surface causes exception
emv [Fri, 22 Sep 2017 07:34:29 +0000 (10:34 +0300)]
0028763: Projection of a short line segment on a polar surface causes exception

Test case for the issue.
The problem has been fixed by the fix for the issue 0028150

4 years ago0029225: Visualization - Font_FTFont::AdvanceX() retrieves kerning value for incorrec...
kgv [Fri, 13 Oct 2017 12:52:51 +0000 (15:52 +0300)]
0029225: Visualization - Font_FTFont::AdvanceX() retrieves kerning value for incorrect characters pair

Fixed FT_Get_Kerning misuse within Font_FTFont::AdvanceX()/Font_FTFont::AdvanceY().
Font_FTFont::loadGlyph() has been corrected to not return TRUE
in case if method called with 0 argument second+ time.

4 years ago0029188: Null shape is produced by 3D offset algorithm (mode="Complete", Join Type...
emv [Fri, 6 Oct 2017 06:35:54 +0000 (09:35 +0300)]
0029188: Null shape is produced by 3D offset algorithm (mode="Complete", Join Type="Intersection")

The following improvements have been made in the 3D offset algorithm for mode "Complete" and Join type "Intersection":
- RemoveInsideFaces() - Removal of the invalid parts outside of the solids built from the splits of offset faces is now performed. It helps to avoid their rebuilding and speed-up the computation.
- FindVerticesToAvoid() - Strengthening the criteria for the vertices to be avoided in the new splits.

Test cases for the issue.
Adjustment of the test cases to current behavior.

4 years agoUpdate of tests database
apv [Thu, 12 Oct 2017 07:57:25 +0000 (10:57 +0300)]
Update of tests database

Test for 0021134: checkshape command does not return faulty shapes.
Test for 0021494: Intersection between cone and sphere fails
Test for 0022642: Refactoring of ShapeFix_Wire::FixIntersectingEdges
Test for 0022732: Reading a STEP file produces invalid shape

4 years ago0029196: Tests - some test cases fail with Intel HD graphics
abv [Mon, 9 Oct 2017 10:19:20 +0000 (13:19 +0300)]
0029196: Tests - some test cases fail with Intel HD graphics

Test bugs vis bug26357 is revised to check colors in more robust way.
In tests bugs vis bug29091_*, size of produced file is checked to be within range of known valid sizes, rather than hard-coded (per-platform) exact sizes.
FPE signals are disabled for test bugs vis bug29127 to prevent exceptions cause by software OpenGl driver.

File data/occ/Box.brep is removed to avoid confusion with file box.brep in public data files used in tests.

Two additional non-alphabetic-order combinations of complex types are handled in RWStepAP214_ReadWriteModule.cxx

4 years ago0029171: Foundation Classes - C signal handler does not work on MinGW
abv [Sat, 7 Oct 2017 16:26:38 +0000 (19:26 +0300)]
0029171: Foundation Classes - C signal handler does not work on MinGW

Setting signal handler is enabled in OSD::SetSignal() for MinGW (works only for SEH builds of MinGW, not for SJLJ builds).

Due to absence of function _set_se_translator(), handler is set using C signal() function and thus is called asynchronously.
Macro OCC_CONVERT_SIGNALS is enabled for MinGW build to support converting signals to C++ exceptions using long jumps (the same as on Linux).
Code raising exceptions in OSD::SetSignal() is corrected to use method Jump() instead of C++ throw.

4 years ago0029158: Visualization - suspicious pass-through of case labels in switch statements
kgv [Wed, 13 Sep 2017 15:12:57 +0000 (17:12 +0200)]
0029158: Visualization - suspicious pass-through of case labels in switch statements

MeshVS_Mesh::ComputeSelection() - fixed incorrect fall-through
from MeshVS_SMF_Mesh to MeshVS_SMF_Group.

4 years ago0029081: With Mingw-w64 Unicode Paths Do Not Work
kgv [Wed, 6 Sep 2017 08:14:53 +0000 (11:14 +0300)]
0029081: With Mingw-w64 Unicode Paths Do Not Work

OSD_OpenStream() now uses __gnu_cxx::stdio_filebuf extension for opening UNICODE files on MinGW when using C++ file streams.
Variant accepting filebuf returns bool (true if succeeded and false otherwise).

Checks of ofstream to be opened made via calls to low-level ofstream::rdbuf() are replaced by calls to ofstream::is_open(); state of the stream is also checked (to be good).
Unicode name used for test file in test bugs fclasses bug22125 is described (for possibility to check it).

4 years ago0029152: Coding Rules - eliminate GCC compiler warnings -Wmisleading-indentation...
kgv [Thu, 28 Sep 2017 18:29:22 +0000 (21:29 +0300)]
0029152: Coding Rules - eliminate GCC compiler warnings -Wmisleading-indentation when using MinGW

OSD_File::myFileHandle/myIO pair is now switched within class definition
instead of myFileHandle_is_only_for_Windows/myFileChannel_is_only_for_Linux macros.

OSD_Directory/OSD_Disk/OSD_File methods implementation of WinAPI/non-WinAPI
has been merged within .cxx file and reformatted.
Resolved several inconsistences on handling invalid input
between WinAPI/non-WinAPI implementations.
NCollection_Array1 is now used in several places instead of
raw memory allocation (HeapAlloc()/HeapFree()/new/delete).
TCollection_ExtendedString is used instead of StringCchCopyW.

Unused field OSD_Disk::myQuotaSize and not implemented methods OSD_Disk::*Quota*() have been removed.

Obsolete code fragment "for Visual Age compiler" is removed.
Macro __try is undefined before redefinition on MinGW to avoid warning.

4 years agoUpdate of tests database
apv [Mon, 2 Oct 2017 12:51:49 +0000 (15:51 +0300)]
Update of tests database

Test for 0028167: Fillet has strange form at its end
Test for 0028168: Exception is raised during Boolean operation
Test for 0028194: BRepMesh - Standard_OutOfRange exception on valid shape
Test for 0028200: Invalid topology of the general fuse result
Test for 0028216: Intersection of a face and a solid is broken up leading to empty result of Boolean common operation
Test for 0028245: Result of Cells Builder algorithm becomes invalid after removal of internal boundaries on faces
Test for 0028247: Effect of minSize parameter of BRepMesh_IncrementalMesh seems to be too strong
Test for 0028274: BOPAlgo_MakerVolume fails to create solid
Test for 0028279: Greater oscillations and higher degree of resulting B-Spline in cylinder-cylinder intersections in 7.1.0
Test for 0028354: Filleting destroys shape if the filleted edge touches a seam edge
Test for 0028366: BOP Common fails with solid and planar face
Test for 0028379: BRepMesh produces mangled mesh for a cone
Test for 0028388: Boolean common of simple face and solid results in empty compound
Test for 0028393: Boolean cut produce wrong result.
Test for 0028402: Modeling - calculation of properties of complex compounds is slow
Test for 0028406: High tolerances after boolean operation on OCCT 6.9.1
Test for 0028694: IGES reader produces too small edge covered by its vertices
Test for 0028719: Mesh - Display issue for special model
Test for 0028108: Sweep fails in "Right Corner" mode
Test for 0028696: Offset 2D algorithm produces micro edges
Test for 0028700: BRepBuilderAPI_Sewing produces too small edge covered by its vertices
Test for 0028722: Conversion of a spherical face to a spline produces an invalid shape
Test for 0028739: Draft on face fails
Test for 0028662: Data Exchange - Exception during reading large STEP file.
Test for 0028768: ShapeFix slighly corrupts the source face
Test for 0028485: Fuse of two shapes using gluing and non-destructive options gives invalid result
Test for 0028500: Artifact in shaded view of the shape
Test for 0028523: Fixshape reverses the orientation of the face
Test for 0028544: Big tolerance value is returned by Implicit-parametric algorithm
Test for 0028571: BRepOffsetAPI_MakeOffset build invalid wire
Test for 0028572: Wrong result of the mkface command
Test for 0028595: Shifting 2d curves for non-periodic surfaces leads to incorrect result.
Test for 0028596: Erroneous fillet
Test for 0028640: BRepBuilderAPI_Transform build invalid shape
Test for 0028656: 3d offset modifies the input shape
Test for 0000077: BUC60866. The BRepFill_Pipe fails.
Test for 0000078: BUC60875. Pipe is created incorrectly on two wires.
Test for 0000082: BUC60908. Incomplete section of shell by plane.
Test for 0000083: BUC60912. Section of simple BSpline surfaces is performed too slow.
Test for 0000862: GeomAPI_ExtremaCurveCurve fails on given curves
Test for 0002442: Error in BRepClass3d_SolidClassifier
Test for 0003936: Face on a surface of extrusion is extended after import to IGES
Test for 0005081: BRepOffset_MakeOffsetShape algorithm does not return valid result.
Test for 0005145: Wrong result of projection of a circle on a sphere.
Test for 0014846: ShapeFix_Wireframe::FixWireGaps() works wrong on a shape with seam edge
Test for 0016424: Exception in reading of attached IGES file
Test for 0010377: Incorrect fuse result when objects tangent by planar face
Test for 0013565: Incorrect result of Common operation
Test for 0013566: Incorrect result of Extrema between a large circle and a line
Test for 0024632: Artifacts during Boolean cut operation on neighboring parts
Test for 0005582: Impossible to make offset on the shape with degenerated edge

4 years ago0029135: 3D Offset algorithm produces a NULL shape
emv [Thu, 28 Sep 2017 08:02:05 +0000 (11:02 +0300)]
0029135: 3D Offset algorithm produces a NULL shape

UpdateValidEdges in BRepOffset_MakeOffset_1 - Perform the filtering of splits of the edges in two stages:
1. Separate filtering of the connected blocks using localized bounding edges taken only from the splits of offset faces from the block;
2. Combined treatment of the remaining splits using bounding edges from the splits of all offset faces.

4 years ago0029124: Visualization, Tests - failures when tests are executed via Remote Desktop...
abv [Tue, 19 Sep 2017 10:04:23 +0000 (13:04 +0300)]
0029124: Visualization, Tests - failures when tests are executed via Remote Desktop connection

Protection against accessing null pointer is added in OpenGl_VertexBuffer::Create().
In command vreadpixel OpenGl-related warnings are redirected to cout so that they do not contaminate the command output.
Test grid caf presentation is configured to ignore OpenGl-related warning messages.
Tests in grid tools are configured to report status SKIPPED if tools are not available (OCCT is built without Qt).

4 years ago0029117: Adding translation of Multileader entity
anv [Thu, 21 Sep 2017 12:15:12 +0000 (15:15 +0300)]
0029117: Adding translation of Multileader entity

Scaling of width of glyphs is added om Font_FTFont class.
Font "SimSan" is specified as fallback alias for font "NSimSan" (contains Chinese hieroglyphs).

4 years ago0029029: Exception Raised with no Result during reading file 2033zsh1_1.stp
gka [Tue, 3 Oct 2017 14:28:32 +0000 (17:28 +0300)]
0029029: Exception Raised with no Result during reading file 2033zsh1_1.stp

Static function stepstrcmp() in StepData_StepReaderData.cxx is replaced by plain strcmp() to have the full strings compared (stepstrcmp() returned true if one of strings was longer than the other but common part was equal).
Protection is added to avoid exception for cases when representation entities are NULL

4 years ago0028245: Result of Cells Builder algorithm becomes invalid after removal of internal...
imn [Wed, 12 Jul 2017 07:52:41 +0000 (10:52 +0300)]
0028245: Result of Cells Builder algorithm becomes invalid after removal of internal boundaries on faces

When removing internal boundaries between faces of the same material do it once for the whole shape, and at this keep boundaries between areas with different material.

4 years ago0029184: Visualization - DrawWindow::Save() fails when using WinCodec with PNG codec
kgv [Wed, 13 Sep 2017 15:12:57 +0000 (17:12 +0200)]
0029184: Visualization - DrawWindow::Save() fails when using WinCodec with PNG codec

DrawWindow::Save() now uses Image_Format_BGR instead of Image_Format_BGR32
for better compatibility with image encoders when dumping WinAPI bitmap.

4 years ago0029109: Visualization, AIS_Trihedron - add option hiding arrows tips
Zia ul Azam [Wed, 13 Sep 2017 15:12:57 +0000 (17:12 +0200)]
0029109: Visualization, AIS_Trihedron - add option hiding arrows tips

Prs3d_DatumAspect::DrawDatumPart() now handles new flag ToDrawArrows().

vtrihedron - added new option -arrowTip.
Fixed misprint in command description -arrowscolor -> -arrowcolor.

4 years ago0028909: Algorithm of BO is stuck while fusing shell and edges
ifv [Tue, 11 Jul 2017 07:15:28 +0000 (10:15 +0300)]
0028909: Algorithm of BO is stuck while fusing shell and edges

Approximation parameters: degmin, degmax, max number of segments, boundary condition, maximal distance of projecting are added in interface of classes ProjLib_ProjectedCurve, ProjLib_ComputeApprox,
Algorithm of Approx/Approx_ComputeCLine is modified in order to treat maximal number of segments allowed for cutting.
Algorithm of method BOPTools_AlgoTools2D::MakePCurveOnFace(...) is modified in order to manage cases with big edge tolerances.
Test case added
Some test cases were modified according to new behavior of algorithms

4 years ago0029176: Exception while projection 2D-point on 2D-line
nbv [Tue, 3 Oct 2017 07:30:47 +0000 (10:30 +0300)]
0029176: Exception while projection 2D-point on 2D-line

DRAW-command "2dproj" has been changed. Now, it can return not only 2D-line as extrema but 2D-point.

Test case has been updated.

4 years ago0029160: Coding - AppleCLang 9 compiler warning "binding dereferenced null pointer...
abv [Fri, 29 Sep 2017 08:18:11 +0000 (11:18 +0300)]
0029160: Coding - AppleCLang 9 compiler warning "binding dereferenced null pointer to reference has undefined behavior"

Avoid returning reference to null in AppDef_MyLineTool

4 years ago0028931: Eliminate dependency from TBB in OSD_Parallel header
oan [Fri, 15 Sep 2017 14:22:30 +0000 (17:22 +0300)]
0028931: Eliminate dependency from TBB in OSD_Parallel header

Implementation of methods OSD_Parallel::For() and ForEach() is moved to CXX files to avoid direct dependency of client code that uses OSD_Parallel on TBB headers, and necessity to link with TBB explicitly.
Runtime polymorphism (virtual methods) is used to hide implementation (TBB or threads-based).

4 years ago0029159: Sewing fail when using a maximum tolerance
msv [Fri, 29 Sep 2017 07:43:52 +0000 (10:43 +0300)]
0029159: Sewing fail when using a maximum tolerance

Force setting truly computed tolerance of the edge if BRepLib::SameParameter has put too large tolerance.

4 years ago0029147: Visualization - D3DHost_FrameBuffer::BindBuffer() fails on some Intel drivers
kgv [Tue, 26 Sep 2017 14:41:05 +0000 (17:41 +0300)]
0029147: Visualization - D3DHost_FrameBuffer::BindBuffer() fails on some Intel drivers

D3DHost_FrameBuffer::BindBuffer() now implicitly detaches Depth+Stencil texture in case of driver failure.
D3DHost_View::d3dCreateRenderTarget() now does not request Depth+Stencil texture by default.

4 years ago0029138: Visualization - D3DHost_FrameBuffer should provide software fallback when...
kgv [Mon, 25 Sep 2017 12:54:45 +0000 (15:54 +0300)]
0029138: Visualization - D3DHost_FrameBuffer should provide software fallback when WGL_NV_DX_interop is unavailable

D3DHost_FrameBuffer now provides fallback code copying OpenGL FBO content into D3D surface (slow).
OpenGl_FrameBuffer::BufferDump() - FBO dump implementation has been moved from OpenGl_Workspace::BufferDump().

4 years ago0029137: Visualization - D3DHost_FrameBuffer does not release Depth texture and FBO...
kgv [Mon, 25 Sep 2017 12:21:11 +0000 (15:21 +0300)]
0029137: Visualization - D3DHost_FrameBuffer does not release Depth texture and FBO index

4 years ago0029170: GCC 7.1 warnings -Wstrict-aliasing in Graphic3d_ArrayOfPrimitives.hxx
abv [Sat, 30 Sep 2017 18:35:05 +0000 (21:35 +0300)]
0029170: GCC 7.1 warnings -Wstrict-aliasing in Graphic3d_ArrayOfPrimitives.hxx

Methods Graphic3d_ArrayOfPrimitives::SetVertexColor() accepting color as three double rgb values and Graphic3d_Vec4ub object are refactored to avoid using reinterpret_cast between pointers to complex types.

Similar correction is made in ViewerTest_ObjectCommands.cxx (static function VDrawSphere).

4 years ago0029169: Configuration - fix compilation with undefined UNICODE on Windows
kgv [Sat, 30 Sep 2017 16:52:10 +0000 (19:52 +0300)]
0029169: Configuration - fix compilation with undefined UNICODE on Windows

Eliminated usage of TEXT macros, usage of OSVERSIONINFO instead of OSVERSIONINFOW.
LoadIcon/LoadCursor are now used instead of LoadIconW/LoadCursorW
when passing macros to standard resources (which depend on UNICODE flag).

4 years ago0029165: Visualization - misuse of enumeration in Prs3d_DatumAspect
abv [Fri, 29 Sep 2017 16:04:13 +0000 (19:04 +0300)]
0029165: Visualization - misuse of enumeration in Prs3d_DatumAspect

Methods SetDrawFirstAndSecondAxis() and SetDrawThirdAxis() of the class Prs3d_DatumAspect are corrected to ensure that myAxis may be set only to valid values of the enum, and avoid unsafe operations.

4 years ago0029164: GCC 7.1 compiler warnings -Wmaybe-uninitialized in gp_XYZ and siblings
abv [Fri, 29 Sep 2017 15:35:03 +0000 (18:35 +0300)]
0029164: GCC 7.1 compiler warnings -Wmaybe-uninitialized in gp_XYZ and siblings

Code is corrected to avoid local variables of reference type pointing to fields of temporary objects.

4 years ago0029151: GCC 7.1 warnings "this statement may fall through" [-Wimplicit-fallthrough=]
abv [Thu, 28 Sep 2017 07:26:47 +0000 (10:26 +0300)]
0029151: GCC 7.1 warnings "this statement may fall through" [-Wimplicit-fallthrough=]

New macro Standard_FALLTHROUGH is defined for use in a switch statement immediately before a case label, if code associated with the previous case label may fall through to that
next label (i.e. does not end with "break" or "return" etc.).
This macro indicates that the fall through is intentional and should not be diagnosed by a compiler that warns on fallthrough.

The macro is inserted in places that currently generate such warning message and where fallthrough is intentional.

Doxygen comments are provided for this and other macros in Standard_Macro.hxx.

4 years ago0029156: Coding Rules - eliminate deprecation compiler warnings when targeting macOS...
kgv [Thu, 28 Sep 2017 20:48:55 +0000 (23:48 +0300)]
0029156: Coding Rules - eliminate deprecation compiler warnings when targeting macOS 10.12

4 years ago0029062: Visualization, SelectMgr_ViewerSelector - add NULL-check within ::checkOverl...
kgv [Tue, 19 Sep 2017 07:02:37 +0000 (10:02 +0300)]
0029062: Visualization, SelectMgr_ViewerSelector - add NULL-check within ::checkOverlap() method

4 years ago0028188: Improving layer color storage mechanism for DXF Import/Export
anv [Thu, 29 Dec 2016 08:48:16 +0000 (11:48 +0300)]
0028188: Improving layer color storage mechanism for DXF Import/Export

Attribute ColorByLayer was added for shapes that should be colored by the color of their layer or, if it's absent, by the parent component's layer color.

Fixing inconsistency of iterating through the map of Styles

Improving ColorByLayer mechanism

Fix for Map/IndexedMad differences.

Renaming according to convention of naming collection typedefs

4 years ago0029118: Incorrect generation of reference documentation for modules
ski [Fri, 15 Sep 2017 16:10:54 +0000 (19:10 +0300)]
0029118: Incorrect generation of reference documentation for modules

Generation of reference documentation for modules was corrected.

4 years ago0029119: Documentation for PMI in XCAF
snn [Fri, 22 Sep 2017 08:08:30 +0000 (11:08 +0300)]
0029119: Documentation for PMI in XCAF

Documentation is added to the XDE part of the User Guide for GD&T, Clipping planes and Saved view components.

4 years ago0028764: [Regression to 7.0] Intersection of faces gives exception in debug mode
nbv [Fri, 22 Sep 2017 11:05:01 +0000 (14:05 +0300)]
0028764: [Regression to 7.0] Intersection of faces gives exception in debug mode

Some point were incorrectly removed from the Walking-line.

In the current fix, new method IntWalk_PWalking::RemoveAPoint(...) has been added and implemented in order to provide safe removing.

So, now methods AddAPoint(...) and RemoveAPoint(...) are recommended to use for work with the Walking-line.

4 years ago0028987: Visualization, SelectMgr_SelectableObject - move out iterator from object
kgv [Sun, 10 Sep 2017 18:24:56 +0000 (21:24 +0300)]
0028987: Visualization, SelectMgr_SelectableObject - move out iterator from object

Added method SelectMgr_SelectableObject::Selections() and depreacted methods
Init(), More(), Next() and CurrentSelection().

Added method SelectMgr_Selection::Entities() and depreacted methods
Init(), More(), Next() and Sensitivity().

SelectMgr_SelectableObject::myAssemblyOwner has been moved to AIS_MultipleConnectedInteractive.
SelectMgr_SelectableObject::Selection() now returns NULL handle for not found selection.
SelectMgr_SelectableObject::HasSelection() is no more virtual and just retuns !Selection().IsNull().

SelectMgr_SelectionManager::mySelectors map is now declared using proper
key type Handle(SelectMgr_ViewerSelector) instead of Handle(Standard_Transient).

4 years ago0029112: Visualization - compilation fails on Ubuntu with libavutil 54.x (FFmpeg...
abv [Fri, 15 Sep 2017 05:35:07 +0000 (08:35 +0300)]
0029112: Visualization - compilation fails on Ubuntu with libavutil 54.x (FFmpeg 2.7.6)

Offending macro is undefined to allow compilation with libavutil 54.x

4 years ago0029073: Regression: General Cut produces invalid shape
emv [Fri, 15 Sep 2017 06:31:40 +0000 (09:31 +0300)]
0029073: Regression: General Cut produces invalid shape

Boolean Operations:
1. Face/Face intersection post treatment - Unify vertices put on the section curves, which were rejected as existing ones, with the vertices of edges by which these section curves have been rejected.

2. Extend Warnings Reporting system of Boolean operations with the new warnings:
- BOPAlgo_AlertIntersectionOfPairOfShapesFailed - to be added when the intersection of pair of sub-shapes of the arguments has failed;
- BOPAlgo_AlertBuildingPCurveFailed - to be added when the building of the 2D curve of the edge on face has failed;
- BOPAlgo_AlertAcquiredSelfIntersection - to be added when the positioning and tolerances of the arguments leads to creation of self-interfered shapes.

These new warnings allow completing the operation even if intersection of some of the sub-shapes or building of some of the PCurves has failed. Moreover, they allow getting the pairs of sub-shapes on which the intersection/projection has failed, providing the user ability to analyze the intersection results.

Note that if some of these warnings appear, the result of the operation should be carefully analyzed for validity.

3. Print messages for the Warnings/Errors met during checking of the shape on self-intersection ("bopcheck" command).

4 years ago0027869: Visualization - AIS_ConnectedInteractive does not support exact HLR mode
kgv [Sun, 10 Sep 2017 18:24:56 +0000 (21:24 +0300)]
0027869: Visualization - AIS_ConnectedInteractive does not support exact HLR mode

AIS_ConnectedInteractive now shares HLR computation code with AIS_Shape.

BRepTools_WireExplorer::Orientation() now returns TopAbs_FORWARD
instead of throwing exception in case of infinite Edge without vertices.

StdSelect_BRepSelectionTool::GetSensitiveForFace() now creates Select3D_SensitiveCurve
from 2 points in case of infinite Edge instead of Select3D_SensitiveFace.

4 years ago0028452: VIS - MSVC 14 compiler warnings
abv [Tue, 15 Aug 2017 13:04:45 +0000 (16:04 +0300)]
0028452: VIS - MSVC 14 compiler warnings

Includes of VTK headers are wrapped in #pragmas to ensure that MSVC warning messages disabled by VTK headers are still enabled for OCCT code

4 years ago0029127: Visualization - V3d_View::ToPixMap() crashes on tiled rendering without FBO
kgv [Wed, 20 Sep 2017 11:28:26 +0000 (14:28 +0300)]
0029127: Visualization - V3d_View::ToPixMap() crashes on tiled rendering without FBO

Fixed out-of-memory writing within fallback View dump mode.

4 years ago0029122: Visualization - improve Font_BRepFont to handle one-line-fonts
kgv [Tue, 19 Sep 2017 13:53:39 +0000 (16:53 +0300)]
0029122: Visualization - improve Font_BRepFont to handle one-line-fonts

Font_SystemFont - added a new property SingleStrokeFont().
Font_BRepFont::renderGlyph() has been extended to not close contours
when flag SingleStrokeFont() has been set.

4 years ago0029107: Visualization - SelectMgr_FrustumBuilder constructor without arguments is...
abv [Wed, 13 Sep 2017 13:49:04 +0000 (16:49 +0300)]
0029107: Visualization - SelectMgr_FrustumBuilder constructor without arguments is not exported

Standard_EXPORT is added

4 years ago0028069: Visualization, TKOpenGl - handle flat shading model within GLSL programs
kgv [Sun, 10 Sep 2017 14:06:19 +0000 (17:06 +0300)]
0028069: Visualization, TKOpenGl - handle flat shading model within GLSL programs

4 years ago0029125: Visualization, OpenGl_Text - fix access violation within OpenGL1.1 context
kgv [Tue, 19 Sep 2017 09:53:15 +0000 (12:53 +0300)]
0029125: Visualization, OpenGl_Text - fix access violation within OpenGL1.1 context

OpenGl_Context::DiagnosticInformation() - added OpenGL version check before retrieving GL_SHADING_LANGUAGE_VERSION string.

4 years ago0028150: Exception is raised during Boolean operation
nbv [Mon, 18 Sep 2017 14:23:44 +0000 (17:23 +0300)]
0028150: Exception is raised during Boolean operation

ProjLib_ComputeApproxOnPolarSurface::BuildInitialCurve2d - Using the correct number of points (computed in GCPnts_QuasiUniformAbscissa class) for creation of the initial curve.

4 years ago0029103: No intersection curve between faces if starting points are given
nbv [Thu, 14 Sep 2017 11:49:16 +0000 (14:49 +0300)]
0029103: No intersection curve between faces if starting points are given

Sometimes the algorithm of Walking-line creation finds points out of the domain. Some such places have been detected and fixed in frame of this issue.

4 years ago0028824: Possibility to build OCCT 7.1.0 and above using Visual Studio 2008
oan [Thu, 14 Sep 2017 08:39:36 +0000 (11:39 +0300)]
0028824: Possibility to build OCCT 7.1.0 and above using Visual Studio 2008

Possibility to build OCCT using Visual Studio 2008 (VC9) is restored.
For that:

- template functions and classes from namespace std or tr1 (for VC9) are imported to namespace opencascade which is then used instead of std in relevant places
- templates not provided by compiler (VC9) but required for OCCT are defined in this namespace (in Standard_Handle.hxx)
- methods implementing move semantics are excluded for VC9 compiler (which does not support && syntax)
- support of vc9 compiler is restored in build procedures and environment scripts
- check of type of the current class in macros DEFINE_STANDARD_RTTI* is refactored

VS 2008 is restored in the list of supported platforms on Overview / System Requirements.

4 years ago0027356: BRepTools::Clean() does not clean free edges from Poly_Polygon3D
oan [Fri, 15 Apr 2016 14:12:28 +0000 (17:12 +0300)]
0027356: BRepTools::Clean() does not clean free edges from Poly_Polygon3D

Added code to clean 3D polygons on edges in BRepTools::Clean().

4 years ago0029038: Modeling - IntTools_EdgeEdge::FindParameters() hangs on bad curve
msv [Fri, 1 Sep 2017 06:10:36 +0000 (09:10 +0300)]
0029038: Modeling - IntTools_EdgeEdge::FindParameters() hangs on bad curve

Make possibility to dramatically increase the step during iteration on the curve when the global resolution of the curve is too small.
Correct the functions FindParameters, FindBestSolution, FindDistPC.

The change caused improvement of the test case "boolean bfuse_complex E4", so the bug #27697 has been fixed.

The change caused dramatic improvement of the performance of the test "bugs modalg_7 bug27160", and the bug #29080 has been fixed.

4 years ago0026256: FSD_File and FSD_CmpFile are almost twins.
szy [Wed, 13 Sep 2017 13:43:32 +0000 (16:43 +0300)]
0026256: FSD_File and FSD_CmpFile are almost twins.

4 years ago0029102: Missing points using GCPnts_QuasiUniformDeflection
msv [Wed, 13 Sep 2017 08:38:23 +0000 (11:38 +0300)]
0029102: Missing points using GCPnts_QuasiUniformDeflection

Correct the method PerformCurve of GCPnts_QuasiUniformDeflection to get the proper derivative at the end of the current curve.

Improve the Draw commands "crvpoints" and "crvtpoints" so that to work with wires as composite curves.

4 years ago0026795: Unable to perform General Fuse operation on the attached faces
emv [Thu, 14 Sep 2017 07:23:48 +0000 (10:23 +0300)]
0026795: Unable to perform General Fuse operation on the attached faces

The problem is not reproduced in current version of OCCT.
Correction of the test case into OK state.

4 years ago0029099: Extra shapes in result of General Cut (box by ellipsoid)
emv [Wed, 13 Sep 2017 05:28:04 +0000 (08:28 +0300)]
0029099: Extra shapes in result of General Cut (box by ellipsoid)

Boolean Operations - when looking for the splitting parameters on the degenerated edges try not only the intersection of the 2D curve of degenerated edge with 2D curves of other edges bounded by the vertex of degenerated edge, but also the projection of the end points of the edges corresponding to the vertex on the 2d curve of degenerated edge.

4 years ago0029096: Coding Rules - eliminate several compiler warnings in Training Samples
kgv [Sun, 10 Sep 2017 08:56:11 +0000 (11:56 +0300)]
0029096: Coding Rules - eliminate several compiler warnings in Training Samples

4 years ago0029075: Configuration - fix TKService linkage errors due to usage of GLX functions...
kgv [Sat, 2 Sep 2017 17:08:42 +0000 (20:08 +0300)]
0029075: Configuration - fix TKService linkage errors due to usage of GLX functions while using EGL

Xw_Window, fixed usage of GLX functions for choosing Visual
when building with HAVE_EGL/HAVE_GLES2 options.

4 years ago0029086: Visualization, SelectMgr_ViewerSelector - drop Owners detected only by part...
kgv [Wed, 6 Sep 2017 19:04:25 +0000 (22:04 +0300)]
0029086: Visualization, SelectMgr_ViewerSelector - drop Owners detected only by part of Entities within Box selection

4 years ago0022048: Visualization, AIS_InteractiveContext - single object selection should alway...
kgv [Thu, 7 Sep 2017 15:29:13 +0000 (18:29 +0300)]
0022048: Visualization, AIS_InteractiveContext - single object selection should always clear multiple selection

AIS_InteractiveContext::Select() now clears multiple selection when selecting a single object.

4 years ago0029074: Visualization, TKOpenGl - support Geometry Shader definition
kgv [Fri, 1 Sep 2017 14:45:49 +0000 (17:45 +0300)]
0029074: Visualization, TKOpenGl - support Geometry Shader definition

Graphic3d_TypeOfShaderObject enumeration has been extended by Geometry shader object type.
OpenGl_ShaderProgram::Initialize() processes new shader object types when supported by OpenGL version.
Declarations.glsl has been fixed so that occFragColor is defined only for
Fragment Shader object only (by handling new FRAGMENT_SHADER macros).

Improved documentation of Graphic3d_ArrayOfPrimitives class.

vshader Draw Harness command has been extended to support definition
of Shader Object types other than Vertex and Fragment shader.

4 years ago0029084: Visualization, AIS_Manipulator - broken transformation is applied at Rotatio...
kgv [Tue, 5 Sep 2017 09:14:02 +0000 (12:14 +0300)]
0029084: Visualization, AIS_Manipulator - broken transformation is applied at Rotation angles near to Pi

AIS_Manipulator::ObjectTransformation() - fixed using of manipulator axes
with temporarily applied transformation (when BehaviorOnTransform::FollowRotation is TRUE).
Start axes orientation (at the beginning of Rotation) is now used instead.

4 years ago0028660: Documentation - describe how to fulfill LGPL terms in OCCT-based applications
abv [Wed, 30 Aug 2017 09:53:07 +0000 (12:53 +0300)]
0028660: Documentation - describe how to fulfill LGPL terms in OCCT-based applications

Points considered as necessary to fulfill requirements of LGPL when OCCT is used in proprietary applications are described in Overview.

4 years ago0029014: Managing Binary Format Version Is Not Possible for Own TDF_Attributes
Benjamin Bihler [Fri, 18 Aug 2017 07:40:19 +0000 (10:40 +0300)]
0029014: Managing Binary Format Version Is Not Possible for Own TDF_Attributes

CDM_Application has been extended to provide application name and version.

Application name and version is stored by BinLDrivers_DocumentStorageDriver.

BinLDrivers_DocumentStorageDriver propagates application name and version
by passing it to BinMDataStd.

Made BinObjMgt_RRelocationTable store a handle to the header data of the file
begin read in to make it accessible by binary attribute drivers.

Undone storing application name and version as static fields in BinMDataStd
which is bad style and not thread-safe.

Moved method implementations to .cxx files.

Clearing a BinObjMgt_RRelocationTable now nullifies the reference to the
file header data and BinLDrivers_DocumentRetrievalDriver therefore sets
the reference after the relocation table has been cleared before reading
in the document subtree.

4 years ago0028157: Setting the tolerance of a face to a small value and then fixing it leads...
mkv [Fri, 25 Aug 2017 12:32:56 +0000 (15:32 +0300)]
0028157: Setting the tolerance of a face to a small value and then fixing it leads to a face with vertex-vertex intersections

Problem is not reproduced on current master. Issue must be closed on 7.2.0.
Test case was added only

4 years ago0029077: Tests - improve command testfile
abv [Mon, 4 Sep 2017 10:40:25 +0000 (13:40 +0300)]
0029077: Tests - improve command testfile

Command testfile is improved to be more usable by developers for checking data files used by the new test cases before their integration to the test data base:

1. Do not check and do not report problems found in the repo when checking new files -- this check is done only when argument is "-check"

2. Can check a file located in a directory listed in CSF_TestDataPath as new one without it being considered as already in the data base

3. For new BREP files, reports warning if the file contains triangulation, suggesting that it can be removed to minimize the size

4. Can identify the same (by content) file in the data base for the new files in DOS encoding (less than 1 MB)

5. Can detect duplicates among the input files

6. Outputs result in more clear form

7. When loading STL files, uses option "triangulation" to be efficient

Automated Testing System guide is updated to describe command testfile.

Added test demo testsystem testfile

4 years ago0029083: Samples - specify multiple Make jobs within make.sh for Qt sample
kgv [Mon, 4 Sep 2017 16:02:49 +0000 (19:02 +0300)]
0029083: Samples - specify multiple Make jobs within make.sh for Qt sample

4 years ago0029050: SKIPPED test cases are no listed in header of summary.html
bugmaster [Wed, 6 Sep 2017 13:24:25 +0000 (16:24 +0300)]
0029050: SKIPPED test cases are no listed in header of summary.html

Adding list of SKIPPED test cases in header of summary.html under header Skipped:, and in the end of text log file

4 years agoIncitement OCCT version to 7.2.1 dev
bugmaster [Thu, 21 Sep 2017 16:28:56 +0000 (19:28 +0300)]
Incitement OCCT version to 7.2.1 dev

4 years ago0029018: Documentation - Provide user guide for Qt browser OCCT-720 STR_GMBH_720 V7_2_0
nds [Mon, 28 Aug 2017 09:29:29 +0000 (12:29 +0300)]
0029018: Documentation - Provide user guide for Qt browser

Documentation is added in a new "Inspector" page of "User Guides".
Inspector plugins has some improvements by the documentation needs.
New DRAW scripts are implemented for 'tinspector' command.

4 years agoUpdate of title page of documentation (overview)
abv [Wed, 30 Aug 2017 15:54:07 +0000 (18:54 +0300)]
Update of title page of documentation (overview)

- Copyright year is updated
- Links to 3rd-party libraries and their licenses are actualized
- Description and snapshot of iOS sample added
- Visual Studio 2017 is mentioned among supported compilers

4 years ago0028932: Add possibility to install Eigen along the OCCT
ski [Thu, 24 Aug 2017 10:55:52 +0000 (13:55 +0300)]
0028932: Add possibility to install Eigen along the OCCT

Added installation of Eigen.

4 years ago0025464: Visualization - provide package for Volume Rendering
vsv [Mon, 26 Jun 2017 13:40:15 +0000 (16:40 +0300)]
0025464: Visualization - provide package for Volume Rendering

4 years ago0028968: Incorrect offset for the faces with singularities
abv [Fri, 25 Aug 2017 11:10:02 +0000 (14:10 +0300)]
0028968: Incorrect offset for the faces with singularities

Simple offset algorithm (BRepOffset_MakeSimpleOffset) is improved to handle the case when bspline surface has imprecise singularity at one of sides (when side is degenerated but not exactly to one point).
In such case, the algorithm tries to collapse all poles of singular side of the surface to the same point; this allows avoiding flapping of normal due to small fluctuations of surface.

If face being offset contains degenerated edges, then check for singularity is done using position and tolerance of corresponding vertices.
In addition, each side is checked with some user-defined tolerance (by default Precision::Confusion()); this helps to process cases when no edge is located at that side or if such edge is not encoded as degenerated.
New parameter Tolerance is introduced for that in BRepOffset_MakeSimpleOffset class.

Tests added:
bugs modelg_7 bug28968 - on isolated faces as reported in the issue, mostly for visual check (absence of loops)
offset simple F01-05 - on original shells, checking tolerances of resulting shell

4 years agoIncrementing OCCT version up to 7.2.0
bugmaster [Tue, 29 Aug 2017 14:59:55 +0000 (17:59 +0300)]
Incrementing OCCT version up to 7.2.0

4 years ago0029067: Visualization, AIS_ColoredShape - visibility of sub-shapes is ignored by...
kgv [Mon, 28 Aug 2017 18:10:28 +0000 (21:10 +0300)]
0029067: Visualization, AIS_ColoredShape - visibility of sub-shapes is ignored by ComputeSelection()

4 years ago0029056: Configuration - It is not possible to install VTK products
ski [Mon, 28 Aug 2017 13:16:37 +0000 (16:16 +0300)]
0029056: Configuration - It is not possible to install VTK products

Added installation of vtk.

4 years ago0029057: Tests - unstable test case bugs/vis/bug5682
kgv [Sun, 27 Aug 2017 17:18:29 +0000 (20:18 +0300)]
0029057: Tests - unstable test case bugs/vis/bug5682

Test case has been corrected to reduce measurements error.

4 years ago0028977: FFmpeg libraries are not presented in the CMake configuration
ski [Wed, 23 Aug 2017 15:12:47 +0000 (18:12 +0300)]
0028977: FFmpeg libraries are not presented in the CMake configuration

Corrected search of FFmpeg libraries.

4 years ago0029015: Testdiff - possibility to visualize image differences by toggling - correction
abv [Tue, 29 Aug 2017 10:51:49 +0000 (13:51 +0300)]
0029015: Testdiff - possibility to visualize image differences by toggling - correction

Javascript code is corrected to not depend on values of URLs of images

4 years ago0028985: XCAF data structures for generic text annotations linked to GD&T annotations...
snn [Fri, 10 Feb 2017 12:48:36 +0000 (15:48 +0300)]
0028985: XCAF data structures for generic text annotations linked to GD&T annotations and saved views

1. A tool to annotate items in the hierarchical product structure was added. The tool is located under
   fixed label 0:1:9. It operates two basic entities: notes and annotations located under 0:1:9:1 and 0:1:9:2
   hives correspondingly. A note is an attribute derived from base class XCAFDoc_Note that is attached to a separate
   label under the notes hive. An annotated item is represented by XCAFDoc_AssemblyItemRef attribute
   attached to a separate label under the annotated items hive. Notes are linked to annotated items by means of
   XCAFDoc_GraphNode attribute, where notes play parent roles and annotated items - child roles.
2. XCAFDoc_AssemblyItemRef defines a weak reference to a label with optional attribute GUID or sub-shape index.
3. A capability to store note/annotation labels in XCAFDoc_ViewTool was added.
4. XDE User guide was updated

4 years ago0028388: Boolean common of simple face and solid results in empty compound
mkv [Tue, 29 Aug 2017 11:34:28 +0000 (14:34 +0300)]
0028388: Boolean common of simple face and solid results in empty compound

Problem is not reproduced on current master. Issue must be closed on 7.2.0.
Test case was added only

4 years ago0028478: Scope Names Are Swallowed in Message_ProgressSentry Constructors
abv [Fri, 18 Aug 2017 12:05:34 +0000 (15:05 +0300)]
0028478: Scope Names Are Swallowed in Message_ProgressSentry Constructors

Tests are added to control output and performance of progress indicator (bugs fclasses bug28478 and perf fclasses progress, respectively).

Implementation of class Draw_ProgressIndicator is improved to update indicator basing on achieved total progress (1% by default) instead of elapsed time since last update.

Method OSD_Chronometer::Restart() is fixed to actually reset the counter.

DRAW command readstl is improved to show progress indicator if configured (by command XProgress).

Description of class Message_ProgressIndicator is updated; code example is added in description of Message_ProgressSentry.

4 years ago0029004: DRAW - update help of chrono and dchrono commands
abv [Tue, 29 Aug 2017 03:59:28 +0000 (06:59 +0300)]
0029004: DRAW - update help of chrono and dchrono commands

Help of DRAW commands chrono and dchrono is updated according to changes made within #27691