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.

55 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_HTML.txt [moved from dox/FILES.txt with 100% similarity]
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 [moved from gendoc.sh with 92% similarity, mode: 0644]
gendoc.bat

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
similarity index 100%
rename from dox/FILES.txt
rename to dox/FILES_HTML.txt
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 @@
-\feff Building 3rd-party libraries on Linux {#dev_guides__building_3rdparty_linux}
+\feff Building 3rd-party libraries on Linux {#occt_dev_guides__building_3rdparty_linux}
 =========
 
 @tableofcontents 
index 88bd211..211696e 100644 (file)
@@ -1,4 +1,4 @@
-\feff Building 3rd-party libraries on MacOS X {#dev_guides__building_3rdparty_osx}
+\feff Building 3rd-party libraries on MacOS X {#occt_dev_guides__building_3rdparty_osx}
 ==============================================
 @tableofcontents 
 
index 6a68c2a..38cde80 100644 (file)
@@ -1,4 +1,4 @@
-\feff Building 3rd-party libraries on Windows {#dev_guides__building_3rdparty_windows}
+\feff Building 3rd-party libraries on Windows {#occt_dev_guides__building_3rdparty_windows}
 ==============================================
 @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
@@ -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
-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 
-\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 
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, 
@@ -9,24 +9,23 @@ you need to:
 
    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
-   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.
-   - \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
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
@@ -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
-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
-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.
 
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
@@ -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
-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
-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:
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
@@ -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
-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
-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: 
 
index 194a0d0..1b44bc1 100644 (file)
@@ -1,11 +1,11 @@
-Using WOK {#dev_guides__building__wok}
+Using WOK {#occt_dev_guides__building_wok}
 =========
 
 @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 
-@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.
 
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
@@ -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
-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
-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:
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
index 5ade76f..3f85bec 100644 (file)
@@ -1,4 +1,4 @@
-Coding Rules {#dev_guides__coding_rules}
+Coding Rules {#occt_dev_guides__coding_rules}
 ======================================
 
 @tableofcontents
@@ -238,7 +238,7 @@ Prefer C++ style comments in C++ sources.
 
 ### 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]
 
@@ -541,7 +541,7 @@ Use *private* fields if future extensions should be disabled.
 
 ### 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]
 
index d8bb29d..5e0d6b2 100644 (file)
@@ -1,4 +1,4 @@
-Contribution Workflow {#dev_guides__contribution_workflow}
+Contribution Workflow {#occt_dev_guides__contribution_workflow}
 ====================================
 @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
@@ -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
 
-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).
 
index e8d5880..f35fff8 100644 (file)
@@ -3,16 +3,16 @@
 
 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:
 
-* @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
@@ -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
 
-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**
 
-* 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:
 
 ~~~~
-    % 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
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 
@@ -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>
 ~~~~~
 
-  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:
  
index 5298224..3406118 100644 (file)
@@ -1,4 +1,4 @@
- Automated Testing System  {#dev_guides__tests}
+ Automated Testing System  {#occt_dev_guides__tests}
 ======================================
 
 @tableofcontents
@@ -11,7 +11,7 @@ Reading the Introduction is sufficient for OCCT developers to use the test syste
 
 @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.
 
@@ -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:
-* <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>-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;
index 8713ddd..dd0d0f7 100644 (file)
@@ -1,4 +1,4 @@
-Workshop Organisation Kit  {#dev_guides__wok}
+Workshop Organisation Kit  {#occt_dev_guides__wok}
 =========================
 
 @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
-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
@@ -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. 
-* 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
+
 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: 
-       *  *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/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: 
-       *  *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: 
-       * *<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"
@@ -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: 
 ~~~~~
-> screate –d <MyFactory:MyWorkshp>
+> screate –d <MyFactory:MyWorkshop>
 ~~~~~
 
 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: 
 ~~~~~
-       > 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
@@ -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. 
 ~~~~~
-       > wcreate MyWb -f Topo -d
+  > wcreate MyWb -f Topo -d
 ~~~~~
 2. Create MyPack in MyWb. 
 ~~~~~
-       > ucreate MyPack     
+  > ucreate 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. 
 ~~~~~
-        >  umake -e xcpp 
+   >  umake -e xcpp 
 ~~~~~
 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>.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
-       + <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
-       + <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.
-       + <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
-       + <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
-       + <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. 
-* *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.)
-* *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: 
 ~~~~~
-       > 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: 
 ~~~~~
-       > umake [<MyNoCDLPack>]
+  > umake [<MyNoCDLPack>]
 ~~~~~
 **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. 
-* *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. 
@@ -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: 
 ~~~~~
-       schema MySchema
-       is
+  schema MySchema
+  is
 class <MyClass> from <Package>;
-       end;
+  end;
 ~~~~~
-       
+  
 #### 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. 
 ~~~~~
-       > umake -e xcpp.sch
+  > umake -e xcpp.sch
 ~~~~~
 5. Derive application schema files. 
 ~~~~~
-       > umake -o xcpp.ossg
+  > umake -o xcpp.ossg
 ~~~~~
 6. Compile the schema. 
 ~~~~~
-       > umake -o obj
+  > umake -o obj
 ~~~~~
 
 #### Schema Files
 
 * Primary Files for a Schema
-       + *<Schema>.cdl* Primary schema file.
+  + *\<Schema\>.cdl* Primary schema file.
 * 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 
 
@@ -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. 
 
 ~~~~~
-       executable <MyExec> // the executable unit
+  executable <MyExec> // the executable unit
 is
-       executable myexec // the binary file
+  executable myexec // the binary file
 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
-       myex2;
+  myex2;
 end;
-       end;
-~~~~~  
-       
+  end;
+~~~~~  
+  
 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. 
 ~~~~~
-       > ucreate -x MyExec
+  > ucreate -x 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. 
 ~~~~~
-       > umake
-~~~~~  
+  > umake
+~~~~~  
 6. Run the executable file. 
 ~~~~~
-       > wokcd -PLib
-               > MyExec
+  > wokcd -PLib
+    > MyExec
 ~~~~~
 
 #### 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
 
@@ -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 
-       is 
+  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 
-       mytest2; 
+  mytest2; 
 end; 
-       end; 
+  end; 
 ~~~~~
 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: 
 ~~~~~
-       > ucreate -t <TKMyToolkit>
-       > wokcd <TKMyToolkit>
+  > ucreate -t <TKMyToolkit>
+  > wokcd <TKMyToolkit>
 ~~~~~
 
 #### 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; 
-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. 
@@ -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]** |
-| **Get** | DevelopmentUnitName::Type:::File |
+| **Get** | DevelopmentUnitName::Type\:\:\:File |
 
 \* 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. 
-* *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: 
@@ -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:
-* <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:
-* <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. 
-* *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.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.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
@@ -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. 
 ~~~~~
-       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: 
@@ -1286,7 +1287,7 @@ CommandName
 ~~~~~
 **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: 
@@ -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: 
-* _<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. 
@@ -1345,9 +1346,9 @@ Closes and reopens all the entities.
 ~~~~~
 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: 
-* -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
@@ -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>]
 ~~~~~
-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). 
@@ -1375,10 +1376,10 @@ Options:
 * -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
 
@@ -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: 
-* -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
@@ -1415,19 +1416,19 @@ Displays the location of the file, MyFile.
 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. 
-* -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 
 
@@ -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. 
-* -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 
 
@@ -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.* 
 ~~~~~
-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: 
@@ -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. 
-* -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
 
@@ -1632,7 +1633,7 @@ The following parameters are mandatory when declaring parcels:
 * **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. 
 
@@ -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
 
-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. 
@@ -1669,7 +1670,7 @@ Displays a list of units in the parcel MyParcel.
 ~~~~~
 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
@@ -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>
 ~~~~~
-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: 
@@ -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. 
-* -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
@@ -1744,7 +1745,7 @@ Displays a list of workbenches in the nearest workshop.
 ~~~~~
 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
 
@@ -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>
 ~~~~~
-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: 
-* **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. 
-* -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
 
@@ -1800,7 +1801,7 @@ Creates the workbench MyWorkbench using default values for all mandatory paramet
 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. 
 
@@ -1810,7 +1811,7 @@ Options:
 * -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. 
 
@@ -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* 
-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
 
@@ -1854,16 +1855,16 @@ wprocess <WorkbenchName> <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
 
@@ -1885,7 +1886,7 @@ The development unit is the basic building block of development work in the WOK
 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. 
 
@@ -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. 
-* -P - Displays ucreate creation possibilities in format: <TypeCode> <TypeName>. 
+* -P - Displays ucreate creation possibilities in format: \<TypeCode\> \<TypeName\>.
 
 #### Examples
 
@@ -1914,7 +1915,7 @@ uinfo -t|c [<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. 
 
@@ -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: 
-* -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. 
@@ -1949,7 +1950,7 @@ Lists the names of the header files associated with the unit MyUnit which is in
 ~~~~~
 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
 ~~~~~ 
@@ -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: 
-* -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
 
@@ -2029,16 +2030,16 @@ For each class, we extract the prototypes of:
   *  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 
-         *  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 
-         *  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: 
@@ -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. 
 
-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 
@@ -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 
-       \@set %Kernel_CMPLRS_EDL = **; 
+  \@set %Kernel_CMPLRS_EDL = **; 
 #// Then set C++ compilation options, based on workstation type: 
-       \@if( %Station == *sil* ) then 
+  \@if( %Station == *sil* ) then 
 \@set %ModeOpt =  * *; 
-       \@endif; 
-       \@if( %Station == *ao1* ) then 
+  \@endif; 
+  \@if( %Station == *ao1* ) then 
 \@set %ModeOpt = *-g *; 
-       \@endif; 
-       \@if( %Station == *hp* ) then 
+  \@endif; 
+  \@if( %Station == *hp* ) then 
 \@string %CMPLRS_C_Options +=  * -Aa -D_HPUX_SOURCE +e*; 
-       \@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 
-       \@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 %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_toolkit_ListWith = *obj.comp obj.objs*; 
+  \@set %WOKSteps_toolkit_ListWith = *obj.comp obj.objs*; 
 \@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. 
-* -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
 ~~~~~
@@ -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: 
-* <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. 
-* -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. 
-* -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 
@@ -2200,10 +2201,10 @@ wintegre [<reportID>] –wb <MasterWb>
 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: 
-* -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. 
@@ -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. 
-* -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: 
-* -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. 
 
@@ -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: 
-* <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. 
-* -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
@@ -2383,7 +2384,7 @@ The following procedure explains how to set up the source management environment
 ~~~~~
 > 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
 
@@ -2397,7 +2398,8 @@ To integrate, proceed as follows:
 ~~~~~
 \> 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
@@ -2421,7 +2423,7 @@ Options:
 * -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 
 
@@ -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
+
 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
-  *  **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
-  *  **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
 
- *  **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
 
@@ -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
+
 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
+
 @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.
 
@@ -2542,7 +2548,7 @@ EDL is a script-like programming language.
 \@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 
@@ -2589,16 +2595,18 @@ is
 ~~~~~
 
 @subsubsection occt_wok_7_1_2  Syntax
+
 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
+
 \@string 
 --------
 ~~~~~
@@ -2612,15 +2620,14 @@ Concatenates the contents of the variables and strings on the right of the equal
 ~~~~~
 \@set <Variable> = “ String” ;
 ~~~~~
-Sets <Variable> to the value “String”
+Sets \<Variable\> to the value “String”
 
 \@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
 -----
@@ -2628,7 +2635,7 @@ Evaluates the template, <Template>, and sets <Variable> equal to this.
 \@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
 -----
@@ -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” ;
 ~~~~~
-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> ;
 ~~~~~
-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> ;
 ~~~~~
-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
 -----
@@ -2668,7 +2675,7 @@ Concatenates the contents of the variables and strings and displays the result o
 \@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).
 
@@ -2681,7 +2688,7 @@ If the files do not exist, the ‘else’ loop is executed (if one exists).
 \@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).
 
@@ -2694,7 +2701,7 @@ If the file does exist, the ‘else’ loop is executed (if one exists).
 \@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).
 
@@ -2708,7 +2715,7 @@ If neither a variable nor a template exists, the ‘else’ loop is executed (if
 \@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).
 
@@ -2729,10 +2736,10 @@ If the condition is false, the ‘else’ loop is executed (if one exists).
 ---------
 ~~~~~
 \@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’.
@@ -2742,10 +2749,10 @@ A template is re-evaluated each time it is used.
 --------------
 ~~~~~
 \@addtotemplate <Template> is
-       $ text
-       .
-       .
-       $ text
+  $ text
+  .
+  .
+  $ text
 \@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
-       \@cout “CONDITION TRUE”;
+  \@cout “CONDITION TRUE”;
 \@else
-       \@cout “CONDITION FALSE”;
+  \@cout “CONDITION FALSE”;
 \@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
 
-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: 
 
 ~~~~~
@@ -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:  
-| -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, 
 ~~~~~
-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: 
 ~~~~~
-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). |
@@ -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). 
-| -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, 
@@ -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. 
 
-*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. |
@@ -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: 
-       * *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: 
-       * *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. 
 
@@ -3092,72 +3099,72 @@ Each tcl umake step has the following components:
 ~~~~~
 # CCLKernel_GetObjects.tcl 
 proc CCLKernel_GetObjects::AdmFileType {} { 
-       return stadmfile; 
+  return stadmfile; 
 } 
 proc CCLKernel_GetObjects::OutputDirTypeName {} { 
-       return sttmpdir; 
+  return sttmpdir; 
 } 
 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 { 
-               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 == ** } { 
-       msgprint -e -c *CCLKernel_GetObjects::Execute* 
+  msgprint -e -c *CCLKernel_GetObjects\::Execute* 
 *Cannot locate object file :  * $file; 
-       set failed 1; 
+  set failed 1; 
 } else { 
-       msgprint -i -c *CCLKernel_GetObjects::Execute* *Add 
+  msgprint -i -c *CCLKernel_GetObjects\::Execute* *Add 
 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* } { 
-       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* 
-       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 
+  stepoutputadd -X -R -N -F $path -p $path 
+  stepaddexecdepitem -d $inid $path 
 } 
 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 
-       return 1; 
+  return 1; 
 } 
 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 
-       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* 
-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 
@@ -3169,43 +3176,43 @@ Sample 2
 --------
 # File Name: CCLKernel_core.tcl 
 proc CCLKernel_core::AdmFileType {} { 
-       return stadmfile; 
+  return stadmfile; 
 } 
 proc CCLKernel_core::OutputDirTypeName {} { 
-       return sttmpdir; 
+  return sttmpdir; 
 } 
 proc CCLKernel_core::HandleInputFile { ID } { 
-       scan $ID *%\[^:\]:%\[^:\]:%\[^:\]* unit type name 
-       switch $type { 
+  scan $ID *%\[^:\]:%\[^:\]:%\[^:\]* unit type name 
+  switch $type { 
 executable { 
-       return 1; 
+  return 1; 
 } 
-       } 
-       switch $name { 
+  } 
+  switch $name { 
 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 { 
-       executable { 
-               set lispbinid $ID 
-               set lispbin [stepinputinfo -p $ID] 
-       } 
+  executable { 
+    set lispbinid $ID 
+    set lispbin [stepinputinfo -p $ID] 
+  } 
 } 
 switch $name { 
 CCL_lelisp.ll { 
@@ -3219,25 +3226,25 @@ set lispfileid *CCLKernel:source:CCL_lelisp.ll*;
 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; 
 } 
-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 
-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  * 
-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] \\ 
@@ -3246,19 +3253,19 @@ EngineStarter.Hosts \\
 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*] 
-       stepoutputadd -P $unitname:corelisp:$unitname.core 
-       stepaddexecdepitem -d $lispbinid 
+  stepoutputadd -P $unitname:corelisp:$unitname.core 
+  stepaddexecdepitem -d $lispbinid 
 $unitname:corelisp:$unitname.core 
-       stepaddexecdepitem -d $lispfileid 
+  stepaddexecdepitem -d $lispfileid 
 $unitname:corelisp:$unitname.core 
-       cd $olddir 
-       return 0; 
+  cd $olddir 
+  return 0; 
 }
 ~~~~~
\ 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.
 
-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**
 
@@ -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.
-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
@@ -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 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. 
-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:
 
@@ -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
-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
-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
 
@@ -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.
 
-**See also:** @ref tutorial "OCCT Tutorial" 
+**See also:** @ref occt__tutorial "OCCT Tutorial" 
 
  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"
-   width="744.09448819"
-   height="1052.3622047"
+   width="465.60214"
+   height="182.46281"
    id="svg2"
    version="1.1"
    inkscape:version="0.48.4 r9939"
-   sodipodi:docname="ocaf.svg">
+   sodipodi:docname="tutorial_image003.svg">
   <defs
      id="defs4">
     <clipPath
@@ -45,7 +45,7 @@
          height="22.583204"
          width="33.706238"
          y="12.49604"
-         x="316.59788" />
+         x="316.59787" />
     </clipPath>
     <clipPath
        id="clipEmfPath4"
@@ -55,7 +55,7 @@
          height="22.583204"
          width="33.856712"
          y="193.16167"
-         x="469.93116" />
+         x="469.93115" />
     </clipPath>
     <clipPath
        id="clipEmfPath5"
@@ -64,7 +64,7 @@
          id="rect3013"
          height="22.583204"
          width="33.856712"
-         y="97.258332"
+         y="97.258331"
          x="382.35513" />
     </clipPath>
     <clipPath
        clipPathUnits="userSpaceOnUse">
       <rect
          id="rect3132"
-         height="44.154422"
+         height="44.154423"
          width="125.37695"
          y="131.71234"
-         x="271.49972" />
+         x="271.49973" />
     </clipPath>
     <clipPath
        id="clipEmfPath2-7"
        clipPathUnits="userSpaceOnUse">
       <rect
          id="rect3135"
-         height="44.154422"
+         height="44.154423"
          width="125.37695"
          y="212.8123"
-         x="271.49972" />
+         x="271.49973" />
     </clipPath>
     <clipPath
        id="clipEmfPath3-4"
        clipPathUnits="userSpaceOnUse">
       <rect
          id="rect3138"
-         height="44.154422"
+         height="44.154423"
          width="107.3371"
          y="212.8123"
-         x="433.85835" />
+         x="433.85834" />
     </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"
-         x="0.90199242" />
+         x="0.90199244" />
     </clipPath>
     <clipPath
        id="clipEmfPath5-9"
       <rect
          id="rect3144"
          height="18.022213"
-         width="333.7372"
-         y="338.51723"
+         width="333.73721"
+         y="338.51724"
          x="72.61039" />
     </clipPath>
     <clipPath
       <rect
          id="rect3147"
          height="18.022213"
-         width="342.75712"
-         y="374.56166"
+         width="342.75711"
+         y="374.56165"
          x="72.61039" />
     </clipPath>
     <clipPath
      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: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>
         <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"
-     id="layer1">
+     id="layer1"
+     transform="translate(-12.913221,-12.559351)">
     <g
        id="g2989" />
     <g
index 397ef25..107f388 100644 (file)
@@ -1,4 +1,4 @@
- Tutorial {#tutorial}
+ Tutorial {#occt__tutorial}
 =======
 
 @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.
 
-@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:
 
index fd4b706..e675959 100644 (file)
@@ -1,4 +1,4 @@
- BRep Format {#occt_brep_format}
+ BRep Format {#occt_user_guides__brep_wp}
 ========================
 
 @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
@@ -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
 
-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
@@ -2520,31 +2520,31 @@ Saves the active document in the file **docname** in the path **path**. Overwrit
 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
 ~~~~~
 
-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
 ~~~~~
 
-@subsubsection occt_draw_5_2_2 NewChild
+@subsubsection occt_draw_5_2_2 NewChild
 
-Syntax:                
+Syntax:   
 
 ~~~~~
 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
 ~~~~~
@@ -2556,9 +2556,9 @@ Label 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
 ~~~~~
@@ -2569,9 +2569,9 @@ Example
 Children D 0:2
 ~~~~~
 
-@subsubsection occt_draw_5_2_4 ForgetAll
+@subsubsection occt_draw_5_2_4 ForgetAll
 
-Syntax:                
+Syntax:   
 ~~~~~
 ForgetAll docname label
 ~~~~~
@@ -5596,7 +5596,7 @@ Syntax:
 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. 
@@ -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) : 
-        * **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) : 
-        * **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 :
-        * **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.
 
@@ -6925,9 +6925,9 @@ featdprism b f b_6 5 1 0
 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 :
@@ -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 () 
-       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:
-         * 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.
 
@@ -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. 
 
 
-| 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*. 
 
-<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>.
 
@@ -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. 
-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:**
 ~~~~~
@@ -7229,15 +7229,15 @@ This command will interactively ask the user to select a set of entities to be c
 
 | 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*. 
-<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>.
 
@@ -7262,7 +7262,7 @@ The following  modes are available :
     * *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:**
@@ -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. 
 
-| 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:**
 ~~~~~
@@ -7315,14 +7315,14 @@ The information printed by this command depends on the symbol specified.
 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. |
-| 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. 
-<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:**
 ~~~~~
@@ -7402,14 +7402,14 @@ fromshape a_1_23
 
 @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.
-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:**
 ~~~~~
@@ -7424,13 +7424,13 @@ givelist <selection_name>
 ~~~~~
 
 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:**
@@ -7441,16 +7441,16 @@ givelist xst-model-all
 
 @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. 
-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:**
 ~~~~~
@@ -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. 
-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:**
 
@@ -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).
 
@@ -7807,7 +7807,7 @@ XWdump <document> <filename>
 ~~~~~
 
 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:**
 ~~~~~
@@ -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). 
-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:**
 ~~~~~
@@ -8573,7 +8573,7 @@ Syntax:
 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:**
 ~~~~~
@@ -8609,7 +8609,7 @@ convtorevol <result> <shape>
 ~~~~~
 
 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:**
 ~~~~~
@@ -8667,7 +8667,7 @@ Syntax:
 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:**
 ~~~~~
@@ -8681,22 +8681,22 @@ Syntax:
 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: 
-* <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:**
@@ -8728,7 +8728,7 @@ offset2dcurve <result> <curve> <offset>
 
 **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:**
 ~~~~~
@@ -8777,7 +8777,7 @@ Syntax:
 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:**
 ~~~~~
@@ -8806,7 +8806,7 @@ Syntax:
 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:**
@@ -8845,12 +8845,12 @@ statshape a
 
 @subsubsection occt_draw_9_1_19 tolerance
 
-Syntax:      
+Syntax:
 ~~~~~
 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:**
 ~~~~~
@@ -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:** 
-~~~~~    
+~~~~~
 
 ~~~~~
 # split surface with name "su"
@@ -8989,7 +8989,7 @@ DT_SplitSurface res su 0.1 1
 
 @subsubsection occt_draw_9_2_8 DT_ToBspl
 
-Syntax:      
+Syntax:
 ~~~~~
 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
@@ -651,6 +651,7 @@ Item  TCollection_Array1::Value (const Standard_Integer&index) const
 ~~~~~
 
 @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.
@@ -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: 
+
 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. 
 
-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: 
-  * 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
+
 @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: 
@@ -916,8 +923,11 @@ public:
 
 
 @section occt_fcug_3 Collections,  Strings and Unit Conversion
+
 @subsection occt_fcug_3_1 Collections
+
 @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*. 
index 9481eaa..34a9806 100644 (file)
@@ -1,4 +1,4 @@
-IGES Support  {#user_guides__iges}
+IGES Support  {#occt_user_guides__iges}
 ==================
 
 @tableofcontents
@@ -356,7 +356,7 @@ for (i = 1; i  = nb; i ++) {
     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;  
@@ -407,25 +407,25 @@ If *failsonly* is  *IFSelect_FailOnly*, only fail messages will be output, if it
 
 @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.). 
 
-| 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*. |
-| 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. 
 
@@ -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*. 
 
-| 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). | 
-| 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
 
-| 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
 
-| 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
 
-| 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  
 
-| 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
@@ -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:  
-       * "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"); 
@@ -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.  
-       * 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.  
-       * 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).
-       * 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.  
-       * 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).
-       * 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.  
-       * "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:  
@@ -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
 
-| 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_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
 
-| CASCADE shapes | IGES entity type    | Comments |
+| CASCADE shapes | IGES entity type | Comments |
 | :------------- | :--------------- | :------- |
 | 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_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
 
-| 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. |
-| 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_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