Open CASCADE Technology 7.8.0 released

Forums: 

Open Cascade is delighted to announce the release of Open CASCADE Technology version 7.8.0 to the public.

Overview

Version 7.8.0 is a minor release, encompassing approximately 110 improvements and corrections over the previous minor release 7.7.0.

What's New in OCCT 7.8.0

General

  • Fixed TDataStd_NamedData HasSmth() methods to no longer return true for empty containers.
  • Improved general performance through code updates with static analysis.
  • Implemented "Memory Manager" configurations: Native, TBB, JeMalloc, Flexible. JeMalloc leads to a performance increase of up to 40% for large files.
  • Introduced CMake configuration for optimization profiles: Default and Production. Production activates all available compiler optimizations.
  • Implemented move semantics into NCollection and TCollection containers.
  • Modernized NCollection_Vector(NCollection_DynamicArray), NCollection_Array1, and NCollection_Array2.
  • Updated memory allocation functionality to avoid unnecessary memory cleaning (set 0).
  • Modernized NCollection_IncAllocator (optimized pool for small objects).

Modeling

  • Addressed multiple bug fixes and improvements for various modeling algorithm methods.
  • Increased memory management performance.
  • Improved overall modeling stability.
  • Resolved canonical geoplane detection problems.

Visualization

  • Resolved compilation issues related to vtk 9.2.6.
  • Improved SelectMgr_EntityOwner to process the selection scheme.
  • Modified Image_AlienPixMap::Save() to write into a memory buffer instead of a file.
  • Reduced sensitivity of lines.
  • Extended AIS_AnimationObject with syntax for defining rotation around a specific point.
  • Introduced separate gesture mappings for dragging to AIS_ViewController.
  • Integrated the ability to scale by moving the mouse on the OY axis.

Mesh

  • Fixed BRepMesh_IncrementalMesh issue with overflowing system memory.
  • Unhandled Standard_OutOfRange, BRepMesh_PairOfIndex::Append() no longer prevents triangulation with large deflection values.

Data Exchange

  • Resolved multiple issues regarding DE Wrapper and Step import and export.
  • Increased STEP parser performance.
  • Introduced thread-safety interface to STEP import and export.
  • Reorganized DE ToolKits according to specific CAD formats.
  • Introduced DE plug-in system to load CAD format providers during library loading time.
  • Fixed stability issues with XBF and IGES file formats.
  • Addressed general problems with importing VRML V1.
  • Improved processing of STEP-oriented dimensions.

Draw Test Harness

  • Enabled loading of plugins on Linux OS.
  • Reorganized DRAW DE ToolKits according to specific CAD formats.
  • Resolved environment-related issues with debug tools DrawTrSurf_Set, DrawTrSurf_SetPnt, and DrawTrSurf_SetPnt2d.

How to Upgrade

For details on upgrading to the new version, please refer to OCCT Upgrade Guide.

Prepared packages are available at the following link: Release V7_8_0 · Open-Cascade-SAS/OCCT (github.com)

Feel free to contact us for any additional information.

Mikhail Sazonov's picture

The documentation https://dev.opencascade.org/doc/overview/html/occt__upgrade.html refers to the old version 7.7.0.

Dmitrii Pasukhin's picture

Thank you. My apologies. The link will be updated when IT team will be avaliable (5.12.23). Additionally, vc140-vc143 and gcc (static/shared) packages will be attached to the release.

But now, please check prepared documentation locally: https://github.com/Open-Cascade-SAS/OCCT/releases/download/V7_8_0/docume...
___

Upd.: The link updated.

Best regards, Dmitrii.

Thierry Thomas's picture

Hello,
Unfortunately, compilation fails with clang-16:

