Description of building OCCT with WOK and automake scripts is removed from documentation.
Use of genproj utility is described in pages on building with MSVC, Code::Blocks, and XCode projects.
New script genconf allows starting configuration GUI explicitly; dialog is slightly revised.
Script genproj.sh is renamed to genproj; permissions for scripts are corrected for Linux.
Script env.bat does not set anymore environment required for Products.
duv [Mon, 29 Feb 2016 14:11:34 +0000 (17:11 +0300)]
0026571: Visualization, TKOpenGl - write depth values within RayTracing program
View-projection matrix was added to raytrace shaders (as uniform) in order to compute correct depth values for OpenGL.
For path tracing the additional depth buffer sampler was added to Display.fs program. It allows propagation of depth values from internal FBO to resulting FBO.
The old approach of mixing of OpenGL and ray-tracing graphics was kept in order to keep correct blending of transparent ray-traced objects with non-transparent OpenGL objects.
ysn [Thu, 3 Mar 2016 10:33:48 +0000 (13:33 +0300)]
0027216: Review the documentation before the final release.
Some pre-release updates, reviewing and implementation of some adequate remarks from JMA:
- redundant chapters in IGES and STEP guides
- proofreading of recent insertions in Draw, and tests guides
- mathjax information
- data, version, addresses, system requirements in overview.md
kgv [Sat, 27 Feb 2016 23:07:27 +0000 (02:07 +0300)]
0027197: Configuration - fix compilation issues when using mingw
AIS_ColorScale, AIS_Dimension - the protected method DrawText()
has been renamed to drawText() to avoid name collisions with macros.
_MSC_VER/_WIN32 misuse has been fixed in several places.
Header <malloc.h> is now included where alloca() is used.
Draw_Window - dllimport flag has been dropped from inline methods.
TKernel - mandatory dependencies Winspool.lib and Psapi.lib
are now linked explicitly (instead of msvc-specific pragma syntax).
CMake scripts - the option -std=c++0x has been replaced by -std=gnu++0x
for mingw to allow extensions (like _wfopen() and others).
The minimum Windows version has been set to _WIN32_WINNT=0x0501.
Invalid options "-z defs" and "-lm" have been dropped for mingw.
Flag --export-all-symbols has been added to CMAKE_SHARED_LINKER_FLAGS
to workaround missing vtable symbols when using mingw.
FreeType is now linked explicitly on Windows.
Draw::Load() - "lib" suffix is now prepended on mingw as well.
Drop redundant declaration of _TINT from OSD_WNT_1.hxx.
NCollection_UtfString::FromLocale() - platform-specific code has been moved to .cxx file.
Draw_BasicCommands - fixed incorrect mingw64 version macros.
genproj, cbp - added workaround for process argument list limits on Windows.
TKSTEP linkage is failing on this platform due to too long list of files.
The list of object files to link is now stored in dedicated file which is passed to gcc.
Option "-z defs" removed from CMake linker options to avoid problems when building with different configurations of VTK on Linux
Some MinGW-specific compiler warnings (potentially uninitialized vars, use of NULL, parentheses in conditional expressions) are fixed (speculatively)
vpa [Wed, 2 Mar 2016 17:27:42 +0000 (20:27 +0300)]
0027180: Visualization - improve selection logic of MeshVS_Mesh
MeshVS_Mesh selection logic in MeshVS_SMF_Mesh mode (entire mesh) has been optimized.
MeshVS_Mesh::ComputeSelection() now creates single sensitive entity
MeshVS_CommonSensitiveEntity (new class) instead of small sensitive entity on each element.
MeshVS_SensitiveQuad (new class) and Select3D_SensitiveTriangle are used instead of Select3D_SensitiveFace for local selection to reduce memory consumption when possible.
kgv [Sat, 20 Feb 2016 10:10:41 +0000 (13:10 +0300)]
0026969: Visualization - support custom vertex attributes in GLSL program
Graphic3d_TypeOfData - added Graphic3d_TOD_FLOAT for passing single-float vertex attributes.
Graphic3d_TOA_CUSTOM - changed value to increase the range for custom vertex attributes locations (to fit into hardware limits).
Graphic3d_ShaderProgram::SetVertexAttributes() - introduced API for defining custom vertex attributes.
For compatibility with automated wrappers:
- Graphic3d_Buffer::Init() - added prototype taking NCollection_Array1<Graphic3d_Attribute> instead of C array
- Graphic3d_IndexBuffer::InitInt32() - added typed initialization method.
- Graphic3d_ShaderProgram::PushVariableVec3() and others - added typed methods to push uniform varibales.
apn [Wed, 17 Feb 2016 12:59:12 +0000 (15:59 +0300)]
0027152: Undefined symbols in library TKernel.so using clang compiler
Added ldl dependency for TKernel only (other toolkits were checked, no undefined symbols)
Added option "-z defs" for linking on Linux
Added lm dependency for all toolkits
abv [Mon, 25 Jan 2016 07:14:20 +0000 (10:14 +0300)]
0027104: DownCast() cannot return null for mismatched handle
Method DownCast() is made template, to be available only when argument is actually a pointer or handle to a base class.
For compatibility with existing code, method DownCast() that can be used for the same type, derived, or unrelated class (i.e. where there is no actual down casting) is still available, its use shall cause "deprecated" compiler warning.
OCCT code is updated to remove meaningless DownCast()s; a few places where DownCast() was used with argument of unrelated type are corrected.
DRAW command QAHandleCast is removed (it was useful only during redesign of handles).
abv [Sat, 6 Feb 2016 12:26:26 +0000 (15:26 +0300)]
0027111: Add generalized copy constructor in handle class for old compilers
Copy constructor and assignment operator from handle of derived type is added in handle class.
They are enabled only if macro OCC_HANDLE_NOCASTS is defined, and operators of cast of handle to reference to handle to base type are disabled in that case.
Useless type casts to handle to base type are removed in GC and GCE2d classes.
Code returning reference to handle from function is corrected to return it either by value or as reference to handle of actual type.
abv [Wed, 17 Feb 2016 14:33:18 +0000 (17:33 +0300)]
0026377: Passing Handle objects as arguments to functions as non-const reference to base type is dangerous
Operator of cast to non-const reference is declared deprecated to produce compiler warning if used (usually implicitly).
OCCT code is updated to avoid that cast, occurring when function accepting non-const reference to handle is called with handle to derived type.
For that, local variable of argument type is passed instead, and down-cast is used to get it to desired type after the call.
A few occurrences of use of uninitialized variable are corrected.
kgv [Sat, 30 Jan 2016 12:51:35 +0000 (15:51 +0300)]
0027118: Configuration - do not suppress deprecation warnings when using msvc
Patch removes option -wd4996 from VS project settings (which suppresses old deprecation warnings).
Instead, macros _CRT_SECURE_NO_WARNINGS (suppresses 444 warnings) and _CRT_NONSTDC_NO_DEPRECATE (suppresses 17 warnings) have been added.
Deprecation warning on GetVersionEx() has been suppressed locally in OSD_Host.cxx.
In STEPConstruct_AP203Context.cxx, OSD_Host is used instead of low-level system functions.
This eliminates dependency of TKSTEP on winsock32.lib on Windows.
kgv [Sat, 30 Jan 2016 11:54:12 +0000 (14:54 +0300)]
0027113: Coding - add macros Standard_DEPRECATED for marking deprecated functionality
Macro Standard_DEPRECATED("message") can be used in declarations to mark a method deprecated and generate compiler warning when it is used.
If OCCT_NO_DEPRECATED is defined, Standard_DEPRECATED is disabled (defined empty).
abv [Sun, 14 Feb 2016 08:16:24 +0000 (11:16 +0300)]
0027107: ShapeAnalysis_Surface should use GeomAdaptor_Surface for surface evaluation
ShapeAnalysis_Surface is improved to use adaptor for evaluation of points on a surface.
Useless field myExtSur is removed.
DE tests are amended according to induced changes (number of edges varied).
abv [Sun, 14 Feb 2016 04:33:18 +0000 (07:33 +0300)]
0026941: Building on Windows with VC14 - debug info is generated for Release build
Generation of debug info is explicitly disabled on link step in templates of Visual Studio 10+ project files used by genproj, to avoid relying on default settings of Visual Studio.
kgv [Fri, 22 Jan 2016 12:55:55 +0000 (15:55 +0300)]
0026939: Configuration, NCollection_UBTreeFiller - do not use _REENTRANT in a header file
Use std::mt19937 random number generator instead of rand() in NCollection_UBTreeFiller.
boolean gdml_private ZI7 ZJ7 - TODO "bopcheck failed" is only for Linux now, checkshape faulty is unstable (issue #27052)
boolean volumemaker B6 - Added TODO (bopcheck and checkshape faulties)
boolean volumemaker C9 - Added TODO (checkprops and checkshape faulties)
boolean volumemaker D2 - Added TODO (checkshape faulty)
boolean volumemaker H4 - Added TODO (checkprops and checkshape faulties Linux only)
boolean volumemaker D5 - IMVPROVEMENT, TODOs were deleted (bopcheck and checkshape faulties)
bugs modalg_1 buc60462_2 - modified TODOs according to new behavior
boolean gdml_private ZI7 ZJ7 - unstable case, added check for surface area and TODO
samples/tcl/ANC101.tcl - amended due to changed order of edges in BOP result
abv [Sun, 24 Jan 2016 06:28:08 +0000 (09:28 +0300)]
0027053: Compilation fails with "fatal error RC1103: invalid option, /fp:precise"
CMake script is corrected to add compiler options (except macro definitions) to CMAKE_CXX_FLAGS and CMAKE_C_FLAGS variables directly, instead of using add_definitions() command.
This eliminates failure of build by NMake due to incorrect options passed to RC compiler.
ssv [Mon, 8 Feb 2016 07:43:54 +0000 (10:43 +0300)]
0026260: Tcl scripts for MBB Gehause Rohteil and ANC101 to be added to Samples
Two new sample scripts added, modeling classic shapes from used for comparing modeling systems in 1979 and again in 1983 by Computer Aided Manufacturing International (CAM-I).
oan [Mon, 1 Feb 2016 14:20:37 +0000 (17:20 +0300)]
0027119: Regression: Draw command "incmesh" hangs on the attacheced face.
BRepMesh_CircleTool: extend radius of circle by quite small value in order to classify points forming inscribed triangle as lying on it. Do not use PConfusion due to false positive result leading algorithm to hanging.
Small correction in test cases bugs/mesh/bug27119
Update of test cases according to the new behavior:
bugs/moddata_1/bug22759
mesh/data/standard/M4
jgv [Thu, 4 Feb 2016 10:35:52 +0000 (13:35 +0300)]
0027065: BRepOffsetAPI_MakePipe misses definition of virtual method Generated()
Virtual method Generated() inherited from BRepPrimAPI_MakeSweep is overridden in class BRepOffsetAPI_MakePipe, providing information on shapes generated from the profile.
nbv [Mon, 8 Feb 2016 07:01:22 +0000 (10:01 +0300)]
0026980: Intersection algorithm spends much system time and system memory
1. Step of Walking-line has been increased as possible and now computes by iteratively adaptive algorithm (every iteration checks if current step is too big/small and decreases/increases one).
2. Interface of IntWalk_PWalking class has been changed
2.1. Method MaxStep() has been added in order to know about maximal distance between 2D-points.
2.2. Method ComputePasInit(...) has been added in order to initial step value computation.
2.3. Fields myTolTang (tolerance for intersection algorithm) and myStepMin (minimal step value) have been added.
Correction of some test cases.
Creation test case for this issue.
Changes to eliminate compiler warnings.
aml [Fri, 29 Jan 2016 06:11:46 +0000 (09:11 +0300)]
0027114: [Regression to 6.7] DistShapeShape does not find a solution edge-face
Extrema Curve / Surface algorithm changed to perform more accurate search.
test case bug25232_8 - improvement, one additional intersection point is detected now.
test case bug23830 - normal behavior, position of extrema is changed.
ifv [Tue, 10 Dec 2013 11:40:40 +0000 (15:40 +0400)]
0027063: BRepGProps raises exception on edge with no curves
Method BRepGProp::LinearProperties() is corrected to treat not geometric edges (their length is zero). To avoid wrong working of command nexplode global properties are calculated as point properties of vertexes. Small value Epsilon(1.) is used as density of points. This prevents exception on shapes that contain such edges, e.g. copy of a wire containing degenerated edge.
Method BRep_Tool::IsGeometric() is optimized to avoid nested iteration for check of 3D curve for Null.
Small bug is fixed in GProp_PGProps.cxx
ifv [Tue, 26 Jan 2016 13:56:23 +0000 (16:56 +0300)]
0027110: Regression: Draw command "parameters" can not compute parameter on the line.
Useless variable MAXTOLERANCEGEOM is removed in order to allow to place point at any distance from curve/surface.
Algorithm is simplified: particular calculations for analytical geometry are removed, only using of Extrema_... is kept.
apn [Fri, 22 Jan 2016 12:59:10 +0000 (15:59 +0300)]
0027094: Create command checkdump for parsing dumps (geometry test group)
checkdump - procedure to parse output dump and compare it with reference values;
checklength - procedure to compute length of input shape.
Added procedures and modified test group geometry.
azv [Thu, 21 Jan 2016 08:35:24 +0000 (11:35 +0300)]
0027048: BSpline cache is always wrong outside of surface
1. Disable recalculation of B-spline cache when the parameter is out of surface boundary but near the cached span.
2. Rebuild cache each time a curve/surface is loaded into adaptor (B-spline knots may be re-parametrized outside adaptor without changing base curve)
3. Test cases.
Conversion of gp_Quaternion to and from intrinsic Tait-Bryan angles (including gp_YawPitchRoll) is fixed.
Before that fix the sequence of rotation axes was opposite to intended; e.g. gp_YawPitchRoll (equivalent to gp_Intrinsic_ZYX) actually was defining intrinsic rotations around X, then Y, then Z.
Now this is fixed, and rotations are made in correct order.
Comments to gp_EulerSequence enumeration are restored (lost due to CDL extraction).
Test bugs fclasses bug25574 is added to check correctness of Euler sequences, including cases from #25574 and #25946.
ibs [Thu, 14 Jan 2016 16:17:00 +0000 (19:17 +0300)]
0027077: OCAF: Implementation of streaming save/load (OCC26229) is incomplete/incorrect
XmlOcaf reading is non-seekable
// 1. Read method of XmlLDrivers_DocumentRetrievalDriver extended to read complete document (with "document" tag) in compatible mode (when reading is performed from file)
// 2. the empty statement removed
// 3. the description of LDOMPARSER::parse method extended
- m-dashes added.
- some other cases of incorrect dash use fixed
- unicode dashes were removed throughout the documentation.
- other comments taken into account.
abv [Fri, 22 Jan 2016 08:42:32 +0000 (11:42 +0300)]
0027097: GCC and CLang compiler warnings and errors with -Wpedantic
Useless semicolons are removed after closing braces of namespaces and macros in code dependent on FreeImage and VTK.
Comments added at the closing braces of namespaces to help comprehension.
In OSD_File.cxx and OSD_Disk.cxx, unnecessary declarations of system functions are removed
1. The procedures for check of coincidence between Edge-Edge and Edge-Face have been added. These methods are used instead of searching interferences between corresponding sub-shapes. In most cases (including case for this issue), new methods are more reliable and faster than intersections. However, its use should be avoided in case when the edge is not coincide with edge/face of another argument evidently (e.g. if edge vertices are not in another edge/face).
2. Interface of both IntTools_EdgeFace and IntTools_EdgeEdge has been changed (adding/deleted some field and methods).
Some test cases have been corrected in accordance with their new behavior.
Test case for issue CR26132.
ika [Thu, 14 Jan 2016 12:46:25 +0000 (15:46 +0300)]
0027078: Exception in ShapeFixIntersectionTool::UnionVertexes()
Add checks to avoid exceptions.
Remove check for small 3D curve, now pcurve will be built for all small edges, which have not been removed by FixSmall.
abv [Thu, 7 Jan 2016 07:02:16 +0000 (10:02 +0300)]
0024836: Stack overflow when raising exception in low memory condition
Standard_OutOfMemory exception is refactored so as to avoid memory allocations (which will likely fail) when it is raised:
- method NewInstance() returns static instance (singleton)
- method Raise() raises copy of that singleton, resetting its message string
- message string is stored as field, not allocated dynamically (thus maximum message length is limited by buffer size)
Class Standard_Failure slightly revised: method Destroy() is merged to destructor, methods Get/SetMessageString() are made virtual.
isn [Wed, 13 Jan 2016 14:17:15 +0000 (17:17 +0300)]
0027045: firsthole & holend commands work incorrectly
firsthole / holend / hole commands have been corrected.
Now they work correctly on the planar faces
Also some commented code have been deleted
Temporary update for backward compatibility with WOK
msv [Mon, 28 Dec 2015 11:48:06 +0000 (14:48 +0300)]
0027032: [Regression to 6.9.1] Result of bcut has the same volume as the object
- Avoid reducing tolerance of the original edges in BOPAlgo_PaveFiller::CorrectToleranceOfSE
- If a boundary edge is considered coincident with a section curve then increase its tolerance more carefully, using real distance instead of extended reached tolerance.
- New test case bugs/modalg_6/bug27032
- Test cases boolean/gdml_private/E4-F3 have been amended to check area of the result.
- Puts TODO in test cases boolean gdml_private ZI5,ZI7,ZJ7.
ika [Thu, 3 Dec 2015 08:35:42 +0000 (11:35 +0300)]
0026931: [Regression in 6.9.0] Exporting a face throws an exception
Writing periodic BSpline surfaces to IGES:
Replace segmentation of surface to setting new origin.
Fix face bounds if its length (in U or V) is more than period.
Segmentation of BSpline curve/surface:
Throw exception if segment length more than period.
Fix test case bugs moddata_1 bug14782:
bounds of segmentation must be the same as curve bounds, according to issue description.
Changes in classes Geom2d_BSplineCurve, Geom_BSplineCurve, Geom_BSplineSurface:
- Replace *Raise_if macros with unconditional exceptions where it does not affect on performance.
- Update comments in .hxx files in regard of raised exceptions.