0031002: Documentation - update Overview for 7.4.0
authorkgv <kgv@opencascade.com>
Thu, 26 Sep 2019 10:44:03 +0000 (13:44 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 26 Sep 2019 14:01:58 +0000 (17:01 +0300)
Updated OCC logo.
Replaced some external links to https.
Added references to VS2019 support.
Added glTF, OBJ, IFC, JT into listing within appropriate sections.
Replaced dead URLs.

Fixed misleading information.

31 files changed:
dox/dev_guides/building/3rdparty/3rdparty_linux.md
dox/dev_guides/building/3rdparty/3rdparty_osx.md
dox/dev_guides/building/3rdparty/3rdparty_windows.md
dox/dev_guides/building/3rdparty/images/genconf_linux.png
dox/dev_guides/building/3rdparty/images/genconf_windows.png
dox/dev_guides/building/android/android.md
dox/dev_guides/building/building.md
dox/dev_guides/building/cmake/cmake.md
dox/dev_guides/building/msvc.md
dox/dev_guides/building/xcode.md
dox/dev_guides/contribution_workflow/contribution_workflow.md
dox/dev_guides/debug/debug.md
dox/dev_guides/documentation/documentation.md
dox/dev_guides/git_guide/git_guide.md
dox/dev_guides/tests/tests.md
dox/dev_guides/upgrade/upgrade.md
dox/overview/overview.md
dox/resources/occ_logo.png
dox/technical_overview/technical_overview.md
dox/tutorial/tutorial.md
dox/user_guides/foundation_classes/foundation_classes.md
dox/user_guides/iges/iges.md
dox/user_guides/modeling_algos/modeling_algos.md
dox/user_guides/modeling_data/modeling_data.md
dox/user_guides/ocaf/ocaf.md
dox/user_guides/shape_healing/shape_healing.md
dox/user_guides/step/step.md
dox/user_guides/visualization/visualization.md
dox/user_guides/xde/xde.md
src/DrawResources/DrawTK.tcl
src/DrawResources/OCC_logo.png

index 4139dea..8dcd8d8 100644 (file)
@@ -10,7 +10,7 @@ products used by Open CASCADE Technology and samples on Linux platform.
 
 The links for downloading the third-party products are available on the web site 
 of OPEN CASCADE SAS at 
-http://www.opencascade.com/content/3rd-party-components. 
+https://www.opencascade.com/content/3rd-party-components.
 
 There are two types of third-party products, which are  necessary to build OCCT: 
   
@@ -30,7 +30,7 @@ Tcl/Tk is required for DRAW test harness.
 
 @subsubsection dev_guides__building_3rdparty_linux_2_1_2 Installation from sources: Tcl
   
-Download the necessary archive from http://www.tcl.tk/software/tcltk/download.html and unpack it. 
+Download the necessary archive from https://www.tcl.tk/software/tcltk/download.html and unpack it.
   
 1. Enter the unix sub-directory of the directory where the Tcl source  files are located <i>(TCL_SRC_DIR)</i>. 
 
@@ -53,7 +53,7 @@ Download the necessary archive from http://www.tcl.tk/software/tcltk/download.ht
 
 @subsubsection dev_guides__building_3rdparty_linux_2_1_3 Installation from sources: Tk
   
-Download the necessary archive from http://www.tcl.tk/software/tcltk/download.html and unpack it. 
+Download the necessary archive from https://www.tcl.tk/software/tcltk/download.html and unpack it.
   
 1. Enter the unix sub-directory of the directory where the Tk source files are located <i>(TK_SRC_DIR)</i> 
 
@@ -78,7 +78,7 @@ Download the necessary archive from http://www.tcl.tk/software/tcltk/download.ht
 @subsection dev_guides__building_3rdparty_linux_2_2 FreeType
 
 FreeType is required for text display in the 3D viewer. 
-Download the necessary archive from http://sourceforge.net/projects/freetype/files/ and unpack it. 
+Download the necessary archive from https://sourceforge.net/projects/freetype/files/ and unpack it.
   
 1. Enter the directory where the source files of FreeType  are located <i>(FREETYPE_SRC_DIR)</i>. 
 
@@ -103,13 +103,13 @@ Download the necessary archive from http://sourceforge.net/projects/freetype/fil
     
 @subsection dev_guides__building_3rdparty_linux_3_1 TBB
 
-This third-party product is  installed with binaries from the archive that can be downloaded from http://threadingbuildingblocks.org. 
+This third-party product is  installed with binaries from the archive that can be downloaded from https://github.com/intel/tbb.
 Go to the **Download** page, find the  release version you need and pick the archive for Linux platform.
 To install, unpack the downloaded archive of TBB product.
 
 @subsection dev_guides__building_3rdparty_linux_3_3 FreeImage
 
-Download the necessary archive from http://sourceforge.net/projects/freeimage/files/Source%20Distribution/
+Download the necessary archive from https://sourceforge.net/projects/freeimage/files/Source%20Distribution/
 and unpack it. The directory with unpacked sources is  further referred to as *FREEIMAGE_SRC_DIR*. 
   
 1. Modify *FREEIMAGE_SRC_DIR/Source/OpenEXR/Imath/ImathMatrix.h*: 
@@ -174,11 +174,11 @@ and unpack it. The directory with unpacked sources is  further referred to as *F
 
 @subsection dev_guides__building_3rdparty_linux_3_4 VTK
 
-You can download VTK sources from http://www.vtk.org/VTK/resources/software.html
+You can download VTK sources from https://www.vtk.org/VTK/resources/software.html
 
 ### The building procedure:
 
-Download the necessary archive from http://www.vtk.org/VTK/resources/software.html and unpack it.
+Download the necessary archive from https://www.vtk.org/VTK/resources/software.html and unpack it.
 
 1. Install or build *cmake* product from the source file.
 2. Start *cmake* in GUI mode with the directory where the source files of *VTK* are located:
index 1b88822..d579043 100644 (file)
@@ -8,7 +8,7 @@ This document presents additional guidelines for building third-party products
 used by Open CASCADE Technology and samples on Mac OS X platform (10.6.4  and later). 
 
 The links for downloading the third-party products are available 
-on the web site of OPEN CASCADE SAS at http://www.opencascade.com/content/3rd-party-components. 
+on the web site of OPEN CASCADE SAS at https://www.opencascade.com/content/3rd-party-components.
 
 There are two types of third-party products, which are  necessary to build OCCT: 
   
@@ -27,7 +27,7 @@ Tcl/Tk is required for DRAW test harness. Version 8.5 or  8.6 can be used with O
 
 @subsubsection dev_guides__building_3rdparty_osx_2_1_2 Installation from sources: Tcl 8.5
 
-Download the necessary archive from http://www.tcl.tk/software/tcltk/download.html and unpack it. 
+Download the necessary archive from https://www.tcl.tk/software/tcltk/download.html and unpack it.
 
 1. Enter the *macosx* sub-directory of the directory where the Tcl source files are located <i>(TCL_SRC_DIR)</i>. 
 
@@ -50,7 +50,7 @@ Download the necessary archive from http://www.tcl.tk/software/tcltk/download.ht
 
 @subsubsection dev_guides__building_3rdparty_osx_2_1_3 Installation from sources: Tk 8.5
 
-Download the necessary archive from http://www.tcl.tk/software/tcltk/download.html and unpack it. 
+Download the necessary archive from https://www.tcl.tk/software/tcltk/download.html and unpack it.
 
 1. Enter the *macosx* sub-directory of the directory where the  source files of Tk are located <i>(TK_SRC_DIR)</i>. 
 
@@ -74,7 +74,7 @@ Download the necessary archive from http://www.tcl.tk/software/tcltk/download.ht
   
 FreeType is required for text display in the 3D viewer. 
 
-Download the necessary archive from http://sourceforge.net/projects/freetype/files/ and unpack it. 
+Download the necessary archive from https://sourceforge.net/projects/freetype/files/ and unpack it.
 
 1. Enter the directory where the source files of FreeType  are located <i>(FREETYPE_SRC_DIR)</i>. 
 
@@ -100,7 +100,7 @@ Download the necessary archive from http://sourceforge.net/projects/freetype/fil
 @subsection dev_guides__building_3rdparty_osx_3_1 TBB 3.x or 4.x
 
 This third-party product is installed with binaries from the archive 
-that can be downloaded from http://threadingbuildingblocks.org/. 
+that can be downloaded from https://github.com/intel/tbb.
 Go to the **Download** page, find the release version you need (e.g. *tbb30_018oss*) 
 and  pick the archive for Mac OS X platform. 
 To install, unpack the downloaded archive of TBB 3.0 product (*tbb30_018oss_osx.tgz*).
@@ -108,12 +108,12 @@ To install, unpack the downloaded archive of TBB 3.0 product (*tbb30_018oss_osx.
 @subsection dev_guides__building_3rdparty_osx_3_3 FreeImage 3.14.1 or 3.15.x
 
 Download the necessary archive from 
-http://sourceforge.net/projects/freeimage/files/Source%20Distribution/   
+https://sourceforge.net/projects/freeimage/files/Source%20Distribution/
 and unpack it. The directory with unpacked sources is  further referred to as *FREEIMAGE_SRC_DIR*.  
 
 Note that for building FreeImage on Mac OS X 10.7 you should replace *Makefile.osx* 
 in *FREEIMAGE_SRC_DIR* by the corrected file, which you can find in attachment to issue #22811 in OCCT Mantis bug tracker 
-(http://tracker.dev.opencascade.org/file_download.php?file_id=6937&type=bug). 
+(https://tracker.dev.opencascade.org/file_download.php?file_id=6937&type=bug).
 
 1. If you build FreeImage 3.15.x you can skip this  step. 
    Modify <i>FREEIMAGE_SRC_DIR/Source/OpenEXR/Imath/ImathMatrix.h:</i> 
index a707b7d..ffa6c1c 100644 (file)
@@ -8,7 +8,7 @@ This document presents guidelines for building third-party products used by Open
 
 You need to use the same version of MS Visual Studio for building all third-party products and OCCT itself, in order to receive a consistent set of run-time binaries. 
 
-The links for downloading the third-party products are available on the web site of OPEN CASCADE SAS at http://www.opencascade.com/content/3rd-party-components.
+The links for downloading the third-party products are available on the web site of OPEN CASCADE SAS at https://www.opencascade.com/content/3rd-party-components.
 
 There are two types of third-party products used  by OCCT: 
 
@@ -32,7 +32,7 @@ Tcl/Tk is required for DRAW test harness.
 
 @subsubsection dev_guides__building_3rdparty_win_2_1_1 Installation from sources: Tcl
   
-Download the necessary archive from http://www.tcl.tk/software/tcltk/download.html and unpack it. 
+Download the necessary archive from https://www.tcl.tk/software/tcltk/download.html and unpack it.
   
 1. In the *win* sub-directory, edit file *buildall.vc.bat*:
 
@@ -85,7 +85,7 @@ Download the necessary archive from http://www.tcl.tk/software/tcltk/download.ht
 
 @subsubsection dev_guides__building_3rdparty_win_2_1_2 Installation from sources: Tk
   
-Download the necessary archive from http://www.tcl.tk/software/tcltk/download.html and unpack it. 
+Download the necessary archive from https://www.tcl.tk/software/tcltk/download.html and unpack it.
 
 Apply the same steps as described for building Tcl above, with the same INSTALLDIR.
 Note that Tk produces its own executable, called *wish*. 
@@ -94,7 +94,7 @@ You might need to edit default value of *TCLDIR* variable defined in *buildall.v
 
 @subsection dev_guides__building_3rdparty_win_2_2 FreeType
 
-FreeType is required for text display in a 3D viewer. You can download its sources from http://sourceforge.net/projects/freetype/files/   
+FreeType is required for text display in a 3D viewer. You can download its sources from https://sourceforge.net/projects/freetype/files/
 
 ### The building procedure
 
@@ -148,7 +148,7 @@ FreeType is required for text display in a 3D viewer. You can download its sourc
 @subsection dev_guides__building_3rdparty_win_3_1 TBB
 
 This third-party product is installed with binaries 
-from the archive that can be downloaded from http://threadingbuildingblocks.org/. 
+from the archive that can be downloaded from https://github.com/intel/tbb.
 Go to the **Download** page, find the  release version you need  (e.g. *tbb30_018oss*) and pick the archive for Windows  platform. 
 
 Unpack the downloaded  archive of TBB product into the *3rdparty* folder. 
@@ -159,7 +159,7 @@ Further in this document,  this folder is referred to as *tbb*.
 
 This third-party product should be built as a dynamically loadable library (.dll file). 
 You can download its sources from 
-http://sourceforge.net/projects/freeimage/files/Source%20Distribution/
+https://sourceforge.net/projects/freeimage/files/Source%20Distribution/
 
 ### The building procedure: 
 
@@ -232,7 +232,7 @@ VTK is an open-source, freely available software system for 3D computer graphics
 
 ### The building procedure:
 
-1. Download the necessary archive from http://www.vtk.org/VTK/resources/software.html and unpack it into *3rdparty* folder.
+1. Download the necessary archive from https://www.vtk.org/VTK/resources/software.html and unpack it into *3rdparty* folder.
 
    As a result, you will get a folder named, for example, <i>3rdparty\VTK-6.1.0.</i>
 
index 9125c47..85489b4 100644 (file)
Binary files a/dox/dev_guides/building/3rdparty/images/genconf_linux.png and b/dox/dev_guides/building/3rdparty/images/genconf_linux.png differ
index df723a7..ab815a0 100644 (file)
Binary files a/dox/dev_guides/building/3rdparty/images/genconf_windows.png and b/dox/dev_guides/building/3rdparty/images/genconf_windows.png differ
index cde0363..b74aedc 100644 (file)
@@ -10,9 +10,9 @@ The steps on Windows and Ubuntu are similar. There is the only one difference: m
 on Windows and native GNU make on Ubuntu.
 
 Required tools (download and install if it is required):
-  - CMake v3.7+ http://www.cmake.org/cmake/resources/software.html
+  - CMake v3.7+ https://www.cmake.org/cmake/resources/software.html
   - Android NDK rev.10+ https://developer.android.com/tools/sdk/ndk/index.html
-  - GNU Make: MinGW v4.82+ for Windows (http://sourceforge.net/projects/mingw/files/), GNU Make 4.0 for Ubuntu. 
+  - GNU Make: MinGW v4.82+ for Windows (https://sourceforge.net/projects/mingw/files/), GNU Make 4.0 for Ubuntu.
 
 ## Prerequisites
 
index cd4d669..5e58ca2 100644 (file)
@@ -6,7 +6,7 @@ The list of required libraries depends on what OCCT modules will be used, and yo
 The typical minimum is **Freetype** (necessary for Visualization) and **Tcl/Tk** (for DRAW Test Harness).
 See "Third-party libraries" section in \ref OCCT_OVW_SECTION_5 "Overview" for a full list.
 
-On Windows, the easiest way to install third-party libraries is to download archive with pre-built binaries from http://www.opencascade.com/content/3rd-party-components.
+On Windows, the easiest way to install third-party libraries is to download archive with pre-built binaries from https://www.opencascade.com/content/3rd-party-components.
 On Linux and OS X, it is recommended to use the version installed in the system natively.
 
 You can also build third-party libraries from their sources:
index b230a01..95e66be 100644 (file)
@@ -82,6 +82,7 @@ The following table gives the full list of environment variables used at the con
 |----------|------|---------|
 | CMAKE_BUILD_TYPE | String | Specifies the build type on single-configuration generators (such as make).  Possible values are Debug, Release and RelWithDebInfo |
 | USE_FREEIMAGE | Boolean flag | Indicates whether FreeImage product should be used in OCCT visualization module for support of popular graphics image formats (PNG, BMP, etc.) |
+| USE_RAPIDJSON | Boolean flag | Indicates whether RapidJSON product should be used in OCCT Data Exchange module for support of glTF mesh file format |
 | USE_TBB | Boolean flag | Indicates whether TBB 3rd party is used or not. TBB stands for Threading Building Blocks, the technology of Intel Corp, which comes with different mechanisms and patterns for injecting parallelism into your application. OCCT remains parallel even without TBB product |
 | USE_VTK | Boolean flag | Indicates whether VTK 3rd party is used or not. VTK stands for Visualization ToolKit, the technology of Kitware Inc intended for general-purpose scientific visualization. OCCT comes with a bridge between CAD data representation and VTK by means of its dedicated VIS component (VTK Integration Services). You may skip this 3rd party unless you are planning to use VTK visualization for OCCT geometry. See the official documentation @ref occt_user_guides__vis for the details on VIS |
 | 3RDPARTY_DIR | Path | Defines the root directory where all required 3rd party products will be searched. Once you define this path it is very convenient to click "Configure" button in order to let CMake automatically detect all necessary products|
index 397d259..b7838bc 100644 (file)
@@ -18,7 +18,7 @@ If you have official distribution with project files included, you can use them
 
 Before building OCCT, make sure to have all the required third-party libraries installed.
 
-The easiest way to install third-party libraries is to download archive with pre-built binaries, corresponding to version of Visual Studio you are using, from http://www.opencascade.com/content/3rd-party-components.
+The easiest way to install third-party libraries is to download archive with pre-built binaries, corresponding to version of Visual Studio you are using, from https://www.opencascade.com/content/3rd-party-components.
 
 You can also build third-party libraries from their sources, see @ref occt_dev_guides__building_3rdparty_windows for instructions.
 
@@ -37,6 +37,8 @@ If you have Visual Studio projects already available (pre-installed or generated
 | vc14-uwp  | 2015 (14)             | UWP (Universal Windows Platform) | vc14-uwp |
 | vc141     | 2017 (15)             | Desktop (Windows API)            | vc14 |
 | vc141-uwp | 2017 (15)             | UWP (Universal Windows Platform) | vc14-uwp |
+| vc142     | 2019 (16)             | Desktop (Windows API)            | vc14 |
+| vc142-uwp | 2019 (16)             | UWP (Universal Windows Platform) | vc14-uwp |
 
 * *ARCH* -- architecture (32 or 64), affects only *PATH* variable for execution
 * <i>HAVE_*</i> -- flags to enable or disable use of optional third-party products
index ecac498..c56e7bb 100644 (file)
@@ -82,7 +82,7 @@ To start *DRAWEXE*, which has been built with Xcode on Mac OS X, perform the fol
 
 3.Run the script
 ~~~~~
-   ./draw_cbp.sh xcd [d]
+   ./draw.sh xcd [d]
 ~~~~~
 
 Option *d* is used if OCCT has been built in **Debug** mode.
index 0cb0be1..0344056 100644 (file)
@@ -10,7 +10,7 @@ The purpose of this document is to describe standard workflow for processing con
 
 Each contribution should have corresponding issue (bug, or feature, or integration request) 
 registered in the MantisBT issue tracker system accessible by URL 
-http://tracker.dev.opencascade.org. 
+https://tracker.dev.opencascade.org.
 The issue is processed according to the described workflow.
 
 @subsection occt_contribution_intro_access Access levels
index ba6e576..8433e2d 100644 (file)
@@ -198,7 +198,7 @@ Json output for Bnd_OBB (using command 'bounding v -obb -dumpJson'):
 
 @subsection occt_debug_vstudio_command Command window 
 
-Visual Studio debugger provides the Command Window (can be activated from menu <b>View / Other Windows / Command Window</b>), which can be used to evaluate variables and expressions interactively in a debug session (see http://msdn.microsoft.com/en-us/library/c785s0kz.aspx). Note that the Immediate Window can also be used but it has some limitations, e.g. does not support aliases.
+Visual Studio debugger provides the Command Window (can be activated from menu <b>View / Other Windows / Command Window</b>), which can be used to evaluate variables and expressions interactively in a debug session (see https://msdn.microsoft.com/en-us/library/c785s0kz.aspx). Note that the Immediate Window can also be used but it has some limitations, e.g. does not support aliases.
 
 When the execution is interrupted by a breakpoint, you can use this window to call the above described functions in context of the currently debugged function. Note that in most cases you will need to specify explicitly context of the function by indicating the name of the DLL where it is defined.
 
index fb8af80..27e5498 100644 (file)
@@ -12,15 +12,15 @@ This document provides practical guidelines for generation and editing of OCCT u
 You need to have the following software installed to generate the documentation.
 
 **Tcl/Tk**
-Version 8.5 or 8.6: http://www.tcl.tk/software/tcltk/download.html
+Version 8.5 or 8.6: https://www.tcl.tk/software/tcltk/download.html
 
 **Doxygen**
-Version 1.8.4 or above: http://www.stack.nl/~dimitri/doxygen/download.html
+Version 1.8.4 or above: http://www.doxygen.nl/download.html
 
 **Dot**
-Part of Graphviz software, used by Doxygen for generation of class diagrams in Reference Manual: http://www.graphviz.org/Download..php
+Part of Graphviz software, used by Doxygen for generation of class diagrams in Reference Manual: https://www.graphviz.org/download/
 
-**MiKTeX** or other package providing **pdflatex** command (only needed for generation of PDF documents): http://miktex.org/download
+**MiKTeX** or other package providing **pdflatex** command (only needed for generation of PDF documents): https://miktex.org/download
 
 **Inkscape** (only needed for generation of PDF documents containing SVG images): http://www.inkscape.org/download
 
index 4f9fa7a..2a3fe68 100644 (file)
@@ -12,7 +12,7 @@ Guide to installing and using Git for OCCT development {#occt_dev_guides__git_gu
   and to facilitate the use of the official OCCT Git repository for code contribution to OCCT.
 
   It can be useful to learn more about Git concepts and tools from a book a or manual. 
-  Many good books on Git can be found at http://git-scm.com/documentation 
+  Many good books on Git can be found at https://git-scm.com/documentation
   
   For the experienced Git users it can be enough to read sections 1 and 3
    of this document to start working with the repository.
@@ -21,7 +21,7 @@ Guide to installing and using Git for OCCT development {#occt_dev_guides__git_gu
   that describes how Git is used for processing contributions to OCCT.
   
   This and related documents are available at the Resources page 
-  of the OCCT development portal at http://dev.opencascade.org/index.php?q=home/resources. 
+  of the OCCT development portal at https://dev.opencascade.org/index.php?q=home/resources.
 
 @subsection occt_gitguide_1_2 Git URL
 
@@ -113,7 +113,7 @@ The official repository contains:
 
 @subsubsection occt_gitguide_2_1_2 Installation and configuration of TortoiseGit
 
-  Download TortoiseGit distributive from http://code.google.com/p/tortoisegit/downloads/list. 
+  Download TortoiseGit distributive from https://tortoisegit.org/download/.
   Launch the installation.
 
  * Select your SSH client. Choose option 
@@ -238,7 +238,7 @@ The official repository contains:
 
 @subsection occt_gitguide_3_3 Adding public key in your account
 
-Log in on the portal http://dev.opencascade.org and click on **My account** link to the right. If you have a Contributor status, you will see **SSH keys** tab to the right. 
+Log in on the portal https://dev.opencascade.org and click on **My account** link to the right. If you have a Contributor status, you will see **SSH keys** tab to the right.
 
 Click on that tab, then click **Add a public key**, and paste the text of the public key (see above sections on how to generate the key) into the text box. 
 
@@ -496,7 +496,7 @@ To rebase your branch into a single commit, you need to do the following:
 
   The changes made in the branch can be reviewed without direct access to Git, using GitWeb interface:
 
-  * Open GitWeb in your web browser: http://git.dev.opencascade.org/gitweb/?p=occt.git 
+  * Open GitWeb in your web browser: https://git.dev.opencascade.org/gitweb/?p=occt.git
   * Locate the branch you want to review among **heads** (click ‘…’ at the bottom of the page to see the full list).
   * Click **log** (or **shortlog**) to see the history of the branch. 
     
index b8e6614..598eca2 100644 (file)
@@ -347,7 +347,7 @@ The test group may contain *parse.rules* file. This file defines patterns used f
 
 Each line in the file should specify a status (single word), followed by a regular expression delimited by slashes (*/*) that will be matched against lines in the test output log to check if it corresponds to this status.
 
-The regular expressions should follow <a href="http://www.tcl.tk/man/tcl/TclCmd/re_syntax.htm">Tcl syntax</a>, with a special exception that "\b" is considered as word limit (Perl-style), in addition to "\y" used in Tcl.
+The regular expressions should follow <a href="https://www.tcl.tk/man/tcl/TclCmd/re_syntax.htm">Tcl syntax</a>, with a special exception that "\b" is considered as word limit (Perl-style), in addition to "\y" used in Tcl.
 
 The rest of the line can contain a comment message, which will be added to the test report when this status is detected.
 
@@ -622,7 +622,7 @@ The new test created for an unsolved problem should return BAD. The new test cre
 
 @subsection testmanual_3_6 Marking BAD cases
 
-If the test produces an invalid result at a certain moment then the corresponding bug should be created in the OCCT issue tracker located at http://tracker.dev.opencascade.org, and the problem should be marked as TODO in the test script.
+If the test produces an invalid result at a certain moment then the corresponding bug should be created in the OCCT issue tracker located at https://tracker.dev.opencascade.org, and the problem should be marked as TODO in the test script.
 
 The following statement should be added to such a test script:
 ~~~~~
index 243fd86..82cef60 100644 (file)
@@ -439,7 +439,7 @@ class TColStd_Array1OfReal; -> #include <TColStd_Array1OfReal.hxx>
 ~~~~~
 Handle_Class -> Handle(Class)
 ~~~~~
-  This change is not applied if the source or header file is recognized as containing the definition of Qt class with signals or slots, to avoid possible compilation errors of MOC files caused by inability of MOC to recognize macros (see http://doc.qt.io/qt-4.8/signalsandslots.html).
+  This change is not applied if the source or header file is recognized as containing the definition of Qt class with signals or slots, to avoid possible compilation errors of MOC files caused by inability of MOC to recognize macros (see https://doc.qt.io/qt-4.8/signalsandslots.html).
   The file is considered as defining a Qt object if it contains strings *Q_OBJECT* and either *slots:* or *signals:*. 
 
 4. Removes forward declarations of classes with names <i>Handle(C)</i> or *Handle_C*, replacing them either by forward declaration of its argument class, or (for files defining Qt objects) <i>\#include</i> statement for a header with the name of the argument class and extension .hxx:
@@ -736,9 +736,9 @@ If you like to preserve the compatibility of your application code with OCCT ver
 If your application is essentially based on CDL, and you need to upgrade it to OCCT 7.0, you will very likely need to convert your application code to non-CDL form.
 This is a non-trivial effort; the required actions would depend strongly on the structure of the code and used CDL features.
 
-The upgrade script and sources of a specialized WOK version used for OCCT code upgrade can be found in WOK Git repository in branch [CR0_700_2](http://git.dev.opencascade.org/gitweb/?p=occt-wok.git;a=log;h=refs/heads/CR0_700_2).
+The upgrade script and sources of a specialized WOK version used for OCCT code upgrade can be found in WOK Git repository in branch [CR0_700_2](https://git.dev.opencascade.org/gitweb/?p=occt-wok.git;a=log;h=refs/heads/CR0_700_2).
 
-[Contact us](http://www.opencascade.com/contact/) if you need more help.
+[Contact us](https://www.opencascade.com/contact/) if you need more help.
 
 @subsection upgrade_occt700_bspline Separation of BSpline cache
 
index c9ead98..8115c90 100644 (file)
@@ -109,7 +109,7 @@ implementation of 3D viewer. OpenGL specification is developed by the
 Khronos group, https://www.khronos.org/opengl/. OCCT code includes header 
 file *glext.h* obtained from Khronos web site.
 
-**VTK** -- The **Visualization Toolkit (VTK)** is an open-source, freely available software system for 3D computer graphics, image processing and visualization. OCCT VIS component provides adaptation functionality for visualization of OCCT topological shapes by means of VTK library. If you need further information on VTK, refer to VTK Homepage http://www.vtk.org/.
+**VTK** -- The **Visualization Toolkit (VTK)** is an open-source, freely available software system for 3D computer graphics, image processing and visualization. OCCT VIS component provides adaptation functionality for visualization of OCCT topological shapes by means of VTK library. If you need further information on VTK, refer to VTK Homepage https://www.vtk.org/.
 
 **Doxygen** developed by Dimitri van Heesch is open source documentation system for 
 C++, C, Java, Objective-C, Python, IDL, PHP and C#. This product is used in Open CASCADE Technology 
@@ -120,7 +120,7 @@ If you need further information on Doxygen, refer to https://www.stack.nl/~dimit
 Graph visualization is representiation of structured information as diagrams of abstract graphs and networks. 
 This product is used together with Doxygen in Open CASCADE Technology for automatic creation of Technical Documentation 
 (generation of dependency graphs). Current versions of Graphviz are licensed on an open source 
-basis under The Eclipse Public License (EPL) (http://www.graphviz.org/License.php).
+basis under The Eclipse Public License (EPL) (https://www.graphviz.org/license/).
 
 **Inno Setup** is a free script-driven installation system created in CodeGear Delphi by Jordan Russell. 
 In OCCT Inno Setup is used to create Installation Wizard on Windows. 
@@ -130,10 +130,10 @@ It is licensed under Inno Setup License (http://www.jrsoftware.org/files/is/lice
 and others used by multimedia applications. This library is developed by Hervé Drolon and Floris van den Berg. 
 FreeImage is easy to use, fast, multithreading safe, compatible with all 32-bit or 64-bit versions of Windows, 
 and cross-platform (works both with Linux and Mac OS X). FreeImage is optionally used by OCCT to work
-with images, on conditions of the FreeImage Public License (FIPL) (http://freeimage.sourceforge.net/freeimage-license.txt).
+with images, on conditions of the FreeImage Public License (FIPL) (https://freeimage.sourceforge.net/freeimage-license.txt).
 
 **David M. Gay's floating point routines** (dtoa.c) are used for fast reading of floating point values from text strings.
-These routines are available under MIT-like license (see http://www.netlib.org/fp/).
+These routines are available under MIT-like license (see https://www.netlib.org/fp/).
 
 **CMake** is an open-source, cross-platform family of tools designed to build, test and package software. CMake is used to control the software compilation process using simple platform and compiler independent configuration files, and generate native makefiles and workspaces that can be used in the compiler environment of your choice. 
 OCCT uses CMake as a build system. CMake is available under BSD 3-Clause license. See more at https://cmake.org/
@@ -150,6 +150,9 @@ FFmpeg is optionally used by OCCT for video recording, on LGPL conditions (https
 for generation of User and Developer Guides in PDF format. See https://miktex.org for information
 on this tool.
 
+**RapidJSON** is an Open Source JSON parser and generator for C++.
+RapidJSON is optionally used by OCCT for reading glTF files (https://rapidjson.org/).
+
 Adobe Systems, Inc. provides **Adobe Reader**, which can be used to view files in Portable Document Format (PDF). 
 
 @section OCCT_OVW_SECTION_3 Documentation
@@ -204,13 +207,12 @@ for which OCCT is certified to work.
 
 | OS        | Compiler |
 | --------- | ----------- |
-| Windows   | Microsoft Visual Studio: 2008 SP1, 2010 SP1<sup>1</sup>, 2012 Update 4, 2013 Update 5, 2015, 2017 <br> GCC 4.3+ (Mingw-w64)|
+| Windows   | Microsoft Visual Studio: 2008 SP1, 2010 SP1, 2012 Update 4, 2013 Update 5, 2015 Update 3, 2017 <sup>1</sup>, 2019 <br> GCC 4.3+ (Mingw-w64)|
 | Linux     | GNU gcc 4.3+ <br> LLVM CLang 3.6+ |
 | OS X / macOS | XCode 6 or newer |
 | Android   | NDK r10, GNU gcc 4.8 or newer |
 
-1) VC++ 10 64-bit is used for regular testing and for building 
-  binary package of official release of OCCT on Windows.
+1) VC++ 141 64-bit is used for regular testing and for building binary package of official release of OCCT on Windows.
 
 @subsection overview_req_libs Third-party libraries
 
@@ -222,9 +224,9 @@ for which OCCT is certified to work.
 | Freetype (for text rendering) | FreeType 2.4.11-2.7.1 https://sourceforge.net/projects/freetype/files/ |
 | FreeImage (optional, for support of common 2D graphic formats) | FreeImage 3.17.0+ https://sourceforge.net/projects/freeimage/files |
 | FFmpeg (optional, for video recording) | FFmpeg 3.1+ https://www.ffmpeg.org/download.html |
-| RapidJSON (optional, for reading glTF) | RapidJSON 1.1+ http://rapidjson.org/ |
+| RapidJSON (optional, for reading glTF) | RapidJSON 1.1+ https://rapidjson.org/ |
 | Intel TBB (optional, for multithreaded algorithms) | TBB 4.x or 5.x https://www.threadingbuildingblocks.org/ |
-| VTK (for VTK Integration Services | VTK 6.1+ http://www.vtk.org/download/ |
+| VTK (for VTK Integration Services | VTK 6.1+ https://www.vtk.org/download/ |
 | Doxygen (optional for building documentation) | Doxygen 1.8.5+ https://www.stack.nl/~dimitri/doxygen/download.html |
 
 @subsection overview_req_hw Hardware
@@ -282,13 +284,13 @@ When the installation is complete, you will find the directories for 3rd party p
 
 @figure{/overview/images/overview_3rdparty.png}
 
-The contents of the OCCT-7.3.0 directory (called further "OCCT root", or $CASROOT) are as follows:
+The contents of the OCCT-7.4.0 directory (called further "OCCT root", or $CASROOT) are as follows:
 
 @figure{/overview/images/overview_installation.png, "The directory tree"}
 
   * **adm**   This folder contains administration files, which allow rebuilding OCCT;
   * **adm/cmake**  This folder contains files of CMake building procedure;
-  * **adm/msvc**  This folder contains Visual Studio projects for Visual C++ 2010, 2012, 2013, 2015 and 2017 which allow rebuilding OCCT under Windows platform in 32 and 64-bit mode;
+  * **adm/msvc**  This folder contains Visual Studio projects for Visual C++ 2010, 2012, 2013, 2015, 2017 and 2019 which allow rebuilding OCCT under Windows platform in 32 and 64-bit mode;
   * **data**  This folder contains CAD files in different formats, which can be used to test the OCCT functionality;
   * **doc**  This folder contains OCCT documentation in HTML and PDF format;
   * **dox**  This folder contains sources of OCCT documentation in plain text (MarkDown) format;
@@ -307,7 +309,7 @@ To run any Open CASCADE Technology application you need to set the environment v
 
 You can define the environment variables with env.bat script located in the 
 $CASROOT folder. This script accepts two arguments to be used: 
-the version of Visual Studio (vc10 -- vc141) and the architecture (win32 or win64).
+the version of Visual Studio (vc10 -- vc142) and the architecture (win32 or win64).
 
 The additional environment settings necessary for compiling OCCT libraries and samples 
 by Microsoft Visual Studio can be set using script custom.bat located in the same folder. 
@@ -330,7 +332,7 @@ The scripts are located in the OCCT root folder.
 
   * **CASROOT** is used to define the root directory of Open CASCADE Technology;
   * **PATH** is required to define the path to OCCT binaries and 3rdparty folder;
-  * **LD_LIBRARY_PATH** is required to define the path to OCCT libraries (on UNIX platforms only);
+  * **LD_LIBRARY_PATH** is required to define the path to OCCT libraries (on UNIX platforms only; **DYLD_LIBRARY_PATH** variable in case of macOS);
   * **MMGT_OPT** (optional) if set to 1, the memory manager performs optimizations as described below; if set to 2, 
     Intel (R) TBB optimized memory manager is used; if 0 (default), every memory block is allocated 
     in C memory heap directly (via malloc() and free() functions). 
@@ -411,8 +413,7 @@ Remarks:
 
 **On Linux:**
 
-1. If OCCT was built by Code::Blocks  use <i>$CASROOT/draw_cbp.sh</i> file to launch *DRAWEXE* executable;
-2. If OCCT was built by Automake    use <i>$CASROOT/draw_amk.sh</i> file to launch *DRAWEXE* executable;
+* If OCCT was built by Code::Blocks  use <i>$CASROOT/draw.sh</i> file to launch *DRAWEXE* executable.
 
 Draw[1]> prompt appears in the command window
 
index 26ce240..0ca8a96 100644 (file)
Binary files a/dox/resources/occ_logo.png and b/dox/resources/occ_logo.png differ
index a6bc742..1602c52 100644 (file)
@@ -58,7 +58,7 @@ This module also provides a variety of general-purpose services, such as:
 
 See the details in @ref occt_user_guides__foundation_classes "Foundation Classes User's Guide"
 
-See also: our <a href="http://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
+See also: our <a href="https://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
 
 @section OCCT_TOVW_SECTION_3 Modeling Data
 
@@ -90,7 +90,7 @@ See the details in @ref occt_user_guides__modeling_data "Modeling Data User's Gu
 3D geometric models can be stored in OCCT native BREP format.
 See @ref occt_user_guides__brep_wp "BREP Format Description White Paper" for details on the format.
 
-See also: our <a href="http://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
+See also: our <a href="https://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
 
 @section OCCT_TOVW_SECTION_4 Modeling Algorithms
 
@@ -149,7 +149,7 @@ See @ref occt_user_guides__boolean_operations "Boolean Operations" User's Guide
  
 See the details in @ref occt_user_guides__modeling_algos "Modeling Algorithms User's Guide".
 
-See also: our <a href="http://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
+See also: our <a href="https://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
 
 @section OCCT_TOVW_SECTION_4a Mesh 
 
@@ -163,8 +163,8 @@ Open CASCADE Technology includes two mesh converters:
 - STL converter translates Open CASCADE shapes to STL files. STL (STtereoLithography) format is widely used for rapid prototyping (3D printing).
 
 Open CASCADE SAS also offers Advanced Mesh Products:
-- <a href="http://www.opencascade.com/content/mesh-framework">Open CASCADE Mesh Framework (OMF)</a>
-- <a href="http://www.opencascade.com/content/express-mesh">Express Mesh</a>
+- <a href="https://www.opencascade.com/content/mesh-framework">Open CASCADE Mesh Framework (OMF)</a>
+- <a href="https://www.opencascade.com/content/express-mesh">Express Mesh</a>
 
 @figure{/technical_overview/images/0003.png}
 
@@ -208,7 +208,7 @@ For more details, see @ref occt_user_guides__visualization "Visualization User's
 
 The visualization of OCCT topological shapes by means of VTK library provided by VIS component is described in a separate @ref occt_user_guides__vis "VTK Integration Services" User's Guide.
 
-See also: our <a href="http://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
+See also: our <a href="https://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
 
 
 @section OCCT_TOVW_SECTION_6 Data Exchange
@@ -222,12 +222,14 @@ See also: our <a href="http://www.opencascade.com/content/tutorial-learning">E-l
 * **Standardized Data Exchange** interfaces allow querying and examining the input file, converting its contents to a CAD model and running validity checks on a fully translated shape. The following formats are currently supported.
        * @ref occt_user_guides__step "STEP" (AP203 : Mechanical Design, this covers General 3D CAD; AP214: Automotive Design) 
        * @ref occt_user_guides__iges "IGES" (up to 5.3) 
-       * VRML and STL meshes. 
+       * glTF, OBJ, VRML and STL meshes.
 * @ref occt_user_guides__xde "Extended data exchange" (XDE) allows translating  additional attributes attached to geometric data (colors, layers, names, materials etc).
-* <a href="http://www.opencascade.com/content/advanced-data-exchange-components">Advanced Data Exchange Components</a> are available in addition to standard Data Exchange interfaces to support interoperability and data adaptation (also using @ref OCCT_TOVW_SECTION_6a "Shape Healing") with CAD software using the following proprietary formats:
-       * <a href="http://www.opencascade.com/content/acis-sat-import-export">ACIS SAT</a>
-       * <a href="http://www.opencascade.com/content/parasolid-import">Parasolid</a>
-       * <a href="http://www.opencascade.com/content/dxf-import-export">DXF</a> 
+* <a href="https://www.opencascade.com/content/advanced-data-exchange-components">Advanced Data Exchange Components</a> are available in addition to standard Data Exchange interfaces to support interoperability and data adaptation (also using @ref OCCT_TOVW_SECTION_6a "Shape Healing") with CAD software using the following proprietary formats:
+       * <a href="https://www.opencascade.com/content/acis-sat-import-export">ACIS SAT</a>
+       * <a href="https://www.opencascade.com/content/parasolid-import">Parasolid</a>
+       * <a href="https://www.opencascade.com/content/dxf-import-export">DXF</a>
+       * <a href="https://www.opencascade.com/content/ifc-import">IFC</a>
+       * <a href="https://www.opencascade.com/content/jt-import-export">JT</a>
 
 These components are based on the same architecture as interfaces with STEP and IGES.
 
@@ -265,7 +267,7 @@ Each sub-domain of Shape Healing has its own scope of functionality:
 
 For more details, refer to @ref occt_user_guides__shape_healing "Shape Healing User's guide".
 
-See also: our <a href="http://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
+See also: our <a href="https://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
 
 
 @section OCCT_TOVW_SECTION_7 Application Framework
@@ -287,7 +289,7 @@ OCAF organizes and embeds these attributes in a document. OCAF documents, in the
 
 For more details, see @ref occt_user_guides__ocaf "OCAF User's Guide". 
 
-See also: our <a href="http://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
+See also: our <a href="https://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
 
 
 @section OCCT_TOVW_SECTION_8 Draw Test Harness
index a26405c..5447e2f 100644 (file)
@@ -701,7 +701,7 @@ Congratulations! Your bottle is complete. Here is the result snapshot of the Tut
 @figure{/tutorial/images/tutorial_image019.png,"",320}
 
 We hope that this tutorial has provided you with a feel for the industrial strength power of Open CASCADE Technology.
-If you want to know more and develop major projects using Open CASCADE Technology, we invite you to study our training, support, and consulting services on our site at http://www.opencascade.com/content/technology-support. Our professional services can maximize the power of your Open CASCADE Technology applications.
+If you want to know more and develop major projects using Open CASCADE Technology, we invite you to study our training, support, and consulting services on our site at https://www.opencascade.com/content/technology-support. Our professional services can maximize the power of your Open CASCADE Technology applications.
 
 
 @section sec6 Appendix
index 8b2aaef..7595241 100644 (file)
@@ -5,7 +5,7 @@ Foundation Classes  {#occt_user_guides__foundation_classes}
 
 @section occt_fcug_1 Introduction
 
-This manual explains how to use Open CASCADE Technology (**OCCT**)  Foundation Classes. It provides basic documentation on foundation classes. For  advanced information on foundation classes and their applications, see our <a href="http://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
+This manual explains how to use Open CASCADE Technology (**OCCT**)  Foundation Classes. It provides basic documentation on foundation classes. For  advanced information on foundation classes and their applications, see our <a href="https://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
    
 Foundation Classes provide a variety of general-purpose  services such as automated dynamic memory management (manipulation of objects  by handle), collections, exception handling, genericity by down-casting and  plug-in creation. 
 
@@ -183,12 +183,12 @@ The table below presents the equivalence existing between  C++ fundamental types
 | int  | Standard_Integer |
 | double       | Standard_Real |
 | float        | Standard_ShortReal |
-| unsigned int | Standard_Boolean |
+| bool | Standard_Boolean |
 | char | Standard_Character |
-| short        | Standard_ExtCharacter |
+| char16_t     | Standard_ExtCharacter |
 | char\*       | Standard_CString |
 | void\*       | Standard_Address |
-| short\*      | Standard_ExtString |
+| char16_t\*   | Standard_ExtString |
 
 \* The types with asterisk are pointers. 
 
@@ -197,12 +197,12 @@ The table below presents the equivalence existing between  C++ fundamental types
 * **Standard_Integer** : fundamental type representing 32-bit integers yielding  negative, positive or null values. *Integer* is implemented as a *typedef* of the C++ *int* fundamental type. As such, the algebraic operations  +, -, *, / as well as the ordering and equivalence relations <, <=, ==, !=, >=, >  are defined on it. 
 * **Standard_Real** : fundamental type representing real numbers with finite  precision and finite size. **Real** is implemented as a *typedef* of  the C++ *double* (double precision) fundamental type. As such, the  algebraic operations +, -, *, /, unary- and the ordering and equivalence  relations <, <=, ==, !=, >=, >  are defined on reals. 
 * **Standard_ShortReal** : fundamental type representing real numbers with finite  precision and finite size. *ShortReal* is implemented as a *typedef* of  the C++ *float* (simple precision) fundamental type. As such, the  algebraic operations +, -, *, /, unary- and the ordering and equivalence  relations <, <=, ==, !=, >=, >  are defined on reals. 
-* **Standard_Boolean** : fundamental type representing logical  expressions. It has two values: *false* and *true*. *Boolean* is implemented  as a *typedef* of the C++ *unsigned int* fundamental type. As such,  the algebraic operations *and, or, xor* and *not* as well as equivalence relations == and != are defined on Booleans. 
+* **Standard_Boolean** : fundamental type representing logical  expressions. It has two values: *false* and *true*. *Boolean* is implemented  as a *typedef* of the C++ *bool* fundamental type. As such,  the algebraic operations *and, or, xor* and *not* as well as equivalence relations == and != are defined on Booleans. 
 * **Standard_Character** : fundamental type representing the  normalized ASCII character set. It may be assigned the values of the 128 ASCII  characters. *Character* is implemented as a *typedef* of the C++ *char* fundamental type. As such, the ordering and equivalence relations <, <=, ==, !=, >=, >  are defined on characters using the order of the  ASCII chart (ex: A B). 
-* **Standard_ExtCharacter** : fundamental type representing the  Unicode character set. It is a 16-bit character type. *ExtCharacter* is  implemented as a *typedef* of the C++ *short* fundamental type. As  such, the ordering and equivalence relations <, <=, ==, !=, >=, >   are defined on extended characters using the order of the UNICODE chart (ex:  A B). 
-* **Standard_CString** : fundamental type representing string  literals. A string literal is a sequence of ASCII (8 bits) characters enclosed  in double quotes. *CString* is implemented as a *typedef* of the C++ *char* fundamental type. 
+* **Standard_ExtCharacter** : fundamental type representing the  Unicode character set. It is a 16-bit character type. *ExtCharacter* is  implemented as a *typedef* of the C++ *char16_t* fundamental type. As  such, the ordering and equivalence relations <, <=, ==, !=, >=, >   are defined on extended characters using the order of the UNICODE chart (ex:  A B). 
+* **Standard_CString** : fundamental type representing string  literals. A string literal is a sequence of UTF-8 (8 bits) code points enclosed in double quotes. *CString* is implemented as a *typedef* of the C++ *char* fundamental type. 
 * **Standard_Address** : fundamental type representing a generic  pointer. *Address* is implemented as a *typedef* of the C++ *void* fundamental  type. 
-* **Standard_ExtString** is a fundamental type representing string  literals as sequences of Unicode (16 bits) characters. *ExtString* is  implemented as a *typedef* of the C++ *short* fundamental type. 
+* **Standard_ExtString** is a fundamental type representing string  literals as sequences of Unicode (16 bits) characters. *ExtString* is  implemented as a *typedef* of the C++ *char16_t* fundamental type. 
 
 @subsubsection occt_fcug_2_1_2 Types manipulated by value
 There are three categories of types which are manipulated by  value: 
@@ -254,13 +254,13 @@ Objects of classes derived (directly or indirectly) from *Transient*, are normal
 Handle is defined as template class *opencascade::handle<>*.
 Open CASCADE Technology  provides preprocessor macro *Handle()* that is historically used throughout OCCT code to name a handle:
 ~~~~~{.cpp}
-Handle(Geom_Line) aLine; // "Handle(Geom_Line)" is expanded to "opencascade::handleL<Geom_Line>"
+Handle(Geom_Line) aLine; // "Handle(Geom_Line)" is expanded to "opencascade::handle<Geom_Line>"
 ~~~~~
 
 In addition, for standard OCCT classes additional *typedef* is defined for a handle, as the name of a class prefixed by *Handle_*.
 For instance, the above example can be also coded as:
 ~~~~~{.cpp}
-Handle_Geom_Line aLine; // "Handle_Geom_Line" is typedef to "opencascade::handleL<Geom_Line>"
+Handle_Geom_Line aLine; // "Handle_Geom_Line" is typedef to "opencascade::handle<Geom_Line>"
 ~~~~~
 
 #### Using a Handle
@@ -593,16 +593,16 @@ The following paragraphs describe recommended approaches for  using exceptions w
 
 To raise an exception of a definite type method Raise() of  the appropriate exception class shall be used. 
 ~~~~~
-DomainError::Raise(“Cannot cope with this condition”);
+Standard_DomainError::Raise(“Cannot cope with this condition”);
 ~~~~~
-raises an exception of *DomainError* type with the associated  message “Cannot cope with this condition”, the message being optional. This  exception may be caught by a handler of a *DomainError* type as follows: 
+raises an exception of *Standard_DomainError* type with the associated message “Cannot cope with this condition”, the message being optional. This exception may be caught by a handler of a *Standard_DomainError* type as follows: 
 ~~~~~
 try {
   OCC_CATCH_SIGNALS
   // try block
 }
-catch(DomainError) {
-// handle DomainError exceptions here
+catch(const Standard_DomainError& ) {
+// handle Standard_DomainError exceptions here
 }
 ~~~~~
 
@@ -652,8 +652,7 @@ Using this syntax, the *Value* function becomes:
 ~~~~~
 Item  TCollection_Array1::Value (const Standard_Integer&index) const
      { 
-  OutOfRange_Raise_if(index < r1 || index > r2,
-                      “index out of range in  Array1::Value”);
+  Standard_OutOfRange_Raise_if(index < r1 || index > r2, “index out of range in  Array1::Value”);
   return contents[index];
 }
 ~~~~~
index ab891fb..76654aa 100644 (file)
@@ -15,7 +15,7 @@ Other kinds of data such as colors and names can be read or written with the hel
   * an IGES entity is an entity in the IGES normal sense.
   * a root entity is the highest level entity of any given type, e.g. type 144 for surfaces and type 186 for solids. Roots are not referenced by other entities.
 
-This manual mainly explains how  to convert an IGES file to an Open CASCADE Technology (**OCCT**) shape and  vice versa. It provides basic documentation on conversion. For advanced  information on conversion, see our <a href="http://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
+This manual mainly explains how  to convert an IGES file to an Open CASCADE Technology (**OCCT**) shape and  vice versa. It provides basic documentation on conversion. For advanced  information on conversion, see our <a href="https://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
 
 IGES files produced in accordance with IGES standard versions up to and including version 5.3 can be read. IGES files that are produced by this  interface conform to IGES version 5.3 (Initial Graphics Exchange Specification,  IGES 5.3. ANS US PRO/IPO-100-1996). 
 
index dbd19bd..df0cdcd 100644 (file)
@@ -5,7 +5,7 @@ Modeling Algorithms  {#occt_user_guides__modeling_algos}
 
 @section occt_modalg_1 Introduction
 
-This manual explains how  to use the Modeling Algorithms. It provides basic documentation on modeling  algorithms. For advanced information on Modeling Algorithms, see our <a href="http://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
+This manual explains how  to use the Modeling Algorithms. It provides basic documentation on modeling  algorithms. For advanced information on Modeling Algorithms, see our <a href="https://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
 
 The Modeling Algorithms module brings together a  wide range of topological algorithms used in modeling. Along with these tools,  you will find the geometric algorithms, which they call. 
 
@@ -475,7 +475,7 @@ The Curves and Surfaces from Constraints component groups together high level fu
   * construction of plate surfaces
   * extension of a 3D curve or surface beyond its original bounds.
   
-OPEN CASCADE company also provides a product known as <a href="http://www.opencascade.com/content/surfaces-scattered-points">Surfaces from Scattered Points</a>, which allows constructing surfaces from scattered points. This algorithm accepts or constructs an initial B-Spline surface and looks for its deformation (finite elements method) which would satisfy the constraints. Using optimized computation methods, this algorithm is able to construct a surface from more than 500 000 points.
+OPEN CASCADE company also provides a product known as <a href="https://www.opencascade.com/content/surfaces-scattered-points">Surfaces from Scattered Points</a>, which allows constructing surfaces from scattered points. This algorithm accepts or constructs an initial B-Spline surface and looks for its deformation (finite elements method) which would satisfy the constraints. Using optimized computation methods, this algorithm is able to construct a surface from more than 500 000 points.
 
 SSP product is not supplied with Open CASCADE Technology, but can be purchased separately.
 
@@ -3089,14 +3089,14 @@ Open CASCADE Technology includes two mesh converters:
 - STL converter translates Open CASCADE shapes to STL files. STL (STtereoLithography) format is widely used for rapid prototyping.
 
 Open CASCADE SAS also offers Advanced Mesh Products:
-- <a href="http://www.opencascade.com/content/mesh-framework">Open CASCADE Mesh Framework (OMF)</a>
-- <a href="http://www.opencascade.com/content/express-mesh">Express Mesh</a>
+- <a href="https://www.opencascade.com/content/mesh-framework">Open CASCADE Mesh Framework (OMF)</a>
+- <a href="https://www.opencascade.com/content/express-mesh">Express Mesh</a>
 
 Besides, we can efficiently help you in the fields of surface and volume meshing algorithms, mesh optimization algorithms etc. If you require a qualified advice about meshing algorithms, do not hesitate to benefit from the expertise of our team in that domain.
 
 The projects dealing with numerical simulation can benefit from using SALOME - an Open Source Framework for CAE with CAD data interfaces, generic Pre- and Post- F.E. processors and API for integrating F.E. solvers.
 
-Learn more about SALOME platform on http://www.salome-platform.org
+Learn more about SALOME platform on https://www.salome-platform.org
 
 @subsection occt_modalg_11_2 Meshing algorithm
 
index 912e0a1..1d89d4f 100644 (file)
@@ -7,7 +7,7 @@ Modeling Data {#occt_user_guides__modeling_data}
 
 Modeling Data supplies data structures to represent 2D and 3D geometric models. 
 
-This manual explains how to use Modeling Data. For advanced information on modeling data, see our <a href="http://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
+This manual explains how to use Modeling Data. For advanced information on modeling data, see our <a href="https://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
 
 @section occt_modat_1 Geometry Utilities
 
@@ -1324,7 +1324,7 @@ BRepBndLib class contains methods for creation of bounding boxes (both AABB and
 
 @subsubsection occt_modat_6_1_1 Creation of OBB from set of points
 
-The algorithm is described in <a href="http://www.idt.mdh.se/~tla/publ/FastOBBs.pdf">"Fast Computation of Tight Fitting Oriented Bounding Boxes" by Thomas Larsson and Linus Källberg</a>. It includes the following steps:
+The algorithm is described in "Fast Computation of Tight Fitting Oriented Bounding Boxes" by Thomas Larsson and Linus Källberg (FastOBBs.pdf). It includes the following steps:
 
 <span>1.</span> Choose \f$ N_{a} (N_{a} \geq 3) \f$ initial axes.<br>
 <span>2.</span> Project every given point to the every chosen (in item 1) axis. At that, "minimal" and "maximal" points of every axis (i.e. point having minimal and maximal parameter (correspondingly) of the projection to this axis) are chosen. I.e. \f$ 2*N_{a} \f$ points will be held and this set can contain equal points. Later (unless otherwise specified) in this algorithm we will work with these \f$ 2*N_{a} \f$ points only.<br>
@@ -1379,7 +1379,7 @@ The algorithm contains the following steps:
 
 @subsubsection occt_modat_6_1_4 Method IsOut for another OBB
 
-According to the <a href="http://www.jkh.me/files/tutorials/Separating%20Axis%20Theorem%20for%20Oriented%20Bounding%20Boxes.pdf">"Separating Axis Theorem for Oriented Bounding Boxes"</a>, it is necessary to check the 15 separating axes: 6 axes of the boxes and 9 are their cross products.<br>
+According to the <a href="https://www.jkh.me/files/tutorials/Separating%20Axis%20Theorem%20for%20Oriented%20Bounding%20Boxes.pdf">"Separating Axis Theorem for Oriented Bounding Boxes"</a>, it is necessary to check the 15 separating axes: 6 axes of the boxes and 9 are their cross products.<br>
 The algorithm of analyzing axis \f$ \mathbf{l} \f$ is following:
 1. Compute the "length" according to the formula: \f$ L_{j}=\sum_{i=0}^{2}{H_{i}\cdot \left | \overrightarrow{\mathbf{a_{i}}} \cdot \overrightarrow{\mathbf{l}} \right |} \f$. Here, \f$ \mathbf{a_{i}} \f$ is an i-th axis (X-axis, Y-axis, Z-axis) of j-th BndBox (j=1...2). \f$ H_{i} \f$ is a half-dimension along i-th axis.
 2. If \f$ \left |\overrightarrow{C_{1}C_{2}} \cdot \overrightarrow{\mathbf{l}}  \right | > L_{1}+L_{2} \f$ (where \f$ C_{j} \f$ is the center of j-th OBB) then the considered OBBs are not interfered in terms of the axis \f$ \mathbf{l} \f$.
index 2c7f948..e569427 100644 (file)
@@ -7,7 +7,7 @@ OCAF  {#occt_user_guides__ocaf}
 
 This manual explains how to use the Open CASCADE Application Framework (OCAF).
 It provides basic documentation on using OCAF. For advanced information on OCAF 
-and its applications, see our <a href="http://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
+and its applications, see our <a href="https://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
 
 @subsection occt_ocaf_1_1 Purpose of OCAF
 
index 1086313..9b1da27 100644 (file)
@@ -7,7 +7,7 @@ Shape Healing  {#occt_user_guides__shape_healing}
 
 @subsection occt_shg_1_1 Introduction
 
-This manual explains how to use Shape Healing. It provides basic documentation on its operation. For advanced information on Shape Healing and its applications, see our <a href="http://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings. 
+This manual explains how to use Shape Healing. It provides basic documentation on its operation. For advanced information on Shape Healing and its applications, see our <a href="https://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings. 
 
 The **Shape Healing** toolkit provides a set of tools to work on the geometry and topology of Open CASCADE Technology (**OCCT**) shapes. Shape Healing adapts shapes so as to make them as appropriate for use by Open CASCADE Technology as possible. 
 
index 420f6e2..c22f2a5 100644 (file)
@@ -24,7 +24,7 @@ File translation is performed in the programming mode, via C++ calls.
 
 For testing the STEP component in DRAW Test Harness, a set of commands for reading and writing STEP files and analysis of relevant data are provided by the *TKXSDRAW* plugin. 
 
-See also our <a href="http://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
+See also our <a href="https://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
 
 @subsection occt_step_1_1 STEP Exchanges in Open Cascade technology
 
@@ -123,7 +123,7 @@ For further information see 2.4 Mapping STEP entities to Open CASCADE Technology
 Before performing any other operation you have to load the file with: 
 ~~~~~
 STEPControl_Reader reader; 
-IFSelect_ReturnStatus stat = reader.ReadFile(;filename.stp;); 
+IFSelect_ReturnStatus stat = reader.ReadFile("filename.stp");
 ~~~~~
 Loading the file only memorizes the data, it does not translate it. 
 
@@ -602,21 +602,21 @@ Not all entities defining the assembly structure in the STEP file are translated
 | Placements | axis1_placement | Geom_Axis1Placement | |  
 | | axis2_placement_2d | Geom2d_AxisPlacement | |
 | | axis2_placement_3d | Geom_Axis2Placement | | 
-| Curves | circle | Geom_Circle, Geom2d_Circle, Geom2d_BsplineCurve | Circle is translated into *Geom2d_BSplineCurve* when it references the surface of revolution (spherical surface, conical surface, etc.) |
-| | ellipse | Geom_Ellipse, Geom2d_Ellipse, Geom2d_BsplineCurve | Ellipse is translated into *Geom2d_BSplineCurve* when it references the surface of revolution (spherical surface, conical surface, etc.) |
+| Curves | circle | Geom_Circle, Geom2d_Circle, Geom2d_BSplineCurve | Circle is translated into *Geom2d_BSplineCurve* when it references the surface of revolution (spherical surface, conical surface, etc.) |
+| | ellipse | Geom_Ellipse, Geom2d_Ellipse, Geom2d_BSplineCurve | Ellipse is translated into *Geom2d_BSplineCurve* when it references the surface of revolution (spherical surface, conical surface, etc.) |
 | | hyperbola | Geom_Hyperbola, Geom2d_Hyperbola | | 
 | | line | Geom_Line, Geom2d_Line | | 
 | | parabola | Geom_Parabola, Geom2d_Parabola | |  
 | | pcurve  | Geom2d_Curve | Pcurve in edge | 
 | | curve_replica | Geom_Curve or Geom2d_Curve | Depending on the type of the base curve |
 | | offset_curve_3d | Geom_OffsetCurve | | 
-| | trimmed_curve | Geom_TrimmedCurve or Geom2d_BsplineCurve | Only trimmed_curves trimmed by parameters are translated. All *trimmed_curves* are converted to *Geom2d_BSplineCurve*. |
-| | b_spline_curve | Geom_BsplineCurve or Geom2d_BsplineCurve | |  
-| | b_spline_curve_with_knots | Geom_BsplineCurve or Geom2d_BsplineCurve | |
-| | bezier_curve | Geom_BsplineCurve or Geom2d_BsplineCurve | | 
-| | rational_b_spline_curve | Geom_BsplineCurve or  Geom2d_BsplineCurve | | 
-| | uniform_curve | Geom_BsplineCurve or Geom2d_BsplineCurve | | 
-| | quasi_ uniform_curve | Geom_BsplineCurve or Geom2d_BsplineCurve | |
+| | trimmed_curve | Geom_TrimmedCurve or Geom2d_BSplineCurve | Only trimmed_curves trimmed by parameters are translated. All *trimmed_curves* are converted to *Geom2d_BSplineCurve*. |
+| | b_spline_curve | Geom_BSplineCurve or Geom2d_BSplineCurve | |
+| | b_spline_curve_with_knots | Geom_BSplineCurve or Geom2d_BSplineCurve | |
+| | bezier_curve | Geom_BSplineCurve or Geom2d_BSplineCurve | |
+| | rational_b_spline_curve | Geom_BSplineCurve or  Geom2d_BSplineCurve | |
+| | uniform_curve | Geom_BSplineCurve or Geom2d_BSplineCurve | |
+| | quasi_ uniform_curve | Geom_BSplineCurve or Geom2d_BSplineCurve | |
 | | surface_curve | TopoDS_Edge | *surface_curve* defines geometrical support of an edge and its pcurves. |
 | | seam_curve | TopoDS_Edge | The same as *surface_curve*  |
 | | composite_curve_segment | TopoDS_Edge | as a segment of *composite_curve* |
@@ -746,7 +746,7 @@ The following diagram illustrates the structure of calls in reading STEP. The hi
 Standard_Integer main() 
 { 
   STEPControl_Reader reader; 
-  reader.ReadFile(;MyFile.stp;); 
+  reader.ReadFile("MyFile.stp");
 
   // Loads file MyFile.stp 
   Standard_Integer NbRoots = reader.NbRootsForTransfer(); 
@@ -1037,8 +1037,8 @@ The table below describes STEP entities, which are created when the assembly str
 | | Geom2d_Ellipse | Ellipse, rational_b_spline_curve | |
 | | Geom_Hyperbola, Geom2d_Hyperbola |  Hyperbola | |
 | | Geom_Parabola, Geom2d_Parabola | Parabola | | 
-| | Geom_BSplineCurve | b_spline_curve_with_knots or rational_b_spline_curve | *rational_b_spline_curve* is produced if *Geom_BsplineCurve* is a rational BSpline |
-| |  Geom2d_BSplineCurve | b_spline_curve_with_knots or rational_b_spline_curve | *rational_b_spline_curve* is produced if *Geom2d_BsplineCurve* is a rational BSpline |
+| | Geom_BSplineCurve | b_spline_curve_with_knots or rational_b_spline_curve | *rational_b_spline_curve* is produced if *Geom_BSplineCurve* is a rational BSpline |
+| |  Geom2d_BSplineCurve | b_spline_curve_with_knots or rational_b_spline_curve | *rational_b_spline_curve* is produced if *Geom2d_BSplineCurve* is a rational BSpline |
 | | Geom_BezierCurve | b_spline_curve_with_knots | |
 | | Geom_Line  or Geom2d_Line | Line | |
 | Surfaces | Geom_Plane | Plane | |
@@ -1439,7 +1439,7 @@ where *doc* is a variable which contains a handle to the output document and sho
 @subsection occt_step_7_2 Attributes read from STEP 
 
 ### Colors
-Colors are implemented in accordance with <a href="http://www.cax-if.org/documents/rec_prac_styling_org_v15.pdf">Recommended practices for model styling and organization</a> sections 4 and 5.
+Colors are implemented in accordance with <a href="https://www.cax-if.org/documents/rec_prac_styling_org_v15.pdf">Recommended practices for model styling and organization</a> sections 4 and 5.
 
 The following attributes are imported from STEP file:
 * colors linked to assemblies, solids, shells, faces/surfaces, wireframes, edges/curves and vertices/points;
@@ -1452,15 +1452,15 @@ The following attributes are mentioned in the Recommended Practices, but not han
 * point markers.
 
 ### Layers
-Layers are implemented in accordance with <a href="http://www.cax-if.org/documents/rec_prac_styling_org_v15.pdf">Recommended practices  for model styling and organization</a> section 6.
+Layers are implemented in accordance with <a href="https://www.cax-if.org/documents/rec_prac_styling_org_v15.pdf">Recommended practices  for model styling and organization</a> section 6.
 All layers are imported, but invisibility styles are skipped.
 
 ### Materials
-Materials are implemented in accordance with <a href="http://www.cax-if.org/documents/RecPrac_MaterialDensity_v21.pdf">Recommended practices for material identification and density</a> section 4.
+Materials are implemented in accordance with <a href="https://www.cax-if.org/documents/RecPrac_MaterialDensity_v21.pdf">Recommended practices for material identification and density</a> section 4.
 OCCT translator processes materials attached to solids in shape representations. The name, description and density (name and value) are imported for each material. 
 
 ### Validation properties
-Validation properties are implemented in accordance with <a href="http://www.cax-if.org/documents/rec_prac_gvp_v44.pdf">Recommended practices for geometric and assembly validation properties</a> section 4 for AP214.
+Validation properties are implemented in accordance with <a href="https://www.cax-if.org/documents/rec_prac_gvp_v44.pdf">Recommended practices for geometric and assembly validation properties</a> section 4 for AP214.
 OCCT processes several types of geometric validation properties for solids, shells and geometric sets:
 * area;
 * volume;
@@ -1530,7 +1530,7 @@ OCCT STEP Reader also handles Annotations, linked directly to shapes (section 9.
 Simple types of GD&T (Dimensions, Tolerances and Datums without presentations or any types of modifiers) are also handled in AP214. However, according to the Recommended Practices for the Representation and Presentation of Product Manufacturing, this implementation is obsolete.
 
 ### Saved views
-Saved views are implemented in accordance with <a href="http://www.cax-if.org/documents/rec_pracs_pmi_v40.pdf">Recommended practices for the Representation and Presentation of Product Manufacturing</a> section 9.4.1-9.4.4.
+Saved views are implemented in accordance with <a href="https://www.cax-if.org/documents/rec_pracs_pmi_v40.pdf">Recommended practices for the Representation and Presentation of Product Manufacturing</a> section 9.4.1-9.4.4.
 For each Saved View OCCT STEP Reader will retrieve the following attributes:
 - set of displayed shape representations;
 - set of displayed PMI presentations;
index 5622146..17735f3 100644 (file)
@@ -35,7 +35,7 @@ To answer different needs of CASCADE users, this User's Guide offers the followi
   * If the 3D services proposed in AIS meet your requirements, you need only read chapter 3  @ref occt_visu_3 "AIS: Application Interactive Services".
   * If you need more detail, for example, a selection filter on another type of entity -- you should read chapter 2 @ref occt_visu_2 "Fundamental Concepts", chapter 3 @ref occt_visu_3 "AIS: Application Interactive Services", and 4 @ref occt_visu_4 "3D Presentations". You may want to begin with the chapter presenting AIS.
 
-For advanced information on visualization algorithms, see our <a href="http://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.  
+For advanced information on visualization algorithms, see our <a href="https://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
 
 @section occt_visu_2 Fundamental Concepts
 
@@ -88,7 +88,7 @@ Handle(AIS_InteractiveContext) aContext = new AIS_InteractiveContext (theViewer)
 BRepPrimAPI_MakeWedge aWedgeMaker (theWedgeDX, theWedgeDY, theWedgeDZ, theWedgeLtx);
 TopoDS_Solid aShape = aWedgeMaker.Solid();
 Handle(AIS_Shape) aShapePrs = new AIS_Shape (aShape); // creation of the presentable object
-aContext->Display (aShapePrs); // display the presentable object in the 3d viewer
+aContext->Display (aShapePrs, AIS_Shaded, 0, true);   // display the presentable object and redraw 3d viewer
 ~~~~~
 
 The shape is created using the *BRepPrimAPI_MakeWedge* command. An *AIS_Shape* is then created from the shape. When calling the *Display* command, the interactive context calls the Compute method of the presentable object to calculate the presentation data and transfer it to the viewer. See figure below.
@@ -137,14 +137,14 @@ Selectable object stores information about all created selection modes and sensi
 
 All successors of a selectable object must implement the method that splits its presentation into sensitive entities according to the given mode. The computed entities are arranged in one selection and added to the list of all selections of this object. No selection will be removed from the list until the object is deleted permanently.
 
-For all standard OCCT shapes, zero mode is supposed to select the whole object (but it may be redefined easily in the custom object). For example, the standard OCCT selection mechanism and *AIS_Shape* determine the following modes:
+For all standard OCCT shapes, zero mode is supposed to select the whole object (but it may be redefined easily in the custom object). For example, the standard OCCT selection mechanism and *AIS_Shape* determine the following modes (see AIS_Shape::SelectionMode()):
   - 0 -- selection of the entire object *(AIS_Shape)*;
-  - 1 -- selection of the vertices;
-  - 2 -- selection of the edges;
-  - 3 -- selection of the wires;
-  - 4 -- selection of the faces;
-  - 5 -- selection of the shells;
-  - 6 -- selection of the constituent solids.
+  - 1 -- selection of the vertices (TopAbs_VERTEX);
+  - 2 -- selection of the edges (TopAbs_EDGE);
+  - 3 -- selection of the wires (TopAbs_WIRE);
+  - 4 -- selection of the faces (TopAbs_FACE);
+  - 5 -- selection of the shells (TopAbs_SHELL);
+  - 6 -- selection of the constituent solids (TopAbs_SOLID).
 
 @figure{visualization_image006.png,"Hierarchy of references from sensitive entity to selectable object",400}
 
@@ -263,7 +263,7 @@ The package also contains two auxiliary classes, *Select3D_SensitivePoly* and *S
   - keeping selection BVH data up-to-date.
 
 A brief description of the main classes:
-  - *SelectMgr_FrustumBase*, *SelectMgr_Frustum*, *SelectMgr_RectangularFrustum*, *SelectMgr_TriangluarFrustum* and *SelectMgr_TriangularFrustumSet* -- interfaces and implementations of selecting frustums, these classes implement different SAT tests for overlap and inclusion detection. They also contain methods to measure characteristics of detected entities (depth, distance to center of geometry);
+  - *SelectMgr_BaseFrustum*, *SelectMgr_Frustum*, *SelectMgr_RectangularFrustum*, *SelectMgr_TriangularFrustum* and *SelectMgr_TriangularFrustumSet* -- interfaces and implementations of selecting frustums, these classes implement different SAT tests for overlap and inclusion detection. They also contain methods to measure characteristics of detected entities (depth, distance to center of geometry);
   - *SelectMgr_SensitiveEntity*, *SelectMgr_Selection* and *SelectMgr_SensitiveEntitySet* -- store and handle sensitive entities; *SelectMgr_SensitiveEntitySet* implements a primitive set for the second level BVH tree;
   - *SelectMgr_SelectableObject* and *SelectMgr_SelectableObjectSet* -- describe selectable objects. They also manage storage, calculation and removal of selections. *SelectMgr_SelectableObjectSet* implements a primitive set for the first level BVH tree;
   - *SelectMgr_ViewerSelector* -- encapsulates all logics of the selection algorithm and implements the third level BVH tree traverse;
@@ -274,7 +274,7 @@ A brief description of the main classes:
 *StdSelect* package contains the implementation of some *SelectMgr* classes and tools for creation of selection structures. For example,
   - *StdSelect_BRepOwner* -- defines an entity owner with a link to its topological shape and methods for highlighting;
   - *StdSelect_BRepSelectionTool* -- contains algorithms for splitting standard AIS shapes into sensitive primitives;
-  - *StdSelect_ViewerSelector3d* -- an example of *SelectMgr_ViewerSelecor* implementation, which is used in a default OCCT selection mechanism;
+  - *StdSelect_ViewerSelector3d* -- an example of *SelectMgr_ViewerSelector* implementation, which is used in a default OCCT selection mechanism;
   - *StdSelect_FaceFilter*, *StdSelect_EdgeFilter* -- implementation of selection filters.
 
 @subsubsection occt_visu_2_2_4 Examples of usage
@@ -315,7 +315,7 @@ void InteractiveBox::ComputeSelection (const Handle(SelectMgr_Selection)& theSel
 ~~~~
 
 The algorithms for creating selection structures store sensitive primitives in *SelectMgr_Selection* instance. Each *SelectMgr_Selection* sequence in the list of selections of the object must correspond to a particular selection mode.
-To describe the decomposition of the object into selectable primitives, a set of ready-made sensitive entities is supplied in *Select3D* package. Custom sensitive primitives can be defined through inheritance from *SelectBasics_SensitiveEntity*.
+To describe the decomposition of the object into selectable primitives, a set of ready-made sensitive entities is supplied in *Select3D* package. Custom sensitive primitives can be defined through inheritance from *Select3D_SensitiveEntity*.
 To make custom interactive objects selectable or customize selection modes of existing objects, the entity owners must be defined. They must inherit *SelectMgr_EntityOwner* interface.
 
 Selection structures for any interactive object are created in *SelectMgr_SelectableObject::ComputeSelection()* method.
@@ -340,7 +340,7 @@ The *StdSelect_BRepSelectionTool* class provides a high level API for computing
 
 The traditional way of highlighting selected entity owners adopted by Open CASCADE Technology assumes that each entity owner highlights itself on its own. This approach has two drawbacks:
 
-  - each entity owner has to maintain its own *Prs3d_Presentation* object, that results in a considerable memory overhead;
+  - each entity owner has to maintain its own *Graphic3d_Structure* object, that results in a considerable memory overhead;
   - drawing selected owners one by one is not efficient from the visualization point of view.
 
 Therefore, to overcome these limitations, OCCT has an alternative way to implement the highlighting of a selected presentation. Using this approach, the interactive object itself will be responsible for the highlighting, not the entity owner.
@@ -348,7 +348,6 @@ Therefore, to overcome these limitations, OCCT has an alternative way to impleme
 On the basis of *SelectMgr_EntityOwner::IsAutoHilight()* return value, *AIS_InteractiveContext* object either uses the traditional way of highlighting (in case if *IsAutoHilight()* returns TRUE) or groups such owners according to their selectable objects and finally calls *SelectMgr_SelectableObject::HilightSelected()* or *SelectMgr_SelectableObject::ClearSelected()*, passing a group of owners as an argument.
 
 Hence, an application can derive its own interactive object and redefine virtual methods *HilightSelected()*, *ClearSelected()* and *HilightOwnerWithColor()* from *SelectMgr_SelectableObject*. *SelectMgr_SelectableObject::GetHilightPresentation* and *SelectMgr_SelectableObject::GetSelectPresentation* methods can be used to optimize filling of selection and highlight presentations according to the user's needs.
-The *AIS_InteractiveContext::HighlightSelected()* method can be used for efficient redrawing of the selection presentation for a given interactive object from an application code.
 
 After all the necessary sensitive entities are computed and packed in *SelectMgr_Selection* instance with the corresponding owners in a redefinition of *SelectMgr_SelectableObject::ComputeSelection()* method, it is necessary to register the prepared selection in *SelectMgr_SelectionManager* through the following steps:
   - if there was no *AIS_InteractiveContext* opened, create an interactive context and display the selectable object in it;
@@ -376,7 +375,7 @@ theContext->Activate (theBox, 1);
 
 // Run the detection mechanism for activated entities in the current mouse coordinates and in the current view.
 // Detected owners will be highlighted with context highlight color
-theContext->MoveTo (aXMousePos, aYMousePos, myView);
+theContext->MoveTo (aXMousePos, aYMousePos, myView, false);
 // Select the detected owners
 theContext->Select();
 // Iterate through the selected owners
@@ -449,6 +448,7 @@ void PackageName_ClassName::Compute (const Handle(PrsMgr_PresentationManager3d)&
 ~~~~~
 
 #### For hidden line removal (HLR) mode in 3D:
+
 ~~~~~
 void PackageName_ClassName::Compute (const Handle(Prs3d_Projector)& theProjector,
                                      const Handle(Prs3d_Presentation)& thePresentation);
@@ -460,7 +460,7 @@ The view can have two states: the normal mode or the computed mode (Hidden Line
 
 By convention, the Interactive Object accepts or rejects the representation of HLR mode. It is possible to make this declaration in one of two ways:
 
-* Initially by using one of the values of the enumeration *PrsMgr_TypeOfPresentation*:
+* Initially by using one of the values of the enumeration *PrsMgr_TypeOfPresentation3d*:
   * *PrsMgr_TOP_AllView*,
   * *PrsMgr_TOP_ProjectorDependant*
 
@@ -475,7 +475,7 @@ The type of the HLR algorithm is stored in *Prs3d_Drawer* of the shape. It is a
 The type of the HLR algorithm used for *AIS_Shape* can be changed by calling the *AIS_Shape::SetTypeOfHLR()* method.
 The current HLR algorithm type can be obtained using *AIS_Shape::TypeOfHLR()* method is to be used.
 
-These methods get the value from the drawer of *AIS_Shape*. If the HLR algorithm type in the *AIS_Drawer* is set to *Prs3d_TOH_NotSet*, the *AIS_Drawer* gets the value from the default drawer of *AIS_InteractiveContext*.
+These methods get the value from the drawer of *AIS_Shape*. If the HLR algorithm type in the *Prs3d_Drawer* is set to *Prs3d_TOH_NotSet*, the *Prs3d_Drawer* gets the value from the default drawer of *AIS_InteractiveContext*.
 So it is possible to change the default HLR algorithm used by all newly displayed interactive objects. The value of the HLR algorithm type stored in the context drawer can be *Prs3d_TOH_Algo* or *Prs3d_TOH_PolyAlgo*. The polygonal algorithm is the default one.
 
 @subsubsection occt_visu_3_2_3 Presentation modes
@@ -503,7 +503,7 @@ The functions *AIS_InteractiveContext::SetDisplayMode* and *AIS_InteractiveConte
 
 At dynamic detection, the presentation echoed by the Interactive Context, is by default the presentation already on the screen.
 
-The functions  *AIS_InteractiveObject::SetHilightMode* and *AIS_InteractiveObject::UnSetHilightMode* allow specifying the display mode used for highlighting (so called highlight mode), which is valid independently from the active representation of the object. It makes no difference whether this choice is temporary or definitive.
+The functions  *AIS_InteractiveObject::SetHilightMode* and *AIS_InteractiveObject::UnsetHilightMode* allow specifying the display mode used for highlighting (so called highlight mode), which is valid independently from the active representation of the object. It makes no difference whether this choice is temporary or definitive.
 
 Note that the same presentation (and consequently the same highlight mode) is used for highlighting *detected* objects and for highlighting *selected* objects, the latter being drawn with a special *selection color* (refer to the section related to *Interactive Context* services).
 
@@ -516,9 +516,14 @@ If you do not want an object to be affected by a *FitAll* view, you must declare
 Let us take for example the class called *IShape* representing an interactive object:
 
 ~~~~~
-myPk_IShape::myPK_IShape (const TopoDS_Shape& theShape, PrsMgr_TypeOfPresentation theType)
+myPk_IShape::myPk_IShape (const TopoDS_Shape& theShape, PrsMgr_TypeOfPresentation theType)
 : AIS_InteractiveObject (theType), myShape (theShape) { SetHilightMode (0); }
 
+Standard_Boolean myPk_IShape::AcceptDisplayMode (const Standard_Integer theMode) const
+{
+  return theMode == 0 || theMode == 1;
+}
+
 void myPk_IShape::Compute (const Handle(PrsMgr_PresentationManager3d)& thePrsMgr,
                            const Handle(Prs3d_Presentation)& thePrs,
                            const Standard_Integer theMode)
@@ -598,14 +603,14 @@ The following functions allow "moving" the representation and selection of Inter
 
 #### Connect an interactive object to an applicative entity
 
-Each Interactive Object has functions that allow attributing it an *Owner* in form of a *Transient*.
+Each Interactive Object has functions that allow attributing it an *GetOwner* in form of a *Transient*.
   * *AIS_InteractiveObject::SetOwner*
   * *AIS_InteractiveObject::HasOwner*
-  * *AIS_InteractiveObject::Owner*
+  * *AIS_InteractiveObject::GetOwner*
 
 An interactive object can therefore be associated or not with an applicative entity, without affecting its behavior.
 
-**NOTE:** Don't be confused by owners of another kind - *SelectBasics_EntityOwner* used for identifying selectable parts of the object or object itself.
+**NOTE:** Don't be confused by owners of another kind - *SelectMgr_EntityOwner* used for identifying selectable parts of the object or object itself.
 
 #### Resolving coincident topology
 
@@ -758,6 +763,9 @@ theCtx->SetDisplayMode (2, true);
 
 *PresentationManager* and *Selector3D*, which manage the presentation and selection of present interactive objects, are associated to the main Viewer.
 
+*WARNING!* Do NOT use integer values (like in sample above) in real code - use appropriate enumerations instead!
+Each presentable object has independent list of supported display and selection modes; for instance, *AIS_DisplayMode* enumeration is applicable only to *AIS_Shape* presentations.
+
 @subsection occt_visu_3_4 Local Selection
 
 @subsubsection occt_visu_3_4_1 Selection Modes
@@ -767,7 +775,7 @@ See, for example, *MeshVS_SelectionModeFlags* for *MeshVS_Mesh* object.
 
 *AIS_Shape* is the most used interactive object. It provides API to manage selection operations on the constituent elements of shapes (selection of vertices, edges, faces, etc.). The Selection Mode for a specific shape type (*TopAbs_ShapeEnum*) is returned by method *AIS_Shape::SelectionMode()*.
 
-The method *AIS_InteractiveObject::Display()* without a Selection Mode argument activates the default Selection Mode of the object.
+The method *AIS_InteractiveContext::Display()* without a Selection Mode argument activates the default Selection Mode of the object.
 The methods *AIS_InteractiveContext::Activate()* and *AIS_InteractiveContext::Deactivate()* activate and deactivate a specific Selection Mode.
 
 More than one Selection Mode can be activated at the same time (but default 0 mode for selecting entire object is exclusive - it cannot be combined with others).
@@ -815,7 +823,7 @@ myContext->AddFilter (aFil1);
 myContext->AddFilter (aFil2);
 
 // only faces of revolution or planar faces will be selected
-myContext->MoveTo (thePixelX, thePixelY, myView);
+myContext->MoveTo (thePixelX, thePixelY, myView, true);
 ~~~~~
 
 @subsubsection occt_visu_3_4_6 Selection
@@ -848,6 +856,7 @@ The Interactive Object itself can be retrieved by method *SelectMgr_EntityOwner:
 In case of *AIS_Shape*, the (sub)shape is returned by method *StdSelect_BRepOwner::Shape*.
 
 #### Example
+
 ~~~~~
 for (myAISCtx->InitSelected(); myAISCtx->MoreSelected(); myAISCtx->NextSelected())
 {
@@ -879,12 +888,12 @@ If you want to give a particular type and signature to your interactive object,
 The **Datum** groups together the construction elements such as lines, circles, points, trihedrons, plane trihedrons, planes and axes.
 
 *AIS_Point, AIS_Axis, AIS_Line, AIS_Circle, AIS_Plane* and *AIS_Trihedron* have four selection modes:
-  * mode 0 : selection of a trihedron;
-  * mode 1 : selection of the origin of the trihedron;
-  * mode 2 : selection of the axes;
-  * mode 3 : selection of the planes XOY, YOZ, XOZ.
+  * mode AIS_TrihedronSelectionMode_EntireObject : selection of a trihedron;
+  * mode AIS_TrihedronSelectionMode_Origin : selection of the origin of the trihedron;
+  * mode AIS_TrihedronSelectionMode_Axes : selection of the axes;
+  * mode AIS_TrihedronSelectionMode_MainPlanes : selection of the planes XOY, YOZ, XOZ.
 
-when you activate one of modes: 1 2 3 4, you pick AIS objects of type:
+when you activate one of modes, you pick AIS objects of type:
   * *AIS_Point*;
   * *AIS_Axis* (and information on the type of axis);
   * *AIS_Plane* (and information on the type of plane).
@@ -901,8 +910,8 @@ For the presentation of planes and trihedra, the default length unit is millimet
 The **Object** type includes topological shapes, and connections between shapes.
 
 *AIS_Shape* has two visualization modes:
-  * mode 0 : Line (default mode)
-  * mode 1 : Shading (depending on the type of shape)
+  * mode AIS_WireFrame : Line (default mode)
+  * mode AIS_Shaded : Shading (depending on the type of shape)
 
 *AIS_ConnectedInteractive* is an Interactive Object connecting to another interactive object reference, and located elsewhere in the viewer makes it possible not to calculate presentation and selection, but to deduce them from your object reference.
 *AIS_MultipleConnectedInteractive* is an object connected to a list of interactive objects (which can also be Connected objects. It does not require memory-hungry presentation calculations).
@@ -1196,7 +1205,7 @@ aGroup->SetGroupPrimitivesAspect (myDrawer->ShadingAspect()->Aspect());
 
 @subsubsection occt_visu_4_2_5 Text primitive
 
-*TKOpenGL* toolkit renders text labels using texture fonts. *Graphic3d* text primitives have the following features:
+*TKOpenGl* toolkit renders text labels using texture fonts. *Graphic3d* text primitives have the following features:
   * fixed size (non-zoomable) or zoomable,
   * can be rotated to any angle in the view plane,
   * support unicode charset.
@@ -1204,46 +1213,13 @@ aGroup->SetGroupPrimitivesAspect (myDrawer->ShadingAspect()->Aspect());
 The text attributes for the group could be defined with the *Graphic3d_AspectText3d* attributes group.
 To add any text to the graphic structure you can use the following methods:
 ~~~~~
-void Graphic3d_Group::Text (const Standard_CString theText,
-                            const Graphic3d_Vertex& thePoint,
-                            const Standard_Real theHeight,
-                            const Quantity_PlaneAngle theAngle,
-                            const Graphic3d_TextPath theTp,
-                            const Graphic3d_HorizontalTextAlignment theHta,
-                            const Graphic3d_VerticalTextAlignment theVta,
-                            const Standard_Boolean theToEvalMinMax);
-~~~~~
-
-The meaning of these parameters is as follows: 
-* *theText* - the text string,
-* *thePoint* - the three-dimensional position of the text,
-* *theHeight* - the text height,
-* *theAngle* - the text orientation (at the moment, this parameter has no effect, but you can specify the text orientation through the *Graphic3d_AspectText3d* attributes).
-* *theTp* defines the text path,
-* *theHta* - the horizontal alignment of the text,
-* *theVta* - the vertical alignment of the text.
+void Graphic3d_Group::AddText (const Handle(Graphic3d_Text)& theTextParams,
+                               const Standard_Boolean theToEvalMinMax);
+~~~~~
 
 You can pass FALSE as *theToEvalMinMax* if you do not want the graphic3d structure boundaries to be affected by the text position.
 
 **Note** that the text orientation angle can be defined by *Graphic3d_AspectText3d* attributes.
-~~~~~
-void Graphic3d_Group::Text (const Standard_CString theText,
-                            const Graphic3d_Vertex& thePoint,
-                            const Standard_Real theHeight,
-                            const Standard_Boolean theToEvalMinMax);
-void Graphic3d_Group::Text (const TCcollection_ExtendedString& theText,
-                            const Graphic3d_Vertex& thePoint,
-                            const Standard_Real theHeight,
-                            const Quantity_PlaneAngle theAngle,
-                            const Graphic3d_TextPath theTp,
-                            const Graphic3d_HorizontalTextAlignment theHta,
-                            const Graphic3d_VerticalTextAlignment theVta,
-                            const Standard_Boolean theToEvalMinMax);
-void Graphic3d_Group::Text (const TCcollection_ExtendedString& theText,
-                            const Graphic3d_Vertex& thePoint,
-                            const Standard_Real theHeight,
-                            const Standard_Boolean theToEvalMinMax);
-~~~~~
 
 See the example:
 ~~~~~
@@ -1257,8 +1233,10 @@ aTextAspect->SetTextAngle (45.0);
 aGroup->SetPrimitivesAspect (aTextAspect);
 
 // add a text primitive to the structure
-Graphic3d_Vertex aPoint (1, 1, 1);
-aGroup->Text (Standard_CString ("Text"), aPoint, 16.0);
+Handle(Graphic3d_Text) aText = new Graphic3d_Text (16.0f);
+aText->SetText ("Text");
+aText->SetPosition (gp_Pnt (1, 1, 1));
+aGroup->AddText (aText);
 ~~~~~
 
 @subsubsection occt_visu_4_2_6 Materials
@@ -1451,8 +1429,8 @@ aView->Update();
 **IOD** -- defines the intraocular distance (in world space units).
 
 There are two types of IOD:
-* _IODType_Absolute_ : Intraocular distance is defined as an absolute value.
-* _IODType_Relative_ : Intraocular distance is defined relative to the camera focal length (as its coefficient).
+* _Graphic3d_Camera::IODType_Absolute_ : Intraocular distance is defined as an absolute value.
+* _Graphic3d_Camera::IODType_Relative_ : Intraocular distance is defined relative to the camera focal length (as its coefficient).
 
 **Field of view (FOV)** -- defines the field of camera view by y axis in degrees (45° is default).
 
@@ -1468,7 +1446,7 @@ To enable stereo projection, your workstation should meet the following requirem
 
 In stereographic projection mode the camera prepares two projection matrices to display different stereo-pictures for the left and for the right eye. In a non-stereo camera this effect is not visible because only the same projection is used for both eyes.
 
-To enable quad buffering support you should provide the following settings to the graphic driver *opengl_caps*:
+To enable quad buffering support you should provide the following settings to the graphic driver *OpenGl_Caps*:
 
 ~~~~~
 Handle(OpenGl_GraphicDriver) aDriver = new OpenGl_GraphicDriver();
@@ -1493,7 +1471,7 @@ aView->Update();
 The algorithm of frustum culling on CPU-side is activated by default for 3D viewer. This algorithm allows skipping the presentation outside camera at the rendering stage, providing better performance. The following features support this method:
 * *Graphic3d_Structure::CalculateBoundBox()* is used to calculate axis-aligned bounding box of a presentation considering its transformation.
 * *V3d_View::SetFrustumCulling* enables or disables frustum culling for the specified view.
-* Classes *OpenGl_BVHClipPrimitiveSet* and *OpenGl_BVHTreeSelector* handle the detection of outer objects and usage of acceleration structure for frustum culling.
+* Classes *Graphic3d_BvhCStructureSet* and *Graphic3d_CullingTool* handle the detection of outer objects and usage of acceleration structure for frustum culling.
 * *BVH_BinnedBuilder* class splits several objects with null bounding box.
 
 @subsubsection occt_visu_4_4_9 View background styles
@@ -1537,7 +1515,7 @@ Standard_Boolean V3d_View::Dump (const Standard_CString theFile,
 ~~~~
 Dumps the scene into an image file with the view dimensions.
 The raster image data handling algorithm is based on the *Image_AlienPixMap* class. The supported extensions are ".png", ".bmp", ".jpg" and others supported by **FreeImage** library.
-The value passed as *theBufferType* argument defines the type of the buffer for an output image *(RGB, RGBA, floating-point, RGBF, RGBAF)*. Method returns TRUE if the scene has been successfully dumped.
+The value passed as *theBufferType* argument defines the type of the buffer for an output image (RGB, RGBA, floating-point, RGBF, RGBAF). Method returns TRUE if the scene has been successfully dumped.
 
 ~~~~
 Standard_Boolean V3d_View::ToPixMap (Image_PixMap&               theImage,
@@ -1728,7 +1706,7 @@ aView->Update();
 
 Back face culling reduces the rendered number of triangles (which improves the performance) and eliminates artifacts at shape boundaries. However, this option can be used only for solid objects, where the interior is actually invisible from any point of view. Automatic back-face culling mechanism is turned on by default, which is controlled by *V3d_View::SetBackFacingModel()*.
 
-The following features are applied in *StdPrs_ToolShadedShape::IsClosed()*, which is used for definition of back face culling in *ShadingAspect*:
+The following features are applied in *StdPrs_ToolTriangulatedShape::IsClosed()*, which is used for definition of back face culling in *ShadingAspect*:
 * disable culling for free closed Shells (not inside the Solid) since reversed orientation of a free Shell is a valid case;
 * enable culling for Solids packed into a compound;
 * ignore Solids with incomplete triangulation.
@@ -1856,7 +1834,7 @@ myAISContext->Display (anAISShape);
 Follow the procedure below to compute the presentable object:
 
 1. Build a presentable object inheriting from *AIS_InteractiveObject* (refer to the Chapter on @ref occt_visu_2_1 "Presentable Objects").
-2. Reuse the *Prs3d_Presentation* provided as an argument of the compute methods.
+2. Reuse the *Graphic3d_Structure* provided as an argument of the compute methods.
 
 **Note** that there are two compute methods: one for a standard representation, and the other for a degenerated representation, i.e. in hidden line removal and wireframe modes.
 
@@ -1864,14 +1842,14 @@ Let us look at the example of compute methods
 
 ~~~~~
 void MyPresentableObject::Compute (const Handle(PrsMgr_PresentationManager3d)& thePrsManager,
-                                   const Handle(Prs3d_Presentation)& thePrs,
+                                   const Handle(Graphic3d_Structure)& thePrs,
                                    const Standard_Integer theMode)
 (
   //...
 )
 
 void MyPresentableObject::Compute (const Handle(Prs3d_Projector)& theProjector,
-                                   const Handle(Prs3d_Presentation)& thePrs)
+                                   const Handle(Graphic3d_Structure)& thePrs)
 (
   //...
 )
@@ -1879,7 +1857,7 @@ void MyPresentableObject::Compute (const Handle(Prs3d_Projector)& theProjector,
 
 @subsubsection occt_visu_4_5_6 Create primitives in the interactive object
 
-Get the group used in *Prs3d_Presentation*.
+Get the group used in *Graphic3d_Structure*.
 
 ~~~~~
 Handle(Graphic3d_Group) aGroup = thePrs->NewGroup();
index 25e6f86..e2a9261 100644 (file)
@@ -5,7 +5,7 @@
 
 @section occt_xde_1 Introduction
 
-This manual explains how to use the Extended Data Exchange (XDE). It provides basic documentation on setting up and using XDE. For advanced information on XDE and its applications, see our <a href="http://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
+This manual explains how to use the Extended Data Exchange (XDE). It provides basic documentation on setting up and using XDE. For advanced information on XDE and its applications, see our <a href="https://www.opencascade.com/content/tutorial-learning">E-learning & Training</a> offerings.
 
 The Extended Data Exchange (XDE) module allows extending the scope of exchange by translating  additional data attached to geometric BREP data, thereby improving the interoperability with external software. 
 
index 39f14ed..b5299b1 100644 (file)
@@ -438,7 +438,7 @@ proc about {} {
   .about.links.text tag bind link1 <Leave> ".about.links.text configure -cursor arrow"
   .about.links.text tag configure link1 -underline true -justify center
   pack .about.links.text -fill both
-  label .about.copyright.text -text "Copyright (c) 1999-2014 OPEN CASCADE SAS"
+  label .about.copyright.text -text "Copyright (c) 1999-2019 OPEN CASCADE SAS"
   button .about.button -text "OK" -command "destroy .about"
   pack .about.button -padx 10 -pady 10
   pack .about.copyright.text
index 5745283..0ca8a96 100644 (file)
Binary files a/src/DrawResources/OCC_logo.png and b/src/DrawResources/OCC_logo.png differ