FAILED: src/TKernel/CMakeFiles/TKernel.dir/__/Message/Message_AttributeMeter.cxx.o
/usr/bin/c++ -DHAVE_DRACO -DHAVE_FFMPEG -DHAVE_FREEIMAGE -DHAVE_FREETYPE -DHAVE_GLES2_EXT -DHAVE_OPENGL_EXT -DHAVE_RAPIDJSON -DHAVE_TBB -DHAVE_TK -DHAVE_VTK -DHAVE_XLIB -DOCC_CONVERT_SIGNALS -DTKernel_EXPORTS -DVTK_OPENGL2_BACKEND -I/usr/local/include/tcl8.6 -I/usr/local/include/tk8.6 -I/usr/local/include/freetype2 -I/usr/local/include/vtk-9.2 -I/usr/local/ffmpeg4/include -I/usr/local/include/draco -I/usr/ports/cad/opencascade/work/.build/usr/local/include/OpenCASCADE -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing -isystem /usr/local/include -fexceptions -fPIC -Wall -Wextra -Wshorten-64-to-32 -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing -isystem /usr/local/include -DNDEBUG -DNo_Exception -std=gnu++11 -fPIC -MD -MT src/TKernel/CMakeFiles/TKernel.dir/__/Message/Message_AttributeMeter.cxx.o -MF src/TKernel/CMakeFiles/TKernel.dir/__/Message/Message_AttributeMeter.cxx.o.d -o src/TKernel/CMakeFiles/TKernel.dir/__/Message/Message_AttributeMeter.cxx.o -c /usr/ports/cad/opencascade/work/OCCT-7_8_0/src/Message/Message_AttributeMeter.cxx
/usr/ports/cad/opencascade/work/OCCT-7_8_0/src/Message/Message_AttributeMeter.cxx:256:43: error: cannot pass object of non-trivial type 'const std::pair<double, double>' through variadic function; call will abort at runtime [-Wnon-pod-varargs]
2, anIterator.Value(), anIterator.Value())
^
/usr/ports/cad/opencascade/work/OCCT-7_8_0/src/Message/Message_AttributeMeter.cxx:256:63: error: cannot pass object of non-trivial type 'const std::pair<double, double>' through variadic function; call will abort at runtime [-Wnon-pod-varargs]
2, anIterator.Value(), anIterator.Value())
^
2 errors generated.

Dmitrii Pasukhin's picture

Hello. Interesting thing, yes it is a regression. For some reason there was no problem on a little older compiler.

We will update a branch today. My apologies. We move forward a branch and apply a tag into new version.

Best regards, Dmitrii.

Dmitrii Pasukhin's picture

Tempelary solution - CR33544.

We continue to investigate a problem with Clang16.

_

Upd: No more problems with Clang-16.

Best regards. Dmitrii.

Pawel's picture

Hello,

can you tag the version in git?

Thanks

Dmitrii Pasukhin's picture

GitHub is already have a tag.

Our main mantise will be tag during a current week.

Best regards, Dmitrii.

Pawel's picture

In fact, I only see a branch not a tag. But anyway, the code is there.

Thanks.

Kadir Canik's picture

genproj gives error;

PS C:\OpenCASCADE-7.8\OCCT_7_8_0> .\genproj.bat
Preparing to generate vc143 projects for wnt platform...
Collecting required header files into C:/OpenCASCADE-7.8/OCCT_7_8_0/inc ...
Generating VS project files for vc143
Error: Cannot determine type of unit FlexLexer, check adm/UDLIST!
while executing
"error "Error: Cannot determine type of unit $loc, check adm/UDLIST!" "
(procedure "osutils:tk:files" line 17)
invoked from within
"osutils:tk:files $tkloc [osutils:compilable $thePlatform] $theSrcDir"
(procedure "osutils:tk:cxxfiles" line 1)
invoked from within
"osutils:tk:cxxfiles $xlo wnt $theSrcDir"
(procedure "osutils:vcproj" line 64)
invoked from within
"osutils:vcproj $theVcVer $isUWP $theOutDir $aToolKit aGuidsMap $theSrcDir $theSourceDirOther"
(procedure "OS:vcproj" line 8)
invoked from within
"OS:vcproj $theVcVer $isUWP $aModule $theOutDir ::THE_GUIDS_LIST "src" """
(procedure "OS:MKVC" line 8)
invoked from within
"OS:MKVC $anOutDir $aModules $aTools $theSolution $theFormat $isUWP"
(procedure "OS:MKPRC" line 105)
invoked from within
"OS:MKPRC "$anAdmPath" "$theFormat" "$aLibType" "$aPlatform" "$aCmpl" "$aSolution""
(procedure "genproj" line 95)
invoked from within
"genproj vc143 wnt -solution OCCT"
("eval" body line 1)
invoked from within
"eval $cmdname [lrange $argv 1 end]"
(file "C:\OpenCASCADE-7.8\OCCT_7_8_0\adm/start.tcl" line 30)

