0024722: Move functionality of WOK command wgendoc to OCCT tool gendoc
authoromy <omy@opencascade.com>
Thu, 10 Apr 2014 14:23:18 +0000 (18:23 +0400)
committerapn <apn@opencascade.com>
Thu, 10 Apr 2014 15:21:16 +0000 (19:21 +0400)
Command gendoc improved to:
- generate Reference Manual documentation (OCCT classes reference) with option -refman; option -overview can be used for generation of overview documentation;
- generate PDF documents for all User Guides automatically (for files listed in FILES_PDF.txt);
- check availability of third-party tools (Doxygen, Inkscape etc.) and properly report warnings and errors.
- use templates of configuration files for third-party tools instead of their generation. These template files are located in dox/resources folder

Tcl scripts are moved from dox folder to adm.
Doxygen warnings are eliminated.
Moved all auxilary functions to occaux.tcl.
Fixed Reference manual generation on *nix platform.
Fixed PDF generation on *nix platforms.

57 files changed:
adm/gendoc.tcl [new file with mode: 0644]
adm/occaux.tcl [new file with mode: 0644]
adm/start.tcl [new file with mode: 0644]
dox/FILES.txt [deleted file]
dox/FILES_HTML.txt [new file with mode: 0644]
dox/FILES_PDF.txt [new file with mode: 0644]
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/automake.md
dox/dev_guides/building/building.md
dox/dev_guides/building/cmake/cmake.md
dox/dev_guides/building/code_blocks.md
dox/dev_guides/building/msvc.md
dox/dev_guides/building/wok/wok.md
dox/dev_guides/building/xcode.md
dox/dev_guides/cdl/cdl.md
dox/dev_guides/contribution/coding_rules.md
dox/dev_guides/contribution_workflow/contribution_workflow.md
dox/dev_guides/debug/debug.md
dox/dev_guides/dev_guides.md
dox/dev_guides/documentation/documentation.md
dox/dev_guides/git_guide/git_guide.md
dox/dev_guides/tests/tests.md
dox/dev_guides/wok/wok.md
dox/license.md [new file with mode: 0644]
dox/occdoc.tcl [deleted file]
dox/overview/Overview.md
dox/overview/overview.md [new file with mode: 0644]
dox/resources/index.html [new file with mode: 0644]
dox/resources/occt_pdf_template.tex [new file with mode: 0644]
dox/resources/occt_rm.doxyfile [new file with mode: 0644]
dox/resources/occt_ug_html.doxyfile [new file with mode: 0644]
dox/resources/occt_ug_pdf.doxyfile [new file with mode: 0644]
dox/start.tcl [deleted file]
dox/tutorial/images/tutorial_image003.svg
dox/tutorial/tutorial.md
dox/user_guides/brep_wp/brep_wp.md
dox/user_guides/draw_test_harness.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/ocaf_functionmechanism_wp/ocaf_functionmechanism_wp.md
dox/user_guides/ocaf_tree_wp/ocaf_tree_wp.md
dox/user_guides/ocaf_wp/ocaf_wp.md
dox/user_guides/shape_healing/shape_healing.md
dox/user_guides/step/step.md
dox/user_guides/tobj/tobj.md
dox/user_guides/user_guides.md
dox/user_guides/visualization/visualization.md
dox/user_guides/voxels_wp/voxels_wp.md
dox/user_guides/xde/xde.md
gendoc [new file with mode: 0644]
gendoc.bat
gendoc.sh [deleted file]

diff --git a/adm/gendoc.tcl b/adm/gendoc.tcl
new file mode 100644 (file)
index 0000000..2242696
--- /dev/null
@@ -0,0 +1,825 @@
+# =======================================================================
+# Created on: 2014-03-21
+# Created by: OMY
+# Copyright (c) 1996-1999 Matra Datavision
+# Copyright (c) 1999-2014 OPEN CASCADE SAS
+#
+# This file is part of Open CASCADE Technology software library.
+#
+# This library is free software; you can redistribute it and/or modify it under
+# the terms of the GNU Lesser General Public License version 2.1 as published
+# by the Free Software Foundation, with special exception defined in the file
+# OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+# distribution for complete text of the license and disclaimer of any warranty.
+#
+# Alternatively, this file may be used under the terms of Open CASCADE
+# commercial license or contractual agreement.
+# 
+# Brief:  This script compiles OCCT documents from *.md files to HTML pages
+# =======================================================================
+
+# ======================================
+#  Common functions
+# ======================================
+
+# Prints help message
+proc OCCDoc_PrintHelpMessage {} {
+    puts "\nUsage: gendoc \[-h\] {-refman|-overview} \[-html|-pdf|-chm\] \[-m=<list of modules>|-ug=<list of docs>\] \[-v\] \[-s=<search_mode>\] \[-mathjax=<path>\]"
+    puts ""
+    puts "Options are:"
+    puts ""
+    puts "choice of documentation to be generated:"
+    puts "  -overview          : To generate Overview and User Guides"
+    puts "                       (cannot be used with -refman)"
+    puts "  -refman            : To generate class Reference Manual"
+    puts "                       (cannot be used with -overview)"
+    puts ""
+    puts "choice of output format:"
+    puts "  -html              : To generate HTML files"
+    puts "                       (default, cannot be used with -pdf or -chm)"
+    puts "  -pdf               : To generate PDF files"
+    puts "                       (cannot be used with -refman, -html, or -chm)"
+    puts "  -chm               : To generate CHM files"
+    puts "                       (cannot be used with -html or -pdf)"
+    puts ""
+    puts "additional options:"
+    puts "  -m=<modules_list>  : List of OCCT modules (separated with comma),"
+    puts "                       for generation of Reference Manual"
+    puts "  -ug=<docs_list>    : List of MarkDown documents (separated with comma),"
+    puts "                       to use for generation of Overview / User Guides"
+    puts "  -mathjax=<path>    : To use local or alternative copy of MathJax"
+    puts "  -s=<search_mode>   : Specifies the Search mode of HTML documents"
+    puts "                       Can be: none | local | server | external"
+    puts "  -h                 : Prints this help message"
+    puts "  -v                 : Enables more verbose output"    
+}
+
+# A command for User Documentation compilation
+proc gendoc {args} {
+
+  # Parameters
+  set DOC_TYPE                  "REFMAN"
+  set GEN_MODE                  "HTML_ONLY"
+  set DOCFILES                  {}
+  set MODULES                   {}
+  set DOCLABEL                  ""
+  set VERB_MODE                 "NO"
+  set SEARCH_MODE               "none"
+  set MATHJAX_LOCATION          "http://cdn.mathjax.org/mathjax/latest"
+  set mathjax_js_name           "MathJax.js"
+  set DOCTYPE_COMBO_FLAG        0
+  set GENMODE_COMBO_FLAG        0
+  set GENERATE_PRODUCTS_REFMAN "NO"
+
+  global available_docfiles;   # The full list of md files for HTML or CHM generation
+  global available_pdf;        # The full list of md files for PDF generation
+  global tcl_platform
+  global args_names
+  global args_values
+  global env
+
+  # Load list of docfiles
+  if { [OCCDoc_LoadFilesList] != 0 } {
+    puts "Error: File FILES_HTML.txt or FILES_PDF.txt was not found on this computer.\nAborting..."
+    return -1
+  }
+
+  # Parse CL arguments
+  if {[OCCDoc_ParseArguments $args] == 1} {
+    return -1
+  }
+
+  # Print help message if no arguments provided
+  if {[llength $args_names] == 0} {
+    OCCDoc_PrintHelpMessage
+    return 0
+  }
+
+  foreach arg_n $args_names {
+    if {$arg_n == "h"} {
+      OCCDoc_PrintHelpMessage
+      return 0
+    } elseif {$arg_n == "html"} {
+      if { ([ lsearch $args_names "refman" ]   == -1) &&
+           ([ lsearch $args_names "overview" ] == -1) } {
+        puts "Warning: Please specify -refman or -overview argument."
+        return -1
+      }
+      if { [ lsearch $args_names "refman" ] != -1 } {
+        continue
+      }
+      if { $GENMODE_COMBO_FLAG != 1 } {
+        set GEN_MODE "HTML_ONLY"
+        set GENMODE_COMBO_FLAG 1
+      } else {
+        puts "Error: Options -html, -pdf and -chm can not be combined."
+        return -1
+      }
+    } elseif {$arg_n == "chm"} {
+      if { ([ lsearch $args_names "refman" ]   == -1) &&
+           ([ lsearch $args_names "overview" ] == -1) } {
+        puts "Warning: Please specify -refman or -overview argument."
+        return -1
+      }
+      if { [ lsearch $args_names "refman" ] != -1 } {
+        continue
+      }
+      if { $GENMODE_COMBO_FLAG != 1 } { 
+        set GEN_MODE "CHM_ONLY"
+        set GENMODE_COMBO_FLAG 1
+      } else {
+        puts "Error: Options -html, -pdf and -chm cannot be combined."
+        return -1
+      }
+    } elseif {$arg_n == "pdf"} {
+      if { ([ lsearch $args_names "refman" ]   == -1) &&
+           ([ lsearch $args_names "overview" ] == -1) } {
+        puts "Warning: Please specify -refman or -overview argument."
+        return -1
+      }
+      if { [ lsearch $args_names "refman" ] != -1 } {
+        continue
+      }
+      if { $GENMODE_COMBO_FLAG != 1 } { 
+        set GEN_MODE "PDF_ONLY"
+        set GENMODE_COMBO_FLAG 1
+      } else {
+        puts "Error: Options -html, -pdf and -chm cannot be combined."
+        return -1
+      }
+    } elseif {$arg_n == "overview"} {
+      if { $DOCTYPE_COMBO_FLAG != 1 } {
+        set DOC_TYPE "OVERVIEW"
+        set DOCTYPE_COMBO_FLAG 1
+      } else {
+        puts "Error: Options -refman and -overview cannot be combined."
+        return -1
+      }
+
+      # Print ignored options
+      if { [ lsearch $args_names "m" ] != -1 } {
+        puts "\nInfo: The following options will be ignored: \n"
+        puts "  * -m"
+      }
+      puts ""
+    } elseif {$arg_n == "refman"} {
+      if { $DOCTYPE_COMBO_FLAG != 1 } { 
+        set DOC_TYPE "REFMAN"
+        set DOCTYPE_COMBO_FLAG 1
+        if { [file exists [pwd]/src/VAS/Products.tcl] } {
+          set GENERATE_PRODUCTS_REFMAN "YES"
+        }
+      } else {
+        puts "Error: Options -refman and -overview cannot be combined."
+        return -1
+      }
+      # Print ignored options
+      if { ([ lsearch $args_names "pdf" ]     != -1) || 
+           ([ lsearch $args_names "chm" ]     != -1) || 
+           ([ lsearch $args_names "ug" ]      != -1) } {
+        puts "\nInfo: The following options will be ignored: \n"
+        if { [ lsearch $args_names "pdf" ] != -1 } {
+          puts "  * -pdf"
+        }
+        if { [ lsearch $args_names "chm" ] != -1 } {
+          puts "  * -chm"
+        }
+        if { [ lsearch $args_names "ug" ] != -1 } {
+          puts "  * -ug"
+        }
+        puts ""
+      }
+      
+      if { $GENERATE_PRODUCTS_REFMAN == "YES" } {
+        if { [ lsearch $args_names "m" ] == -1 } {
+          puts "\nError: Cannot generate Reference Manual for the whole set of OCC Products."
+          puts "Aborting..."
+          return -1
+        }
+      }
+    } elseif {$arg_n == "v"} {
+      set VERB_MODE "YES"
+    } elseif {$arg_n == "ug"} {
+      if { ([ lsearch $args_names "refman" ]   != -1) } {
+        continue
+      }
+      if {$args_values(ug) != "NULL"} {
+        set DOCFILES $args_values(ug)
+      } else {
+        puts "Error in argument ug."
+        return -1
+      }
+      # Check if all chosen docfiles are correct
+      foreach docfile $DOCFILES {
+        if { [ lsearch $args_names "pdf" ] == -1 } {
+          # Check to generate HTMLs
+          if { [lsearch $available_docfiles $docfile] == -1 } {
+            puts "Error: File \"$docfile\" is not presented in the list of available docfiles."
+            puts "       Please specify the correct docfile name."
+            return -1
+          } 
+        } else {
+          # Check to generate PDFs
+          if { [lsearch $available_pdf $docfile] == -1 } {
+            puts "Error: File \"$docfile\" is not presented in the list of generic PDFs."
+            puts "       Please specify the correct pdf name."
+            return -1
+          }
+        }
+      }
+    } elseif {$arg_n == "m"} {
+      if { [ lsearch $args_names "overview" ] != -1 } {
+        continue
+      }
+      if {$args_values(m) != "NULL"} {
+        set MODULES $args_values(m)
+      } else {
+        puts "Error in argument m."
+        return -1
+      }
+    } elseif {$arg_n == "s"} {
+      if { [ lsearch $args_names "pdf" ] != -1 } {
+        continue
+      }
+      if {$args_values(s) != "NULL"} {
+        set SEARCH_MODE $args_values(s)
+      } else {
+        puts "Error in argument s."
+        return -1
+      }
+    } elseif {$arg_n == "mathjax"} {
+      if { [ lsearch $args_names "pdf" ] != -1 } {
+        set possible_mathjax_loc $args_values(mathjax)
+        if {[file exist [file join $possible_mathjax_loc $mathjax_js_name]]} {
+          set MATHJAX_LOCATION $args_values(mathjax)
+          puts "$MATHJAX_LOCATION"
+        } else {
+          puts "Warning: $mathjax_js_name is not found in $possible_mathjax_loc."
+          puts "         MathJax will be used from $MATHJAX_LOCATION"
+        }
+      } else {
+        puts "Warning: MathJax is not used with pdf and will be ignored."
+      }
+    } else {
+      puts "\nWrong argument: $arg_n"
+      OCCDoc_PrintHelpMessage
+      return -1
+    }
+  }
+
+  # Check the existence of the necessary tools
+  set DOXYGEN_PATH  ""
+  set GRAPHVIZ_PATH ""
+  set INKSCAPE_PATH ""
+  set PDFLATEX_PATH ""
+  set HHC_PATH      ""
+
+  OCCDoc_DetectNecessarySoftware $DOXYGEN_PATH $GRAPHVIZ_PATH $INKSCAPE_PATH $HHC_PATH $PDFLATEX_PATH
+
+  if {$DOXYGEN_PATH == ""} {
+    puts " Aborting..."
+    return -1
+  }
+
+  if {"$::tcl_platform(platform)" == "windows"} {
+    if { ($GEN_MODE == "CHM_ONLY") && ($HHC_PATH == "") } {
+      puts " Aborting..."
+      return -1
+    }
+  }
+
+  if { ($PDFLATEX_PATH == "") && ($GEN_MODE == "PDF_ONLY") } {
+    puts " Aborting..."
+    return -1
+  }
+
+  # If we do not specify list for docfiles with -m argument,
+  # we assume that we have to generate all docfiles
+  if { [llength $DOCFILES] == 0 } {
+    if { $GEN_MODE != "PDF_ONLY" } {
+      set DOCFILES $available_docfiles
+    } else {
+      set DOCFILES $available_pdf
+    }
+  }
+
+  puts ""
+
+  # Clean logfiles
+  set OUTDIR  [OCCDoc_GetRootDir]/doc/
+  set DOXYLOG $OUTDIR/doxygen_warnings_and_errors.log
+  set PDFLOG  $OUTDIR/pdflatex_warnings_and_errors.log
+
+  file delete -force $PDFLOG
+  file delete -force $DOXYLOG
+  
+  # Start main activities
+  if { $GEN_MODE != "PDF_ONLY" } {
+    OCCDoc_Main $DOC_TYPE $DOCFILES $MODULES $GEN_MODE $VERB_MODE $SEARCH_MODE $MATHJAX_LOCATION $GENERATE_PRODUCTS_REFMAN $DOXYGEN_PATH $GRAPHVIZ_PATH $INKSCAPE_PATH $HHC_PATH
+  } else {
+    puts "Generating OCCT User Guides in PDF format...\n"
+    foreach pdf $DOCFILES {
+
+      puts "Info: Processing file $pdf\n"
+
+      # Some values are hardcoded because they are related only to PDF generation
+      OCCDoc_Main "OVERVIEW" [list $pdf] {} "PDF_ONLY" $VERB_MODE "none" $MATHJAX_LOCATION "NO" $DOXYGEN_PATH $GRAPHVIZ_PATH $INKSCAPE_PATH $HHC_PATH
+    }
+    puts "[clock format [clock seconds] -format {%Y-%m-%d %H:%M}] Generation completed."
+    puts "\nPDF files are generated in \n[file normalize [OCCDoc_GetRootDir]/doc/pdf]"
+  }
+}
+
+# Main procedure for documents compilation
+proc OCCDoc_Main {docType {docfiles {}} {modules {}} generatorMode verboseMode searchMode mathjaxLocation generateProductsRefman DOXYGEN_PATH GRAPHVIZ_PATH INKSCAPE_PATH HHC_PATH} {
+
+  global available_docfiles
+  global available_pdf
+
+  set PRODPATH   ""
+  if { [string compare -nocase $generateProductsRefman "YES"] == 0 } {
+    set PRODPATH [pwd]
+  }
+
+  set ROOTDIR    [OCCDoc_GetRootDir $PRODPATH]
+  set INDIR      [OCCDoc_GetDoxDir]
+  set OUTDIR     $ROOTDIR/doc
+  set PDFDIR     $OUTDIR/pdf
+  set UGDIR      $PDFDIR/user_guides
+  set DGDIR      $PDFDIR/dev_guides
+  set TAGFILEDIR $OUTDIR/refman
+  set HTMLDIR    $OUTDIR/overview/html
+  set LATEXDIR   $OUTDIR/overview/latex
+  set DOXYFILE   $OUTDIR/OCCT.cfg
+
+  # Create or cleanup the output folders
+  if { [string compare -nocase $generateProductsRefman "YES"] != 0 } {
+    if { ![file exists $OUTDIR] } {
+      file mkdir $OUTDIR
+    } 
+    if { ![file exists $HTMLDIR] } {
+      file mkdir $HTMLDIR
+    }
+    if { ![file exists $PDFDIR] } {
+      file mkdir $PDFDIR
+    }
+    if { ![file exists $UGDIR] } {
+      file mkdir $UGDIR
+    }
+    if { ![file exists $DGDIR] } {
+      file mkdir $DGDIR
+    }
+    if { [file exists $LATEXDIR] } {
+      file delete -force $LATEXDIR
+    }
+    file mkdir $LATEXDIR
+  }
+  if { $docType == "REFMAN" } {
+    if { ![file exists $TAGFILEDIR] } {
+      file mkdir $TAGFILEDIR
+    }
+  }
+
+  # is MathJax HLink?
+  set mathjax_relative_location $mathjaxLocation
+  if { [file isdirectory "$mathjaxLocation"] } {
+    if { $generatorMode == "HTML_ONLY" } {
+      # related path
+      set mathjax_relative_location [OCCDoc_GetRelPath $HTMLDIR $mathjaxLocation]
+    } elseif { $generatorMode == "CHM_ONLY" } {
+      # absolute path
+      set mathjax_relative_location [file normalize $mathjaxLocation]
+    }
+  }
+
+  if { $generateProductsRefman == "YES" } {
+    set DOCDIR "$OUTDIR/refman"
+    puts "\nGenerating OCC Products Reference Manual\n"
+  } else {
+    if { $docType == "REFMAN"} {
+      set DOCDIR "$OUTDIR/refman"
+      puts "\nGenerating Open CASCADE Reference Manual\n"
+    } elseif { $docType == "OVERVIEW" } {
+      set DOCDIR "$OUTDIR/overview"
+      set FORMAT ""
+      if { ($generatorMode == "HTML_ONLY") || ($generatorMode == "CHM_ONLY") } {
+        if { $generatorMode == "HTML_ONLY" } { 
+          set FORMAT " in HTML format..."
+        } elseif { $generatorMode == "CHM_ONLY" } {
+          set FORMAT " in CHM format..."
+        }
+        puts "Generating OCCT User Guides$FORMAT\n"
+      }
+    } else {
+      puts "Error: Invalid documentation type: $docType. Can not process."
+      return -1
+    }
+  }
+
+  # Generate Doxyfile
+  puts "[clock format [clock seconds] -format {%Y-%m-%d %H:%M}] Generating Doxyfile..."
+
+  if { [OCCDoc_MakeDoxyfile $docType $DOCDIR $TAGFILEDIR $DOXYFILE $generatorMode $docfiles $modules $verboseMode $searchMode $HHC_PATH $mathjax_relative_location $GRAPHVIZ_PATH $PRODPATH] == -1 } {
+    return -1
+  }
+
+  # Run doxygen tool
+  set starttimestamp [clock format [clock seconds] -format {%Y-%m-%d %H:%M}]
+
+  if { ($generatorMode == "HTML_ONLY") || ($docType == "REFMAN") } {
+    puts "$starttimestamp Generating HTML files..."
+
+    # Copy index file to provide fast access to HTML documentation
+    file copy -force $INDIR/resources/index.html $DOCDIR/index.html
+  } elseif { $generatorMode == "CHM_ONLY" } {
+    puts "$starttimestamp Generating CHM file..."
+  } elseif { $generatorMode == "PDF_ONLY" } {
+    puts "$starttimestamp Generating PDF file..."
+  }
+
+  set DOXYLOG $OUTDIR/doxygen_warnings_and_errors.log
+  set RESULT [catch {exec $DOXYGEN_PATH $DOXYFILE >> $OUTDIR/doxygen_out.log} DOX_ERROR] 
+  if {$RESULT != 0} {
+    set NbErrors [regexp -all -line {^\s*[^\s]+} $DOX_ERROR]
+    if {$NbErrors > 0} {
+      puts "\nWarning: Doxygen reported $NbErrors messages."
+      puts "See log in $DOXYLOG\n"
+      set DOX_ERROR_FILE [open $DOXYLOG "a"]
+      if {$generatorMode == "PDF_ONLY"} {
+        puts $DOX_ERROR_FILE "\n===================================================="
+        puts $DOX_ERROR_FILE "Logfile for $docfiles"
+        puts $DOX_ERROR_FILE "====================================================\n"
+      }
+      puts $DOX_ERROR_FILE $DOX_ERROR
+      close $DOX_ERROR_FILE
+    }
+  }
+
+  # Close the Doxygen application
+  after 300
+
+  # Start Post Processing
+  set curtime [clock format [clock seconds] -format {%Y-%m-%d %H:%M}]
+  if { $docType == "REFMAN" } {
+    # Post Process generated HTML pages and draw dependency graphs
+    if {[OCCDoc_PostProcessor $DOCDIR] == 0} {
+      puts "$curtime Generation completed."
+      puts "\nInfo: doxygen log file is located in:"
+      puts "$OUTDIR/doxygen_out.log."
+      puts "\nReference Manual is generated in \n$DOCDIR"
+    }
+  } elseif { $docType == "OVERVIEW" } {
+    # Start PDF generation routine
+    if { $generatorMode == "PDF_ONLY" } {
+      set OS $::tcl_platform(platform)
+      if { $OS == "unix" } {
+        set PREFIX ".sh"
+      } elseif { $OS == "windows" } {
+        set PREFIX ".bat"
+      }
+
+      # Prepare a list of TeX files, generated by Doxygen
+      cd $LATEXDIR
+
+      set TEXFILES   [glob $LATEXDIR -type f -directory $LATEXDIR -tails "*.tex" ]
+      foreach path $TEXFILES {
+        if { [string compare -nocase $path $LATEXDIR] == 0 } {
+          set DEL_IDX [lsearch $TEXFILES $path]
+          if { $DEL_IDX != -1 } {
+            set TEXFILES [lreplace $TEXFILES $DEL_IDX $DEL_IDX]
+          }
+        }
+      }
+      set TEXFILES   [string map [list refman.tex ""] $TEXFILES]
+      if {$verboseMode == "YES"} {
+        puts "Info: Preprocessing generated TeX files..."
+      }
+      OCCDoc_ProcessTex $TEXFILES $LATEXDIR $verboseMode
+
+      if {$verboseMode == "YES"} {
+        puts "Info: Converting SVG images to PNG format..."
+      }
+
+      if { $INKSCAPE_PATH != "" } {
+        OCCDoc_ProcessSvg $LATEXDIR $verboseMode
+      } else {
+        puts "Warning: SVG images will be lost in PDF documents."
+      }
+
+      if {$verboseMode == "YES"} {
+        puts "Info: Generating PDF file from TeX files..."
+      }
+      foreach TEX $TEXFILES {
+        # Rewrite existing REFMAN.tex file...
+        set TEX [lindex [split $TEX "."] 0]
+
+        if {$verboseMode == "YES"} {
+          puts "Info: Generating PDF file from $TEX..."
+        }
+
+        OCCDoc_MakeRefmanTex $TEX $LATEXDIR $verboseMode $available_pdf
+
+        if {"$::tcl_platform(platform)" == "windows"} {
+          set is_win "yes"
+        } else {
+          set is_win "no"
+        }
+        if {$verboseMode == "YES"} {
+          # ...and use it to generate PDF from TeX...
+          if {$is_win == "yes"} {
+            puts "Info: Executing $LATEXDIR/make.bat..."
+          } else {
+            puts "Info: Executing $LATEXDIR/Makefile..."
+          }
+        }
+        set PDFLOG $OUTDIR/pdflatex_warnings_and_errors.log
+
+        if {"$is_win" == "yes"} {
+          set RESULT [catch {eval exec [auto_execok $LATEXDIR/make.bat] >> "$OUTDIR/pdflatex_out.log"} LaTeX_ERROR]
+        } else {
+          set RESULT [catch {eval exec "make -f $LATEXDIR/Makefile" >> "$OUTDIR/pdflatex_out.log"} LaTeX_ERROR]
+
+          # Small workaround for *nix stations
+          set prev_loc [pwd]
+          cd $LATEXDIR
+          set RESULT [catch {eval exec "pdflatex refman.tex" >> "$OUTDIR/pdflatex_out.log"} LaTeX_ERROR]
+          cd $prev_loc
+        }
+
+        if {$RESULT != 0} {
+          set NbErrors [regexp -all -line {^\s*[^\s]+} $LaTeX_ERROR]
+          if {$NbErrors > 0} {
+            puts "\nWarning: PDFLaTeX reported $NbErrors messages.\nSee log in $PDFLOG\n"
+            set LaTeX_ERROR_FILE [open $PDFLOG "a"]
+            puts $LaTeX_ERROR_FILE "\n===================================================="
+            puts $LaTeX_ERROR_FILE "Logfile of file $TEX:"
+            puts $LaTeX_ERROR_FILE "====================================================\n"
+            puts $LaTeX_ERROR_FILE $LaTeX_ERROR
+            close $LaTeX_ERROR_FILE
+          }
+        }
+
+        # ...and place it to the specific folder
+        if {![file exists "$LATEXDIR/refman.pdf"]} {
+          puts "Fatal: PDFLaTeX failed to create output file, stopping!"
+          return -1
+        }
+
+        set destFolder $PDFDIR
+        set parsed_string [split $TEX "_"]
+        if { [lsearch $parsed_string "tutorial"] != -1 } {
+          set TEX [string map [list occt__ occt_] $TEX]
+          set destFolder $PDFDIR
+        } elseif { [lsearch $parsed_string "user"] != -1 } {
+          set TEX [string map [list user_guides__ ""] $TEX]
+          set destFolder $UGDIR
+        } elseif { [lsearch $parsed_string "dev"]  != -1 } {
+          set TEX [string map [list dev_guides__ ""] $TEX]
+          set destFolder $DGDIR
+        }
+        file rename -force $LATEXDIR/refman.pdf "$destFolder/$TEX.pdf"
+
+      }
+    } elseif { $generatorMode == "CHM_ONLY" } {
+      file rename  $OUTDIR/overview.chm $OUTDIR/occt_overview.chm
+    }
+    cd $INDIR
+
+    if { $generatorMode == "HTML_ONLY" } {
+      puts "\nHTML documentation is generated in \n$DOCDIR"
+    }
+    if { $generatorMode == "CHM_ONLY" } {
+      puts "\nGenerated CHM documentation is in \n$OUTDIR/overview.chm"
+    }
+
+    puts ""
+  }
+
+  # Remove temporary Doxygen files
+  set deleteList [glob -nocomplain -type f "*.tmp"]
+  foreach file $deleteList {
+    file delete $file
+  }
+  return 0
+}
+
+# Generates Doxygen configuration file for Overview documentation
+proc OCCDoc_MakeDoxyfile {docType outDir tagFileDir {doxyFileName} {generatorMode ""} {DocFilesList {}} {ModulesList {}} verboseMode searchMode hhcPath mathjaxLocation graphvizPath productsPath} {
+
+  set inputDir      [OCCDoc_GetDoxDir]
+  set TEMPLATES_DIR $inputDir/resources
+  set occt_version  [OCCDoc_DetectCasVersion]
+
+  # Delete existent doxyfile
+  file delete $doxyFileName
+
+  # Copy specific template to the target folder
+  if { $docType == "REFMAN" } {
+    file copy "$TEMPLATES_DIR/occt_rm.doxyfile" $doxyFileName
+  } elseif { $docType == "OVERVIEW" } {
+    if { $generatorMode == "HTML_ONLY" || $generatorMode == "CHM_ONLY" } {
+      file copy "$TEMPLATES_DIR/occt_ug_html.doxyfile" $doxyFileName
+    } elseif { $generatorMode == "PDF_ONLY"} {
+      file copy "$TEMPLATES_DIR/occt_ug_pdf.doxyfile" $doxyFileName
+    } else {
+      puts "Error: Unknown generation mode"
+      return -1
+    }
+  } else {
+    puts "Error: Cannot generate unknown document type"
+    return -1
+  }
+
+  set doxyFile [open $doxyFileName "a"]
+  # Write specific options
+  if { $docType == "REFMAN" } {
+
+    # Load lists of modules scripts
+    if { $productsPath == "" } {
+      set modules_scripts [glob -nocomplain -type f -directory "[OCCDoc_GetSourceDir $productsPath]/OS/" *.tcl]
+    } else {
+      set modules_scripts [glob -nocomplain -type f -directory "[OCCDoc_GetSourceDir $productsPath]/VAS/" *.tcl]
+    }
+    if { [llength $modules_scripts] != 0} {
+      foreach module_file $modules_scripts {
+        source $module_file
+      }
+    }
+
+    set ALL_MODULES [OCCDoc_GetModulesList $productsPath]
+    if { [llength $ModulesList] == 0 } {
+      # by default take all modules
+      set modules $ALL_MODULES
+    } else {
+      set modules $ModulesList
+    }
+
+    # Detect invalid names of modules
+    foreach module $modules {
+      if { $module == "" } {
+        continue
+      }
+      if {[lsearch $ALL_MODULES $module] == -1 } {
+        puts "Error: No module $module is known. Aborting..."
+        return -1
+      }
+    }
+
+    # Set context
+    set one_module [expr [llength $modules] == 1]
+    if { $one_module } {
+      set title "OCCT [$modules:name]"
+      set name $modules
+    } else {
+      set title "Open CASCADE Technology"
+      set name OCCT
+    }
+
+    # Get list of header files in the specified modules
+    set filelist {}
+    foreach module $modules {
+      if { $module == "" } {
+        continue
+      }
+      foreach tk [$module:toolkits] {
+        foreach pk [split [OCCDoc_GetPackagesList [OCCDoc_Locate $tk $productsPath]]] {
+          if { [llength $pk] != "{}" } {
+            lappend filelist [OCCDoc_GetHeadersList "p" "pubinclude" "$pk" "$productsPath"]
+          }
+        }
+      }
+    }
+
+    # Filter out files Handle_*.hxx and *.lxx
+    set hdrlist {}
+    foreach fileset $filelist {
+      set hdrset {}
+      foreach hdr $fileset {
+        if { ! [regexp {Handle_.*[.]hxx} $hdr] && ! [regexp {.*[.]lxx} $hdr] } {
+          lappend hdrset $hdr
+        }
+      }
+      lappend hdrlist $hdrset
+    }
+    set filelist $hdrlist
+
+    set doxyFile [open $doxyFileName "a"]
+  
+    puts $doxyFile "PROJECT_NAME           = \"$title\""
+    puts $doxyFile "PROJECT_NUMBER         = $occt_version"
+    puts $doxyFile "OUTPUT_DIRECTORY       = $outDir/."
+    puts $doxyFile "GENERATE_TAGFILE       = $outDir/${name}.tag"
+
+    if { [string tolower $searchMode] == "none" } {
+      puts $doxyFile "SEARCHENGINE           = NO"
+      puts $doxyFile "SERVER_BASED_SEARCH    = NO"
+      puts $doxyFile "EXTERNAL_SEARCH        = NO"
+    } else {
+      puts $doxyFile "SEARCHENGINE           = YES"
+      if { [string tolower $searchMode] == "local" } {
+        puts $doxyFile "SERVER_BASED_SEARCH    = NO"
+        puts $doxyFile "EXTERNAL_SEARCH        = NO"
+      } elseif { [string tolower $searchMode] == "server" } {
+        puts $doxyFile "SERVER_BASED_SEARCH    = YES"
+        puts $doxyFile "EXTERNAL_SEARCH        = NO"
+      } elseif { [string tolower $searchMode] == "external" } {
+        puts $doxyFile "SERVER_BASED_SEARCH    = YES"
+        puts $doxyFile "EXTERNAL_SEARCH        = YES"
+      } else {
+        puts "Error: Wrong search engine type: $searchMode."
+        close $doxyFile 
+        return -1
+      }
+    }
+
+    puts $doxyFile "DOTFILE_DIRS             = $outDir/html"
+    puts $doxyFile "DOT_PATH                 = $graphvizPath"
+    puts $doxyFile "INCLUDE_PATH             = [OCCDoc_GetIncDir $productsPath]"
+    
+    # list of files to generate
+    set mainpage [OCCDoc_MakeMainPage $outDir $outDir/$name.dox $modules $productsPath]
+    puts $doxyFile ""
+    puts $doxyFile "INPUT    = $mainpage \\"
+    foreach header $filelist {
+      puts $doxyFile "               $header \\"
+    }
+
+    puts $doxyFile "MATHJAX_FORMAT         = HTML-CSS"
+    puts $doxyFile "MATHJAX_RELPATH        = ${mathjaxLocation}"
+
+    puts $doxyFile ""
+
+  } elseif { $docType == "OVERVIEW" } {
+
+    # Add common options for generation of Overview and User Guides
+    puts $doxyFile "PROJECT_NUMBER         = $occt_version"
+    puts $doxyFile "OUTPUT_DIRECTORY       = $outDir/."
+    puts $doxyFile "PROJECT_LOGO           = $inputDir/resources/occ_logo.png"
+
+    set PARAM_INPUT "INPUT                 ="
+    set PARAM_IMAGEPATH "IMAGE_PATH        = $inputDir/resources/ "
+    foreach docFile $DocFilesList {
+      set NEW_IMG_PATH "$inputDir/$docFile"
+      if { [string compare $NEW_IMG_PATH [OCCDoc_GetRootDir $productsPath]] != 0 } {
+        set img_string [file dirname $NEW_IMG_PATH]/images
+        if { [file exists $img_string] } {
+          append PARAM_IMAGEPATH " $img_string"
+        }
+      }
+      append PARAM_INPUT " " $inputDir/$docFile
+    }
+    puts $doxyFile $PARAM_INPUT
+    puts $doxyFile $PARAM_IMAGEPATH
+
+    # Add document type-specific options
+    if { $generatorMode == "HTML_ONLY"} {
+      # generate tree view
+      puts $doxyFile "GENERATE_TREEVIEW      = YES"
+
+      # Set a reference to a TAGFILE
+      if { $tagFileDir != "" } {
+        if {[file exists $tagFileDir/OCCT.tag] == 1} {
+          #set tagPath [OCCDoc_GetRelPath $tagFileDir $outDir/html]
+          set tagPath $tagFileDir
+          puts $doxyFile "TAGFILES               = $tagFileDir/OCCT.tag=../../refman/html"
+        }
+      }
+      # HTML Search engine options
+      if { [string tolower $searchMode] == "none" } {
+        puts $doxyFile "SEARCHENGINE           = NO"
+        puts $doxyFile "SERVER_BASED_SEARCH    = NO"
+        puts $doxyFile "EXTERNAL_SEARCH        = NO"
+      } else {
+        puts $doxyFile "SEARCHENGINE           = YES"
+        if { [string tolower $searchMode] == "local" } {
+          puts $doxyFile "SERVER_BASED_SEARCH    = NO"
+          puts $doxyFile "EXTERNAL_SEARCH        = NO"
+        } elseif { [string tolower $searchMode] == "server" } {
+          puts $doxyFile "SERVER_BASED_SEARCH    = YES"
+          puts $doxyFile "EXTERNAL_SEARCH        = NO"
+        } elseif { [string tolower $searchMode] == "external" } {
+          puts $doxyFile "SERVER_BASED_SEARCH    = YES"
+          puts $doxyFile "EXTERNAL_SEARCH        = YES"
+        } else {
+          puts "Error: Wrong search engine type: $searchMode."
+          close $doxyFile 
+          return -1
+        }
+      }
+    } elseif { $generatorMode == "CHM_ONLY"} {
+      # specific options for CHM file generation
+      puts $doxyFile "GENERATE_TREEVIEW      = NO"
+      puts $doxyFile "SEARCHENGINE           = NO"
+      puts $doxyFile "GENERATE_HTMLHELP      = YES"
+      puts $doxyFile "CHM_FILE               = ../../overview.chm"
+      puts $doxyFile "HHC_LOCATION           = \"$hhcPath\""
+      puts $doxyFile "DISABLE_INDEX          = YES"
+    }
+
+    # Formula options
+    puts $doxyFile "MATHJAX_RELPATH        = ${mathjaxLocation}"
+  }
+
+  close $doxyFile
+  return 0
+}
diff --git a/adm/occaux.tcl b/adm/occaux.tcl
new file mode 100644 (file)
index 0000000..161fd74
--- /dev/null
@@ -0,0 +1,897 @@
+# =======================================================================
+# Created on: 2014-03-21
+# Created by: OMY
+# Copyright (c) 1996-1999 Matra Datavision
+# Copyright (c) 1999-2014 OPEN CASCADE SAS
+#
+# This file is part of Open CASCADE Technology software library.
+#
+# This library is free software; you can redistribute it and/or modify it under
+# the terms of the GNU Lesser General Public License version 2.1 as published
+# by the Free Software Foundation, with special exception defined in the file
+# OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+# distribution for complete text of the license and disclaimer of any warranty.
+#
+# Alternatively, this file may be used under the terms of Open CASCADE
+# commercial license or contractual agreement.
+# 
+# Brief: This script contains auxilary functions which can be used 
+#         in documentation generation process
+# =======================================================================
+
+# ==============================================
+# Commonly used functions
+# ==============================================
+
+# Parses arguments line like "-arg1=val1 -arg2=val2 ..." to array args_names and map args_values
+proc OCCDoc_ParseArguments {arguments} {
+  global args_names
+  global args_values
+  set args_names {}
+  array set args_values {}
+
+  foreach arg $arguments {
+    if {[regexp {^(-)[a-z]+$} $arg] == 1} {
+      set name [string range $arg 1 [string length $arg]-1]
+      lappend args_names $name
+      set args_values($name) "NULL"
+      continue
+    } elseif {[regexp {^(-)[a-z]+=.+$} $arg] == 1} {
+      set equal_symbol_position [string first "=" $arg]
+      set name [string range $arg 1 $equal_symbol_position-1]
+      lappend args_names $name
+      set value [string range $arg $equal_symbol_position+1 [string length $arguments]-1]
+      
+      # To parse a list of values for -m parameter
+      if { [string first "," $value] != -1 } {
+        set value [split $value ","];
+      }
+
+      set args_values($name) $value
+
+    } else {
+      puts "Error in argument $arg."
+      return 1
+    }
+  }
+  return 0
+}
+
+# Returns script parent folder
+proc OCCDoc_GetDoxDir {} {
+  return [file normalize [file dirname [info script]]/../dox]
+}
+
+# Returns OCCT root dir
+proc OCCDoc_GetOCCTRootDir {} {
+  set path [OCCDoc_GetDoxDir]
+  return [file normalize $path/..]
+}
+
+# Returns root dir
+proc OCCDoc_GetRootDir { {theProductsPath ""} } {
+
+  if { $theProductsPath == "" } {
+    return [OCCDoc_GetOCCTRootDir]
+  } else {
+    return [file normalize $theProductsPath]
+  }
+}
+
+# Returns OCCT include dir
+proc OCCDoc_GetIncDir { {theProductsPath ""} } {
+  set path [OCCDoc_GetRootDir $theProductsPath]
+  return "$path/inc"
+}
+
+# Returns OCCT source dir
+proc OCCDoc_GetSourceDir { {theProductsPath ""} } {
+  set path [OCCDoc_GetRootDir $theProductsPath]
+  return "$path/src"
+}
+
+# Returns name of the package from the current toolkit
+proc OCCDoc_GetNameFromPath { thePath } {
+
+  set splitted_path [split $thePath "/" ]
+  set package_name  [lindex $splitted_path end]
+
+  return $package_name
+}
+
+# Returns the relative path between two folders
+proc OCCDoc_GetRelPath {thePathFrom thePathTo} {
+  if { [file isdirectory "$thePathFrom"] == 0 } {
+    return ""
+  }
+
+  set aPathFrom [file normalize "$thePathFrom"]
+  set aPathTo   [file normalize "$thePathTo"]
+
+  set aCutedPathFrom "${aPathFrom}/dummy"
+  set aRelatedDeepPath ""
+
+  while { "$aCutedPathFrom" != [file normalize "$aCutedPathFrom/.."] } {
+    set aCutedPathFrom [file normalize "$aCutedPathFrom/.."]
+    # does aPathTo contain aCutedPathFrom?
+    regsub -all $aCutedPathFrom $aPathTo "" aPathFromAfterCut
+    if { "$aPathFromAfterCut" != "$aPathTo" } { # if so
+      if { "$aCutedPathFrom" == "$aPathFrom" } { # just go higher, for example, ./somefolder/someotherfolder
+        set aPathTo ".${aPathTo}"
+      } elseif { "$aCutedPathFrom" == "$aPathTo" } { # remove the last "/"
+        set aRelatedDeepPath [string replace $aRelatedDeepPath end end ""]
+      }
+      regsub -all $aCutedPathFrom $aPathTo $aRelatedDeepPath aPathToAfterCut
+      regsub -all "//" $aPathToAfterCut "/" aPathToAfterCut
+      return $aPathToAfterCut
+    }
+    set aRelatedDeepPath "$aRelatedDeepPath../"
+  }
+
+  return $thePathTo
+}
+
+# Returns OCCT version string from file Standard_Version.hxx (if available)
+proc OCCDoc_DetectCasVersion {} {
+  set occt_ver 6.7.0
+  set occt_ver_add ""
+  set filename "[OCCDoc_GetSourceDir]/Standard/Standard_Version.hxx"
+  if { [file exists $filename] } {
+    set fh [open $filename "r"]
+    set fh_loaded [read $fh]
+    close $fh
+    regexp {[^/]\s*#\s*define\s+OCC_VERSION_COMPLETE\s+\"([^\s]*)\"} $fh_loaded dummy occt_ver
+    regexp {[^/]\s*#\s*define\s+OCC_VERSION_DEVELOPMENT\s+\"([^\s]*)\"} $fh_loaded dummy occt_ver_add
+    if { "$occt_ver_add" != "" } { set occt_ver ${occt_ver}.$occt_ver_add }
+  }
+  return $occt_ver
+}
+
+# Checks if the necessary tools exist
+proc OCCDoc_DetectNecessarySoftware { DOXYGEN_PATH GRAPHVIZ_PATH INKSCAPE_PATH HHC_PATH PDFLATEX_PATH } {
+
+  upvar 1 DOXYGEN_PATH  doxy_path
+  upvar 1 GRAPHVIZ_PATH graph_path
+  upvar 1 INKSCAPE_PATH inkscape_path
+  upvar 1 HHC_PATH      hhc_path
+  upvar 1 PDFLATEX_PATH latex_path
+
+  set doxy_path     ""
+  set graph_path    ""
+  set inkscape_path ""
+  set latex_path    ""
+  set hhc_path      ""
+
+  set is_win "no"
+  if { "$::tcl_platform(platform)" == "windows" } {
+    set is_win "yes"
+  }
+  if {"$is_win" == "yes"} {
+    set exe ".exe"
+  } else {
+    set exe ""
+  }
+
+  set g_flag "no"
+  set d_flag "no"
+  set i_flag "no"
+  set h_flag "no"
+  set l_flag "no"
+
+  puts ""
+  set envPath $::env(PATH)
+  if { $is_win == "yes" } {
+    set searchPathsList [split $envPath ";"]
+  } else {
+    set searchPathsList [split $envPath ":"]
+  }
+
+  foreach path $searchPathsList {
+    if { ($is_win == "no") && 
+         (($path == "/usr/bin") || ($path == "/usr/local/bin")) } {
+        # Avoid searching in default bin location
+        continue
+    }
+    if {$d_flag == "no"} {
+      if { [file exists $path/doxygen$exe] } {
+        catch { exec $path/doxygen -V } version_string 
+        set version [lindex [split $version_string "\n"] 0]
+        puts "Info: $version "
+        puts "      found in $path."
+        set doxy_path "$path/doxygen$exe"
+        set d_flag "yes"
+      }
+    }
+    if {$g_flag == "no"} {
+      if { [file exists $path/dot$exe] } {
+        catch { exec $path/dot -V } version
+
+        puts "Info: $version "
+        puts "      found in $path."
+        set graph_path "$path/dot$exe"
+        set g_flag "yes"
+      }
+    }
+    if {$i_flag == "no"} {
+      if { [file exists $path/inkscape$exe] } {
+        catch { exec $path/inkscape -V } version
+        puts "Info: $version " 
+        puts "      found in $path."
+        set inkscape_path "$path/inkscape$exe"
+        set i_flag "yes"
+      }
+    }
+    if {$l_flag == "no"} {
+      if { [file exists $path/pdflatex$exe] } {
+        catch { exec $path/pdflatex -version } version
+        set version [lindex [split $version "\n"] 0]
+        puts "Info: $version " 
+        puts "      found in $path."
+        set latex_path "$path/pdflatex$exe"
+        set l_flag "yes"
+      }
+    }
+    if { ("$is_win" == "yes") && ($h_flag == "no") } {
+      if { [file exists $path/hhc.exe] } {
+        puts "Info: hhc " 
+        puts "      found in $path."
+        set hhc_path "hhc$exe"
+        set h_flag "yes"
+      }
+    }
+    if { ($d_flag == "yes") &&
+         ($i_flag == "yes") &&
+         ($g_flag == "yes") &&
+         ($l_flag == "yes") &&
+         (($is_win == "yes") && 
+          ($h_flag == "yes")) } {
+      break
+    }
+  }
+
+  # On Windows search for hhc.exe in the default location 
+  # if it has not been found yet
+  if { ("$is_win" == "yes") && ($h_flag == "no") } {
+    if { [info exists ::env(ProgramFiles\(x86\))] } {
+      set h_flag "yes"
+      set path "$::env(ProgramFiles\(x86\))\\HTML Help Workshop"
+      set hhc_path "$path\\hhc.exe"
+      puts "Info: hhc " 
+      puts "      found in $path."
+    } else {
+      if { [info exists ::env(ProgramFiles)] } {
+        set h_flag   "yes"
+        set path     "$::env(ProgramFiles)\\HTML Help Workshop"
+        set hhc_path "$path\\hhc.exe"
+        puts "Info: hhc" 
+        puts "      found in $path."
+      }
+    }
+  }
+
+  # On *nix-like platforms, 
+  # check the default binary locations if the tools had not been found yet
+  if {  $is_win == "no"  &&
+      (($d_flag == "no") ||
+       ($i_flag == "no") ||
+       ($g_flag == "no") ||
+       ($l_flag == "no")) } {
+
+    set default_path { "/usr/bin" "/usr/local/bin" }
+    foreach path $default_path {
+      if {$d_flag == "no"} {
+        if { [file exists $path/doxygen$exe] } {
+          catch { exec $path/doxygen -V } version_string 
+          set version [lindex [split $version_string "\n"] 0]
+          puts "Info: $version "
+          puts "      found in $path."
+          set doxy_path "$path/doxygen$exe"
+          set d_flag "yes"
+        }
+      }
+      if {$g_flag == "no"} {
+        if { [file exists $path/dot$exe] } {
+          catch { exec $path/dot -V } version
+
+          puts "Info: $version "
+          puts "      found in $path."
+          set graph_path "$path/dot$exe"
+          set g_flag "yes"
+        }
+      }
+      if {$i_flag == "no"} {
+        if { [file exists $path/inkscape$exe] } {
+          catch { exec $path/inkscape -V } version
+          puts "Info: $version " 
+          puts "      found in $path."
+          set inkscape_path "$path/inkscape$exe"
+          set i_flag "yes"
+        }
+      }
+      if {$l_flag == "no"} {
+        if { [file exists $path/pdflatex$exe] } {
+          catch { exec $path/pdflatex -version } version
+          set version [lindex [split $version "\n"] 0]
+          puts "Info: $version " 
+          puts "      found in $path."
+          set latex_path "$path/pdflatex$exe"
+          set l_flag "yes"
+        }
+      }
+    }
+  }
+
+  # Check if tools have been found
+  if { $d_flag == "no" } {
+    puts "Warning: Could not find doxygen installed."
+    return -1
+  }
+  if { $g_flag == "no" } {
+    puts "Warning: Could not find graphviz installed."
+  }
+  if { $i_flag == "no" } {
+    puts "Warning: Could not find inkscape installed."
+  }  
+  if { $l_flag == "no" } {
+    puts "Warning: Could not find pdflatex installed."
+  }
+  if { ("$::tcl_platform(platform)" == "windows") && ($h_flag == "no") } {
+    puts "Warning: Could not find hhc installed."
+  }
+
+  puts ""
+}
+
+# Convert SVG files to PDF format to allow including them to PDF
+# (requires InkScape to be in PATH)
+proc OCCDoc_ProcessSvg {latexDir verboseMode} {
+
+  foreach file [glob -nocomplain $latexDir/*.svg] {
+    if {$verboseMode == "YES"} {
+      puts "Info: Converting file $file..."
+    }
+    set pdffile "[file rootname $file].pdf"
+    if { [catch {exec inkscape -z -D --file=$file --export-pdf=$pdffile} res] } {
+      #puts "Error: $res."
+      return
+    }
+  }
+}
+
+# ==============================================
+# Reference Manual-specific functions
+# ==============================================
+
+# Finds dependencies between all modules  
+proc OCCDoc_CreateModulesDependencyGraph {dir filename modules mpageprefix} {
+  global module_dependency
+
+  if {![catch {open $dir/$filename.dot "w"} file]} {
+    puts $file "digraph $filename"
+    puts $file "\{"
+
+    foreach mod $modules {
+      if { $mod == "" } {
+        continue
+      }
+      puts $file "\t$mod \[ URL = \"[string tolower $mpageprefix$mod.html]\" \]"
+      foreach mod_depend $module_dependency($mod) {
+        puts $file "\t$mod_depend -> $mod \[ dir = \"back\", color = \"midnightblue\", style = \"solid\" \]"
+      }
+    }
+    
+    puts $file "\}"
+    close $file
+
+    return $filename
+  }
+}
+
+# Finds dependencies between all toolkits in module
+proc OCCDoc_CreateModuleToolkitsDependencyGraph {dir filename modulename tpageprefix} {
+  global toolkits_in_module
+  global toolkit_dependency
+  global toolkit_parent_module
+
+  if {![catch {open $dir/$filename.dot "w"} file]} {
+    puts $file "digraph $filename"
+    puts $file "\{"
+
+    foreach tk $toolkits_in_module($modulename) {
+      puts $file "\t$tk \[ URL = \"[string tolower $tpageprefix$tk.html]\"\ ]"
+      foreach tkd $toolkit_dependency($tk) {
+        if { [info exists toolkit_parent_module($tkd)] } {
+          if {$toolkit_parent_module($tkd) == $modulename} {
+            puts $file "\t$tkd -> $tk \[ dir = \"back\", color = \"midnightblue\", style = \"solid\" \]"    
+          }
+        }
+      }
+    }
+    
+    puts $file "\}"
+    close $file
+    
+    return $filename
+  }
+}
+
+# Finds dependencies between the current toolkit and other toolkits
+proc OCCDoc_CreateToolkitDependencyGraph {dir filename toolkitname tpageprefix} {
+  global toolkit_dependency
+  
+  if {![catch {open $dir/$filename.dot "w"} file]} {
+    puts $file "digraph $filename"
+    puts $file "\{"
+    
+    puts $file "\t$toolkitname \[ URL = \"[string tolower $tpageprefix$toolkitname.html]\"\, shape = box ]"
+    foreach tkd $toolkit_dependency($toolkitname) {
+      puts $file "\t$tkd \[ URL = \"[string tolower $tpageprefix$tkd.html]\"\ , shape = box ]"
+      puts $file "\t$toolkitname -> $tkd \[ color = \"midnightblue\", style = \"solid\" \]"    
+    }
+    
+    if {[llength $toolkit_dependency($toolkitname)] > 1} {
+    puts $file "\taspect = 1"
+    }
+    
+    puts $file "\}"
+    close $file
+    
+    return $filename
+  }
+}
+
+# Fills arrays of modules, toolkits, dependency of modules/toolkits etc 
+proc OCCDoc_LoadData { {theProductsDir ""} } {
+  global toolkits_in_module
+  global toolkit_dependency
+  global toolkit_parent_module
+  global module_dependency
+
+  if { $theProductsDir == ""} {
+    set modules_files [glob -nocomplain -type f -directory "[OCCDoc_GetSourceDir $theProductsDir]/OS/" *.tcl]
+  } else {
+    set modules_files [glob -nocomplain -type f -directory "[OCCDoc_GetSourceDir $theProductsDir]/VAS/" *.tcl]
+  }
+
+  foreach module_file $modules_files {
+    source $module_file
+  }
+
+  set modules [OCCDoc_GetModulesList $theProductsDir]
+  foreach mod $modules {
+
+    if { $mod == "" } {
+      continue
+    }
+    # Get toolkits of current module
+    set toolkits_in_module($mod) [$mod:toolkits]
+    # Get all dependence of current toolkit 
+    foreach tk $toolkits_in_module($mod) {
+      # set parent module of current toolkit
+      set toolkit_parent_module($tk) $mod
+      set exlibfile      [open "[OCCDoc_GetSourceDir $theProductsDir]/$tk/EXTERNLIB" r]
+      set exlibfile_data [read $exlibfile]
+      set exlibfile_data [split $exlibfile_data "\n"]
+        
+      set toolkit_dependency($tk) {}
+      foreach dtk $exlibfile_data {
+        if { ([string first "TK" $dtk 0] == 0) || 
+             ([string first "P"  $dtk 0] == 0) } {
+          lappend toolkit_dependency($tk) $dtk
+        }
+      }
+      close $exlibfile
+    }
+  }
+
+  # Get modules dependency
+  foreach mod $modules {
+    set module_dependency($mod) {}
+    foreach tk $toolkits_in_module($mod) {
+      foreach tkd $toolkit_dependency($tk) {
+        if { [info exists toolkit_parent_module($tkd)] } {
+          if { $toolkit_parent_module($tkd) != $mod &&
+               [lsearch $module_dependency($mod) $toolkit_parent_module($tkd)] == -1} {
+            lappend module_dependency($mod) $toolkit_parent_module($tkd)
+          }
+        }
+      }
+    }
+  }
+}
+
+# Returns list of packages of the given toolkit
+proc OCCDoc_GetPackagesList { theToolKitPath } {
+
+  set packages_list {}
+  
+  # Open file with list of packages of the given toolkit
+  set fileid [open "$theToolKitPath/PACKAGES" "r"]
+  
+  while { [eof $fileid] == 0 } {
+    set str [gets $fileid]
+    if { $str != "" } {
+      lappend packages_list $str
+    }
+  }
+
+  close $fileid
+  
+  return $packages_list
+}
+
+# Returns list of modules from UDLIST
+proc OCCDoc_GetModulesList { {theProductsDir ""} } {
+
+  if { $theProductsDir == "" } {
+    source "[OCCDoc_GetSourceDir $theProductsDir]/OS/Modules.tcl"
+    # load a command from this file
+    set modules [OS:Modules]
+  } else {
+    source "[OCCDoc_GetSourceDir $theProductsDir]/VAS/Products.tcl"
+    # load a command from this file
+    set modules [VAS:Products]
+  }
+
+  return $modules
+}
+
+# Returns list of desired files in the specified location
+proc OCCDoc_GetHeadersList { theDesiredContent theFileType thePackageName {theProductsDir ""} } {
+
+  # Get file type
+  set file_type_pattern "*.*"
+  if { $theFileType == "pubinclude" } {
+    set file_type_pattern "*.*"
+  } elseif { $theFileType == "privinclude" } {
+    set file_type_pattern "*.ixx"
+  }
+  
+  # Get content according to desired type ('p' for path and 'f' for filenames only)
+  if { $theDesiredContent == "p" } {
+
+    # Get list of files with path
+    set files_list [split [glob -nocomplain -type f -directory "[OCCDoc_GetIncDir $theProductsDir]" "$thePackageName$file_type_pattern"]]
+
+    return $files_list
+  } elseif { $theDesiredContent == "f" } {
+  # Get list of files without path
+    set files_list [split [glob -nocomplain -type f -directory "[OCCDoc_GetIncDir $theProductsDir]" "$thePackageName$file_type_pattern"]]
+
+    # Cut paths from filenames
+    foreach file $files_list {
+      set elem_index [lsearch $files_list $file]
+      lset files_list $elem_index [OCCDoc_GetNameFromPath [lindex $files_list $elem_index]]
+    }
+    return $files_list
+  }
+}
+
+# Returns location of the toolkit
+proc OCCDoc_Locate { theToolKitName {theProductsDir ""} } {
+  set tk_dir "[OCCDoc_GetSourceDir $theProductsDir]/[OCCDoc_GetNameFromPath $theToolKitName]"
+  return $tk_dir
+}
+
+# Gets contents of the given html node (for Post-processing)
+proc OCCDoc_GetNodeContents {node props html} {
+  set openTag "<$node$props>"
+  set closingTag "</$node>"
+  set start [string first $openTag $html]
+  if {$start == -1} {
+    return ""
+  }
+  set start [expr $start + [string length $openTag]]
+  set end   [string length $html]
+  set html  [string range $html $start $end]
+  set start [string first $closingTag $html]
+  set end   [string length $html]
+  if {$start == -1} {
+    return ""
+  }
+  set start [expr $start - 1]
+  return [string range $html 0 $start]
+}
+
+# Generates main page file describing module structure
+proc OCCDoc_MakeMainPage {outDir outFile modules {theProductsDir ""} } {
+  global env
+
+  set one_module [expr [llength $modules] == 1]
+  set fd [open $outFile "w"]
+
+  set module_prefix "module_"
+  set toolkit_prefix "toolkit_"
+  set package_prefix "package_"
+
+  if { ! [file exists "$outDir/html"] } {
+    file mkdir "$outDir/html"
+  }
+
+  OCCDoc_LoadData $theProductsDir
+
+  # Main page: list of modules
+  if { ! $one_module } {
+    puts $fd "/**"
+    puts $fd "\\mainpage Open CASCADE Technology"
+
+    foreach mod $modules {
+        puts $fd "\\li \\subpage [string tolower $module_prefix$mod]"
+    }
+    # insert modules relationship diagramm
+    puts $fd "\\dotfile [OCCDoc_CreateModulesDependencyGraph $outDir/html schema_all_modules $modules $module_prefix]"
+    puts $fd "**/\n"
+  }
+
+  # One page per module: list of toolkits
+  set toolkits {}
+  foreach mod $modules {
+    if { $mod == "" } {
+        continue
+    }
+    puts $fd "/**"
+    if { $one_module } {
+        puts $fd "\\mainpage OCCT Module [$mod:name]"
+    } else {
+        puts $fd "\\page [string tolower module_$mod] Module [$mod:name]"
+    }
+    foreach tk [lsort [$mod:toolkits]] {
+        lappend toolkits $tk
+        puts $fd "\\li \\subpage [string tolower $toolkit_prefix$tk]"
+    }
+    puts $fd "\\dotfile [OCCDoc_CreateModuleToolkitsDependencyGraph $outDir/html schema_$mod $mod $toolkit_prefix]"
+    puts $fd "**/\n"
+  }
+
+  # One page per toolkit: list of packages
+  set packages {}
+  foreach tk $toolkits {
+    puts $fd "/**"
+    puts $fd "\\page [string tolower toolkit_$tk] Toolkit $tk"
+    foreach pk [lsort [OCCDoc_GetPackagesList [OCCDoc_Locate $tk $theProductsDir]]] {
+        lappend packages $pk
+        set u [OCCDoc_GetNameFromPath $pk]
+        puts $fd "\\li \\subpage [string tolower $package_prefix$u]"
+    }
+    puts $fd "\\dotfile [OCCDoc_CreateToolkitDependencyGraph $outDir/html schema_$tk $tk $toolkit_prefix]"
+    puts $fd "**/\n"
+  }
+
+  # One page per package: list of classes
+  foreach pk $packages {
+    set u [OCCDoc_GetNameFromPath $pk]
+    puts $fd "/**"
+    puts $fd "\\page [string tolower $package_prefix$u] Package $u"
+    foreach hdr [lsort [OCCDoc_GetHeadersList "f" "pubinclude" "$pk" "$theProductsDir"]] {
+      if { ! [regexp {^Handle_} $hdr] && [regexp {(.*)[.]hxx} $hdr str obj] } {
+        puts $fd "\\li \\subpage $obj"
+      }
+    }
+    puts $fd "**/\n"
+  }
+
+  close $fd
+
+  return $outFile
+}
+
+# Parses generated files to add a navigation path 
+proc OCCDoc_PostProcessor {outDir} {
+  puts "[clock format [clock seconds] -format {%Y.%m.%d %H:%M}] Post-process is started ..."
+  append outDir "/html"
+  set files [glob -nocomplain -type f $outDir/package_*]
+  if { $files != {} } {
+    foreach f [lsort $files] {
+      set packageFilePnt  [open $f r]
+      set packageFile     [read $packageFilePnt]
+      set navPath         [OCCDoc_GetNodeContents "div" " id=\"nav-path\" class=\"navpath\"" $packageFile]
+      set packageName     [OCCDoc_GetNodeContents "div" " class=\"title\"" $packageFile]
+      regsub -all {<[^<>]*>} $packageName "" packageName 
+
+      # add package link to nav path
+      set first           [expr 1 + [string last "/" $f]]
+      set last            [expr [string length $f] - 1]
+      set packageFileName [string range $f $first $last]
+      set end             [string first "</ul>" $navPath]
+      set end             [expr $end - 1]
+      set navPath         [string range $navPath 0 $end]
+      append navPath "  <li class=\"navelem\"><a class=\"el\" href=\"$packageFileName\">$packageName</a>      </li>\n    </ul>"
+
+      # get list of files to update
+      set listContents [OCCDoc_GetNodeContents "div" " class=\"textblock\"" $packageFile]
+      set listContents [OCCDoc_GetNodeContents "ul" "" $listContents]
+      set lines [split $listContents "\n"]
+      foreach line $lines {
+        if {[regexp {href=\"([^\"]*)\"} $line tmpLine classFileName]} {
+          # check if anchor is there
+          set anchorPos [string first "#" $classFileName]
+          if {$anchorPos != -1} {
+            set classFileName [string range $classFileName 0 [expr $anchorPos - 1]]
+          }
+
+          # read class file
+          set classFilePnt [open $outDir/$classFileName r+]
+          set classFile    [read $classFilePnt]
+
+          # find position of content block 
+          set contentPos   [string first "<div class=\"header\">" $classFile]
+          set navPart      [string range $classFile 0 [expr $contentPos - 1]]
+
+          # position where to insert nav path
+          set posToInsert  [string last "</div>" $navPart]
+          set prePart      [string range $classFile 0 [expr $posToInsert - 1]]
+          set postPart     [string range $classFile $posToInsert [string length $classFile]]
+          set newClassFile ""
+          append newClassFile $prePart "  <div id=\"nav-path\" class=\"navpath\">" $navPath \n "  </div>" \n $postPart
+
+          # write updated content
+          seek $classFilePnt 0
+          puts $classFilePnt $newClassFile
+          close $classFilePnt
+        } 
+      }
+      close $packageFilePnt
+    }
+    return 0
+  } else {
+    puts "no files found"
+    return 1
+  }
+}
+
+# ======================================
+#  User Guides-specific functions
+# ======================================
+
+# Loads a list of docfiles from file FILES.txt
+proc OCCDoc_LoadFilesList {} {
+
+  set INPUTDIR [OCCDoc_GetDoxDir]
+
+  global available_docfiles
+  set available_docfiles {}
+
+  # Read data from file
+  if { [file exists "$INPUTDIR/FILES_HTML.txt"] == 1 } {
+    set FILE [open "$INPUTDIR/FILES_HTML.txt" r]
+    while {1} {
+      set line [string trim [gets $FILE]]
+
+      # trim possible comments starting with '#'
+      set line [regsub {\#.*} $line {}]
+      if {$line != ""} {
+        lappend available_docfiles $line
+      }
+      if {[eof $FILE]} {
+        close $FILE
+        break
+      }
+    }
+  } else {
+    return -1
+  }
+
+  global available_pdf
+  set    available_pdf {}
+
+  # Read data from file
+  if { [file exists "$INPUTDIR/FILES_PDF.txt"] } {
+    set FILE [open "$INPUTDIR/FILES_PDF.txt" r]
+    while {1} {
+      set line [string trim [gets $FILE]]
+
+      # Trim possible comments starting with '#'
+      set line [regsub {\#.*} $line {}]
+      if {$line != ""} {
+        lappend available_pdf $line
+      }
+      if {[eof $FILE]} {
+        close $FILE
+        break
+      }
+    }
+  } else {
+    return -1
+  }
+  return 0
+}
+
+# Writes new TeX file for conversion from tex to pdf for a specific doc
+proc OCCDoc_MakeRefmanTex {fileName latexDir verboseMode latexFilesList} {
+
+  if { $verboseMode == "YES" } {
+    puts "Info: Making refman.tex file for $fileName..."
+  }
+  set DOCNAME "$latexDir/refman.tex"
+  if {[file exists $DOCNAME] == 1} {
+    file delete -force $DOCNAME
+  }
+
+  # Copy template file to latex folder
+  file copy "[OCCDoc_GetDoxDir]/resources/occt_pdf_template.tex" $DOCNAME
+
+  # Get templatized data
+  set texfile [open $DOCNAME "r"]
+  set texfile_loaded [read $texfile]
+  close $texfile
+
+  # Replace dummy values 
+  set year       [clock format [clock seconds] -format {%Y}]
+  set texfile    [open $DOCNAME "w"]
+  set casVersion [OCCDoc_DetectCasVersion]
+
+  # Get name of the document
+  set docLabel   ""
+  foreach aFileName $latexFilesList {
+    # Find the file in FILES_PDF.txt
+    set parsedFileName [split $aFileName "/" ]
+    set newfileName [string range $fileName [expr [string first "__" $fileName] + 2] end]
+
+    if { [lsearch -nocase $parsedFileName "$newfileName.md" ] != -1 } {
+      set filepath "[OCCDoc_GetDoxDir]/$aFileName"
+      if { [file exists $filepath] } {
+        set MDFile   [open $filepath "r"]
+        set label    [split [gets $MDFile] "\{"]
+        set docLabel [lindex $label 0]
+        close $MDFile
+        
+        break
+      }
+    }
+  }
+
+  set texfile_loaded [string map [list DEFDOCLABEL "$docLabel" DEFCASVERSION "$casVersion" DEFFILENAME "$fileName" DEFYEAR "$year"] $texfile_loaded]
+
+  # Get data
+  puts $texfile $texfile_loaded
+
+  close $texfile
+}
+
+# Postprocesses generated TeX files
+proc OCCDoc_ProcessTex {{texFiles {}} {latexDir} verboseMode} {
+
+  foreach TEX $texFiles {
+    if {$verboseMode == "YES"} {
+      puts "Info: Preprocessing file $TEX..."
+    }
+
+    if {![file exists $TEX]} {
+      puts "Error: file $TEX does not exist."
+      return -1
+    }
+
+    set IN_F        [open "$TEX" "r"]
+    set TMPFILENAME "$latexDir/temp.tex"
+    set OUT_F       [open $TMPFILENAME w]
+
+        while {1} {
+            set line [gets $IN_F]
+            if { [string first "\\includegraphics" $line] != -1 } {
+              # replace svg extension by pdf
+              set line [regsub {[.]svg} $line ".pdf"]
+              # Center images in TeX files
+              set line "\\begin{center}\n $line\n\\end{center}"
+            } elseif { [string first "\\subsection" $line] != -1 } {
+                # Replace \subsection with \section tag
+                regsub -all "\\\\subsection" $line "\\\\section" line
+            } elseif { [string first "\\subsubsection" $line] != -1 } {
+                # Replace \subsubsection with \subsection tag
+                regsub -all "\\\\subsubsection" $line "\\\\subsection" line
+            } elseif { [string first "\\paragraph" $line] != -1 } {
+                # Replace \paragraph with \subsubsection tag
+                regsub -all "\\\\paragraph" $line "\\\\subsubsection" line
+            }
+            puts $OUT_F $line
+
+      if {[eof $IN_F]} {
+        close $IN_F
+        close $OUT_F
+        break
+      }
+    }
+
+    file delete -force $TEX
+    file rename $TMPFILENAME $TEX
+  }
+}
diff --git a/adm/start.tcl b/adm/start.tcl
new file mode 100644 (file)
index 0000000..b9d4c70
--- /dev/null
@@ -0,0 +1,8 @@
+#!/usr/bin/tclsh
+
+# Command-line starter for occdoc command, use it as follows:
+# tclsh> source dox/start.tcl [arguments]
+
+source [file join [file dirname [info script]] occaux.tcl]
+source [file join [file dirname [info script]] gendoc.tcl]
+gendoc {*}$::argv
diff --git a/dox/FILES.txt b/dox/FILES.txt
deleted file mode 100644 (file)
index df2ba2b..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-# This file contains list of documentation files of OCCT which are processed
-# by Doxygen to generate HTML documentation.
-# Files are listed one file per line, with paths relative to dox folder.
-# Empty spaces are allowed, part of string starting with # is ignored.
-# The order of files in this list determines order of top-level pages
-# in the generated documentation.
-
-overview/overview.md
-
-../samples/mfc/standard/ReadMe.md
-../samples/CSharp/ReadMe.md
-
-tutorial/tutorial.md
-
-technical_overview/technical_overview.md
-
-user_guides/user_guides.md
-user_guides/foundation_classes/foundation_classes.md
-user_guides/modeling_data/modeling_data.md
-user_guides/modeling_algos/modeling_algos.md
-user_guides/visualization/visualization.md
-user_guides/iges/iges.md
-user_guides/step/step.md
-user_guides/xde/xde.md
-user_guides/ocaf/ocaf.md
-user_guides/tobj/tobj.md
-user_guides/shape_healing/shape_healing.md
-user_guides/draw_test_harness.md
-user_guides/brep_wp/brep_wp.md
-user_guides/ocaf_functionmechanism_wp/ocaf_functionmechanism_wp.md
-user_guides/ocaf_tree_wp/ocaf_tree_wp.md
-user_guides/ocaf_wp/ocaf_wp.md
-user_guides/voxels_wp/voxels_wp.md
-
-dev_guides/dev_guides.md
-dev_guides/documentation/documentation.md
-dev_guides/contribution/coding_rules.md
-dev_guides/contribution_workflow/contribution_workflow.md
-dev_guides/git_guide/git_guide.md
-dev_guides/tests/tests.md
-dev_guides/debug/debug.md
-dev_guides/cdl/cdl.md
-dev_guides/wok/wok.md
-
-dev_guides/building/building.md
-dev_guides/building/3rdparty/3rdparty_windows.md
-dev_guides/building/3rdparty/3rdparty_linux.md
-dev_guides/building/3rdparty/3rdparty_osx.md
-dev_guides/building/wok/wok.md
-dev_guides/building/automake.md
-dev_guides/building/cmake/cmake.md
-dev_guides/building/code_blocks.md
-dev_guides/building/msvc.md
-dev_guides/building/xcode.md
-
-license.md
diff --git a/dox/FILES_HTML.txt b/dox/FILES_HTML.txt
new file mode 100644 (file)
index 0000000..df2ba2b
--- /dev/null
@@ -0,0 +1,56 @@
+# This file contains list of documentation files of OCCT which are processed
+# by Doxygen to generate HTML documentation.
+# Files are listed one file per line, with paths relative to dox folder.
+# Empty spaces are allowed, part of string starting with # is ignored.
+# The order of files in this list determines order of top-level pages
+# in the generated documentation.
+
+overview/overview.md
+
+../samples/mfc/standard/ReadMe.md
+../samples/CSharp/ReadMe.md
+
+tutorial/tutorial.md
+
+technical_overview/technical_overview.md
+
+user_guides/user_guides.md
+user_guides/foundation_classes/foundation_classes.md
+user_guides/modeling_data/modeling_data.md
+user_guides/modeling_algos/modeling_algos.md
+user_guides/visualization/visualization.md
+user_guides/iges/iges.md
+user_guides/step/step.md
+user_guides/xde/xde.md
+user_guides/ocaf/ocaf.md
+user_guides/tobj/tobj.md
+user_guides/shape_healing/shape_healing.md
+user_guides/draw_test_harness.md
+user_guides/brep_wp/brep_wp.md
+user_guides/ocaf_functionmechanism_wp/ocaf_functionmechanism_wp.md
+user_guides/ocaf_tree_wp/ocaf_tree_wp.md
+user_guides/ocaf_wp/ocaf_wp.md
+user_guides/voxels_wp/voxels_wp.md
+
+dev_guides/dev_guides.md
+dev_guides/documentation/documentation.md
+dev_guides/contribution/coding_rules.md
+dev_guides/contribution_workflow/contribution_workflow.md
+dev_guides/git_guide/git_guide.md
+dev_guides/tests/tests.md
+dev_guides/debug/debug.md
+dev_guides/cdl/cdl.md
+dev_guides/wok/wok.md
+
+dev_guides/building/building.md
+dev_guides/building/3rdparty/3rdparty_windows.md
+dev_guides/building/3rdparty/3rdparty_linux.md
+dev_guides/building/3rdparty/3rdparty_osx.md
+dev_guides/building/wok/wok.md
+dev_guides/building/automake.md
+dev_guides/building/cmake/cmake.md
+dev_guides/building/code_blocks.md
+dev_guides/building/msvc.md
+dev_guides/building/xcode.md
+
+license.md
diff --git a/dox/FILES_PDF.txt b/dox/FILES_PDF.txt
new file mode 100644 (file)
index 0000000..69ac568
--- /dev/null
@@ -0,0 +1,32 @@
+# This file contains list of documentation files of OCCT which are processed
+# by Doxygen to generate PDF documentation.
+# Files are listed one file per line, with paths relative to dox folder.
+# Empty spaces are allowed.
+# Strings starting with '#' are treated as comments and ignored.
+
+user_guides/brep_wp/brep_wp.md
+user_guides/foundation_classes/foundation_classes.md
+user_guides/iges/iges.md
+user_guides/modeling_data/modeling_data.md
+user_guides/modeling_algos/modeling_algos.md
+user_guides/ocaf/ocaf.md
+user_guides/ocaf_functionmechanism_wp/ocaf_functionmechanism_wp.md
+user_guides/ocaf_tree_wp/ocaf_tree_wp.md
+user_guides/ocaf_wp/ocaf_wp.md
+user_guides/shape_healing/shape_healing.md
+user_guides/step/step.md
+user_guides/draw_test_harness.md
+user_guides/tobj/tobj.md
+user_guides/visualization/visualization.md
+user_guides/voxels_wp/voxels_wp.md
+user_guides/xde/xde.md
+
+dev_guides/contribution_workflow/contribution_workflow.md
+dev_guides/documentation/documentation.md
+dev_guides/contribution/coding_rules.md
+dev_guides/git_guide/git_guide.md
+dev_guides/tests/tests.md
+dev_guides/wok/wok.md
+dev_guides/cdl/cdl.md
+
+tutorial/tutorial.md
index eef98ae..4699a22 100644 (file)
@@ -1,4 +1,4 @@
- Building 3rd-party libraries on Linux {#dev_guides__building_3rdparty_linux}
+ Building 3rd-party libraries on Linux {#occt_dev_guides__building_3rdparty_linux}
 =========
 
 @tableofcontents 
 =========
 
 @tableofcontents 
index 88bd211..211696e 100644 (file)
@@ -1,4 +1,4 @@
- Building 3rd-party libraries on MacOS X {#dev_guides__building_3rdparty_osx}
+ Building 3rd-party libraries on MacOS X {#occt_dev_guides__building_3rdparty_osx}
 ==============================================
 @tableofcontents 
 
 ==============================================
 @tableofcontents 
 
index 6a68c2a..38cde80 100644 (file)
@@ -1,4 +1,4 @@
- Building 3rd-party libraries on Windows {#dev_guides__building_3rdparty_windows}
+ Building 3rd-party libraries on Windows {#occt_dev_guides__building_3rdparty_windows}
 ==============================================
 @tableofcontents
 
 ==============================================
 @tableofcontents
 
index ed53803..d700b86 100644 (file)
@@ -1,4 +1,4 @@
-Building with Automake {#dev_guides__building__automake}
+Building with Automake {#occt_dev_guides__building_automake}
 ======================
 
 This file describes steps to build OCCT libraries from complete source
 ======================
 
 This file describes steps to build OCCT libraries from complete source
@@ -6,10 +6,10 @@ archive on Linux with GNU build system (Autotools).
 
 If you are building OCCT from bare sources (as in Git repository), or do some 
 changes affecting CDL files, you need to use WOK to re-generate header files
 
 If you are building OCCT from bare sources (as in Git repository), or do some 
 changes affecting CDL files, you need to use WOK to re-generate header files
-and build scripts / projects. See paragraph 1 \ref dev_guides__building__wok for instructions.
+and build scripts / projects. See paragraph 1 \ref occt_dev_guides__building_wok for instructions.
 
 Before building OCCT, you need to install required third-party libraries; see paragraph 1 of 
 
 Before building OCCT, you need to install required third-party libraries; see paragraph 1 of 
-\ref dev_guides__building for instructions.
+\ref occt_dev_guides__building for instructions.
 
 Note that during compilation by makefiles on some Linux OS on a station with 
 NVIDIA video card you may experience problems because the installation 
 
 Note that during compilation by makefiles on some Linux OS on a station with 
 NVIDIA video card you may experience problems because the installation 
index 9df63a7..373d278 100644 (file)
@@ -1,4 +1,4 @@
-Building OCCT from sources {#dev_guides__building}
+Building OCCT from sources {#occt_dev_guides__building}
 =========
 
 In order to build OCCT libraries from these sources for use in your program, 
 =========
 
 In order to build OCCT libraries from these sources for use in your program, 
@@ -9,24 +9,23 @@ you need to:
 
    See the following documents for short guide to installation of 
    third-party libraries on different platforms:
 
    See the following documents for short guide to installation of 
    third-party libraries on different platforms:
-   - \subpage dev_guides__building_3rdparty_windows
-   - \subpage dev_guides__building_3rdparty_linux
-   - \subpage dev_guides__building_3rdparty_osx
-
+   - \subpage occt_dev_guides__building_3rdparty_windows
+   - \subpage occt_dev_guides__building_3rdparty_linux
+   - \subpage occt_dev_guides__building_3rdparty_osx
 
 2. If you use bare OCCT sources from Git repository or made some changes affecting
    CDL files or dependencies of OCCT toolkits, you need to update header files generated
 
 2. If you use bare OCCT sources from Git repository or made some changes affecting
    CDL files or dependencies of OCCT toolkits, you need to update header files generated
-   from \ref dev_guides__cdl "CDL", and regenerate build scripts for your environment using WOK.
-   See \subpage dev_guides__building__wok for details.
+   from \ref occt_dev_guides__cdl "CDL", and regenerate build scripts for your environment using WOK.
+   See \subpage occt_dev_guides__building_wok for details.
 
    Skip to step 3 if you use complete source package (e.g. official OCCT 
    release) without changes in CDL.
 
 3. Build using your preferred build tool.
 
    Skip to step 3 if you use complete source package (e.g. official OCCT 
    release) without changes in CDL.
 
 3. Build using your preferred build tool.
-   - \subpage dev_guides__building__automake "Building on Linux with Autotools"
-   - \subpage dev_guides__building__cmake "Building with CMake (cross-platform)"
-   - \subpage dev_guides__building__code_blocks "Building on Mac OS X with Code::Blocks"
-   - \subpage dev_guides__building__msvc "Building on Windows with MS Visual Studio"
-   - \subpage dev_guides__building__xcode "Building on Mac OS X with Xcode"
+   - \subpage occt_dev_guides__building_automake "Building on Linux with Autotools"
+   - \subpage occt_dev_guides__building_cmake "Building with CMake (cross-platform)"
+   - \subpage occt_dev_guides__building_code_blocks "Building on Mac OS X with Code::Blocks"
+   - \subpage occt_dev_guides__building_msvc "Building on Windows with MS Visual Studio"
+   - \subpage occt_dev_guides__building_xcode "Building on Mac OS X with Xcode"
 
 The current version of OCCT can be consulted in the file src/Standard/Standard_Version.hxx
\ No newline at end of file
 
 The current version of OCCT can be consulted in the file src/Standard/Standard_Version.hxx
\ No newline at end of file
index 98fb625..9f6dd40 100644 (file)
@@ -1,4 +1,4 @@
-Building with CMake {#dev_guides__building__cmake}
+Building with CMake {#occt_dev_guides__building_cmake}
 ===================
 
 @tableofcontents
 ===================
 
 @tableofcontents
@@ -10,10 +10,10 @@ required.
 
 If you are building OCCT from bare sources (as in Git repository), or do some 
 changes affecting CDL files, you need to use WOK to re-generate header files
 
 If you are building OCCT from bare sources (as in Git repository), or do some 
 changes affecting CDL files, you need to use WOK to re-generate header files
-and build scripts / projects. See \ref dev_guides__building__wok for instructions.
+and build scripts / projects. See \ref occt_dev_guides__building_wok for instructions.
 
 Before building OCCT, you need to install required third-party libraries; see
 
 Before building OCCT, you need to install required third-party libraries; see
-instructions for your platform in @ref dev_guides__building.
+instructions for your platform in @ref occt_dev_guides__building.
 
 ## Decide on location of build and install directories.
 
 
 ## Decide on location of build and install directories.
 
index eb39654..9d6fd50 100644 (file)
@@ -1,4 +1,4 @@
-Building with Code::Blocks on Mac OS X {#dev_guides__building__code_blocks}
+Building with Code::Blocks on Mac OS X {#occt_dev_guides__building_code_blocks}
 ======================================
 
 This file describes steps to build OCCT libraries from complete source package
 ======================================
 
 This file describes steps to build OCCT libraries from complete source package
@@ -6,10 +6,10 @@ on Mac OS X with Code::Blocks.
 
 If you are building OCCT from bare sources (as in Git repository), or do some 
 changes affecting CDL files, you need to use WOK to re-generate header files
 
 If you are building OCCT from bare sources (as in Git repository), or do some 
 changes affecting CDL files, you need to use WOK to re-generate header files
-and build scripts / projects. See \ref dev_guides__building__wok for instructions.
+and build scripts / projects. See \ref occt_dev_guides__building_wok for instructions.
 
 Before building OCCT, you need to install required third-party libraries; see
 
 Before building OCCT, you need to install required third-party libraries; see
-paragraph 1 of \ref dev_guides__building for details.
+paragraph 1 of \ref occt_dev_guides__building for details.
 
 1. Add paths to the mandatory 3rd-party products (Tcl/Tk and FreeType) in file 
    custom.sh located in \<OCCT_ROOT_DIR\>. For this:
 
 1. Add paths to the mandatory 3rd-party products (Tcl/Tk and FreeType) in file 
    custom.sh located in \<OCCT_ROOT_DIR\>. For this:
index 8c9fde7..2f9de9c 100644 (file)
@@ -1,4 +1,4 @@
-Building with MS Visual C++ {#dev_guides__building__msvc}
+Building with MS Visual C++ {#occt_dev_guides__building_msvc}
 ===========================
 
 This file describes steps to build OCCT libraries from complete source
 ===========================
 
 This file describes steps to build OCCT libraries from complete source
@@ -6,10 +6,10 @@ archive on Windows with MS Visual C++.
 
 If you are building OCCT from bare sources (as in Git repository), or do some 
 changes affecting CDL files, you need to use WOK to re-generate header files
 
 If you are building OCCT from bare sources (as in Git repository), or do some 
 changes affecting CDL files, you need to use WOK to re-generate header files
-and build scripts / projects. See \ref dev_guides__building__wok for instructions.
+and build scripts / projects. See \ref occt_dev_guides__building_wok for instructions.
 
 Before building OCCT, you need to install required third-party libraries; see
 
 Before building OCCT, you need to install required third-party libraries; see
-paragraph 1 of \ref dev_guides__building for instructions.
+paragraph 1 of \ref occt_dev_guides__building for instructions.
 
 1. Edit file custom.bat to define environment: 
 
 
 1. Edit file custom.bat to define environment: 
 
index 194a0d0..1b44bc1 100644 (file)
@@ -1,11 +1,11 @@
-Using WOK {#dev_guides__building__wok}
+Using WOK {#occt_dev_guides__building_wok}
 =========
 
 @tableofcontents
 
 =========
 
 @tableofcontents
 
-\ref dev_guides__wok "WOK" is a legacy build environment for Open CASCADE Technology. 
+\ref occt_dev_guides__wok "WOK" is a legacy build environment for Open CASCADE Technology. 
 It is required for generation of header files for classes defined with 
 It is required for generation of header files for classes defined with 
-@ref dev_guides__cdl "CDL" ("Cascade Definition Language"). 
+@ref occt_dev_guides__cdl "CDL" ("Cascade Definition Language"). 
 Also tools for generation of project files for other build systems, and OCCT 
 documentation, are integrated to WOK.
 
 Also tools for generation of project files for other build systems, and OCCT 
 documentation, are integrated to WOK.
 
index 5e97844..f60d1ff 100644 (file)
@@ -1,4 +1,4 @@
-Building with Xcode {#dev_guides__building__xcode}
+Building with Xcode {#occt_dev_guides__building_xcode}
 ===================
 
 This file describes steps to build OCCT libraries from complete source package
 ===================
 
 This file describes steps to build OCCT libraries from complete source package
@@ -6,10 +6,10 @@ on Mac OS X with Xcode.
 
 If you are building OCCT from bare sources (as in Git repository), or do some 
 changes affecting CDL files, you need to use WOK to re-generate header files
 
 If you are building OCCT from bare sources (as in Git repository), or do some 
 changes affecting CDL files, you need to use WOK to re-generate header files
-and build scripts / projects. See \ref dev_guides__building__wok for instructions.
+and build scripts / projects. See \ref occt_dev_guides__building_wok for instructions.
 
 Before building OCCT, you need to install required third-party libraries; see
 
 Before building OCCT, you need to install required third-party libraries; see
-paragraph 1 of \ref dev_guides__building for details.
+paragraph 1 of \ref occt_dev_guides__building for details.
 
 1. Add paths to the mandatory 3rd-party products (Tcl/Tk and FreeType) 
    in file custom.sh located in \<OCCT_ROOT_DIR\>. For this:
 
 1. Add paths to the mandatory 3rd-party products (Tcl/Tk and FreeType) 
    in file custom.sh located in \<OCCT_ROOT_DIR\>. For this:
index a54a4be..412c9a8 100644 (file)
@@ -1,4 +1,4 @@
- Component Definition Language (CDL)  {#dev_guides__cdl}
+ Component Definition Language (CDL)  {#occt_dev_guides__cdl}
 ==============================
 
 @tableofcontents
 ==============================
 
 @tableofcontents
index 5ade76f..3f85bec 100644 (file)
@@ -1,4 +1,4 @@
-Coding Rules {#dev_guides__coding_rules}
+Coding Rules {#occt_dev_guides__coding_rules}
 ======================================
 
 @tableofcontents
 ======================================
 
 @tableofcontents
@@ -238,7 +238,7 @@ Prefer C++ style comments in C++ sources.
 
 ### Commenting out unused code
 
 
 ### Commenting out unused code
 
-Delete unused code instead of commenting it or using #define.
+Delete unused code instead of commenting it or using \#define.
 
 ### Indentation in sources [MANDATORY]
 
 
 ### Indentation in sources [MANDATORY]
 
@@ -541,7 +541,7 @@ Use *private* fields if future extensions should be disabled.
 
 ### Constants and inlines over defines [MANDATORY]
 
 
 ### Constants and inlines over defines [MANDATORY]
 
-Use constant variables (const) and inline functions instead of defines (#define).
+Use constant variables (const) and inline functions instead of defines (\#define).
 
 ### Avoid explicit numerical values [MANDATORY]
 
 
 ### Avoid explicit numerical values [MANDATORY]
 
index d8bb29d..5e0d6b2 100644 (file)
@@ -1,4 +1,4 @@
-Contribution Workflow {#dev_guides__contribution_workflow}
+Contribution Workflow {#occt_dev_guides__contribution_workflow}
 ====================================
 @tableofcontents 
 
 ====================================
 @tableofcontents 
 
index 7c9c129..de84bfb 100644 (file)
@@ -1,4 +1,4 @@
-Debugging tools and hints {#dev_guides__debug}
+Debugging tools and hints {#occt_dev_guides__debug}
 =========================
 
 @tableofcontents
 =========================
 
 @tableofcontents
@@ -27,7 +27,7 @@ Note that all these functions accept pointer to variable as <i>void*</i> to allo
 
 @subsection occt_debug_call_draw Interacting with DRAW
 
 
 @subsection occt_debug_call_draw Interacting with DRAW
 
-Open CASCADE Test Harness or @ref user_guides__test_harness "DRAW" provides an extensive set of tools for inspection and analysis of OCCT shapes and geometric objects and is mostly used as environment for prototyping and debugging OCCT-based algorithms.
+Open CASCADE Test Harness or @ref occt_user_guides__test_harness "DRAW" provides an extensive set of tools for inspection and analysis of OCCT shapes and geometric objects and is mostly used as environment for prototyping and debugging OCCT-based algorithms.
 
 In some cases the objects to be inspected are available in DRAW as results of DRAW commands. In other cases, however, it is necessary to inspect intermediate objects created by the debugged algorithm. To support this, DRAW provides a set of commands allowing the developer to store intermediate objects directly from the debugger stopped at some point during the program execution (usually at a breakpoint).
 
 
 In some cases the objects to be inspected are available in DRAW as results of DRAW commands. In other cases, however, it is necessary to inspect intermediate objects created by the debugged algorithm. To support this, DRAW provides a set of commands allowing the developer to store intermediate objects directly from the debugger stopped at some point during the program execution (usually at a breakpoint).
 
index e8d5880..f35fff8 100644 (file)
@@ -3,16 +3,16 @@
 
 The following documents provide information on OCCT building, development and testing:
 
 
 The following documents provide information on OCCT building, development and testing:
 
-* @subpage dev_guides__building "Building OCCT from sources"
-* @subpage dev_guides__documentation "Documentation system"
-* @subpage dev_guides__coding_rules "Coding Rules"
-* @subpage dev_guides__contribution_workflow "Contribution Workflow"
-* @subpage dev_guides__git_guide "Guide to installing and using Git for OCCT development"
-* @subpage dev_guides__tests "Automatic Testing system"
-* @subpage dev_guides__debug "Debugging tools and hints"
+* @subpage occt_dev_guides__building "Building OCCT from sources"
+* @subpage occt_dev_guides__documentation "Documentation system"
+* @subpage occt_dev_guides__coding_rules "Coding Rules"
+* @subpage occt_dev_guides__contribution_workflow "Contribution Workflow"
+* @subpage occt_dev_guides__git_guide "Guide to installing and using Git for OCCT development"
+* @subpage occt_dev_guides__tests "Automatic Testing system"
+* @subpage occt_dev_guides__debug "Debugging tools and hints"
 
 Two other documents provide details on obsolete technologies used by OCCT, 
 to be removed in future releases:
 
 
 Two other documents provide details on obsolete technologies used by OCCT, 
 to be removed in future releases:
 
-* @subpage dev_guides__wok "Workshop Organization Kit (WOK)"
-* @subpage dev_guides__cdl "Component Definition Language (CDL)"
+* @subpage occt_dev_guides__wok "Workshop Organization Kit (WOK)"
+* @subpage occt_dev_guides__cdl "Component Definition Language (CDL)"
index ceebd33..f0749fa 100644 (file)
@@ -1,4 +1,4 @@
- Documentation System {#dev_guides__documentation}
+ Documentation System {#occt_dev_guides__documentation}
 ======================
 
 @tableofcontents
 ======================
 
 @tableofcontents
@@ -40,40 +40,52 @@ See \ref OCCT_DM_SECTION_A_9 for more details on inserting mathematical expressi
 
 @section OCCT_DM_SECTION_2_1 Documentation Generation
 
 
 @section OCCT_DM_SECTION_2_1 Documentation Generation
 
-Run *gendoc.bat* from OCCT directory to generate all documents defined in *FILES.txt*:
+Run command *gendoc* from command prompt (with OCCT directory as current one) to generate OCCT documentation.
+The synopsis is:
 
 
-*gendoc.bat* can be started with the following options:
+    gendoc \[-h\] {-refman|-overview} \[-html|-pdf|-chm\] \[-m=<list of modules>|-ug=<list of docs>\] \[-v\] \[-s=<search_mode>\] \[-mathjax=<path>\]
+       
+Here the options are:
 
 
-  * <i>-html</i>                : Generates HTML files (cannot be used with -pdf);
-  * <i>-pdf</i>                 : Generates PDF files (cannot be used with -html);
-  * <i>-m=\<modules_list\></i>  : Specifies the list of documents to generate. If it is not specified, all files mentioned in *FILES.txt* are processed;
-  * <i>-l=\<document_name\></i> : Specifies the output document title;
-  * <i>-mathjax=\<path\></i>    : Specifies the path to a non-default location of MathJAX;
-  * <i>-h</i>                   : Prints a help message;
-  * <i>-v</i>                   : Toggles the Verbose mode (info on all script actions is shown).
+* Choice of documentation to be generated:
+  * <i>-overview</i>: To generate Overview and User Guides (cannot be used with -refman)
+  * <i>-refman</i>: To generate class Reference Manual (cannot be used with -overview)
 
 
-If you run the command without arguments (like in the example above) it will generate HTML documentation for all documents defined in *FILES.txt*.
+* Choice of output format:
+  * <i>-html</i>: To generate HTML files (default, cannot be used with -pdf or -chm)
+  * <i>-pdf</i>: To generate PDF files (cannot be used with -refman, -html, or -chm)
+  * <i>-chm</i>: To generate CHM files (cannot be used with -html or -pdf)
+
+* Additional options:
+  * <i>-m=\<modules_list\></i>: List of OCCT modules (separated with comma), for generation of Reference Manual
+  * <i>-ug=\<docs_list\></i>: List of MarkDown documents (separated with comma), to use for generation of Overview / User Guides
+  * <i>-mathjax=\<path\></i>: To use local or alternative copy of MathJax
+  * <i>-s=\<search_mode\></i>: Specifies the Search mode of HTML documents; can be: none | local | server | external
+  * <i>-h</i>: Prints this help message
+  * <i>-v</i>: Enables more verbose output
 
 **Note**
 
 
 **Note**
 
-* In case of a PDF output the utility generates a separate PDF file for each document;
-* In case of an HTML output the utility generates a common Table of contents containing references to all documents.
+* In case of PDF output the utility generates a separate PDF file for each document;
+* In case of HTML output the utility generates a common Table of contents containing references to all documents.
+* In case of CHM output single CHM file is generated
+
+**Examples**
 
 To generate the output for a specific document specify the path to the corresponding MarkDown file (paths relative to *dox* sub-folder can be given), for instance:
 
 ~~~~
 
 To generate the output for a specific document specify the path to the corresponding MarkDown file (paths relative to *dox* sub-folder can be given), for instance:
 
 ~~~~
-    % gendoc.bat -html -m=dev_guides/documentation/documentation.md
+    > gendoc -overview -ug=dev_guides/documentation/documentation.md
 ~~~~
 
 ~~~~
 
-Multiple files can be separated with commas:
+To generate Reference Manual for the whole Open CASCADE Technology library, run: 
 ~~~~
 ~~~~
-    % gendoc.bat -html -m=MD_FILE_1,MD_FILE_2
+    > gendoc -refman
 ~~~~
 
 ~~~~
 
-Use quotes to specify an article name with <i>-l</i> option, which helps to prevent incorrect interpretation of white spaces:
-
+To generate Reference Manual for Foundation Classes and Modeling Data modules only, with search option, run:
 ~~~~
 ~~~~
-    % gendoc.bat -pdf -m=MD_FILE_1 -l="Label of MD_FILE_1 document"
+    > gendoc -refman -m=FoundationClasses,ModelingData,ModelingAlgorithms -s=local
 ~~~~
 
 @section  OCCT_DM_SECTION_3 Documentation Conventions
 ~~~~
 
 @section  OCCT_DM_SECTION_3 Documentation Conventions
index 03739bd..7a77d32 100644 (file)
@@ -1,4 +1,4 @@
-Guide to installing and using Git for OCCT development {#dev_guides__git_guide}
+Guide to installing and using Git for OCCT development {#occt_dev_guides__git_guide}
 =================================
 
 @tableofcontents 
 =================================
 
 @tableofcontents 
@@ -307,7 +307,7 @@ Click on that tab, then click **Add a public key**, and paste the text of the pu
     > git clone gitolite@git.dev.opencascade.org:occt <path>
 ~~~~~
 
     > git clone gitolite@git.dev.opencascade.org:occt <path>
 ~~~~~
 
-  where <i><path></i> is the path to the new folder which will be created for the repository.
+  where <i>\<path\></i> is the path to the new folder which will be created for the repository.
     
   * In TortoiseGit: create a new folder, open it and right-click in the Explorer window, then choose **Git Clone** in the context menu:
  
     
   * In TortoiseGit: create a new folder, open it and right-click in the Explorer window, then choose **Git Clone** in the context menu:
  
index 5298224..3406118 100644 (file)
@@ -1,4 +1,4 @@
- Automated Testing System  {#dev_guides__tests}
+ Automated Testing System  {#occt_dev_guides__tests}
 ======================================
 
 @tableofcontents
 ======================================
 
 @tableofcontents
@@ -11,7 +11,7 @@ Reading the Introduction is sufficient for OCCT developers to use the test syste
 
 @subsection testmanual_1_1 Basic Information
 
 
 @subsection testmanual_1_1 Basic Information
 
-OCCT automatic testing system is organized around DRAW Test Harness @ref user_guides__test_harness "DRAW Test Harness", a console application based on Tcl (a scripting language) interpreter extended by OCCT-related commands.
+OCCT automatic testing system is organized around DRAW Test Harness @ref occt_user_guides__test_harness "DRAW Test Harness", a console application based on Tcl (a scripting language) interpreter extended by OCCT-related commands.
 
 Standard OCCT tests are included with OCCT sources and are located in subdirectory *tests* of the OCCT root folder. Other test folders can be included in the test system, e.g. for testing applications based on OCCT.
 
 
 Standard OCCT tests are included with OCCT sources and are located in subdirectory *tests* of the OCCT root folder. Other test folders can be included in the test system, e.g. for testing applications based on OCCT.
 
@@ -631,12 +631,12 @@ testdiff dir1 dir2 [groupname [gridname]] [options...]
 Here *dir1* and *dir2* are directories containing logs of two test runs.
 
 Possible options are:
 Here *dir1* and *dir2* are directories containing logs of two test runs.
 
 Possible options are:
-* <i>-save <filename> </i> - saves the resulting log in a specified file (<i>$dir1/diff-$dir2.log</i> by default). HTML log is saved with the same name and extension .html;
+* <i>-save \<filename\> </i> - saves the resulting log in a specified file (<i>$dir1/diff-$dir2.log</i> by default). HTML log is saved with the same name and extension .html;
 * <i>-status {same|ok|all}</i> - allows filtering compared cases by their status:
        * *same* - only cases with same status are compared (default);
        * *ok*   - only cases with OK status in both logs are compared;
        * *all*  - results are compared regardless of status;
 * <i>-status {same|ok|all}</i> - allows filtering compared cases by their status:
        * *same* - only cases with same status are compared (default);
        * *ok*   - only cases with OK status in both logs are compared;
        * *all*  - results are compared regardless of status;
-* <i>-verbose <level> </i> - defines the scope of output data:
+* <i>-verbose \<level\> </i> - defines the scope of output data:
        * 1 - outputs only differences;
        * 2 - additionally outputs the list of logs and directories present in one of directories only;
        * 3 - (by default) additionally outputs progress messages;
        * 1 - outputs only differences;
        * 2 - additionally outputs the list of logs and directories present in one of directories only;
        * 3 - (by default) additionally outputs progress messages;
index 8713ddd..dd0d0f7 100644 (file)
@@ -1,4 +1,4 @@
-Workshop Organisation Kit  {#dev_guides__wok}
+Workshop Organisation Kit  {#occt_dev_guides__wok}
 =========================
 
 @tableofcontents
 =========================
 
 @tableofcontents
@@ -10,7 +10,7 @@ build system. This use is outdated, and WOK is to be removed in
 one of future releases of OCCT.
 
 Currently only small subset of WOK capabilities described in this document
 one of future releases of OCCT.
 
 Currently only small subset of WOK capabilities described in this document
-are actually necessary for building OCCT. See @ref dev_guides__building__wok
+are actually necessary for building OCCT. See @ref occt_dev_guides__building_wok
 for more practical guide.
 
 @section occt_wok_1_ Introduction Glossary
 for more practical guide.
 
 @section occt_wok_1_ Introduction Glossary
@@ -96,13 +96,14 @@ interface (i). No description of the source files is needed. There is a single s
 * jni (j). No description of the source files is needed. There is a single source file: *jni.cdl*. 
 * toolkit (t) The description is given by the file called PACKAGES which is stored in the unit’s src directory. FILES must also exist in this directory, and must include PACKAGES in its list of files. 
 * delivery (d) The description is given by two files stored in the unit’s src directory: FILES and a file called COMPONENTS. FILES must include COMPONENTS in its list of files. 
 * jni (j). No description of the source files is needed. There is a single source file: *jni.cdl*. 
 * toolkit (t) The description is given by the file called PACKAGES which is stored in the unit’s src directory. FILES must also exist in this directory, and must include PACKAGES in its list of files. 
 * delivery (d) The description is given by two files stored in the unit’s src directory: FILES and a file called COMPONENTS. FILES must include COMPONENTS in its list of files. 
-* resource (r) A resource unit is used in a delivery. FILES contains a list of the unit’s files, one per line in the following format: *atype:::afilename*  Here, *filename* is the name of a file, which the compiler will look for in the src directory of the unit, and *atype* is a WOK type. To display a list of all available WOK types, use the command: *wokinfo -T*. 
+* resource (r) A resource unit is used in a delivery. FILES contains a list of the unit’s files, one per line in the following format: *atype\:\:\:afilename*  Here, *filename* is the name of a file, which the compiler will look for in the src directory of the unit, and *atype* is a WOK type. To display a list of all available WOK types, use the command: *wokinfo -T*. 
 
 #### Derived files
 
 Derived files created by compilation are automatically placed in the derived section of the development unit. These may be executable files or archives of compilation results. 
 
 @subsubsection occt_wok_2_1_3 Package
 
 #### Derived files
 
 Derived files created by compilation are automatically placed in the derived section of the development unit. These may be executable files or archives of compilation results. 
 
 @subsubsection occt_wok_2_1_3 Package
+
 A package is a development unit that defines a set of classes, which share a number of common features such as similar data structure or a set of complementary algorithmic services. Packages help to manage creation and the use of large hierarchies of software components.  
 To create a package, you write a .cdl file describing it in the src directory of the package development unit. The description includes classes and global methods, which comprise it. Each class is also described in a separate .cdl file. The package .cdl file also lists the packages used in the specification of its classes and methods. 
 C++ implementation files are also stored in the src subdirectory of the package development unit. These implementation files are: 
 A package is a development unit that defines a set of classes, which share a number of common features such as similar data structure or a set of complementary algorithmic services. Packages help to manage creation and the use of large hierarchies of software components.  
 To create a package, you write a .cdl file describing it in the src directory of the package development unit. The description includes classes and global methods, which comprise it. Each class is also described in a separate .cdl file. The package .cdl file also lists the packages used in the specification of its classes and methods. 
 C++ implementation files are also stored in the src subdirectory of the package development unit. These implementation files are: 
@@ -335,21 +336,21 @@ These roots are defined in the workbench definition file *MyWorkbench.edl* as th
 @subsubsection occt_wok_2_2_2  Directories
 Under each root, a hierarchy of directories allows to store various files. 
 * Under the Home root are found: 
 @subsubsection occt_wok_2_2_2  Directories
 Under each root, a hierarchy of directories allows to store various files. 
 * Under the Home root are found: 
-       *  *work*, the private workbench directory reserved for the developer 
-       *  *Adm*, the directory reserved for administration files. 
+  *  *work*, the private workbench directory reserved for the developer 
+  *  *Adm*, the directory reserved for administration files. 
 * Src contains: 
 * Src contains: 
-       *  *src/MyUD*, the directory containing the source files of the development unit MyUD. 
+  *  *src/MyUD*, the directory containing the source files of the development unit MyUD. 
 * DBMS contains: 
 * DBMS contains: 
-       *  *inc*, containing the public header files of the workbench UDs 
-       *  *drv/MyUD*, containing the private extracted files of MyUD 
-       *  *drv/MyUD/.adm*, containing the administration files dependent on the extraction profile 
-       *  *drv/MyUD/.tmp*, containing the temporary files dependent on the extraction profile. 
+  *  *inc*, containing the public header files of the workbench UDs 
+  *  *drv/MyUD*, containing the private extracted files of MyUD 
+  *  *drv/MyUD/.adm*, containing the administration files dependent on the extraction profile 
+  *  *drv/MyUD/.tmp*, containing the temporary files dependent on the extraction profile. 
 * DBMS_Station contains: 
 * DBMS_Station contains: 
-       * *<station>/lib* with all the libraries produced in the workbench
-       * *<station>/bin* with all the binaries produced in the workbench
-       * *<station>/MyUD* with all the station dependent files which are private to the development unit such as objects
-       * *<station>/MyUD/.adm* with all the station dependent administration files
-       * *<station>/MyUD/.tmp* with all the temporary files constructed in the development unit.
+  * *\<station\>/lib* with all the libraries produced in the workbench
+  * *\<station\>/bin* with all the binaries produced in the workbench
+  * *\<station\>/MyUD* with all the station dependent files which are private to the development unit such as objects
+  * *\<station\>/MyUD/.adm* with all the station dependent administration files
+  * *\<station\>/MyUD/.tmp* with all the temporary files constructed in the development unit.
 
   
 @image html /dev_guides/wok/images/wok_image011.png "Structure of the workbench Mywb"
 
   
 @image html /dev_guides/wok/images/wok_image011.png "Structure of the workbench Mywb"
@@ -441,7 +442,7 @@ If you don’t want to work in a workshop already present in the factory, you ca
 ~~~~~
 This creates the new workshop **MyWorkshop** in the current factory. To create the same workshop in a different factory use the syntax below: 
 ~~~~~
 ~~~~~
 This creates the new workshop **MyWorkshop** in the current factory. To create the same workshop in a different factory use the syntax below: 
 ~~~~~
-> screate –d <MyFactory:MyWorkshp>
+> screate –d <MyFactory:MyWorkshop>
 ~~~~~
 
 When you create a new workshop, it is empty. 
 ~~~~~
 
 When you create a new workshop, it is empty. 
@@ -537,8 +538,8 @@ You will need to use an editor to implement these methods in C++.
 
 To compile the package, use the command: 
 ~~~~~
 
 To compile the package, use the command: 
 ~~~~~
-       > umake -o obj <MyPackage>
-~~~~~  
+  > umake -o obj <MyPackage>
+~~~~~  
 If you do not specify a package, the current development unit is compiled. 
 
 #### Sample Construction of a Package
 If you do not specify a package, the current development unit is compiled. 
 
 #### Sample Construction of a Package
@@ -546,20 +547,20 @@ If you do not specify a package, the current development unit is compiled.
 In the following example a workbench named **MyWb** is created as a child of an existing workbench **Topo**. MyWb is used for working on the package **MyPack**. Commands preceded by an asterisk below are used only once per session: 
 1. Create the MyWb workbench as a child of Topo. 
 ~~~~~
 In the following example a workbench named **MyWb** is created as a child of an existing workbench **Topo**. MyWb is used for working on the package **MyPack**. Commands preceded by an asterisk below are used only once per session: 
 1. Create the MyWb workbench as a child of Topo. 
 ~~~~~
-       > wcreate MyWb -f Topo -d
+  > wcreate MyWb -f Topo -d
 ~~~~~
 2. Create MyPack in MyWb. 
 ~~~~~
 ~~~~~
 2. Create MyPack in MyWb. 
 ~~~~~
-       > ucreate MyPack     
+  > ucreate MyPack     
 ~~~~~
 3. Move to the source directory of MyPack. 
 ~~~~~
 ~~~~~
 3. Move to the source directory of MyPack. 
 ~~~~~
-       > wokcd MyPack 
+  > wokcd MyPack 
 ~~~~~
 4. Edit the source files (MyPack.cdl etc.). You do this outside tcl, using the editor of your choice. 
 5. Start the extraction of MyPack. 
 ~~~~~
 ~~~~~
 4. Edit the source files (MyPack.cdl etc.). You do this outside tcl, using the editor of your choice. 
 5. Start the extraction of MyPack. 
 ~~~~~
-        >  umake -e xcpp 
+   >  umake -e xcpp 
 ~~~~~
 6. Generate the .cxx templates for MyPack: MyPack.cxx.template 
 ~~~~~
 ~~~~~
 6. Generate the .cxx templates for MyPack: MyPack.cxx.template 
 ~~~~~
@@ -572,57 +573,57 @@ In the following example a workbench named **MyWb** is created as a child of an
 #### Package Files
 
 * Primary Files for a Package 
 #### Package Files
 
 * Primary Files for a Package 
-       + <Package>.cdl                         Primary package file.
-       + <Package>_<Class>.cdl         Primary class file.
+  + \<Package\>.cdl       Primary package file.
+  + \<Package\>_\<Class\>.cdl   Primary class file.
 * C++ Files for a Package
 * C++ Files for a Package
-       + <Package>.cxx                         Primary package source file.
-       + <Package>_[1..9[0..9]*].cxx   Secondary package source files.
-       + <Package>.lxx                         Inline package methods source file.
-       + <Package>.pxx                         Private instructions source file.
+  + \<Package\>.cxx       Primary package source file.
+  + \<Package\>_[1..9[0..9]*].cxx   Secondary package source files.
+  + \<Package\>.lxx       Inline package methods source file.
+  + \<Package\>.pxx       Private instructions source file.
 * C++ Files for a Class
 * C++ Files for a Class
-       + <Package>_<Class>.cxx         Primary class source file.
-       + <Package>_<Class>_[1..9[0..9]*].cxx
+  + \<Package\>_\<Class\>.cxx   Primary class source file.
+  + \<Package\>_\<Class\>_[1..9[0..9]*].cxx
 * Secondary class source files.
 * Secondary class source files.
-       + <Package>_<Class>.gxx         Generic class methods source file. This is an alternative to the .cxx file(s), you do not have both.
-       + <Package>_<Class>.lxx         Inline methods source file.
-       + <Package>_<Class>.pxx         Private instructions source file.
+  + \<Package\>_\<Class\>.gxx   Generic class methods source file. This is an alternative to the .cxx file(s), you do not have both.
+  + \<Package\>_\<Class\>.lxx   Inline methods source file.
+  + \<Package\>_\<Class\>.pxx   Private instructions source file.
 * Derived C++ Files for a Package
 * Derived C++ Files for a Package
-       + <Package>.hxx                         User header file.
-       + <Package>.ixx                         User header file included in <Package>.cxx.
-       + <Package>.jxx                         User header file included in <Package>_[1-9].cxx.
+  + \<Package\>.hxx       User header file.
+  + \<Package\>.ixx       User header file included in \<Package\>.cxx.
+  + \<Package\>.jxx       User header file included in \<Package\>_[1-9].cxx.
 * Derived C++ files for a class
 * Derived C++ files for a class
-       + <Package>_<Class>.hxx         User header file.
-       + <Package>_<Class>.ixx         User header file included in <Package>_<Class>.cxx.
-       + <Package>_<Class>.jxx         User header file in <Package>_<Class>_[1..9[0..9]*].cxx.
-       + Handle_<Package>_<Class>.hxx Persistent or Transient class header file.
-       + <Package>_<Class>_0.cxx       For instantiated classes.
+  + \<Package\>_\<Class\>.hxx   User header file.
+  + \<Package\>_\<Class\>.ixx   User header file included in \<Package\>_\<Class\>.cxx.
+  + \<Package\>_\<Class\>.jxx   User header file in \<Package\>_\<Class\>_[1..9[0..9]*].cxx.
+  + Handle_\<Package\>_\<Class\>.hxx Persistent or Transient class header file.
+  + \<Package\>_\<Class\>_0.cxx   For instantiated classes.
 
 Umake Steps for a Package 
 -------------------------
 The umake steps for development units of package type are explained below. 
 
 Umake Steps for a Package 
 -------------------------
 The umake steps for development units of package type are explained below. 
-* *src*                        Processes the file *MyPackage.cdl* to generate a list of all the CDL files in the development unit. Processes FILES to list source files. 
-* *xcpp.fill*  Compiles the internal data structure to prepare for subsequent extractions. 
-* *xcpp.src*           Lists the source files (.cxx, .gxx, .lxx) deduced from the CDL files. 
-* *xcpp.header*        Extracts header files for the classes in the development unit. 
+* *src*       Processes the file *MyPackage.cdl* to generate a list of all the CDL files in the development unit. Processes FILES to list source files. 
+* *xcpp.fill*   Compiles the internal data structure to prepare for subsequent extractions. 
+* *xcpp.src*     Lists the source files (.cxx, .gxx, .lxx) deduced from the CDL files. 
+* *xcpp.header*   Extracts header files for the classes in the development unit. 
 * *xcpp.template* Extracts a template for implementation of methods. (Hidden step.)
 * *xcpp.template* Extracts a template for implementation of methods. (Hidden step.)
-* *obj.inc*         Based on the list of source files generated by the src and xcpp.src steps, this step publishes the include files for the development unit so that other units can use them. 
-* *obj.cgen*           Processes the source files to generate code. 
-* *obj.comp*          Compiles each file that can be compiled. 
-* *obj.idep*        Generates dependency information for the unit. This comprises: 
-       + Includes performed by unit compilation (Unit.MakeState) 
-       + Implementation dependencies in terms of the unit suppliers (Unit.ImplDep) 
-* *obj.lib*          Generates the shared library for the development unit. 
+* *obj.inc*      Based on the list of source files generated by the src and xcpp.src steps, this step publishes the include files for the development unit so that other units can use them. 
+* *obj.cgen*     Processes the source files to generate code. 
+* *obj.comp*    Compiles each file that can be compiled. 
+* *obj.idep*      Generates dependency information for the unit. This comprises: 
+  + Includes performed by unit compilation (Unit.MakeState) 
+  + Implementation dependencies in terms of the unit suppliers (Unit.ImplDep) 
+* *obj.lib*     Generates the shared library for the development unit. 
 
 @subsubsection occt_wok_3_4_2  Creating a Nocdlpack
 If your executable requires the use of a nocdlpack, create a development unit of nocdlpack type and move to its structure using the commands below: 
 ~~~~~
 
 @subsubsection occt_wok_3_4_2  Creating a Nocdlpack
 If your executable requires the use of a nocdlpack, create a development unit of nocdlpack type and move to its structure using the commands below: 
 ~~~~~
-       > ucreate -n <MyNoCDLPack>
-       > wokcd <MyNoCDLPack> 
+  > ucreate -n <MyNoCDLPack>
+  > wokcd <MyNoCDLPack> 
 ~~~~~
 Use an editor to write *FILES*, which is a nomenclature file for a nocdlpack. This file must list all the C, C++, Fortran, lex, and yacc sourcs files (one per line). 
 Build the nocdlpack using the following command: 
 ~~~~~
 ~~~~~
 Use an editor to write *FILES*, which is a nomenclature file for a nocdlpack. This file must list all the C, C++, Fortran, lex, and yacc sourcs files (one per line). 
 Build the nocdlpack using the following command: 
 ~~~~~
-       > umake [<MyNoCDLPack>]
+  > umake [<MyNoCDLPack>]
 ~~~~~
 **Note** that a nocdlpack unit is not intended to perform tests. Use an executable unit instead.
 
 ~~~~~
 **Note** that a nocdlpack unit is not intended to perform tests. Use an executable unit instead.
 
@@ -648,14 +649,14 @@ In the following example a nocdlpack *MyNocdlpack*, is created. Commands precede
 #### Umake Steps for a Nocdlpack 
 
 The *umake* steps for development units of *nocdlpack* type are explained below. 
 #### Umake Steps for a Nocdlpack 
 
 The *umake* steps for development units of *nocdlpack* type are explained below. 
-* *src*               Processes FILES to list source files. 
-* *obj.cgen*   Processes the source files to generate code. 
-* *obj.inc*    Based on the list of source files, this step publishes the header files for the unit so that other units can use them. 
-* *obj.comp*   Compiles each file that can be compiled. 
-* *obj.idep*   Generates dependency information for the unit. This comprises: 
-       + Includes performed by unit compilation. (Unit.MakeState) 
-       + Implementation dependencies in terms of the unit suppliers. (Unit.ImplDep) 
-* *obj.lib*    Generates the shared library for the unit. 
+* *src*      Processes FILES to list source files. 
+* *obj.cgen*   Processes the source files to generate code. 
+* *obj.inc*   Based on the list of source files, this step publishes the header files for the unit so that other units can use them. 
+* *obj.comp*   Compiles each file that can be compiled. 
+* *obj.idep*   Generates dependency information for the unit. This comprises: 
+  + Includes performed by unit compilation. (Unit.MakeState) 
+  + Implementation dependencies in terms of the unit suppliers. (Unit.ImplDep) 
+* *obj.lib*   Generates the shared library for the unit. 
 
 @subsubsection occt_wok_3_3_3  Creating a Schema
 If the application, which you intend to build, stores data in a file, you need to define a schema for the persistent data types that are known. 
 
 @subsubsection occt_wok_3_3_3  Creating a Schema
 If the application, which you intend to build, stores data in a file, you need to define a schema for the persistent data types that are known. 
@@ -667,12 +668,12 @@ You create a schema and go to its root directory using the commands:
 ~~~~~ 
 Using the editor of your choice, write a .cdl file to define the schema. This schema file lists all the packages that contain persistent data types used in the implementation of your application. It has the following format: 
 ~~~~~
 ~~~~~ 
 Using the editor of your choice, write a .cdl file to define the schema. This schema file lists all the packages that contain persistent data types used in the implementation of your application. It has the following format: 
 ~~~~~
-       schema MySchema
-       is
+  schema MySchema
+  is
 class <MyClass> from <Package>;
 class <MyClass> from <Package>;
-       end;
+  end;
 ~~~~~
 ~~~~~
-       
+  
 #### Building a Schema 
 
 Compile and check the coherence of the CDL specification for the schema: 
 #### Building a Schema 
 
 Compile and check the coherence of the CDL specification for the schema: 
@@ -705,25 +706,25 @@ In the following example the schema *MySchema* is created. It contains all the s
 3. Edit the source file MySchema.cdl. You do this outside tcl, using the editor of your choice. 
 4. Derive implementation files. 
 ~~~~~
 3. Edit the source file MySchema.cdl. You do this outside tcl, using the editor of your choice. 
 4. Derive implementation files. 
 ~~~~~
-       > umake -e xcpp.sch
+  > umake -e xcpp.sch
 ~~~~~
 5. Derive application schema files. 
 ~~~~~
 ~~~~~
 5. Derive application schema files. 
 ~~~~~
-       > umake -o xcpp.ossg
+  > umake -o xcpp.ossg
 ~~~~~
 6. Compile the schema. 
 ~~~~~
 ~~~~~
 6. Compile the schema. 
 ~~~~~
-       > umake -o obj
+  > umake -o obj
 ~~~~~
 
 #### Schema Files
 
 * Primary Files for a Schema
 ~~~~~
 
 #### Schema Files
 
 * Primary Files for a Schema
-       + *<Schema>.cdl* Primary schema file.
+  + *\<Schema\>.cdl* Primary schema file.
 * Derived C++ Files for a Schema
 * Derived C++ Files for a Schema
-       + *<Schema>.hxx* User header files.
-       + *<Schema>.cxx* Schema implementation files.
-       + *<Sch_MyPack_MyClass>.cxx* Schema implementation files.
+  + *\<Schema\>.hxx* User header files.
+  + *\<Schema\>.cxx* Schema implementation files.
+  + *\<Sch_MyPack_MyClass\>.cxx* Schema implementation files.
 
 #### Umake Steps for a Schema 
 
 
 #### Umake Steps for a Schema 
 
@@ -744,21 +745,21 @@ To make an executable from one or more of the packages, which you have created,
 Refer to the **CDL User’s Guide** for full details. A simple example is given below. 
 
 ~~~~~
 Refer to the **CDL User’s Guide** for full details. A simple example is given below. 
 
 ~~~~~
-       executable <MyExec> // the executable unit
+  executable <MyExec> // the executable unit
 is
 is
-       executable myexec // the binary file
+  executable myexec // the binary file
 uses
 Tcl_Lib as external
 is
 uses
 Tcl_Lib as external
 is
-       myexec; // the C++ file
+  myexec; // the C++ file
 end;    // several binaries can be specified in one .cdl file.
 executable myex2
 is
 end;    // several binaries can be specified in one .cdl file.
 executable myex2
 is
-       myex2;
+  myex2;
 end;
 end;
-       end;
-~~~~~  
-       
+  end;
+~~~~~  
+  
 Write the C++ file(s). For the example above you write two files: *myexec.cxx* and *myex2.cxx*.
  
 #### Building the Executable 
 Write the C++ file(s). For the example above you write two files: *myexec.cxx* and *myex2.cxx*.
  
 #### Building the Executable 
@@ -770,29 +771,29 @@ To build the executable, use the command *umake*
 In the following example an executable, *MyExec*, is created in the workbench *MyWb*. Commands preceded by an asterisk below are used only once per session: 
 1. \*Create MyExec in MyWb. 
 ~~~~~
 In the following example an executable, *MyExec*, is created in the workbench *MyWb*. Commands preceded by an asterisk below are used only once per session: 
 1. \*Create MyExec in MyWb. 
 ~~~~~
-       > ucreate -x MyExec
+  > ucreate -x MyExec
 ~~~~~
 2. Move to the source directory of *MyExec*. 
 ~~~~~
 ~~~~~
 2. Move to the source directory of *MyExec*. 
 ~~~~~
-       > wokcd MyExec
-~~~~~  
+  > wokcd MyExec
+~~~~~  
 3. Edit the cdl source file *MyExec.cdl*. You do this outside tcl, using the editor of your choice. 
 4. Edit the C++ files *AnExe.cxx*, etc. You do this outside tcl, using the editor of your choice. 
 5. Build MyExec. 
 ~~~~~
 3. Edit the cdl source file *MyExec.cdl*. You do this outside tcl, using the editor of your choice. 
 4. Edit the C++ files *AnExe.cxx*, etc. You do this outside tcl, using the editor of your choice. 
 5. Build MyExec. 
 ~~~~~
-       > umake
-~~~~~  
+  > umake
+~~~~~  
 6. Run the executable file. 
 ~~~~~
 6. Run the executable file. 
 ~~~~~
-       > wokcd -PLib
-               > MyExec
+  > wokcd -PLib
+    > MyExec
 ~~~~~
 
 #### Executable Files 
 
 ~~~~~
 
 #### Executable Files 
 
-| <Exec>.cdl | primary executable file |
-| <AnExe>.cxx |                Source C++ file |
-| <AnExe>_[1-9].cxx |  Other source C++ files |
+| \<Exec\>.cdl        |  Primary executable file |
+| \<AnExe\>.cxx       |  Source C++ file         |
+| \<AnExe\>_[1-9].cxx |  Other source C++ files  |
 
 #### Umake Steps for an Executable
 
 
 #### Umake Steps for an Executable
 
@@ -812,16 +813,16 @@ To test an executable, you create an executable development unit and move to its
 When you write the .cdl file for your test executable, specify the packages to test, for example: 
 ~~~~~
 executable MyTest // the executable unit 
 When you write the .cdl file for your test executable, specify the packages to test, for example: 
 ~~~~~
 executable MyTest // the executable unit 
-       is 
+  is 
 executable mytest1 // the binary file 
 is 
 executable mytest1 // the binary file 
 is 
-       mytest1; //the C++ file 
+  mytest1; //the C++ file 
 end; // several binaries can be specified in one .cdl file. 
 executable mytest2 
 is 
 end; // several binaries can be specified in one .cdl file. 
 executable mytest2 
 is 
-       mytest2; 
+  mytest2; 
 end; 
 end; 
-       end; 
+  end; 
 ~~~~~
 Write the C++ test file(s), in the example, *mytest1.cxx* and *mytest2.cxx*. 
 #### Building the Executable 
 ~~~~~
 Write the C++ test file(s), in the example, *mytest1.cxx* and *mytest2.cxx*. 
 #### Building the Executable 
@@ -879,8 +880,8 @@ source /adv_22/WOK/BAG/KERNEL-K1-2-WOK/adm/Kernel.csh
 
 You create and enter a toolkit development unit using the following commands: 
 ~~~~~
 
 You create and enter a toolkit development unit using the following commands: 
 ~~~~~
-       > ucreate -t <TKMyToolkit>
-       > wokcd <TKMyToolkit>
+  > ucreate -t <TKMyToolkit>
+  > wokcd <TKMyToolkit>
 ~~~~~
 
 #### Write the Nomenclature File for the Toolkit 
 ~~~~~
 
 #### Write the Nomenclature File for the Toolkit 
@@ -947,7 +948,7 @@ When executables are compiled, a TOOLKITS file is used to determine which toolki
 
 Toolkit substitution is performed as follows: 
 1. MyEngine uses A, B and C; 
 
 Toolkit substitution is performed as follows: 
 1. MyEngine uses A, B and C; 
-2. The toolkit TK provides     A and D; D uses E; 
+2. The toolkit TK provides  A and D; D uses E; 
 3. Compilation of *MyEngine* includes TK, B C and E.
  
 Here, for simplicity, assume that additional toolkits are not substituted for B, C and E. 
 3. Compilation of *MyEngine* includes TK, B C and E.
  
 Here, for simplicity, assume that additional toolkits are not substituted for B, C and E. 
@@ -976,7 +977,7 @@ Note that keywords and default options are shown in bold.
 | **Engine** | MyEng **[CDL][DYNAMIC][SOURCES]** | 
 | **Schema** | MyShma **[CDL][LIBRARY][SOURCES][DOC]** |
 | **Toolkit** |MyTk **[LIBRARY][SOURCES]** |
 | **Engine** | MyEng **[CDL][DYNAMIC][SOURCES]** | 
 | **Schema** | MyShma **[CDL][LIBRARY][SOURCES][DOC]** |
 | **Toolkit** |MyTk **[LIBRARY][SOURCES]** |
-| **Get** | DevelopmentUnitName::Type:::File |
+| **Get** | DevelopmentUnitName::Type\:\:\:File |
 
 \* Without mention of the version 
 
 
 \* Without mention of the version 
 
@@ -1022,22 +1023,22 @@ The output of the umake process is a parcel
 #### Umake Steps for a Delivery Unit
 
 The umake steps for development units of type delivery are explained below. 
 #### Umake Steps for a Delivery Unit
 
 The umake steps for development units of type delivery are explained below. 
-* *src*                                Processes FILES to list source files. 
-* *base*                            Creates directories, defines the list of units, copies the parcels and the release notes. 
-* *get.list*                    Lists files to get (using Get, Resource). 
-* *get.copy*                   Copy the files listed by get.list. 
-* *cdl.list*                         Lists CDL files to copy. 
-* *cdl.copy*                          Copies the files listed by cdl.list. 
-* *source.list*                Lists units from which sources are to be copied. 
-* *source.build*             Creates a file for sources (in the format: unit.type.Z). 
-* *inc.list*            Lists includes to copy. 
-* *inc.copy*                         Copies files listed by inc.list. 
-* *lib.shared*                         Works out the inputs for building or copying shareable libraries. 
-* *lib.shared.build*   Copies or builds (depending on the platform) the shareable libraries. 
-* *lib.server.list*           Lists interface files to copy. 
-* *exec.list*                Lists inputs for executable delivery. 
-* *exec.build*                 Creates executable in the parcel. 
-* *files*                             Works out the list of files delivered in the parcel. 
+* *src*         Processes FILES to list source files. 
+* *base*           Creates directories, defines the list of units, copies the parcels and the release notes. 
+* *get.list*           Lists files to get (using Get, Resource). 
+* *get.copy*       Copy the files listed by get.list. 
+* *cdl.list*         Lists CDL files to copy. 
+* *cdl.copy*        Copies the files listed by cdl.list. 
+* *source.list*     Lists units from which sources are to be copied. 
+* *source.build*       Creates a file for sources (in the format: unit.type.Z). 
+* *inc.list*           Lists includes to copy. 
+* *inc.copy*         Copies files listed by inc.list. 
+* *lib.shared*       Works out the inputs for building or copying shareable libraries. 
+* *lib.shared.build*  Copies or builds (depending on the platform) the shareable libraries. 
+* *lib.server.list*     Lists interface files to copy. 
+* *exec.list*       Lists inputs for executable delivery. 
+* *exec.build*       Creates executable in the parcel. 
+* *files*          Works out the list of files delivered in the parcel. 
 
 @subsubsection occt_wok_3_8_2  Installing a Parcel
 You open the root workbench of the workshop where you want to install the parcel using the following command: 
 
 @subsubsection occt_wok_3_8_2  Installing a Parcel
 You open the root workbench of the workshop where you want to install the parcel using the following command: 
@@ -1171,26 +1172,26 @@ In the following example a workbench, *MyWb*, is used for working on the jni, *M
 Primary jni file is *Jni.cdl*
 
 Derived Java files for a Jni are:
 Primary jni file is *Jni.cdl*
 
 Derived Java files for a Jni are:
-* <Package>_<Class>.java - Java source file of the class to be wrapped. 
-* <Package>_<Class>.class - Compiled java source file. 
+* \<Package\>_\<Class\>.java - Java source file of the class to be wrapped. 
+* \<Package\>_\<Class\>.class - Compiled java source file. 
 
 Derived C++ files for a Jni are:
 
 Derived C++ files for a Jni are:
-* <Jni>_<Package>_<Class>_java.h       - Include file for the C++ implementation of JNI. 
-* <Jni>_<Package>_<Class>_java.cxx     - C++ implementation of JNI.
+* \<Jni\>_\<Package\>_\<Class\>_java.h  - Include file for the C++ implementation of JNI. 
+* \<Jni\>_\<Package\>_\<Class\>_java.cxx  - C++ implementation of JNI.
 
 ### Umake Steps for a Jni
 
 The umake steps for development units of type jni are explained below. 
 
 ### Umake Steps for a Jni
 
 The umake steps for development units of type jni are explained below. 
-* *src*          Processes MyJni.cdl to list the CDL files for the development unit. Processes the FILES file to list source files. 
+* *src*          Processes MyJni.cdl to list the CDL files for the development unit. Processes the FILES file to list source files. 
 * *xcpp.fill*     Compiles the internal data structure to prepare for subsequent extractions. 
 * *xcpp.fill*     Compiles the internal data structure to prepare for subsequent extractions. 
-* *xcpp.client*        Extracts the services declared in included interface unit(s) into Java and creates .java and \*_java.cxx files. 
-* *xcpp.javac*         Compiles .java files into .class files. 
-* *xcpp.javah*         Creates .h header files. 
+* *xcpp.client*   Extracts the services declared in included interface unit(s) into Java and creates .java and \*_java.cxx files. 
+* *xcpp.javac*   Compiles .java files into .class files. 
+* *xcpp.javah*   Creates .h header files. 
 * *obj.comp* Compiles generated C++ files. 
 * *obj.comp* Compiles generated C++ files. 
-* *obj.idep*         Generates dependency information for the unit. 
-* *exec.libs*  Computes full implementation dependency to prepare for linking. 
-* *exec.tks*         Performs toolkit substitution. 
-* *exec.link*        Generates the shared library for the development unit. 
+* *obj.idep*     Generates dependency information for the unit. 
+* *exec.libs*   Computes full implementation dependency to prepare for linking. 
+* *exec.tks*     Performs toolkit substitution. 
+* *exec.link*     Generates the shared library for the development unit. 
 
 @subsection occt_wok_3_11  More Advanced Use
 @subsubsection occt_wok_3_11_1  Default User Profile
 
 @subsection occt_wok_3_11  More Advanced Use
 @subsubsection occt_wok_3_11_1  Default User Profile
@@ -1198,10 +1199,10 @@ There is a default user profile. If you wish to change this profile the command
 
 An example profile is given below. 
 ~~~~~
 
 An example profile is given below. 
 ~~~~~
-       Info : Profile in : WOK:k1dev:ref 
-       Info : Extractor : DFLT 
-       Info : Compile Mode : Optimized 
-       Info : Station Type : sil 
+  Info : Profile in : WOK:k1dev:ref 
+  Info : Extractor : DFLT 
+  Info : Compile Mode : Optimized 
+  Info : Station Type : sil 
 ~~~~~
 @subsubsection occt_wok_3_11_2  Changing Parcel Configuration
 Parcel configuration rarely needs changes. However, if you do need to modify the list of resources, you can do so by editing the admin parameter file of the factory. This file is found in the admin directory of the factory and is named after the workshop. It has the suffix .edl. Its full name has the following format: 
 ~~~~~
 @subsubsection occt_wok_3_11_2  Changing Parcel Configuration
 Parcel configuration rarely needs changes. However, if you do need to modify the list of resources, you can do so by editing the admin parameter file of the factory. This file is found in the admin directory of the factory and is named after the workshop. It has the suffix .edl. Its full name has the following format: 
@@ -1286,7 +1287,7 @@ CommandName
 ~~~~~
 **Note** a few commands described in this chapter do not completely respect this syntax; for example, *create* and *rm*. 
 
 ~~~~~
 **Note** a few commands described in this chapter do not completely respect this syntax; for example, *create* and *rm*. 
 
-As a rule, where an _<EntityPath>_ is given as an argument it specifies which entity the command applies to. Where no _<EntityPath>_ is specified, the command applies to the nearest appropriate entity. The *create* and *rm* commands are notable exceptions: you **must** specify an entity path with these commands. 
+As a rule, where an _\<EntityPath\>_ is given as an argument it specifies which entity the command applies to. Where no _\<EntityPath\>_ is specified, the command applies to the nearest appropriate entity. The *create* and *rm* commands are notable exceptions: you **must** specify an entity path with these commands. 
 
 @subsection occt_wok_4_2  General Services
 General services are commands that apply to any entity manipulated by WOK. They are used for: 
 
 @subsection occt_wok_4_2  General Services
 General services are commands that apply to any entity manipulated by WOK. They are used for: 
@@ -1303,10 +1304,10 @@ wokcd -P <ParamSuffix> [<EntityPath>]
 
 Navigates between different WOK entities and changes the current working directory. Without any arguments wokcd lists the current position (the WOK equivalent of ‘pwd’). With an argument, wokcd moves to the specified location. 
 Options: 
 
 Navigates between different WOK entities and changes the current working directory. Without any arguments wokcd lists the current position (the WOK equivalent of ‘pwd’). With an argument, wokcd moves to the specified location. 
 Options: 
-* _<EntityPath>_       Moves to the home directory of the entity specified by <EntityPath>, i.e. moves to the location given by the parameter: %wokcd <EntityPath>_Home.
-* _-P <ParamSuffix> [<EntityPath>]_ Moves to the <ParamSuffix> directory of the entity specified by <EntityPath>. i.e. moves to the location given by the parameter: %<EntityPath>_<ParamSuffix>. If no entity path is specified, this command moves to the <ParamSuffix> directory of the current entity.
+* _\<EntityPath\>_   Moves to the home directory of the entity specified by \<EntityPath\>, i.e. moves to the location given by the parameter: %wokcd \<EntityPath\>_Home.
+* _-P \<ParamSuffix\> [\<EntityPath\>]_ Moves to the \<ParamSuffix\> directory of the entity specified by \<EntityPath\>. i.e. moves to the location given by the parameter: %\<EntityPath\>_\<ParamSuffix\>. If no entity path is specified, this command moves to the \<ParamSuffix\> directory of the current entity.
 
 
-Possible values for <ParamSuffix> are: Home, Adm and Src.
+Possible values for \<ParamSuffix\> are: Home, Adm and Src.
 Use the following commands to change directories within a development unit: 
 * **wsrc** To access the source files. 
 * **winc** To access the include files. 
 Use the following commands to change directories within a development unit: 
 * **wsrc** To access the source files. 
 * **winc** To access the include files. 
@@ -1345,9 +1346,9 @@ Closes and reopens all the entities.
 ~~~~~
 wokenv -f <ScriptFile> -t csh
 ~~~~~
 ~~~~~
 wokenv -f <ScriptFile> -t csh
 ~~~~~
-Creates the file <ScriptFile>. This file is a script, which configures a C shell to mirror the current WOK environment. See the <a href="#occt_wok_3_6">Test Environments</a> section for more details. 
+Creates the file \<ScriptFile\>. This file is a script, which configures a C shell to mirror the current WOK environment. See the <a href="#occt_wok_3_6">Test Environments</a> section for more details. 
 Options: 
 Options: 
-* -f <ScriptFile> - Specifies the name of the file to produce. 
+* -f \<ScriptFile\> - Specifies the name of the file to produce. 
 * -t csh - Produces a file for configuring a C shell. 
 * -s - Sets up environment variables for application launching. 
 Example
 * -t csh - Produces a file for configuring a C shell. 
 * -s - Sets up environment variables for application launching. 
 Example
@@ -1361,7 +1362,7 @@ Generates the shell script *MyTestEnvScript* to configure a C shell so that it m
 wokinfo -<option> [<EntityPath>]
 wokinfo -<option> <argument> [<EntityPath>]
 ~~~~~
 wokinfo -<option> [<EntityPath>]
 wokinfo -<option> <argument> [<EntityPath>]
 ~~~~~
-Displays information about _<EntityPath>_. The information displayed is common to all the entities. If no _<EntityPath>_ is specified, information about the current entity is returned. 
+Displays information about _\<EntityPath\>_. The information displayed is common to all the entities. If no _\<EntityPath\>_ is specified, information about the current entity is returned. 
 This command can be used to find the path of a file. 
 Options: 
 * -t - Returns the type of entity (factory, warehouse, parcel, workbench, development unit). 
 This command can be used to find the path of a file. 
 Options: 
 * -t - Returns the type of entity (factory, warehouse, parcel, workbench, development unit). 
@@ -1375,10 +1376,10 @@ Options:
 * -W - Gets warehouse from path. 
 * -w - Gets workbench from path. 
 * -x - Tests if entity exists. 
 * -W - Gets warehouse from path. 
 * -w - Gets workbench from path. 
 * -x - Tests if entity exists. 
-* -d <type> - Gets type definition. 
-* -a <type> - Gets type arguments. 
-* -p <type>:<filename> - Gets the path for a file, which is of the type type that depends on %File. In other words, the path for a file of this type depends on the file name, <filename>. 
-* -p <type> - Gets the path for a file, which is of the type <type> that is not %File dependent, for example EXTERNLIB. 
+* -d \<type\> - Gets type definition. 
+* -a \<type\> - Gets type arguments. 
+* -p \<type\>:\<filename\> - Gets the path for a file, which is of the type type that depends on %File. In other words, the path for a file of this type depends on the file name, \<filename\>. 
+* -p \<type\> - Gets the path for a file, which is of the type \<type\> that is not %File dependent, for example EXTERNLIB. 
 
 #### Examples
 
 
 #### Examples
 
@@ -1398,9 +1399,9 @@ woklocate -P [<WorkbenchPath>]
 ~~~~~ 
 Using WorkbenchPath as the starting point, this command locates files associated with the development unit and specified by the argument argument. 
 Options are: 
 ~~~~~ 
 Using WorkbenchPath as the starting point, this command locates files associated with the development unit and specified by the argument argument. 
 Options are: 
-* -f <Unit:Type:File> - Locates a file and gives its ID. 
-* -p <Unit:Type:File> - Locates a file and gives its path. 
-* -u <Unit> - Locates a development unit. 
+* -f \<Unit:Type:File\> - Locates a file and gives its ID. 
+* -p \<Unit:Type:File\> - Locates a file and gives its path. 
+* -u \<Unit\> - Locates a development unit. 
 * -P - Displays all available WOK public types. 
 
 #### Example
 * -P - Displays all available WOK public types. 
 
 #### Example
@@ -1415,19 +1416,19 @@ Displays the location of the file, MyFile.
 wokparam -<option> [<EntityPath>]
 wokparam -<option> <argument> [<EntityPath>]
 ~~~~~
 wokparam -<option> [<EntityPath>]
 wokparam -<option> <argument> [<EntityPath>]
 ~~~~~
-Queries system parameters such as variables and templates. For more information about parameters refer to the appendix *Parameters and EDL Files* at the end of this User’s Guide. If an <EntityPath> is specified this indicates the entity to which the command applies. 
+Queries system parameters such as variables and templates. For more information about parameters refer to the appendix *Parameters and EDL Files* at the end of this User’s Guide. If an \<EntityPath\> is specified this indicates the entity to which the command applies. 
 Options: 
 * -L - Lists the directories used to search for the parameter files. 
 * -C - Displays the subclasses list. 
 Options: 
 * -L - Lists the directories used to search for the parameter files. 
 * -C - Displays the subclasses list. 
-* -a <TemplateName> - Gets arguments for the template TemplateName. 
-* -e <ParamName> - Evaluates the parameter ParamName. 
-* -F <ClassName> - Displays the files comprising the definition of the class *ClassName*. 
-* -l <Class> - Lists parameters concerning class (prefix) class. 
-* -S <FileName> - Finds the first file FileName in the list of directories cited afterwards. 
-* -t <Name> - Tests if the variable Name is set. 
-* -v <ParamName> - Displays the value of the parameter *ParamName*. 
-* -s <Name>=\<Value> Reserved for advanced use. Sets the variable *Name* to value *Value*. 
-* -u <Name> Reserved for advanced use. Unsets the variable Name. 
+* -a \<TemplateName\> - Gets arguments for the template TemplateName. 
+* -e \<ParamName\> - Evaluates the parameter ParamName. 
+* -F \<ClassName\> - Displays the files comprising the definition of the class *ClassName*. 
+* -l \<Class\> - Lists parameters concerning class (prefix) class. 
+* -S \<FileName\> - Finds the first file FileName in the list of directories cited afterwards. 
+* -t \<Name\> - Tests if the variable Name is set. 
+* -v \<ParamName\> - Displays the value of the parameter *ParamName*. 
+* -s \<Name\>=\<Value> Reserved for advanced use. Sets the variable *Name* to value *Value*. 
+* -u \<Name\> Reserved for advanced use. Unsets the variable Name. 
 
 #### Examples 
 
 
 #### Examples 
 
@@ -1502,7 +1503,7 @@ The following parameters are mandatory when a factory is created:
 Options: 
 * -P - Propose defaults. Returns a list of default values for the parameters necessary for the creation of the factory. No entity is created if this option is used. 
 * -d Use default. Uses default values to create the factory. 
 Options: 
 * -P - Propose defaults. Returns a list of default values for the parameters necessary for the creation of the factory. No entity is created if this option is used. 
 * -d Use default. Uses default values to create the factory. 
-* -D<Suffix>=\<Value> - Defines parameter(s). Specifies the value to use for the given parameter(s) explicitly. This option can be used in conjunction with the –d option to take default values for all the mandatory parameters except the parameter(s) explicitly specified here. 
+* -D\<Suffix\>=\<Value\> - Defines parameter(s). Specifies the value to use for the given parameter(s) explicitly. This option can be used in conjunction with the –d option to take default values for all the mandatory parameters except the parameter(s) explicitly specified here. 
 
 #### Examples 
 
 
 #### Examples 
 
@@ -1563,10 +1564,10 @@ The commands you use to create and destroy the warehouses are reserved for the e
 @subsubsection occt_wok_4_4_1  Wcreate
 *Reserved for administrator’s use.* 
 ~~~~~
 @subsubsection occt_wok_4_4_1  Wcreate
 *Reserved for administrator’s use.* 
 ~~~~~
-Wcreate [-<option>] -D<Suffix>=<Value>* <WarehouseName>
-Wcreate -<option> [-D <Suffix>=<Value>]* <WarehouseName>
+Wcreate [-<option>] -D <Suffix>=<Value>* <WarehouseName>
+Wcreate -<option> [-D  <Suffix>=<Value>]* <WarehouseName>
 ~~~~~
 ~~~~~
-Creates a warehouse. The name of the warehouse to create is given by *<WarehouseName>*. You can also specify the factory that will contain the warehouse. 
+Creates a warehouse. The name of the warehouse to create is given by *\<WarehouseName\>*. You can also specify the factory that will contain the warehouse. 
 Once the creation is completed, a file containing the parameters of warehouse creation is in its turn created in the administration directory of the factory to which the warehouse belongs. 
 
 Parameters: 
 Once the creation is completed, a file containing the parameters of warehouse creation is in its turn created in the administration directory of the factory to which the warehouse belongs. 
 
 Parameters: 
@@ -1579,7 +1580,7 @@ The following parameters are mandatory when a warehouse is created:
 Options: 
 * -P - (Propose defaults.) Returns a list of default values for the parameters necessary for the creation of a warehouse. No entity is created if this option is used. 
 * -d - (Use defaults.) Uses default values to create the warehouse. 
 Options: 
 * -P - (Propose defaults.) Returns a list of default values for the parameters necessary for the creation of a warehouse. No entity is created if this option is used. 
 * -d - (Use defaults.) Uses default values to create the warehouse. 
-* -D <Suffix>=\<Value> (Define parameter.) Explicitly specifies the value to use for this parameter. This option can be used in conjunction with the –d option to take default values for all the mandatory parameters except the parameter(s) explicitly specified here. 
+* -D \<Suffix\>=\<Value\> (Define parameter.) Explicitly specifies the value to use for this parameter. This option can be used in conjunction with the –d option to take default values for all the mandatory parameters except the parameter(s) explicitly specified here. 
 
 #### Examples
 
 
 #### Examples
 
@@ -1632,7 +1633,7 @@ The following parameters are mandatory when declaring parcels:
 * **Delivery** - Delivery name. 
 
 Options: 
 * **Delivery** - Delivery name. 
 
 Options: 
-* -p <Parcel> Defines the name of the parcel to declare. This name must be given with the option. 
+* -p \<Parcel\> Defines the name of the parcel to declare. This name must be given with the option. 
 * -d Creates a parcel using defaults. 
 * -P Proposes defaults. 
 
 * -d Creates a parcel using defaults. 
 * -P Proposes defaults. 
 
@@ -1650,7 +1651,7 @@ A parcel is a receptacle for development units. You use it to group together the
 
 @subsubsection occt_wok_4_5_1  pinfo
 
 
 @subsubsection occt_wok_4_5_1  pinfo
 
-pinfo -<option> [<ParcelPath>] - displays details about the contents of the parcel. If *ParcelPath* is specified this determines the parcel to apply to. If no parcel path is specified the command applies to the nearest parcel. 
+pinfo -\<option\> [\<ParcelPath\>] - displays details about the contents of the parcel. If *ParcelPath* is specified this determines the parcel to apply to. If no parcel path is specified the command applies to the nearest parcel. 
 
 Options: 
 * -d - Displays the delivery contained in the parcel. 
 
 Options: 
 * -d - Displays the delivery contained in the parcel. 
@@ -1669,7 +1670,7 @@ Displays a list of units in the parcel MyParcel.
 ~~~~~
 pinstall <ParcelName> 
 ~~~~~
 ~~~~~
 pinstall <ParcelName> 
 ~~~~~
-Installs the parcel <ParcelName> in the current warehouse. The process of installing a parcel sets up various paths and variables to ensure that the application can locate necessary resources and so on. 
+Installs the parcel \<ParcelName\> in the current warehouse. The process of installing a parcel sets up various paths and variables to ensure that the application can locate necessary resources and so on. 
 The administrator must perform *pinstall* for each platform used. 
 
 #### Example
 The administrator must perform *pinstall* for each platform used. 
 
 #### Example
@@ -1691,7 +1692,7 @@ A workshop is a tree of workbenches using the same parcel configuration. There i
 screate [-<option>] {-D<Suffix>=<Value>}* <WorkshopName>
 screate -<option> <WorkshopName>
 ~~~~~
 screate [-<option>] {-D<Suffix>=<Value>}* <WorkshopName>
 screate -<option> <WorkshopName>
 ~~~~~
-Creates a workshop, <WorkshopName>. You can also specify the factory that contains this workshop. 
+Creates a workshop, \<WorkshopName\>. You can also specify the factory that contains this workshop. 
 Once the creation is completed, a file containing the parameters for the creation of the workshop is generated in the administration directory of the factory to which it belongs. 
 
 The following parameters are mandatory when creating a workshop: 
 Once the creation is completed, a file containing the parameters for the creation of the workshop is generated in the administration directory of the factory to which it belongs. 
 
 The following parameters are mandatory when creating a workshop: 
@@ -1705,7 +1706,7 @@ The following parameters are mandatory when creating a workshop:
 Options: 
 * -P (Propose defaults.) Returns a list of default values for the parameters necessary for the creation of a workshop. No entity is created if this option is used. 
 * -d (Use defaults.) Uses default values to create the workshop. 
 Options: 
 * -P (Propose defaults.) Returns a list of default values for the parameters necessary for the creation of a workshop. No entity is created if this option is used. 
 * -d (Use defaults.) Uses default values to create the workshop. 
-* -D <Suffix>=\<Value> (Define parameter.) Specifies the value to use for this parameter explicitly. This option can be used in conjunction with the –d option to accept default values for all the mandatory parameters except the parameter(s) explicitly specified here. 
+* -D \<Suffix\>=\<Value> (Define parameter.) Specifies the value to use for this parameter explicitly. This option can be used in conjunction with the –d option to accept default values for all the mandatory parameters except the parameter(s) explicitly specified here. 
 
 
 #### Examples
 
 
 #### Examples
@@ -1744,7 +1745,7 @@ Displays a list of workbenches in the nearest workshop.
 ~~~~~
 srm WorkshopName 
 ~~~~~
 ~~~~~
 srm WorkshopName 
 ~~~~~
-Deletes the workshop <WorkshopName> if it is empty. You must not be in the workshop you intend to destroy.
+Deletes the workshop \<WorkshopName\> if it is empty. You must not be in the workshop you intend to destroy.
 
 #### Example
 
 
 #### Example
 
@@ -1767,21 +1768,21 @@ wcreate -f <ParentWB> [-D <Suffix>=<Value>]* <WBName>
 wcreate -f <ParentWB> -P|d [-D <Suffix>=<Value>]* <WBName>
 wcreate -f <ParentWB> -P|d <WBName>
 ~~~~~
 wcreate -f <ParentWB> -P|d [-D <Suffix>=<Value>]* <WBName>
 wcreate -f <ParentWB> -P|d <WBName>
 ~~~~~
-Creates the workbench <WBName> as a child of the workbench <ParentWB>. The result of this creation is a directory structure. 
+Creates the workbench \<WBName\> as a child of the workbench \<ParentWB\>. The result of this creation is a directory structure. 
 Compared to the creation of other entities, creating a workbench requires an additional piece of information: you must specify the parent of the workbench to create. 
 Once the creation is completed, a file containing the parameters of the creation of this workbench is created in the administration directory of the workshop that contains it. 
 Parameters: 
 The following parameters are mandatory when creating a workbench: 
 Compared to the creation of other entities, creating a workbench requires an additional piece of information: you must specify the parent of the workbench to create. 
 Once the creation is completed, a file containing the parameters of the creation of this workbench is created in the administration directory of the workshop that contains it. 
 Parameters: 
 The following parameters are mandatory when creating a workbench: 
-* **Adm**              Path name for administration directory. 
-* **Home**             Path name for home directory. 
-* **Stations**         List of supported stations. 
-* **DBMSystems**       List of supported dbms. 
+* **Adm**     Path name for administration directory. 
+* **Home**     Path name for home directory. 
+* **Stations**   List of supported stations. 
+* **DBMSystems**   List of supported dbms. 
 
 Options: 
 * -f - Specifies the parent workbench. 
 * -P - (Propose defaults.) Returns a list of default values for the parameters necessary for the creation of the workbench. No entity is created if this option is used. 
 * -d - (Use defaults.) Uses default values to create the workbench. 
 
 Options: 
 * -f - Specifies the parent workbench. 
 * -P - (Propose defaults.) Returns a list of default values for the parameters necessary for the creation of the workbench. No entity is created if this option is used. 
 * -d - (Use defaults.) Uses default values to create the workbench. 
-* -D <Suffix>=\<Value> - (Define parameter.) Specifies the value to use for this parameter explicitly. This option can be used in conjunction with the –d option to take default values for all the mandatory parameters except the parameter(s) explicitly specified here. 
+* -D \<Suffix\>=\<Value\> - (Define parameter.) Specifies the value to use for this parameter explicitly. This option can be used in conjunction with the –d option to take default values for all the mandatory parameters except the parameter(s) explicitly specified here. 
 
 #### Example
 
 
 #### Example
 
@@ -1800,7 +1801,7 @@ Creates the workbench MyWorkbench using default values for all mandatory paramet
 w_info -option[Workbench] 
 w_info -option argument[Workbench] 
 ~~~~~
 w_info -option[Workbench] 
 w_info -option argument[Workbench] 
 ~~~~~
-The *w_info* command is the exception to the common command syntax. The form w_info is used instead of winfo because the latter already exists as a tcl/tk command and cannot be reused as a name by WOK. If <Workbench> is specified, this determines the workbench to apply to. If no <Workbench> is specified, the nearest workbench is used. 
+The *w_info* command is the exception to the common command syntax. The form w_info is used instead of winfo because the latter already exists as a tcl/tk command and cannot be reused as a name by WOK. If \<Workbench\> is specified, this determines the workbench to apply to. If no \<Workbench\> is specified, the nearest workbench is used. 
 
 Using the tcl winfo command by mistake generates an error message, but does not cause any damage. 
 
 
 Using the tcl winfo command by mistake generates an error message, but does not cause any damage. 
 
@@ -1810,7 +1811,7 @@ Options:
 * -f - Displays the parent workbench. 
 * -A - Lists all the ancestors of the workbench. 
 * -k - Lists visible toolkits. 
 * -f - Displays the parent workbench. 
 * -A - Lists all the ancestors of the workbench. 
 * -k - Lists visible toolkits. 
-* -S <arg> - Lists suppliers of the unit <arg> within the visibility of the workbench. 
+* -S \<arg\> - Lists suppliers of the unit \<arg\> within the visibility of the workbench. 
 * -S <execname:partname> - Lists the suppliers of the component executable partname within an executable development unit execname. 
 * -I <arg1, arg2 ... argN> - Lists the development units, sorted by order of implementation dependency. 
 
 * -S <execname:partname> - Lists the suppliers of the component executable partname within an executable development unit execname. 
 * -I <arg1, arg2 ... argN> - Lists the development units, sorted by order of implementation dependency. 
 
@@ -1836,9 +1837,9 @@ Deletes *MyWorkbench*, provided that it is empty and has no children.
 
 @subsubsection occt_wok_4_7_4  wmove
 *Reserved for advanced use* 
 
 @subsubsection occt_wok_4_7_4  wmove
 *Reserved for advanced use* 
-wmove -f <NewParentWorkbench> <Workbench>
-Moves the <Workbench> (and its children), to a different parent *NewParentWorkbench* within the same workshop. 
-Option  -f <argument> specifies the new parent workbench. 
+wmove -f \<NewParentWorkbench\> \<Workbench\>
+Moves the \<Workbench\> (and its children), to a different parent *NewParentWorkbench* within the same workshop. 
+Option  -f \<argument\> specifies the new parent workbench. 
 
 #### Example
 
 
 #### Example
 
@@ -1854,16 +1855,16 @@ wprocess <WorkbenchName> <options>
 Allows automatic reconstruction of a workbench. 
 
 Options: 
 Allows automatic reconstruction of a workbench. 
 
 Options: 
-* -DGroups =Obj,Lib,Exec               - Selects groups Obj, Lib and Exec. 
-* -DUnits = MyUd1,MyUd2,...    - Selects the development units MyUd1, MyUd2 etc. 
-* -DXGroups =Src,Deliv                         - Excludes groups Obj and Deliv. 
-* -DXUnits=MyUd1,MyUd2,...             - Excludes units MyUd1, MyUd2 etc. 
-* -B <Profile>                                         - Selects the extraction profile. 
-* -f                                                   - Forces all selected steps. 
-* -d | -o                                              - Switches between debug and optimized modes. 
-* -P                                                   - Prints out the selected steps. 
-* -S                                                   - Silent mode (no print of the banner). 
-* -L                                                   - Logs output to MyUD_<step code>. Log in step administration directory. Valid group names are: Src, Xcpp, Obj, Dep, Lib, Exec, Deliv. 
+* -DGroups =Obj,Lib,Exec     - Selects groups Obj, Lib and Exec. 
+* -DUnits = MyUd1,MyUd2,...   - Selects the development units MyUd1, MyUd2 etc. 
+* -DXGroups =Src,Deliv       - Excludes groups Obj and Deliv. 
+* -DXUnits=MyUd1,MyUd2,...     - Excludes units MyUd1, MyUd2 etc. 
+* -B \<Profile\>           - Selects the extraction profile. 
+* -f               - Forces all selected steps. 
+* -d | -o              - Switches between debug and optimized modes. 
+* -P               - Prints out the selected steps. 
+* -S               - Silent mode (no print of the banner). 
+* -L               - Logs output to MyUD_<step code>. Log in step administration directory. Valid group names are: Src, Xcpp, Obj, Dep, Lib, Exec, Deliv. 
 
 #### Example
 
 
 #### Example
 
@@ -1885,7 +1886,7 @@ The development unit is the basic building block of development work in the WOK
 ucreate [-<TypeCode>] <UnitName>
 ucreate -P 
 ~~~~~
 ucreate [-<TypeCode>] <UnitName>
 ucreate -P 
 ~~~~~
-Creates a development unit named <UnitName> of type <TypeCode>. 
+Creates a development unit named \<UnitName\> of type \<TypeCode\>. 
 
 Once the creation is completed, a file containing the parameters of the creation of the development unit is generated in the administration directory of the workbench to which the development unit belongs. 
 
 
 Once the creation is completed, a file containing the parameters of the creation of the development unit is generated in the administration directory of the workbench to which the development unit belongs. 
 
@@ -1898,7 +1899,7 @@ TypeCodes:
 * -x - Creates a development unit of type executable. 
 * -f - Creates a development unit of type frontal. 
 * -r - Creates a development unit of type resource. 
 * -x - Creates a development unit of type executable. 
 * -f - Creates a development unit of type frontal. 
 * -r - Creates a development unit of type resource. 
-* -P - Displays ucreate creation possibilities in format: <TypeCode> <TypeName>. 
+* -P - Displays ucreate creation possibilities in format: \<TypeCode\> \<TypeName\>.
 
 #### Examples
 
 
 #### Examples
 
@@ -1914,7 +1915,7 @@ uinfo -t|c [<UnitPath>]
 uinfo -f|F|p [-<FilterOption> [<Type>]]* [<UnitPath>]
 ~~~~~
 
 uinfo -f|F|p [-<FilterOption> [<Type>]]* [<UnitPath>]
 ~~~~~
 
-Displays details about the development unit. Where no <UnitPath> is specified, details of the current unit are displayed. Filter options are available for use in conjunction with the options -f, -F, -p to filter the file list. Combinations of filter options can be used.
+Displays details about the development unit. Where no \<UnitPath\> is specified, details of the current unit are displayed. Filter options are available for use in conjunction with the options -f, -F, -p to filter the file list. Combinations of filter options can be used.
  
 Note that the uinfo command is based on the results of construction using umake. As a consequence, the list of files displayed by uinfo is only valid if the construction has completed normally. Similarly, the list of files derived from the CDL is only valid if the CDLs of the unit have been translated successfully. 
 
  
 Note that the uinfo command is based on the results of construction using umake. As a consequence, the list of files displayed by uinfo is only valid if the construction has completed normally. Similarly, the list of files derived from the CDL is only valid if the CDLs of the unit have been translated successfully. 
 
@@ -1925,7 +1926,7 @@ Options:
 * -F - Displays a list of file names associated with the unit, together with their respective types. Types of files include for example: *source*, *library*, *executable*, and *pubinclude*. To display a full list of file types, use the command *ucreate*. 
 * -p - Displays the full paths of the files associated with the unit. 
 Filter Options: 
 * -F - Displays a list of file names associated with the unit, together with their respective types. Types of files include for example: *source*, *library*, *executable*, and *pubinclude*. To display a full list of file types, use the command *ucreate*. 
 * -p - Displays the full paths of the files associated with the unit. 
 Filter Options: 
-* -T - <Type> Displays files of type <Type> only. 
+* -T - \<Type\> Displays files of type \<Type\> only. 
 * -i - Displays only *independent* files, i.e. files that are not specific to a DBMS, for example sources. 
 * -s - Displays only station dependent files. 
 * -b - Displays only DBMS dependent files. 
 * -i - Displays only *independent* files, i.e. files that are not specific to a DBMS, for example sources. 
 * -s - Displays only station dependent files. 
 * -b - Displays only DBMS dependent files. 
@@ -1949,7 +1950,7 @@ Lists the names of the header files associated with the unit MyUnit which is in
 ~~~~~
 urm <UnitPath> 
 ~~~~~
 ~~~~~
 urm <UnitPath> 
 ~~~~~
-Deletes the development unit <UnitPath> with its directory structure and its files, even if the unit is referenced by another one. 
+Deletes the development unit \<UnitPath\> with its directory structure and its files, even if the unit is referenced by another one. 
 
 #### Example
 ~~~~~ 
 
 #### Example
 ~~~~~ 
@@ -1976,12 +1977,12 @@ The following properties apply:
 Used without any arguments the *umake* command carries out all of the steps appropriate for the development unit to be constructed. Using keywords and arguments you can perform the build process step by step. 
 
 Options: 
 Used without any arguments the *umake* command carries out all of the steps appropriate for the development unit to be constructed. Using keywords and arguments you can perform the build process step by step. 
 
 Options: 
-* -S                   - Displays the list of steps. 
-* -s <step>    - Starts the build process at the step specified. 
-* -e <step>    - Ends the build process at the step specified. 
-* -o <step>    - Only executes the step specified. 
-* -t <target>  - Specifies the target to build. 
-* -f                   - Forces the build process, skipping the verification of dependencies. 
+* -S            - Displays the list of steps. 
+* -s \<step\>   - Starts the build process at the step specified. 
+* -e \<step\>   - Ends the build process at the step specified. 
+* -o \<step\>   - Only executes the step specified. 
+* -t \<target\> - Specifies the target to build. 
+* -f            - Forces the build process, skipping the verification of dependencies. 
 
 #### Example
 
 
 #### Example
 
@@ -2029,16 +2030,16 @@ For each class, we extract the prototypes of:
   *  Constructors 
 The extracted files are the following: 
   *  for an ordinary class C 
   *  Constructors 
 The extracted files are the following: 
   *  for an ordinary class C 
-         +  C.cxx.template for the non-inline class methods. 
-         +  C.lxx.template for the inline class methods. 
+    +  C.cxx.template for the non-inline class methods. 
+    +  C.lxx.template for the inline class methods. 
   *  for a generic class G 
   *  for a generic class G 
-         *  G.gxx.template for the non-inline class methods. 
-         *  G.lxx.template for the inline class methods. 
+    *  G.gxx.template for the non-inline class methods. 
+    *  G.lxx.template for the inline class methods. 
   *  for a package method P 
   *  for a package method P 
-         *  P.cxx.template for the non-inline package methods. 
-         *  P.lxx.template for the inline package methods. 
-         
-         
+    *  P.cxx.template for the non-inline package methods. 
+    *  P.lxx.template for the inline package methods. 
+    
+    
 #### obj
 
 Specifying the target, *obj* compiles the object files for one or more files. The syntax for -obj.* is as follows: 
 #### obj
 
 Specifying the target, *obj* compiles the object files for one or more files. The syntax for -obj.* is as follows: 
@@ -2069,7 +2070,7 @@ EXTERNLIB uses resources contained in Open CASCADE Technology prerequisites. To
 
 The umake command does not generate actual dependencies. To avoid any cumbersome dependencies, for example, if you do not want the shareable library file for a package but the package enumeration only, use the INTERNLIB component listed in FILES, to get only the given dependencies. 
 
 
 The umake command does not generate actual dependencies. To avoid any cumbersome dependencies, for example, if you do not want the shareable library file for a package but the package enumeration only, use the INTERNLIB component listed in FILES, to get only the given dependencies. 
 
-In practice, the generated file, <myUD>.ImplDep, in the /drv/adm directory, is copied into INTERNLIB. INTERNLIB contains lines of enumerations, as below: 
+In practice, the generated file, \<myUD\>.ImplDep, in the /drv/adm directory, is copied into INTERNLIB. INTERNLIB contains lines of enumerations, as below: 
 ~~~~~
 Dependence 1 
 Dependence 2 
 ~~~~~
 Dependence 1 
 Dependence 2 
@@ -2082,17 +2083,17 @@ The example below illustrates how you can modify your WOK compiler options. Refe
 #--------------------------------- 
 #// First, ensure that we only execute this file once 
 \@ifnotdefined ( %Kernel_CMPLRS_EDL ) then 
 #--------------------------------- 
 #// First, ensure that we only execute this file once 
 \@ifnotdefined ( %Kernel_CMPLRS_EDL ) then 
-       \@set %Kernel_CMPLRS_EDL = **; 
+  \@set %Kernel_CMPLRS_EDL = **; 
 #// Then set C++ compilation options, based on workstation type: 
 #// Then set C++ compilation options, based on workstation type: 
-       \@if( %Station == *sil* ) then 
+  \@if( %Station == *sil* ) then 
 \@set %ModeOpt =  * *; 
 \@set %ModeOpt =  * *; 
-       \@endif; 
-       \@if( %Station == *ao1* ) then 
+  \@endif; 
+  \@if( %Station == *ao1* ) then 
 \@set %ModeOpt = *-g *; 
 \@set %ModeOpt = *-g *; 
-       \@endif; 
-       \@if( %Station == *hp* ) then 
+  \@endif; 
+  \@if( %Station == *hp* ) then 
 \@string %CMPLRS_C_Options +=  * -Aa -D_HPUX_SOURCE +e*; 
 \@string %CMPLRS_C_Options +=  * -Aa -D_HPUX_SOURCE +e*; 
-       \@endif; 
+  \@endif; 
 \@endif; 
 ~~~~~
 
 \@endif; 
 ~~~~~
 
@@ -2109,14 +2110,14 @@ The following example defines a umake dependency tree and introduces two new ste
 -- File Name: DCube_WOKSteps.edl 
 
 \@ifnotdefined (%DCube_WOKSteps_EDL) then 
 -- File Name: DCube_WOKSteps.edl 
 
 \@ifnotdefined (%DCube_WOKSteps_EDL) then 
-       \@set %DCube_WOKSteps_EDL = **; 
-       \@string %WOKSteps_ObjGroup += *obj.libs obj.arx obj.objs *; 
+  \@set %DCube_WOKSteps_EDL = **; 
+  \@string %WOKSteps_ObjGroup += *obj.libs obj.arx obj.objs *; 
 ---\@set %WOKUmake_Steps =**src obj.inc(src) objc.cgen(src) obj.comp(src, obj.cgen) obj.libs(src) obj.arx(obj.libs) obj.objs(obj.arx) obj.lib(obj.comp, obj.objs) obj.idep(obj.comp,src)*; 
 ---\@set %WOKUmake_Steps =**src obj.inc(src) objc.cgen(src) obj.comp(src, obj.cgen) obj.libs(src) obj.arx(obj.libs) obj.objs(obj.arx) obj.lib(obj.comp, obj.objs) obj.idep(obj.comp,src)*; 
-       \@set %WOKSteps_obj_libs = *DCube_Libs(src)*; 
-       \@set %WOKSteps_obj_arx = *WOKStep_LibExtract(obj.libs)*; 
-       \@set %WOKSteps_obj_objs = *DCube_Objs(obj.arx)*; 
+  \@set %WOKSteps_obj_libs = *DCube_Libs(src)*; 
+  \@set %WOKSteps_obj_arx = *WOKStep_LibExtract(obj.libs)*; 
+  \@set %WOKSteps_obj_objs = *DCube_Objs(obj.arx)*; 
 \@set %WOKSteps_obj_lib = *WOKStep_DynamicLibrary(obj.comp, obj.objs)*; 
 \@set %WOKSteps_obj_lib = *WOKStep_DynamicLibrary(obj.comp, obj.objs)*; 
-       \@set %WOKSteps_toolkit_ListWith = *obj.comp obj.objs*; 
+  \@set %WOKSteps_toolkit_ListWith = *obj.comp obj.objs*; 
 \@endif; 
 ~~~~~
 
 \@endif; 
 ~~~~~
 
@@ -2150,9 +2151,9 @@ For each file, the status is indicated as follows:
 
 Options: 
 * -ref - Creates a report that is used to initialize a base of source files. This report is used with the *wintegre -ref* command. 
 
 Options: 
 * -ref - Creates a report that is used to initialize a base of source files. This report is used with the *wintegre -ref* command. 
-* -ud <ud1>, <ud2>, ..., <udN> - Specifies the list of development units to prepare for integration. Separate the unit names with a comma. If no unit names are specified, all the units in the workbench are processed. 
-* -o <fileName> - Writes the integration report to the specified file. By default, the report is displayed (i.e. written to standard output). 
-* -wb <The name of target workbench> - Specifies the name of target workbench. It should be one of father workbenches with attached integration queue. 
+* -ud \<ud1\>, \<ud2\>, ..., \<udN\> - Specifies the list of development units to prepare for integration. Separate the unit names with a comma. If no unit names are specified, all the units in the workbench are processed. 
+* -o \<fileName\> - Writes the integration report to the specified file. By default, the report is displayed (i.e. written to standard output). 
+* -wb \<The name of target workbench\> - Specifies the name of target workbench. It should be one of father workbenches with attached integration queue. 
 
 @subsubsection occt_wok_4_9_2  wstore
 ~~~~~
 
 @subsubsection occt_wok_4_9_2  wstore
 ~~~~~
@@ -2165,14 +2166,14 @@ wstore [<FileName>]
 This command manages the queue of pending reports. When a report is queued it is given a unique number also called a report-ID. 
 
 Options: 
 This command manages the queue of pending reports. When a report is queued it is given a unique number also called a report-ID. 
 
 Options: 
-* <FileName> - Adds a report from the file FileName to the report queue. 
+* \<FileName\> - Adds a report from the file FileName to the report queue. 
 * -trig - Calls a tcl procedure after the report has been processed. This tcl procedure must be located in the admin directory of the workshop and the file must be named wstore_trigger.tcl. An example of a trigger can be found in the file <i>$env(WOK_LIBRARY)/wstore_trigger.example</i>. 
 * -ls - Lists pending reports, together with their owners and their IDs. This is a default option. If two files are found with the same name in the same development unit in two different reports the full path of each of these files is displayed. 
 * -trig - Calls a tcl procedure after the report has been processed. This tcl procedure must be located in the admin directory of the workshop and the file must be named wstore_trigger.tcl. An example of a trigger can be found in the file <i>$env(WOK_LIBRARY)/wstore_trigger.example</i>. 
 * -ls - Lists pending reports, together with their owners and their IDs. This is a default option. If two files are found with the same name in the same development unit in two different reports the full path of each of these files is displayed. 
-* -cat <Report_ID> - Displays the contents of the report <i><Report_ID></i>. 
+* -cat \<Report_ID\> - Displays the contents of the report <i>\<Report_ID\></i>. 
 * -rm - Removes a report from the report queue. 
 * -f - Forces deletion. This option must be used with the -rm option when you delete a report that you do not own. 
 * -param - Lists queue parameters associated with the workbench. 
 * -rm - Removes a report from the report queue. 
 * -f - Forces deletion. This option must be used with the -rm option when you delete a report that you do not own. 
 * -param - Lists queue parameters associated with the workbench. 
-* -create –wb <MasterWb> -queue <any/dir> -type SCCS - Creates an integration queue associated with MasterWb workbench, queue should be located at any/dir and specify SCCS type of database. 
+* -create –wb \<MasterWb\> -queue \<any/dir\> -type SCCS - Creates an integration queue associated with MasterWb workbench, queue should be located at any/dir and specify SCCS type of database. 
 
 Possible options for –create are: 
 * -queue - Specify the name of directory under which queue is created 
 
 Possible options for –create are: 
 * -queue - Specify the name of directory under which queue is created 
@@ -2200,10 +2201,10 @@ wintegre [<reportID>] –wb <MasterWb>
 Processes a report and removes it from the queue in the current workshop. 
 
 Parameters: 
 Processes a report and removes it from the queue in the current workshop. 
 
 Parameters: 
-* <reportID> - Number indicating the rank of the report in the integration queue. Use the command *wstore –l* to get this number. 
+* \<reportID\> - Number indicating the rank of the report in the integration queue. Use the command *wstore –l* to get this number. 
 
 Options: 
 
 Options: 
-* -ref <BaseNumber> - Initializes the version of the elements in the repository. 
+* -ref \<BaseNumber\> - Initializes the version of the elements in the repository. 
 * -all - Processes all the reports in the integration queue. 
 * -wb - Specify the integration queue of which workbench should be used 
 * -norefcopy - Updates the repository but not the target workbench. 
 * -all - Processes all the reports in the integration queue. 
 * -wb - Specify the integration queue of which workbench should be used 
 * -norefcopy - Updates the repository but not the target workbench. 
@@ -2262,14 +2263,14 @@ Options:
 * -from p1 -to p2 - Extracts a portion of the journal file between index p1 and p2, with p1 and p2 integration numbers or marks. If p1 is not specified, reports are extracted from the beginning of the journal file. If p2 is not specified, reports are extracted up to the end of the journal file. 
 * -at p - Places a mark at index p, with p being an integration number. If p is not specified, the mark is placed at the end of the journal. 
 * -ls [-bydate] - Lists the marks. If -bydate is specified, the marks are listed in the order they were created. Otherwise, they are listed according to their place in the journal file. 
 * -from p1 -to p2 - Extracts a portion of the journal file between index p1 and p2, with p1 and p2 integration numbers or marks. If p1 is not specified, reports are extracted from the beginning of the journal file. If p2 is not specified, reports are extracted up to the end of the journal file. 
 * -at p - Places a mark at index p, with p being an integration number. If p is not specified, the mark is placed at the end of the journal. 
 * -ls [-bydate] - Lists the marks. If -bydate is specified, the marks are listed in the order they were created. Otherwise, they are listed according to their place in the journal file. 
-* -rm <markname> - Removes the mark *markname*. 
+* -rm \<markname\> - Removes the mark *markname*. 
 * -admin - Displays the journal location, date and other information. 
 * -purge - Saves the journal file and creates a new empty one. 
 
 Additional options: 
 * -admin - Displays the journal location, date and other information. 
 * -purge - Saves the journal file and creates a new empty one. 
 
 Additional options: 
-* -o file <name> - Redirects output in file. This option is ignored if -command is specified. 
-* -ws <shop> - Uses journal of shop instead of the current one. shop must belong to the current factory. 
-* -command <MyCommand> - Runs the command *Tcl MyComm* on the specified part of the journal. The syntax is the following: *proc MyComm { comments table args } { ...}*, where *comments* is a string containing all the comments on the integration between n1 and n2, and *table* is a table indexed with the names of the concerned *uds* (each element of the table is a list of UD files with definition of their status and version). Additional arguments may be passed using *userdata* with the argument *args* containing *mydata1, mydata2*. 
+* -o file \<name\> - Redirects output in file. This option is ignored if -command is specified. 
+* -ws \<shop\> - Uses journal of shop instead of the current one. shop must belong to the current factory. 
+* -command \<MyCommand\> - Runs the command *Tcl MyComm* on the specified part of the journal. The syntax is the following: *proc MyComm { comments table args } { ...}*, where *comments* is a string containing all the comments on the integration between n1 and n2, and *table* is a table indexed with the names of the concerned *uds* (each element of the table is a list of UD files with definition of their status and version). Additional arguments may be passed using *userdata* with the argument *args* containing *mydata1, mydata2*. 
 
 Wok provides a similar procedure *wnews:cpwb*, which allows to copy UDs from one workbench into another. 
 
 
 Wok provides a similar procedure *wnews:cpwb*, which allows to copy UDs from one workbench into another. 
 
@@ -2332,10 +2333,10 @@ wget [-f] –wb <MasterWb> [-ud <UnitName>] <SourceFile1>...<SourceFileN>
 The *wget* command allows importing source files into the workbench. The files are fetched from the SCCS database of the factory. This operation is known as a check-out operation. You can specify one or more files or a unit name. By default, the latest version of the files is fetched.
  
 Options: 
 The *wget* command allows importing source files into the workbench. The files are fetched from the SCCS database of the factory. This operation is known as a check-out operation. You can specify one or more files or a unit name. By default, the latest version of the files is fetched.
  
 Options: 
-* <SourceFile> - Fetches a copy of the specified file. 
-* -ud <UnitName> Fetches all the source files of the development unit you specified. 
+* \<SourceFile\> - Fetches a copy of the specified file. 
+* -ud \<UnitName\> Fetches all the source files of the development unit you specified. 
 * -f Forces existing files to be overwritten. 
 * -f Forces existing files to be overwritten. 
-* -v <Version> Fetches <Version> of the file you specified. 
+* -v \<Version\> Fetches \<Version\> of the file you specified. 
 * -l Lists the files of the development unit that can be copied (i.e. that you can **get**). This is a default option. 
 
 #### Example
 * -l Lists the files of the development unit that can be copied (i.e. that you can **get**). This is a default option. 
 
 #### Example
@@ -2383,7 +2384,7 @@ The following procedure explains how to set up the source management environment
 ~~~~~
 > wintegre –wb <workbench> < BaseNumber >
 ~~~~~
 ~~~~~
 > wintegre –wb <workbench> < BaseNumber >
 ~~~~~
-Here <BaseNumber> is the first digit of the SCCS version numbers. 
+   Here \<BaseNumber\> is the first digit of the SCCS version numbers. 
 
 @subsubsection occt_wok_4_9_7  Integration Procedure
 
 
 @subsubsection occt_wok_4_9_7  Integration Procedure
 
@@ -2397,7 +2398,8 @@ To integrate, proceed as follows:
 ~~~~~
 \> wstore –wb MasterWb MyReport
 ~~~~~
 ~~~~~
 \> wstore –wb MasterWb MyReport
 ~~~~~
-By this step, all the files you have modified have been stored and the report has been queued. You can continue with modifying these files. 
+   By this step, all the files you have modified have been stored and the report has been queued. You can continue with modifying these files.
+
 4. Examine the state of the integration queue to get the ID of your report. 
 ~~~~~
 \> wstore –wb MasterWb -ls
 4. Examine the state of the integration queue to get the ID of your report. 
 ~~~~~
 \> wstore –wb MasterWb -ls
@@ -2421,7 +2423,7 @@ Options:
 * -s Gets current workshop 
 * -w Gets current workbench 
 * -u Gets current development unit 
 * -s Gets current workshop 
 * -w Gets current workbench 
 * -u Gets current development unit 
-* -t <entity_path> Gets the entity type 
+* -t \<entity_path\> Gets the entity type 
 * -E Reserved for internal use. Gets known Entity List 
 * -N Reserved for internal use. Gets known Entity Names 
 
 * -E Reserved for internal use. Gets known Entity List 
 * -N Reserved for internal use. Gets known Entity Names 
 
@@ -2454,18 +2456,19 @@ The main menu bar contains three menus:
   *  **Help** to display the associated on-line help. 
 
 @subsubsection occt_wok_5_1_2  Application icons
   *  **Help** to display the associated on-line help. 
 
 @subsubsection occt_wok_5_1_2  Application icons
+
 The four icons on the left are used to access applications: 
 The four icons on the left are used to access applications: 
-  *  **wprepare**, allows preparing the integration queue being associated with a given workshop, 
+*  **wprepare**, allows preparing the integration queue being associated with a given workshop, 
 @image html /dev_guides/wok/images/wok_image016.png
 @image latex /dev_guides/wok/images/wok_image016.png
 @image html /dev_guides/wok/images/wok_image016.png
 @image latex /dev_guides/wok/images/wok_image016.png
-  *  **umake**, gives access to all available umake options plus compilation options, 
+*  **umake**, gives access to all available umake options plus compilation options, 
 @image html /dev_guides/wok/images/wok_image017.png
 @image latex /dev_guides/wok/images/wok_image017.png
 @image html /dev_guides/wok/images/wok_image017.png
 @image latex /dev_guides/wok/images/wok_image017.png
-  *  **CDL browser**, provides information on the class structure or translated classes, 
+*  **CDL browser**, provides information on the class structure or translated classes, 
 @image html /dev_guides/wok/images/wok_image018.png
 @image latex /dev_guides/wok/images/wok_image018.png
 
 @image html /dev_guides/wok/images/wok_image018.png
 @image latex /dev_guides/wok/images/wok_image018.png
 
- *  **parameters**, allows displaying and editing all EDL files. 
+*  **parameters**, allows displaying and editing all EDL files. 
 @image html /dev_guides/wok/images/wok_image019.png
 @image latex /dev_guides/wok/images/wok_image019.png
 
 @image html /dev_guides/wok/images/wok_image019.png
 @image latex /dev_guides/wok/images/wok_image019.png
 
@@ -2484,6 +2487,7 @@ Use the **go up** icon to navigate through the session and **wokcd** to update t
 The field **Location** gives the exact address of the item in the session. Use the arrow on the right to select already visited addresses. 
 
 @subsection occt_wok_5_2  Popup menus
 The field **Location** gives the exact address of the item in the session. Use the arrow on the right to select already visited addresses. 
 
 @subsection occt_wok_5_2  Popup menus
+
 Two types of popup menus may be accessed according to the context. Just click MB3 to display the popup menu. 
 
 Click on an item in the left window to get the popup menu providing access to applications. 
 Two types of popup menus may be accessed according to the context. Just click MB3 to display the popup menu. 
 
 Click on an item in the left window to get the popup menu providing access to applications. 
@@ -2525,8 +2529,10 @@ List of Keys and their Bindings in cdl Mode
 |ESC-RET | cdl-raw-newline |
 
 @section occt_wok_7 Appendix B. Parameters and EDL Files
 |ESC-RET | cdl-raw-newline |
 
 @section occt_wok_7 Appendix B. Parameters and EDL Files
+
 @subsection occt_wok_7_1 EDL language
 @subsection occt_wok_7_1 EDL language
-@subsection occt_wok_7_1_1 Key Concepts
+
+@subsubsection occt_wok_7_1_1 Key Concepts
 
 EDL is a script-like programming language.
 
 
 EDL is a script-like programming language.
 
@@ -2542,7 +2548,7 @@ EDL is a script-like programming language.
 \@set 
 \@apply 
 ~~~~~
 \@set 
 \@apply 
 ~~~~~
-* **Execution**  <i>@uses</i> is an execution operator.
+* **Execution**  <i>\@uses</i> is an execution operator.
 * **Input/Output** The following input/output operators are provided: 
 ~~~~~
 \@file 
 * **Input/Output** The following input/output operators are provided: 
 ~~~~~
 \@file 
@@ -2589,16 +2595,18 @@ is
 ~~~~~
 
 @subsubsection occt_wok_7_1_2  Syntax
 ~~~~~
 
 @subsubsection occt_wok_7_1_2  Syntax
+
 The following conventions are used in the explanations below: 
 
 The following conventions are used in the explanations below: 
 
-| *<Variable>*         | refers to a variable, for example: *%myvariable* |
-| *<Id>*               | refers to an identifier, for example: *myidentifier* |
-| *“String”*       | refers to a string of characters, for example: *“my string of characters”* |
-| *<Condition>* | refers to a condition, for example: *(%mytest == “ok”) || (%mytest == “good”)* |
-| *<Template>*         | refers to the name of a template, for example: mytemplate. |
-|{}            | indicates possible repetition of what is within the curly brackets. |
+| *\<Variable\>*  | refers to a variable, for example: *%myvariable*                               |
+| *\<Id\>*        | refers to an identifier, for example: *myidentifier*                           |
+| *“String”*      | refers to a string of characters, for example: *“my string of characters”*     |
+| *\<Condition\>* | refers to a condition, for example: *(%mytest == “ok”) || (%mytest == “good”)* |
+| *\<Template\>*  | refers to the name of a template, for example: mytemplate.                     |
+|{}               | indicates possible repetition of what is within the curly brackets.            |
 
 @subsubsection occt_wok_7_1_3  EDL Actions
 
 @subsubsection occt_wok_7_1_3  EDL Actions
+
 \@string 
 --------
 ~~~~~
 \@string 
 --------
 ~~~~~
@@ -2612,15 +2620,14 @@ Concatenates the contents of the variables and strings on the right of the equal
 ~~~~~
 \@set <Variable> = “ String” ;
 ~~~~~
 ~~~~~
 \@set <Variable> = “ String” ;
 ~~~~~
-Sets <Variable> to the value “String”
+Sets \<Variable\> to the value “String”
 
 \@apply
 ------ 
 ~~~~~
 \@apply <Variable> = <Template> ;
 ~~~~~
 
 \@apply
 ------ 
 ~~~~~
 \@apply <Variable> = <Template> ;
 ~~~~~
-Evaluates the template, <Template>, and sets <Variable> equal to this.
-
+Evaluates the template, \<Template\>, and sets \<Variable\> equal to this.
 
 \@uses
 -----
 
 \@uses
 -----
@@ -2628,7 +2635,7 @@ Evaluates the template, <Template>, and sets <Variable> equal to this.
 \@uses <Variable>;
 \@uses “ String”;
 ~~~~~
 \@uses <Variable>;
 \@uses “ String”;
 ~~~~~
-Runs an EDL file. The name of this file is either contained in the variable <Variable> or is given as a string, <String>.
+Runs an EDL file. The name of this file is either contained in the variable \<Variable\> or is given as a string, \<String\>.
 
 \@file
 -----
 
 \@file
 -----
@@ -2636,21 +2643,21 @@ Runs an EDL file. The name of this file is either contained in the variable <Var
 \@file <Id> <Variable> ;
 \@file <Id> “String” ;
 ~~~~~
 \@file <Id> <Variable> ;
 \@file <Id> “String” ;
 ~~~~~
-Opens a file and associates it with the identifier <Id>. This <Id> identifies the file until it is closed. The name of the file is given as a string <String>, or using a variable <Variable>.
+Opens a file and associates it with the identifier \<Id\>. This \<Id\> identifies the file until it is closed. The name of the file is given as a string \<String\>, or using a variable \<Variable\>.
 
 \@write
 ------
 ~~~~~
 \@write <Id> <Variable> ;
 ~~~~~
 
 \@write
 ------
 ~~~~~
 \@write <Id> <Variable> ;
 ~~~~~
-Writes the contents of the variable out to a file indicated by the file <Id>. This <Id> is the identifier allocated to the file when is opened using \@file.
+Writes the contents of the variable out to a file indicated by the file \<Id\>. This \<Id\> is the identifier allocated to the file when is opened using \@file.
 
 \@close
 ------
 ~~~~~
 \@close <Id> ;
 ~~~~~
 
 \@close
 ------
 ~~~~~
 \@close <Id> ;
 ~~~~~
-Closes the file identified by <Id>. This <Id> is the identifier allocated to the file when is opened using \@file.
+Closes the file identified by \<Id\>. This \<Id\> is the identifier allocated to the file when is opened using \@file.
 
 \@cout
 -----
 
 \@cout
 -----
@@ -2668,7 +2675,7 @@ Concatenates the contents of the variables and strings and displays the result o
 \@else
 \@endif ;
 ~~~~~
 \@else
 \@endif ;
 ~~~~~
-Checks for the existence of a file, the name of which is given in the string  ‘String”, or else contained in the variable <Variable>.
+Checks for the existence of a file, the name of which is given in the string  ‘String”, or else contained in the variable \<Variable\>.
 If the file exists, the instructions contained in the ‘then’ loop are executed up to the *\@endif*, (or an \@else if one is found before the \@endif ).
 If the files do not exist, the ‘else’ loop is executed (if one exists).
 
 If the file exists, the instructions contained in the ‘then’ loop are executed up to the *\@endif*, (or an \@else if one is found before the \@endif ).
 If the files do not exist, the ‘else’ loop is executed (if one exists).
 
@@ -2681,7 +2688,7 @@ If the files do not exist, the ‘else’ loop is executed (if one exists).
 \@else
 \@endif ;
 ~~~~~
 \@else
 \@endif ;
 ~~~~~
-Checks for the existence of a file, the name of which is given in the string ‘String”, or else contained in the variable <Variable>.
+Checks for the existence of a file, the name of which is given in the string ‘String”, or else contained in the variable \<Variable\>.
 If the file does not exist, the instructions contained in the ‘then’ loop are executed up to the \@endif, (or an \@else if one is found before the \@endif).
 If the file does exist, the ‘else’ loop is executed (if one exists).
 
 If the file does not exist, the instructions contained in the ‘then’ loop are executed up to the \@endif, (or an \@else if one is found before the \@endif).
 If the file does exist, the ‘else’ loop is executed (if one exists).
 
@@ -2694,7 +2701,7 @@ If the file does exist, the ‘else’ loop is executed (if one exists).
 \@else
 \@endif ;
 ~~~~~
 \@else
 \@endif ;
 ~~~~~
-Checks for the existence of a variable or template, the name of which is given by <Template>, or else contained in the variable <Variable>.
+Checks for the existence of a variable or template, the name of which is given by \<Template\>, or else contained in the variable \<Variable\>.
 If a variable or a template by this name exists the instructions contained in the ‘then’ loop are executed up to the \@endif, (or an \@else if one is found before the \@endif).
 If neither a variable nor a template exists, the ‘else’ loop is executed (if one exists).
 
 If a variable or a template by this name exists the instructions contained in the ‘then’ loop are executed up to the \@endif, (or an \@else if one is found before the \@endif).
 If neither a variable nor a template exists, the ‘else’ loop is executed (if one exists).
 
@@ -2708,7 +2715,7 @@ If neither a variable nor a template exists, the ‘else’ loop is executed (if
 \@else
 \@endif ;
 ~~~~~
 \@else
 \@endif ;
 ~~~~~
-Checks for the existence of a variable or template, the name of which is given by <Template>, or else contained in the variable <Variable>.
+Checks for the existence of a variable or template, the name of which is given by \<Template\>, or else contained in the variable \<Variable\>.
 If neither a variable nor a template by this name exists the instructions contained in the ‘then’ loop are executed up to the \@endif, (or an \@else if one is found before the \@endif).
 If a variable or a template does exist, the ‘else’ loop is executed (if one exists).
 
 If neither a variable nor a template by this name exists the instructions contained in the ‘then’ loop are executed up to the \@endif, (or an \@else if one is found before the \@endif).
 If a variable or a template does exist, the ‘else’ loop is executed (if one exists).
 
@@ -2729,10 +2736,10 @@ If the condition is false, the ‘else’ loop is executed (if one exists).
 ---------
 ~~~~~
 \@template <Template> (<Variable>, ... , <Variable>) is
 ---------
 ~~~~~
 \@template <Template> (<Variable>, ... , <Variable>) is
-       $ text...
-       .
-       .
-       $ text...
+  $ text...
+  .
+  .
+  $ text...
 \@end;
 ~~~~~
 Creates a template, which is a definition that contains variables. The variables on which a template relies are given in parentheses, following the name of the template. These variables are used to evaluate the template, and are referred to as ‘variables of evaluation’. When a template is evaluated (see \@apply) the variables in its definition are replaced by the current values of the ‘variables of evaluation’.
 \@end;
 ~~~~~
 Creates a template, which is a definition that contains variables. The variables on which a template relies are given in parentheses, following the name of the template. These variables are used to evaluate the template, and are referred to as ‘variables of evaluation’. When a template is evaluated (see \@apply) the variables in its definition are replaced by the current values of the ‘variables of evaluation’.
@@ -2742,10 +2749,10 @@ A template is re-evaluated each time it is used.
 --------------
 ~~~~~
 \@addtotemplate <Template> is
 --------------
 ~~~~~
 \@addtotemplate <Template> is
-       $ text
-       .
-       .
-       $ text
+  $ text
+  .
+  .
+  $ text
 \@end;
 ~~~~~
 
 \@end;
 ~~~~~
 
@@ -2807,9 +2814,9 @@ Complex conditions take into account the results of other conditions. Complex co
 For example,
 ~~~~~
 \@if ((%a == “0” && %b == “1” && %c == “1”) || %d == “1” && ((%a == “1”) && %b == “1”)) then
 For example,
 ~~~~~
 \@if ((%a == “0” && %b == “1” && %c == “1”) || %d == “1” && ((%a == “1”) && %b == “1”)) then
-       \@cout “CONDITION TRUE”;
+  \@cout “CONDITION TRUE”;
 \@else
 \@else
-       \@cout “CONDITION FALSE”;
+  \@cout “CONDITION FALSE”;
 \@endif;
 ~~~~~
 
 \@endif;
 ~~~~~
 
@@ -2934,7 +2941,7 @@ To add a define for all C++ files compiled in the package *MyPackage*, *MyPackag
 
 #### How to use a code generator
 
 
 #### How to use a code generator
 
-In this example, a C code generator is used, which takes the input <i><file>.mygen</i> and generates a <i><file>.c</i>. The step *obj.cgen* automatically recognizes all files with the extension mygen and uses the generator on these files. The resulting .c files are compiled by the step *obj.comp*. 
+In this example, a C code generator is used, which takes the input <i>\<file\>.mygen</i> and generates a <i>\<file\>.c</i>. The step *obj.cgen* automatically recognizes all files with the extension mygen and uses the generator on these files. The resulting .c files are compiled by the step *obj.comp*. 
 The file *MyUnit_CODEGEN.edl* is written in a nocdlpack development unit *MyUnit*. This file contains the following code: 
 
 ~~~~~
 The file *MyUnit_CODEGEN.edl* is written in a nocdlpack development unit *MyUnit*. This file contains the following code: 
 
 ~~~~~
@@ -3025,24 +3032,24 @@ There are three advanced WOK commands available for writing umake steps in tcl:
 *msgprint [-i|-w|-e|-v|-V Class]* prints a message. The output is directed to a WOK internal process that is in charge of printing messages. 
 
 The following options are available:  
 *msgprint [-i|-w|-e|-v|-V Class]* prints a message. The output is directed to a WOK internal process that is in charge of printing messages. 
 
 The following options are available:  
-| -i  | Prints an information message. |
-| -w  | Prints a warning message. |
-| -e  | Prints an error message. |
-| -v  | Prints a verbose message. |
-| -V<Class> | Prints a verbose message for class <Class>. |
-| -c  | Prints context of message, i.e. the procedure that called it. |
+| -i          | Prints an information message.                                |
+| -w          | Prints a warning message.                                     |
+| -e          | Prints an error message.                                      |
+| -v          | Prints a verbose message.                                     |
+| -V\<Class\> | Prints a verbose message for class \<Class\>.                 |
+| -c          | Prints context of message, i.e. the procedure that called it. |
 
 For example, 
 ~~~~~
 
 For example, 
 ~~~~~
-msgprint -e -c *CCLKernel_GetObjects::Execute* *Cannot locate object file :  * $file; 
+msgprint -e -c *CCLKernel_GetObjects\::Execute* *Cannot locate object file :  * $file; 
 ~~~~~
 Writes an error message, in format: 
 ~~~~~
 ~~~~~
 Writes an error message, in format: 
 ~~~~~
-ERROR: CCLKernel_GetObjects::Execute - Cannot locate object file : MyFile 
+ERROR: CCLKernel_GetObjects\::Execute - Cannot locate object file : MyFile 
 ~~~~~
 ~~~~~
-*stepoutputadd <options> <OutputFileID> [<filepath>]* adds an output file to the outputs of the step. This file is treated by subsequent steps in the same way as all the other output files of the step. The following options are available:  
+*stepoutputadd \<options\> \<OutputFileID\> [\<filepath\>]* adds an output file to the outputs of the step. This file is treated by subsequent steps in the same way as all the other output files of the step. The following options are available:  
 
 
-| -p<path> |  Specifies the path where the file is located. |
+| -p\<path\> |  Specifies the path where the file is located. |
 | -L | Output can be located (default). |
 | -N | Not a WOK file. Cannot be located. |
 | -F | Physical file (i.e. resides on a disk somewhere). |
 | -L | Output can be located (default). |
 | -N | Not a WOK file. Cannot be located. |
 | -F | Physical file (i.e. resides on a disk somewhere). |
@@ -3050,7 +3057,7 @@ ERROR: CCLKernel_GetObjects::Execute - Cannot locate object file : MyFile
 | -X | File is not a member of the unit being built. Not a WOK file. Cannot be located. |
 | -P | File is produced by this umake step (i.e. WOK can delete it because it will be regenerated). |
 | -R | File is not produced by this umake step (i.e. WOK must not delete it because it can not be regenerated). 
 | -X | File is not a member of the unit being built. Not a WOK file. Cannot be located. |
 | -P | File is produced by this umake step (i.e. WOK can delete it because it will be regenerated). |
 | -R | File is not produced by this umake step (i.e. WOK must not delete it because it can not be regenerated). 
-| -S<StepID> | Reserved for advanced use. Specifies stepID. |
+| -S\<StepID\> | Reserved for advanced use. Specifies stepID. |
 | -V | Reserved for advanced use. Virtual ‘file’ (i.e. an MSEntity). This option is used for passing keywords between steps for example. | 
 
 For example, 
 | -V | Reserved for advanced use. Virtual ‘file’ (i.e. an MSEntity). This option is used for passing keywords between steps for example. | 
 
 For example, 
@@ -3059,7 +3066,7 @@ stepoutputadd -X -R -N -F /usr/myfiles/res.o -p /usr/myfiles/res.o
 ~~~~~
 Adds the file */usr/myfiles/res.o* to the outputs of this step. Specifies that this file is not a WOK file, cannot be located automatically by WOK, and is not generated by this step. Here the full file path is used as the unique file identifier. This appears to be duplicated when it is also given as the physical location of the file. 
 
 ~~~~~
 Adds the file */usr/myfiles/res.o* to the outputs of this step. Specifies that this file is not a WOK file, cannot be located automatically by WOK, and is not generated by this step. Here the full file path is used as the unique file identifier. This appears to be duplicated when it is also given as the physical location of the file. 
 
-*stepaddexecdepitem <options> <InputFileID> <OutputFileID>* adds a dependency between one file and another. Typically when introducing external object libraries the files are set to be dependent on the CDL file. We do this because the CDL file changes rarely, so the external files are not needlessly reprocessed, but they are always included in the final executable. The following options are available:  
+*stepaddexecdepitem \<options\> \<InputFileID\> \<OutputFileID\>* adds a dependency between one file and another. Typically when introducing external object libraries the files are set to be dependent on the CDL file. We do this because the CDL file changes rarely, so the external files are not needlessly reprocessed, but they are always included in the final executable. The following options are available:  
 
 | -d  | Adds a direct dependency (default). |
 | -i  | Adds an indirect dependency. |
 
 | -d  | Adds a direct dependency (default). |
 | -i  | Adds an indirect dependency. |
@@ -3075,13 +3082,13 @@ States that the file *MyOutFile* depends directly on the file *MyInFile*.
 Each tcl umake step has the following components: 
 * *HandleInputFile* - a filter: for each input file this component decides whether or not to accept the file. 
 * *OutputDirTypeName* returns one of three strings, according to the dependency of the file: 
 Each tcl umake step has the following components: 
 * *HandleInputFile* - a filter: for each input file this component decides whether or not to accept the file. 
 * *OutputDirTypeName* returns one of three strings, according to the dependency of the file: 
-       * *tmpfile* = the file is independent (i.e. dependent only on its source);
-       * *dbtmpdir* = the file is dependent on the database profile;
-       * *sttmpdir* = the file is dependent on the station profile. 
+  * *tmpfile* = the file is independent (i.e. dependent only on its source);
+  * *dbtmpdir* = the file is dependent on the database profile;
+  * *sttmpdir* = the file is dependent on the station profile. 
 * *AdmFileType* returns one of three strings, according to the dependency of the file: 
 * *AdmFileType* returns one of three strings, according to the dependency of the file: 
-       * *admfile* = the file is independent (i.e. dependent only on its source); 
-       * *Dbadmfile* = the file is dependent on the database profile; 
-       * *stadmfile* = the file is dependent on the station profile. 
+  * *admfile* = the file is independent (i.e. dependent only on its source); 
+  * *Dbadmfile* = the file is dependent on the database profile; 
+  * *stadmfile* = the file is dependent on the station profile. 
 
 *Execute* processes each input file that is out of date (i.e. has changed since it was last processed, or depends on a file that has changed since it was last processed). Typically this procedure takes the form of a *foreach* loop. Argument: a development unit to process and a list of one or more arguments. 
 
 
 *Execute* processes each input file that is out of date (i.e. has changed since it was last processed, or depends on a file that has changed since it was last processed). Typically this procedure takes the form of a *foreach* loop. Argument: a development unit to process and a list of one or more arguments. 
 
@@ -3092,72 +3099,72 @@ Each tcl umake step has the following components:
 ~~~~~
 # CCLKernel_GetObjects.tcl 
 proc CCLKernel_GetObjects::AdmFileType {} { 
 ~~~~~
 # CCLKernel_GetObjects.tcl 
 proc CCLKernel_GetObjects::AdmFileType {} { 
-       return stadmfile; 
+  return stadmfile; 
 } 
 proc CCLKernel_GetObjects::OutputDirTypeName {} { 
 } 
 proc CCLKernel_GetObjects::OutputDirTypeName {} { 
-       return sttmpdir; 
+  return sttmpdir; 
 } 
 proc CCLKernel_GetObjects::HandleInputFile { ID } { 
 } 
 proc CCLKernel_GetObjects::HandleInputFile { ID } { 
-       scan $ID *%\[^:\]:%\[^:\]:%\[^:\]* unit type name 
-       return 1; 
-       switch [file extension $name] { 
+  scan $ID *%\[^:\]:%\[^:\]:%\[^:\]* unit type name 
+  return 1; 
+  switch [file extension $name] { 
 .cdl { 
 .cdl { 
-               return 1; 
-               
-       default { 
-               return 0; 
-               
-       
+    return 1; 
+    } 
+  default { 
+    return 0; 
+    } 
+  } 
 } 
 } 
-proc CCLKernel_GetObjects::Execute { unit args } { 
-       msgprint -i -c *CCLKernel_GetObjects::Execute* 
-       *Processing unit : $unit*; 
-       msgprint -i -c *CCLKernel_GetObjects::Execute* 
-       set failed 0; 
-       set inid [lindex $args 0] 
-       foreach file { Frontal_Ccal_Init_Request.o Frontal_Ccal_Send_Request.o \ 
+proc CCLKernel_GetObjects\::Execute { unit args } { 
+  msgprint -i -c *CCLKernel_GetObjects\::Execute* 
+  *Processing unit : $unit*; 
+  msgprint -i -c *CCLKernel_GetObjects\::Execute* 
+  set failed 0; 
+  set inid [lindex $args 0] 
+  foreach file { Frontal_Ccal_Init_Request.o Frontal_Ccal_Send_Request.o \ 
 Frontal_Ccal_sd.o Frontal_Get_Response.o Frontal_Ccal_Connect.o } { 
 set resid *Frontal:object:$file* 
 set path [woklocate -p $resid] 
 if { $path == ** } { 
 Frontal_Ccal_sd.o Frontal_Get_Response.o Frontal_Ccal_Connect.o } { 
 set resid *Frontal:object:$file* 
 set path [woklocate -p $resid] 
 if { $path == ** } { 
-       msgprint -e -c *CCLKernel_GetObjects::Execute* 
+  msgprint -e -c *CCLKernel_GetObjects\::Execute* 
 *Cannot locate object file :  * $file; 
 *Cannot locate object file :  * $file; 
-       set failed 1; 
+  set failed 1; 
 } else { 
 } else { 
-       msgprint -i -c *CCLKernel_GetObjects::Execute* *Add 
+  msgprint -i -c *CCLKernel_GetObjects\::Execute* *Add 
 object $file at  * $path 
 object $file at  * $path 
-       stepoutputadd -X -R -L -F $resid 
-       stepaddexecdepitem -d $inid $resid 
-       
+  stepoutputadd -X -R -L -F $resid 
+  stepaddexecdepitem -d $inid $resid 
+  } 
 } 
 if { [wokparam -e %Station] == *sun* } { 
 } 
 if { [wokparam -e %Station] == *sun* } { 
-       set file *risc_return.o* 
-       set resid *CCLKernel:source:$file* 
-       set path [woklocate -p $resid] 
+  set file *risc_return.o* 
+  set resid *CCLKernel:source:$file* 
+  set path [woklocate -p $resid] 
 ## set path */adv_23/wb/kl/Kernel7/prod/EngineStarter/ 
 src/risc_return.o* 
 ## set path */adv_23/wb/kl/Kernel7/prod/EngineStarter/ 
 src/risc_return.o* 
-       msgprint -i -c *CCLKernel_GetObjects::Execute* *Add 
+  msgprint -i -c *CCLKernel_GetObjects\::Execute* *Add 
 object $file at  * $path 
 object $file at  * $path 
-       stepoutputadd -X -R -N -F $path -p $path 
-       stepaddexecdepitem -d $inid $path 
+  stepoutputadd -X -R -N -F $path -p $path 
+  stepaddexecdepitem -d $inid $path 
 } 
 set home [wokparam -e %Ilog_Home] 
 if { $home == ** } { 
 } 
 set home [wokparam -e %Ilog_Home] 
 if { $home == ** } { 
-       msprint -c *CCLKernel_GetObjects::Execute* -e *Cannot 
+  msprint -c *CCLKernel_GetObjects\::Execute* -e *Cannot 
 evaluate parameter : %Ilog_Home 
 evaluate parameter : %Ilog_Home 
-       return 1; 
+  return 1; 
 } 
 foreach file { llstdio.o llfloat.o llfloat31.o cfix.o 
 lelisp.o getgloba.o cload.o } { 
 } 
 foreach file { llstdio.o llfloat.o llfloat31.o cfix.o 
 lelisp.o getgloba.o cload.o } { 
-       set path *$home/o/$file* 
-       msgprint -i -c *CCLKernel_GetObjects::Execute* *Add 
+  set path *$home/o/$file* 
+  msgprint -i -c *CCLKernel_GetObjects\::Execute* *Add 
 object $file at  * $path 
 object $file at  * $path 
-       stepoutputadd -X -R -N -F $path -p $path 
-       stepaddexecdepitem -d $inid $path 
+  stepoutputadd -X -R -N -F $path -p $path 
+  stepaddexecdepitem -d $inid $path 
 } 
 set file *lelisp31bin.o* 
 set path *$home/lelisp31bin.o* 
 } 
 set file *lelisp31bin.o* 
 set path *$home/lelisp31bin.o* 
-msgprint -i -c *CCLKernel_GetObjects::Execute* *Add 
+msgprint -i -c *CCLKernel_GetObjects\::Execute* *Add 
 object $file at  * $path 
 stepoutputadd -X -R -N -F $path -p $path 
 stepaddexecdepitem -d $inid $path 
 object $file at  * $path 
 stepoutputadd -X -R -N -F $path -p $path 
 stepaddexecdepitem -d $inid $path 
@@ -3169,43 +3176,43 @@ Sample 2
 --------
 # File Name: CCLKernel_core.tcl 
 proc CCLKernel_core::AdmFileType {} { 
 --------
 # File Name: CCLKernel_core.tcl 
 proc CCLKernel_core::AdmFileType {} { 
-       return stadmfile; 
+  return stadmfile; 
 } 
 proc CCLKernel_core::OutputDirTypeName {} { 
 } 
 proc CCLKernel_core::OutputDirTypeName {} { 
-       return sttmpdir; 
+  return sttmpdir; 
 } 
 proc CCLKernel_core::HandleInputFile { ID } { 
 } 
 proc CCLKernel_core::HandleInputFile { ID } { 
-       scan $ID *%\[^:\]:%\[^:\]:%\[^:\]* unit type name 
-       switch $type { 
+  scan $ID *%\[^:\]:%\[^:\]:%\[^:\]* unit type name 
+  switch $type { 
 executable { 
 executable { 
-       return 1; 
+  return 1; 
 } 
 } 
-       
-       switch $name { 
+  } 
+  switch $name { 
 CCL_lelisp.ll { 
 CCL_lelisp.ll { 
-       return 1; 
-       
+  return 1; 
+  } 
 } 
 } 
-       return 0; 
-       
-proc CCLKernel_core::Execute { unit args } { 
-       global WOK_GLOBALS env 
-msgprint -i -c *CCLKernel_core::Execute* *Processing unit : $unit*; 
-       msgprint -i -c *CCLKernel_core::Execute* 
-       set workbench [wokinfo -N $unit] 
-       set unitname [wokinfo -n $unit] 
-       set failed 0; 
-       set lispbin ** 
-       set lispfile ** 
-       set lispbinid ** 
-       set lispfileid ** 
-       foreach ID $args { 
+  return 0; 
+  } 
+proc CCLKernel_core\::Execute { unit args } { 
+  global WOK_GLOBALS env 
+msgprint -i -c *CCLKernel_core\::Execute* *Processing unit : $unit*; 
+  msgprint -i -c *CCLKernel_core\::Execute* 
+  set workbench [wokinfo -N $unit] 
+  set unitname [wokinfo -n $unit] 
+  set failed 0; 
+  set lispbin ** 
+  set lispfile ** 
+  set lispbinid ** 
+  set lispfileid ** 
+  foreach ID $args { 
 scan $ID *%\[^:\]:%\[^:\]:%\[^:\]* Unit type name 
 switch $type { 
 scan $ID *%\[^:\]:%\[^:\]:%\[^:\]* Unit type name 
 switch $type { 
-       executable { 
-               set lispbinid $ID 
-               set lispbin [stepinputinfo -p $ID] 
-       
+  executable { 
+    set lispbinid $ID 
+    set lispbin [stepinputinfo -p $ID] 
+  } 
 } 
 switch $name { 
 CCL_lelisp.ll { 
 } 
 switch $name { 
 CCL_lelisp.ll { 
@@ -3219,25 +3226,25 @@ set lispfileid *CCLKernel:source:CCL_lelisp.ll*;
 set lispfile [woklocate -p $lispfileid $workbench] 
 } 
 if { $lispbin == **} { 
 set lispfile [woklocate -p $lispfileid $workbench] 
 } 
 if { $lispbin == **} { 
-msgprint -e -c *CCLKernel_core::Execute* *Cannot find lelispbin in input* 
+msgprint -e -c *CCLKernel_core\::Execute* *Cannot find lelispbin in input* 
 return 1; 
 } 
 return 1; 
 } 
-msgprint -i -c *CCLKernel_core::Execute* *Using lelisp.bin at  * $lispbin 
-msgprint -i -c *CCLKernel_core::Execute* 
+msgprint -i -c *CCLKernel_core\::Execute* *Using lelisp.bin at  * $lispbin 
+msgprint -i -c *CCLKernel_core\::Execute* 
 set config *[wokparam -e %Ilog_Home]/config* 
 set tmpdir [wokinfo -p sttmpdir:. $unit] 
 set output [wokinfo -p executable:. $unit] 
 set lelisppointbin [wokinfo -p executable:lelisp.bin $unit] 
 unlink -nocomplain $lelisppointbin 
 link -sym $lispbin $lelisppointbin 
 set config *[wokparam -e %Ilog_Home]/config* 
 set tmpdir [wokinfo -p sttmpdir:. $unit] 
 set output [wokinfo -p executable:. $unit] 
 set lelisppointbin [wokinfo -p executable:lelisp.bin $unit] 
 unlink -nocomplain $lelisppointbin 
 link -sym $lispbin $lelisppointbin 
-msgprint -i -c *CCLKernel_core::Execute* *Setting Environment* 
+msgprint -i -c *CCLKernel_core\::Execute* *Setting Environment* 
 set WOK_GLOBALS(setenv_proc,tcl) 1 
 wokenv -s 
 set WOK_GLOBALS(setenv_proc,tcl) 0 
 set olddir [pwd] 
 cd [wokinfo -p source:. $unit] 
 set FrontSIZE *-stack 12 -code 1500 -heap 2048 -number 0 -vector 32 -string 50 -symbol 30 -float 0 -cons  * 
 set WOK_GLOBALS(setenv_proc,tcl) 1 
 wokenv -s 
 set WOK_GLOBALS(setenv_proc,tcl) 0 
 set olddir [pwd] 
 cd [wokinfo -p source:. $unit] 
 set FrontSIZE *-stack 12 -code 1500 -heap 2048 -number 0 -vector 32 -string 50 -symbol 30 -float 0 -cons  * 
-msgprint -i -c *CCLKernel_core::Execute* *Exec : $config $tmpdir $lispbin $lispfile $output $FrontSIZE 8* 
+msgprint -i -c *CCLKernel_core\::Execute* *Exec : $config $tmpdir $lispbin $lispfile $output $FrontSIZE 8* 
 puts *exec /bin/env \\ 
 COREDIR=$output \\ 
 WBPACKAGE=[wokinfo -n $unit] ILOG_LICENSE_FILE=[wokparam -e %Ilog_LicenseFile] \\ 
 puts *exec /bin/env \\ 
 COREDIR=$output \\ 
 WBPACKAGE=[wokinfo -n $unit] ILOG_LICENSE_FILE=[wokparam -e %Ilog_LicenseFile] \\ 
@@ -3246,19 +3253,19 @@ EngineStarter.Hosts \\
 ILOG_LICENSE_FILE=[wokparam -e %Ilog_LicenseFile] \\ 
 \*FrontSIZE=$FrontSIZE\* \\ 
 $config $tmpdir $lispbin $lispfile $output $FrontSIZE 8* 
 ILOG_LICENSE_FILE=[wokparam -e %Ilog_LicenseFile] \\ 
 \*FrontSIZE=$FrontSIZE\* \\ 
 $config $tmpdir $lispbin $lispfile $output $FrontSIZE 8* 
-msgprint -i -c *CCLKernel_core::Execute* [eval *exec /bin/env \\ 
-       COREDIR=$output \\ 
-       WBPACKAGE=[wokinfo -n $unit] \\ 
-       ILOG_LICENSE_FILE=[wokparam -e %Ilog_LicenseFile] \\ 
-       CSF_EngineStarterList=/usr/local/etc/ EngineStarter.Hosts \\ 
-       \*FrontSIZE=$FrontSIZE\* \\ 
+msgprint -i -c *CCLKernel_core\::Execute* [eval *exec /bin/env \\ 
+  COREDIR=$output \\ 
+  WBPACKAGE=[wokinfo -n $unit] \\ 
+  ILOG_LICENSE_FILE=[wokparam -e %Ilog_LicenseFile] \\ 
+  CSF_EngineStarterList=/usr/local/etc/ EngineStarter.Hosts \\ 
+  \*FrontSIZE=$FrontSIZE\* \\ 
 $config $tmpdir $lispbin $lispfile $output $FrontSIZE 8*] 
 $config $tmpdir $lispbin $lispfile $output $FrontSIZE 8*] 
-       stepoutputadd -P $unitname:corelisp:$unitname.core 
-       stepaddexecdepitem -d $lispbinid 
+  stepoutputadd -P $unitname:corelisp:$unitname.core 
+  stepaddexecdepitem -d $lispbinid 
 $unitname:corelisp:$unitname.core 
 $unitname:corelisp:$unitname.core 
-       stepaddexecdepitem -d $lispfileid 
+  stepaddexecdepitem -d $lispfileid 
 $unitname:corelisp:$unitname.core 
 $unitname:corelisp:$unitname.core 
-       cd $olddir 
-       return 0; 
+  cd $olddir 
+  return 0; 
 }
 ~~~~~
\ No newline at end of file
 }
 ~~~~~
\ No newline at end of file
diff --git a/dox/license.md b/dox/license.md
new file mode 100644 (file)
index 0000000..bc82745
--- /dev/null
@@ -0,0 +1,521 @@
+License {#occt_public_license}
+=======
+
+Open CASCADE Technology is available under GNU Lesser General Public License 
+(LGPL) version 2.1 with additional exception.
+
+@section license_lgpl_21 GNU LESSER GENERAL PUBLIC LICENSE
+
+    Version 2.1, February 1999
+
+    Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+    51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+    Everyone is permitted to copy and distribute verbatim copies
+    of this license document, but changing it is not allowed.
+
+    [This is the first released version of the Lesser GPL.  It also counts
+    as the successor of the GNU Library Public License, version 2, hence
+    the version number 2.1.]
+
+### Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+### TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+-  0. This License Agreement applies to any software library or other
+   program which contains a notice placed by the copyright holder or
+   other authorized party saying it may be distributed under the terms of
+   this Lesser General Public License (also called "this License").
+   Each licensee is addressed as "you".
+
+   A "library" means a collection of software functions and/or data
+   prepared so as to be conveniently linked with application programs
+   (which use some of those functions and data) to form executables.
+
+   The "Library", below, refers to any such software library or work
+   which has been distributed under these terms.  A "work based on the
+   Library" means either the Library or any derivative work under
+   copyright law: that is to say, a work containing the Library or a
+   portion of it, either verbatim or with modifications and/or translated
+   straightforwardly into another language.  (Hereinafter, translation is
+   included without limitation in the term "modification".)
+
+   "Source code" for a work means the preferred form of the work for
+   making modifications to it.  For a library, complete source code means
+   all the source code for all modules it contains, plus any associated
+   interface definition files, plus the scripts used to control compilation
+   and installation of the library.
+
+   Activities other than copying, distribution and modification are not
+   covered by this License; they are outside its scope.  The act of
+   running a program using the Library is not restricted, and output from
+   such a program is covered only if its contents constitute a work based
+   on the Library (independent of the use of the Library in a tool for
+   writing it).  Whether that is true depends on what the Library does
+   and what the program that uses the Library does.
+  
+1. You may copy and distribute verbatim copies of the Library's
+   complete source code as you receive it, in any medium, provided that
+   you conspicuously and appropriately publish on each copy an
+   appropriate copyright notice and disclaimer of warranty; keep intact
+   all the notices that refer to this License and to the absence of any
+   warranty; and distribute a copy of this License along with the
+   Library.
+
+   You may charge a fee for the physical act of transferring a copy,
+   and you may at your option offer warranty protection in exchange for a
+   fee.
+
+2. You may modify your copy or copies of the Library or any portion
+   of it, thus forming a work based on the Library, and copy and
+   distribute such modifications or work under the terms of Section 1
+   above, provided that you also meet all of these conditions:
+
+   1. The modified work must itself be a software library.
+
+   2. You must cause the files modified to carry prominent notices
+      stating that you changed the files and the date of any change.
+
+   3. You must cause the whole of the work to be licensed at no
+      charge to all third parties under the terms of this License.
+
+   4. If a facility in the modified Library refers to a function or a
+      table of data to be supplied by an application program that uses
+      the facility, other than as an argument passed when the facility
+      is invoked, then you must make a good faith effort to ensure that,
+      in the event an application does not supply such function or
+      table, the facility still operates, and performs whatever part of
+      its purpose remains meaningful.
+
+      (For example, a function in a library to compute square roots has
+      a purpose that is entirely well-defined independent of the
+      application.  Therefore, Subsection 2d requires that any
+      application-supplied function or table used by this function must
+      be optional: if the application does not supply it, the square
+      root function must still compute square roots.)
+
+   These requirements apply to the modified work as a whole.  If
+   identifiable sections of that work are not derived from the Library,
+   and can be reasonably considered independent and separate works in
+   themselves, then this License, and its terms, do not apply to those
+   sections when you distribute them as separate works.  But when you
+   distribute the same sections as part of a whole which is a work based
+   on the Library, the distribution of the whole must be on the terms of
+   this License, whose permissions for other licensees extend to the
+   entire whole, and thus to each and every part regardless of who wrote
+   it.
+
+   Thus, it is not the intent of this section to claim rights or contest
+   your rights to work written entirely by you; rather, the intent is to
+   exercise the right to control the distribution of derivative or
+   collective works based on the Library.
+
+   In addition, mere aggregation of another work not based on the Library
+   with the Library (or with a work based on the Library) on a volume of
+   a storage or distribution medium does not bring the other work under
+   the scope of this License.
+
+3. You may opt to apply the terms of the ordinary GNU General Public
+   License instead of this License to a given copy of the Library.  To do
+   this, you must alter all the notices that refer to this License, so
+   that they refer to the ordinary GNU General Public License, version 2,
+   instead of to this License.  (If a newer version than version 2 of the
+   ordinary GNU General Public License has appeared, then you can specify
+   that version instead if you wish.)  Do not make any other change in
+   these notices.
+
+   Once this change is made in a given copy, it is irreversible for
+   that copy, so the ordinary GNU General Public License applies to all
+   subsequent copies and derivative works made from that copy.
+
+   This option is useful when you wish to copy part of the code of
+   the Library into a program that is not a library.
+
+4. You may copy and distribute the Library (or a portion or
+   derivative of it, under Section 2) in object code or executable form
+   under the terms of Sections 1 and 2 above provided that you accompany
+   it with the complete corresponding machine-readable source code, which
+   must be distributed under the terms of Sections 1 and 2 above on a
+   medium customarily used for software interchange.
+
+   If distribution of object code is made by offering access to copy
+   from a designated place, then offering equivalent access to copy the
+   source code from the same place satisfies the requirement to
+   distribute the source code, even though third parties are not
+   compelled to copy the source along with the object code.
+
+5. A program that contains no derivative of any portion of the
+   Library, but is designed to work with the Library by being compiled or
+   linked with it, is called a "work that uses the Library".  Such a
+   work, in isolation, is not a derivative work of the Library, and
+   therefore falls outside the scope of this License.
+
+   However, linking a "work that uses the Library" with the Library
+   creates an executable that is a derivative of the Library (because it
+   contains portions of the Library), rather than a "work that uses the
+   library".  The executable is therefore covered by this License.
+   Section 6 states terms for distribution of such executables.
+
+   When a "work that uses the Library" uses material from a header file
+   that is part of the Library, the object code for the work may be a
+   derivative work of the Library even though the source code is not.
+   Whether this is true is especially significant if the work can be
+   linked without the Library, or if the work is itself a library.  The
+   threshold for this to be true is not precisely defined by law.
+
+   If such an object file uses only numerical parameters, data
+   structure layouts and accessors, and small macros and small inline
+   functions (ten lines or less in length), then the use of the object
+   file is unrestricted, regardless of whether it is legally a derivative
+   work.  (Executables containing this object code plus portions of the
+   Library will still fall under Section 6.)
+
+   Otherwise, if the work is a derivative of the Library, you may
+   distribute the object code for the work under the terms of Section 6.
+   Any executables containing that work also fall under Section 6,
+   whether or not they are linked directly with the Library itself.
+
+6. As an exception to the Sections above, you may also combine or
+   link a "work that uses the Library" with the Library to produce a
+   work containing portions of the Library, and distribute that work
+   under terms of your choice, provided that the terms permit
+   modification of the work for the customer's own use and reverse
+   engineering for debugging such modifications.
+
+   You must give prominent notice with each copy of the work that the
+   Library is used in it and that the Library and its use are covered by
+   this License.  You must supply a copy of this License.  If the work
+   during execution displays copyright notices, you must include the
+   copyright notice for the Library among them, as well as a reference
+   directing the user to the copy of this License.  Also, you must do one
+   of these things:
+
+   1. Accompany the work with the complete corresponding
+      machine-readable source code for the Library including whatever
+      changes were used in the work (which must be distributed under
+      Sections 1 and 2 above); and, if the work is an executable linked
+      with the Library, with the complete machine-readable "work that
+      uses the Library", as object code and/or source code, so that the
+      user can modify the Library and then relink to produce a modified
+      executable containing the modified Library.  (It is understood
+      that the user who changes the contents of definitions files in the
+      Library will not necessarily be able to recompile the application
+      to use the modified definitions.)
+
+   2. Use a suitable shared library mechanism for linking with the
+      Library.  A suitable mechanism is one that (1) uses at run time a
+      copy of the library already present on the user's computer system,
+      rather than copying library functions into the executable, and (2)
+      will operate properly with a modified version of the library, if
+      the user installs one, as long as the modified version is
+      interface-compatible with the version that the work was made with.
+
+   3. Accompany the work with a written offer, valid for at
+      least three years, to give the same user the materials
+      specified in Subsection 6a, above, for a charge no more
+      than the cost of performing this distribution.
+
+   4. If distribution of the work is made by offering access to copy
+      from a designated place, offer equivalent access to copy the above
+      specified materials from the same place.
+
+   5. Verify that the user has already received a copy of these
+      materials or that you have already sent this user a copy.
+
+   For an executable, the required form of the "work that uses the
+   Library" must include any data and utility programs needed for
+   reproducing the executable from it.  However, as a special exception,
+   the materials to be distributed need not include anything that is
+   normally distributed (in either source or binary form) with the major
+   components (compiler, kernel, and so on) of the operating system on
+   which the executable runs, unless that component itself accompanies
+   the executable.
+
+   It may happen that this requirement contradicts the license
+   restrictions of other proprietary libraries that do not normally
+   accompany the operating system.  Such a contradiction means you cannot
+   use both them and the Library together in an executable that you
+   distribute.
+
+7. You may place library facilities that are a work based on the
+   Library side-by-side in a single library together with other library
+   facilities not covered by this License, and distribute such a combined
+   library, provided that the separate distribution of the work based on
+   the Library and of the other library facilities is otherwise
+   permitted, and provided that you do these two things:
+
+   1. Accompany the combined library with a copy of the same work
+      based on the Library, uncombined with any other library
+      facilities.  This must be distributed under the terms of the
+      Sections above.
+
+   2. Give prominent notice with the combined library of the fact
+      that part of it is a work based on the Library, and explaining
+      where to find the accompanying uncombined form of the same work.
+
+8. You may not copy, modify, sublicense, link with, or distribute
+   the Library except as expressly provided under this License.  Any
+   attempt otherwise to copy, modify, sublicense, link with, or
+   distribute the Library is void, and will automatically terminate your
+   rights under this License.  However, parties who have received copies,
+   or rights, from you under this License will not have their licenses
+   terminated so long as such parties remain in full compliance.
+
+9. You are not required to accept this License, since you have not
+   signed it.  However, nothing else grants you permission to modify or
+   distribute the Library or its derivative works.  These actions are
+   prohibited by law if you do not accept this License.  Therefore, by
+   modifying or distributing the Library (or any work based on the
+   Library), you indicate your acceptance of this License to do so, and
+   all its terms and conditions for copying, distributing or modifying
+   the Library or works based on it.
+
+10. Each time you redistribute the Library (or any work based on the
+   Library), the recipient automatically receives a license from the
+   original licensor to copy, distribute, link with or modify the Library
+   subject to these terms and conditions.  You may not impose any further
+   restrictions on the recipients' exercise of the rights granted herein.
+   You are not responsible for enforcing compliance by third parties with
+   this License.
+
+11. If, as a consequence of a court judgment or allegation of patent
+   infringement or for any other reason (not limited to patent issues),
+   conditions are imposed on you (whether by court order, agreement or
+   otherwise) that contradict the conditions of this License, they do not
+   excuse you from the conditions of this License.  If you cannot
+   distribute so as to satisfy simultaneously your obligations under this
+   License and any other pertinent obligations, then as a consequence you
+   may not distribute the Library at all.  For example, if a patent
+   license would not permit royalty-free redistribution of the Library by
+   all those who receive copies directly or indirectly through you, then
+   the only way you could satisfy both it and this License would be to
+   refrain entirely from distribution of the Library.
+
+   If any portion of this section is held invalid or unenforceable under any
+   particular circumstance, the balance of the section is intended to apply,
+   and the section as a whole is intended to apply in other circumstances.
+
+   It is not the purpose of this section to induce you to infringe any
+   patents or other property right claims or to contest validity of any
+   such claims; this section has the sole purpose of protecting the
+   integrity of the free software distribution system which is
+   implemented by public license practices.  Many people have made
+   generous contributions to the wide range of software distributed
+   through that system in reliance on consistent application of that
+   system; it is up to the author/donor to decide if he or she is willing
+   to distribute software through any other system and a licensee cannot
+   impose that choice.
+
+   This section is intended to make thoroughly clear what is believed to
+   be a consequence of the rest of this License.
+
+12. If the distribution and/or use of the Library is restricted in
+   certain countries either by patents or by copyrighted interfaces, the
+   original copyright holder who places the Library under this License may add
+   an explicit geographical distribution limitation excluding those countries,
+   so that distribution is permitted only in or among countries not thus
+   excluded.  In such case, this License incorporates the limitation as if
+   written in the body of this License.
+
+13. The Free Software Foundation may publish revised and/or new
+   versions of the Lesser General Public License from time to time.
+   Such new versions will be similar in spirit to the present version,
+   but may differ in detail to address new problems or concerns.
+
+   Each version is given a distinguishing version number.  If the Library
+   specifies a version number of this License which applies to it and
+   "any later version", you have the option of following the terms and
+   conditions either of that version or of any later version published by
+   the Free Software Foundation.  If the Library does not specify a
+   license version number, you may choose any version ever published by
+   the Free Software Foundation.
+
+14. If you wish to incorporate parts of the Library into other free
+   programs whose distribution conditions are incompatible with these,
+   write to the author to ask for permission.  For software which is
+   copyrighted by the Free Software Foundation, write to the Free
+   Software Foundation; we sometimes make exceptions for this.  Our
+   decision will be guided by the two goals of preserving the free status
+   of all derivatives of our free software and of promoting the sharing
+   and reuse of software generally.
+
+   **NO** **WARRANTY**
+
+15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+   WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+   EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+   OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+   KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+   PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+   LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+   THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+   WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+   AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+   FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+   CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+   LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+   RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+   FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+   SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+   DAMAGES.
+
+### END OF TERMS AND CONDITIONS
+
+### How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+    Yoyodyne, Inc., hereby disclaims all copyright interest in the
+    library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+    <signature of Ty Coon>, 1 April 1990
+    Ty Coon, President of Vice
+
+That's all there is to it!
+
+@section occt_lgpl_exception OPEN CASCADE EXCEPTION
+
+### Open CASCADE Exception (version 1.0) to GNU LGPL version 2.1.
+
+The object code (i.e. not a source) form of a "work that uses the Library"
+can incorporate material from a header file that is part of the Library.
+As a special exception to the GNU Lesser General Public License version 2.1,
+you may distribute such object code incorporating material from header files
+provided with the Open CASCADE Technology libraries (including code of CDL
+generic classes) under terms of your choice, provided that you give
+prominent notice in supporting documentation to this code that it makes use
+of or is based on facilities provided by the Open CASCADE Technology software.
diff --git a/dox/occdoc.tcl b/dox/occdoc.tcl
deleted file mode 100644 (file)
index 1ef9bf7..0000000
+++ /dev/null
@@ -1,875 +0,0 @@
-# -----------------------------------------------------------------------
-#  Script name: CompileDocs.tcl
-#  This script compiles OCCT documents from *.md files to HTML pages
-#  Author: omy
-# -----------------------------------------------------------------------
-
-# get OCCT version from file Standard_Version.hxx (if available)
-proc OverviewDoc_DetectCasVersion {theCasRoot} {
-  set occt_ver 6.7.0
-  set occt_ver_add ""
-  if { [file exist $theCasRoot/src/Standard/Standard_Version.hxx] } {
-    set fh [open $theCasRoot/src/Standard/Standard_Version.hxx]
-    set fh_loaded [read $fh]
-    close $fh
-    regexp {[^/]\s*#\s*define\s+OCC_VERSION_COMPLETE\s+\"([^\s]*)\"} $fh_loaded dummy occt_ver
-    regexp {[^/]\s*#\s*define\s+OCC_VERSION_DEVELOPMENT\s+\"([^\s]*)\"} $fh_loaded dummy occt_ver_add
-    if { "$occt_ver_add" != "" } { set occt_ver ${occt_ver}.$occt_ver_add }
-  }
-  return $occt_ver
-}
-
-# Generates Doxygen configuration file for Overview documentation
-proc OverviewDoc_MakeDoxyfile {casDir outDir tagFileDir {doxyFileName} {generatorMode ""} DocFilesList verboseMode searchMode hhcPath mathjaxLocation} {
-
-    set doxyFile [open $doxyFileName "w"]
-    set casroot  $casDir
-    set inputDir $casDir/dox
-
-    # Common configs
-    puts $doxyFile "DOXYFILE_ENCODING      = UTF-8"
-    puts $doxyFile "PROJECT_NAME           = \"Open CASCADE Technology\""
-    puts $doxyFile "PROJECT_NUMBER         = [OverviewDoc_DetectCasVersion $casDir]"
-    puts $doxyFile "PROJECT_BRIEF          = "
-    puts $doxyFile "PROJECT_LOGO           = $inputDir/resources/occ_logo.png"
-
-    puts $doxyFile "OUTPUT_DIRECTORY       = $outDir"
-    puts $doxyFile "CREATE_SUBDIRS         = NO"
-    puts $doxyFile "OUTPUT_LANGUAGE        = English"
-    puts $doxyFile "ABBREVIATE_BRIEF       = \"The \$name class\" \
-                                             \"The \$name widget\" \
-                                             \"The \$name file\" \
-                                             is \
-                                             provides \
-                                             specifies \
-                                             contains \
-                                             represents \
-                                             a \
-                                             an \
-                                             the"
-
-    puts $doxyFile "FULL_PATH_NAMES        = YES"
-    puts $doxyFile "INHERIT_DOCS           = YES"
-    puts $doxyFile "TAB_SIZE               = 4"
-    puts $doxyFile "MARKDOWN_SUPPORT       = YES"
-    puts $doxyFile "EXTRACT_ALL            = YES"
-    puts $doxyFile "CASE_SENSE_NAMES       = NO"
-    puts $doxyFile "INLINE_INFO            = YES"
-    puts $doxyFile "SORT_MEMBER_DOCS       = YES"
-    puts $doxyFile "WARNINGS               = YES"
-    puts $doxyFile "WARN_IF_UNDOCUMENTED   = YES"
-    puts $doxyFile "WARN_IF_DOC_ERROR      = YES"
-    puts $doxyFile "WARN_NO_PARAMDOC       = NO"
-    puts $doxyFile "WARN_FORMAT            = \"\$file:\$line: \$text\""
-    puts $doxyFile "INPUT_ENCODING         = UTF-8"
-    puts $doxyFile "FILE_PATTERNS          = *.md *.dox "
-    puts $doxyFile "RECURSIVE              = YES"
-    puts $doxyFile "SOURCE_BROWSER         = NO"
-    puts $doxyFile "INLINE_SOURCES         = YES"
-    puts $doxyFile "COLS_IN_ALPHA_INDEX    = 5"
-    
-    # Generation options
-    puts $doxyFile "GENERATE_DOCSET        = NO"
-    puts $doxyFile "GENERATE_CHI           = NO"
-    puts $doxyFile "GENERATE_QHP           = NO"
-    puts $doxyFile "GENERATE_ECLIPSEHELP   = NO"
-    puts $doxyFile "GENERATE_RTF           = NO"
-    puts $doxyFile "GENERATE_MAN           = NO"
-    puts $doxyFile "GENERATE_XML           = NO"
-    puts $doxyFile "GENERATE_DOCBOOK       = NO"
-    puts $doxyFile "GENERATE_AUTOGEN_DEF   = NO"
-    puts $doxyFile "GENERATE_PERLMOD       = NO"
-
-    # Keep doxygen comments within code blocks
-    puts $doxyFile "STRIP_CODE_COMMENTS    = NO"
-
-    # Define alias for inserting images to both HRML and PDF at once
-    puts $doxyFile "ALIASES += figure\{1\}=\"\\image html \\1 \\n \\image latex \\1\""
-    puts $doxyFile "ALIASES += figure\{2\}=\"\\image html \\1 \\2 \\n \\image latex \\1 \\2\""
-
-    set PARAM_INPUT "INPUT                  ="
-    set PARAM_IMAGEPATH "IMAGE_PATH             = $inputDir/resources/ "
-
-    foreach docFile $DocFilesList {
-        set NEW_IMG_PATH [file normalize [file dirname "$inputDir/$docFile"]]
-        if { [string compare $NEW_IMG_PATH $casroot] != 0 } {
-          if {[file isdirectory "$NEW_IMG_PATH/images"]} {
-            append PARAM_IMAGEPATH " $NEW_IMG_PATH/images"
-          }
-        }
-        append PARAM_INPUT " " $inputDir/$docFile
-    }
-    puts $doxyFile $PARAM_INPUT
-    puts $doxyFile $PARAM_IMAGEPATH
-
-    if { $generatorMode == "HTML_ONLY"} {
-        # Set a reference to a TAGFILE
-        if { $tagFileDir != "" } {
-            if {[file exists $tagFileDir/OCCT.tag] == 1} {
-                set tagPath [OverviewDoc_GetRelPath $tagFileDir $outDir/html]
-                puts $doxyFile "TAGFILES               = $tagFileDir/OCCT.tag=$tagPath/html"
-            }
-        }
-        # HTML Output
-        puts $doxyFile "GENERATE_LATEX         = NO"
-        puts $doxyFile "GENERATE_HTMLHELP      = NO"
-        puts $doxyFile "GENERATE_HTML          = YES"
-        puts $doxyFile "HTML_COLORSTYLE_HUE    = 220"
-        puts $doxyFile "HTML_COLORSTYLE_SAT    = 100"
-        puts $doxyFile "HTML_COLORSTYLE_GAMMA  = 80"
-        puts $doxyFile "HTML_TIMESTAMP         = YES"
-        puts $doxyFile "HTML_DYNAMIC_SECTIONS  = YES"
-        puts $doxyFile "HTML_INDEX_NUM_ENTRIES = 100"
-        puts $doxyFile "DISABLE_INDEX          = YES"
-        puts $doxyFile "GENERATE_TREEVIEW      = YES"
-        puts $doxyFile "ENUM_VALUES_PER_LINE   = 8"
-        puts $doxyFile "TREEVIEW_WIDTH         = 250"
-        puts $doxyFile "EXTERNAL_PAGES         = NO"
-        # HTML Search engine options
-        if { [string tolower $searchMode] == "none" } {
-          puts $doxyFile "SEARCHENGINE           = NO"
-          puts $doxyFile "SERVER_BASED_SEARCH    = NO"
-          puts $doxyFile "EXTERNAL_SEARCH        = NO"
-        } else {
-          puts $doxyFile "SEARCHENGINE           = YES"
-          if { [string tolower $searchMode] == "local" } {
-            puts $doxyFile "SERVER_BASED_SEARCH    = NO"
-            puts $doxyFile "EXTERNAL_SEARCH        = NO"
-          } elseif { [string tolower $searchMode] == "server" } {
-            puts $doxyFile "SERVER_BASED_SEARCH    = YES"
-            puts $doxyFile "EXTERNAL_SEARCH        = NO"
-          } elseif { [string tolower $searchMode] == "external" } {
-            puts $doxyFile "SERVER_BASED_SEARCH    = YES"
-            puts $doxyFile "EXTERNAL_SEARCH        = YES"
-          } else {
-            puts "ERROR: Wrong search engine type"
-            close $doxyFile 
-            return
-          }
-        }
-        puts $doxyFile "SEARCHDATA_FILE        = searchdata.xml"
-        puts $doxyFile "SKIP_FUNCTION_MACROS   = YES"
-        # Formula options
-        puts $doxyFile "FORMULA_FONTSIZE       = 12"
-        puts $doxyFile "FORMULA_TRANSPARENT    = YES"
-        puts $doxyFile "USE_MATHJAX            = YES"
-        puts $doxyFile "MATHJAX_FORMAT         = HTML-CSS"
-        puts $doxyFile "MATHJAX_RELPATH        = ${mathjaxLocation}"
-        
-    } elseif { $generatorMode == "CHM_ONLY"} {
-        puts $doxyFile "GENERATE_HTMLHELP      = YES"
-        puts $doxyFile "CHM_FILE               = ../../overview.chm"
-        puts $doxyFile "HHC_LOCATION           = \"$hhcPath\""
-        puts $doxyFile "DISABLE_INDEX          = YES"
-        # Formula options
-        puts $doxyFile "FORMULA_FONTSIZE       = 12"
-        puts $doxyFile "FORMULA_TRANSPARENT    = YES"
-        puts $doxyFile "USE_MATHJAX            = YES"
-        puts $doxyFile "MATHJAX_FORMAT         = HTML-CSS"
-        puts $doxyFile "MATHJAX_RELPATH        = ${mathjaxLocation}"
-
-    } elseif { $generatorMode == "PDF_ONLY"} {
-        puts $doxyFile "GENERATE_HTMLHELP      = NO"
-        puts $doxyFile "GENERATE_HTML          = NO"
-        puts $doxyFile "DISABLE_INDEX          = YES"
-        puts $doxyFile "GENERATE_TREEVIEW      = NO"
-        puts $doxyFile "PREDEFINED             = PDF_ONLY"
-        puts $doxyFile "GENERATE_LATEX         = YES"
-        puts $doxyFile "COMPACT_LATEX          = YES"
-        puts $doxyFile "PDF_HYPERLINKS         = YES"
-        puts $doxyFile "USE_PDFLATEX           = YES"
-        puts $doxyFile "LATEX_BATCHMODE        = YES"
-        puts $doxyFile "LATEX_OUTPUT           = latex"
-        puts $doxyFile "LATEX_CMD_NAME         = latex"
-        puts $doxyFile "MAKEINDEX_CMD_NAME     = makeindex"
-    }
-
-    close $doxyFile 
-}
-
-# Returns the relative path between two directories
-proc OverviewDoc_GetRelPath {targetFile currentpath} {
-  set cc [file split [file normalize $currentpath]]
-  set tt [file split [file normalize $targetFile]]
-  
-  if {![string equal [lindex $cc 0] [lindex $tt 0]]} {
-      # not on *n*x then
-      return -code error "$targetFile not on same volume as $currentpath"
-  }
-  while {[string equal [lindex $cc 0] [lindex $tt 0]] && [llength $cc] > 0} {
-      # discard matching components from the front
-      set cc [lreplace $cc 0 0]
-      set tt [lreplace $tt 0 0]
-  }
-  set prefix ""
-  if {[llength $cc] == 0} {
-      # just the file name, so targetFile is lower down (or in same place)
-      set prefix "."
-  }
-  # step up the tree
-  for {set i 0} {$i < [llength $cc]} {incr i} {
-      append prefix " .."
-  }
-  # stick it all together (the eval is to flatten the targetFile list)
-  return [eval file join $prefix $tt]
-}
-
-# Prints Help message
-proc OverviewDoc_PrintHelpMessage {} {
-    puts "\nUsage : occdoc \[-h\] \[-html\] \[-pdf\] \[-m=<list of files>\] \[-l=<document name>\] \[-v\] \[-s\]"
-    puts ""
-    puts " Options are : "
-    puts "    -html                  : To generate HTML files"
-    puts "                             (cannot be used with -pdf or -chm)"
-    puts "    -pdf                   : To generate PDF files"
-    puts "                             (cannot be used with -html or chm)"
-    puts "    -chm                   : To generate CHM files"
-    puts "                             (cannot be used with -html or pdf)"
-    puts "    -hhc                   : To define path to hhc - chm generator"
-    puts "                           : is used with just -chm option"
-    puts "    -m=<modules_list>      : Specifies list of documents to generate."
-    puts "                             If it is not specified, all files "
-    puts "                             mentioned in FILES.txt are processed."
-    puts "    -l=<document_name>     : Specifies the document caption "
-    puts "                             for a single document"
-    puts "    -h                     : Prints help message"
-    puts "    -v                     : Specifies the Verbose mode"
-    puts "                             (info on all script actions is shown)"
-    puts "    -s=<search_mode>       : Specifies the Search mode of HTML documents."
-    puts "                             Can be: none | local | server | external"
-    puts "                           : Can be used only with -html option"
-    puts "    -mathjax=<path>        : To use local or alternative copy of MathJax"
-}
-
-# Parses command line arguments
-proc OverviewDoc_ParseArguments {arguments} {
-    global args_names
-    global args_values
-    set args_names {}
-    array set args_values {}
-
-    foreach arg $arguments {
-        if {[regexp {^(-)[a-z]+$} $arg] == 1} {
-            set name [string range $arg 1 [string length $arg]-1]
-            lappend args_names $name
-            set args_values($name) "NULL"
-            continue
-        } elseif {[regexp {^(-)[a-z]+=.+$} $arg] == 1} {
-            set equal_symbol_position [string first "=" $arg]
-            set name [string range $arg 1 $equal_symbol_position-1]
-            lappend args_names $name
-            set value [string range $arg $equal_symbol_position+1 [string length $arguments]-1]
-            
-            # To parse a list of values for -m parameter
-            if { [string first "," $value] != -1 } {
-                set value [split $value ","];
-            }
-            set args_values($name) $value
-        } else {
-            puts "Error in argument $arg"
-            return 1
-        }
-    }
-    return 0
-}
-
-# Loads a list of docfiles from file FILES.txt
-proc OverviewDoc_LoadFilesList {} {
-
-    set INPUTDIR [file normalize [file dirname [info script]]]
-    
-    global available_docfiles
-    set available_docfiles {}
-
-    # Read data from file
-    if { [file exists "$INPUTDIR/FILES.txt"] == 1 } {
-        set FILE [open "$INPUTDIR/FILES.txt" r]
-        while {1} {
-            set line [string trim [gets $FILE]]
-
-            # trim possible comments starting with '#'
-            set line [regsub {\#.*} $line {}]
-
-            if {$line != ""} {
-              lappend available_docfiles $line
-            }
-
-            if {[eof $FILE]} {
-                close $FILE
-                break
-            }
-        }
-    } else {
-        return -1
-    }
-    return 0
-}
-
-# Writes new tex file for conversion from tex to pdf for a specific doc
-proc OverviewDoc_MakeRefmanTex {fileName latexDir docLabel verboseMode} {
-
-    if {$verboseMode == "YES"} {
-        puts "INFO: Making refman.tex file for $fileName"
-    }
-    set DOCNAME "$latexDir/refman.tex"
-    if {[file exists $DOCNAME] == 1} {
-        file delete -force $DOCNAME
-    }
-
-    set year [clock format [clock seconds] -format {%Y}]
-
-    set texfile [open $DOCNAME w]
-
-    puts $texfile "\\batchmode"
-    puts $texfile "\\nonstopmode"
-    puts $texfile "\\documentclass\[oneside\]{article}"
-    puts $texfile "\n% Packages required by doxygen"
-    puts $texfile "\\usepackage{calc}"
-    puts $texfile "\\usepackage{doxygen}"
-    puts $texfile "\\usepackage{graphicx}"
-    puts $texfile "\\usepackage\[utf8\]{inputenc}"
-    puts $texfile "\\usepackage{makeidx}"
-    puts $texfile "\\usepackage{multicol}"
-    puts $texfile "\\usepackage{multirow}"
-    puts $texfile "\\usepackage{textcomp}"
-    puts $texfile "\\usepackage{amsmath}"
-    puts $texfile "\\usepackage\[table\]{xcolor}"
-    puts $texfile "\\usepackage{indentfirst}"
-    puts $texfile ""
-    puts $texfile "% Font selection"
-    puts $texfile "\\usepackage\[T1\]{fontenc}"
-    puts $texfile "\\usepackage{mathptmx}"
-    puts $texfile "\\usepackage\[scaled=.90\]{helvet}"
-    puts $texfile "\\usepackage{courier}"
-    puts $texfile "\\usepackage{amssymb}"
-    puts $texfile "\\usepackage{sectsty}"
-    puts $texfile "\\renewcommand{\\familydefault}{\\sfdefault}"
-    puts $texfile "\\allsectionsfont{%"
-    puts $texfile "  \\fontseries{bc}\\selectfont%"
-    puts $texfile "  \\color{darkgray}%"
-    puts $texfile "}"
-    puts $texfile "\\renewcommand{\\DoxyLabelFont}{%"
-    puts $texfile "  \\fontseries{bc}\\selectfont%"
-    puts $texfile "  \\color{darkgray}%"
-    puts $texfile "}"
-    puts $texfile ""
-    puts $texfile "% Page & text layout"
-    puts $texfile "\\usepackage{geometry}"
-    puts $texfile "\\geometry{%"
-    puts $texfile "  a4paper,%"
-    puts $texfile "  top=2.5cm,%"
-    puts $texfile "  bottom=2.5cm,%"
-    puts $texfile "  left=2.5cm,%"
-    puts $texfile "  right=2.5cm%"
-    puts $texfile "}"
-    puts $texfile "\\tolerance=750"
-    puts $texfile "\\hfuzz=15pt"
-    puts $texfile "\\hbadness=750"
-    puts $texfile "\\setlength{\\emergencystretch}{15pt}"
-    puts $texfile "\\setlength{\\parindent}{0cm}";#0.75cm
-    puts $texfile "\\setlength{\\parskip}{0.2cm}"; #0.2
-    puts $texfile "\\makeatletter"
-    puts $texfile "\\renewcommand{\\paragraph}{%"
-    puts $texfile "  \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{%"
-    puts $texfile "\\normalfont\\normalsize\\bfseries\\SS@parafont%"
-    puts $texfile "  }%"
-    puts $texfile "}"
-    puts $texfile "\\renewcommand{\\subparagraph}{%"
-    puts $texfile "  \\@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{%"
-    puts $texfile "\\normalfont\\normalsize\\bfseries\\SS@subparafont%"
-    puts $texfile "  }%"
-    puts $texfile "}"
-    puts $texfile "\\makeatother"
-    puts $texfile ""
-    puts $texfile "% Headers & footers"
-    puts $texfile "\\usepackage{fancyhdr}"
-    puts $texfile "\\pagestyle{fancyplain}"
-    puts $texfile "\\fancyhead\[LE\]{\\fancyplain{}{\\bfseries\\thepage}}"
-    puts $texfile "\\fancyhead\[CE\]{\\fancyplain{}{}}"
-    puts $texfile "\\fancyhead\[RE\]{\\fancyplain{}{\\bfseries\\leftmark}}"
-    puts $texfile "\\fancyhead\[LO\]{\\fancyplain{}{\\bfseries\\rightmark}}"
-    puts $texfile "\\fancyhead\[CO\]{\\fancyplain{}{}}"
-    puts $texfile "\\fancyhead\[RO\]{\\fancyplain{}{\\bfseries\\thepage}}"
-    puts $texfile "\\fancyfoot\[LE\]{\\fancyplain{}{}}"
-    puts $texfile "\\fancyfoot\[CE\]{\\fancyplain{}{}}"
-    puts $texfile "\\fancyfoot\[RE\]{\\fancyplain{}{\\bfseries\\scriptsize Copyright (c) Open CASCADE $year}}"
-    puts $texfile "\\fancyfoot\[LO\]{\\fancyplain{}{\\bfseries\\scriptsize Copyright (c) Open CASCADE $year}}"
-    puts $texfile "\\fancyfoot\[CO\]{\\fancyplain{}{}}"
-    puts $texfile "\\fancyfoot\[RO\]{\\fancyplain{}{}}"
-    puts $texfile "\\renewcommand{\\footrulewidth}{0.4pt}"
-    puts $texfile "\\renewcommand{\\sectionmark}\[1\]{%"
-    puts $texfile "  \\markright{\\thesection\\ #1}%"
-    puts $texfile "}"
-    puts $texfile ""
-    puts $texfile "% Indices & bibliography"
-    puts $texfile "\\usepackage{natbib}"
-    puts $texfile "\\usepackage\[titles\]{tocloft}"
-    puts $texfile "\\renewcommand{\\cftsecleader}{\\cftdotfill{\\cftdotsep}}"
-    puts $texfile "\\setcounter{tocdepth}{3}"
-    puts $texfile "\\setcounter{secnumdepth}{5}"
-    puts $texfile "\\makeindex"
-    puts $texfile ""
-    puts $texfile "% Hyperlinks (required, but should be loaded last)"
-    puts $texfile "\\usepackage{ifpdf}"
-    puts $texfile "\\ifpdf"
-    puts $texfile "  \\usepackage\[pdftex,pagebackref=true\]{hyperref}"
-    puts $texfile "\\else"
-    puts $texfile "  \\usepackage\[ps2pdf,pagebackref=true\]{hyperref}"
-    puts $texfile "\\fi"
-    puts $texfile "\\hypersetup{%"
-    puts $texfile "  colorlinks=true,%"
-    puts $texfile "  linkcolor=black,%"
-    puts $texfile "  citecolor=black,%"
-    puts $texfile "  urlcolor=blue,%"
-    puts $texfile "  unicode%"
-    puts $texfile "}"
-    puts $texfile ""
-    puts $texfile "% Custom commands"
-    puts $texfile "\\newcommand{\\clearemptydoublepage}{%"
-    puts $texfile "  \\newpage{\\pagestyle{empty}\\cleardoublepage}%"
-    puts $texfile "}"
-    puts $texfile "\n"
-    puts $texfile "%===== C O N T E N T S =====\n"
-    puts $texfile "\\begin{document}"
-    puts $texfile ""
-    puts $texfile "% Titlepage & ToC"
-    puts $texfile "\\hypersetup{pageanchor=false}"
-    puts $texfile "\\pagenumbering{roman}"
-    puts $texfile "\\begin{titlepage}"
-    puts $texfile "\\vspace*{7cm}"
-    puts $texfile "\\begin{center}%"
-    puts $texfile "\\includegraphics\[width=0.75\\textwidth, height=0.2\\textheight\]{../../../dox/resources/occt_logo.png}\\\\"; #\\\\\\\\
-    puts $texfile "{\\Large Open C\\-A\\-S\\-C\\-A\\-D\\-E Technology \\\\\[1ex\]\\Large [OverviewDoc_DetectCasVersion $latexDir/../../../] }\\\\"
-    puts $texfile "\\vspace*{1cm}"
-    puts $texfile "{\\Large $docLabel}\\\\"
-    puts $texfile "\\vspace*{1cm}"
-#    puts $texfile "{\\large Generated by Doxygen 1.8.4}\\\\"
-    puts $texfile "\\vspace*{0.5cm}"
-    puts $texfile "{\\small \\today}\\"
-    puts $texfile "\\end{center}"
-    puts $texfile "\\end{titlepage}"
-    puts $texfile "\\clearpage"
-    puts $texfile "\\pagenumbering{roman}"
-    puts $texfile "\\tableofcontents"
-    puts $texfile "\\newpage"
-    puts $texfile "\\pagenumbering{arabic}"
-    puts $texfile "\\hypersetup{pageanchor=true}"
-    puts $texfile ""
-    puts $texfile "\\let\\stdsection\\section"
-    puts $texfile "  \\renewcommand\\section{\\pagebreak\\stdsection}"
-    puts $texfile "\\hypertarget{$fileName}{}"
-    puts $texfile "\\input{$fileName}"
-    puts $texfile ""
-    puts $texfile "% Index"
-    puts $texfile "\\newpage"
-    puts $texfile "\\phantomsection"
-    puts $texfile "\\addcontentsline{toc}{part}{Index}"
-    puts $texfile "\\printindex\n"
-    puts $texfile "\\end{document}"
-
-    close $texfile
-}
-
-# Postprocesses generated TeX files
-proc OverviewDoc_ProcessTex {{texFiles {}} {latexDir} verboseMode} {
-
-    foreach TEX $texFiles {
-        if {$verboseMode == "YES"} {
-            puts "INFO: Preprocessing file $TEX"
-        }
-
-         if {![file exists $TEX]} {
-          puts "file $TEX doesn't exist"
-          return
-        }
-
-        set IN_F  [open "$TEX" r]
-        set TMPFILENAME "$latexDir/temp.tex"
-
-        set OUT_F [open $TMPFILENAME w]
-        
-        while {1} {
-            set line [gets $IN_F]
-            if { [string first "\\includegraphics" $line] != -1 } {
-                # replace svg extension by pdf
-                set line [regsub {[.]svg} $line ".pdf"]
-                # Center images in TeX files
-                set line "\\begin{center}\n $line\n\\end{center}"
-            } elseif { [string first "\\subsection" $line] != -1 } {
-                # Replace \subsection with \section tag
-                regsub -all "\\\\subsection" $line "\\\\section" line
-            } elseif { [string first "\\subsubsection" $line] != -1 } {
-                # Replace \subsubsection with \subsection tag
-                regsub -all "\\\\subsubsection" $line "\\\\subsection" line
-            } elseif { [string first "\\paragraph" $line] != -1 } {
-                # Replace \paragraph with \subsubsection tag
-                regsub -all "\\\\paragraph" $line "\\\\subsubsection" line
-            }
-            puts $OUT_F $line
-            
-            if {[eof $IN_F]} {
-                close $IN_F
-                close $OUT_F
-                break
-            }
-        }
-        file delete -force $TEX
-        file rename $TMPFILENAME $TEX
-    }
-}
-
-# Convert SVG files to PDF format to allow including them to PDF
-# (requires InkScape to be in PATH)
-proc OverviewDoc_ProcessSvg {latexDir verboseMode} {
-
-    foreach file [glob -nocomplain $latexDir/*.svg] {
-        if {$verboseMode == "YES"} {
-            puts "INFO: Converting file $file"
-        }
-
-        set pdffile "[file rootname $file].pdf"
-        if { [catch {exec inkscape -z -D --file=$file --export-pdf=$pdffile} res] } {
-            puts "Error: $res"
-            puts "Conversion failed; check that Inkscape is in PATH!"
-            puts "SVG images will be lost in PDF documents"
-            return
-        }
-    }
-}
-
-# Main procedure for documents compilation
-proc OverviewDoc_Main { {docfiles {}} generatorMode docLabel verboseMode searchMode hhcPath mathjaxLocation} {
-
-    set INDIR      [file normalize [file dirname [info script]]]
-    set CASROOT    [file normalize [file dirname "$INDIR/../../"]]
-    set OUTDIR     $CASROOT/doc
-    set PDFDIR     $OUTDIR/overview/pdf
-    set HTMLDIR    $OUTDIR/overview/html
-    set LATEXDIR   $OUTDIR/overview/latex
-    set TAGFILEDIR $OUTDIR/refman
-    set DOXYFILE   $OUTDIR/OCCT.cfg
-
-    # Create or clean the output folders
-    if {[file exists $OUTDIR] == 0} {
-        file mkdir $OUTDIR
-    } 
-    if {[file exists $HTMLDIR] == 0} {
-        file mkdir $HTMLDIR
-    }
-    if {[file exists $PDFDIR] == 0} {
-        file mkdir $PDFDIR
-    }
-    
-    if {[file exists $LATEXDIR]} {
-      #file delete {*}[glob -nocomplain $LATEXDIR/*.*]
-      file delete -force $LATEXDIR
-    }
-    file mkdir $LATEXDIR
-    
-    # is MathJax HLink?
-    set mathjax_relative_location $mathjaxLocation
-    if { [file isdirectory "$mathjaxLocation"] == 1 } {
-      if { $generatorMode == "HTML_ONLY"} {
-        # related path
-        set mathjax_relative_location [relativePath $HTMLDIR $mathjaxLocation]
-      } elseif { $generatorMode == "CHM_ONLY"} {
-        # absolute path
-        set mathjax_relative_location [file normalize $mathjaxLocation]
-      }
-    }
-
-    # Run tools to compile documents
-    puts "[clock format [clock seconds] -format {%Y-%m-%d %H:%M}] Generating Doxyfile..."
-    
-    OverviewDoc_MakeDoxyfile $CASROOT "$OUTDIR/overview" $TAGFILEDIR $DOXYFILE $generatorMode $docfiles $verboseMode $searchMode $hhcPath $mathjax_relative_location
-
-    # Run doxygen tool
-    set starttimestamp [clock format [clock seconds] -format {%Y-%m-%d %H:%M}]
-    if { $generatorMode == "HTML_ONLY"} {
-      puts "$starttimestamp Generating HTML files..."
-    } elseif { $generatorMode == "CHM_ONLY" } {
-      puts "$starttimestamp Generating CHM file..."
-    }
-    set RESULT [catch {exec doxygen $DOXYFILE > $OUTDIR/doxygen_out.log} DOX_ERROR] 
-    if {$RESULT != 0} {
-        if {[llength [split $DOX_ERROR "\n"]] > 1} {
-            if {$verboseMode == "YES"} {
-                puts "Error running Doxygen; see log in\n$OUTDIR/doxygen_warnings_and_errors.log"
-            }
-            set DOX_ERROR_FILE [open "$OUTDIR/doxygen_warnings_and_errors.log" "w"]
-            puts $DOX_ERROR_FILE $DOX_ERROR
-            close $DOX_ERROR_FILE
-        } else {
-            puts $DOX_ERROR
-        }
-    }
-    # Close the Doxygen application
-    after 300
-
-    # Start PDF generation routine
-    if { $generatorMode == "PDF_ONLY" } {
-        puts "[clock format [clock seconds] -format {%Y-%m-%d %H:%M}] Generating PDF files..."
-
-        set OS $::tcl_platform(platform)
-        if { $OS == "unix" } {
-            set PREFIX ".sh"
-        } elseif { $OS == "windows" } {
-            set PREFIX ".bat"
-        }
-
-        # Prepare a list of TeX files, generated by Doxygen
-        cd $LATEXDIR
-        
-        set TEXFILES [glob $LATEXDIR -type f -directory $LATEXDIR -tails "*.tex" ]
-        set REFMAN_IDX [lsearch $TEXFILES "refman.tex"]
-        set TEXFILES [lreplace $TEXFILES $REFMAN_IDX $REFMAN_IDX]
-
-
-        set IDX [lsearch $TEXFILES "$LATEXDIR"]
-        while { $IDX != -1} {
-            set TEXFILES [lreplace $TEXFILES $IDX $IDX]
-            set IDX [lsearch $TEXFILES "$LATEXDIR"]
-        }
-
-        if {$verboseMode == "YES"} {
-            puts "Preprocessing generated TeX files..."
-        }
-        OverviewDoc_ProcessTex $TEXFILES $LATEXDIR $verboseMode
-        
-        if {$verboseMode == "YES"} {
-            puts "Converting SVG images to PNG format..."
-        }
-        OverviewDoc_ProcessSvg $LATEXDIR $verboseMode
-        
-        if {$verboseMode == "YES"} {
-            puts "Generating PDF files from TeX files..."
-        }
-        foreach TEX $TEXFILES {
-            # Rewrite existing REFMAN.tex file...
-            set TEX [string range $TEX 0 [ expr "[string length $TEX] - 5"]]
-            OverviewDoc_MakeRefmanTex $TEX $LATEXDIR $docLabel $verboseMode
-            
-            if {$verboseMode == "YES"} {
-                puts "INFO: Generating PDF file from $TEX"
-                # ...and use it to generate PDF from TeX...
-                puts "Executing $LATEXDIR/make$PREFIX..."
-            }
-            set RESULT [catch {eval exec [auto_execok $LATEXDIR/make$PREFIX] > "$OUTDIR/pdflatex_out.log"} LaTeX_ERROR]
-            if {$RESULT != 0} {
-                if {[llength [split $LaTeX_ERROR "\n"]] > 1} {
-                    if {$verboseMode == "YES"} {
-                        puts "Errors running Latex; see log in \n$OUTDIR/pdflatex_warnings_and_errors.log"
-                    }
-                    set LaTeX_ERROR_FILE [open "$OUTDIR/pdflatex_warnings_and_errors.log" "w"]
-                    puts $LaTeX_ERROR_FILE $LaTeX_ERROR
-                    close $LaTeX_ERROR_FILE
-                } else {
-                    puts $DOX_ERROR
-                }
-            }
-
-            # ...and place it to the specific folder
-            if { [file exists $PDFDIR/$TEX.pdf] == 1 } {
-                file delete -force $PDFDIR/$TEX.pdf
-            }
-            
-            if {![file exists "$LATEXDIR/refman.pdf"]} {
-              puts "Error: Latex failed to create $LATEXDIR/refman.pdf"
-              return
-            }
-            
-            file rename $LATEXDIR/refman.pdf "$PDFDIR/$TEX.pdf"
-        }
-    }
-
-    cd $INDIR
-    puts "[clock format [clock seconds] -format {%Y-%m-%d %H:%M}] Generation completed"
-    if { $generatorMode == "HTML_ONLY" } {
-        puts "View generated HTML documentation by opening:"
-        puts "$OUTDIR/overview/html/index.html"
-    }
-    if { $generatorMode == "PDF_ONLY" } {
-        puts "PDF files are generated in folder:"
-        puts "$OUTDIR/overview/pdf"
-    }
-}
-
-proc relativePath {thePathFrom thePathTo} {
-  if { [file isdirectory "$thePathFrom"] == 0 } {
-    return ""
-  }
-
-  set aPathFrom [file normalize "$thePathFrom"]
-  set aPathTo   [file normalize "$thePathTo"]
-
-  set aCutedPathFrom "${aPathFrom}/dummy"
-  set aRelatedDeepPath ""
-
-  while { "$aCutedPathFrom" != [file normalize "$aCutedPathFrom/.."] } {
-    set aCutedPathFrom [file normalize "$aCutedPathFrom/.."]
-    # does aPathTo contain aCutedPathFrom?
-    regsub -all $aCutedPathFrom $aPathTo "" aPathFromAfterCut
-    if { "$aPathFromAfterCut" != "$aPathTo" } { # if so
-      if { "$aCutedPathFrom" == "$aPathFrom" } { # just go higher, for example, ./somefolder/someotherfolder
-        set aPathTo ".${aPathTo}"
-      } elseif { "$aCutedPathFrom" == "$aPathTo" } { # remove the last "/"
-        set aRelatedDeepPath [string replace $aRelatedDeepPath end end ""]
-      }
-      regsub -all $aCutedPathFrom $aPathTo $aRelatedDeepPath aPathToAfterCut
-      regsub -all "//" $aPathToAfterCut "/" aPathToAfterCut
-      return $aPathToAfterCut
-    }
-    set aRelatedDeepPath "$aRelatedDeepPath../"
-
-  }
-
-  return $thePathTo
-}
-
-# A command for User Documentation compilation
-proc occdoc {args} {
-    # Programm options
-    set GEN_MODE    "HTML_ONLY"
-    
-    set DOCFILES  {}
-    set DOCLABEL    "Default OCCT Document"
-    set VERB_MODE   "NO"
-    set SEARCH_MODE "none"
-    set hhcPath ""
-
-    set mathjax_location "http://cdn.mathjax.org/mathjax/latest"
-    set mathjax_js_name "MathJax.js"
-
-    global available_docfiles
-    global tcl_platform
-    global args_names
-    global args_values
-    global env
-
-    # Load list of docfiles
-    if { [OverviewDoc_LoadFilesList] != 0 } {
-        puts "ERROR: File FILES.txt was not found"
-        return
-    }
-
-    # Parse CL arguments
-    if {[OverviewDoc_ParseArguments $args] == 1} {
-        return
-    }
-
-    foreach arg_n $args_names {
-    if {$arg_n == "h"} {
-      OverviewDoc_PrintHelpMessage
-      return
-    } elseif {$arg_n == "html"} {
-        set GEN_MODE "HTML_ONLY"
-    } elseif {$arg_n == "chm"} {
-        set GEN_MODE "CHM_ONLY"
-
-        if {"$tcl_platform(platform)" == "windows" && [lsearch $args_names hhc] == -1} {
-        if { [info exist env(ProgramFiles\(x86\))] } {
-          set hhcPath "$env(ProgramFiles\(x86\))\\HTML Help Workshop\\hhc.exe"
-          puts "Info: hhc found: $hhcPath"
-        } elseif { [info exist env(ProgramFiles)] } {
-            set hhcPath "$env(ProgramFiles)\\HTML Help Workshop\\hhc.exe"
-            puts "Info: hhc found: $hhcPath"
-        }
-        
-        if { ! [file exists $hhcPath] } {
-          puts "Error: HTML Help Compiler is not found in standard location [file dirname $hhcPath]; use option -hhc"
-          return
-        }
-      }
-
-    } elseif {$arg_n == "hhc"} {
-      global tcl_platform
-      if { $tcl_platform(platform) != "windows" } {
-        continue
-      }
-
-      if {$args_values(hhc) != "NULL"} {
-        set hhcPath $args_values(hhc)
-        if { [file isdirectory $hhcPath] } { 
-          set hhcPath [file join ${hhcPath} hhc.exe]
-        }
-        if { ! [file exists $hhcPath] } {
-          puts "Error: HTML Help Compiler is not found in $hhcPath"
-          return
-        }
-      } else {
-        puts "Error in argument hhc"
-        return
-      }
-
-    } elseif {$arg_n == "pdf"} {
-        set GEN_MODE "PDF_ONLY"
-    } elseif {$arg_n == "v"} {
-        set VERB_MODE "YES"
-    } elseif {$arg_n == "m"} {
-      if {$args_values(m) != "NULL"} {
-        set DOCFILES $args_values(m)
-      } else {
-        puts "Error in argument m"
-        return
-      }
-
-      # Check if all chosen docfiles are correct
-      foreach docfile $DOCFILES {
-        if { [lsearch $available_docfiles $docfile] == -1 } {
-          puts "File \"$docfile\" is not presented in the list of available docfiles"
-          puts "Please, specify the correct docfile name"
-          return
-        } else {
-          puts "File $docfile is presented in FILES.TXT"
-        }
-      }
-    } elseif {$arg_n == "l"} {
-      if { [llength $DOCFILES] <= 1 } {
-        if {$args_values(l) != "NULL"} {
-          set DOCLABEL $args_values(l)
-        } else {
-          puts "Error in argument l"
-          return
-        }
-      }
-    } elseif {$arg_n == "s"} {
-      if {$args_values(s) != "NULL"} {
-        set SEARCH_MODE $args_values(s)
-      } else {
-        puts "Error in argument s"
-        return
-      }
-    } elseif {$arg_n == "mathjax"} {
-      if {![info exists args_values(pdf)]} {
-        set possible_mathjax_loc $args_values(mathjax)
-        if {[file exist [file join $possible_mathjax_loc $mathjax_js_name]]} {
-          set mathjax_location $args_values(mathjax)
-          puts "$mathjax_location"
-        } else {
-          puts "Warning: $mathjax_js_name isn't found in $possible_mathjax_loc."
-          puts "         MathJax will be used from $mathjax_location"
-        }
-      } else {
-        puts "Info: MathJax is not used with pdf and will be ignored"
-      }
-    } else {
-      puts "\nWrong argument: $arg_n"
-      OverviewDoc_PrintHelpMessage
-      return
-    }
-  }
-
-  # Specify verbose mode
-  if { $GEN_MODE != "PDF_ONLY" && [llength $DOCFILES] > 1 } {
-    set DOCLABEL ""
-  }
-    
-  # If we don't specify list for docfiles with -m argument,
-  # we assume that we have to generate all docfiles
-  if { [llength $DOCFILES] == 0 } {
-    set DOCFILES $available_docfiles
-  }
-
-  # Start main activities
-  OverviewDoc_Main $DOCFILES $GEN_MODE $DOCLABEL $VERB_MODE $SEARCH_MODE $hhcPath $mathjax_location
-}
index f8cf55f..568c343 100644 (file)
@@ -171,7 +171,7 @@ OCCT documentation is provided in several forms:
   Reference documentation is presented in **Modules --> Toolkits --> Packages --> Classes** 
   logic structure with cross-references to all OCCT classes and complete in-browser search by all classes.
 
   Reference documentation is presented in **Modules --> Toolkits --> Packages --> Classes** 
   logic structure with cross-references to all OCCT classes and complete in-browser search by all classes.
 
-See @ref dev_guides__documentation "OCCT Documentation Guide" for details on OCCT documentation system.
+See @ref occt_dev_guides__documentation "OCCT Documentation Guide" for details on OCCT documentation system.
 
 **Generation of HTML documentation**
 
 
 **Generation of HTML documentation**
 
@@ -305,7 +305,7 @@ The following table lists graphic cards tested to work with OCCT.
 
 In most cases you need to rebuild OCCT on your platform (OS, compiler) before
 using it in your project, to ensure binary compatibility.
 
 In most cases you need to rebuild OCCT on your platform (OS, compiler) before
 using it in your project, to ensure binary compatibility.
-See @ref dev_guides__building for instructions on
+See @ref occt_dev_guides__building for instructions on
 building OCCT from sources on supported platforms.
 
 @subsection OCCT_OVW_SECTION_4_1 Using Windows installer
 building OCCT from sources on supported platforms.
 
 @subsection OCCT_OVW_SECTION_4_1 Using Windows installer
@@ -456,10 +456,10 @@ Declaration of available plug-ins is done through special resource file(s).
 The pload command loads the plug-in in accordance with 
 the specified resource file and activates the commands implemented in the plug-in.
 
 The pload command loads the plug-in in accordance with 
 the specified resource file and activates the commands implemented in the plug-in.
 
-The whole process of using the plug-in mechanism as well as the instructions for extending Test Harness is described in the @ref user_guides__test_harness.
+The whole process of using the plug-in mechanism as well as the instructions for extending Test Harness is described in the @ref occt_user_guides__test_harness.
 
 Draw Test Harness provides an environment for OCCT automated testing system. 
 
 Draw Test Harness provides an environment for OCCT automated testing system. 
-Please, consult its @ref dev_guides__tests "Automated Testing System" for details.
+Please, consult its @ref occt_dev_guides__tests "Automated Testing System" for details.
 
 Remarks:
 
 
 Remarks:
 
@@ -507,17 +507,20 @@ Type pload ALL
 
 1. Type *cd ../..* to return to the root directory
 2. Type *cd samples/tcl* to reach the *DrawResources* directory
 
 1. Type *cd ../..* to return to the root directory
 2. Type *cd samples/tcl* to reach the *DrawResources* directory
-3. Type *source <demo_file>* to run the demonstration file provided with Open CASCADE. The following demonstration files are available:
-  * bottle.tcl
-  * challenge.tcl  
-  * DataExchangeDemo.tcl
-  * ModelingDemo.tcl
-  * VisualizationDemo.tcl
+3. Type *source \<demo_file\>* to run the demonstration file provided with Open CASCADE. The following demonstration files are available:
+  * DataExchangeDemo.tcl: demonstrates sample sequence of operations with writing and reading IGES file
+  * ModelingDemo.tcl: demonstrates creation of simple shape and displaying it in HLR mode
+  * VisualizationDemo.tcl: demonstrates use of 3d viewer
+  * challenge.tcl: creates solid shape looking like abbreviation "CAD"
+  * bottle.tcl: creates bottle as in OCCT Tutorial
+  * drill.tcl: creates twist drill bit shape
+  * mill.tcl: creates milling cutter shape
+  * raytrace.tcl: demonstrates use of ray tracing display in 3d viewer
 
 **Getting Help**
 
 1. Type *help* to see all available commands
 
 **Getting Help**
 
 1. Type *help* to see all available commands
-2. Type *help <command_name>* to find out the arguments for a given command
+2. Type *help \<command_name\>* to find out the arguments for a given command
 
 @subsection OCCT_OVW_SECTION_7_3 Programming Samples
 
 
 @subsection OCCT_OVW_SECTION_7_3 Programming Samples
 
@@ -574,7 +577,7 @@ From the viewpoint of programming, Open CASCADE Technology is designed
 to enhance user's C++ tools with high performance modeling classes, methods and functions. 
 The combination of these resources allows creating substantial applications.
 
 to enhance user's C++ tools with high performance modeling classes, methods and functions. 
 The combination of these resources allows creating substantial applications.
 
-**See also:** @ref tutorial "OCCT Tutorial" 
+**See also:** @ref occt__tutorial "OCCT Tutorial" 
 
  Voxel
 ------
 
  Voxel
 ------
diff --git a/dox/overview/overview.md b/dox/overview/overview.md
new file mode 100644 (file)
index 0000000..568c343
--- /dev/null
@@ -0,0 +1,616 @@
+Overview {#mainpage}
+========
+
+@tableofcontents
+
+@section OCCT_OVW_SECTION_1 Welcome
+
+Welcome to Open CASCADE Technology (OCCT), a software development platform 
+providing services for 3D surface and solid modeling, CAD data exchange, and 
+visualization. Most of OCCT functionality is available in the form of C++ 
+libraries. OCCT can be best applied in development of software dealing with 3D 
+modeling (CAD), manufacturing / measuring (CAM) or numerical simulation (CAE).
+
+@htmlonly<center>@endhtmlonly 
+http://www.opencascade.org
+@image html /resources/occt_logo.png
+@image latex /resources/occt_logo.png
+@htmlonly</center>@endhtmlonly
+
+@section OCCT_OVW_SECTION_2 Copyrights
+
+Open CASCADE Technology and all materials, including this documentation, is 
+Copyright (c) 1999-2013 by OPEN CASCADE S.A.S. All rights reserved.
+
+@htmlonly<center>@endhtmlonly
+http://www.opencascade.com
+@image html /resources/occ_logo.png
+@image latex /resources/occ_logo.png
+@htmlonly</center>@endhtmlonly
+
+ License
+--------
+
+Open CASCADE Technology is free software; you can redistribute it and / or 
+modify it under the terms of the 
+@ref license_lgpl_21 "GNU Lesser General Public License (LGPL) version 2.1", 
+with additional @ref occt_lgpl_exception "exception".
+
+Alternatively, Open CASCADE Technology may be used under the terms of Open 
+CASCADE commercial license or contractual agreement.
+
+Note that Open CASCADE Technology is provided on an "AS IS" basis, WITHOUT 
+WARRANTY OF ANY KIND. The entire risk related to any use of the OCCT code and 
+materials is on you. See the @ref occt_public_license "license" text for formal 
+disclaimer.
+
+ Trademark information
+----------------------
+
+You are hereby informed that all software is a property of its respective authors and is protected by 
+international and domestic laws on intellectual property and trademarks. 
+Should you need further information, please directly contact the authors.
+
+**CAS.CADE** and **Open CASCADE** are registered trademarks of 
+OPEN CASCADE S.A.S.
+
+**Linux** is a registered trademark of Linus Torvalds.
+
+**Windows** is a registered trademark of Microsoft Corporation in the United States and other countries.
+
+**Mac** and the Mac logo, **OpenCL** and the OpenCL logo, are trademarks of 
+Apple Inc., registered in the U.S. and other countries.
+
+ Acknowledgements
+------------------
+
+The following parties are acknowledged for producing tools which are used within 
+Open CASCADE Technology libraries or for release preparation.
+
+You are hereby informed that all rights to the software listed below belong to its respective 
+authors and such software may not be freely available and/or be free of charge for any kind 
+of use or purpose. We strongly recommend that you carefully read the license of these products 
+and, in case you need any further information, directly contact their authors.
+
+**Qt** is a cross-platform application framework that is widely used for developing application software 
+with graphical user interface (GUI). Qt is free and open source software distributed under 
+the terms of the GNU Lesser General Public License. In OCCT Qt is used for programming samples. 
+If you need further information on Qt, please, refer to Qt Homepage (http://qt.digia.com).
+
+**Tcl** is a high-level programming language. Tk is a graphical user interface (GUI) toolkit, 
+with buttons, menus, listboxes, scrollbars, and so on. Taken together Tcl and Tk provide a solution 
+to develop cross-platform graphical user interfaces with a native look and feel. Tcl/Tk is under copyright by 
+Scriptics Corp., Sun Microsystems, and other companies. However, Tcl/Tk is an open source, and 
+the copyright allows you to use, modify, and redistribute Tcl/Tk for any purpose, without an 
+explicit license agreement and without paying any license fees or royalties. 
+To use Tcl/Tk, please refer to the Licensing Terms (http://www.tcl.tk/software/tcltk/license.html).
+
+**Robert Boehne** has developed **GNU Autoconf**, **Automake** and **Libtool** scripts and makefiles 
+for the Open CASCADE project http://sourceforge.net/projects/autoopencas/, 
+which became an initial groundwork for the build scripts based on respective GNU tools 
+(autoconf, automake and libtool) in Open CASCADE Technology version 4.0. 
+These scripts are now maintained by the OPEN CASCADE company.
+
+**GL2PS** is developed by Christophe Geuzaine and others. It is optionally used by OCCT to
+export content of OpenGL scene to vector graphics formats (PS, PDF, EMF, SVG). 
+The library is licensed under GL2PS LICENSE http://www.geuz.org/gl2ps/COPYING.GL2PS Version 2, November 2003.
+
+**FreeType 2** is developed by Antoine Leca, David Turner, Werner Lemberg and others. 
+It is a software font engine that is designed to be small, efficient, highly customizable and 
+portable while capable of producing high-quality output (glyph images). This product 
+can be used in graphic libraries, display servers, font conversion tools, 
+text image generation tools, and many other products.
+
+FreeType 2 is released under two open-source licenses: BSD-like FreeType License and the GPL.
+
+**Intel(R) Threading Building Blocks (TBB)** offers a rich and complete approach to expressing parallelism in a C++ program. 
+It is a library that helps you to take advantage of multi-core processor performance without having to be a threading expert. 
+Threading Building Blocks is not just a threads-replacement library. It represents a higher-level, task-based parallelism that 
+abstracts platform details and threading mechanisms for scalability and performance. 
+TBB is available under GPLv2 license with the runtime exception.
+
+Open CASCADE Technology WOK module on Windows also makes use of LGPL-licensed C routines **regexp** 
+and **getopt**, taken from GNU C library.
+
+**OpenGL** is an industry standard API for 3D graphics used by OCCT for 
+implementation of 3D viewer. OpenGL specification is developed by the
+Khronos group, http://www.khronos.org/opengl/. OCCT code includes header 
+file *glext.h* obtained from Khronos web site.
+
+**OpenCL** (Open Computing Language) is open, royalty-free standard for 
+cross-platform, parallel programming of modern processors, optionally used by 
+OCCT for ray tracing. OpenCL specification is developed by the
+Khronos group, http://www.khronos.org/opencl/. The implementations of OpenCL 
+are available from Apple, AMD, NVIDIA, Intel, and other vendors. 
+**OpenCL Installable Client Driver (ICD) Loader** is a library provided by
+Khronos group which allows dispatching OpenCL calls to underlying 
+implementation.
+
+**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 
+for automatic creation of Technical Documentation from C++ header files. 
+If you need further information on Doxygen, please refer to http://www.stack.nl/~dimitri/doxygen/index.html.
+
+**Graphviz** is open source graph visualization software developed by John Ellson, Emden Gansner, Yifan Hu and Arif Bilgin. 
+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).
+
+**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. 
+It is licensed under Inno Setup License (http://www.jrsoftware.org/files/is/license.txt).
+
+**FreeImage** is an Open Source library supporting popular graphics image formats, such as PNG, BMP, JPEG, TIFF, 
+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).
+
+**MikTEX** is up-to-date implementation of TeX/LaTeX and related programs for Windows. It is used 
+for generation of User and Developer Guides in PDF format. See http://miktex.org for information
+on this tool.
+
+Adobe Systems, Inc. provides **Adobe Reader**, which can be used to view files in Portable Document Format (PDF). 
+
+@section OCCT_OVW_SECTION_3 Documentation
+
+OCCT documentation is provided in several forms:
+
+- This overview provides general description of OCCT structure, functionality, modules, and features. 
+  It is available in HTML format (generated by Doxygen) and includes User and Developer Guides.
+  The sources of this documentation are contained in **dox** subdirectory of OCCT sources 
+  (plain text format is used, with mixed MarkDown / Doxygen syntax mark-up).
+
+- User and Developer Guides describing in details OCCT modules and development tools are also available in 
+  Adobe Portable Document Format (PDF). To read this format, you need Adobe Acrobat Reader, 
+  which is a freeware and can be downloaded from the Adobe site. 
+
+- Full reference documentation covering all OCCT classes generated automatically by Doxygen 
+  software is provided in HTML format, in a separate package. 
+  Reference documentation is presented in **Modules --> Toolkits --> Packages --> Classes** 
+  logic structure with cross-references to all OCCT classes and complete in-browser search by all classes.
+
+See @ref occt_dev_guides__documentation "OCCT Documentation Guide" for details on OCCT documentation system.
+
+**Generation of HTML documentation**
+
+To generate HTML documentation from sources contained in *dox* subdirectory, 
+you need to have Tcl and Doxygen 1.8.4 (or above) installed on your system.
+
+In Tcl prompt, cd to OCCT root folder and run 
+
+    tclsh> source dox/start.tcl
+
+On Windows you can also run batch script **gendoc.bat**.
+
+
+**Generation of reference documentation**
+
+Reference documentation can be generated with help of WOK tool that 
+is available for download from www.opencascade.org and dev.opencascade.org sites.
+
+Prerequisites:
+
+  * Doxygen version 1.8.4 or higher
+  * Graphviz version 2.28.0 or higher
+
+Run WOK (cd \<WOK_INSTALL_DIR\>/site folder):
+
+* Using WOK TCL shell:
+      > wok_tclsh.sh
+
+* Using Emacs editor:
+      > wok_emacs.sh
+
+In the WOK prompt, step into your workbench:
+
+      > wokcd <your workbench>
+
+In your workbench, use **wgendoc** command with –h argument to get information about arguments of **wgendoc** command:
+
+      > wgendoc -h
+
+then run **wgendoc** command with required arguments, for instance:
+
+      > wgendoc -output=d:/occt/doc {-m=Draw Visualization}
+
+@section OCCT_OVW_SECTION_5 Requirements
+
+Open CASCADE Technology is designed to be highly portable and is known to 
+work on wide range of platforms (UNIX, Linux, Windows, Mac OS X). 
+Current version is officially certified on Windows (IA-32 and x86-64), 
+Linux (x86-64) and MAC OS X (x86-64) platforms. 
+
+The tables below describe the recommended hardware and software configurations
+for which OCCT is certified to work.
+
+@subsection OCCT_OVW_SECTION_5_1 Linux
+
+| Operating System  | Mandriva 2010, CentOS 5.5, CentOS 6.3, Fedora 17, Fedora 18, Ubuntu-1304, Debian 6.0\*  |
+| ----- | ----- |
+| Minimum memory    | 512 MB, 1 GB recommended |
+| Free disk space (complete installation) | 600 MB approx. |
+| Video card   | See \ref overview_req_graphics |
+| Graphic library | OpenGL 1.1+ (OpenGL 2.1+ is recommended)|
+| C++      | GNU gcc 4.0.  - 4.7.3. |
+| TCL (for testing tools)    | Tcltk 8.5 or 8.6 http://www.tcl.tk/software/tcltk/8.6.html |
+| Qt (for demonstration tools) | Qt 4.6.2 http://qt.nokia.com/downloads |
+| Freetype (for text rendering) | freetype-2.4.11 http://sourceforge.net/projects/freetype/files/ |
+| FreeImage (optional, for support of common 2D graphic formats) | FreeImage 3.15.4 http://sourceforge.net/projects/freeimage/files |
+| gl2ps (optional, for export contents of OCCT viewer to vector graphic files) | gl2ps-1.3.8  http://geuz.org/gl2ps/ |
+| Intel TBB (optional, for multithreaded algorithms) | TBB 3.x or 4.x http://www.threadingbuildingblocks.org/ |
+| OpenCL (optional, for ray tracing visualization) | OpenCL SDK (usually one provided by vendor of your graphic card) or OpenCL ICD Loader by Khronos group, http://www.khronos.org/registry/cl |
+
+* Debian 60 64 bit is a platform used for regular testing of contributions 
+
+@subsection OCCT_OVW_SECTION_5_2 Windows
+
+| Operating System | Windows 8 / 7 SP1 / Vista SP2 / XP SP3 |
+| ----- | ----- |
+| Minimum memory    | 512 MB, 1 GB recommended |
+| Free disk space (complete installation) | 600 MB approx. |
+| Video card   | See \ref overview_req_graphics |
+| Graphic library | OpenGL 1.1+ (OpenGL 2.1+ is recommended)|
+| C++ | Microsoft Visual Studio: 2005 SP1, 2008 SP1\*, 2010 SP1, 2012 Update 3, 2013 <br>Intel C++ Composer XE 2013 SP1 |
+| TCL (for testing tools) | ActiveTcl 8.5 or 8.6 http://www.activestate.com/activetcl/downloads |
+| Qt (for demonstration tools) | Qt 4.6.2 http://qt.nokia.com/downloads |
+| Freetype (OCCT Text rendering) | freetype-2.4.11 http://sourceforge.net/projects/freetype/files/ |
+| FreeImage (Support of common graphic formats) | FreeImage 3.15.4 http://sourceforge.net/projects/freeimage/files |
+| gl2ps (Export contents of OCCT viewer to vector graphic file) | gl2ps-1.3.8  http://geuz.org/gl2ps/ |
+| Intel TBB (optional, for multithreaded algorithms) | TBB 3.x or 4.x http://www.threadingbuildingblocks.org/ |
+| OpenCL (optional, for ray tracing visualization) | OpenCL SDK (usually one provided by vendor of your graphic card) or OpenCL ICD Loader by Khronos group, http://www.khronos.org/registry/cl |
+
+* VC++ 9 32-bit is used for certification of contributions and for building 
+  binary package of official release of OCCT on Windows.
+
+@subsection OCCT_OVW_SECTION_5_3 MAC OS X
+
+| Operating System | Mac OS X 10.9 Mavericks / 10.8 Mountain Lion / 10.7 Lion / 10.6.8 Snow Leopard |
+| ----- | ----- |
+| Minimum memory    | 512 MB, 1 GB recommended |
+| Free disk space (complete installation) | 600 MB approx. |
+| Video card | See \ref overview_req_graphics |
+| Graphic library | OpenGL 1.1+ (OpenGL 2.1+ is recommended)|
+| C++      | XCode 3.2 or newer (4.x is recommended) |
+| Qt (for demonstration tools) | Qt 4.6.2 http://qt.nokia.com/downloads |
+| Freetype (OCCT Text rendering) | freetype-2.4.11 http://sourceforge.net/projects/freetype/files/ |
+| FreeImage (Support of common graphic formats) | FreeImage 3.15.4 http://sourceforge.net/projects/freeimage/files |
+| gl2ps (Export contents of OCCT viewer to vector graphic file) | gl2ps-1.3.8  http://geuz.org/gl2ps/ |
+| Intel TBB (optional, for multithreaded algorithms) | TBB 3.x or 4.x http://www.threadingbuildingblocks.org/ |
+| OpenCL (optional, for ray tracing visualization) | Native OpenCL 1.2.8 | 
+
+@subsection overview_req_graphics Graphic cards
+
+For 3d viewer, graphic card or software implementation supporting OpenGL 1.1 
+or above is required. OpenGL 2.1+ is highly recommended.
+For ray tracing, hardware implementation of OpenCL 1.1+ is required.
+
+The following table lists graphic cards tested to work with OCCT.
+
+| Graphic card | Driver/GL/GLSL/CL version | OS | OpenGL (fixed pipeline) | OpenGL (shaders) | OpenCL (ray tracing) |
+| ---- | ---- | ---- | :----: | :----: | :----: |
+| NVIDIA GeForce GT 610, 630M, 640 | Driver 311.44, GL 4.3.0, GLSL 4.30 | Windows 7 64 bit | OK | OK | OK |
+| Intel(R) HD Graphics 3000 | GL 3.1.0, GLSL 1.40 | Windows 7 64 bit | OK | OK | none |
+| RadeOn 9600 | GL 2.1.8454, GLSL 1.20 | | OK | bad | none |
+| AMD/ATI RadeOn HD 7870 | Driver 6.14.10.12002, GL 4.2.12002, GLSL 4.20 | Windows 7 64-bit | OK | OK | OK |
+| Mesa 7.8.2 Windows GDI Driver\* | GL 2.1, GLSL version 1.20 | Mac OS X 10.6 / OS X 10.9 | OK | artifacts | none |
+| NVIDIA GeForce 320 |  | Mac OS X 10.6 / OS X 10.9 | OK | OK | OK on OSX 10.6, bad on OSX 10.9 |
+| NVIDIA GeForce 6600 GT | GL 2.1.2, GLSL 1.20 | Windows XP 32-bit | OK | OK | none |
+| Apple software OpenGL | | Mac OS X 10.6 / OS X 10.9 | OK | OK | OK |
+
+* Mesa implementation of OpenGL is used for certification testing of OCCT
+
+@section OCCT_OVW_SECTION_4 Installation
+
+In most cases you need to rebuild OCCT on your platform (OS, compiler) before
+using it in your project, to ensure binary compatibility.
+See @ref occt_dev_guides__building for instructions on
+building OCCT from sources on supported platforms.
+
+@subsection OCCT_OVW_SECTION_4_1 Using Windows installer
+
+On Windows Open CASCADE Technology can be installed with binaries precompiled by 
+Visual C++ 2008 with installation procedure.
+
+**Recommendation:**
+
+If you have a previous version of OCCT installed on your station, 
+and you do not plan to use it along with the new version, you might want to uninstall 
+the previous version (using Control Panel, Add/Remove Programs) before 
+the installation of this new version, to avoid possible problems 
+(conflict of system variables, paths, etc).
+
+**Attention:** For full installation OCCT requires approximately 650 Mb of disk space, 
+but during the installation process you will need 1,2 Gb of free disk space.
+
+OCCT installation with reference documentation requires 1,4 Gb on disk.
+
+  * Download the OCCT installer from OPEN CASCADE web site using the link. you have been provided
+  * Launch the installer and follow the instructions.
+
+The includes and binaries of third-party libraries necessary for building and launching 
+OCCT are included into binary distribution (built with Visual C++ 2008). 
+When the installation is complete, you will find the directories for 3rd party products 
+(some might be absent in case of custom installation) and the main **OCCT** directory:
+
+@image html /overview/images/overview_3rdparty.png 
+@image latex /overview/images/overview_3rdparty.png 
+
+The contents of the OCCT-6.7.0 directory (called further "OCCT root", or $CASROOT) are as follows: 
+
+@image html /overview/images/overview_installation.png "The directory tree"
+@image latex /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++  2005, 2008 and 2010, 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;
+  * **drv**  This folder contains source files generated by WOK (private header files and instantiations of generic classes);
+  * **inc**  This folder contains all OCCT header files;
+  * **samples**  This folder contains sample applications.
+  * **src**  This folder contains OCCT source files. They are organized in folders, one per development unit;
+  * **tests**  This folder contains scripts for OCCT testing.
+  * **win32/vc9**  This folder contains executable and library files built in optimize mode for Windows platform by Visual C++  2008;
+
+@section OCCT_OVW_SECTION_4_2 Environment Variables
+
+To run any Open CASCADE Technology application you need to set the environment variables.
+
+### On Windows
+
+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 (vc8 - vc12) 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. 
+You might need to edit this script to correct the paths to third-party libraries 
+if they are installed on your system in a non-default location.
+
+Script msvc.bat can be used with the same arguments for immediate launch of Visual Studio for (re)compiling OCCT.
+
+### On Unix
+
+
+  If OCCT was built by Code::Blocks, you can define the environment variables with env_cbp.sh or custom_cbp.sh script.
+
+  If OCCT was built by Automake, you can define the environment variables with env_amk.sh or custom_amk.sh script.
+
+The scripts are located in the OCCT root folder.
+
+### Description of system variables:
+
+
+  * **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);
+  * **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). 
+    In the latter case, all other options except MMGT_CLEAR  and MMGT_REENTRANT are ignored;
+  * **MMGT_CLEAR** (optional) if set to 1 (default), every allocated memory block is cleared by zeros; 
+    if set to 0, memory block is returned as it is;
+  * **MMGT_CELLSIZE** (optional) defines the maximal size of blocks allocated in large pools of memory. Default is 200;
+  * **MMGT_NBPAGES** (optional) defines the size of memory chunks allocated for small blocks in pages 
+    (operating-system dependent). Default is 10000;
+  * **MMGT_THRESHOLD** (optional) defines the maximal size of blocks that are recycled internally 
+    instead of being returned to the heap. Default is 40000;
+  * **MMGT_MMAP** (optional) when set to 1 (default), large memory blocks are allocated using 
+    memory mapping functions of the operating system; if set to 0, 
+    they will be allocated in the C heap by malloc();
+  * **CSF_LANGUAGE** is required to define the default language of messages;
+  * **CSF_DEBUG** (optional, Windows only): if defined then a diagnostic message is displayed in case of an exception;
+  * **CSF_DEBUG_BOP** (optional): if defined then it should specify directory where diagnostic data on problems occured in Boolean operations will be saved;
+  * **CSF_MDTVTexturesDirectory** defines the directory for available textures when using texture mapping;
+  * **CSF_ShadersDirectory** defines the directory for GLSL programs (required for advanced rendering techniques and custom shaders);
+  * **CSF_UnitsDefinition** and **CSF_UnitsLexicon** should define paths to resource files Lexi_Expr.dat and Units.dat, respectively, required for support of measurement units;
+  * **CSF_SHMessage** is required in order to define the path to the messages file for *ShapeHealing*;
+  * **CSF_XSMessage** is required in order to define the path to the messages file for **STEP** and **IGES** translators;
+  * **CSF_StandardDefaults** and **CSF_PluginDefaults** are required in order to maintain CASCADE Persistence mechanism to make possible any open/save operations with OCAF documents;
+  * **CSF_StandardLiteDefaults** is required in order to maintain *OCCT Persistence mechanism* to make possible any open/save operations with Lite OCAF documents;
+  * **CSF_XCAFDefaults**  any open/save operations for **XDE** documents;
+  * **CSF_IGESDefaults** and **CSF_STEPDefaults** are required for **IGES** and **STEP** translators correspondingly in order to define the path to the resource files;
+  * **CSF_XmlOcafResource** is required in order to set the path to **XSD** resources, which defines XML grammar.
+  * **CSF_MIGRATION_TYPES** is required in order to read documents that contain old data types, such as *TDataStd_Shape*;
+  * **TCLLIBPATH**, **TCL_LIBRARY**, **TK_LIBRARY** and **TIX_LIBRARY** are required to allow work with **DRAW** and **WOK**.
+
+@section OCCT_OVW_SECTION_7 Getting Started
+
+@subsection OCCT_OVW_SECTION_7_1 Draw Test Harness
+
+Draw is a command interpreter based on TCL and a graphical system used for testing and demonstrating OCCT modeling libraries.
+
+Draw can be used interactively to create, display and modify objects such as curves, surfaces and topological shapes.
+
+@image html /overview/images/overview_draw.png
+@image latex /overview/images/overview_draw.png
+
+Scripts can be written to customize Draw and perform tests. 
+New types of objects and new commands can be added using C++ programming language.
+
+Draw contains:
+
+  * A command interpreter based on TCL command language.
+  * A 2D an 3D graphic viewer with support of operations such as zoom, pan, rotation and full-screen views.
+  * An optional set of geometric commands to create and modify curves and surfaces and to use OCCT geometry algorithms.
+  * A set of topological commands to create and modify BRep shapes and to use OCCT topology algorithms.
+  * A set of graphic commands for view and display operations including Mesh Visualization Service.
+  * A set of Application framework commands for handling of files and attributes.
+  * A set of Data Exchange commands for translation of files from various formats (IGES,STEP) into OCCT shapes.
+  * A set of Shape Healing commands: check of overlapping edges, approximation of a shape to BSpline, etc.  
+
+You can add new custom test harness commands to Draw in order to test 
+or demonstrate a new functionality, which you are developing.
+
+Currently DRAW Test Harness is a single executable called DRAWEXE.
+
+Commands grouped in toolkits can be loaded at run-time thereby implementing dynamically loaded plug-ins. 
+Thus you can work only with the commands that suit your needs adding 
+the commands dynamically without leaving the Test Harness session.
+
+Declaration of available plug-ins is done through special resource file(s). 
+The pload command loads the plug-in in accordance with 
+the specified resource file and activates the commands implemented in the plug-in.
+
+The whole process of using the plug-in mechanism as well as the instructions for extending Test Harness is described in the @ref occt_user_guides__test_harness.
+
+Draw Test Harness provides an environment for OCCT automated testing system. 
+Please, consult its @ref occt_dev_guides__tests "Automated Testing System" for details.
+
+Remarks:
+
+* The DRAWEXE executable is delivered with the installation procedure on Windows platform only.
+* To start it, launch DRAWEXE executable from Open CASCADE Technology/Draw Test Harness item of the Start\\Programs menu.
+
+@subsection OCCT_OVW_SECTION_7_2 Experimenting with Draw Test Harness
+
+ Running Draw
+------------
+
+**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;
+
+Draw[1]> prompt appears in the command window
+
+Type *pload ALL*
+
+**On Windows:**
+
+Launch Draw executable from Open CASCADE Technology\\Test Harness\\Draw Test Harness 
+item of the Start\\Programs menu or Use <i>$CASROOT\\draw.bat</i> file to launch *DRAWEXE* executable.
+
+Draw[1]> prompt appears in the command window
+
+Type pload ALL
+
+**Creating your first geometric objects**
+
+1. In the command window, type *axo* to create an axonometric view
+2. Type *box b -10 -10 -10 20 20 20* to create a cube *b* of size 20, parallel to the X Y Z axis and centered on the origin. The cube will be displayed in the axonometric view in wireframe mode.
+3. Type *fit* to fill the viewer with the cube
+4. Type *pcylinder c 2 30* to create a cylinder *c* of radius 2 and height 30. The cylinder will be displayed in addition to the cube
+
+**Manipulating the view**
+
+1. Type *clear* to erase the view
+2. Type *donly c* to display the cylinder only
+3. Type *donly b* to display the cube only
+4. Type *hlr hlr b* to display the cube in the hidden line removal mode
+
+**Running demonstration files**
+
+1. Type *cd ../..* to return to the root directory
+2. Type *cd samples/tcl* to reach the *DrawResources* directory
+3. Type *source \<demo_file\>* to run the demonstration file provided with Open CASCADE. The following demonstration files are available:
+  * DataExchangeDemo.tcl: demonstrates sample sequence of operations with writing and reading IGES file
+  * ModelingDemo.tcl: demonstrates creation of simple shape and displaying it in HLR mode
+  * VisualizationDemo.tcl: demonstrates use of 3d viewer
+  * challenge.tcl: creates solid shape looking like abbreviation "CAD"
+  * bottle.tcl: creates bottle as in OCCT Tutorial
+  * drill.tcl: creates twist drill bit shape
+  * mill.tcl: creates milling cutter shape
+  * raytrace.tcl: demonstrates use of ray tracing display in 3d viewer
+
+**Getting Help**
+
+1. Type *help* to see all available commands
+2. Type *help \<command_name\>* to find out the arguments for a given command
+
+@subsection OCCT_OVW_SECTION_7_3 Programming Samples
+
+@subsubsection OCCT_OVW_SECTION_7_3_1 MFC 
+
+Visual C++ programming samples containing 10 Visual C++ projects 
+illustrating how to use a particular module or functionality.
+
+The list of MFC samples:
+
+  * Geometry
+  * Modeling
+  * Viewer2d
+  * Viewer3d
+  * ImportExport
+  * Ocaf
+  * Triangulation
+  * HLR
+  * Animation
+  * Convert
+
+@image html /overview/images/overview_mvc.png
+@image latex /overview/images/overview_mvc.png
+
+**Remarks:**
+
+  * MFC samples are available only on Windows platform;
+  * To start a sample use Open CASCADE Technology\\Samples\\Mfc\\ item of the Start\\Programs menu;
+  * Read carefully readme.txt to learn about launching and compilation options.
+
+See \subpage samples_mfc_standard "Readme" for details.
+
+@subsubsection OCCT_OVW_SECTION_7_3_2 Qt
+
+OCCT contains three samples based on Qt application framework
+
+ Import Export
+-------------
+
+ Import Export programming sample contains 3D Viewer and Import / Export functionality.
+
+@image html /overview/images/overview_qt.png
+@image latex /overview/images/overview_qt.png
+
+ Tutorial
+---------
+
+The Qt programming tutorial teaches how to use Open CASCADE Technology services to model a 3D object. 
+The purpose of the tutorial is not to explain all OCCT classes but 
+to help start thinking in terms of the Open CASCADE Technology.
+
+This tutorial assumes that  the user has experience in using and setting up C++. 
+From the viewpoint of programming, Open CASCADE Technology is designed 
+to enhance user's C++ tools with high performance modeling classes, methods and functions. 
+The combination of these resources allows creating substantial applications.
+
+**See also:** @ref occt__tutorial "OCCT Tutorial" 
+
+ Voxel
+------
+
+This is a demonstration application showing OCCT voxel models. It also includes a set of non-regression tests and other commands for testing this functionality (accessible only through TEST pre-processor definition).
+
+**See also:** <a href="occt_voxels_wp.html">Voxels User's guide</a> 
+
+**Remarks:**
+
+  * Qt samples are available on all supported platforms;
+  * To start a sample on Windows use Open CASCADE Technology\\Samples\\Qt\\ item of the Start\\Programs menu.
+
+@subsubsection OCCT_OVW_SECTION_7_3_3 C#
+
+C# sample demonstrates integration of OCCT 3D Viewer and Import / Export functionality into .NET applications (using Windows Forms and WPF front ends).
+
+@image html /overview/images/overview_c__ie.png
+@image latex /overview/images/overview_c__ie.png
+
+Import:
+
+  * BRep
+  * Iges
+  * Step
+
+Export: 
+
+  * Brep
+  * Iges
+  * Step
+  * Stl
+  * Vrml
+
+See \subpage samples_csharp "Readme" for details.
+
diff --git a/dox/resources/index.html b/dox/resources/index.html
new file mode 100644 (file)
index 0000000..6c77fca
--- /dev/null
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <meta http-equiv="refresh" content="0;URL=html/index.html">
+  </head>
+  <body>
+  </body>
+</html>
diff --git a/dox/resources/occt_pdf_template.tex b/dox/resources/occt_pdf_template.tex
new file mode 100644 (file)
index 0000000..7e4a171
--- /dev/null
@@ -0,0 +1,145 @@
+\batchmode
+\nonstopmode
+\documentclass[oneside]{article}
+\n
+% Packages required by doxygen
+\usepackage{calc}
+\usepackage{doxygen}
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage{makeidx}
+\usepackage{multicol}
+\usepackage{multirow}
+\usepackage{textcomp}
+\usepackage{amsmath}
+\usepackage[table]{xcolor}
+\usepackage{indentfirst}
+
+% Font selection
+\usepackage[T1]{fontenc}
+\usepackage{mathptmx}
+\usepackage[scaled=.90]{helvet}
+\usepackage{courier}
+\usepackage{amssymb}
+\usepackage{sectsty}
+\renewcommand{\familydefault}{\sfdefault}
+\allsectionsfont{%
+  \fontseries{bc}\selectfont%
+  \color{darkgray}%
+}
+\renewcommand{\DoxyLabelFont}{%
+  \fontseries{bc}\selectfont%
+  \color{darkgray}%
+}
+
+% Page & text layout
+\usepackage{geometry}
+\geometry{%
+  a4paper,%
+  top=2.5cm,%
+  bottom=2.5cm,%
+  left=2.5cm,%
+  right=2.5cm%
+}
+\tolerance=750
+\hfuzz=15pt
+\hbadness=750
+\setlength{\emergencystretch}{15pt}
+\setlength{\parindent}{0cm}
+\setlength{\parskip}{0.2cm}
+\makeatletter
+\renewcommand{\paragraph}{%
+  \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{%
+\normalfont\normalsize\bfseries\SS@parafont%
+  }%
+}
+\renewcommand{\subparagraph}{%
+  \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{%
+\normalfont\normalsize\bfseries\SS@subparafont%
+  }%
+}
+\makeatother
+
+% Headers & footers
+\usepackage{fancyhdr}
+\pagestyle{fancyplain}
+\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}}
+\fancyhead[CE]{\fancyplain{}{}}
+\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}}
+\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}}
+\fancyhead[CO]{\fancyplain{}{}}
+\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}}
+\fancyfoot[LE]{\fancyplain{}{}}
+\fancyfoot[CE]{\fancyplain{}{}}
+\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize (c) Open CASCADE DEFYEAR}}
+\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize (c) Open CASCADE DEFYEAR}}
+\fancyfoot[CO]{\fancyplain{}{}}
+\fancyfoot[RO]{\fancyplain{}{}}
+\renewcommand{\footrulewidth}{0.4pt}
+\renewcommand{\sectionmark}[1]{%
+  \markright{\thesection\ #1}%
+}
+
+% Indices & bibliography
+\usepackage{natbib}
+\usepackage[titles]{tocloft}
+\renewcommand{\cftsecleader}{\cftdotfill{\cftdotsep}}
+\setcounter{tocdepth}{3}
+\setcounter{secnumdepth}{5}
+\makeindex
+
+% Hyperlinks (required, but should be loaded last)
+\usepackage{ifpdf}
+\ifpdf
+  \usepackage[pdftex,pagebackref=true]{hyperref}
+\else
+  \usepackage[ps2pdf,pagebackref=true]{hyperref}
+\fi
+\hypersetup{%
+  colorlinks=true,%
+  linkcolor=black,%
+  citecolor=black,%
+  urlcolor=blue,%
+  unicode%
+}
+
+% Custom commands
+\newcommand{\clearemptydoublepage}{%
+  \newpage{\pagestyle{empty}\cleardoublepage}%
+}
+\n
+%===== C O N T E N T S =====\n
+\begin{document}
+% Titlepage & ToC
+\hypersetup{pageanchor=false}
+\pagenumbering{roman}
+\begin{titlepage}
+\vspace*{7cm}
+\begin{center}%
+\includegraphics[width=0.75\textwidth, height=0.2\textheight]{../../../dox/resources/occt_logo.png}\\
+{\Large Open C\-A\-S\-C\-A\-D\-E Technology \\\\\Large DEFCASVERSION }\\
+\vspace*{1cm}
+{\Large DEFDOCLABEL}\\
+\vspace*{1cm}
+\vspace*{0.5cm}
+{\small \today}\
+\end{center}
+\end{titlepage}
+\clearpage
+\pagenumbering{roman}
+\tableofcontents
+\newpage
+\pagenumbering{arabic}
+\hypersetup{pageanchor=true}
+
+\let\stdsection\section
+  \renewcommand\section{\pagebreak\stdsection}
+\hypertarget{DEFFILENAME}{}
+\input{DEFFILENAME}
+
+% Index
+\newpage
+\phantomsection
+\addcontentsline{toc}{part}{Index}
+\printindex\n
+\end{document}
diff --git a/dox/resources/occt_rm.doxyfile b/dox/resources/occt_rm.doxyfile
new file mode 100644 (file)
index 0000000..e8126b8
--- /dev/null
@@ -0,0 +1,46 @@
+DOXYFILE_ENCODING      = UTF-8
+CREATE_SUBDIRS         = NO
+OUTPUT_LANGUAGE        = English
+MULTILINE_CPP_IS_BRIEF = YES
+INHERIT_DOCS           = YES
+REPEAT_BRIEF           = YES
+ALWAYS_DETAILED_SEC    = NO
+INLINE_INHERITED_MEMB  = NO
+FULL_PATH_NAMES        = NO
+OPTIMIZE_OUTPUT_FOR_C  = YES
+SUBGROUPING            = YES
+DISTRIBUTE_GROUP_DOC   = YES
+EXTRACT_ALL            = YES
+EXTRACT_PRIVATE        = NO
+EXTRACT_LOCAL_CLASSES  = NO
+EXTRACT_LOCAL_METHODS  = NO
+HIDE_FRIEND_COMPOUNDS  = YES
+HIDE_UNDOC_MEMBERS     = NO
+INLINE_INFO            = YES
+VERBATIM_HEADERS       = NO
+QUIET                  = YES
+WARNINGS               = NO
+ENABLE_PREPROCESSING   = YES
+MACRO_EXPANSION        = YES
+EXPAND_ONLY_PREDEF     = YES
+PREDEFINED             = Standard_EXPORT __Standard_API __Draw_API Handle(a):=Handle<a> DEFINE_STANDARD_ALLOC DEFINE_NCOLLECTION_ALLOC
+GENERATE_HTML          = YES
+GENERATE_LATEX         = NO
+SEARCH_INCLUDES        = YES
+ALLEXTERNALS           = NO
+EXTERNAL_GROUPS        = NO
+COLLABORATION_GRAPH    = NO
+ENABLE_PREPROCESSING   = YES
+INCLUDE_FILE_PATTERNS  = *.hxx *.pxx
+EXCLUDE_PATTERNS       = */Handle_*.hxx
+SKIP_FUNCTION_MACROS   = YES
+INLINE_SOURCES         = NO
+HAVE_DOT               = YES
+DOT_GRAPH_MAX_NODES    = 100
+INCLUDE_GRAPH          = NO
+INCLUDED_BY_GRAPH      = NO
+DOT_MULTI_TARGETS      = YES
+DOT_IMAGE_FORMAT       = png
+GENERATE_LEGEND        = YES
+DOT_CLEANUP            = YES
+GRAPHICAL_HIERARCHY    = NO
diff --git a/dox/resources/occt_ug_html.doxyfile b/dox/resources/occt_ug_html.doxyfile
new file mode 100644 (file)
index 0000000..45a1fb0
--- /dev/null
@@ -0,0 +1,60 @@
+DOXYFILE_ENCODING      = UTF-8
+PROJECT_NAME           = "Open CASCADE Technology"
+PROJECT_BRIEF          = 
+CREATE_SUBDIRS         = NO
+OUTPUT_LANGUAGE        = English
+ABBREVIATE_BRIEF       = 
+FULL_PATH_NAMES        = YES
+INHERIT_DOCS           = YES
+TAB_SIZE               = 4
+MARKDOWN_SUPPORT       = YES
+EXTRACT_ALL            = YES
+CASE_SENSE_NAMES       = NO
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = YES
+WARNINGS               = YES
+WARN_IF_UNDOCUMENTED   = YES
+WARN_IF_DOC_ERROR      = YES
+WARN_NO_PARAMDOC       = NO
+WARN_FORMAT            = \\$file:\$line: \$text\
+INPUT_ENCODING         = UTF-8
+FILE_PATTERNS          = *.md *.dox 
+RECURSIVE              = YES
+SOURCE_BROWSER         = NO
+INLINE_SOURCES         = YES
+COLS_IN_ALPHA_INDEX    = 5
+GENERATE_DOCSET        = NO
+GENERATE_CHI           = NO
+GENERATE_QHP           = NO
+GENERATE_ECLIPSEHELP   = NO
+GENERATE_RTF           = NO
+GENERATE_MAN           = NO
+GENERATE_XML           = NO
+GENERATE_DOCBOOK       = NO
+GENERATE_AUTOGEN_DEF   = NO
+GENERATE_PERLMOD       = NO
+STRIP_CODE_COMMENTS    = NO
+GENERATE_LATEX         = NO
+GENERATE_HTMLHELP      = NO
+GENERATE_HTML          = YES
+HTML_COLORSTYLE_HUE    = 220
+HTML_COLORSTYLE_SAT    = 100
+HTML_COLORSTYLE_GAMMA  = 80
+HTML_TIMESTAMP         = YES
+HTML_DYNAMIC_SECTIONS  = YES
+HTML_INDEX_NUM_ENTRIES = 100
+DISABLE_INDEX          = YES
+GENERATE_TREEVIEW      = YES
+ENUM_VALUES_PER_LINE   = 8
+TREEVIEW_WIDTH         = 250
+EXTERNAL_PAGES         = NO
+SEARCHDATA_FILE        = searchdata.xml
+SKIP_FUNCTION_MACROS   = YES
+FORMULA_FONTSIZE       = 12
+FORMULA_TRANSPARENT    = YES
+USE_MATHJAX            = YES
+MATHJAX_FORMAT         = HTML-CSS
+
+# Define alias for inserting images in uniform way (both HTML and PDF)
+ALIASES += figure{1}="\image html \1 \n"
+ALIASES += figure{2}="\image html \1 \2 \n"
diff --git a/dox/resources/occt_ug_pdf.doxyfile b/dox/resources/occt_ug_pdf.doxyfile
new file mode 100644 (file)
index 0000000..0ba2de6
--- /dev/null
@@ -0,0 +1,53 @@
+DOXYFILE_ENCODING      = UTF-8
+PROJECT_NAME           = "Open CASCADE Technology"
+PROJECT_BRIEF          = 
+CREATE_SUBDIRS         = NO
+OUTPUT_LANGUAGE        = English
+ABBREVIATE_BRIEF       = 
+FULL_PATH_NAMES        = YES
+INHERIT_DOCS           = YES
+TAB_SIZE               = 4
+MARKDOWN_SUPPORT       = YES
+EXTRACT_ALL            = YES
+CASE_SENSE_NAMES       = NO
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = YES
+WARNINGS               = YES
+WARN_IF_UNDOCUMENTED   = YES
+WARN_IF_DOC_ERROR      = YES
+WARN_NO_PARAMDOC       = NO
+WARN_FORMAT            = \\$file:\$line: \$text\
+INPUT_ENCODING         = UTF-8
+FILE_PATTERNS          = *.md *.dox 
+RECURSIVE              = YES
+SOURCE_BROWSER         = NO
+INLINE_SOURCES         = YES
+COLS_IN_ALPHA_INDEX    = 5
+GENERATE_DOCSET        = NO
+GENERATE_CHI           = NO
+GENERATE_QHP           = NO
+GENERATE_ECLIPSEHELP   = NO
+GENERATE_RTF           = NO
+GENERATE_MAN           = NO
+GENERATE_XML           = NO
+GENERATE_DOCBOOK       = NO
+GENERATE_AUTOGEN_DEF   = NO
+GENERATE_PERLMOD       = NO
+STRIP_CODE_COMMENTS    = NO
+GENERATE_HTMLHELP      = NO
+GENERATE_HTML          = NO
+DISABLE_INDEX          = YES
+GENERATE_TREEVIEW      = NO
+PREDEFINED             = PDF_ONLY
+GENERATE_LATEX         = YES
+COMPACT_LATEX          = YES
+PDF_HYPERLINKS         = YES
+USE_PDFLATEX           = YES
+LATEX_BATCHMODE        = YES
+LATEX_OUTPUT           = latex
+LATEX_CMD_NAME         = latex
+MAKEINDEX_CMD_NAME     = makeindex
+
+# Define alias for inserting images in uniform way (both HTML and PDF)
+ALIASES += figure{1}="\image latex \1 \n"
+ALIASES += figure{2}="\image latex \1 \2 \n"
diff --git a/dox/start.tcl b/dox/start.tcl
deleted file mode 100755 (executable)
index f0cbedc..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/tclsh
-
-# Command-line starter for occdoc command, use it as follows:
-# tclsh> source dox/start.tcl [arguments]
-
-source [file join [file dirname [info script]] occdoc.tcl]
-occdoc {*}$::argv
index a013191..f9a9e27 100644 (file)
@@ -9,12 +9,12 @@
    xmlns="http://www.w3.org/2000/svg"
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    xmlns="http://www.w3.org/2000/svg"
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="744.09448819"
-   height="1052.3622047"
+   width="465.60214"
+   height="182.46281"
    id="svg2"
    version="1.1"
    inkscape:version="0.48.4 r9939"
    id="svg2"
    version="1.1"
    inkscape:version="0.48.4 r9939"
-   sodipodi:docname="ocaf.svg">
+   sodipodi:docname="tutorial_image003.svg">
   <defs
      id="defs4">
     <clipPath
   <defs
      id="defs4">
     <clipPath
@@ -45,7 +45,7 @@
          height="22.583204"
          width="33.706238"
          y="12.49604"
          height="22.583204"
          width="33.706238"
          y="12.49604"
-         x="316.59788" />
+         x="316.59787" />
     </clipPath>
     <clipPath
        id="clipEmfPath4"
     </clipPath>
     <clipPath
        id="clipEmfPath4"
@@ -55,7 +55,7 @@
          height="22.583204"
          width="33.856712"
          y="193.16167"
          height="22.583204"
          width="33.856712"
          y="193.16167"
-         x="469.93116" />
+         x="469.93115" />
     </clipPath>
     <clipPath
        id="clipEmfPath5"
     </clipPath>
     <clipPath
        id="clipEmfPath5"
@@ -64,7 +64,7 @@
          id="rect3013"
          height="22.583204"
          width="33.856712"
          id="rect3013"
          height="22.583204"
          width="33.856712"
-         y="97.258332"
+         y="97.258331"
          x="382.35513" />
     </clipPath>
     <clipPath
          x="382.35513" />
     </clipPath>
     <clipPath
        clipPathUnits="userSpaceOnUse">
       <rect
          id="rect3132"
        clipPathUnits="userSpaceOnUse">
       <rect
          id="rect3132"
-         height="44.154422"
+         height="44.154423"
          width="125.37695"
          y="131.71234"
          width="125.37695"
          y="131.71234"
-         x="271.49972" />
+         x="271.49973" />
     </clipPath>
     <clipPath
        id="clipEmfPath2-7"
        clipPathUnits="userSpaceOnUse">
       <rect
          id="rect3135"
     </clipPath>
     <clipPath
        id="clipEmfPath2-7"
        clipPathUnits="userSpaceOnUse">
       <rect
          id="rect3135"
-         height="44.154422"
+         height="44.154423"
          width="125.37695"
          y="212.8123"
          width="125.37695"
          y="212.8123"
-         x="271.49972" />
+         x="271.49973" />
     </clipPath>
     <clipPath
        id="clipEmfPath3-4"
        clipPathUnits="userSpaceOnUse">
       <rect
          id="rect3138"
     </clipPath>
     <clipPath
        id="clipEmfPath3-4"
        clipPathUnits="userSpaceOnUse">
       <rect
          id="rect3138"
-         height="44.154422"
+         height="44.154423"
          width="107.3371"
          y="212.8123"
          width="107.3371"
          y="212.8123"
-         x="433.85835" />
+         x="433.85834" />
     </clipPath>
     <clipPath
        id="clipEmfPath4-0"
        clipPathUnits="userSpaceOnUse">
       <rect
          id="rect3141"
     </clipPath>
     <clipPath
        id="clipEmfPath4-0"
        clipPathUnits="userSpaceOnUse">
       <rect
          id="rect3141"
-         height="17.121102"
-         width="549.31338"
+         height="17.121101"
+         width="549.31335"
          y="293.91226"
          y="293.91226"
-         x="0.90199242" />
+         x="0.90199244" />
     </clipPath>
     <clipPath
        id="clipEmfPath5-9"
     </clipPath>
     <clipPath
        id="clipEmfPath5-9"
       <rect
          id="rect3144"
          height="18.022213"
       <rect
          id="rect3144"
          height="18.022213"
-         width="333.7372"
-         y="338.51723"
+         width="333.73721"
+         y="338.51724"
          x="72.61039" />
     </clipPath>
     <clipPath
          x="72.61039" />
     </clipPath>
     <clipPath
       <rect
          id="rect3147"
          height="18.022213"
       <rect
          id="rect3147"
          height="18.022213"
-         width="342.75712"
-         y="374.56166"
+         width="342.75711"
+         y="374.56165"
          x="72.61039" />
     </clipPath>
     <clipPath
          x="72.61039" />
     </clipPath>
     <clipPath
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
      inkscape:zoom="1"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
      inkscape:zoom="1"
-     inkscape:cx="375"
-     inkscape:cy="845.71429"
+     inkscape:cx="362.08678"
+     inkscape:cy="-11.625728"
      inkscape:document-units="px"
      inkscape:current-layer="layer1"
      showgrid="false"
      inkscape:document-units="px"
      inkscape:current-layer="layer1"
      showgrid="false"
-     inkscape:window-width="1065"
-     inkscape:window-height="932"
-     inkscape:window-x="113"
-     inkscape:window-y="14"
-     inkscape:window-maximized="0" />
+     inkscape:window-width="1920"
+     inkscape:window-height="1028"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     fit-margin-top="1"
+     fit-margin-left="1"
+     fit-margin-right="1"
+     fit-margin-bottom="1" />
   <metadata
      id="metadata7">
     <rdf:RDF>
   <metadata
      id="metadata7">
     <rdf:RDF>
         <dc:format>image/svg+xml</dc:format>
         <dc:type
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
         <dc:format>image/svg+xml</dc:format>
         <dc:type
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
+        <dc:title />
       </cc:Work>
     </rdf:RDF>
   </metadata>
   <g
      inkscape:label="Layer 1"
      inkscape:groupmode="layer"
       </cc:Work>
     </rdf:RDF>
   </metadata>
   <g
      inkscape:label="Layer 1"
      inkscape:groupmode="layer"
-     id="layer1">
+     id="layer1"
+     transform="translate(-12.913221,-12.559351)">
     <g
        id="g2989" />
     <g
     <g
        id="g2989" />
     <g
index 397ef25..107f388 100644 (file)
@@ -1,4 +1,4 @@
- Tutorial {#tutorial}
+ Tutorial {#occt__tutorial}
 =======
 
 @tableofcontents
 =======
 
 @tableofcontents
@@ -52,7 +52,7 @@ This modeling requires four steps:
 
 To create the bottle's profile, you first create characteristic points with their coordinates as shown below in the (XOY) plane. These points will be the supports that define the geometry of the profile.
 
 
 To create the bottle's profile, you first create characteristic points with their coordinates as shown below in the (XOY) plane. These points will be the supports that define the geometry of the profile.
 
-@figure{/tutorial/images/tutorial_image003.svg}
+@figure{tutorial/images/tutorial_image003.svg}
 
 There are two classes to describe a 3D Cartesian point from its X, Y and Z coordinates in Open CASCADE Technology:
 
 
 There are two classes to describe a 3D Cartesian point from its X, Y and Z coordinates in Open CASCADE Technology:
 
index fd4b706..e675959 100644 (file)
@@ -1,4 +1,4 @@
- BRep Format {#occt_brep_format}
+ BRep Format {#occt_user_guides__brep_wp}
 ========================
 
 @tableofcontents 
 ========================
 
 @tableofcontents 
index 9c7dc9a..8abfa22 100644 (file)
@@ -1,4 +1,4 @@
-Draw Test Harness  {#user_guides__test_harness}
+Draw Test Harness  {#occt_user_guides__test_harness}
 ===============================
 
 @tableofcontents
 ===============================
 
 @tableofcontents
@@ -74,7 +74,7 @@ Declaration of available plug-ins is done through the special resource file(s).
 
 @subsubsection occt_draw_1_3_1 Launching DRAW Test Harness
 
 
 @subsubsection occt_draw_1_3_1 Launching DRAW Test Harness
 
-Test Harness executable *DRAWEXE* is located in the <i>$CASROOT/<platform>/bin</i> directory (where <platform> is Win for Windows and Linux for Linux operating systems). Prior to launching it is important to make sure that the environment is correctly set-up (usually this is done automatically after the installation process on Windows or after launching specific scripts on Linux).  
+Test Harness executable *DRAWEXE* is located in the <i>$CASROOT/\<platform\>/bin</i> directory (where \<platform\> is Win for Windows and Linux for Linux operating systems). Prior to launching it is important to make sure that the environment is correctly set-up (usually this is done automatically after the installation process on Windows or after launching specific scripts on Linux).  
 
 
 @subsubsection occt_draw_1_3_2 Plug-in resource file
 
 
 @subsubsection occt_draw_1_3_2 Plug-in resource file
@@ -2520,31 +2520,31 @@ Saves the active document in the file **docname** in the path **path**. Overwrit
 SaveAs D /myPath/myFile.std
 ~~~~~ 
 
 SaveAs D /myPath/myFile.std
 ~~~~~ 
 
-@subsection occt_draw_5_2      Basic commands
+@subsection occt_draw_5_2 Basic commands
 
 
-@subsubsection occt_draw_5_2_1 Label
+@subsubsection occt_draw_5_2_1 Label
 
 
-Syntax:                
+Syntax:   
 
 ~~~~~
 Label docname entry
 ~~~~~
 
 
 ~~~~~
 Label docname entry
 ~~~~~
 
-Creates the label expressed by <i><entry></i> if it does not exist.
+Creates the label expressed by <i>\<entry\></i> if it does not exist.
 
 Example
 ~~~~~
 Label D 0:2
 ~~~~~
 
 
 Example
 ~~~~~
 Label D 0:2
 ~~~~~
 
-@subsubsection occt_draw_5_2_2 NewChild
+@subsubsection occt_draw_5_2_2 NewChild
 
 
-Syntax:                
+Syntax:   
 
 ~~~~~
 NewChild docname [taggerlabel = Root label]
 ~~~~~
 
 ~~~~~
 NewChild docname [taggerlabel = Root label]
 ~~~~~
-Finds (or creates) a *TagSource* attribute located at father label of <i><taggerlabel></i> and makes a new child label.
+Finds (or creates) a *TagSource* attribute located at father label of <i>\<taggerlabel\></i> and makes a new child label.
 
 Example
 ~~~~~
 
 Example
 ~~~~~
@@ -2556,9 +2556,9 @@ Label D 0:2
 NewChild D 0:2
 ~~~~~
 
 NewChild D 0:2
 ~~~~~
 
-@subsubsection occt_draw_5_2_3 Children
+@subsubsection occt_draw_5_2_3 Children
 
 
-Syntax:        
+Syntax:  
 ~~~~~
 Children docname label
 ~~~~~
 ~~~~~
 Children docname label
 ~~~~~
@@ -2569,9 +2569,9 @@ Example
 Children D 0:2
 ~~~~~
 
 Children D 0:2
 ~~~~~
 
-@subsubsection occt_draw_5_2_4 ForgetAll
+@subsubsection occt_draw_5_2_4 ForgetAll
 
 
-Syntax:                
+Syntax:   
 ~~~~~
 ForgetAll docname label
 ~~~~~
 ~~~~~
 ForgetAll docname label
 ~~~~~
@@ -5596,7 +5596,7 @@ Syntax:
 bsplineprof name [S face] [W WW] 
 ~~~~~
 
 bsplineprof name [S face] [W WW] 
 ~~~~~
 
-* for an edge : <digitizes> ... <mouse button 2>
+* for an edge : \<digitizes\> ... <mouse button 2>
 * to end profile : <mouse button 3>
 
 Builds a profile in the XY plane from digitizes. By default the profile is closed and a face is built. 
 * to end profile : <mouse button 3>
 
 Builds a profile in the XY plane from digitizes. By default the profile is closed and a face is built. 
@@ -6384,23 +6384,23 @@ bopargcheck shape1 [[shape2] [-F/O/C/T/S/U] [/R|F|T|V|E|I|P]] [#BF]
 **bopargcheck** checks the validity of argument(s) for boolean operations. 
 
 * Boolean Operation - (by default a section is made) : 
 **bopargcheck** checks the validity of argument(s) for boolean operations. 
 
 * Boolean Operation - (by default a section is made) : 
-        * **F** (fuse) 
-        * **O** (common) 
-        * **C** (cut) 
-        * **T** (cut21) 
-        * **S** (section) 
-        * **U** (unknown) 
+  * **F** (fuse) 
+  * **O** (common) 
+  * **C** (cut) 
+  * **T** (cut21) 
+  * **S** (section) 
+  * **U** (unknown) 
 * Test Options - (by default all options are enabled) : 
 * Test Options - (by default all options are enabled) : 
-        * **R** (disable small edges (shrank range) test) 
-        * **F** (disable faces verification test) 
-        * **T** (disable tangent faces searching test) 
-        * **V** (disable test possibility to merge vertices) 
-        * **E** (disable test possibility to merge edges) 
-        * **I** (disable self-interference test) 
-        * **P** (disable shape type test) 
+  * **R** (disable small edges (shrank range) test) 
+  * **F** (disable faces verification test) 
+  * **T** (disable tangent faces searching test) 
+  * **V** (disable test possibility to merge vertices) 
+  * **E** (disable test possibility to merge edges) 
+  * **I** (disable self-interference test) 
+  * **P** (disable shape type test) 
 * Additional Test Options :
 * Additional Test Options :
-        * **B** (stop test on first faulty found) - by default it is off; 
-        * **F** (full output for faulty shapes) - by default the output is made in a short format.
+  * **B** (stop test on first faulty found) - by default it is off; 
+  * **F** (full output for faulty shapes) - by default the output is made in a short format.
 
 **Note** that Boolean Operation and Test Options are used only for a couple of argument shapes, except for <b>I</b> and <b>P</b> options that are always used to test a couple of shapes as well as a single shape.
 
 
 **Note** that Boolean Operation and Test Options are used only for a couple of argument shapes, except for <b>I</b> and <b>P</b> options that are always used to test a couple of shapes as well as a single shape.
 
@@ -6925,9 +6925,9 @@ featdprism b f b_6 5 1 0
 featperformval dprism r 1 
 ==BRepFeat_MakeDPrism::Perform(Height) 
 BRepFeat_Form::GlobalPerform () 
 featperformval dprism r 1 
 ==BRepFeat_MakeDPrism::Perform(Height) 
 BRepFeat_Form::GlobalPerform () 
      Gluer 
      still Gluer 
      Gluer result 
+ Gluer 
+ still Gluer 
+ Gluer result 
 ~~~~~
 
 Let us  create a feature prism with circular direction :
 ~~~~~
 
 Let us  create a feature prism with circular direction :
@@ -6942,9 +6942,9 @@ featrevol b f b_6 1 0 1 0 1 0 1 0
 featperformval revol r 45 
 ==BRepFeat_MakeRevol::Perform(Angle) 
 BRepFeat_Form::GlobalPerform () 
 featperformval revol r 45 
 ==BRepFeat_MakeRevol::Perform(Angle) 
 BRepFeat_Form::GlobalPerform () 
      Gluer 
      still Gluer 
      Gluer result 
+ Gluer 
+ still Gluer 
+ Gluer result 
 ~~~~~
 
 
 ~~~~~
 
 
@@ -7003,9 +7003,9 @@ Computes a draft angle surface from a wire. The surface is determined by the dra
   * The draft direction is determined by the argument -INTERNAL
   * The argument Ri/Ro deftermines wether the corner edges of the draft surfaces are angular or rounded.
   * Arguments that can be used to define the surface distance are:
   * The draft direction is determined by the argument -INTERNAL
   * The argument Ri/Ro deftermines wether the corner edges of the draft surfaces are angular or rounded.
   * Arguments that can be used to define the surface distance are:
-         * length, a defined distance
-         * shape, until the surface contacts a shape
-         * surface, until the surface contacts a surface.
+   * length, a defined distance
+   * shape, until the surface contacts a shape
+   * surface, until the surface contacts a surface.
 
 **Note** that the original aim of adding a draft angle to a shape is to produce a shape which can be removed easily from a mould. The Examples below use larger angles than are used normally and the calculation results returned are not indicated.
 
 
 **Note** that the original aim of adding a draft angle to a shape is to produce a shape which can be removed easily from a mould. The Examples below use larger angles than are used normally and the calculation results returned are not indicated.
 
@@ -7151,20 +7151,20 @@ igesread <file_name> <result_shape_name> [<selection>]
 Reads an IGES file to an OCCT shape. This command will interactively ask the user to select a set of entities to be converted. 
 
 
 Reads an IGES file to an OCCT shape. This command will interactively ask the user to select a set of entities to be converted. 
 
 
-| N    | Mode  | Description |
+| N | Mode | Description |
 | :-- | :-- | :---------- |
 | :-- | :-- | :---------- |
-| 0    | End   | finish conversion and exit igesbrep |
-| 1    | Visible roots | convert only visible roots |
-| 2    | All roots     | convert all roots |
-| 3    | One entity | convert entity with number provided by the user |
-| 4    | Selection     | convert only entities contained in selection |
+| 0 | End | finish conversion and exit igesbrep |
+| 1 | Visible roots | convert only visible roots |
+| 2 | All roots | convert all roots |
+| 3 | One entity | convert entity with number provided by the user |
+| 4 | Selection | convert only entities contained in selection |
 
 
 After the selected set of entities is loaded the user will be asked how loaded entities should be converted into OCCT shapes (e.g., one shape per root or one shape for all the entities). It is also possible to save loaded shapes in files, and to cancel loading. 
 
 The second parameter of this command defines the name of the loaded shape. If several shapes are created, they will get indexed names. For instance, if the last parameter was *s*, they will be *s_1, ... s_N*. 
 
 
 
 After the selected set of entities is loaded the user will be asked how loaded entities should be converted into OCCT shapes (e.g., one shape per root or one shape for all the entities). It is also possible to save loaded shapes in files, and to cancel loading. 
 
 The second parameter of this command defines the name of the loaded shape. If several shapes are created, they will get indexed names. For instance, if the last parameter was *s*, they will be *s_1, ... s_N*. 
 
-<i><selection></i> specifies the scope of selected entities in the model, by default it is *xst-transferrable-roots*.  If we use symbol <i>*</i> as <i><selection></i> all roots will be translated. 
+<i>\<selection\></i> specifies the scope of selected entities in the model, by default it is *xst-transferrable-roots*.  If we use symbol <i>*</i> as <i>\<selection\></i> all roots will be translated. 
 
 See also the detailed description of <a href="user_guides__iges.html#occt_iges_2_3_4">Selecting IGES entities</a>.
 
 
 See also the detailed description of <a href="user_guides__iges.html#occt_iges_2_3_4">Selecting IGES entities</a>.
 
@@ -7183,7 +7183,7 @@ tplosttrim [<IGES_type>]
 
 Sometimes the trimming contours of IGES faces (i.e., entity 141 for 143, 142 for 144) can be lost during translation due to fails. This command gives us a number of lost trims and the number of corresponding IGES entities. 
 It outputs the rank and numbers of faces that lost their trims and their numbers for each type (143, 144, 510) and their total number. If a face lost several of its trims it is output only once. 
 
 Sometimes the trimming contours of IGES faces (i.e., entity 141 for 143, 142 for 144) can be lost during translation due to fails. This command gives us a number of lost trims and the number of corresponding IGES entities. 
 It outputs the rank and numbers of faces that lost their trims and their numbers for each type (143, 144, 510) and their total number. If a face lost several of its trims it is output only once. 
-Optional parameter <i><IGES_type></i> can be *0TrimmedSurface, BoundedSurface* or *Face* to specify the only type of IGES faces. 
+Optional parameter <i>\<IGES_type\></i> can be *0TrimmedSurface, BoundedSurface* or *Face* to specify the only type of IGES faces. 
 
 **Example:**
 ~~~~~
 
 **Example:**
 ~~~~~
@@ -7229,15 +7229,15 @@ This command will interactively ask the user to select a set of entities to be c
 
 | N | Mode | Description |
 | :---- | :---- | :---- |  
 
 | N | Mode | Description |
 | :---- | :---- | :---- |  
-| 0    | End   | Finish transfer and exit stepread | 
-| 1    | root with rank 1      | Transfer first root | 
-| 2    | root by its rank      | Transfer root specified by its rank | 
-| 3    | One entity    | Transfer entity with a number provided by the user | 
-| 4    | Selection     | Transfer only entities contained in selection | 
+| 0 | End | Finish transfer and exit stepread | 
+| 1 | root with rank 1 | Transfer first root | 
+| 2 | root by its rank | Transfer root specified by its rank | 
+| 3 | One entity | Transfer entity with a number provided by the user | 
+| 4 | Selection | Transfer only entities contained in selection | 
 
 After the selected set of entities is loaded the user will be asked how loaded entities should be converted into OCCT shapes. 
 The second parameter of this command defines the name of the loaded shape. If several shapes are created, they will get indexed names. For instance, if the last parameter was *s*, they will be *s_1, ... s_N*. 
 
 After the selected set of entities is loaded the user will be asked how loaded entities should be converted into OCCT shapes. 
 The second parameter of this command defines the name of the loaded shape. If several shapes are created, they will get indexed names. For instance, if the last parameter was *s*, they will be *s_1, ... s_N*. 
-<i><selection></i> specifies the scope of selected entities in the model.  If we use symbol <i>*</i> as <i><selection></i> all roots will be translated. 
+<i>\<selection\></i> specifies the scope of selected entities in the model.  If we use symbol <i>*</i> as <i>\<selection\></i> all roots will be translated. 
 
 See also the detailed description of <a href="user_guides__step.html#occt_step_2_3_6">Selecting STEP entities</a>.
 
 
 See also the detailed description of <a href="user_guides__step.html#occt_step_2_3_6">Selecting STEP entities</a>.
 
@@ -7262,7 +7262,7 @@ The following  modes are available :
     * *f* - *faceted_brep* 
     * *w* - *geometric_curve_set* 
     * *s* - *shell_based_surface_model* 
     * *f* - *faceted_brep* 
     * *w* - *geometric_curve_set* 
     * *s* - *shell_based_surface_model* 
-       
 For further information see <a href="#user_guides__step.html#occt_step_6_5">Writing a STEP file</a>. 
 
 **Example:**
 For further information see <a href="#user_guides__step.html#occt_step_6_5">Writing a STEP file</a>. 
 
 **Example:**
@@ -7289,10 +7289,10 @@ Calculates statistics on the entities in the model and outputs a count of entiti
 
 The optional selection argument, if specified, defines a subset of entities, which are to be taken into account. The first argument should be one of the currently defined counters. 
 
 
 The optional selection argument, if specified, defines a subset of entities, which are to be taken into account. The first argument should be one of the currently defined counters. 
 
-| Counter      | Operation |
+| Counter | Operation |
 | :-------- | :-------- | 
 | :-------- | :-------- | 
-| xst-types    | Calculates how many entities of each OCCT type exist | 
-| step214-types        | Calculates how many entities of each STEP type exist |
+| xst-types | Calculates how many entities of each OCCT type exist | 
+| step214-types | Calculates how many entities of each STEP type exist |
 
 **Example:**
 ~~~~~
 
 **Example:**
 ~~~~~
@@ -7315,14 +7315,14 @@ The information printed by this command depends on the symbol specified.
 data c 
 ~~~~~
 
 data c 
 ~~~~~
 
-| Symbol       | Output |
+| Symbol | Output |
 | :------ | :------ |
 | :------ | :------ |
-| g    | Prints the information contained in the header of the file |
-| c or f       | Prints messages generated during the loading of the STEP file (when the procedure of the integrity of the loaded data check is performed) and the resulting statistics (f works only with fail messages while c with both fail and warning messages) |
-| t    | The same as c or f, with a list of failed or warned entities |
+| g | Prints the information contained in the header of the file |
+| c or f | Prints messages generated during the loading of the STEP file (when the procedure of the integrity of the loaded data check is performed) and the resulting statistics (f works only with fail messages while c with both fail and warning messages) |
+| t | The same as c or f, with a list of failed or warned entities |
 | m or l | The same as t but also prints a status for each entity | 
 | e | Lists all entities of the model with their numbers, types, validity status etc. |
 | m or l | The same as t but also prints a status for each entity | 
 | e | Lists all entities of the model with their numbers, types, validity status etc. |
-| R    | The same as e but lists only root entities |
+| R | The same as e but lists only root entities |
 
 
 
 
 
 
@@ -7349,7 +7349,7 @@ entity <#(D)>_or_<num> <level_of_information>
 
 The content of an IGES or STEP entity can be obtained by using this command. 
 Entity can be determined by its number or label. 
 
 The content of an IGES or STEP entity can be obtained by using this command. 
 Entity can be determined by its number or label. 
-<i><level_of_information></i> has range [0-6]. You can get more information about this level using this command without parameters. 
+<i>\<level_of_information\></i> has range [0-6]. You can get more information about this level using this command without parameters. 
 
 **Example:**
 ~~~~~
 
 **Example:**
 ~~~~~
@@ -7402,14 +7402,14 @@ fromshape a_1_23
 
 @subsubsection occt_draw_8_3_8  givecount
 
 
 @subsubsection occt_draw_8_3_8  givecount
 
-Syntax:      
+Syntax:
 ~~~~~
 givecount <selection_name> [<selection_name>]
 ~~~~~
 
 
 Prints a number of loaded entities defined by the selection argument.
 ~~~~~
 givecount <selection_name> [<selection_name>]
 ~~~~~
 
 
 Prints a number of loaded entities defined by the selection argument.
-Possible values of <selection_name> you can find in the “IGES FORMAT Users’s Guide”.
+Possible values of \<selection_name\> you can find in the “IGES FORMAT Users’s Guide”.
 
 **Example:**
 ~~~~~
 
 **Example:**
 ~~~~~
@@ -7424,13 +7424,13 @@ givelist <selection_name>
 ~~~~~
 
 Prints a list of a subset of loaded entities defined by the selection argument: 
 ~~~~~
 
 Prints a list of a subset of loaded entities defined by the selection argument: 
-| Selection |  Description |
-| :------- | :----------- |
-| xst-model-all        | all entities of the model |
-| xst-model-roots |    all roots |
-| xst-pointed |        (Interactively) pointed entities (not used in DRAW) |
-| xst-transferrable-all        | all transferable (recognized) entities |
-| xst-transferrable-roots      | Transferable roots | 
+| Selection | Description |
+| :-------- | :----------- |
+| xst-model-all | all entities of the model |
+| xst-model-roots | all roots |
+| xst-pointed | (Interactively) pointed entities (not used in DRAW) |
+| xst-transferrable-all | all transferable (recognized) entities |
+| xst-transferrable-roots | Transferable roots | 
 
 
 **Example:**
 
 
 **Example:**
@@ -7441,16 +7441,16 @@ givelist xst-model-all
 
 @subsubsection occt_draw_8_3_10  listcount
 
 
 @subsubsection occt_draw_8_3_10  listcount
 
-Syntax:     listcount <counter> [<selection> ...]
+Syntax:     listcount \<counter\> [\<selection\> ...]
 
 Prints a list of entities per each type matching the criteria defined by arguments. 
 
 Prints a list of entities per each type matching the criteria defined by arguments. 
-Optional <i><selection></i> argument, if specified, defines a subset of entities, which are to be taken into account. Argument <i><counter></i>  should be one of the currently defined counters: 
+Optional <i>\<selection\></i> argument, if specified, defines a subset of entities, which are to be taken into account. Argument <i>\<counter\></i>  should be one of the currently defined counters: 
 
 
-| Counter |    Operation |
-| :----- | :------ |
-| xst-types    | Calculates how many entities of each OCCT type exist |
-| iges-types   | Calculates how many entities of each IGES type and form exist |
-| iges-levels  | Calculates how many entities lie in different IGES levels |
+| Counter     | Operation |
+| :-----      | :------   |
+| xst-types   | Calculates how many entities of each OCCT type exist |
+| iges-types  | Calculates how many entities of each IGES type and form exist |
+| iges-levels | Calculates how many entities lie in different IGES levels |
 
 **Example:**
 ~~~~~
 
 **Example:**
 ~~~~~
@@ -7496,7 +7496,7 @@ param [<parameter>] [<value>]
 
 This command is used to manage translation parameters. 
 Command without arguments gives a full list of parameters with current values. 
 
 This command is used to manage translation parameters. 
 Command without arguments gives a full list of parameters with current values. 
-Command with <i><parameter></i> (without <i><value></i>) gives us the current value of this parameter and all possible values for it. Command with <i><value></i> sets this new value to <i><parameter></i>.
+Command with <i>\<parameter\></i> (without <i><value></i>) gives us the current value of this parameter and all possible values for it. Command with <i><value></i> sets this new value to <i>\<parameter\></i>.
 
 **Example:**
 
 
 **Example:**
 
@@ -7565,19 +7565,19 @@ tpstat [*|?]<symbol> [<selection>]
 ~~~~~
 
 
 ~~~~~
 
 
-Provides all statistics on the last transfer, including a list of transferred entities with mapping from IGES or STEP to OCCT types, as well as fail and warning messages. The parameter <i><symbol></i> defines what information will be printed: 
+Provides all statistics on the last transfer, including a list of transferred entities with mapping from IGES or STEP to OCCT types, as well as fail and warning messages. The parameter <i>\<symbol\></i> defines what information will be printed: 
 
 
-* *g*  - General statistics (a list of results and messages)
-* *c*  - Count of all warning and fail messages
-* *C*  - List of all warning and fail messages
-* *f*  - Count of all fail messages
-* *F*  - List of all fail messages
-* *n*  - List of all transferred roots
-* *s*  - The same, with types of source entity and the type of result
-* *b*  - The same, with messages
-* *t*  - Count of roots for geometrical types
-* *r*  - Count of roots for topological types
-* *l*  - The same, with the type of the source entity
+* *g* - General statistics (a list of results and messages)
+* *c* - Count of all warning and fail messages
+* *C* - List of all warning and fail messages
+* *f* - Count of all fail messages
+* *F* - List of all fail messages
+* *n* - List of all transferred roots
+* *s* - The same, with types of source entity and the type of result
+* *b* - The same, with messages
+* *t* - Count of roots for geometrical types
+* *r* - Count of roots for topological types
+* *l* - The same, with the type of the source entity
 
 The sign \* before parameters *n, s, b, t, r* makes it work on all entities (not only on roots).
 
 
 The sign \* before parameters *n, s, b, t, r* makes it work on all entities (not only on roots).
 
@@ -7807,7 +7807,7 @@ XWdump <document> <filename>
 ~~~~~
 
 Saves the contents of the viewer window as an image (XWD, png or BMP file). 
 ~~~~~
 
 Saves the contents of the viewer window as an image (XWD, png or BMP file). 
-<i><filename></i> must have a corresponding extention. 
+<i>\<filename\></i> must have a corresponding extention. 
 
 **Example:**
 ~~~~~
 
 **Example:**
 ~~~~~
@@ -8331,7 +8331,7 @@ XSetLayer XSetLayer <document> {<shape>|<label>} <layer> [shape_in_one_layer {0|
 ~~~~~
  
 Sets a reference between a shape and a layer (adds a layer if it is necessary). 
 ~~~~~
  
 Sets a reference between a shape and a layer (adds a layer if it is necessary). 
-Parameter <i><shape_in_one_layer></i> shows whether a shape could be in a number of layers or only in one (0 by default). 
+Parameter <i>\<shape_in_one_layer\></i> shows whether a shape could be in a number of layers or only in one (0 by default). 
 
 **Example:**
 ~~~~~
 
 **Example:**
 ~~~~~
@@ -8573,7 +8573,7 @@ Syntax:
 checkoverlapedges <edge1> <edge2> [<toler> <domaindist>]
 ~~~~~
 
 checkoverlapedges <edge1> <edge2> [<toler> <domaindist>]
 ~~~~~
 
-Checks the overlapping of two given edges. If the distance between two edges is less than the given value of tolerance then edges are overlapped. Parameter <domaindist> sets length of part of edges on which edges are overlapped. 
+Checks the overlapping of two given edges. If the distance between two edges is less than the given value of tolerance then edges are overlapped. Parameter \<domaindist\> sets length of part of edges on which edges are overlapped. 
 
 **Example:**
 ~~~~~
 
 **Example:**
 ~~~~~
@@ -8609,7 +8609,7 @@ convtorevol <result> <shape>
 ~~~~~
 
 Converts all elementary surfaces of a given shape into surfaces of revolution. 
 ~~~~~
 
 Converts all elementary surfaces of a given shape into surfaces of revolution. 
-Results are put into the shape, which is given as the <i><result></i> parameter. 
+Results are put into the shape, which is given as the <i>\<result\></i> parameter. 
 
 **Example:**
 ~~~~~
 
 **Example:**
 ~~~~~
@@ -8667,7 +8667,7 @@ Syntax:
 fixsmalledges <result> <shape> [<toler> <mode> <maxangle>]
 ~~~~~
 
 fixsmalledges <result> <shape> [<toler> <mode> <maxangle>]
 ~~~~~
 
-Searches at least one small edge at a given shape. If such edges have been found, then small edges are merged with a given tolerance. If parameter <i><mode></i> is equal to *Standard_True* (can be given any values, except 2), then  small edges, which can not be merged, are removed, otherwise they are to be kept (*Standard_False* is used by default). Parameter <i><maxangle></i> sets a maximum possible angle for merging two adjacent edges, by default no limit angle is applied (-1). Results are put into the shape, which is given as parameter result. 
+Searches at least one small edge at a given shape. If such edges have been found, then small edges are merged with a given tolerance. If parameter <i>\<mode\></i> is equal to *Standard_True* (can be given any values, except 2), then  small edges, which can not be merged, are removed, otherwise they are to be kept (*Standard_False* is used by default). Parameter <i>\<maxangle\></i> sets a maximum possible angle for merging two adjacent edges, by default no limit angle is applied (-1). Results are put into the shape, which is given as parameter result. 
 
 **Example:**
 ~~~~~
 
 **Example:**
 ~~~~~
@@ -8681,22 +8681,22 @@ Syntax:
 fixshape <result> <shape> [<preci> [<maxpreci>]] [{switches}]
 ~~~~~
 
 fixshape <result> <shape> [<preci> [<maxpreci>]] [{switches}]
 ~~~~~
 
-Performs fixes of all sub-shapes (such as *Solids*, *Shells*, *Faces*, *Wires* and *Edges*) of a given shape. Parameter <i><preci></i> sets a basic precision value, <i><maxpreci></i> sets the maximal allowed tolerance. Results are put into the shape, which is given as parameter result. <b>{switches}</b> allows to tune parameters of ShapeFix 
+Performs fixes of all sub-shapes (such as *Solids*, *Shells*, *Faces*, *Wires* and *Edges*) of a given shape. Parameter <i>\<preci\></i> sets a basic precision value, <i>\<maxpreci\></i> sets the maximal allowed tolerance. Results are put into the shape, which is given as parameter result. <b>{switches}</b> allows to tune parameters of ShapeFix 
 
 The following syntax is used: 
 
 The following syntax is used: 
-* <i><symbol></i> may be
-        * "-" to set parameter off, 
-        * "+" to set on or  
-        * "*" to set default 
-* <i><parameter></i> is identified by  letters: 
-        * l - FixLackingMode 
-        * o - FixOrientationMode 
-        * h - FixShiftedMode 
-        * m - FixMissingSeamMode 
-        * d - FixDegeneratedMode 
-        * s - FixSmallMode 
-        * i - FixSelfIntersectionMode 
-        * n - FixNotchedEdgesMode 
+* <i>\<symbol\></i> may be
+  * "-" to set parameter off, 
+  * "+" to set on or  
+  * "*" to set default 
+* <i>\<parameter\></i> is identified by  letters: 
+  * l - FixLackingMode 
+  * o - FixOrientationMode 
+  * h - FixShiftedMode 
+  * m - FixMissingSeamMode 
+  * d - FixDegeneratedMode 
+  * s - FixSmallMode 
+  * i - FixSelfIntersectionMode 
+  * n - FixNotchedEdgesMode 
 For enhanced message output, use switch '+?' 
 
 **Example:**
 For enhanced message output, use switch '+?' 
 
 **Example:**
@@ -8728,7 +8728,7 @@ offset2dcurve <result> <curve> <offset>
 
 **offsetcurve** works with the curve in 3d space, **offset2dcurve** in 2d space. 
 
 
 **offsetcurve** works with the curve in 3d space, **offset2dcurve** in 2d space. 
 
-Both commands are intended to create a new offset curve by copying the given curve to distance, given by parameter <i><offset></i>. Parameter <i><direction></i> defines direction of the offset curve. It is created as a point. For correct work of these commands the direction of normal of the offset curve must be perpendicular to the plane, the basis curve is located there. Results are put into the curve, which is given as parameter <i><result></i>.  
+Both commands are intended to create a new offset curve by copying the given curve to distance, given by parameter <i>\<offset\></i>. Parameter <i>\<direction\></i> defines direction of the offset curve. It is created as a point. For correct work of these commands the direction of normal of the offset curve must be perpendicular to the plane, the basis curve is located there. Results are put into the curve, which is given as parameter <i>\<result\></i>.  
 
 **Example:**
 ~~~~~
 
 **Example:**
 ~~~~~
@@ -8777,7 +8777,7 @@ Syntax:
 scaleshape <result> <shape> <scale>
 ~~~~~
 
 scaleshape <result> <shape> <scale>
 ~~~~~
 
-Returns a new shape, which is the result of scaling of a given shape with a coefficient equal to the parameter <i><scale></i>. Tolerance is calculated for the  new shape as well.
+Returns a new shape, which is the result of scaling of a given shape with a coefficient equal to the parameter <i>\<scale\></i>. Tolerance is calculated for the  new shape as well.
 
 **Example:**
 ~~~~~
 
 **Example:**
 ~~~~~
@@ -8806,7 +8806,7 @@ Syntax:
 splitface <result> <face> [u usplit1 usplit2...] [v vsplit1 vsplit2 ...]
 ~~~~~
 
 splitface <result> <face> [u usplit1 usplit2...] [v vsplit1 vsplit2 ...]
 ~~~~~
 
-Splits a given face in parametric space and puts the result into the given parameter <i><result></i>. 
+Splits a given face in parametric space and puts the result into the given parameter <i>\<result\></i>. 
 Returns the status of split face. 
 
 **Example:**
 Returns the status of split face. 
 
 **Example:**
@@ -8845,12 +8845,12 @@ statshape a
 
 @subsubsection occt_draw_9_1_19 tolerance
 
 
 @subsubsection occt_draw_9_1_19 tolerance
 
-Syntax:      
+Syntax:
 ~~~~~
 tolerance <shape> [<mode>:D v e f c] [<tolmin> <tolmax>:real]
 ~~~~~
 
 ~~~~~
 tolerance <shape> [<mode>:D v e f c] [<tolmin> <tolmax>:real]
 ~~~~~
 
-Returns tolerance (maximal, avg and minimal values)  of all given shapes and tolerance of their *Faces*, *Edges* and *Vertices*. If parameter <i><tolmin></i> or <i><tolmax></i> or both of them are given, then sub-shapes are returned as a result of analys of this shape, which satisfy the given tolerances. If a particular value of entity ((**D**)all shapes  (**v**) *vertices* (**e**) *edges* (**f**) *faces* (**c**) *combined* (*faces*)) is given as the second parameter then only this group will be analyzed for tolerance. 
+Returns tolerance (maximal, avg and minimal values)  of all given shapes and tolerance of their *Faces*, *Edges* and *Vertices*. If parameter <i>\<tolmin\></i> or <i>\<tolmax\></i> or both of them are given, then sub-shapes are returned as a result of analys of this shape, which satisfy the given tolerances. If a particular value of entity ((**D**)all shapes  (**v**) *vertices* (**e**) *edges* (**f**) *faces* (**c**) *combined* (*faces*)) is given as the second parameter then only this group will be analyzed for tolerance. 
 
 **Example:**
 ~~~~~
 
 **Example:**
 ~~~~~
@@ -8971,7 +8971,7 @@ DT_SplitSurface <result> <Surface|GridSurf> <tol> <split(0|1)>
 Divides surface with C1 criterion and returns the result of splitting of a given surface into surface, which is given as parameter result. If the surface has been divided into segments, then each segment is put to an individual result.  This command can correct a given C0 surface at a knot with a given tolerance, if it is impossible, then the given surface is split at that knot. If the last parameter is 1, then 5 knots are added to the given surface, and its surface is split by segments, but this will be performed not for all parametric spaces. 
 
 **Example:** 
 Divides surface with C1 criterion and returns the result of splitting of a given surface into surface, which is given as parameter result. If the surface has been divided into segments, then each segment is put to an individual result.  This command can correct a given C0 surface at a knot with a given tolerance, if it is impossible, then the given surface is split at that knot. If the last parameter is 1, then 5 knots are added to the given surface, and its surface is split by segments, but this will be performed not for all parametric spaces. 
 
 **Example:** 
-~~~~~    
+~~~~~
 
 ~~~~~
 # split surface with name "su"
 
 ~~~~~
 # split surface with name "su"
@@ -8989,7 +8989,7 @@ DT_SplitSurface res su 0.1 1
 
 @subsubsection occt_draw_9_2_8 DT_ToBspl
 
 
 @subsubsection occt_draw_9_2_8 DT_ToBspl
 
-Syntax:      
+Syntax:
 ~~~~~
 DT_ToBspl <result> <shape>
 ~~~~~
 ~~~~~
 DT_ToBspl <result> <shape>
 ~~~~~
index 760fa9e..306ccb3 100644 (file)
@@ -1,4 +1,4 @@
-Foundation Classes  {#user_guides__foundation_classes}
+Foundation Classes  {#occt_user_guides__foundation_classes}
 =================================
 
 @tableofcontents
 =================================
 
 @tableofcontents
@@ -651,6 +651,7 @@ Item  TCollection_Array1::Value (const Standard_Integer&index) const
 ~~~~~
 
 @subsubsection occt_fcug_2_4_2 Handling  an Exception
 ~~~~~
 
 @subsubsection occt_fcug_2_4_2 Handling  an Exception
+
 When an exception is raised, control is transferred to the  nearest handler of a given type in the call stack, that is: 
   * the handler whose try block was most recently entered and not yet  exited,
   * the handler whose type matches the raise expression.
 When an exception is raised, control is transferred to the  nearest handler of a given type in the call stack, that is: 
   * the handler whose try block was most recently entered and not yet  exited,
   * the handler whose type matches the raise expression.
@@ -740,27 +741,33 @@ In order to actually convert signals to exceptions, macro *OCC_CATCH_SIGNALS* ne
 @subsubsection occt_fcug_2_4_3 Implementation  details
 
 The exception handling mechanism in Open CASCADE Technology  is implemented in different ways depending on the preprocessor macros *NO_CXX_EXCEPTIONS*  and *OCC_CONVERT_SIGNALS*, which shall be consistently defined by compilation  procedures for both Open CASCADE Technology and user applications: 
 @subsubsection occt_fcug_2_4_3 Implementation  details
 
 The exception handling mechanism in Open CASCADE Technology  is implemented in different ways depending on the preprocessor macros *NO_CXX_EXCEPTIONS*  and *OCC_CONVERT_SIGNALS*, which shall be consistently defined by compilation  procedures for both Open CASCADE Technology and user applications: 
+
 1. On  Windows and DEC, these macros are not defined by default, and normal C++  exceptions are used in all cases, including throwing from signal handler. Thus the  behavior is as expected in C++. 
 1. On  Windows and DEC, these macros are not defined by default, and normal C++  exceptions are used in all cases, including throwing from signal handler. Thus the  behavior is as expected in C++. 
+
 2. On  SUN and Linux, macro *OCC_CONVERT_SIGNALS* is defined by default. The C++  exception mechanism is used for catching exceptions and for throwing them from  normal code. Since it is not possible to throw C++ exception from system signal  handler function, that function makes a long jump to the nearest (in the  execution stack) invocation of macro *OCC_CATCH_SIGNALS*, and only there the C++  exception gets actually thrown. The macro *OCC_CATCH_SIGNALS* is defined in the  file *Standard_ErrorHandler.hxx*. Therefore, including this file is necessary for  successful compilation of a code containing this macro. 
 
 2. On  SUN and Linux, macro *OCC_CONVERT_SIGNALS* is defined by default. The C++  exception mechanism is used for catching exceptions and for throwing them from  normal code. Since it is not possible to throw C++ exception from system signal  handler function, that function makes a long jump to the nearest (in the  execution stack) invocation of macro *OCC_CATCH_SIGNALS*, and only there the C++  exception gets actually thrown. The macro *OCC_CATCH_SIGNALS* is defined in the  file *Standard_ErrorHandler.hxx*. Therefore, including this file is necessary for  successful compilation of a code containing this macro. 
 
-This mode differs from standard  C++ exception handling only for signals: 
-  * macro *OCC_CATCH_SIGNALS* is necessary (besides call to  *OSD::SetSignal()* described above) for conversion of signals into exceptions;
-  * the destructors for automatic C++ objects created in the code  after that macro and till the place where signal is raised will not be called in  case of signal, since no C++ stack unwinding is performed by long jump.
-  
+   This mode differs from standard  C++ exception handling only for signals:
+   * macro *OCC_CATCH_SIGNALS* is necessary (besides call to  *OSD::SetSignal()* described above) for conversion of signals into exceptions;
+   * the destructors for automatic C++ objects created in the code  after that macro and till the place where signal is raised will not be called in  case of signal, since no C++ stack unwinding is performed by long jump.
+
 3. On  SUN and Linux Open CASCADE Technology can also be compiled in compatibility  mode (which was default till Open CASCADE Technology 6.1.0). In that case macro  *NO_CXX_EXCEPTIONS* is defined and the C++ exceptions are simulated with C long  jumps. As a consequence, the behavior is slightly different from that expected  in the C++ standard.  
 
 While exception handling with  NO_CXX_EXCEPTIONS is very similar to C++ by syntax, it has a number of  peculiarities that should be taken into account: 
 3. On  SUN and Linux Open CASCADE Technology can also be compiled in compatibility  mode (which was default till Open CASCADE Technology 6.1.0). In that case macro  *NO_CXX_EXCEPTIONS* is defined and the C++ exceptions are simulated with C long  jumps. As a consequence, the behavior is slightly different from that expected  in the C++ standard.  
 
 While exception handling with  NO_CXX_EXCEPTIONS is very similar to C++ by syntax, it has a number of  peculiarities that should be taken into account: 
-  * try and catch are actually macros defined in the file *Standard_ErrorHandler.hxx*. Therefore, including this file is necessary for  handling OCCT exceptions;
-  * due to being a macro, catch cannot contain a declaration of the  exception object after its type; only type is allowed in the catch statement.  Use method *Standard_Failure::Caught()* to access an exception object;
-  * catch macro may conflict with some STL classes that might use  catch(…) statements in their header files. So STL headers should not be  included after *Standard_ErrorHandler.hxx*;
-  * Open CASCADE Technology try/catch block will not handle normal  C++ exceptions; however this can be achieved using special workarounds;
-  * the try macro defines a C++ object that holds an entry point in the  exception handler. Therefore if exception is raised by code located immediately  after the try/catch block but on the same nesting level as *try*, it may  be handled by that *catch*. This may lead to unexpected behavior,  including infinite loop. To avoid that, always surround the try/catch block in  {} braces;
-  * the destructors of the C++ objects allocated on the stack after  handler initialization are not called by exception raising.
 
 
-In general, for writing platform-independent code it is recommended  to insert macros *OCC_CATCH_SIGNALS* in try {} blocks or other code where signals  may happen. For compatibility with previous versions of Open CASCADE Technology  the limitations described above for *NO_CXX_EXCEPTIONS* shall be assumed. 
+* try and catch are actually macros defined in the file *Standard_ErrorHandler.hxx*. Therefore, including this file is necessary for  handling OCCT exceptions;
+* due to being a macro, catch cannot contain a declaration of the  exception object after its type; only type is allowed in the catch statement.  Use method *Standard_Failure::Caught()* to access an exception object;
+* catch macro may conflict with some STL classes that might use  catch(...) statements in their header files. So STL headers should not be  included after *Standard_ErrorHandler.hxx*;
+* Open CASCADE Technology try/catch block will not handle normal  C++ exceptions; however this can be achieved using special workarounds;
+* the try macro defines a C++ object that holds an entry point in the  exception handler. Therefore if exception is raised by code located immediately  after the try/catch block but on the same nesting level as *try*, it may  be handled by that *catch*. This may lead to unexpected behavior,  including infinite loop. To avoid that, always surround the try/catch block in \{\} braces;
+* the destructors of the C++ objects allocated on the stack after  handler initialization are not called by exception raising.
+
+In general, for writing platform-independent code it is recommended  to insert macros *OCC_CATCH_SIGNALS* in try \{\} blocks or other code where signals  may happen. For compatibility with previous versions of Open CASCADE Technology  the limitations described above for *NO_CXX_EXCEPTIONS* shall be assumed. 
 
 @subsection occt_fcug_2_5 Plug-In  Management
 
 @subsection occt_fcug_2_5 Plug-In  Management
+
 @subsubsection occt_fcug_2_5_1 Distribution by Plug-Ins
 @subsubsection occt_fcug_2_5_1 Distribution by Plug-Ins
+
 A plug-in is a component that can be loaded dynamically into  a client application, not requiring to be directly linked to it. The plug-in is  not bound to its client, i.e. the plug-in knows only how its connection  mechanism is defined and how to call the corresponding services. 
 
 A plug-in can be used to: 
 A plug-in is a component that can be loaded dynamically into  a client application, not requiring to be directly linked to it. The plug-in is  not bound to its client, i.e. the plug-in knows only how its connection  mechanism is defined and how to call the corresponding services. 
 
 A plug-in can be used to: 
@@ -916,8 +923,11 @@ public:
 
 
 @section occt_fcug_3 Collections,  Strings and Unit Conversion
 
 
 @section occt_fcug_3 Collections,  Strings and Unit Conversion
+
 @subsection occt_fcug_3_1 Collections
 @subsection occt_fcug_3_1 Collections
+
 @subsubsection occt_fcug_3_1_1 Overview
 @subsubsection occt_fcug_3_1_1 Overview
+
 The **Collections** component contains the classes that  handle dynamically sized aggregates of data. They include a wide range of  collections such as arrays, lists and maps. 
 
 Collections classes are *generic*, that is, they can  hold a variety of objects which do not necessarily inherit from a unique root  class. When you need to use a collection of a given type of object you must *instantiate* it for this specific type of element. Once this declaration is compiled,  all the functions available on the generic collection are available on your *instantiated  class*. 
 The **Collections** component contains the classes that  handle dynamically sized aggregates of data. They include a wide range of  collections such as arrays, lists and maps. 
 
 Collections classes are *generic*, that is, they can  hold a variety of objects which do not necessarily inherit from a unique root  class. When you need to use a collection of a given type of object you must *instantiate* it for this specific type of element. Once this declaration is compiled,  all the functions available on the generic collection are available on your *instantiated  class*. 
index 9481eaa..34a9806 100644 (file)
@@ -1,4 +1,4 @@
-IGES Support  {#user_guides__iges}
+IGES Support  {#occt_user_guides__iges}
 ==================
 
 @tableofcontents
 ==================
 
 @tableofcontents
@@ -356,7 +356,7 @@ for (i = 1; i  = nb; i ++) {
     Handle(Standard_Transient) ent = list-Value(i);  
     Standard_Boolean OK = reader.TransferEntity (ent);  
 } 
     Handle(Standard_Transient) ent = list-Value(i);  
     Standard_Boolean OK = reader.TransferEntity (ent);  
 } 
-~~~~~            
+~~~~~    
 5.  Translate the whole file (all  entities or only visible entities) with:  
 ~~~~~
 Standard_Boolean  onlyvisible = Standard_True or Standard_False;  
 5.  Translate the whole file (all  entities or only visible entities) with:  
 ~~~~~
 Standard_Boolean  onlyvisible = Standard_True or Standard_False;  
@@ -407,25 +407,25 @@ If *failsonly* is  *IFSelect_FailOnly*, only fail messages will be output, if it
 
 @subsubsection occt_iges_2_4_1 Points
 
 
 @subsubsection occt_iges_2_4_1 Points
 
-| IGES entity type     | CASCADE shape  |      Comments |
+| IGES entity type | CASCADE shape  | Comments |
 | :---------------- | :------------- | --------- |
 | :---------------- | :------------- | --------- |
-| 116: Point       | TopoDS_Vertex      | |
+| 116: Point     | TopoDS_Vertex  | |
 
 @subsubsection occt_iges_2_4_2 Curves
 Curves, which form the 2D of face boundaries, are translated  as *Geom2D_Curves* (Geom2D circles, etc.). 
 
 
 @subsubsection occt_iges_2_4_2 Curves
 Curves, which form the 2D of face boundaries, are translated  as *Geom2D_Curves* (Geom2D circles, etc.). 
 
-| IGES entity type     | CASCADE shape | Comments |
+| IGES entity type | CASCADE shape | Comments |
 | :---------------- | :------------ | :------- |
 | :---------------- | :------------ | :------- |
-| 100: Circular Arc |  TopoDS_Edge | The geometrical support is a *Geom_Circle* or a *Geom_TrimmedCurve* (if the arc is not closed). |
+| 100: Circular Arc | TopoDS_Edge | The geometrical support is a *Geom_Circle* or a *Geom_TrimmedCurve* (if the arc is not closed). |
 | 102: Composite Curve  | TopoDS_Wire | The resulting shape is always a *TopoDS_Wire* that is built from a set of *TopoDS_Edges*. Each *TopoDS_Edge* is connected to the preceding and to the following edge by a common *TopoDS_Vertex*. |
 | 102: Composite Curve  | TopoDS_Wire | The resulting shape is always a *TopoDS_Wire* that is built from a set of *TopoDS_Edges*. Each *TopoDS_Edge* is connected to the preceding and to the following edge by a common *TopoDS_Vertex*. |
-| 104: Conic Arc |     TopoDS_Edge     | The geometric support depends on whether the IGES entity's form is 0 (*Geom_Circle*), 1 (*Geom_Ellipse*), 2 (*Geom_Hyperbola*), or 3 (*Geom_Parabola*). A *Geom_TrimmedCurve* is output if the arc is not closed. |
-| 106: Copious Data    | TopoDS_Edge or TopoDS_Wire | IGES entity Copious Data (type 106, forms 1-3) is translated just as the IGES entities Linear Path (106/11-13) and the Simple Closed Planar Curve (106/63). Vectors applying to forms other than 11,12 or 63 are ignored. The *Geom_BSplineCurve* (geometrical support) has C0 continuity. If the Copious Data has vectors (DataType = 3) they will be ignored. |
-| 110: Line    | TopoDS_Edge   | The supporting curve is a *Geom_TrimmedCurve* whose basis curve is a *Geom_Line*. |
-| 112: Parametric Spline Curve | TopoDS_Edge or TopoDS_Wire    | The geometric support is a Geom_BsplineCurve. |
-| 126: BSpline Curve   | TopoDS_Edge or TopoDS_Wire    | |
-| 130: Offset Curve    | TopoDS_Edge or TopoDS_Wire |  The resulting shape is a *TopoDS_Edge* or a *TopoDS_Wire* (depending on the translation of the basis curve) whose geometrical support is a *Geom_OffsetCurve* built from a basis *Geom_Curve*. Limitation: The IGES Offset Type value must be 1. |
-| 141: Boundary        | TopoDS_Wire   | Same behavior as for the Curve On Surface (see below). The translation of a non-referenced Boundary IGES entity in a *BoundedSurface* IGES entity outputs a *TopoDS_Edge* or a *TopoDS_Wire* with a *Geom_Curve*. |
-| 142: Curve On Surface        | TopoDS_Wire   | Each *TopoDS_Edge* is defined by a 3D curve and by a 2D curve that references the surface. |
+| 104: Conic Arc | TopoDS_Edge | The geometric support depends on whether the IGES entity's form is 0 (*Geom_Circle*), 1 (*Geom_Ellipse*), 2 (*Geom_Hyperbola*), or 3 (*Geom_Parabola*). A *Geom_TrimmedCurve* is output if the arc is not closed. |
+| 106: Copious Data | TopoDS_Edge or TopoDS_Wire | IGES entity Copious Data (type 106, forms 1-3) is translated just as the IGES entities Linear Path (106/11-13) and the Simple Closed Planar Curve (106/63). Vectors applying to forms other than 11,12 or 63 are ignored. The *Geom_BSplineCurve* (geometrical support) has C0 continuity. If the Copious Data has vectors (DataType = 3) they will be ignored. |
+| 110: Line | TopoDS_Edge | The supporting curve is a *Geom_TrimmedCurve* whose basis curve is a *Geom_Line*. |
+| 112: Parametric Spline Curve | TopoDS_Edge or TopoDS_Wire | The geometric support is a Geom_BsplineCurve. |
+| 126: BSpline Curve | TopoDS_Edge or TopoDS_Wire | |
+| 130: Offset Curve | TopoDS_Edge or TopoDS_Wire | The resulting shape is a *TopoDS_Edge* or a *TopoDS_Wire* (depending on the translation of the basis curve) whose geometrical support is a *Geom_OffsetCurve* built from a basis *Geom_Curve*. Limitation: The IGES Offset Type value must be 1. |
+| 141: Boundary | TopoDS_Wire | Same behavior as for the Curve On Surface (see below). The translation of a non-referenced Boundary IGES entity in a *BoundedSurface* IGES entity outputs a *TopoDS_Edge* or a *TopoDS_Wire* with a *Geom_Curve*. |
+| 142: Curve On Surface | TopoDS_Wire | Each *TopoDS_Edge* is defined by a 3D curve and by a 2D curve that references the surface. |
 
 The type of OCCT shapes (either *TopDS_Edges* or  *TopoDS_Wires*) that result from the translation of IGES entities 106, 112 and  126 depends on the continuity of the curve in the IGES file and the value of  the *read.iges.bspline.continuity* translation parameter. 
 
 
 The type of OCCT shapes (either *TopDS_Edges* or  *TopoDS_Wires*) that result from the translation of IGES entities 106, 112 and  126 depends on the continuity of the curve in the IGES file and the value of  the *read.iges.bspline.continuity* translation parameter. 
 
@@ -433,52 +433,52 @@ The type of OCCT shapes (either *TopDS_Edges* or  *TopoDS_Wires*) that result fr
 Translation of a surface outputs either a *TopoDS_Face* or a  *TopoDS_Shell*.  
 If a *TopoDS_Face* is output, its geometrical support is a  *Geom_Surface* and its outer and inner boundaries (if it has any) are  *TopoDS_Wires*. 
 
 Translation of a surface outputs either a *TopoDS_Face* or a  *TopoDS_Shell*.  
 If a *TopoDS_Face* is output, its geometrical support is a  *Geom_Surface* and its outer and inner boundaries (if it has any) are  *TopoDS_Wires*. 
 
-| IGES entity type     | CASCADE shape | Comments |
+| IGES entity type | CASCADE shape | Comments |
 | :--------------  | :------------ | :--------- |
 | :--------------  | :------------ | :--------- |
-| 108: Plane |         TopoDS_Face |   The geometrical support for the *TopoDS_Face* is a *Geom_Plane* and the orientation of its *TopoDS_Wire* depends on whether it is an outer *TopoDS_Wire* or whether it is a hole. |
-| 114: Parametric Spline Surface | TopoDS_Face |       The geometrical support of a *TopoDS_Face* is a *Geom_BSplineSurface*. |
-| 118: Ruled Surface | TopoDS_Face or TopoDS_Shell     | The translation of a Ruled Surface outputs a *TopoDS_Face* if the profile curves become *TopoDS_Edges*, or a *TopoDS_Shell* if the profile curves become *TopoDS_Wires*. Limitation: This translation cannot be completed when these two *TopoDS_Wires* are oriented in different directions.  |
+| 108: Plane |  TopoDS_Face |  The geometrical support for the *TopoDS_Face* is a *Geom_Plane* and the orientation of its *TopoDS_Wire* depends on whether it is an outer *TopoDS_Wire* or whether it is a hole. |
+| 114: Parametric Spline Surface | TopoDS_Face | The geometrical support of a *TopoDS_Face* is a *Geom_BSplineSurface*. |
+| 118: Ruled Surface | TopoDS_Face or TopoDS_Shell | The translation of a Ruled Surface outputs a *TopoDS_Face* if the profile curves become *TopoDS_Edges*, or a *TopoDS_Shell* if the profile curves become *TopoDS_Wires*. Limitation: This translation cannot be completed when these two *TopoDS_Wires* are oriented in different directions.  |
 | 120: Surface Of Revolution | TopoDS_Face or TopoDS_Shell | The translation of a Surface Of Revolution outputs: a *TopoDS_Face* if the generatrix becomes a *TopoDS_Edge*, a *TopoDS_Shell* if the generatrix becomes a *TopoDS_Wire*. The geometrical support may be: *Geom_CylindricalSurface, Geom_ConicalSurface, Geom_SphericalSurface, Geom_ToroidalSurface* or a *Geom_SurfaceOfRevolution* depending on the result of the CASCADE computation (based on the generatrix type). | 
 | 120: Surface Of Revolution | TopoDS_Face or TopoDS_Shell | The translation of a Surface Of Revolution outputs: a *TopoDS_Face* if the generatrix becomes a *TopoDS_Edge*, a *TopoDS_Shell* if the generatrix becomes a *TopoDS_Wire*. The geometrical support may be: *Geom_CylindricalSurface, Geom_ConicalSurface, Geom_SphericalSurface, Geom_ToroidalSurface* or a *Geom_SurfaceOfRevolution* depending on the result of the CASCADE computation (based on the generatrix type). | 
-| 122: Tabulated Cylinder      | TopoDS_Face or TopoDS_Shell | The translation outputs a *TopoDS_Face* if the base becomes a *TopoDS_Edge* or a *TopoDS_Shell* if the base becomes a *TopoDS_Wire*. The geometrical support may be *Geom_Plane, Geom_Cylindrical Surface* or a *Geom_SurfaceOfLinearExtrusion* depending on the result of the CASCADE computation (based on the generatrix type). The *Geom_Surface* geometrical support is limited according to the generatrix. |
-| 128: BSpline Surface | TopoDS_Face   | The geometrical support of the *TopoDS_Face* is a *Geom_BsplineSurface*. |
-| 140: Offset Surface  | TopoDS_Face | The translation of an Offset Surface outputs a *TopoDS_Face* whose geometrical support is a *Geom_OffsetSurface*. Limitations: For OCCT algorithms, the original surface must be C1-continuous so that the *Geom_OffsetSurface* can be created. If the basis surface is not C1-continuous, its translation outputs a *TopoDS_Shell* and only the first *TopoDS_Face* in the *TopoDS_Shell* is offset. |
-| 143: Bounded Surface | TopoDS_Face or TopoDS_Shell   | If the basis surface outputs a *TopoDS_Shell* (that has more than one *TopoDS_Face*), the IGES boundaries are not translated. Limitations: If the bounding curves define holes, natural bounds are not created. If the orientation of the contours is wrong, it is not corrected. |
-| 144: Trimmed Surface | TopoDS_Face or TopoDS_Shell | For the needs of interface processing, the basis surface must be a face. Shells are only processed if they are single-face. The contours (wires that are correctly oriented according to the definition of the IGES 142: Curve On Surface entity) are added to the face that is already created. If the orientation of the contours is wrong, it is corrected. |
-| 190: Plane Surface   | TopoDS_Face | This type of IGES entity can only be used in BRep entities in place of an IGES 108 type entity. The geometrical support of the face is a *Geom_Plane*. | 
+| 122: Tabulated Cylinder | TopoDS_Face or TopoDS_Shell | The translation outputs a *TopoDS_Face* if the base becomes a *TopoDS_Edge* or a *TopoDS_Shell* if the base becomes a *TopoDS_Wire*. The geometrical support may be *Geom_Plane, Geom_Cylindrical Surface* or a *Geom_SurfaceOfLinearExtrusion* depending on the result of the CASCADE computation (based on the generatrix type). The *Geom_Surface* geometrical support is limited according to the generatrix. |
+| 128: BSpline Surface | TopoDS_Face | The geometrical support of the *TopoDS_Face* is a *Geom_BsplineSurface*. |
+| 140: Offset Surface | TopoDS_Face | The translation of an Offset Surface outputs a *TopoDS_Face* whose geometrical support is a *Geom_OffsetSurface*. Limitations: For OCCT algorithms, the original surface must be C1-continuous so that the *Geom_OffsetSurface* can be created. If the basis surface is not C1-continuous, its translation outputs a *TopoDS_Shell* and only the first *TopoDS_Face* in the *TopoDS_Shell* is offset. |
+| 143: Bounded Surface | TopoDS_Face or TopoDS_Shell | If the basis surface outputs a *TopoDS_Shell* (that has more than one *TopoDS_Face*), the IGES boundaries are not translated. Limitations: If the bounding curves define holes, natural bounds are not created. If the orientation of the contours is wrong, it is not corrected. |
+| 144: Trimmed Surface | TopoDS_Face or TopoDS_Shell | For the needs of interface processing, the basis surface must be a face. Shells are only processed if they are single-face. The contours (wires that are correctly oriented according to the definition of the IGES 142: Curve On Surface entity) are added to the face that is already created. If the orientation of the contours is wrong, it is corrected. |
+| 190: Plane Surface | TopoDS_Face | This type of IGES entity can only be used in BRep entities in place of an IGES 108 type entity. The geometrical support of the face is a *Geom_Plane*. | 
 
 
 @subsubsection occt_iges_2_4_4 Boundary Representation  Solid Entities
 
 
 
 @subsubsection occt_iges_2_4_4 Boundary Representation  Solid Entities
 
-| IGES entity type     | CASCADE shape | Comments |
+| IGES entity type | CASCADE shape | Comments |
 | :---------------- | :------------ | :------- |
 | :---------------- | :------------ | :------- |
-| 186: ManifoldSolid   | TopoDS_Solid  | |
-| 514: Shell   | TopoDS_Shell  | |
-| 510: Face    | TopoDS_Face   | This is the lowest IGES entity in the BRep structure that can be specified as a starting point for translation. |
-| 508: Loop |  TopoDS_Wire     | | 
-| 504: Edge List       | | |
-| 502: Vertex List     | | | 
+| 186: ManifoldSolid | TopoDS_Solid | |
+| 514: Shell | TopoDS_Shell | |
+| 510: Face | TopoDS_Face | This is the lowest IGES entity in the BRep structure that can be specified as a starting point for translation. |
+| 508: Loop | TopoDS_Wire | | 
+| 504: Edge List | | |
+| 502: Vertex List | | | 
 
 
 @subsubsection occt_iges_2_4_5 Structure Entities
 
 
 
 @subsubsection occt_iges_2_4_5 Structure Entities
 
-| IGES entity type     | CASCADE shape | Comments | 
+| IGES entity type | CASCADE shape | Comments | 
 | :---------------- | :------------ | :------- |
 | :---------------- | :------------ | :------- |
-| 402/1: Associativity Instance: Group with back pointers |    TopoDS_Compound | |
-| 402/7: Associativity Instance: Group without back pointers | TopoDS_Compound | |
+| 402/1: Associativity Instance: Group with back pointers |  TopoDS_Compound | |
+| 402/7: Associativity Instance: Group without back pointers | TopoDS_Compound | |
 | 402/9: Associativity Instance: Single Parent | TopoDS_Face | The translation of a *SingleParent* entity is only performed for 402 form 9 with entities 108/1 and 108/-1. The geometrical support for the *TopoDS_Face* is a *Geom_Plane* with boundaries: the parent plane defines the outer boundary; the child planes define the inner boundaries. |
 
 @subsubsection occt_iges_2_4_6 Subfigures
 
 | 402/9: Associativity Instance: Single Parent | TopoDS_Face | The translation of a *SingleParent* entity is only performed for 402 form 9 with entities 108/1 and 108/-1. The geometrical support for the *TopoDS_Face* is a *Geom_Plane* with boundaries: the parent plane defines the outer boundary; the child planes define the inner boundaries. |
 
 @subsubsection occt_iges_2_4_6 Subfigures
 
-| IGES entity type     | CASCADE shape | Comments |
+| IGES entity type | CASCADE shape | Comments |
 | :---------------- | :------------ | :------- |
 | :---------------- | :------------ | :------- |
-| 308: Subfigure Definition    | TopoDS_Compound | This IGES entity is only translated when there are no Singular Subfigure Instance entities. |
-| 408: Singular Subfigure Instance     | TopoDS_Compound | This shape has the Subfigure Definition Compound as its origin and is positioned in space by its translation vector and its scale factor. |
+| 308: Subfigure Definition | TopoDS_Compound | This IGES entity is only translated when there are no Singular Subfigure Instance entities. |
+| 408: Singular Subfigure Instance | TopoDS_Compound | This shape has the Subfigure Definition Compound as its origin and is positioned in space by its translation vector and its scale factor. |
 
 @subsubsection occt_iges_2_4_7 Transformation Matrix  
 
 
 @subsubsection occt_iges_2_4_7 Transformation Matrix  
 
-| IGES entity type     | CASCADE shape | Comments |
+| IGES entity type | CASCADE shape | Comments |
 | :---------------  | :------------ | :------- |
 | :---------------  | :------------ | :------- |
-| 124: Transformation Matrix   | Geom_Transformation   | This entity is never translated alone. It must be included in the definition of another entity. |
+| 124: Transformation Matrix | Geom_Transformation | This entity is never translated alone. It must be included in the definition of another entity. |
 
 
 @subsection occt_iges_2_5 Messages
 
 
 @subsection occt_iges_2_5 Messages
@@ -657,8 +657,8 @@ The result is an *IGESControl_Writer* object.
 The following parameters are used for the OCCT-to-IGES  translation. 
 
 * *write.iges.brep.mode:* allows choosing the  write mode:  
 The following parameters are used for the OCCT-to-IGES  translation. 
 
 * *write.iges.brep.mode:* allows choosing the  write mode:  
      * "Faces" (0): OCCT *TopoDS_Faces* will be translated into IGES 144 (Trimmed Surface) entities, no B-Rep entities  will be written to the IGES file,  
      * "BRep" (1): OCCT *TopoDS_Faces*  will be translated into IGES 510 (Face) entities, the IGES file will contain  B-Rep entities.  
+ * "Faces" (0): OCCT *TopoDS_Faces* will be translated into IGES 144 (Trimmed Surface) entities, no B-Rep entities  will be written to the IGES file,  
+ * "BRep" (1): OCCT *TopoDS_Faces*  will be translated into IGES 510 (Face) entities, the IGES file will contain  B-Rep entities.  
 Read this parameter  with:  
 ~~~~~
 Standard_Integer byvalue =  Interface_Static::IVal("write.iges.brep.mode"); 
 Read this parameter  with:  
 ~~~~~
 Standard_Integer byvalue =  Interface_Static::IVal("write.iges.brep.mode"); 
@@ -670,28 +670,28 @@ Interface_Static::SetIVal  ("write.iges.brep.mode", 1);
 Default value is "Faces" (0).  
 * *write.convertsurface.mode* when writing to IGES in the BRep mode, this parameter indicates whether elementary surfaces (cylindrical, conical,  spherical,   and toroidal) are converted into corresponding IGES 5.3 entities (if  the value of a parameter value is On), or written as surfaces of revolution (by default). 
 * *write.iges.unit:* allows choosing the unit. The default unit for Open CASCADE Technology is "MM" (millimeter). You can  choose to write a file into any unit accepted by IGES.  
 Default value is "Faces" (0).  
 * *write.convertsurface.mode* when writing to IGES in the BRep mode, this parameter indicates whether elementary surfaces (cylindrical, conical,  spherical,   and toroidal) are converted into corresponding IGES 5.3 entities (if  the value of a parameter value is On), or written as surfaces of revolution (by default). 
 * *write.iges.unit:* allows choosing the unit. The default unit for Open CASCADE Technology is "MM" (millimeter). You can  choose to write a file into any unit accepted by IGES.  
      * Read this parameter  with *Standard_String byvalue =  Interface_Static::CVal("write.iges.unit")*; 
      * Modify this parameter  with *Interface_Static::SetCVal ("write.iges.unit", "INCH");* 
+ * Read this parameter  with *Standard_String byvalue =  Interface_Static::CVal("write.iges.unit")*; 
+ * Modify this parameter  with *Interface_Static::SetCVal ("write.iges.unit", "INCH");* 
 * *write.iges.header.autor:* gives the name of the  author of the file.  The default value is the system name of the user.  
 * *write.iges.header.autor:* gives the name of the  author of the file.  The default value is the system name of the user.  
      * Read this parameter  with  *Standard_String byvalue =  Interface_Static::CVal("write.iges.header.author")*; 
      * Modify this value with  *Interface_Static::SetCVal  ("write.iges.header.author", "name")*; 
+ * Read this parameter  with  *Standard_String byvalue =  Interface_Static::CVal("write.iges.header.author")*; 
+ * Modify this value with  *Interface_Static::SetCVal  ("write.iges.header.author", "name")*; 
 * *write.iges.header.company:* gives the name of the  sending company.  The default value is  "" (empty).
 * *write.iges.header.company:* gives the name of the  sending company.  The default value is  "" (empty).
      * Read this parameter  with *Standard_String byvalue =  Interface_Static::CVal("write.iges.header.company");*
      * Modify this value with *Interface_Static::SetCVal ("write.iges.header.company", "Open CASCADE");* 
+ * Read this parameter  with *Standard_String byvalue =  Interface_Static::CVal("write.iges.header.company");*
+ * Modify this value with *Interface_Static::SetCVal ("write.iges.header.company", "Open CASCADE");* 
 * *write.iges.header.product:* gives the name of the  sending product. The default value is  "CAS.CADE IGES processor Vx.x", where *x.x* means the current version of  Open CASCADE Technology.  
 * *write.iges.header.product:* gives the name of the  sending product. The default value is  "CAS.CADE IGES processor Vx.x", where *x.x* means the current version of  Open CASCADE Technology.  
      * Read this parameter  with *Standard_String byvalue =  Interface_Static::CVal("write.iges.header.product")*; 
      * Modify this value with *Interface_Static::SetCVal  ("write.iges.header.product", "product name")*; 
+ * Read this parameter  with *Standard_String byvalue =  Interface_Static::CVal("write.iges.header.product")*; 
+ * Modify this value with *Interface_Static::SetCVal  ("write.iges.header.product", "product name")*; 
 * *write.iges.header.receiver:* - gives the name of the  receiving company.  The default value is  "" (empty).
 * *write.iges.header.receiver:* - gives the name of the  receiving company.  The default value is  "" (empty).
      * Read this parameter  with     *Standard_String byvalue =  Interface_Static::CVal("write.iges.header.receiver");* 
      * Modify this value with *Interface_Static::SetCVal  ("write.iges.header.receiver", "reciever name");* 
* Read this parameter  with *Standard_String byvalue =  Interface_Static::CVal("write.iges.header.receiver");* 
+ * Modify this value with *Interface_Static::SetCVal  ("write.iges.header.receiver", "reciever name");* 
 * *write.precision.mode:* specifies the mode of  writing the resolution value into the IGES file.  
 * *write.precision.mode:* specifies the mode of  writing the resolution value into the IGES file.  
      * "Least" (-1):       resolution value is  set to the minimum tolerance of all edges and all vertices in an OCCT shape.  
      * "Average" (0):    resolution value is  set to average between the average tolerance of all edges and the average  tolerance of all vertices in an OCCT shape. This is the default value.  
      * "Greatest" (1):   resolution value is  set to the maximum tolerance of all edges and all vertices in an OCCT shape.  
      * "Session" (2):    resolution  value is that of the write.precision.val parameter.  
-       
      * Read this parameter  with *Standard_Integer ic =  Interface_Static::IVal("write.precision.mode");* 
      * Modify this parameter  with *if  (!Interface_Static\::SetIVal("write.precision.mode",1))  .. error .. *
+ * "Least" (-1):       resolution value is  set to the minimum tolerance of all edges and all vertices in an OCCT shape.  
+ * "Average" (0):    resolution value is  set to average between the average tolerance of all edges and the average  tolerance of all vertices in an OCCT shape. This is the default value.  
+ * "Greatest" (1):   resolution value is  set to the maximum tolerance of all edges and all vertices in an OCCT shape.  
+ * "Session" (2):    resolution  value is that of the write.precision.val parameter.  
+ * Read this parameter  with *Standard_Integer ic =  Interface_Static::IVal("write.precision.mode");* 
+ * Modify this parameter  with *if  (!Interface_Static\::SetIVal("write.precision.mode",1))  .. error .. *
 * *write.precision.val:* is the user precision value.  This parameter gives the resolution value for an IGES file when the  *write.precision.mode* parameter value is 1.  It is equal to 0.0001 by default, but can take any real positive (non null) value.  
 
 Read this parameter  with:  
 * *write.precision.val:* is the user precision value.  This parameter gives the resolution value for an IGES file when the  *write.precision.mode* parameter value is 1.  It is equal to 0.0001 by default, but can take any real positive (non null) value.  
 
 Read this parameter  with:  
@@ -744,60 +744,60 @@ Translated objects depend on the write mode that you chose.  If you chose the Fa
 
 @subsubsection occt_iges_3_4_1 Curves
 
 
 @subsubsection occt_iges_3_4_1 Curves
 
-| CASCADE shape        | IGES entity type      | Comments |
+| CASCADE shape | IGES entity type | Comments |
 | :------------ | :---------------- | :------- | 
 | :------------ | :---------------- | :------- | 
-| Geom_BsplineCurve    | 126: BSpline Curve    | |
-| Geom_BezierCurve     | 126: BSpline Curve    | |
-| Geom_TrimmedCurve    | All types of translatable IGES curves | The type of entity output depends on the type of the basis curve. If the curve is not trimmed, limiting points will be defined by the CASCADE RealLast value. |
-| Geom_Circle  | 100: Circular Arc or 126: BSpline Curve       | A BSpline Curve is output if the *Geom_Circle* is closed |
-| Geom_Ellipse | 104: Conic Arc or 126: BSpline Curve  | A Conic Arc has Form 1. A BSpline Curve is output if the *Geom_Ellipse* is closed. |
+| Geom_BsplineCurve | 126: BSpline Curve | |
+| Geom_BezierCurve | 126: BSpline Curve | |
+| Geom_TrimmedCurve | All types of translatable IGES curves | The type of entity output depends on the type of the basis curve. If the curve is not trimmed, limiting points will be defined by the CASCADE RealLast value. |
+| Geom_Circle | 100: Circular Arc or 126: BSpline Curve | A BSpline Curve is output if the *Geom_Circle* is closed |
+| Geom_Ellipse | 104: Conic Arc or 126: BSpline Curve | A Conic Arc has Form 1. A BSpline Curve is output if the *Geom_Ellipse* is closed. |
 | Geom_Hyperbola | 104: Conic Arc | Form 2 |
 | Geom_Hyperbola | 104: Conic Arc | Form 2 |
-| Geom_Parabola        | 104: Conic Arc | Form 3 | 
-| Geom_Line    | 110: Line     | |
-| Geom_OffsetCurve     | 130: Offset Curve     | |
+| Geom_Parabola | 104: Conic Arc | Form 3 | 
+| Geom_Line | 110: Line | |
+| Geom_OffsetCurve | 130: Offset Curve | |
 
 @subsubsection occt_iges_3_4_2 Surfaces
 
 
 @subsubsection occt_iges_3_4_2 Surfaces
 
-| CASCADE shapes | IGES entity type    | Comments |
+| CASCADE shapes | IGES entity type | Comments |
 | :------------- | :--------------- | :------- |
 | Geom_BSplineSurface | 128: BSpline Surface | |
 | :------------- | :--------------- | :------- |
 | Geom_BSplineSurface | 128: BSpline Surface | |
-| Geom_BezierSurface | 128: BSpline Surface    | |
+| Geom_BezierSurface | 128: BSpline Surface | |
 | Geom_RectangularTrimmedSurface | All types of translatable IGES surfaces. | The type of entity output depends on the type of the basis surface. If the surface is not trimmed and has infinite edges/sides, the coordinates of the sides in IGES will be limited to the CASCADE *RealLast* value. |
 | Geom_Plane | 128: BSpline Surface or 190: Plane Surface | A BSpline Surface (of degree 1 in U and V) is output if you are working in the face mode. A Plane Surface is output if you are working in the BRep mode. |
 | Geom_CylindricalSurface | 120: Surface Of Revolution | |
 | Geom_RectangularTrimmedSurface | All types of translatable IGES surfaces. | The type of entity output depends on the type of the basis surface. If the surface is not trimmed and has infinite edges/sides, the coordinates of the sides in IGES will be limited to the CASCADE *RealLast* value. |
 | Geom_Plane | 128: BSpline Surface or 190: Plane Surface | A BSpline Surface (of degree 1 in U and V) is output if you are working in the face mode. A Plane Surface is output if you are working in the BRep mode. |
 | Geom_CylindricalSurface | 120: Surface Of Revolution | |
-| Geom_ConicalSurface | 120: Surface Of Revolution     | | 
-| Geom_SphericalSurface        | 120: Surface Of Revolution | |
-| Geom_ToroidalSurface | 120: Surface Of Revolution    | |
-| Geom_SurfaceOfLinearExtrusion        | 122: Tabulated Cylinder | |
-| Geom_SurfaceOfRevolution | 120: Surface Of Revolution        | |
+| Geom_ConicalSurface | 120: Surface Of Revolution | | 
+| Geom_SphericalSurface | 120: Surface Of Revolution | |
+| Geom_ToroidalSurface | 120: Surface Of Revolution | |
+| Geom_SurfaceOfLinearExtrusion | 122: Tabulated Cylinder | |
+| Geom_SurfaceOfRevolution | 120: Surface Of Revolution | |
 | Geom_OffsetSurface | 140: Offset Surface | |
 
 @subsubsection occt_iges_3_4_3 Topological entities - Translation in Face mode
 
 | Geom_OffsetSurface | 140: Offset Surface | |
 
 @subsubsection occt_iges_3_4_3 Topological entities - Translation in Face mode
 
-| CASCADE shapes | IGES entity type    | Comments |
+| CASCADE shapes | IGES entity type | Comments |
 | :------------- | :--------------- | :------- |
 | :------------- | :--------------- | :------- |
-| Single TopoDS_Vertex | 116: 3D Point | |
+| Single TopoDS_Vertex | 116: 3D Point | |
 | TopoDS_Vertex in a TopoDS_Edge | No equivalent | Not transferred. |
 | TopoDS_Edge | All types of translatable IGES curves | The output IGES curve will be the one that corresponds to the Open CASCADE Technology definition. |
 | TopoDS_Vertex in a TopoDS_Edge | No equivalent | Not transferred. |
 | TopoDS_Edge | All types of translatable IGES curves | The output IGES curve will be the one that corresponds to the Open CASCADE Technology definition. |
-| Single TopoDS_Wire | 102: Composite Curve    | Each *TopoDS_Edge* in the *TopoDS_Wire* results in a curve. |
+| Single TopoDS_Wire | 102: Composite Curve | Each *TopoDS_Edge* in the *TopoDS_Wire* results in a curve. |
 | TopoDS_Wire in a TopoDS_Face | 142: Curve On Surface | Both curves (3D and pcurve) are transferred if they are defined and result in a simple curve or a composite curve depending on whether there is one or more edges in the wire.Note: if the basis surface is a plane (108), only the 3D curve is used. |
 | TopoDS_Face | 144: Trimmed Surface | |
 | TopoDS_Wire in a TopoDS_Face | 142: Curve On Surface | Both curves (3D and pcurve) are transferred if they are defined and result in a simple curve or a composite curve depending on whether there is one or more edges in the wire.Note: if the basis surface is a plane (108), only the 3D curve is used. |
 | TopoDS_Face | 144: Trimmed Surface | |
-| TopoDS_Shell | 402: Form 1 Group or no equivalent    | Group is created only if *TopoDS_Shell* contains more than one *TopoDS_Face*. The IGES group contains Trimmed Surfaces. |
-| TopoDS_Solid | 402: Form 1 Group or no equivalent | Group is created only if *TopoDS_Solid* contains more than one *TopoDS_Shell*. One IGES entity is created per *TopoDS_Shell*. |
-| TopoDS_CompSolid | 402: Form 1 Group or no equivalent        | Group is created only if *TopoDS_CompSolid* contains more than one *TopoDS_Solid*. One IGES entity is created per *TopoDS_Solid*. |
+| TopoDS_Shell | 402: Form 1 Group or no equivalent | Group is created only if *TopoDS_Shell* contains more than one *TopoDS_Face*. The IGES group contains Trimmed Surfaces. |
+| TopoDS_Solid | 402: Form 1 Group or no equivalent | Group is created only if *TopoDS_Solid* contains more than one *TopoDS_Shell*. One IGES entity is created per *TopoDS_Shell*. |
+| TopoDS_CompSolid | 402: Form 1 Group or no equivalent | Group is created only if *TopoDS_CompSolid* contains more than one *TopoDS_Solid*. One IGES entity is created per *TopoDS_Solid*. |
 | TopoDS_Compound | 402: Form 1 Group or no equivalent | Group is created only if *TopoDS_Compound* contains more than one item. One IGES entity is created per *TopoDS_Shape* in the *TopoDS_Compound*. If *TopoDS_Compound* is nested into another *TopoDS_Compound*, it is not mapped. |
 
 @subsubsection occt_iges_3_4_4 Topological entities - Translation in BRep mode
 
 | TopoDS_Compound | 402: Form 1 Group or no equivalent | Group is created only if *TopoDS_Compound* contains more than one item. One IGES entity is created per *TopoDS_Shape* in the *TopoDS_Compound*. If *TopoDS_Compound* is nested into another *TopoDS_Compound*, it is not mapped. |
 
 @subsubsection occt_iges_3_4_4 Topological entities - Translation in BRep mode
 
-| CASCADE shapes | IGES entity type    | Comments |
+| CASCADE shapes | IGES entity type | Comments |
 | :------------- | :--------------- | :------- |
 | :------------- | :--------------- | :------- |
-| Single TopoDS_Vertex | No equivalent | Not transferred. |
-| TopoDS_Vertex in a TopoDS_Edge | One item in a 502: *VertexList* | | 
-| TopoDS_Edge |        No equivalent | Not transferred as such. This entity serves as a part of a Loop entity. |
+| Single TopoDS_Vertex | No equivalent | Not transferred. |
+| TopoDS_Vertex in a TopoDS_Edge | One item in a 502: *VertexList* | | 
+| TopoDS_Edge | No equivalent | Not transferred as such. This entity serves as a part of a Loop entity. |
 | TopoDS_Edge in a TopoDS_Wire | One item in a 504: EdgeList | |
 | TopoDS_Wire | 508: Loop | |
 | TopoDS_Edge in a TopoDS_Wire | One item in a 504: EdgeList | |
 | TopoDS_Wire | 508: Loop | |
-| TopoDS_Face | 510: Face |    If the geometrical support of the face is a plane, it will be translated as a 190 entity *PlaneSurface*. |
-| TopoDS_Shell | 514: Shell    | |
+| TopoDS_Face | 510: Face | If the geometrical support of the face is a plane, it will be translated as a 190 entity *PlaneSurface*. |
+| TopoDS_Shell | 514: Shell | |
 | TopoDS_Solid | 186: Manifold Solid | |
 | TopoDS_CompSolid | 402 Form1 Group or no equivalent | Group is created only if *TopoDS_Compound* contains more than one item. One IGES Manifold Solid is created for each *TopoDS_Solid* in the *TopoDS_CompSolid*. |
 | TopoDS_Compound | 402 Form1 Group or no equivalent | Group is created only if *TopoDS_Compound* contains more than one item. One IGES entity is created per *TopoDS_Shape* in the *TopoDS_Compound*. If *TopoDS_Compound* is nested into another *TopoDS_Compound* it is not mapped. | 
 | TopoDS_Solid | 186: Manifold Solid | |
 | TopoDS_CompSolid | 402 Form1 Group or no equivalent | Group is created only if *TopoDS_Compound* contains more than one item. One IGES Manifold Solid is created for each *TopoDS_Solid* in the *TopoDS_CompSolid*. |
 | TopoDS_Compound | 402 Form1 Group or no equivalent | Group is created only if *TopoDS_Compound* contains more than one item. One IGES entity is created per *TopoDS_Shape* in the *TopoDS_Compound*. If *TopoDS_Compound* is nested into another *TopoDS_Compound* it is not mapped. | 
@@ -847,7 +847,11 @@ In the description of  commands, square brackets ([]) are used to indicate optio
 @subsection occt_iges_4_2 Setting interface  parameters
 
 A set of parameters for  importing and exporting IGES files is defined in the XSTEP resource file. In  XSTEPDRAW, these parameters can be viewed or changed using command  
 @subsection occt_iges_4_2 Setting interface  parameters
 
 A set of parameters for  importing and exporting IGES files is defined in the XSTEP resource file. In  XSTEPDRAW, these parameters can be viewed or changed using command  
+
+~~~~
 Draw> param [<parameter_name> [<value>]]  
 Draw> param [<parameter_name> [<value>]]  
+~~~~
+
 Command *param* with no  arguments gives a list of all parameters with their values. When argument  *parameter_name* is specified, information about this parameter is  printed (current value and short description).  
 
 The third argument is  used to set a new value of the given parameter. The result of the setting is  printed immediately.  
 Command *param* with no  arguments gives a list of all parameters with their values. When argument  *parameter_name* is specified, information about this parameter is  printed (current value and short description).  
 
 The third argument is  used to set a new value of the given parameter. The result of the setting is  printed immediately.  
@@ -865,10 +869,10 @@ For a description of  parameters used in reading an IGES file refer to <a href="
 
 These parameters are set  by command *param* :  
 
 
 These parameters are set  by command *param* :  
 
-| Description  | Name  | Values |
+| Description | Name | Values |
 | :------------ | :---- | :----- |
 | :------------ | :---- | :----- |
-| Precision for input entities | read.precision.mode | 0 or 1 |
-| |    read.precision.val      | real |
+| Precision for input entities | read.precision.mode | 0 or 1 |
+| | read.precision.val | real |
 | Continuity of B splines | read.iges.bspline.continuity | 0-2 |
 | Surface curves | read.surfacecurve.mode | 2, 3 or 0 |
 
 | Continuity of B splines | read.iges.bspline.continuity | 0-2 |
 | Surface curves | read.surfacecurve.mode | 2, 3 or 0 |
 
@@ -888,19 +892,19 @@ Here a dot can be used instead of a filename if the file is  already loaded by *
 
 Command *igesbrep* will interactively ask the user to  select a set of entities to be converted: 
 
 
 Command *igesbrep* will interactively ask the user to  select a set of entities to be converted: 
 
-| N    | Mode  | Description |
+| N | Mode | Description |
 | :-- | :-- | :---------- |
 | :-- | :-- | :---------- |
-| 0    | End   | finish conversion and exit igesbrep |
-| 1    | Visible roots | convert only visible roots |
-| 2    | All roots     | convert all roots |
-| 3    | One entity | convert entity with number provided by the user |
-| 4    | Selection     | convert only entities contained in selection |
+| 0 | End | finish conversion and exit igesbrep |
+| 1 | Visible roots | convert only visible roots |
+| 2 | All roots | convert all roots |
+| 3 | One entity | convert entity with number provided by the user |
+| 4 | Selection | convert only entities contained in selection |
 
 After the selected set of entities is loaded the user will  be asked how loaded entities should be converted into OCCT shapes (e.g., one  shape per root or one shape for all the entities). It is also possible to save  loaded shapes in files, and to cancel loading. 
 
 The second parameter of the *igesbrep* command defines  the name of the loaded shape. If several shapes are created, they will get  indexed names. For instance, if the last parameter was ‘s’, they will be *s_1,  ... s_N. 
 
 
 After the selected set of entities is loaded the user will  be asked how loaded entities should be converted into OCCT shapes (e.g., one  shape per root or one shape for all the entities). It is also possible to save  loaded shapes in files, and to cancel loading. 
 
 The second parameter of the *igesbrep* command defines  the name of the loaded shape. If several shapes are created, they will get  indexed names. For instance, if the last parameter was ‘s’, they will be *s_1,  ... s_N. 
 
-*<selection>* specifies the scope of selected entities  in the model, it is *xst-transferrable-roots* by default. An asterisk “*” can be  specified instead of *iges-visible-transf-roots*. For possible values for  selection refer to <a href="#occt_iges_2_3_4">Selecting entities</a> section. 
+*\<selection\>* specifies the scope of selected entities  in the model, it is *xst-transferrable-roots* by default. An asterisk “*” can be  specified instead of *iges-visible-transf-roots*. For possible values for  selection refer to <a href="#occt_iges_2_3_4">Selecting entities</a> section. 
 
 
 Instead of *igesbrep* it is possible to use commands:
 
 
 Instead of *igesbrep* it is possible to use commands:
@@ -920,7 +924,7 @@ The following commands are available:
 
 * *Draw> tpent \# * - provides information on the result of translation of the given  IGES entity;
 * *Draw> tpdraw \#* - creates an OCCT shape corresponding to an IGES entity;
 
 * *Draw> tpent \# * - provides information on the result of translation of the given  IGES entity;
 * *Draw> tpdraw \#* - creates an OCCT shape corresponding to an IGES entity;
-* *Draw> fromshape <shape_name>* provides the number of an IGES entity corresponding to an OCCT  shape;
+* *Draw> fromshape \<shape_name\>* provides the number of an IGES entity corresponding to an OCCT  shape;
 * *Draw> tpclear* clears the map of correspondences between IGES entities  and OCCT shapes. 
 
 @subsection occt_iges_4_4  Analyzing the transferred data
 * *Draw> tpclear* clears the map of correspondences between IGES entities  and OCCT shapes. 
 
 @subsection occt_iges_4_4  Analyzing the transferred data
@@ -937,28 +941,28 @@ Draw> data <symbol>
 ~~~~~
 The information printed by this command depends on the  symbol specified: 
 
 ~~~~~
 The information printed by this command depends on the  symbol specified: 
 
-| Symbol       | Output |
+| Symbol | Output |
 | :-------- | :----- |
 | :-------- | :----- |
-| g    | Prints information contained in the header of the file (Start and Global sections) |
+| g | Prints information contained in the header of the file (Start and Global sections) |
 | c or f | Runs check procedure of the integrity of the loaded data and prints the resulting statistics (f works only with fails while c with both fail and warning messages) |
 | c or f | Runs check procedure of the integrity of the loaded data and prints the resulting statistics (f works only with fails while c with both fail and warning messages) |
-| t    | The same as c or f, with a list of failed or warned entities |
+| t | The same as c or f, with a list of failed or warned entities |
 | m or l | The same as t but also prints a status for each entity |
 | e  | Lists all entities of the model with their numbers, types, status of validity etc. |
 | m or l | The same as t but also prints a status for each entity |
 | e  | Lists all entities of the model with their numbers, types, status of validity etc. |
-| r    | The same as e but lists only root entities |
+| r | The same as e but lists only root entities |
 
 
 There is a set of special objects, which can be used to  operate with the loaded model. They can be of the following types: 
 
 
 There is a set of special objects, which can be used to  operate with the loaded model. They can be of the following types: 
-| Special object type  | Operation |
+| Special object type | Operation |
 | :------------------ | :---------- |
 | :------------------ | :---------- |
-| Selection    Filters | allow selecting subsets of entities of the loaded model |
-| Counters     | Calculate statistics on the model data |
+| Selection Filters | allow selecting subsets of entities of the loaded model |
+| Counters | Calculate statistics on the model data |
 
 
 A list of these objects defined in the current session can  be printed in DRAW by command 
 ~~~~~
 Draw> listitems 
 ~~~~~
 
 
 A list of these objects defined in the current session can  be printed in DRAW by command 
 ~~~~~
 Draw> listitems 
 ~~~~~
-In the following commands if several <i><selection></i>  arguments are specified the results of each following selection are applied to the results of the previous one. 
+In the following commands if several <i>\<selection\></i>  arguments are specified the results of each following selection are applied to the results of the previous one. 
 ~~~~~
 Draw> givelist <selection_name> [<selection_name>]
 ~~~~~
 ~~~~~
 Draw> givelist <selection_name> [<selection_name>]
 ~~~~~
@@ -970,15 +974,15 @@ Draw> givecount <selection_name> [<selection_name>]
 prints a number of loaded entities defined by <i>selection</i> argument. 
 
 Three commands are used to calculate statistics on the entities in the model:
 prints a number of loaded entities defined by <i>selection</i> argument. 
 
 Three commands are used to calculate statistics on the entities in the model:
-* *Draw> count <counter> [<selection> ...]* - prints only a number of entities per each type matching the criteria defined by arguments.
-* *Draw> sumcount <counter> [<selection> ...]* - prints the total number of entities of all types matching the criteria defined by arguments and the largest number corresponding to one type.
-* *Draw> listcount <counter> [<selection> ...]* prints a list of entities per each type matching the criteria defined by arguments.
+* *Draw> count \<counter\> [\<selection\> ...]* - prints only a number of entities per each type matching the criteria defined by arguments.
+* *Draw> sumcount \<counter\> [\<selection\> ...]* - prints the total number of entities of all types matching the criteria defined by arguments and the largest number corresponding to one type.
+* *Draw> listcount \<counter\> [\<selection\> ...]* prints a list of entities per each type matching the criteria defined by arguments.
 
 
-Optional <i><selection></i> argument, if specified, defines a subset of entities, which are to be taken into account. Argument <i><counter></i> should be one of the currently defined counters:
+Optional <i>\<selection\></i> argument, if specified, defines a subset of entities, which are to be taken into account. Argument <i>\<counter\></i> should be one of the currently defined counters:
 
 
-| Counter      | Operation |
+| Counter | Operation |
 | :-------- | :-------- |
 | :-------- | :-------- |
-| xst-types    | Calculates how much entities of each OCCT type exist |
+| xst-types | Calculates how much entities of each OCCT type exist |
 | iges-types | Calculates how much entities of each IGES type and form exist |
 | iges-levels | Calculates how much entities lie in different IGES levels |
 
 | iges-types | Calculates how much entities of each IGES type and form exist |
 | iges-levels | Calculates how much entities lie in different IGES levels |
 
@@ -992,7 +996,7 @@ Entities in the IGES file are numbered in the succeeding  order. An entity can b
 
 * *Draw> elab \#*  - provides  a label for an entity with a known number;
 * *Draw> enum \#* - prints a number for an entity with the given label; 
 
 * *Draw> elab \#*  - provides  a label for an entity with a known number;
 * *Draw> enum \#* - prints a number for an entity with the given label; 
-* *Draw> entity \# <level_of_information>*  - gives the content of an IGES entity;
+* *Draw> entity \# \<level_of_information\>*  - gives the content of an IGES entity;
 * *Draw> estat \#* - provides the list of entities referenced by a given entity and the list of entities referencing to it.
 
 @subsubsection occt_iges_4_4_2 Estimating the results of reading IGES
 * *Draw> estat \#* - provides the list of entities referenced by a given entity and the list of entities referencing to it.
 
 @subsubsection occt_iges_4_4_2 Estimating the results of reading IGES
@@ -1001,22 +1005,22 @@ All of the following commands are available only after the  data are converted i
 ~~~~~
 Draw> tpstat [*|?]<symbol> [<selection>]
 ~~~~~
 ~~~~~
 Draw> tpstat [*|?]<symbol> [<selection>]
 ~~~~~
-provides all statistics on the last transfer,  including the list of transferred entities with mapping from IGES to OCCT  types, as well as fail and warning messages. The parameter <i><symbol></i> defines  what information will be printed: 
-* G    - General statistics (list of results and messages)
-* C    - Count of all warning and fail messages
-* C    - List of all warning and fail messages
-* F    - Count of all fail messages
-* F    - List of all fail messages
-* N    - List of all transferred roots
-* S    - The same, with types of source entity and result type
-* B    - The same, with messages
-* T    - Count of roots for geometrical types
-* R    - Count of roots for topological types
-* l    - The same, with a type of the source entity
+provides all statistics on the last transfer,  including the list of transferred entities with mapping from IGES to OCCT  types, as well as fail and warning messages. The parameter <i>\<symbol\></i> defines  what information will be printed: 
+* G - General statistics (list of results and messages)
+* C - Count of all warning and fail messages
+* C - List of all warning and fail messages
+* F - Count of all fail messages
+* F - List of all fail messages
+* N - List of all transferred roots
+* S - The same, with types of source entity and result type
+* B - The same, with messages
+* T - Count of roots for geometrical types
+* R - Count of roots for topological types
+* l - The same, with a type of the source entity
 
 The sign ‘*’ before the parameters **n**, **s**, **b**,  **t**, **r** makes it work on all entities (not only on roots). The sign  ‘?’ before **n**, **s**, **b**, **t** limits the scope of  information to invalid entities. 
 
 
 The sign ‘*’ before the parameters **n**, **s**, **b**,  **t**, **r** makes it work on all entities (not only on roots). The sign  ‘?’ before **n**, **s**, **b**, **t** limits the scope of  information to invalid entities. 
 
-Optional argument <i><selection></i> can limit the action of  the command with a selected subset of entities. 
+Optional argument <i>\<selection\></i> can limit the action of  the command with a selected subset of entities. 
 To get help, run this command without arguments. 
 
 For example, to get translation ratio on IGES faces, you can use. 
 To get help, run this command without arguments. 
 
 For example, to get translation ratio on IGES faces, you can use. 
@@ -1028,11 +1032,11 @@ The second version of the same command is TPSTAT (not  capital spelling).
 Draw:> TPSTAT symbol 
 ~~~~~
 Symbol can be of the following values: 
 Draw:> TPSTAT symbol 
 ~~~~~
 Symbol can be of the following values: 
-* g    -  General statistics (list of results and messages)
-* c    - Count of all warning and fail messages
-* C    - List of all warning and fail messages
-* r    - Count of resulting OCCT shapes per each type
-* s    - Mapping of IGES roots and resulting OCCT shapes
+* g -  General statistics (list of results and messages)
+* c - Count of all warning and fail messages
+* C - List of all warning and fail messages
+* r - Count of resulting OCCT shapes per each type
+* s - Mapping of IGES roots and resulting OCCT shapes
 
 Sometimes the trimming contours of IGES faces (i.e., entity  141 for 143, 142 for 144) can be lost during translation due to fails. 
 
 
 Sometimes the trimming contours of IGES faces (i.e., entity  141 for 143, 142 for 144) can be lost during translation due to fails. 
 
@@ -1042,7 +1046,7 @@ Draw> tplosttrim [<IGES_type>]
 ~~~~~
 It outputs the rank and DE numbers of faces that  lost their trims and their numbers for each type (143, 144, 510) and their  total number. If a face lost several of its trims it is output only once. 
 
 ~~~~~
 It outputs the rank and DE numbers of faces that  lost their trims and their numbers for each type (143, 144, 510) and their  total number. If a face lost several of its trims it is output only once. 
 
-Optional parameter <i><IGES_type></i> can be *TrimmedSurface,  BoundedSurface* or *Face* to specify the only type of IGES faces. 
+Optional parameter <i>\<IGES_type\></i> can be *TrimmedSurface,  BoundedSurface* or *Face* to specify the only type of IGES faces. 
 
 For example, to get untrimmed 144 entities, use command 
 ~~~~~ 
 
 For example, to get untrimmed 144 entities, use command 
 ~~~~~ 
@@ -1062,7 +1066,7 @@ Draw> checkbrep <shape_name> <expurged_shape_name>
 ~~~~~
 It checks the geometry and topology of a shape for  different cases of inconsistency, like self-intersecting wires or wrong  orientation of trimming contours. If an error is found, it copies bad parts of  the shape with the names "expurged_subshape_name _#" and generates  an appropriate message. If possible, this command also tries to find IGES  entities the OCCT shape was produced from. 
 
 ~~~~~
 It checks the geometry and topology of a shape for  different cases of inconsistency, like self-intersecting wires or wrong  orientation of trimming contours. If an error is found, it copies bad parts of  the shape with the names "expurged_subshape_name _#" and generates  an appropriate message. If possible, this command also tries to find IGES  entities the OCCT shape was produced from. 
 
-<i><expurged_shape_name></i> will contain the original shape  without invalid subshapes. 
+<i>\<expurged_shape_name\></i> will contain the original shape  without invalid subshapes. 
 
 To get information on tolerances of subshapes, use command 
 ~~~~~
 
 To get information on tolerances of subshapes, use command 
 ~~~~~
@@ -1070,9 +1074,9 @@ Draw> tolerance <shape_name> [<min> [<max>] [<symbol>]]
 ~~~~~
 It outputs maximum, average and minimum values of  tolerances for each kind of subshapes having tolerances or it can output  tolerances of all subshapes of the whole shape. 
 
 ~~~~~
 It outputs maximum, average and minimum values of  tolerances for each kind of subshapes having tolerances or it can output  tolerances of all subshapes of the whole shape. 
 
-When specifying <min> and <max> arguments this  command outputs shapes with names <i><shape_name>...</i> and their total number  with tolerances in the range [min, max]. 
+When specifying \<min\> and \<max\> arguments this  command outputs shapes with names <i>\<shape_name\>...</i> and their total number  with tolerances in the range [min, max]. 
 
 
-<i><Symbol></i> is used for specifying the kind of sub-shapes to analyze: 
+<i>\<Symbol\></i> is used for specifying the kind of sub-shapes to analyze: 
 * v - for vertices,
 * e - for edges,
 * f - for faces,
 * v - for vertices,
 * e - for edges,
 * f - for faces,
@@ -1082,13 +1086,13 @@ When specifying <min> and <max> arguments this  command outputs shapes with name
 
 Refer to <a href="#occt_iges_3_3_2">Setting the translation parameters</a> for a description of parameters used in reading an IGES file. The parameters are set by command *param*: 
 
 
 Refer to <a href="#occt_iges_3_3_2">Setting the translation parameters</a> for a description of parameters used in reading an IGES file. The parameters are set by command *param*: 
 
-| Description  | Name  | Values |
+| Description | Name | Values |
 | :-----------  | :---- | :----- |
 | :-----------  | :---- | :----- |
-| Author       | XSTEP.iges.header.author      | String |
-| Company      | XSTEP.iges.header.company     | String |
-| Receiver     | XSTEP.iges.header.receiver |  String |
-| Write mode for shapes        | XSTEP.iges.writebrep.mode     | 0/Faces or 1/BRep |
-| Measurement units    | XSTEP.iges.unit | 1-11 (or a string value) |
+| Author | XSTEP.iges.header.author | String |
+| Company | XSTEP.iges.header.company | String |
+| Receiver | XSTEP.iges.header.receiver | String |
+| Write mode for shapes | XSTEP.iges.writebrep.mode | 0/Faces or 1/BRep |
+| Measurement units | XSTEP.iges.unit | 1-11 (or a string value) |
 
 Several shapes can be written in one file. To start writing  a new file, enter command 
 ~~~~~
 
 Several shapes can be written in one file. To start writing  a new file, enter command 
 ~~~~~
index 9f0eddb..2d030ac 100644 (file)
@@ -1,4 +1,4 @@
-Modeling Algorithms  {#user_guides__modeling_algos}
+Modeling Algorithms  {#occt_user_guides__modeling_algos}
 =========================
 
 @tableofcontents
 =========================
 
 @tableofcontents
index 2f80e03..ad80aff 100644 (file)
@@ -1,14 +1,12 @@
-Modeling Data {#user_guides__modeling_data}
+Modeling Data {#occt_user_guides__modeling_data}
 ========================
 
 @tableofcontents
 
 ========================
 
 @tableofcontents
 
-@section occt_modat_1 Introduction
+@section occt_modat_0 Introduction
 
 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 offerings on our web site at <a href="http://www.opencascade.org/support/training/">www.opencascade.org/support/training/</a>     
 
 
 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 offerings on our web site at <a href="http://www.opencascade.org/support/training/">www.opencascade.org/support/training/</a>     
 
-
-
 @section occt_modat_1 Geometry Utilities
 
 Geometry Utilities provide the following services: 
 @section occt_modat_1 Geometry Utilities
 
 Geometry Utilities provide the following services: 
@@ -102,7 +100,7 @@ The following low level services are provided:
 
   The class **MultiPointConstraint** allows defining a multiple point constraint and  computing the approximation of sets of points to several curves. 
 
 
   The class **MultiPointConstraint** allows defining a multiple point constraint and  computing the approximation of sets of points to several curves. 
 
-* Computation of an approximation of a Bezier curve from a set of points:  
+* Computation of an approximation of a Bezier curve from a set of points: 
 
   The class *Compute* allows making an approximation of a set of points to a Bezier curve 
 
 
   The class *Compute* allows making an approximation of a set of points to a Bezier curve 
 
index 1c649c3..c75ae59 100644 (file)
@@ -1,4 +1,4 @@
-OCAF  {#user_guides__ocaf}
+OCAF  {#occt_user_guides__ocaf}
 ========================
 
 @tableofcontents
 ========================
 
 @tableofcontents
@@ -410,7 +410,7 @@ If you use a standard file format and you want your new attributes to be stored
   1. If you place an attribute to a new package, it is desirable (although not mandatory) if your package name starts with letter "T" (transient), for example: attribute *TMyAttributePackage_MyAttribute* in the package *TMyAttributePackage*.
   2. Create a new package with name "P[package name]" (for example *PMyAttributePackage*) with class *PMyAttributePackage_MyAttribute* inside. The new class inherits the *PDF_Attribute* class and contains fields of attributes, which must be saved or retrieved ("P" - persistent).
   3. Create a new package with name "M[package name]" (for example *MMyAttributePackage*) with classes *MMyAttributePackage_MyAttributeRetrievalDriver* and *MMyAttributePackage_MyAttributeStorageDriver* inside. The new classes inherit *MDF_ARDriver* and *MDF_ASDriver* classes respectively and contain the translation functionality: from T... attribute to P... and vice versa (M - middle) (see the realization of the standard attributes).
   1. If you place an attribute to a new package, it is desirable (although not mandatory) if your package name starts with letter "T" (transient), for example: attribute *TMyAttributePackage_MyAttribute* in the package *TMyAttributePackage*.
   2. Create a new package with name "P[package name]" (for example *PMyAttributePackage*) with class *PMyAttributePackage_MyAttribute* inside. The new class inherits the *PDF_Attribute* class and contains fields of attributes, which must be saved or retrieved ("P" - persistent).
   3. Create a new package with name "M[package name]" (for example *MMyAttributePackage*) with classes *MMyAttributePackage_MyAttributeRetrievalDriver* and *MMyAttributePackage_MyAttributeStorageDriver* inside. The new classes inherit *MDF_ARDriver* and *MDF_ASDriver* classes respectively and contain the translation functionality: from T... attribute to P... and vice versa (M - middle) (see the realization of the standard attributes).
-  4. M... package must contain *AddStorageDrivers(aDriverSeq : ASDriverHSequence* from MDF) and *AddRetrievalDrivers(aDriverSeq : ASDriverHSequence* from MDF) methods, which append to the given sequence *<aDriverSeq>* of drivers  a sequence of all new attribute drivers (see the previous point), which will be used for the attributes storage/retrieval. 
+  4. M... package must contain *AddStorageDrivers(aDriverSeq : ASDriverHSequence* from MDF) and *AddRetrievalDrivers(aDriverSeq : ASDriverHSequence* from MDF) methods, which append to the given sequence *\<aDriverSeq\>* of drivers  a sequence of all new attribute drivers (see the previous point), which will be used for the attributes storage/retrieval. 
   5 Use the standard schema (*StdSchema* unit) or create a new one to add your P-package and compile it. 
 
 If you use the XML format, do the following: 
   5 Use the standard schema (*StdSchema* unit) or create a new one to add your P-package and compile it. 
 
 If you use the XML format, do the following: 
@@ -529,7 +529,7 @@ doc = TDocStd_Document::Get(label);
 If in your document you use only standard attributes (from the packages TDF, TDataStd, TNaming, TFunction, TPrsStd and TDocStd), you just do the following steps: 
 
 * In your application class (which inherits class *TDocStd_Application*) implement two methods:
 If in your document you use only standard attributes (from the packages TDF, TDataStd, TNaming, TFunction, TPrsStd and TDocStd), you just do the following steps: 
 
 * In your application class (which inherits class *TDocStd_Application*) implement two methods:
-       + Formats (TColStd_SequenceOfExtendedString& theFormats), which append to a given sequence <theFormats> your document format string, for example, "NewDocumentFormat" – this string is also set in the document creation command 
+       + Formats (TColStd_SequenceOfExtendedString& theFormats), which append to a given sequence \<theFormats\> your document format string, for example, "NewDocumentFormat" – this string is also set in the document creation command 
        + ResourcesName(), which returns a string with a name of resources file (this file contains a description about the extension of the document, storage/retrieval drivers GUIDs...), for example, "NewFormat" 
 * Create the resource file (with name, for example, "NewFormat") with the following strings:
 
        + ResourcesName(), which returns a string with a name of resources file (this file contains a description about the extension of the document, storage/retrieval drivers GUIDs...), for example, "NewFormat" 
 * Create the resource file (with name, for example, "NewFormat") with the following strings:
 
@@ -1010,11 +1010,11 @@ The basic class XmlMDF_ADriver supports errors reporting via the method *WriteMe
 
 @subsection occt_ocaf_9_3 XML Document Structure
 
 
 @subsection occt_ocaf_9_3 XML Document Structure
 
-Every XML Document has one root element, which may have attributes and contain other nodes. In OCAF XML Documents the root element is named "document" and has attribute "format" with the name of the OCAF Schema used to generate the file. The standard XML format is "XmlOcaf". The following elements are sub-elements of <document> and should be unique entries as its sub-elements, in a specific order. The order is:
+Every XML Document has one root element, which may have attributes and contain other nodes. In OCAF XML Documents the root element is named "document" and has attribute "format" with the name of the OCAF Schema used to generate the file. The standard XML format is "XmlOcaf". The following elements are sub-elements of \<document\> and should be unique entries as its sub-elements, in a specific order. The order is:
 * **Element info** - contains strings identifying the format version and other parameters of the OCAF XML document. Normally, data under the element is used by persistence algorithms to correctly retrieve and initialize an OCAF document. The data also includes a copyright string. 
 * **Element info** - contains strings identifying the format version and other parameters of the OCAF XML document. Normally, data under the element is used by persistence algorithms to correctly retrieve and initialize an OCAF document. The data also includes a copyright string. 
-* **Element comments** - consists of an unlimited number of <comment> sub-elements containing necessary comment strings. 
+* **Element comments** - consists of an unlimited number of \<comment\> sub-elements containing necessary comment strings. 
 * **Element label** is the root label of the document data structure, with the XML attribute "tag" equal to 0. It contains all the OCAF data (labels, attributes) as tree of XML elements. Every sub-label is identified by a tag (positive integer) defining a unique key for all sub-labels of a label. Every label can contain any number of elements representing OCAF attributes (see OCAF Attributes Representation below).
 * **Element label** is the root label of the document data structure, with the XML attribute "tag" equal to 0. It contains all the OCAF data (labels, attributes) as tree of XML elements. Every sub-label is identified by a tag (positive integer) defining a unique key for all sub-labels of a label. Every label can contain any number of elements representing OCAF attributes (see OCAF Attributes Representation below).
-* **Element shapes** - contains geometrical and topological entities in BRep format. These entities being referenced by OCAF attributes written under the element <label>. This element is empty if there are no shapes in the document. It is only output if attribute driver XmlMNaming_NamedShapeDriver has been added to drivers table by the DocumentStorageDriver.
+* **Element shapes** - contains geometrical and topological entities in BRep format. These entities being referenced by OCAF attributes written under the element \<label\>. This element is empty if there are no shapes in the document. It is only output if attribute driver XmlMNaming_NamedShapeDriver has been added to drivers table by the DocumentStorageDriver.
 
 ### OCAF Attributes Representation 
 
 
 ### OCAF Attributes Representation 
 
@@ -1024,7 +1024,7 @@ XML types for OCAF attributes are declared with XML W3C Schema in a few XSD file
 
 ### Example of resulting XML file 
 
 
 ### Example of resulting XML file 
 
-The following example is a sample text from an XML file obtained by storing an OCAF document with two labels (0: and 0:2) and two attributes - TDataStd_Name (on label 0:) and TNaming_NamedShape (on label 0:2). The <shapes> section contents are replaced by an ellipsis. 
+The following example is a sample text from an XML file obtained by storing an OCAF document with two labels (0: and 0:2) and two attributes - TDataStd_Name (on label 0:) and TNaming_NamedShape (on label 0:2). The \<shapes\> section contents are replaced by an ellipsis. 
 
 ~~~~~
 <?xml version="1.0" encoding="UTF-8"?> 
 
 ~~~~~
 <?xml version="1.0" encoding="UTF-8"?> 
@@ -1049,7 +1049,7 @@ xsi:schemaLocation="http://www.opencascade.org/OCAF/XML http://www.opencascade.o
 </TNaming_NamedShape> 
 </label> 
 </label> 
 </TNaming_NamedShape> 
 </label> 
 </label> 
-<shapes
+\<shapes\
 ... 
 </shapes> 
 </document> 
 ... 
 </shapes> 
 </document> 
@@ -1589,7 +1589,7 @@ MyPackage_Transformation::MyPackage_Transformation():myType(gp_Identity){
 
 @subsection occt_ocaf_11_3  Implementation of typical actions with standard OCAF attributes.
 
 
 @subsection occt_ocaf_11_3  Implementation of typical actions with standard OCAF attributes.
 
-There are four sample files provided in the directory 'OpenCasCade\ros\samples\ocafsamples'. They present typical actions with OCAF services (mainly for newcomers). 
+There are four sample files provided in the directory 'OpenCasCade/ros/samples/ocafsamples'. They present typical actions with OCAF services (mainly for newcomers). 
 The method *Sample()* of each file is not dedicated for execution 'as is', it is rather a set of logical actions using some OCAF services.
 
 ### TDataStd_Sample.cxx
 The method *Sample()* of each file is not dedicated for execution 'as is', it is rather a set of logical actions using some OCAF services.
 
 ### TDataStd_Sample.cxx
@@ -1629,8 +1629,8 @@ This sample contains template for the following typical actions:
 - getting AIS_InteractiveContext from TPrsStd_AISViewer;
 - adding driver to the map of drivers;
 - getting driver from the map of drivers;
 - getting AIS_InteractiveContext from TPrsStd_AISViewer;
 - adding driver to the map of drivers;
 - getting driver from the map of drivers;
-- setting TNaming_NamedShape to <ShapeLabel>;
-- setting the new  TPrsStd_AISPresentation to <ShapeLabel>;
+- setting TNaming_NamedShape to \<ShapeLabel\>;
+- setting the new  TPrsStd_AISPresentation to \<ShapeLabel\>;
 - displaying;
 - erasing;
 - updating and displaying presentation of the attribute to be displayed;
 - displaying;
 - erasing;
 - updating and displaying presentation of the attribute to be displayed;
index 5ca5d92..e6b2bd5 100644 (file)
@@ -1,4 +1,4 @@
-OCAF Function Mechanism  {#occt_ocaf_functionmechanism_wp}
+OCAF Function Mechanism  {#occt_user_guides__ocaf_functionmechanism_wp}
 ========================
 
 @tableofcontents
 ========================
 
 @tableofcontents
@@ -131,8 +131,8 @@ To automatically erase the nail from the viewer and the data  tree it is enough
   The  only thing the Function Mechanism requires from its user 
   is the implementation  of pure virtual methods of *TFunction_Driver*:  
   
   The  only thing the Function Mechanism requires from its user 
   is the implementation  of pure virtual methods of *TFunction_Driver*:  
   
-  * <i>::Arguments()</i> – returns a list of arguments for the  function  
-  * <i>::Results()</i> – returns a list of results of the function  
+  * <i>\::Arguments()</i> – returns a list of arguments for the  function  
+  * <i>\::Results()</i> – returns a list of results of the function  
   
   These methods give the Function Mechanism the information on the location of arguments 
   and results of the function and allow building a  graph of functions. 
   
   These methods give the Function Mechanism the information on the location of arguments 
   and results of the function and allow building a  graph of functions. 
@@ -140,7 +140,7 @@ To automatically erase the nail from the viewer and the data  tree it is enough
   
   The pure virtual method *TFunction_Driver::Execute()* calculating the function should be overridden.  
   
   
   The pure virtual method *TFunction_Driver::Execute()* calculating the function should be overridden.  
   
-  The method <i>::MustExecute()</i> calls the method <i>::Arguments()</i>  of the function driver 
+  The method <i>\::MustExecute()</i> calls the method <i>\::Arguments()</i>  of the function driver 
   and ideally this information (knowledge of modification  of arguments of the function) is enough
   to make a decision whether the function  should be executed or not. Therefore, this method usually shouldn’t be  overridden.  
 
   and ideally this information (knowledge of modification  of arguments of the function) is enough
   to make a decision whether the function  should be executed or not. Therefore, this method usually shouldn’t be  overridden.  
 
@@ -150,10 +150,10 @@ To automatically erase the nail from the viewer and the data  tree it is enough
   It means that it is possible to create a base class – function driver for the three functions, 
   and two descendent classes producing:  a cone or a cylinder.  
   
   It means that it is possible to create a base class – function driver for the three functions, 
   and two descendent classes producing:  a cone or a cylinder.  
   
-  For the base function driver the methods <i>::Arguments()</i>  and <i>::Results()</i> will be overridden. 
-  Two descendent function drivers responsible for creation of a cone and a cylinder will override only the method  <i>::Execute()</i>. 
+  For the base function driver the methods <i>\::Arguments()</i>  and <i>\::Results()</i> will be overridden. 
+  Two descendent function drivers responsible for creation of a cone and a cylinder will override only the method  <i>\::Execute()</i>. 
   
   
-  The method <i>::Arguments()</i> of the function driver of the nail returns the results of the functions located under it in the tree of  leaves.   The method <i>::Execute()</i> just collects the  results of the functions and makes one shape – a nail. 
+  The method <i>\::Arguments()</i> of the function driver of the nail returns the results of the functions located under it in the tree of  leaves.   The method <i>\::Execute()</i> just collects the  results of the functions and makes one shape – a nail. 
   
   This way the data model using the Function Mechanism is  ready for usage.   Do not forget to introduce the function drivers for a function  driver table with the help of *TFunction_DriverTable* class.
 
   
   This way the data model using the Function Mechanism is  ready for usage.   Do not forget to introduce the function drivers for a function  driver table with the help of *TFunction_DriverTable* class.
 
@@ -205,7 +205,7 @@ To automatically erase the nail from the viewer and the data  tree it is enough
 
 @section occt_ocaf_functionmechanism_wp_6 Appendix 2
 
 
 @section occt_ocaf_functionmechanism_wp_6 Appendix 2
 
-  This appendix gives an example of the code for a cylinder function driver.   In order to make the things clearer, the methods <i>::Arguments()</i>  and <i>::Results()</i>  from the base class are also mentioned.   
+  This appendix gives an example of the code for a cylinder function driver.   In order to make the things clearer, the methods <i>\::Arguments()</i>  and <i>\::Results()</i>  from the base class are also mentioned.   
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
 
index 57aaa3e..b9d5403 100644 (file)
@@ -1,4 +1,4 @@
- Distribution of Data Through OCAF Tree {#occt_ocaf_tree_wp}
+ Distribution of Data Through OCAF Tree {#occt_user_guides__ocaf_tree_wp}
 =======================================
 @tableofcontents 
  
 =======================================
 @tableofcontents 
  
index 34f65f8..3e13080 100644 (file)
@@ -1,4 +1,4 @@
-OCAF White-Paper {#ocaf_wp}
+OCAF White-Paper {#occt_user_guides__ocaf_wp}
 ========================
  @tableofcontents 
  
 ========================
  @tableofcontents 
  
@@ -83,7 +83,7 @@ OCAF uses other modules of Open CASCADE Technology — the Shape attribute is im
   * Ready-to-use  functions such as :
     * Undo-redo;  
     * Save and open application data.  
   * Ready-to-use  functions such as :
     * Undo-redo;  
     * Save and open application data.  
-       
   Finally, you  develop the application's graphical user interface using the toolkit of your  choice, for example:
   * KDE Qt or  GNOME GTK+ on Linux;
   * Microsoft  Foundation Classes (MFC) on Windows Motif on Sun;
   Finally, you  develop the application's graphical user interface using the toolkit of your  choice, for example:
   * KDE Qt or  GNOME GTK+ on Linux;
   * Microsoft  Foundation Classes (MFC) on Windows Motif on Sun;
@@ -126,7 +126,7 @@ OCAF uses other modules of Open CASCADE Technology — the Shape attribute is im
   In order to maintain the attachment of application data, the geometry must be  distinguished from other data.  
    
   In OCAF, the data are reference-key driven. It is a  uniform model in which reference-keys 
   In order to maintain the attachment of application data, the geometry must be  distinguished from other data.  
    
   In OCAF, the data are reference-key driven. It is a  uniform model in which reference-keys 
-  are the persistent identification of  data. All *accessible </b>*data, including the geometry, 
+  are the persistent identification of  data. All *accessibledata, including the geometry, 
   are implemented as attributes attached to reference-keys. 
   The geometry becomes the  value of the Shape attribute, just as a number is the value 
   of the Integer and  Real attributes and a string that of the Name attribute.  
   are implemented as attributes attached to reference-keys. 
   The geometry becomes the  value of the Shape attribute, just as a number is the value 
   of the Integer and  Real attributes and a string that of the Name attribute.  
@@ -245,7 +245,7 @@ OCAF uses other modules of Open CASCADE Technology — the Shape attribute is im
   the referencing and  referenced documents being saved in two separate files.  
  
   Lets look at the coffee machine application again. The  coffee pot can be placed in one document. 
   the referencing and  referenced documents being saved in two separate files.  
  
   Lets look at the coffee machine application again. The  coffee pot can be placed in one document. 
-  The coffee machine document then  includes an *occurrence </b>*— a positioned copy — of the coffee pot. 
+  The coffee machine document then  includes an *occurrence— a positioned copy — of the coffee pot. 
   This occurrence is defined by an XLink attribute (the external Link) 
   which references the coffee pot of the first document 
   (the XLink contains the relative path of the coffee pot document and the entry of the coffee pot data [0:1] ).  
   This occurrence is defined by an XLink attribute (the external Link) 
   which references the coffee pot of the first document 
   (the XLink contains the relative path of the coffee pot document and the entry of the coffee pot data [0:1] ).  
@@ -282,13 +282,13 @@ OCAF uses other modules of Open CASCADE Technology — the Shape attribute is im
   During a transaction, attributes are copied before  their first modification. 
   If the transaction is validated, the copy is  destroyed. 
   If the transaction is abandoned, the attribute is restored to its initial value 
   During a transaction, attributes are copied before  their first modification. 
   If the transaction is validated, the copy is  destroyed. 
   If the transaction is abandoned, the attribute is restored to its initial value 
-  (when attributes are added or deleted, the operation is simply  reversed).  
+  (when attributes are added or deleted, the operation is simply  reversed).
+
   Transactions are document-centered, that is, the application starts a transaction on a document. 
   So, modifying a referenced  document and updating one of its referencing documents requires 
   Transactions are document-centered, that is, the application starts a transaction on a document. 
   So, modifying a referenced  document and updating one of its referencing documents requires 
-  two transactions, even if both operations are done in the same working session.  
+  two transactions, even if both operations are done in the same working session.
 
 
-@subsection 2.3 Persistent  Data Storage
+@subsection ocaf_wp_2_3 Persistent  Data Storage
 
   In OCAF, persistence, that is, the mechanism used to  save a document in a file, 
   is based on an explicit formal description of the  data saved.  
 
   In OCAF, persistence, that is, the mechanism used to  save a document in a file, 
   is based on an explicit formal description of the  data saved.  
@@ -324,8 +324,8 @@ OCAF uses other modules of Open CASCADE Technology — the Shape attribute is im
   * To implement  the functions converting these persistent attribute to and from the application  data model.
   
 Applications using compound documents extensively (saving data in many files linked together) should implement data management services. As a matter of fact, it's out the scope of OCAF to provide functions such as:
   * To implement  the functions converting these persistent attribute to and from the application  data model.
   
 Applications using compound documents extensively (saving data in many files linked together) should implement data management services. As a matter of fact, it's out the scope of OCAF to provide functions such as:
-*      Version and configuration management of compound documents;
-*      Querying a referenced document for its referencing documents.
+* Version and configuration management of compound documents;
+* Querying a referenced document for its referencing documents.
 
 In order to ease the delegation of document management to a data management application, OCAF encapsulates the file management functions in a driver (the meta-data driver). You have to implement this driver for your application to communicate with the data management system of your choice.
 
 
 In order to ease the delegation of document management to a data management application, OCAF encapsulates the file management functions in a driver (the meta-data driver). You have to implement this driver for your application to communicate with the data management system of your choice.
 
index e7cd871..1dae483 100644 (file)
@@ -1,4 +1,4 @@
-Shape Healing  {#user_guides__shape_healing}
+Shape Healing  {#occt_user_guides__shape_healing}
 ===================
 
 @tableofcontents
 ===================
 
 @tableofcontents
@@ -1434,10 +1434,10 @@ Standard_Real maxdist = ConvSurf.Gap();
 ~~~~~
 
 @section occt_shg_5_ Auxiliary tools for repairing, analysis and upgrading
 ~~~~~
 
 @section occt_shg_5_ Auxiliary tools for repairing, analysis and upgrading
-. 
+
 @subsection occt_shg_5_1 Tool for rebuilding shapes
 
 @subsection occt_shg_5_1 Tool for rebuilding shapes
 
-*ShapeBuild_ReShape* rebuilds a shape by making pre-defined substitutions on some of its components. During the first phase, it records requests to replace or remove some individual shapes. For each shape, the last given request is recorded. Requests may be applied as *Oriented* (i.e. only to an item with the same orientation) or not (the orientation of the replacing shape corresponds to that of the original one). Then these requests may be applied to any shape, which may contain one or more of these individual shapes. 
+  Class *ShapeBuild_ReShape* rebuilds a shape by making pre-defined substitutions on some of its components. During the first phase, it records requests to replace or remove some individual shapes. For each shape, the last given request is recorded. Requests may be applied as *Oriented* (i.e. only to an item with the same orientation) or not (the orientation of the replacing shape corresponds to that of the original one). Then these requests may be applied to any shape, which may contain one or more of these individual shapes. 
 
 This tool has a flag for taking the location of shapes into account (for keeping the structure of assemblies) (*ModeConsiderLocation*). If this mode is equal to Standard_True, the shared shapes with locations will be kept. If this mode is equal to Standard_False, some different shapes will be produced from one shape with different locations after rebuilding. By default, this mode is equal to Standard_False. 
 
 
 This tool has a flag for taking the location of shapes into account (for keeping the structure of assemblies) (*ModeConsiderLocation*). If this mode is equal to Standard_True, the shared shapes with locations will be kept. If this mode is equal to Standard_False, some different shapes will be produced from one shape with different locations after rebuilding. By default, this mode is equal to Standard_False. 
 
index a70304a..77190c2 100644 (file)
@@ -1,4 +1,4 @@
-STEP processor  {#user_guides__step}
+STEP processor  {#occt_user_guides__step}
 ========================
 
 @tableofcontents
 ========================
 
 @tableofcontents
@@ -395,9 +395,9 @@ between two translation operations, if you do not, the results from the next tra
 * *TopoDS_Shape shape = reader.Shape(rank)* gets the result identified by its rank, where rank is an integer between 1 and NbShapes;
 * *TopoDS_Shape shape = reader.Shape()* gets the first result of translation; 
 * *TopoDS_Shape shape = reader.OneShape()* - gets all results in a single shape which is:
 * *TopoDS_Shape shape = reader.Shape(rank)* gets the result identified by its rank, where rank is an integer between 1 and NbShapes;
 * *TopoDS_Shape shape = reader.Shape()* gets the first result of translation; 
 * *TopoDS_Shape shape = reader.OneShape()* - gets all results in a single shape which is:
-               * a null shape if there are no results, 
-               * in case of a single result, a shape that is specific to that result, 
-               * a compound that lists the results if there are several results. 
+  * a null shape if there are no results, 
+  * in case of a single result, a shape that is specific to that result, 
+  * a compound that lists the results if there are several results. 
 
 <h5>Clearing the accumulation of results</h5>
 
 
 <h5>Clearing the accumulation of results</h5>
 
@@ -448,8 +448,8 @@ Standard_Integer nbtrans = reader.TransferList (list);
 ~~~~~
 Standard_Integer i,nb = list->Length();
 for (i = 1; i <= nb; i ++) {
 ~~~~~
 Standard_Integer i,nb = list->Length();
 for (i = 1; i <= nb; i ++) {
      Handle(Standard_Transient) ent = list->Value(i);
      Standard_Boolean OK = reader.TransferEntity (ent);
+ Handle(Standard_Transient) ent = list->Value(i);
+ Standard_Boolean OK = reader.TransferEntity (ent);
 }
 ~~~~~
 
 }
 ~~~~~
 
@@ -498,100 +498,100 @@ Tables given in this paragraph show the mapping of STEP entities to OCCT objects
 @subsubsection occt_step_2_4_1 Assembly structure representation entities
 Not all entities defining the assembly structure in the STEP file are translated to OCCT shapes, but they are used to identify the relationships between assemblies and their components. Since the graph of ‘natural’ dependencies of entities based on direct references between them does not include the references from assemblies to their components, these dependencies are introduced in addition to the former ones. This is made basing on the analysis of the following entities describing the structure of the assembly. 
 
 @subsubsection occt_step_2_4_1 Assembly structure representation entities
 Not all entities defining the assembly structure in the STEP file are translated to OCCT shapes, but they are used to identify the relationships between assemblies and their components. Since the graph of ‘natural’ dependencies of entities based on direct references between them does not include the references from assemblies to their components, these dependencies are introduced in addition to the former ones. This is made basing on the analysis of the following entities describing the structure of the assembly. 
 
-| STEP entity type     | CASCADE shape | Comments |
+| STEP entity type | CASCADE shape | Comments |
 | :--------------- | :-------------- | :------ |
 | :--------------- | :-------------- | :------ |
-| product_definition   |  A *TopoDS_Compound* for assemblies, a CASCADE shape corresponding to the component type of  for components, |        Each assembly or component has its own *product_definition*. It is used as a starting point for translation when *read.step.product.mode* is ON. |
-| product_definition_shape     | | This entity provides a link between *product_definition* and corresponding *shape_definition_representation*,  or between *next_assembly_usage_occurence* and corresponding *context_dependent_shape_representation*. | 
+| product_definition |  A *TopoDS_Compound* for assemblies, a CASCADE shape corresponding to the component type of  for components, | Each assembly or component has its own *product_definition*. It is used as a starting point for translation when *read.step.product.mode* is ON. |
+| product_definition_shape | | This entity provides a link between *product_definition* and corresponding *shape_definition_representation*,  or between *next_assembly_usage_occurence* and corresponding *context_dependent_shape_representation*. | 
 | shape_definition_representation | A TopoDS_Compound for assemblies, a CASCADE shape corresponding to the component type for components. | Each assembly or component has its own *shape_definition_representation*. The graph of dependencies is modified in such a way that *shape_definition_representations* of all components of the assembly are referred by the *shape_definition_representation* of the assembly.  |
 | shape_definition_representation | A TopoDS_Compound for assemblies, a CASCADE shape corresponding to the component type for components. | Each assembly or component has its own *shape_definition_representation*. The graph of dependencies is modified in such a way that *shape_definition_representations* of all components of the assembly are referred by the *shape_definition_representation* of the assembly.  |
-| next_assembly_usage_occurence        | |     This entity defines a relationship between the assembly and its component. It is used to introduce (in the dependencies graph) the links between *shape_definition_representation* of the assembly and *shape_definition_representations* and *context_dependent_shape_representations* of all its components. |
-| mapped_item |        TopoDS_Shape    | This entity defines a mapping of the assembly component into the *shape_representation* of the assembly. The result of translation is a CASCADE shape translated from the component, to which transformation defined by the *mapped_item* is applied. |
+| next_assembly_usage_occurence | | This entity defines a relationship between the assembly and its component. It is used to introduce (in the dependencies graph) the links between *shape_definition_representation* of the assembly and *shape_definition_representations* and *context_dependent_shape_representations* of all its components. |
+| mapped_item | TopoDS_Shape | This entity defines a mapping of the assembly component into the *shape_representation* of the assembly. The result of translation is a CASCADE shape translated from the component, to which transformation defined by the *mapped_item* is applied. |
 | context_dependent_shape_representation | TopoDS_Shape | This entity is associated with the *next_assembly_usage_occurence* entity and defines a placement of the component in the assembly. The graph of dependencies is modified so that each context_dependent_shape_representation* is referred by shape_definition_representation of the corresponding assembly. |
 | context_dependent_shape_representation | TopoDS_Shape | This entity is associated with the *next_assembly_usage_occurence* entity and defines a placement of the component in the assembly. The graph of dependencies is modified so that each context_dependent_shape_representation* is referred by shape_definition_representation of the corresponding assembly. |
-| shape_representation_relationship_with_transformation        | |     This entity is associated with *context_dependent_shape_representation* and defines a transformation necessary to apply to the component in order to locate it in its place in the assembly. |
-| item_defined_transformation  | | This entity defines a transformation operator used by *shape_representation_relationship_with_transformation* or *mapped_item* entity |
-| cartesian_transformation_operator    | |     This entity defines a transformation operator used by *shape_representation_relationship_with_transformation* or *mapped_item* entity |
+| shape_representation_relationship_with_transformation | | This entity is associated with *context_dependent_shape_representation* and defines a transformation necessary to apply to the component in order to locate it in its place in the assembly. |
+| item_defined_transformation | | This entity defines a transformation operator used by *shape_representation_relationship_with_transformation* or *mapped_item* entity |
+| cartesian_transformation_operator | | This entity defines a transformation operator used by *shape_representation_relationship_with_transformation* or *mapped_item* entity |
 
 @subsubsection occt_step_2_4_2 Models
 
 @subsubsection occt_step_2_4_2 Models
-| STEP entity type | CASCADE shape     | Comments |
+| STEP entity type | CASCADE shape | Comments |
 | :-------------- | :----------- | :---------- |
 | :-------------- | :----------- | :---------- |
-| Solid Models | | |   
-| brep_with_voids      | TopoDS_Solid  | |
-| faceted_brep | TopoDS_Solid  | |
-| manifold_solid_brep  | TopoDS_Solid  | |
-| Surface Models       | | |   
-| shell_based_surface_model     | TopoDS_Compound | *shell_based_surface_model* is translated into one or more *TopoDS_Shell* grouped in a *TopoDS_Compound* |
-| geometric_set        | TopoDS_Compound       | *TopoDS_Compound* contains only *TopoDS_Faces*, *TopoDS_Wires*, *TopoDS_Edges* and/or *TopoDS_Vertices*.
-| Wireframe Models     | | |   
-| geometric_curve_set |        TopoDS_Compound | *TopoDS_Compound* contains only *TopoDS_Wires*, *TopoDS_Edges* and/or *TopoDS_Vertices*.
+| Solid Models | | | 
+| brep_with_voids | TopoDS_Solid | |
+| faceted_brep | TopoDS_Solid | |
+| manifold_solid_brep | TopoDS_Solid | |
+| Surface Models | | | 
+| shell_based_surface_model  | TopoDS_Compound | *shell_based_surface_model* is translated into one or more *TopoDS_Shell* grouped in a *TopoDS_Compound* |
+| geometric_set | TopoDS_Compound | *TopoDS_Compound* contains only *TopoDS_Faces*, *TopoDS_Wires*, *TopoDS_Edges* and/or *TopoDS_Vertices*.
+| Wireframe Models | | | 
+| geometric_curve_set | TopoDS_Compound | *TopoDS_Compound* contains only *TopoDS_Wires*, *TopoDS_Edges* and/or *TopoDS_Vertices*.
 
 @subsubsection occt_step_2_4_3 Topological entities
 
 
 @subsubsection occt_step_2_4_3 Topological entities
 
-| Topology | STEP entity type | CASCADE shape  | Comments |
+| Topology | STEP entity type | CASCADE shape | Comments |
 | :------- | :--------- | :-------- | :----- |
 | :------- | :--------- | :-------- | :----- |
-| Vertices     | vertex_point  | TopoDS_Vertex | |
-| Edges        | oriented_edge | TopoDS_Edge   | |
-| | edge_curve | TopoDS_Edge   | |
-| Loops        | face_bound | TopoDS_Wire      | |
-| | face_outer_bound | TopoDS_Wire     | | 
-| | edge_loop | TopoDS_Wire    | |
-| | poly_loop | TopoDS_Wire    | Each segment of *poly_loop* is translated into *TopoDS_Edge* with support of *Geom_Line* |
+| Vertices | vertex_point | TopoDS_Vertex | |
+| Edges | oriented_edge | TopoDS_Edge | |
+| | edge_curve | TopoDS_Edge | |
+| Loops | face_bound | TopoDS_Wire | |
+| | face_outer_bound | TopoDS_Wire | | 
+| | edge_loop | TopoDS_Wire | |
+| | poly_loop | TopoDS_Wire | Each segment of *poly_loop* is translated into *TopoDS_Edge* with support of *Geom_Line* |
 | | vertex_loop | TopoDS_Wire | Resulting *TopoDS_Wire* contains only one degenerated *TopoDS_Edge* |
 | | vertex_loop | TopoDS_Wire | Resulting *TopoDS_Wire* contains only one degenerated *TopoDS_Edge* |
-| Faces        | face_surface  | TopoDS_Face | |
-| | advanced_face | TopoDS_Face        | |
+| Faces | face_surface | TopoDS_Face | |
+| | advanced_face | TopoDS_Face | |
 | Shells | connected_face_set | TopoDS_Shell | |
 | Shells | connected_face_set | TopoDS_Shell | |
-| | oriented_closed_shell |    TopoDS_Shell | |
-| | closed_shell | TopoDS_Shell        | |
+| | oriented_closed_shell | TopoDS_Shell | |
+| | closed_shell | TopoDS_Shell | |
 | | open_shell | TopoDS_Shell | |
 
 @subsubsection occt_step_2_4_4 Geometrical entities
 3D STEP entities are translated into geometrical objects from the *Geom* package while 2D entities are translated into objects from the *Geom2d* package. 
 | | open_shell | TopoDS_Shell | |
 
 @subsubsection occt_step_2_4_4 Geometrical entities
 3D STEP entities are translated into geometrical objects from the *Geom* package while 2D entities are translated into objects from the *Geom2d* package. 
-| Geometry | STEP entity type  | CASCADE object        | Comments |
+| Geometry | STEP entity type | CASCADE object | Comments |
 | :------ | :-------- | :------ | :-------- |
 | :------ | :-------- | :------ | :-------- |
-| Points | cartesian_point     | Geom_CartesianPoint, Geom2d_CartesianPoint    | |
-| Directions | direction | Geom_Direction, Geom2d_Direction    | |
-| Vectors | vector | Geom_VectorWithMagnitude, Geom2d_VectorWithMagnitude | |  
-| Placements | axis1_placement | Geom_Axis1Placement | |       
+| Points | cartesian_point | Geom_CartesianPoint, Geom2d_CartesianPoint | |
+| Directions | direction | Geom_Direction, Geom2d_Direction | |
+| Vectors | vector | Geom_VectorWithMagnitude, Geom2d_VectorWithMagnitude | | 
+| Placements | axis1_placement | Geom_Axis1Placement | |  
 | | axis2_placement_2d | Geom2d_AxisPlacement | |
 | | 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.) |
-| | 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    | |
-| | 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* |
-| | composite_curve    | TopoDS_Wire | |       
-| | composite_curve_on_surface | TopoDS_Wire | |       
-| | boundary_curve |   TopoDS_Wire     | | 
-| Surfaces | b_spline_surface  | Geom_BsplineSurface   | |
-| |  b_spline_surface_with_knots       | Geom_BsplineSurface   | | 
-| | bezier_surface | Geom_BSplineSurface       | | 
-| | conical_surface    | Geom_ConicalSurface   | | 
-| | cylindrical_surface        | Geom_CylindricalSurface        | |
-| | offset_surface | Geom_OffsetSurface        | |
-| | surface_replica    | Geom_Surface | Depending on the type of basis surface |
-| | plane | Geom_Plane | |
-| | rational_b_spline_surface | Geom_BSplineSurface    | |
-| | rectangular_trimmed_surface        | Geom_RectangularTrimmedSurface        | | 
+| | 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.) |
+| | 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 | |
+| | 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* |
+| | composite_curve | TopoDS_Wire | |  
+| | composite_curve_on_surface | TopoDS_Wire | | 
+| | boundary_curve |  TopoDS_Wire | | 
+| Surfaces | b_spline_surface | Geom_BsplineSurface | |
+| |  b_spline_surface_with_knots | Geom_BsplineSurface | | 
+| | bezier_surface | Geom_BSplineSurface | | 
+| | conical_surface | Geom_ConicalSurface | | 
+| | cylindrical_surface | Geom_CylindricalSurface  | |
+| | offset_surface | Geom_OffsetSurface | |
+| | surface_replica | Geom_Surface | Depending on the type of basis surface |
+| | plane | Geom_Plane | |
+| | rational_b_spline_surface | Geom_BSplineSurface | |
+| | rectangular_trimmed_surface | Geom_RectangularTrimmedSurface | | 
 | | spherical_surface | Geom_SphericalSurface | |
 | | spherical_surface | Geom_SphericalSurface | |
-| | surface_of_linear_extrusion        | Geom_SurfaceOfLinearExtrusion  | |
-| | surface_of_revolution | Geom_SurfaceOfRevolution   | |
-| | toroidal_surface | Geom_ToroidalSurface    | | 
-| | degenerate_toroidal_surface        | Geom_ToroidalSurface  | |
-| | uniform_surface | Geom_BSplineSurface      | |
-| | quasi_uniform_surface | Geom_BSplineSurface        | | 
-| | rectangular_composite_surface      | TopoDS_Compound | Contains *TopoDS_Faces* |
-| | curve_bounded_surface | TopoDS_Face        | |
+| | surface_of_linear_extrusion | Geom_SurfaceOfLinearExtrusion  | |
+| | surface_of_revolution | Geom_SurfaceOfRevolution | |
+| | toroidal_surface | Geom_ToroidalSurface | | 
+| | degenerate_toroidal_surface | Geom_ToroidalSurface | |
+| | uniform_surface | Geom_BSplineSurface | |
+| | quasi_uniform_surface | Geom_BSplineSurface | | 
+| | rectangular_composite_surface | TopoDS_Compound | Contains *TopoDS_Faces* |
+| | curve_bounded_surface | TopoDS_Face | |
 
 
 @subsection occt_step_2_5 Tolerance management
 
 
 @subsection occt_step_2_5 Tolerance management
@@ -605,7 +605,7 @@ During the STEP = OCCT translation several parameters are used as tolerances and
 * User - defined variable *read.precision.val* is used instead of uncertainty from a STEP file when parameter *read.precision.mode* is 1 (User).
  
 <h4>2D (parametric) tolerances</h4>
 * User - defined variable *read.precision.val* is used instead of uncertainty from a STEP file when parameter *read.precision.mode* is 1 (User).
  
 <h4>2D (parametric) tolerances</h4>
-* Package method *Precision::PConfusion()* is a value of *0.01\*Precision::Confusion()*. It is used to compare parametric bounds of curves. 
+* Package method *Precision\::PConfusion()* is a value of *0.01\*Precision\::Confusion()*. It is used to compare parametric bounds of curves. 
 * Methods *UResolution* and *VResolution (tolerance3d)* of the class *GeomAdaptor_Surface* or *BRepAdaptor_Surface* - return tolerance in parametric space of a surface computed from 3d tolerance. When one tolerance value is to be used for both U and V parametric directions, the maximum or the minimum value of *UResolution* and *VResolution* is used. 
 * Methods *Resolution (tolerance3d)* of the class *GeomAdaptor_Curve* or *BRepAdaptor_Curve* return tolerance in parametric space of a curve computed from 3d tolerance. 
 
 * Methods *UResolution* and *VResolution (tolerance3d)* of the class *GeomAdaptor_Surface* or *BRepAdaptor_Surface* - return tolerance in parametric space of a surface computed from 3d tolerance. When one tolerance value is to be used for both U and V parametric directions, the maximum or the minimum value of *UResolution* and *VResolution* is used. 
 * Methods *Resolution (tolerance3d)* of the class *GeomAdaptor_Curve* or *BRepAdaptor_Curve* return tolerance in parametric space of a curve computed from 3d tolerance. 
 
@@ -626,15 +626,15 @@ If the starting STEP entity is a geometric_curve_set all the edges and vertices
 If the starting STEP entity is not a geometric_curve_set the sub-shapes of the resulting shape have the following tolerance: 
   * all the faces are constructed with *Precision::Confusion()*, 
   * edges are constructed with *Precision::Confusion()*. It can be modified later by: 
 If the starting STEP entity is not a geometric_curve_set the sub-shapes of the resulting shape have the following tolerance: 
   * all the faces are constructed with *Precision::Confusion()*, 
   * edges are constructed with *Precision::Confusion()*. It can be modified later by: 
-               * *ShapeFix::SameParameter()* - the tolerance of edge shows real deviation of the 3D curve and pcurves. 
-               * *ShapeFix_Wire::FixSelfIntersection()* if a pcurve of a self-intersecting edge is modified. 
+  * *ShapeFix::SameParameter()* - the tolerance of edge shows real deviation of the 3D curve and pcurves. 
+  * *ShapeFix_Wire::FixSelfIntersection()* if a pcurve of a self-intersecting edge is modified. 
   * vertices are constructed with Precision::Confusion(). It can be modified later by: 
   * vertices are constructed with Precision::Confusion(). It can be modified later by: 
-               *StepToTopoDS_TranslateEdge* 
-               *ShapeFix::SameParameter()* 
-               *ShapeFix_Wire::FixSelfIntersection()*  
-               *ShapeFix_Wire::FixLacking()* 
-               *ShapeFix_Wire::Connected()*
-               
+  *StepToTopoDS_TranslateEdge* 
+  *ShapeFix::SameParameter()* 
+  *ShapeFix_Wire::FixSelfIntersection()*  
+  *ShapeFix_Wire::FixLacking()* 
+  *ShapeFix_Wire::Connected()*
+  
 So, the final tolerance of sub-shapes shows the real local geometry of shapes (distance between vertices of adjacent edges, deviation of a 3D curve of an edge and its parametric curves and so on) and may be less or greater than the basic value of tolerance in the STEP processor. 
 
 <h4>Translating into Geometry</h4>
 So, the final tolerance of sub-shapes shows the real local geometry of shapes (distance between vertices of adjacent edges, deviation of a 3D curve of an edge and its parametric curves and so on) and may be less or greater than the basic value of tolerance in the STEP processor. 
 
 <h4>Translating into Geometry</h4>
@@ -874,16 +874,16 @@ An OCCT shape can be translated to STEP using one of the following models (shape
   
 The enumeration **TEPControl_StepModelType* is intended to define a particular transferring model. 
 The following values of enumeration are allowed: 
   
 The enumeration **TEPControl_StepModelType* is intended to define a particular transferring model. 
 The following values of enumeration are allowed: 
-* *STEPControl_AsIs*   Translator selects the resulting representation automatically, according to the type of CASCADE shape to translate it in its highest possible model;
-* *STEPControl_ManifoldSolidBrep*      resulting entity is manifold_solid_brep or brep_with_voids
-* *STEPControl_FacetedBrep*    resulting entity is *faceted_brep* or   *faceted_brep_and_brep_with_voids* Note that only planar-face shapes with linear edges can be written;
+* *STEPControl_AsIs* Translator selects the resulting representation automatically, according to the type of CASCADE shape to translate it in its highest possible model;
+* *STEPControl_ManifoldSolidBrep* resulting entity is manifold_solid_brep or brep_with_voids
+* *STEPControl_FacetedBrep* resulting entity is *faceted_brep* or   *faceted_brep_and_brep_with_voids* Note that only planar-face shapes with linear edges can be written;
 * *STEPControl_ShellBasedSurfaceModel* resulting entity is *shell_based_surface_model*;
 * *STEPControl_ShellBasedSurfaceModel* resulting entity is *shell_based_surface_model*;
-* *STEPControl_GeometricCurveSet*      resulting entity is *geometric_curve_set*;
+* *STEPControl_GeometricCurveSet* resulting entity is *geometric_curve_set*;
 
 The following list shows which shapes can be translated in which mode: 
 
 The following list shows which shapes can be translated in which mode: 
-* *STEP214Control_AsIs*        - any OCCT shape
-* *STEP214Control_ManifoldSolidBrep* - *TopoDS_Solid, TopoDS_Shell, TopoDS_Compound* (if it contains *TopoDS_Solids* and *TopoDS_Shells*.
-* *STEP214Control_FacetedBrep* -       *TopoDS_Solid* or *TopoDS_Compound* containing *TopoDS_Solids* if all its surfaces are *Geom_Planes* and all curves are *Geom_Lines*.
+* *STEP214Control_AsIs* - any OCCT shape
+* *STEP214Control_ManifoldSolidBrep* - *TopoDS_Solid, TopoDS_Shell, TopoDS_Compound* (if it contains *TopoDS_Solids* and *TopoDS_Shells*.
+* *STEP214Control_FacetedBrep* - *TopoDS_Solid* or *TopoDS_Compound* containing *TopoDS_Solids* if all its surfaces are *Geom_Planes* and all curves are *Geom_Lines*.
 * *STEP214Control_ShellBasedSurfaceModel* - *TopoDS_Solid, TopoDS_Shell, TopoDS_Face* and *TopoDS_Compound* (if it contains all mentioned shapes)
 * *STEP214Control_GeometricCurveSet* - any OCCT shape.
 
 * *STEP214Control_ShellBasedSurfaceModel* - *TopoDS_Solid, TopoDS_Shell, TopoDS_Face* and *TopoDS_Compound* (if it contains all mentioned shapes)
 * *STEP214Control_GeometricCurveSet* - any OCCT shape.
 
@@ -913,80 +913,80 @@ A set of STEP entities describing general product information is written to the
 
 The table below describes STEP entities, which are created when the assembly structure and product information are written to the STEP file, and shows how many of these entities are created. Note that the appearance of some of these entities depends on the version of the schema (AP214, CD, DIS or IS, or AP203). 
 
 
 The table below describes STEP entities, which are created when the assembly structure and product information are written to the STEP file, and shows how many of these entities are created. Note that the appearance of some of these entities depends on the version of the schema (AP214, CD, DIS or IS, or AP203). 
 
-| CASCADE shape        | STEP entity | Comments | 
+| CASCADE shape | STEP entity | Comments | 
 | :--------- | :------ | :----- | 
 | | application_protocol_definition | One per STEP file, defines the application protocol used (depends on the schema version) | 
 | :--------- | :------ | :----- | 
 | | application_protocol_definition | One per STEP file, defines the application protocol used (depends on the schema version) | 
-| | application_context        | One per STEP file, defines the application generating the file (AP214 or AP203) | 
-| TopoDS_Compound | shape_representation  |    Empty *shape_representation* describing the assembly. The components of that assembly are written as subtypes of shape_representation and are included to the assembly using *next_assembly_usage_occurence* entities. | 
-| TopoDS_Shape  | subtypes of shape_representation  |  Depending on the shape type, see the tables below for mapping details  |
+| | application_context | One per STEP file, defines the application generating the file (AP214 or AP203) | 
+| TopoDS_Compound | shape_representation  | Empty *shape_representation* describing the assembly. The components of that assembly are written as subtypes of shape_representation and are included to the assembly using *next_assembly_usage_occurence* entities. | 
+| TopoDS_Shape  | subtypes of shape_representation  |  Depending on the shape type, see the tables below for mapping details  |
 |  | next_assembly_usage_occurence | Describes the instance of component in the assembly by referring corresponding *product_definitions*. If the same component is included in the assembly several times (for example, with different locations), several *next_assembly_usage_occurences* are created. |
 |  | next_assembly_usage_occurence | Describes the instance of component in the assembly by referring corresponding *product_definitions*. If the same component is included in the assembly several times (for example, with different locations), several *next_assembly_usage_occurences* are created. |
-| | context_dependent_shape_representation     | Describes the placement of a component in the assembly. One *context_dependent_shape_representation* corresponds to each  *next_assembly_usage_occurence* entity. | 
-| | shape_representation_relationship_with_transformation |    Together with the *context_dependent_shape_representation* describes the location of a component in the assembly. | 
-| | item_defined_transformation        | Defines a transformation used for the location of a component in the assembly. Is referred by *shape_representation_relationship_with_transformation*.  |
-| | shape_definition_representation    | One per *shape_representation*. | 
-| | product_definition_shape    | One per *shape_definition_representation* and *context_dependent_shape_representation* |
-| | product_definition | Defines a product, one per *shape_definition_representation* |
-| | product_definition_formation  |    One per *product_definition*. All *product_definition_formations* in the STEP file have unique names. | 
-| |  Product   | One per *product_definition_formation*. All products in the STEP file have unique names. |
-| | product_type (CD) or product_related_product_category (DIS,IS)     | One per product | 
-| | Mechanical_context (CD) or product_context (DIS,IS)        | One per product.  | 
-| | product_definition_context | One per *product_definition*.  |
+| | context_dependent_shape_representation | Describes the placement of a component in the assembly. One *context_dependent_shape_representation* corresponds to each  *next_assembly_usage_occurence* entity. | 
+| | shape_representation_relationship_with_transformation | Together with the *context_dependent_shape_representation* describes the location of a component in the assembly. | 
+| | item_defined_transformation | Defines a transformation used for the location of a component in the assembly. Is referred by *shape_representation_relationship_with_transformation*.  |
+| | shape_definition_representation | One per *shape_representation*. | 
+| | product_definition_shape  | One per *shape_definition_representation* and *context_dependent_shape_representation* |
+| | product_definition | Defines a product, one per *shape_definition_representation* |
+| | product_definition_formation  | One per *product_definition*. All *product_definition_formations* in the STEP file have unique names. | 
+| |  Product | One per *product_definition_formation*. All products in the STEP file have unique names. |
+| | product_type (CD) or product_related_product_category (DIS,IS) | One per product | 
+| | Mechanical_context (CD) or product_context (DIS,IS) | One per product.  | 
+| | product_definition_context | One per *product_definition*.  |
 
   
 @subsubsection occt_step_3_4_2 Topological shapes
 
 
   
 @subsubsection occt_step_3_4_2 Topological shapes
 
-| CASCADE shape        | STEP entity   | Comments | 
+| CASCADE shape | STEP entity | Comments | 
 | :----- | :---- | :----- | 
 | :----- | :---- | :----- | 
-| TopoDS_Compound      | geometric_curve_set   | If the write mode is *STEP214Control_GeometricCurveSet* only 3D curves of the edges found in *TopoDS_Compound* and all its subshapes are translated |
-| | manifold_solid_brep        | If the write mode is *STEP214Control_AsIs* and *TopoDS_Compound* consists only of *TopoDS_Solids*. |
-| | shell_based_surface_model  | If the write mode is *STEP214Control_AsIs* and *TopoDS_Compound* consists of *TopoDS_Solids*, *TopoDS_Shells* and *TopoDS_Faces*.|
+| TopoDS_Compound | geometric_curve_set | If the write mode is *STEP214Control_GeometricCurveSet* only 3D curves of the edges found in *TopoDS_Compound* and all its subshapes are translated |
+| | manifold_solid_brep | If the write mode is *STEP214Control_AsIs* and *TopoDS_Compound* consists only of *TopoDS_Solids*. |
+| | shell_based_surface_model | If the write mode is *STEP214Control_AsIs* and *TopoDS_Compound* consists of *TopoDS_Solids*, *TopoDS_Shells* and *TopoDS_Faces*.|
 | | geometric_curve_set | If the write mode is *STEP214Control_AsIs* and *TopoDS_Compound* contains *TopoDS_Wires, TopoDS_Edges, TopoDS_Vertices*. If the write mode is not *STEP214Control_AsIs* or *STEP214Control_GeometricCurveSet*, *TopoDS_Solids, TopoDS_Shells* and *TopoDS_Faces* are translated according to this table. |
 | | geometric_curve_set | If the write mode is *STEP214Control_AsIs* and *TopoDS_Compound* contains *TopoDS_Wires, TopoDS_Edges, TopoDS_Vertices*. If the write mode is not *STEP214Control_AsIs* or *STEP214Control_GeometricCurveSet*, *TopoDS_Solids, TopoDS_Shells* and *TopoDS_Faces* are translated according to this table. |
-| TopoDS_Solid | manifold_solid_brep | If the write mode is *STEP214Control_AsIs* or *STEP214Control_ManifoldSolidBrep* and CASCADE *TopoDS_Solid* has no voids. | 
-| | faceted_brep |     If the write mode is *STEP214Control_FacetedBrep*. |
-| | brep_with_voids    | If the write mode is *STEP214Control_AsIs* or *STEP214Control_ManifoldSolidBrep* and CASCADE *TopoDS_Solid* has voids. |
+| TopoDS_Solid | manifold_solid_brep | If the write mode is *STEP214Control_AsIs* or *STEP214Control_ManifoldSolidBrep* and CASCADE *TopoDS_Solid* has no voids. | 
+| | faceted_brep | If the write mode is *STEP214Control_FacetedBrep*. |
+| | brep_with_voids | If the write mode is *STEP214Control_AsIs* or *STEP214Control_ManifoldSolidBrep* and CASCADE *TopoDS_Solid* has voids. |
 | | shell_based_surface_model | If the write mode is *STEP214Control_ShellBasedSurfaceModel*. | 
 | | shell_based_surface_model | If the write mode is *STEP214Control_ShellBasedSurfaceModel*. | 
-| | geometric_curve_set        | If the write mode is *STEP214Control_GeometricCurveSet*. Only 3D curves of the edges are translated. | 
+| | geometric_curve_set | If the write mode is *STEP214Control_GeometricCurveSet*. Only 3D curves of the edges are translated. | 
 | TopoDS_Shell in a TopoDS_Solid | closed_shell | If *TopoDS_Shell* is closed shell. | 
 | TopoDS_Shell | manifold_solid_brep | If the write mode is *STEP214Control_ManifoldSolidBrep*. |
 | | shell_based_surface_model | If the write mode is *STEP214Control_AsIs* or *STEP214Control_ShellBasedSurfaceModel*. | 
 | | geometric_curve_set | If the write mode is *STEP214Control_GeometricCurveSet*. Only 3D curves of the edges are translated. | 
 | TopoDS_Shell in a TopoDS_Solid | closed_shell | If *TopoDS_Shell* is closed shell. | 
 | TopoDS_Shell | manifold_solid_brep | If the write mode is *STEP214Control_ManifoldSolidBrep*. |
 | | shell_based_surface_model | If the write mode is *STEP214Control_AsIs* or *STEP214Control_ShellBasedSurfaceModel*. | 
 | | geometric_curve_set | If the write mode is *STEP214Control_GeometricCurveSet*. Only 3D curves of the edges are translated. | 
-| TopoDS_Face  | advanced_face | |
-| TopoDS_Wire in a TopoDS_Face |       face_bound      | The resulting *face_bound* contains *poly_loop* if write mode is *faceted_brep* or *edge_loop* if it is not. | 
-| TopoDS_Wire  | geometric_curve_set   | If the write mode is *STEP214Control_GeometricCurveSet*. Only 3D curves of the edges are translated. |
-| TopoDS_Edge |        oriented_edge   | |
-| TopoDS_Vertex        | vertex_point  | | 
+| TopoDS_Face | advanced_face | |
+| TopoDS_Wire in a TopoDS_Face | face_bound | The resulting *face_bound* contains *poly_loop* if write mode is *faceted_brep* or *edge_loop* if it is not. | 
+| TopoDS_Wire | geometric_curve_set | If the write mode is *STEP214Control_GeometricCurveSet*. Only 3D curves of the edges are translated. |
+| TopoDS_Edge | oriented_edge | |
+| TopoDS_Vertex | vertex_point | | 
 
 @subsubsection occt_step_3_4_3 Geometrical objects
 
 @subsubsection occt_step_3_4_3 Geometrical objects
-| Geometry | CASCADE object    | STEP entity   | Comments | 
+| Geometry | CASCADE object | STEP entity | Comments | 
 | :----- | :------ | :----- | :----- | 
 | :----- | :------ | :----- | :----- | 
-| Points | Geom_CartesianPoint, Geom2d_CartesianPoint  |       cartesian_point | |
-| | TColgp_Array1OfPnt, TColgp_Array1OfPnt2d   | polyline       | | 
-| Placements | Geom_Axis1Plasement, Geom2d_AxisPlacement | axis1_placement     | | 
-| | Geom_Axis2Placement        | axis2_placement_3d    | | 
-| Directions | Geom_Direction, Geom2d_Direction         | direction    | |
-| Vectors | Geom_Vector, Geom2d_Vector | vector        | |
-| Curves | Geom_Circle | circle        | |
-| | Geom2d_Circle      | circle, rational_b_spline_curve       | |
-| | Geom_Ellipse       | Ellipse       | |
-| | 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_BezierCurve   | b_spline_curve_with_knots     | |
-| | Geom_Line   or Geom2d_Line |       Line | |
-| Surfaces     | Geom_Plane    | Plane | |
-| | Geom_OffsetSurface | offset_surface        | |
-| | Geom_ConicalSurface        | conical_surface       | | 
-| | Geom_CylindricalSurface    | cylindrical_surface   | | 
-| | Geom_OffsetSurface | offset_surface        | | 
-| | Geom_RectangularTrimmedSurface     | rectangular_trimmed_surface   | | 
-| | Geom_SphericalSurface |  spherical_surface | | 
-| | Geom_SurfaceOfLinear Extrusion     | surface_of_linear_extrusion   | | 
-| | Geom_SurfaceOf Revolution  | surface_of_revolution | |
-| | Geom_ToroidalSurface       | toroidal_surface or degenerate_toroidal_surface |      *degenerate_toroidal_surface* is produced if the minor radius is greater then the major one |
-| | Geom_BezierSurface | b_spline_surface_with_knots   | | 
-| | Geom_BsplineSurface        | b_spline_surface_with_knots or rational_b_spline_surface |    *rational_b_spline_surface* is produced if *Geom_BSplineSurface* is a rational Bspline |
+| Points | Geom_CartesianPoint, Geom2d_CartesianPoint |  cartesian_point | |
+| | TColgp_Array1OfPnt, TColgp_Array1OfPnt2d | polyline  | | 
+| Placements | Geom_Axis1Plasement, Geom2d_AxisPlacement | axis1_placement | | 
+| | Geom_Axis2Placement | axis2_placement_3d | | 
+| Directions | Geom_Direction, Geom2d_Direction  | direction | |
+| Vectors | Geom_Vector, Geom2d_Vector | vector | |
+| Curves | Geom_Circle | circle | |
+| | Geom2d_Circle | circle, rational_b_spline_curve | |
+| | Geom_Ellipse | Ellipse | |
+| | 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_BezierCurve | b_spline_curve_with_knots | |
+| | Geom_Line  or Geom2d_Line | Line | |
+| Surfaces | Geom_Plane | Plane | |
+| | Geom_OffsetSurface | offset_surface | |
+| | Geom_ConicalSurface | conical_surface | | 
+| | Geom_CylindricalSurface | cylindrical_surface | | 
+| | Geom_OffsetSurface | offset_surface | | 
+| | Geom_RectangularTrimmedSurface | rectangular_trimmed_surface | | 
+| | Geom_SphericalSurface |  spherical_surface | | 
+| | Geom_SurfaceOfLinear Extrusion | surface_of_linear_extrusion | | 
+| | Geom_SurfaceOf Revolution | surface_of_revolution | |
+| | Geom_ToroidalSurface | toroidal_surface or degenerate_toroidal_surface |   *degenerate_toroidal_surface* is produced if the minor radius is greater then the major one |
+| | Geom_BezierSurface | b_spline_surface_with_knots | | 
+| | Geom_BsplineSurface | b_spline_surface_with_knots or rational_b_spline_surface |  *rational_b_spline_surface* is produced if *Geom_BSplineSurface* is a rational Bspline |
 
 
 @subsection occt_step_3_5 Tolerance management
 
 
 @subsection occt_step_3_5 Tolerance management
@@ -1086,16 +1086,16 @@ Each field of a STEP entity should be represented by a corresponding field of th
 * Create the *RWStepxxx_RWNewEntity* class with a default constructor and methods *ReadStep()*, *WriteStep()* and if the entity references other entities, then method *Share()*. 
 * Update file *StepAP214_Protocol.cxx*. In the constructor *StepAP214_Protocol::StepAP214_Protocol()* add the new type to the map of registered types and associate the unique integer identifier with this type. 
 * Update file *RWStepAP214_ReadWriteModule.cxx*. The changes should be the following: 
 * Create the *RWStepxxx_RWNewEntity* class with a default constructor and methods *ReadStep()*, *WriteStep()* and if the entity references other entities, then method *Share()*. 
 * Update file *StepAP214_Protocol.cxx*. In the constructor *StepAP214_Protocol::StepAP214_Protocol()* add the new type to the map of registered types and associate the unique integer identifier with this type. 
 * Update file *RWStepAP214_ReadWriteModule.cxx*. The changes should be the following: 
      * For simple types: 
-                 * Add a static object of class *TCollection_AsciiString* with name *Reco_NewEntity* and initialize it with a string containing the STEP type. 
-                 * In constructor *WStepAP214_ReadWriteModule::RWStepAP214_ReadWriteModule()* add this object onto the list with the unique integer identifier of the new entity type. 
-                 * In function *RWStepAP214_ReadWriteModule::StepType()* add a new C++ case operator for this identifier. 
      * For complex types: 
-                 * In the method *RWStepAP214_ReadWriteModule::CaseStep()* add a code for recognition the new entity type returning its unique integer identifier. 
-                 * In the method *RWStepAP214_ReadWriteModule::IsComplex()* return True for this type. 
-                 * In the method *RWStepAP214_ReadWriteModule::ComplexType()* fill the list of subtypes composing this complex type. 
      * For both simple and complex types: 
-               * In function *RWStepAP214_ReadWriteModule::ReadStep()* add a new C++ case operator for the new identifier and call the *RWStepxxx_RWNewEntity* class, method *ReadStep* to initialize the new class. 
+ * For simple types: 
+    * Add a static object of class *TCollection_AsciiString* with name *Reco_NewEntity* and initialize it with a string containing the STEP type. 
+    * In constructor *WStepAP214_ReadWriteModule::RWStepAP214_ReadWriteModule()* add this object onto the list with the unique integer identifier of the new entity type. 
+    * In function *RWStepAP214_ReadWriteModule::StepType()* add a new C++ case operator for this identifier. 
+ * For complex types: 
+    * In the method *RWStepAP214_ReadWriteModule::CaseStep()* add a code for recognition the new entity type returning its unique integer identifier. 
+    * In the method *RWStepAP214_ReadWriteModule::IsComplex()* return True for this type. 
+    * In the method *RWStepAP214_ReadWriteModule::ComplexType()* fill the list of subtypes composing this complex type. 
+ * For both simple and complex types: 
+  * In function *RWStepAP214_ReadWriteModule::ReadStep()* add a new C++ case operator for the new identifier and call the *RWStepxxx_RWNewEntity* class, method *ReadStep* to initialize the new class. 
 * Update file *RWStepAP214_GeneralModule.cxx*. Add new C++ case operators to functions *NewVoid()* and *FillSharedCase()*, and in the method *CategoryNumber()* add a line defining a category of the new type. 
 * Enhance the *STEPControl_ActorRead class* (methods *Recognize()* and *Transfer()*), or class(es) translating some entities, to translate the new entity into an OCCT shape. 
 
 * Update file *RWStepAP214_GeneralModule.cxx*. Add new C++ case operators to functions *NewVoid()* and *FillSharedCase()*, and in the method *CategoryNumber()* add a line defining a category of the new type. 
 * Enhance the *STEPControl_ActorRead class* (methods *Recognize()* and *Transfer()*), or class(es) translating some entities, to translate the new entity into an OCCT shape. 
 
@@ -1143,13 +1143,13 @@ For a description of parameters used in reading a STEP file refer to <a href="#o
 
 For reading a STEP file, the following parameters are defined (see above, <a href="#occt_step_6_2">the command *param*</a>):
 
 
 For reading a STEP file, the following parameters are defined (see above, <a href="#occt_step_6_2">the command *param*</a>):
 
-| Description  | Name  | Values        | Meaning |
+| Description | Name | Values | Meaning |
 | :------------ | :---- | :------- | :------- |
 | :------------ | :---- | :------- | :------- |
-| Precision for input entities | read.precision.mode   | 0 or 1        | If 0 (File), precision of the input STEP file will be used for the loaded shapes; If 1 (Session), the following parameter will be used as the precision value. | 
+| Precision for input entities | read.precision.mode | 0 or 1 | If 0 (File), precision of the input STEP file will be used for the loaded shapes; If 1 (Session), the following parameter will be used as the precision value. | 
 | | read.precision.val | real | Value of precision (used if the previous parameter is 1) | 
 | | read.precision.val | real | Value of precision (used if the previous parameter is 1) | 
-| Surface curves       | read.surfacecurve.mode |      0 or 3   | Defines a preferable way of representing surface curves (2d or 3d representation). If 0, no preference. | 
-| Maximal tolerance    | read.maxprecision.mode | 0 or 1 | If 1, maximum tolerance is used as a rigid limit If 0, maximum tolerance is used as a limit but can be exceeded by some algorithms. | 
-| | read.maxprecision.val      | real | Value of maximum precision | 
+| Surface curves | read.surfacecurve.mode |  0 or 3  | Defines a preferable way of representing surface curves (2d or 3d representation). If 0, no preference. | 
+| Maximal tolerance | read.maxprecision.mode | 0 or 1 | If 1, maximum tolerance is used as a rigid limit If 0, maximum tolerance is used as a limit but can be exceeded by some algorithms. | 
+| | read.maxprecision.val | real | Value of maximum precision | 
 
 It is possible either only to load a STEP file into memory (i.e. fill the *InterfaceModel* with data from the file), or to read it (i.e. load and convert all entities to OCCT shapes). 
 Loading is done by the command 
 
 It is possible either only to load a STEP file into memory (i.e. fill the *InterfaceModel* with data from the file), or to read it (i.e. load and convert all entities to OCCT shapes). 
 Loading is done by the command 
@@ -1166,11 +1166,11 @@ The optional selection (see below for a description of selections) specifies a s
 
 | N | Mode | Description |
 | :---- | :---- | :---- |  
 
 | N | Mode | Description |
 | :---- | :---- | :---- |  
-| 0    | End   | Finish transfer and exit stepread | 
-| 1    | root with rank 1      | Transfer first root | 
-| 2    | root by its rank      | Transfer root specified by its rank | 
-| 3    | One entity    | Transfer entity with a number provided by the user | 
-| 4    | Selection     | Transfer only entities contained in selection | 
+| 0 | End | Finish transfer and exit stepread | 
+| 1 | root with rank 1 | Transfer first root | 
+| 2 | root by its rank | Transfer root specified by its rank | 
+| 3 | One entity | Transfer entity with a number provided by the user | 
+| 4 | Selection | Transfer only entities contained in selection | 
 
 * root is an entity in the STEP file which is not referenced by another entities 
 Second parameter of the stepread command defines the name of the loaded shape. 
 
 * root is an entity in the STEP file which is not referenced by another entities 
 Second parameter of the stepread command defines the name of the loaded shape. 
@@ -1185,35 +1185,41 @@ To get the number of a STEP entity, corresponding to an OCCT shape, use the comm
 To clear the map of correspondences between STEP entities and OCCT shapes use the command *Draw:> tpclear*.
  
 @subsection occt_step_6_4 Analyzing the transferred data 
 To clear the map of correspondences between STEP entities and OCCT shapes use the command *Draw:> tpclear*.
  
 @subsection occt_step_6_4 Analyzing the transferred data 
+
 The procedure of analysis of data import can be divided into two stages: 
    1.to check the file contents, 
    2.to estimate the translation results (conversion and validated ratios). 
 The procedure of analysis of data import can be divided into two stages: 
    1.to check the file contents, 
    2.to estimate the translation results (conversion and validated ratios). 
-   
+
 @subsubsection occt_step_6_4_1 Checking file contents
 @subsubsection occt_step_6_4_1 Checking file contents
+
 General statistics on the loaded data can be obtained by using the command 
 General statistics on the loaded data can be obtained by using the command 
-Draw:> data \<symbol\> 
+
+~~~~
+Draw:> data <symbol> 
+~~~~
+
 Information printed by this command depends on the symbol specified: 
 
 Information printed by this command depends on the symbol specified: 
 
-* *g*  - Prints the information contained in the header of the file;
-* *c* or *f*   - Prints messages generated during the loading of the STEP file (when the procedure of the integrity of the loaded data check is performed) and the resulting statistics (f works only with fails while c with both fail and warning messages) ;
-* *t*  - The same as *c* or *f*, with a list of failed or warned entities;
-* *m* or *l*   - The same as *t* but also prints a status for each entity;
-* *e*  - Lists all entities of the model with their numbers, types, validity status etc.
-* *R*  - The same as e but lists only root entities
+* *g* - Prints the information contained in the header of the file;
+* *c* or *f* - Prints messages generated during the loading of the STEP file (when the procedure of the integrity of the loaded data check is performed) and the resulting statistics (f works only with fails while c with both fail and warning messages) ;
+* *t* - The same as *c* or *f*, with a list of failed or warned entities;
+* *m* or *l* - The same as *t* but also prints a status for each entity;
+* *e*  - Lists all entities of the model with their numbers, types, validity status etc.
+* *R* - The same as e but lists only root entities
 
 There is a set of special objects, which can be used to operate with a loaded model. They can be of the following types: 
 
 There is a set of special objects, which can be used to operate with a loaded model. They can be of the following types: 
-* Selection    Filters - allow selecting subsets of entities of the loaded model;
-* Counter      - calculates some statistics on the model data.
+* Selection Filters - allow selecting subsets of entities of the loaded model;
+* Counter - calculates some statistics on the model data.
 
 A list of these objects defined in the current session can be printed in DRAW by command *Draw:> listitems*. 
 
 
 A list of these objects defined in the current session can be printed in DRAW by command *Draw:> listitems*. 
 
-Command *Draw:> givelist <selection_name>* prints a list of a subset of loaded entities defined by the <i><selection></i> argument: 
+Command *Draw:> givelist \<selection_name\>* prints a list of a subset of loaded entities defined by the <i>\<selection\></i> argument: 
 
 
-* *xst-model-all*      all entities of the model;
-* *xst-model-roots*    all roots;
-* *xst-pointed*        (Interactively) pointed entities (not used in DRAW);
-* *xst-transferrable-all*      all transferable (recognized) entities;
-* *xst-transferrable-roots*    Transferable roots.
+* *xst-model-all* all entities of the model;
+* *xst-model-roots* all roots;
+* *xst-pointed* (Interactively) pointed entities (not used in DRAW);
+* *xst-transferrable-all* all transferable (recognized) entities;
+* *xst-transferrable-roots* Transferable roots.
 
 The command *listtypes* gives a list of entity types, which were encountered in the last loaded file (with a number of STEP entities of each type). 
 
 
 The command *listtypes* gives a list of entity types, which were encountered in the last loaded file (with a number of STEP entities of each type). 
 
@@ -1221,19 +1227,19 @@ The list cannot be shown for all entities but for a subset of them. This subset
  
 Two commands are used to calculate statistics on the entities in the model: 
 ~~~~~
  
 Two commands are used to calculate statistics on the entities in the model: 
 ~~~~~
-Draw:> count <counter> [\<selection\>] 
-Draw:> listcount <counter> [\<selection\>] 
+Draw:> count <counter> [<selection>] 
+Draw:> listcount <counter> [<selection>] 
 ~~~~~
 The former only prints a count of entities while the latter also gives a list of them. 
 
 The optional selection argument, if specified, defines a subset of entities, which are to be taken into account. The first argument should be one of the currently defined counters: 
 ~~~~~
 The former only prints a count of entities while the latter also gives a list of them. 
 
 The optional selection argument, if specified, defines a subset of entities, which are to be taken into account. The first argument should be one of the currently defined counters: 
-* *xst-types*  - calculates how many entities of each OCCT type exist
+* *xst-types* - calculates how many entities of each OCCT type exist
 * *step214-types* - calculates how many entities of each STEP type exist
 
 Entities in the STEP file are numbered in the succeeding order. An entity can be identified either by its number or by its label. Label is the letter \# followed by the rank. 
 * *Draw:> elab \#* outputs a label for an entity with a known number. 
 * *Draw:> enum \#* prints a number for the entity with a given label. 
 * *step214-types* - calculates how many entities of each STEP type exist
 
 Entities in the STEP file are numbered in the succeeding order. An entity can be identified either by its number or by its label. Label is the letter \# followed by the rank. 
 * *Draw:> elab \#* outputs a label for an entity with a known number. 
 * *Draw:> enum \#* prints a number for the entity with a given label. 
-* *Draw:> entity \# <level_of_information>* outputs the contents of a STEP entity. 
+* *Draw:> entity \# \<level_of_information\>* outputs the contents of a STEP entity. 
 * *Draw: estat \#* outputs the list of entities referenced by a given entity and the list of entities referencing to it. 
 * *Draw: dumpassembly* prints a STEP assembly as a tree.
 
 * *Draw: estat \#* outputs the list of entities referenced by a given entity and the list of entities referencing to it. 
 * *Draw: dumpassembly* prints a STEP assembly as a tree.
 
@@ -1242,19 +1248,19 @@ Information about product names, *next_assembly_usage_occurence, shape_definitio
 @subsubsection occt_step_6_4_2 Estimating the results of reading STEP
 All the following commands are available only after data is converted into OCCT shapes (i.e. after command 214read). 
 
 @subsubsection occt_step_6_4_2 Estimating the results of reading STEP
 All the following commands are available only after data is converted into OCCT shapes (i.e. after command 214read). 
 
-Command *Draw:> tpstat [*|?]\<symbol\> [\<selection\>]* is provided to get all statistics on the last transfer, including a list of transferred entities with mapping from STEP to OCCT types, as well as fail and warning messages. The parameter <i><symbol></i> defines what information will be printed: 
+Command *Draw:> tpstat [*|?]\<symbol\> [\<selection\>]* is provided to get all statistics on the last transfer, including a list of transferred entities with mapping from STEP to OCCT types, as well as fail and warning messages. The parameter <i>\<symbol\></i> defines what information will be printed: 
 
 
-* *g*  - General statistics (a list of results and messages)
-* *c*  - Count of all warning and fail messages
-* *C*  - List of all warning and fail messages
-* *f*  - Count of all fail messages
-* *F*  - List of all fail messages
-* *n*  - List of all transferred roots
-* *s*  - The same, with types of source entity and the type of result
-* *b*  - The same, with messages
-* *t*  - Count of roots for geometrical types
-* *r*  - Count of roots for topological types
-* *l*  - The same, with the type of the source entity
+* *g* - General statistics (a list of results and messages)
+* *c* - Count of all warning and fail messages
+* *C* - List of all warning and fail messages
+* *f* - Count of all fail messages
+* *F* - List of all fail messages
+* *n* - List of all transferred roots
+* *s* - The same, with types of source entity and the type of result
+* *b* - The same, with messages
+* *t* - Count of roots for geometrical types
+* *r* - Count of roots for topological types
+* *l* - The same, with the type of the source entity
 
 The sign \* before parameters *n, s, b, t, r* makes it work on all entities (not only on roots).
 
 
 The sign \* before parameters *n, s, b, t, r* makes it work on all entities (not only on roots).
 
@@ -1273,11 +1279,11 @@ The number of faces is returned as a number of references. To obtain the number
 To analyze the internal validity of the shape, use command *Draw:> checkbrep \<shape_name\> \<expurged_shape_name\>*. It checks shape geometry and topology for different cases of inconsistency, like self-intersecting wires or wrong orientation of trimming contours. If an error is found, it copies bad parts of the shape with the names <i>expurged_subshape_name _\#</i> and generates an appropriate message. If possible this command also tries to find STEP entities the OCCT shape was produced from. 
 
 <i>\<expurged_shape_name\></i> will contain the original shape without invalid subshapes. 
 To analyze the internal validity of the shape, use command *Draw:> checkbrep \<shape_name\> \<expurged_shape_name\>*. It checks shape geometry and topology for different cases of inconsistency, like self-intersecting wires or wrong orientation of trimming contours. If an error is found, it copies bad parts of the shape with the names <i>expurged_subshape_name _\#</i> and generates an appropriate message. If possible this command also tries to find STEP entities the OCCT shape was produced from. 
 
 <i>\<expurged_shape_name\></i> will contain the original shape without invalid subshapes. 
-To get information on tolerances of the shape use command <i>Draw:> tolerance \<shape_name\> [\<min\> [\<max\>] [<symbol>]] </i>. It outputs maximum, average and minimum values of tolerances for each kind of subshapes having tolerances and for the whole shape in general. 
+To get information on tolerances of the shape use command <i>Draw:> tolerance \<shape_name\> [\<min\> [\<max\>] [\<symbol\>]] </i>. It outputs maximum, average and minimum values of tolerances for each kind of subshapes having tolerances and for the whole shape in general. 
 
 When specifying min and max arguments this command saves shapes with tolerances in the range [min, max] with names shape_name_... and gives their total number. 
 
 
 When specifying min and max arguments this command saves shapes with tolerances in the range [min, max] with names shape_name_... and gives their total number. 
 
-<i><Symbol></i> is used for specifying the kind of sub-shapes to analyze: 
+<i>\<Symbol\></i> is used for specifying the kind of sub-shapes to analyze: 
 * *v* - for vertices, 
 * *e* - for edges, 
 * *f* - for faces, 
 * *v* - for vertices, 
 * *e* - for edges, 
 * *f* - for faces, 
@@ -1286,16 +1292,16 @@ When specifying min and max arguments this command saves shapes with tolerances
 @subsection occt_step_6_5 Writing a STEP file
 For writing shapes to a STEP file, the following parameters are defined (see above, <a href="#occt_step_6_2">the command *param*</a>):
 
 @subsection occt_step_6_5 Writing a STEP file
 For writing shapes to a STEP file, the following parameters are defined (see above, <a href="#occt_step_6_2">the command *param*</a>):
 
-| Description  | Name  | Values        | Meaning | 
+| Description | Name | Values | Meaning | 
 | :------------ | :----- | :------ | :------- | 
 | :------------ | :----- | :------ | :------- | 
-| Uncertainty for resulting entities | Write.precision.mode | -1, 0, 1 or 2    | If -1 the uncertainty value is set to the minimal tolerance of CASCADE subshapes. If 0 the uncertainty value is set to the average tolerance of CASCADE subshapes. If 1 the uncertainty value is set to the maximal tolerance of CASCADE subshapes. If 2 the uncertainty value is set to write.precision.val |
-| Value of uncertainty | Write.precision.val | real | Value of uncertainty (used if previous parameter is 2). | 
+| Uncertainty for resulting entities | Write.precision.mode | -1, 0, 1 or 2 | If -1 the uncertainty value is set to the minimal tolerance of CASCADE subshapes. If 0 the uncertainty value is set to the average tolerance of CASCADE subshapes. If 1 the uncertainty value is set to the maximal tolerance of CASCADE subshapes. If 2 the uncertainty value is set to write.precision.val |
+| Value of uncertainty | Write.precision.val | real | Value of uncertainty (used if previous parameter is 2). | 
 
 Several shapes can be written in one file. To start writing a new file, enter command *Draw:> newmodel*. 
 Actually, command *newmodel* will clear the *InterfaceModel* to empty it, and the next command will convert the specified shape to STEP entities and add them to the *InterfaceModel*: 
 
 ~~~~~
 
 Several shapes can be written in one file. To start writing a new file, enter command *Draw:> newmodel*. 
 Actually, command *newmodel* will clear the *InterfaceModel* to empty it, and the next command will convert the specified shape to STEP entities and add them to the *InterfaceModel*: 
 
 ~~~~~
-Draw:> stepwrite <mode> \<shape_name\> [<file_name>] 
+Draw:> stepwrite <mode> <shape_name> [<file_name>] 
 ~~~~~
 
 The following  modes are available : 
 ~~~~~
 
 The following  modes are available : 
@@ -1304,7 +1310,7 @@ The following  modes are available :
     * *f* - *faceted_brep* 
     * *w* - *geometric_curve_set* 
     * *s* - *shell_based_surface_model* 
     * *f* - *faceted_brep* 
     * *w* - *geometric_curve_set* 
     * *s* - *shell_based_surface_model* 
-       
 After a successful translation, if file_name parameter is not specified, the procedure asks you whether to write a STEP model in the file or not: 
 ~~~~~
 execution status : 1 
 After a successful translation, if file_name parameter is not specified, the procedure asks you whether to write a STEP model in the file or not: 
 ~~~~~
 execution status : 1 
index cdf1f86..633783b 100644 (file)
@@ -1,4 +1,4 @@
-TObj Package  {#user_guides__tobj}
+TObj Package  {#occt_user_guides__tobj}
 ==================
 
 @tableofcontents
 ==================
 
 @tableofcontents
index a6a08b1..f1ccc01 100644 (file)
@@ -3,20 +3,20 @@ User Guides {#user_guides}
 
 OCCT User Guides are organized by OCCT modules:
 
 
 OCCT User Guides are organized by OCCT modules:
 
-* @subpage user_guides__foundation_classes "Foundation Classes"
-* @subpage user_guides__modeling_data "Modeling Data"
-  * @subpage occt_brep_format "BREP format description"
-* @subpage user_guides__modeling_algos "Modeling Algorithms"
-  * @subpage user_guides__shape_healing "Shape Healing"
-* @subpage user_guides__visualization "Visualization"
-  * @subpage occt_voxels_wp "Voxels"
+* @subpage occt_user_guides__foundation_classes "Foundation Classes"
+* @subpage occt_user_guides__modeling_data "Modeling Data"
+  * @subpage occt_user_guides__brep_wp "BREP format description"
+* @subpage occt_user_guides__modeling_algos "Modeling Algorithms"
+  * @subpage occt_user_guides__shape_healing "Shape Healing"
+* @subpage occt_user_guides__visualization "Visualization"
+  * @subpage occt_user_guides__voxels_wp "Voxels"
 * Data Exchange
 * Data Exchange
-  * @subpage user_guides__iges "IGES translator"
-  * @subpage user_guides__step "STEP translator"
-  * @subpage user_guides__xde  "Extended Data Exchange (XDE)"
-* @subpage user_guides__ocaf "Open CASCADE Application Framework (OCAF)"
-  * @subpage ocaf_wp "Application Framework White Paper"
-  * @subpage occt_ocaf_functionmechanism_wp "OCAF Function Mechanism"
-  * @subpage occt_ocaf_tree_wp "Distribution of Data through OCAF Tree" 
-  * @subpage user_guides__tobj "TObj package"
-* @subpage user_guides__test_harness "DRAW Test Harness"
\ No newline at end of file
+  * @subpage occt_user_guides__iges "IGES translator"
+  * @subpage occt_user_guides__step "STEP translator"
+  * @subpage occt_user_guides__xde  "Extended Data Exchange (XDE)"
+* @subpage occt_user_guides__ocaf "Open CASCADE Application Framework (OCAF)"
+  * @subpage occt_user_guides__ocaf_wp "Application Framework White Paper"
+  * @subpage occt_user_guides__ocaf_functionmechanism_wp "OCAF Function Mechanism"
+  * @subpage occt_user_guides__ocaf_tree_wp "Distribution of Data through OCAF Tree" 
+  * @subpage occt_user_guides__tobj "TObj package"
+* @subpage occt_user_guides__test_harness "DRAW Test Harness"
\ No newline at end of file
index 291f902..e1eb70f 100644 (file)
@@ -1,4 +1,4 @@
-Visualization    {#user_guides__visualization}
+Visualization    {#occt_user_guides__visualization}
 ========================
 @tableofcontents 
 
 ========================
 @tableofcontents 
 
@@ -1061,12 +1061,12 @@ For the presentation of planes and trihedra, the default  unit of length is mill
 
 @subsubsection occt_visu_3_5_2 Objects 
 
 
 @subsubsection occt_visu_3_5_2 Objects 
 
-*AIS_Shape* has three visualization modes :  
+*AIS_Shape* has three visualization modes :
   * mode 0 : Line (default mode) 
   * mode 1 : Shading (depending on the type of shape) 
   * mode 2 : Bounding Box 
 
   * mode 0 : Line (default mode) 
   * mode 1 : Shading (depending on the type of shape) 
   * mode 2 : Bounding Box 
 
-And at maximum seven selection modes, depending on the shape complexity:  
+And at maximum seven selection modes, depending on the shape complexity:
   * mode 0 : selection of the *AIS_Shape*; 
   * mode 1 : selection of the vertices; 
   * mode 2 : selection of the edges; 
   * mode 0 : selection of the *AIS_Shape*; 
   * mode 1 : selection of the vertices; 
   * mode 2 : selection of the edges; 
@@ -1075,13 +1075,13 @@ And at maximum seven selection modes, depending on the shape complexity:
   * mode 5 : selection of the shells; 
   * mode 6 : selection of the constituent solids. 
 
   * mode 5 : selection of the shells; 
   * mode 6 : selection of the constituent solids. 
 
-* *AIS_Triangulation* is a simple interactive object for displaying  triangular mesh contained in *Poly_Triangulation* container. 
-* *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_ConnectedShape* is an object connected to interactive objects  having a shape; this class has the same decompositions as *AIS_Shape*. What’s  more, it allows a presentation of hidden parts, which are calculated  automatically from the shape of its 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 calculations of presentation) 
-* *AIS_MultipleConnectedShape* is an interactive Object connected to  a list of interactive objects having a Shape <i>(AIS_Shape, AIS_ConnectedShape,  AIS_MultipleConnectedShape)</i>. The presentation of hidden parts is calculated  automatically.  
-* *AIS_TexturedShape* is an Interactive Object that supports texture  mapping. It is constructed as a usual AIS_Shape, but has additional methods  that allow to map a texture on it. 
-* *MeshVS_Mesh* is an Interactive Object that represents meshes, it  has a data source that provides geometrical information (nodes, elements) and  can be built up from the source data with a custom presentation builder. 
+  * *AIS_Triangulation* is a simple interactive object for displaying  triangular mesh contained in *Poly_Triangulation* container. 
+  * *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_ConnectedShape* is an object connected to interactive objects  having a shape; this class has the same decompositions as *AIS_Shape*. What’s  more, it allows a presentation of hidden parts, which are calculated  automatically from the shape of its 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 calculations of presentation) 
+  * *AIS_MultipleConnectedShape* is an interactive Object connected to  a list of interactive objects having a Shape <i>(AIS_Shape, AIS_ConnectedShape,  AIS_MultipleConnectedShape)</i>. The presentation of hidden parts is calculated  automatically.  
+  * *AIS_TexturedShape* is an Interactive Object that supports texture  mapping. It is constructed as a usual AIS_Shape, but has additional methods  that allow to map a texture on it. 
+  * *MeshVS_Mesh* is an Interactive Object that represents meshes, it  has a data source that provides geometrical information (nodes, elements) and  can be built up from the source data with a custom presentation builder. 
 
 @subsubsection occt_visu_3_5_3 Relations 
   * *AIS_ConcentricRelation* 
 
 @subsubsection occt_visu_3_5_3 Relations 
   * *AIS_ConcentricRelation* 
index b8d4413..d6e05c5 100644 (file)
@@ -1,4 +1,4 @@
-Voxel Package {#occt_voxels_wp}
+Voxel Package {#occt_user_guides__voxels_wp}
 ========================
 
 @tableofcontents 
 ========================
 
 @tableofcontents 
@@ -72,8 +72,8 @@ In these images a boundary representation is displayed to the  left.  In the cen
 ### Boolean operations 
 
 Fusion and cutting of two cubes of voxels are performed the class *Voxel_BooleanOperations*.   The cubes should have the same size and be split into voxels in the same way.
 ### Boolean operations 
 
 Fusion and cutting of two cubes of voxels are performed the class *Voxel_BooleanOperations*.   The cubes should have the same size and be split into voxels in the same way.
-* <i>::Fuse()</i> summarizes the values of the corresponding  voxels and limits the result by the upper limit (if succeeded).  
-* <i>::Cut()</i> subtracts the values of the corresponding  voxels and limits the result by zero.  
+* <i>\::Fuse()</i> summarizes the values of the corresponding  voxels and limits the result by the upper limit (if succeeded).  
+* <i>\::Cut()</i> subtracts the values of the corresponding  voxels and limits the result by zero.  
 
 ### Voxelization 
 
 
 ### Voxelization 
 
index b269522..4fee9b6 100644 (file)
@@ -1,4 +1,4 @@
- Extended Data Exchange (XDE)  {#user_guides__xde}
+ Extended Data Exchange (XDE)  {#occt_user_guides__xde}
 ============================
 
 @tableofcontents
 ============================
 
 @tableofcontents
diff --git a/gendoc b/gendoc
new file mode 100644 (file)
index 0000000..3fb2d61
--- /dev/null
+++ b/gendoc
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+# Helper script to run generation of OCCT documentation on Linux.
+# Running it requires that Tcl, Doxygen, and MikTex (for PDF generation) should be in the PATH
+
+anArgs=$*
+anOldPath="$PATH"
+anOldLd="$LD_LIBRARY_PATH"
+anOldDyLd="$DYLD_LIBRARY_PATH"
+
+# go to the script directory
+aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}" ]; then cd "$aScriptPath"; fi; aScriptPath="$PWD";
+if [ -e "${aScriptPath}/env.sh" ]; then source "${aScriptPath}/env.sh"; fi
+
+tclsh "${aScriptPath}/adm/start.tcl" $anArgs
+
+export PATH="$anOldPath"
+export LD_LIBRARY_PATH="$anOldLd"
+export DYLD_LIBRARY_PATH="$anOldDyLd"
index efb46d9..0bce76c 100644 (file)
@@ -10,5 +10,5 @@ if exist "%~dp0env.bat" (
   call "%~dp0env.bat"
 )
 
   call "%~dp0env.bat"
 )
 
-tclsh.exe %~dp0dox/start.tcl  %*
+tclsh.exe %~dp0adm/start.tcl  %*
 SET "PATH=%OLD_PATH%"
 SET "PATH=%OLD_PATH%"
diff --git a/gendoc.sh b/gendoc.sh
deleted file mode 100755 (executable)
index b608e30..0000000
--- a/gendoc.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-
-# Helper script to run generation of OCCT documentation on Linux.
-# Running it requires that Tcl, Doxygen, and MikTex (for PDF generation) should be in the PATH
-
-anArgs=$*
-anOldPath="$PATH"
-anOldLd="$LD_LIBRARY_PATH"
-anOldDyLd="$DYLD_LIBRARY_PATH"
-
-# go to the script directory
-aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}" ]; then cd "$aScriptPath"; fi; aScriptPath="$PWD";
-if [ -e "${aScriptPath}/env.sh" ]; then source "${aScriptPath}/env.sh"; fi
-
-tclsh "${aScriptPath}/dox/start.tcl" $anArgs
-
-export PATH="$anOldPath"
-export LD_LIBRARY_PATH="$anOldLd"
-export DYLD_LIBRARY_PATH="$anOldDyLd"