Dmitrii Pasukhin's picture

Hello,

Thank you. As a temporary solution, please use CMake. It will have more options for optimisation and feautures.

Best regards, Dmitrii.

Dmitrii Pasukhin's picture

Problem fixed: please check CR33544_1. It will be a part of forwarded release branch

Best regards, Dmitrii.

Thierry Thomas's picture

Great! With the patches from https://git.dev.opencascade.org/gitweb/?p=occt.git;a=commitdiff;h=ffd7a3... it builds fine on FreeBSD / clang-16.

Best regards.

Dmitrii Pasukhin's picture

Branch CR0-780 was forwarded on that commit. Thank you for your research.

Best regards, Dmitrii.

Ykong1337's picture

The TopoDS_Shape::HashCode method is deleted, any other function get the shape hashcode?

Ignacio MO's picture
Dmitrii Pasukhin's picture

Hello, you are free to use

const size_t aHash = std::hash<TopoDS_Shape>{}(aShape);

Or TopTools_ShapeMapHasher{}(aShape);

The difference beetween TopTools_ShapeMapHasher and std::hash is depends on location.

TopTools_ShapeMapHasher used IsSame method of TopoDS_Shape

std::hash used IsEqual method (==) of TopoDS_Shape

Shing Liu's picture

Hello,
https://dev.opencascade.org/release
Update the Download latest release to Open CASCADE Technology 7.8.0?

Best Regards.

Dmitrii Pasukhin's picture

Hello,

Thank you. It is on updating stage. On this week this page will be updated. But we a little rework release delivery.

Best regards, Dmitrii.

Shing Liu's picture

Compile error with 7.8.0 VS2015:

inline size_t TopLoc_Location::HashCode() const
{
  // Hashing base on IsEqual function
  if (myItems.IsEmpty())
  {
    return 0;
  }
  size_t aHash = opencascade::MurmurHash::optimalSeed<size_t>();
  TopLoc_SListOfItemLocation items = myItems;
  size_t aCombined[3];
  while (items.More())
  {
    aCombined[0] = std::hash<Handle(TopLoc_Datum3D)>{}(items.Value().myDatum);
    aCombined[1] = opencascade::hash(items.Value().myPower);
    aCombined[2] = aHash;
    aHash = opencascade::hashBytes(aCombined, sizeof(aCombined));
    items.Next();
  }
  return aHash;
}

Error:

1>------ Build started: Project: TKTopAlgo, Configuration: Debug x64 ------
1>  BRepBuilderAPI_Sewing.cxx
1>C:\ocade\3rdparty\OpenCASCADE-7.8.0\opencascade-7.8.0\inc\TopLoc_Location.lxx(83): error C2672: 'opencascade::MurmurHash::optimalSeed': no matching overloaded function found
1>C:\ocade\3rdparty\OpenCASCADE-7.8.0\opencascade-7.8.0\inc\TopLoc_Location.lxx(83): error C2770: invalid explicit template argument(s) for 'std::enable_if<sizeof(T)!=,T>::type opencascade::MurmurHash::optimalSeed(void)'
1>  C:\ocade\3rdparty\OpenCASCADE-7.8.0\opencascade-7.8.0\inc\Standard_HashUtils.hxx(55): note: see declaration of 'opencascade::MurmurHash::optimalSeed'
1>C:\ocade\3rdparty\OpenCASCADE-7.8.0\opencascade-7.8.0\inc\TopLoc_Location.lxx(83): error C2770: invalid explicit template argument(s) for 'std::enable_if<sizeof(T)==,uint64_t>::type opencascade::MurmurHash::optimalSeed(void)'
1>  C:\ocade\3rdparty\OpenCASCADE-7.8.0\opencascade-7.8.0\inc\Standard_HashUtils.hxx(49): note: see declaration of 'opencascade::MurmurHash::optimalSeed'
Dmitrii Pasukhin's picture

Hello, the problem is known.

Please update your VS with last version. Working version is 14.0.25420.01 Update 3

It is internal bug of old compiler.

Best regards, Dmitrii.

Dmitrii Pasukhin's picture

We don't be able to reproduce the problem, but could you try to put the next line in this file?

#include <Standard_HashUtils.hxx>

Best regards, Dmitrii.

Dmitrii Pasukhin's picture

If it will not help, please let us know. We will create workaround for enable_if functionality.

In this case please send us a version of VS15 that are you using.

Best regards, Dmitrii.

Shing Liu's picture

Hello Dmitrii.

It does not help. Visual Studio Community 2015, Version 14.0.25431.01 Update 3:

I will try to update Visual Studio. Thanks.

Dmitrii Pasukhin's picture

Thank you. Looks like your version is higher.

I will try to reproduce. There are can be another way to declare templates. The solution, that we be able to introduce for you - only a  code patch(that will be a part of master branch later). 

Best regards, Dmitrii.

Dmitrii Pasukhin's picture

During the day the patch will be prepared. My apologies.

Dmitrii Pasukhin's picture

Hello, please check branch CR33553.

Ticket 0033553: Foundation Classes - HashUtils compilation problem - MantisBT (opencascade.org)

Best regards, Dmitrii.

Shing Liu's picture

Great!
Thanks.

Lemon Nation's picture

compilation fails in M1 Pro Mac , xcode 13.3 , macos 13.4

[ 60%] Linking CXX shared library ../../mac64/clang/lib/libTKViewerTest.dylib
ld: warning: option -s is obsolete and being ignored
Undefined symbols for architecture arm64:
"_ViewerTest_myViews", referenced from:
FindViewId(NSWindow const*) in ViewerTest_ViewerCommands_1.mm.o
-[Cocoa_WindowController windowWillClose:] in ViewerTest_ViewerCommands_1.mm.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [mac64/clang/lib/libTKViewerTest.7.8.0.dylib] Error 1
make[1]: *** [src/TKViewerTest/CMakeFiles/TKViewerTest.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 68%] Built target TKDEIGES
[ 97%] Built target TKDESTEP

Dmitrii Pasukhin's picture

But if you are not needed DRAW, you can disable -D BUILD_MODULE_Draw=OFF as a templeary solution. We will try to fix it.

Dmitrii Pasukhin's picture

Hello, thank you for sharing, but could you share log as a text file?

Best regards,  Dmitrii.

Lemon Nation's picture

ok

Attachments: 
Dmitrii Pasukhin's picture

I mean a more logs (this doesn't conains necessary information)

Dmitrii Pasukhin's picture

Oh, I see the problem with Cocoa_Window

Did you be able to build the 7.7.0? The problem only with 7.8? If it is new problem, need more logs.

Lemon Nation's picture

this all the build logs, i can build 7.7.1 and 7.7.2, not test 7.7.0

Attachments: 
Dmitrii Pasukhin's picture

Hello, the problem is found. My apologyes. The problem in no-name namespace for static global variable, that can't be extern in this case.

The fix will be during the day.

Dmitrii Pasukhin's picture
Lemon Nation's picture

Thanks.

w d's picture

Hello everyone, please ask. I updated the local 7.6.0 source code to 7.8.0, and then compiled it, but the error shown in the picture appeared. I don't know what the reason is. Note: I compiled with android studio. The relevant marks in the diagram indicate the compilation tools used and the location of the error.

Attachments: 
Dmitrii Pasukhin's picture

Hello, it is know problem of some compilers(not defined standard specialization for std::hash for enumiration)

Fix available in the last WeekBranch (OCCT Git - occt.git/shortlog (opencascade.org))

IR-2023-12-15

Snapshot to dowload source: https://git.dev.opencascade.org/gitweb/?p=occt.git;a=snapshot;h=83bb2a32...

original issue: 0033554: Foundation Classes - Missed hash specialization for enumerations - MantisBT (opencascade.org)

Best regards, Dmitrii.

w d's picture

Thank you very much. After updating the local code to the latest submitted code, I can compile and generate a new library file.

bioan m's picture

Hello!
How to compile the new version 7.8, taking into account that I already have version 7.7 installed on my computer (Windows 11) using Windows installer VC++ 2017 64 bit: opencascade-7.7.0-vc14-64.exe?
Should this version be uninstalled and/or should we wait for a similar version like opencascade-7.8.0-vc14-64.exe?
Please indicate basic steps to upgrade to this new version for this update, I am quite inexperienced in using CMake .
Thank you very much!

Dmitrii Pasukhin's picture

Hello, exe files will not provided. We moved to package delivery. Look: OCCT 7.8 Release Candidate: Updated Maintenance Workflow - Forum Open Cascade Technology

We have some delay with preparing packages, (thet will be avaliavle from the Dowload page later) but now you can dowload occt-vc143-64 and 3rdparty-vc14-64

https://github.com/Open-Cascade-SAS/OCCT/releases/download/V7_8_0/3rdpar...

https://github.com/Open-Cascade-SAS/OCCT/releases/download/V7_8_0/occt-v...

Another files to dowload: Release V7_8_0 · Open-Cascade-SAS/OCCT (github.com)

To start DRAWEXE you need to have the next file structure:

rootFolder
  ├───occt-vc143-64
  ├───3rdparty-vc14-64

Best regards, Dmitrii.

Manuel Apeltauer's picture

Dear all, after compiling OCC 7.8 (with no errors) i want to replace OCC7.5 with OCC7.8 in my project. But i am getting a linking problem with the functions Standard_Transient::IncrementRefCounter and others because they are not exported anymore. See the source code "..\OCCT-7_8_0\src\Standard\Standard_Transient.hxx" line 96.
I have exported the functions again and try to run my project again.(Still have to run the first tests...)
Any suggestions or ideas what this code modification can break at run time?
I could not find any reasonable description why the export was removed at those positions. Any description for me?

BR Manuel

Dmitrii Pasukhin's picture

The method moved to the inline method. These changes shouldn't create any issues.

Please, check that you don't use the old OCCT version (header files). Perform a clean solution and fully rebuild (your solution). The possible reason is caching old linker connections.

If you know the possible problems after moving from "Export" to "inline", please let me know. but the necessary header already is defined in hxx, no more reason to separate functionality.

Best regards, Dmitrii.

Manuel Apeltauer's picture

Hi Dmitrii,

thanks for your reply. Both methods just working well. After a complete newly build also the linking error is gone.
Thanks....

Dzmitry Razmyslovich's picture

Hi, Dmitrii,

do you know, when the binaries of additional components will be released for 7.8.0? It is already almost 1,5 month since the release of OCCT7.8.0, but still no build for the additional components...

It is hard productively to upgrade to the latest OCCT if the components are missing.

Regards,
Dzmitry

Dmitrii Pasukhin's picture

Hi, additional component is "our commercial"? They are updated, and delivering on request. "Kernel" will be updated soon (in this month).

Best regards, Dmitrii.

Dzmitry Razmyslovich's picture

Ok, strange. We requested an updated ExpressMesh component already on 13th of December and till today, it was neither delivered nor we received any response on our numerous emails (we newly tried to request it on 5th and 11the of January)...

Dmitrii Pasukhin's picture

We sent you a clarification about necessary platform and compiler. Please check you mail. My apologies for the inconvenience

Best regards, Dmitrii.

Dmitrii Pasukhin's picture

Dear OCCT community,

If you encounter any doubts or encounter problems with the OCCT 7.8 release, please feel free to create a new topic or leave a comment on the current topic. Your input is invaluable in helping us address any issues and improve the OCCT experience for all users.

Best regards, OpenCascade Team