0032340: OCCT Documentation - highlight C++ code snippets
authorbtokarev <btokarev@opencascade.com>
Tue, 18 May 2021 10:09:50 +0000 (13:09 +0300)
committerbugmaster <bugmaster@opencascade.com>
Sat, 22 May 2021 07:36:38 +0000 (10:36 +0300)
Added {.cpp} highlighting markers to the C++ code blocks in documentation;
Excessive tildes "~~~~~~~" in code block borders are reduced to required minimum of "~~~~" (4);
Removed obsolete space bars after code block borders;
TCL code blocks are now highlighted with {.php} markers;
Removed excessive {.cpp} highlighting markers appended to non-code blocks such as lists, reports and file content or structure examples;
Minor fixes for tests.md and draw_test_harness.md (whitespace removal and structural fix for "Where:" in code examples);
Minimum HDD space for OCCT updated in introduction.md.

25 files changed:
dox/build/build_occt/building_occt.md
dox/contribution/coding_rules.md
dox/contribution/git_guide/git_guide.md
dox/contribution/tests/tests.md
dox/debug/debug.md
dox/introduction/introduction.md
dox/samples/ocaf.md
dox/samples/ocaf_func.md
dox/specification/boolean_operations/boolean_operations.md
dox/specification/brep_format.md
dox/tutorial/tutorial.md
dox/upgrade/upgrade.md
dox/user_guides/draw_test_harness/draw_test_harness.md
dox/user_guides/foundation_classes/foundation_classes.md
dox/user_guides/iges/iges.md
dox/user_guides/inspector/inspector.md
dox/user_guides/mesh/mesh.md
dox/user_guides/modeling_algos/modeling_algos.md
dox/user_guides/modeling_data/modeling_data.md
dox/user_guides/ocaf/ocaf.md
dox/user_guides/shape_healing/shape_healing.md
dox/user_guides/step/step.md
dox/user_guides/vis/vis.md
dox/user_guides/visualization/visualization.md
dox/user_guides/xde/xde.md

index 748ffba..e921e9e 100644 (file)
@@ -243,9 +243,9 @@ The environment is defined in the file *custom.sh* (on Linux and OS X) or *custo
   * *ShortCut* - short-cut header files will be created, redirecting to same-named header located in *src*;
   * "HardLink* - hard links to headers located in *src* will be created.
 * For optional  third-party libraries, set corresponding environment variable <i>HAVE_<LIBRARY_NAME></i> to either *false*,  e.g.:
-~~~~~
+~~~~
        export HAVE_FREEIMAGE=false
-~~~~~
+~~~~
 
 Alternatively, or when *custom.sh* or *custom.bat* does not exist, you can launch **genconf** tool to configure environment interactively:
 
@@ -257,10 +257,10 @@ Click "Save" to store the specified configuration in *custom.sh* or *custom.bat*
 
 Launch **genproj** tool with option *cbp* to update content of *inc* folder and generate project files after changes in OCCT code affecting layout or composition of source files:
 
-~~~~~
+~~~~
   $ cd /dev/OCCT/opencascade-7.0.0
   $ ./genproj cbp
-~~~~~
+~~~~
 
 The generated Code::Blocks project are placed into subfolder *adm/&lt;OS&gt;/cbp*.
 
@@ -273,9 +273,9 @@ To start **Code::Blocks**, launch script *codeblocks.sh*.
 To build all toolkits, click **Build->Build workspace** in the menu bar.
 
 To start *DRAWEXE*, which has been built with **Code::Blocks** on Mac OS X, run the script
-~~~~~
+~~~~
    ./draw.sh cbp [d]
-~~~~~
+~~~~
 Option *d* is used if OCCT has been built in **Debug** mode.
 
 @subsection build_occt_genproj Building with Genproj tool
@@ -344,9 +344,9 @@ Launch **genproj** to update content of *inc* folder and generate project files
 @note To use **genproj** and **genconf** tools you need to have Tcl installed and accessible by PATH.
 If Tcl is not found, the tool may prompt you to enter the path to directory where Tcl can be found.
  
-~~~~~
+~~~~
   $ genproj.bat
-~~~~~
+~~~~
 
 Note that if *custom.bat* is not present, **genproj** will start **genconf** to configure environment.
 
@@ -470,9 +470,9 @@ The environment is defined in the file *custom.sh* which can be edited directly:
   * *ShortCut* - short-cut header files will be created, redirecting to same-named header located in *src*;
   * "HardLink* - hard links to headers located in *src* will be created.
 * For optional  third-party libraries, set corresponding environment variable <i>HAVE_<LIBRARY_NAME></i> to either *false*,  e.g.:
-~~~~~
+~~~~
        export HAVE_FREEIMAGE=false
-~~~~~
+~~~~
 
 Alternatively, or when *custom.sh* does not exist, you can launch *genconf.sh* to configure environment interactively:
 
@@ -488,10 +488,10 @@ Launch **genproj** tool to update content of *inc* folder and generate project f
 
 For instance, in Terminal application:
 
-~~~~~
+~~~~
   $ cd /dev/OCCT/opencascade-7.0.0
   $ ./genproj
-~~~~~
+~~~~
 
 <h2>Building</h2>
 
@@ -513,14 +513,14 @@ To start *DRAWEXE*, which has been built with Xcode on Mac OS X, perform the fol
 1.Open Terminal application
 
 2.Enter <i>\<OCCT_ROOT_DIR\></i>:
-~~~~~
+~~~~
    cd \<OCCT_ROOT_DIR\>
-~~~~~
+~~~~
 
 3.Run the script
-~~~~~
+~~~~
    ./draw_cbp.sh xcd [d]
-~~~~~
+~~~~
 
 Option *d* is used if OCCT has been built in **Debug** mode.
 
@@ -543,9 +543,9 @@ directly:
   * *ShortCut* - short-cut header files will be created, redirecting to same-named header located in *src*;
   * "HardLink* - hard links to headers located in *src* will be created.
 * For optional  third-party libraries, set corresponding environment variable <i>HAVE_<LIBRARY_NAME></i> to either *false*,  e.g.:
-~~~~~
+~~~~
        export HAVE_FREEIMAGE=false
-~~~~~
+~~~~
 
 Alternatively, or when *custom.sh* or *custom.bat* does not exist, you can launch **genconf** tool to configure
  environment interactively:
@@ -559,10 +559,10 @@ Click "Save" to store the specified configuration in *custom.sh* or *custom.bat*
 Launch **genproj** tool with option *cbp* to update content of *inc* folder and generate project files after changes in 
 OCCT code affecting layout or composition of source files:
 
-~~~~~
+~~~~
   $ cd /dev/OCCT/opencascade-7.0.0
   $ ./genproj cbp
-~~~~~
+~~~~
 
 The generated Code::Blocks project are placed into subfolder *adm/&lt;OS&gt;/cbp*.
 
@@ -575,7 +575,7 @@ To start **Code::Blocks**, launch script *codeblocks.sh*.
 To build all toolkits, click **Build->Build workspace** in the menu bar.
 
 To start *DRAWEXE*, which has been built with **Code::Blocks** on Mac OS X, run the script
-~~~~~
+~~~~
    ./draw_cbp.sh cbp [d]
-~~~~~
+~~~~
 Option *d* is used if OCCT has been built in **Debug** mode.
index 7f8f623..c8f9a37 100644 (file)
@@ -48,11 +48,11 @@ For example, method *GetCoord* returns a triple of real values and is defined fo
 Camel Case style is preferred for names.
 For example:
 
-~~~~~{.cpp}
+~~~~{.cpp}
 Standard_Integer awidthofbox;  // this is bad
 Standard_Integer width_of_box; // this is bad
 Standard_Integer aWidthOfBox;  // this is OK
-~~~~~
+~~~~
 
 @subsection occt_coding_rules_2_2 Names of development units
 
@@ -80,9 +80,9 @@ Toolkit names are prefixed by *TK*, followed by a meaningful part of the name ex
 
 Names of public classes and other types (structures, enums, typedefs) should match the common pattern: name of the package followed by underscore and suffix (the own name of the type):
 
-~~~~~
+~~~~{.cpp}
     <package-name>_<class-name>
-~~~~~
+~~~~
 
 Static methods related to the whole package are defined in the class with the same name as package (without suffix).
 
@@ -95,9 +95,9 @@ This rule also applies to complex types constructed by instantiation of template
 Such types should be given own names using *typedef* statement, located in same-named header file.
 
 For example, see definition in the file *TColStd_IndexedDataMapOfStringString.hxx*:
-~~~~~
+~~~~{.cpp}
 typedef NCollection_IndexedDataMap<TCollection_AsciiString,TCollection_AsciiString,TCollection_AsciiString> TColStd_IndexedDataMapOfStringString;
-~~~~~
+~~~~
 
 ### Names of functions
 
@@ -109,7 +109,7 @@ The term **function** here is defined as:
 It is preferred to start names of public methods from an upper case character and to start names of protected and private methods from a lower case character.
 
 
-~~~~~{.cpp}
+~~~~{.cpp}
 class MyPackage_MyClass
 {
 
@@ -123,7 +123,7 @@ private:
   void setIntegerValue (const Standard_Integer theValue);
 
 };
-~~~~~
+~~~~
 
 @subsection occt_coding_rules_2_3 Names of variables
 
@@ -137,13 +137,13 @@ The name of a variable should not start with an underscore.
 
 See the following examples:
 
-~~~~~{.cpp}
+~~~~{.cpp}
 Standard_Integer Elapsed_Time = 0; // this is bad - possible class   name
 Standard_Integer gp = 0;           // this is bad - existing package name
 Standard_Integer aGp = 0;          // this is OK
 Standard_Integer _KERNEL = 0;      // this is bad
 Standard_Integer THE_KERNEL = 0;   // this is OK
-~~~~~
+~~~~
 
 ### Names of function parameters
 
@@ -151,11 +151,11 @@ The name of a function (procedure, class method) parameter should start with pre
 
 See the following examples:
 
-~~~~~{.cpp}
+~~~~{.cpp}
 void Package_MyClass::MyFunction (const gp_Pnt& p);        // this is bad
 void Package_MyClass::MyFunction (const gp_Pnt& theP);     // this is OK
 void Package_MyClass::MyFunction (const gp_Pnt& thePoint); // this is preferred
-~~~~~
+~~~~
 
 ### Names of class member variables
 
@@ -163,11 +163,11 @@ The name of a class member variable should start with prefix *my* followed by th
 
 See the following examples:
 
-~~~~~{.cpp}
+~~~~{.cpp}
 Standard_Integer counter;   // This is bad
 Standard_Integer myC;       // This is OK
 Standard_Integer myCounter; // This is preferred
-~~~~~
+~~~~
 
 ### Names of global variables
 
@@ -176,18 +176,18 @@ However, as soon as a global variable is necessary, its name should be prefixed
 
 See the following examples:
 
-~~~~~{.cpp}
+~~~~{.cpp}
 Standard_Integer MyPackage_myGlobalVariable = 0;
 Standard_Integer MyPackage_MyClass_myGlobalVariable = 0;
-~~~~~
+~~~~
 
 Static constants within the file should be written in upper-case and begin with prefix *THE_*:
-~~~~~{.cpp}
+~~~~{.cpp}
 namespace
 {
   static const Standard_Real THE_CONSTANT_COEF = 3.14;
 };
-~~~~~
+~~~~
 
 ### Names of local variables
 
@@ -197,12 +197,12 @@ It is preferred to prefix local variable names with *a* and *an* (or *is*, *to*
 
 See the following example:
 
-~~~~~{.cpp}
+~~~~{.cpp}
 Standard_Integer theI;    // this is bad
 Standard_Integer i;       // this is bad
 Standard_Integer index;   // this is bad
 Standard_Integer anIndex; // this is OK
-~~~~~
+~~~~
 
 ### Avoid dummy names
 Avoid dummy names, such as <i>i, j, k</i>. Such names are meaningless and easy to mix up.
@@ -211,7 +211,7 @@ The code becomes more and more complicated when such dummy names are used there
 
 See the following examples for preferred style:
 
-~~~~~{.cpp}
+~~~~{.cpp}
 void Average (const Standard_Real** theArray,
               Standard_Integer      theRowsNb,
               Standard_Integer      theRowLen,
@@ -227,7 +227,7 @@ void Average (const Standard_Real** theArray,
     theResult /= Standard_Real(aRowsNb * aRowLen);
   }
 }
-~~~~~
+~~~~
 
 @section occt_coding_rules_3 Formatting rules
 
@@ -262,7 +262,7 @@ Punctuation rules follow the rules of the English language.
 * For better readability it is also recommended to surround conventional operators by a space character. 
 Examples:
 
-~~~~~{.cpp}
+~~~~{.cpp}
 while (true)                            // NOT: while( true ) ...
 {
   DoSomething (theA, theB, theC, theD); // NOT: DoSomething(theA,theB,theC,theD);
@@ -271,7 +271,7 @@ for (anIter = 0; anIter < 10; ++anIter) // NOT: for (anIter=0;anIter<10;++anIter
 {
   theA = (theB + theC) * theD;          // NOT: theA=(theB+theC)*theD
 }
-~~~~~
+~~~~
 
 ### Declaration of pointers and references
 
@@ -281,7 +281,7 @@ Since declaration of several variables with mixed pointer types contrudicts this
 
 Examples:
 
-~~~~~{.cpp}
+~~~~{.cpp}
 Standard_Integer   *theVariable;      // not recommended
 Standard_Integer *  theVariable;      // not recommended
 Standard_Integer*   theVariable;      // this is OK
@@ -295,7 +295,7 @@ Standard_Integer ** theVariable;      // not recommended
 Standard_Integer**  theVariable;      // this is OK
 
 Standard_Integer *theA, theB, **theC; // not recommended (declare each variable independently)
-~~~~~
+~~~~
 
 ### Separate logical blocks
 
@@ -303,7 +303,7 @@ Separate logical blocks of code with one blank line and comments.
 
 See the following example:
 
-~~~~~{.cpp}
+~~~~{.cpp}
 // check arguments
 Standard_Integer anArgsNb = argCount();
 if (anArgsNb < 3 || isSmthInvalid)
@@ -318,7 +318,7 @@ if (anArgsNb < 3 || isSmthInvalid)
 // do our job
 ...
 ...
-~~~~~
+~~~~
 
 Notice that multiple blank lines should be avoided.
 
@@ -329,7 +329,7 @@ Each descriptive block should contain at least a function name and purpose descr
 
 See the following example:
 
-~~~~~{.cpp}
+~~~~{.cpp}
 // =======================================================================
 // function : TellMeSmthGood
 // purpose  : Gives me good news
@@ -347,19 +347,19 @@ void TellMeSmthBad()
 {
   ...
 }
-~~~~~
+~~~~
 
 ### Block layout [MANDATORY]
 Figure brackets <i>{ }</i> and each operator <i>(for, if, else, try, catch)</i> should be written on a dedicated line.
 
 In general, the layout should be as follows:
 
-~~~~~{.cpp}
+~~~~{.cpp}
 while (expression)
 {
   ...
 }
-~~~~~
+~~~~
 
 Entering a block increases and leaving a block decreases the indentation by one tabulation.
 
@@ -367,7 +367,7 @@ Entering a block increases and leaving a block decreases the indentation by one
 
 Single-line conditional operators <i>(if, while, for,</i> etc.) can be written without brackets on the following line.
 
-~~~~~{.cpp}
+~~~~{.cpp}
 if (!myIsInit) return Standard_False; // bad
 
 if (thePtr == NULL)                   // OK
@@ -377,7 +377,7 @@ if (!theAlgo.IsNull())                // preferred
 {
   DoSomething();
 }
-~~~~~
+~~~~
 
 Having all code in the same line is less convenient for debugging.
 
@@ -386,7 +386,7 @@ Having all code in the same line is less convenient for debugging.
 In comparisons, put the variable (in the current context) on the left side and constant on the right side of expression.
 That is, the so called "Yoda style" is to be avoided.
 
-~~~~~{.cpp}
+~~~~{.cpp}
 if (NULL != thePointer)    // Yoda style, not recommended
 if (thePointer != NULL)    // OK
 
@@ -398,13 +398,13 @@ if (anIter <= theNbValues) // OK
 
 if (THE_LIMIT == theValue) // bad style (global constant vs. variable)
 if (theValue == THE_LIMIT) // OK
-~~~~~
+~~~~
 
 ### Alignment
 
 Use alignment wherever it enhances the readability. See the following example:
 
-~~~~~{.cpp}
+~~~~{.cpp}
 MyPackage_MyClass anObject;
 Standard_Real     aMinimum = 0.0;
 Standard_Integer  aVal     = theVal;
@@ -415,7 +415,7 @@ switch (aVal)
   case 3:
   default: computeSomethingElseYet();       break;
 }
-~~~~~
+~~~~
 
 ### Indentation of comments
 
@@ -425,7 +425,7 @@ The text of the comment should be separated from the slash character by a single
 
 See the following example:
 
-~~~~~{.cpp}
+~~~~{.cpp}
 while (expression)   //bad comment
 {
   // this is a long multi-line comment
@@ -433,7 +433,7 @@ while (expression)   //bad comment
   DoSomething();     // maybe, enough
   DoSomethingMore(); // again
 }
-~~~~~
+~~~~
 
 ### Early return statement
 
@@ -441,7 +441,7 @@ Use an early return condition rather than collect indentations.
 
 Write like this:
 
-~~~~~{.cpp}
+~~~~{.cpp}
 Standard_Integer ComputeSumm (const Standard_Integer* theArray,
                               const Standard_Size     theSize)
 {
@@ -454,11 +454,11 @@ Standard_Integer ComputeSumm (const Standard_Integer* theArray,
   ... computing summ ...
   return aSumm;
 }
-~~~~~
+~~~~
 
 Rather than:
 
-~~~~~{.cpp}
+~~~~{.cpp}
 Standard_Integer ComputeSumm (const Standard_Integer* theArray,
                               const Standard_Size     theSize)
 {
@@ -469,7 +469,7 @@ Standard_Integer ComputeSumm (const Standard_Integer* theArray,
   }
   return aSumm;
 }
-~~~~~
+~~~~
 
 This helps to improve readability and reduce the unnecessary indentation depth.
 
@@ -490,7 +490,7 @@ An exception to the rule is ordering system headers generating a macros declarat
 
 The source or header file should include only minimal set of headers necessary for compilation, without duplicates (considering nested includes).
 
-~~~~~{.cpp}
+~~~~{.cpp}
 // the header file of implemented class
 #include <PackageName_ClassName.hxx>
 
@@ -506,7 +506,7 @@ The source or header file should include only minimal set of headers necessary f
 // system headers
 #include <iostream>
 #include <windows.h>
-~~~~~
+~~~~
 
 @section occt_coding_rules_4 Documentation rules
 
@@ -623,7 +623,7 @@ A class with virtual function(s) ought to have a virtual destructor.
 Declaration of overriding method should contains specifiers "virtual" and "override"
 (using Standard_OVERRIDE alias for compatibility with old compilers).
 
-~~~~~{.cpp}
+~~~~{.cpp}
 class MyPackage_BaseClass
 {
 
@@ -641,7 +641,7 @@ public:
   Standard_EXPORT virtual Standard_Boolean Perform() Standard_OVERRIDE;
 
 };
-~~~~~
+~~~~
 
 This makes class definition more clear (virtual methods become highlighted).
 
@@ -667,20 +667,20 @@ Avoid *goto* statement unless it is really needed.
 
 Declare a cycle variable in the header of the *for()* statement if not used out of cycle.
 
-~~~~~{.cpp}
+~~~~{.cpp}
 Standard_Real aMinDist = Precision::Infinite();
 for (NCollection_Sequence<gp_Pnt>::Iterator aPntIter (theSequence);
      aPntIter.More(); aPntIter.Next())
 {
   aMinDist = Min (aMinDist, theOrigin.Distance (aPntIter.Value()));
 }
-~~~~~
+~~~~
 
 ### Condition statements within zero
 
 Avoid usage of C-style comparison for non-boolean variables:
 
-~~~~~{.cpp}
+~~~~{.cpp}
 void Function (Standard_Integer theValue,
                Standard_Real*   thePointer)
 {
@@ -699,7 +699,7 @@ void Function (Standard_Integer theValue,
     DoSome2();
   }
 }
-~~~~~
+~~~~
 
 @section occt_coding_rules_7 Portability issues
 
@@ -791,11 +791,11 @@ In C++ use *new* and *delete* operators instead of *malloc()* and *free()*. Try
 
 Use the same form of new and delete.
 
-~~~~~{.cpp}
+~~~~{.cpp}
 aPtr1 = new TypeA[n];              ... ; delete[]        aPtr1;
 aPtr2 = new TypeB();               ... ; delete          aPtr2;
 aPtr3 = Standard::Allocate (4096); ... ; Standard::Free (aPtr3);
-~~~~~
+~~~~
 
 ### Methods managing dynamical allocation [MANDATORY]
 
@@ -805,10 +805,10 @@ Define a destructor, a copy constructor and an assignment operator for classes w
 
 Every variable should be initialized.
 
-~~~~~{.cpp}
+~~~~{.cpp}
 Standard_Integer aTmpVar1;     // bad
 Standard_Integer aTmpVar2 = 0; // OK
-~~~~~
+~~~~
 
 Uninitialized variables might be kept only within performance-sensitive code blocks and only when their initialization is guaranteed by subsequent code.
 
@@ -824,12 +824,12 @@ In *operator=()* assign to all data members and check for assignment to self.
 
 Don't check floats for equality or non-equality; check for GT, GE, LT or LE.
 
-~~~~~{.cpp}
+~~~~{.cpp}
 if (Abs (theFloat1 - theFloat2) < theTolerance)
 {
   DoSome();
 }
-~~~~~
+~~~~
 
 Package *Precision* provides standard values for SI units and widely adopted by existing modeling algorithms:
 
@@ -872,7 +872,7 @@ Generally, try to reduce misaligned accesses since they impact the performance (
 
 List class data members in the constructor's initialization list in the order they are declared.
 
-~~~~~{.cpp}
+~~~~{.cpp}
 class MyPackage_MyClass
 {
 
@@ -892,19 +892,19 @@ private:
   Standard_Integer myPropertyB;
 
 };
-~~~~~
+~~~~
 
 ### Initialization over assignment
 
 Prefer initialization over assignment in class constructors.
 
-~~~~~{.cpp}
+~~~~{.cpp}
 MyPackage_MyClass()
 : myPropertyA (1)  // preferred
 {
   myPropertyB = 2; // not recommended
 }
-~~~~~
+~~~~
 
 ### Optimize caching
 
@@ -912,23 +912,23 @@ When programming procedures with extensive memory access, try to optimize them i
 
 On x86 this code
 
-~~~~~{.cpp}
+~~~~{.cpp}
 Standard_Real anArray[4096][2];
 for (Standard_Integer anIter = 0; anIter < 4096; ++anIter)
 {
   anArray[anIter][0] = anArray[anIter][1];
 }
-~~~~~
+~~~~
 
 is more efficient then
 
-~~~~~{.cpp}
+~~~~{.cpp}
 Standard_Real anArray[2][4096];
 for (Standard_Integer anIter = 0; anIter < 4096; ++anIter)
 {
   anArray[0][anIter] = anArray[1][anIter];
 }
-~~~~~
+~~~~
 
 since linear access does not invalidate cache too often.
 
@@ -952,7 +952,7 @@ Command arguments should be validated before usage. The user should see a human-
 
 Command should warn the user about unknown arguments, including cases when extra parameters have been pushed for the command with a fixed number of arguments.
 
-~~~~~{.cpp}
+~~~~{.cpp}
   if (theArgsNb != 3)
   {
     std::cout << "Syntax error - wrong number of arguments!\n";
@@ -971,7 +971,7 @@ Command should warn the user about unknown arguments, including cases when extra
   }
   DBRep::Set (aResName, aFaceShape);
   return 0;
-~~~~~
+~~~~
 
 ### Message printing
 
@@ -984,9 +984,9 @@ Information printed into Draw Interpreter should be well-structured to allow usa
 Any command with a long list of obligatory parameters should be considered as ill-formed by design.
 Optional parameters should start with flag name (with '-' prefix) and followed by its values:
 
-~~~~~{.tcl}
+~~~~{.php}
 myCommand -flag1 value1 value2 -flag2 value3
-~~~~~
+~~~~
 
 ### Arguments parser
 
@@ -996,7 +996,7 @@ myCommand -flag1 value1 value2 -flag2 value3
 
 Functions *Draw::Atof()* and *Draw::Atoi()* support expressions and read values in C-locale.
 
-~~~~~{.cpp}
+~~~~{.cpp}
   Standard_Real aPosition[3] = {0.0, 0.0, 0.0};
   for (Standard_Integer anArgIter = 1; anArgIter < theArgsNb; ++anArgIter)
   {
@@ -1020,7 +1020,7 @@ Functions *Draw::Atof()* and *Draw::Atoi()* support expressions and read values
       return 1;
     }
   }
-~~~~~
+~~~~
 
 @section occt_coding_rules_11 Examples
 
@@ -1051,7 +1051,7 @@ private: //! \@name private fields
 
 @endverbatim
 
-~~~~~
+~~~~{.cpp}
 #include <Package_Class.hxx>
 // ==========================================================
 // function : Square
@@ -1071,11 +1071,11 @@ void Package_Class::increment()
 {
   ++myCounter;
 }
-~~~~~
+~~~~
 
 ### TCL script for Draw Harness
 
-~~~~~{.tcl}
+~~~~{.tcl}
 # show fragments (solids) in shading with different colors
 proc DisplayColored {theShape} {
   set aSolids [uplevel #0 explode $theShape so]
@@ -1106,10 +1106,10 @@ vzbufftrihedron
 DisplayColored c
 vfit
 vdump $imagedir/${casename}.png 512 512
-~~~~~
+~~~~
 
 ### GLSL program:
-~~~~~{.fs}
+~~~~{.cpp}
 vec3 Ambient;  //!< Ambient  contribution of light sources
 vec3 Diffuse;  //!< Diffuse  contribution of light sources
 vec3 Specular; //!< Specular contribution of light sources
@@ -1149,4 +1149,4 @@ void main()
                                   normalize (View),
                                   Position);
 }
-~~~~~
+~~~~
index da07e71..bf18ce2 100644 (file)
@@ -152,11 +152,11 @@ The official repository contains:
   Make sure to configure Git so that the user name is equal to your username 
   on the OCCT development portal, and set SafeCrLf option to true:
 
-~~~~~
+~~~~
     > git config --global user.name "Your User Name"
     > git config --global user.email your@mail.address
     > git config --global your@mail.address
-~~~~~
+~~~~
 
 @section occt_gitguide_3 Getting access to the repository
 
@@ -213,9 +213,9 @@ The official repository contains:
   On Windows, you might need to start **Git Bash** command prompt window.
   
   Use the following command to generate SSH keys:
-~~~~~  
+~~~~
     > ssh-keygen -t rsa -C "your@mail.address"
-~~~~~  
+~~~~
 
   The last argument is an optional comment, which can be included with the public key and used to distinguish between different keys (if you have many).  The common practice is to put here your mail address or workstation name.
   
@@ -290,9 +290,9 @@ Click **Save** to input the key to the system.
 
   * From command line by command: 
 
-~~~~~  
+~~~~
     > 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.
     
@@ -314,9 +314,9 @@ Click **Save** to input the key to the system.
 
 In the console:
 
-~~~~~
+~~~~
     > git checkout -b CR12345 origin/master
-~~~~~
+~~~~
   
 In TortoiseGit: 
   * Go to the local copy of the repository. 
@@ -332,9 +332,9 @@ In TortoiseGit:
   If you need to switch to another branch, use Git command checkout for that.
   In the console:
 
-~~~~~
+~~~~
     > git checkout CR12345
-~~~~~
+~~~~
   
   In TortoiseGit: right-click in the explorer window and select in the context menu **TortoiseGit** -> **Switch/Checkout**.
  
@@ -351,11 +351,11 @@ In TortoiseGit:
   
   * In the console:
   
-~~~~~
+~~~~
     > git diff
     …
     > git commit -a -m "Write meaningful commit message here"
-~~~~~
+~~~~
 
   Option -a tells the command to automatically include (stage) files 
   that have been modified or deleted, but it will omit the new files that might have been added by you. 
@@ -363,12 +363,12 @@ In TortoiseGit:
 
   To find new unstaged files and them to commit, use commands:
 
-~~~~~
+~~~~
     > git status -s
       ?? file1.hxx 
       ?? file2.cxx
     > git add file1.hxx file2.cxx
-~~~~~
+~~~~
 
   * In TortoiseGit: right-click in the explorer window and select in the context menu <b>Git Commit -> CR…</b>:
  
@@ -384,9 +384,9 @@ In TortoiseGit:
   
   * In the console:
 
-~~~~~  
+~~~~
     > git push "origin" CR12345:CR12345
-~~~~~
+~~~~
 
   * In TortoiseGit: right-click in the explorer window and select in the context menu, TortoiseGit -> **Push**
 
@@ -410,9 +410,9 @@ Note that Git forbids pushing a branch if the corresponding remote branch alread
   Use Git command *fetch* with option *prune* to get the update of all branches from the remote repository and to clean your local repository from the remote branches that have been deleted.
   
   * In the console:
-~~~~~  
+~~~~
     > git fetch --prune 
-~~~~~
+~~~~
     
   * In TortoiseGit: right-click in the explorer window and select in the context menu **TortoiseGit** -> **Fetch**. Check in **Prune** check-box.  
   
@@ -423,9 +423,9 @@ Note that Git forbids pushing a branch if the corresponding remote branch alread
   This operation is required in particular to update your local master branch when the remote master changes.
   
   * In console:
-~~~~~  
+~~~~
     > git pull
-~~~~~    
+~~~~
 
   * In TortoiseGit: right-click in the explorer window and select in the context menu **TortoiseGit** -> **Pull**.
 
@@ -436,9 +436,9 @@ Note that the local branches of your repository are the primary place, where you
 Remove the local branches that you do not need any more. Note that you cannot delete the current branch. It means that you need to switch to another one (e.g. master) if the branch you are going to delete is the current one.
   
   * In the console:
-~~~~
+~~~~
     > git branch -d CR12345
-~~~~~
+~~~~
     
   * In TortoiseGit: right-click in the explorer window and select in the context menu **TortoiseGit** -> **Git Show Log**.
 
index 8f73b0c..ef8dd4e 100644 (file)
@@ -51,9 +51,9 @@ For this it is recommended to add a file *DrawAppliInit* in the directory which
 
 Example (Windows)
 
-~~~~~{.tcl}
+~~~~{.php}
 set env(CSF_TestDataPath) $env(CSF_TestDataPath)\;d:/occt/test-data
-~~~~~
+~~~~
 
 Note that variable *CSF_TestDataPath* is set to default value at DRAW start, pointing at the folder <i>$CASROOT/data</i>. 
 In this example, subdirectory <i>d:/occt/test-data</i> is added to this path. Similar code could be used on Linux and Mac OS X except that on non-Windows platforms colon ":" should be used as path separator instead of semicolon ";".
@@ -66,18 +66,18 @@ To run all tests, type command *testgrid*
 
 Example:
 
-~~~~~
+~~~~{.php}
 Draw[]> testgrid
-~~~~~
+~~~~
 
 To run only a subset of test cases, give masks for group, grid, and test case names to be executed.
 Each argument is a list of file masks separated with commas or spaces; by default "*" is assumed.
 
 Example:
 
-~~~~~
+~~~~{.php}
 Draw[]> testgrid bugs caf,moddata*,xde
-~~~~~
+~~~~
 
 As the tests progress, the result of each test case is reported. 
 At the end of the log a summary of test cases is output, 
@@ -86,7 +86,7 @@ including the list of detected regressions and improvements, if any.
 
 Example:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.tcl}
+~~~~{.php}
     Tests summary
 
     CASE 3rdparty export A1: OK 
@@ -97,7 +97,7 @@ Example:
     Total cases: 208 BAD, 31 SKIPPED, 3 IMPROVEMENT, 1791 OK
     Elapsed time: 1 Hours 14 Minutes 33.7384512019 Seconds
     Detailed logs are saved in D:/occt/results_2012-06-04T0919
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 The tests are considered as non-regressive if only OK, BAD (i.e. known problem), and SKIPPED (i.e. not executed, typically because of lack of a data file) statuses are reported. See @ref testmanual_details_results "Interpretation of test results" for details.
 
@@ -105,22 +105,22 @@ The results and detailed logs of the tests are saved by default to a new subdire
 If necessary, a non-default output directory can be specified using option <i> -outdir</i> followed by a path to the directory. This directory should be new or empty; use option <i>-overwrite</i> to allow writing results in the existing non-empty directory. 
 
 Example:
-~~~~~
+~~~~{.php}
 Draw[]> testgrid -outdir d:/occt/last_results -overwrite
-~~~~~
+~~~~
 In the output directory, a cumulative HTML report <i>summary.html</i> provides links to reports on each test case. An additional report in JUnit-style XML format can be output for use in Jenkins or other continuous integration system.
 
 To re-run the test cases, which were detected as regressions on the previous run, option <i>-regress dirname</i> should be used.
 <i>dirname</i> is a path to the directory containing the results of the previous run. Only the test cases with *FAILED* and *IMPROVEMENT* statuses will be tested.
 
 Example:
-~~~~~
+~~~~{.php}
 Draw[]> testgrid -regress d:/occt/last_results
-~~~~~
+~~~~
 
 Type <i>help testgrid</i> in DRAW prompt to get help on options supported by *testgrid* command:
 
-~~~~~
+~~~~{.php}
 Draw[3]> help testgrid
 testgrid: Run all tests, or specified group, or one grid
     Use: testgrid [groupmask [gridmask [casemask]]] [options...]
@@ -135,7 +135,7 @@ testgrid: Run all tests, or specified group, or one grid
                       Here "dirname" is a path to the directory containing the results of the previous run.
     Groups, grids, and test cases to be executed can be specified by the list of file 
     masks separated by spaces or commas; default is all (*).
-~~~~~
+~~~~
 
 @subsubsection testmanual_1_3_3 Running a Single Test
 
@@ -143,11 +143,11 @@ To run a single test, type command *test* followed by names of group, grid, and
 
 Example:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.tcl}
+~~~~{.php}
     Draw[1]> test blend simple A1
     CASE blend simple A1: OK
     Draw[2]>
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 Note that normally an intermediate output of the script is not shown. The detailed log of the test can be obtained after the test execution by running command <i>"dlog get"</i>. 
 
@@ -156,7 +156,7 @@ To see intermediate commands and their output during the test execution, add one
 
 Type <i>help test</i> in DRAW prompt to get help on options supported by *test* command:
 
-~~~~~
+~~~~{.php}
 Draw[3]> help test
 test: Run specified test case
  Use: test group grid casename [options...]
@@ -174,7 +174,7 @@ test: Run specified test case
  -beep: play sound signal at the end of the test
  -errors: show all lines from the log report that are recognized as errors
         This key will be ignored if the "-echo" key is already set.
-~~~~~
+~~~~
 
 @subsubsection testmanual_intro_quick_create Creating a New Test
 
@@ -182,50 +182,50 @@ The detailed rules of creation of new tests are given in @ref testmanual_3 "Crea
 
 Use prefix <i>bug</i> followed by Mantis issue ID and, if necessary, additional suffixes, for naming the test script, data files, and DRAW commands specific for this test case.
 
-1.     If the test requires C++ code, add it as new DRAW command(s) in one of files in *QABugs* package. 
-2.     Add script(s) for the test case in the subfolder corresponding to the relevant OCCT module of the group *bugs* <i>($CASROOT/tests/bugs)</i>. See @ref testmanual_5_2 "the correspondence map".
-3.     In the test script:
-       *       Load all necessary DRAW modules by command *pload*.
-       *       Use command *locate_data_file* to get a path to data files used by test script. (Make sure to have this command not inside catch statement if it is used.)
-       *       Use DRAW commands to reproduce the tested situation.
-       *       Make sure that in case of failure the test produces a message containing word "Error" or other recognized by the test system as error (add new error patterns in file parse.rules if necessary).
-       *       If the test case reports error due to an existing problem and the fix is not available, add @ref testmanual_3_6 "TODO" statement for each error to mark it as a known problem. The TODO statements must be specific so as to match the actually generated messages but not all similar errors.
-       *       To check expected output which should be obtained as the test result, add @ref testmanual_3_7 "REQUIRED" statement for each line of output to mark it as required.
-       *       If the test case produces error messages (contained in parse.rules), which are expected in that test and should not be considered as its failure (e.g. test for *checkshape* command), add REQUIRED statement for each error to mark it as required output.
-4.     To check whether the data files needed for the test are already present in the database, use DRAW command *testfile* (see below).
+1.  If the test requires C++ code, add it as new DRAW command(s) in one of files in *QABugs* package. 
+2.  Add script(s) for the test case in the subfolder corresponding to the relevant OCCT module of the group *bugs* <i>($CASROOT/tests/bugs)</i>. See @ref testmanual_5_2 "the correspondence map".
+3.  In the test script:
+  * Load all necessary DRAW modules by command *pload*.
+  * Use command *locate_data_file* to get a path to data files used by test script. (Make sure to have this command not inside catch statement if it is used.)
+  * Use DRAW commands to reproduce the tested situation.
+  * Make sure that in case of failure the test produces a message containing word "Error" or other recognized by the test system as error (add new error patterns in file parse.rules if necessary).
+  * If the test case reports error due to an existing problem and the fix is not available, add @ref testmanual_3_6 "TODO" statement for each error to mark it as a known problem. The TODO statements must be specific so as to match the actually generated messages but not all similar errors.
+  * To check expected output which should be obtained as the test result, add @ref testmanual_3_7 "REQUIRED" statement for each line of output to mark it as required.
+  * If the test case produces error messages (contained in parse.rules), which are expected in that test and should not be considered as its failure (e.g. test for *checkshape* command), add REQUIRED statement for each error to mark it as required output.
+4.  To check whether the data files needed for the test are already present in the database, use DRAW command *testfile* (see below).
     If the data file is already present, use it for a new test instead of adding a duplicate.
     If the data file(s) are not yet present in the test database, put them to a folder and add it to the environment variable *CSF_TestDataPath* to be found by the test system.
     The location of the data files, which need to be accessed by OCC team and put to the official database, should be provided in the comment to Mantis issue, clearly indicating how the names of the files used by the test script match the actual names of the files.
     The simplest way is to attach the data files to the Mantis issue, with the same names as used by the test script.
-5.     Check that the test case runs as expected (test for fix: OK with the fix, FAILED without the fix; test for existing problem: BAD), and integrate it to the Git branch created for the issue.
+5.  Check that the test case runs as expected (test for fix: OK with the fix, FAILED without the fix; test for existing problem: BAD), and integrate it to the Git branch created for the issue.
 
 Example:
 
 * Added files:
 
-~~~~~
+~~~~{.php}
 git status -short
 A tests/bugs/heal/data/bug210_a.brep
 A tests/bugs/heal/data/bug210_b.brep
 A tests/bugs/heal/bug210_1
 A tests/bugs/heal/bug210_2
-~~~~~
+~~~~
 
 * Test script
 
-~~~~~{.tcl}
+~~~~{.php}
 puts "OCC210 (case 1): Improve FixShape for touching wires"
 
 restore [locate_data_file bug210_a.brep] a 
 
 fixshape result a 0.01 0.01
 checkshape result
-~~~~~
+~~~~
 
 DRAW command *testfile* should be used to check the data files used by the test for possible duplication of content or names.
 The command accepts the list of paths to files to be checked (as a single argument) and gives a conclusion on each of the files, for instance:
 
-~~~~~
+~~~~{.php}
 Draw[1]> testfile [glob /my/data/path/bug12345*]
 Collecting info on test data files repository...
 Checking new file(s)...
@@ -247,7 +247,7 @@ Checking new file(s)...
 * /my/data/path/case_8_wire4.brep: error
   name is already used by existing file
   --> //server/occt_tests_data/public/brep/case_8_wire4.brep
-~~~~~
+~~~~
 
 @section testmanual_2 Organization of Test Scripts
 
@@ -284,11 +284,11 @@ The names of directories of test groups containing systematic test grids corresp
 
 Example:
 
-~~~~~
+~~~~
   caf
   mesh
   offset
-~~~~~
+~~~~
 
 Test group *bugs* is used to collect the tests coming from bug reports. Group *demo* collects tests of the test system, DRAW, samples, etc.
 
@@ -296,19 +296,19 @@ Test group *bugs* is used to collect the tests coming from bug reports. Group *d
 
 This test group contains file *grids.list*, which defines an ordered list of grids in this group in the following format:
 
-~~~~~~~~~~~~~~~~~
+~~~~
 001 gridname1
 002 gridname2
 ...
 NNN gridnameN
-~~~~~~~~~~~~~~~~~
+~~~~
 
 Example:
 
-~~~~~~~~~~~~~~~~~
+~~~~
     001 basic
     002 advanced
-~~~~~~~~~~~~~~~~~
+~~~~
 
 @subsubsection testmanual_2_2_3 File "begin"
 
@@ -318,10 +318,10 @@ additional Tcl functions used in test scripts.
 
 Example:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.tcl}
+~~~~{.php}
     pload TOPTEST ;# load topological command
     set cpulimit 300 ;# set maximum time allowed for script execution
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 @subsubsection testmanual_2_2_4 File "end"
 
@@ -332,14 +332,14 @@ Note: *TEST COMPLETED* string should be present in the output to indicate that t
 See @ref testmanual_3 "Creation and modification of tests" chapter for more information.
 
 Example:
-~~~~~
+~~~~{.php}
     if { [isdraw result] } {
         checkshape result
     } else {
         puts "Error: The result shape can not be built"
     }
     puts "TEST COMPLETED"
-~~~~~
+~~~~
 
 @subsubsection testmanual_2_2_5 File "parse.rules"
 
@@ -353,12 +353,12 @@ The rest of the line can contain a comment message, which will be added to the t
 
 Example:
 
-~~~~~
+~~~~
     FAILED /\b[Ee]xception\b/ exception
     FAILED /\bError\b/ error
     SKIPPED /Cannot open file for reading/ data file is missing
     SKIPPED /Could not read file .*, abandon/ data file is missing
-~~~~~
+~~~~
 
 Lines starting with a *#* character and blank lines are ignored to allow comments and spacing.
 
@@ -368,11 +368,11 @@ If a line matches several rules, the first one applies. Rules defined in the gri
 
 Example:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.tcl}
+~~~~
     FAILED /\\bFaulty\\b/ bad shape
     IGNORE /^Error [23]d = [\d.-]+/ debug output of blend command
     IGNORE /^Tcl Exception: tolerance ang : [\d.-]+/ blend failure
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 @subsubsection testmanual_2_2_6  Directory "data"
 The test group may contain subdirectory *data*, where test scripts shared by different test grids can be put. See also @ref testmanual_2_3_5 "Directory data".
@@ -386,12 +386,12 @@ Each directory contains a set of related test cases. The name of a directory sho
 
 Example:
 
-~~~~~
+~~~~
 caf
    basic
    bugs
    presentation
-~~~~~
+~~~~
 
 Here *caf* is the name of the test group and *basic*, *bugs*, *presentation*, etc. are the names of grids.
 
@@ -403,9 +403,9 @@ Usually it sets variables specific for the current grid.
 
 Example:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.tcl}
+~~~~{.php}
     set command bopfuse ;# command tested in this grid
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 @subsubsection testmanual_2_3_3 File "end"
 
@@ -415,9 +415,9 @@ Usually it executes a specific sequence of commands common for all tests in the
 
 Example:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.tcl}
+~~~~{.php}
     vdump $imagedir/${casename}.png ;# makes a snap-shot of AIS viewer
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 @subsubsection testmanual_2_3_4 File "cases.list"
 
@@ -427,9 +427,9 @@ This file should contain a single line defining the relative path to the collect
 
 Example:
 
-~~~~~
+~~~~
 ../data/simple
-~~~~~
+~~~~
 
 This option is used for creation of several grids of tests with the same data files and operations but performed with differing parameters. The common scripts are usually located place in the common 
 subdirectory of the test group, <i>data/simple</i> for example.
@@ -450,25 +450,25 @@ and produces meaningful messages that can be used to check the validity of the r
 
 Example:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.tcl}
+~~~~{.php}
     pcylinder c1 10 20 ;# create first cylinder
     pcylinder c2 5 20 ;# create second cylinder
     ttranslate c2 5 0 10 ;# translate second cylinder to x,y,z
     bsection result c1 c2 ;# create a section of two cylinders
     checksection result ;# will output error message if result is bad
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 The test case can have any name (except for the reserved names *begin, end, data, cases.list* and  *parse.rules*). 
 For systematic grids it is usually a capital English letter followed by a number.
 
 Example:
 
-~~~~~
+~~~~
     A1
     A2
     B1
     B2
-~~~~~
+~~~~
 
 Such naming facilitates compact representation of tests execution results in tabular format within HTML reports.
 
@@ -488,11 +488,11 @@ The test case name in the bugs group should be prefixed by the ID of the corresp
 
 Example:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.tcl}
+~~~~
     bug12345_coaxial
     bug12345_orthogonal_1
     bug12345_orthogonal_2
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 If the new test corresponds to a functionality already covered by the existing systematic test grid (e.g. group *mesh* for *BRepMesh* issues), this test can be added (or moved later by OCC team) to that grid. 
 
@@ -526,32 +526,32 @@ The test should run commands necessary to perform the tested operations, in gene
 Usually the script represents a set of commands that a person would run interactively to perform the operation and see its results, with additional comments to explain what happens.
 
 Example:
-~~~~~
+~~~~{.php}
 # Simple test of fusing box and sphere
 box b 10 10 10 
 sphere s 5
 bfuse result b s
 checkshape result
-~~~~~
+~~~~
 
 Make sure that file *parse.rules* in the grid or group directory contains a regular expression to catch possible messages indicating the failure of the test. 
 
 For instance, for catching errors reported by *checkshape* command relevant grids define a rule to recognize its report by the word *Faulty*:
 
-~~~~~
+~~~~
 FAILED /\bFaulty\b/ bad shape
-~~~~~
+~~~~
 
 For the messages generated in the script it is recommended to use the word 'Error' in the error message.
 
 Example:
 
-~~~~~
+~~~~{.php}
 set expected_length 11
 if { [expr $actual_length - $expected_length] > 0.001 } {
     puts "Error: The length of the edge should be $expected_length"
 }
-~~~~~
+~~~~
 
 At the end, the test script should output *TEST COMPLETED* string to mark a successful completion of the script. This is often done by the *end* script in the grid.
 
@@ -571,9 +571,9 @@ During execution of the test, location of such data file can be constructed usin
 
 Example:
 
-~~~~~
+~~~~{.php}
 checkresult $result $::dirname/$::groupname/$::gridname/data/${::casename}.txt
-~~~~~
+~~~~
 
 CAD models and other data files which are not going to change over time should be stored separately from the source repository.
 Use Tcl procedure *locate_data_file* to get a path to such data files, instead of coding the path explicitly. 
@@ -583,9 +583,9 @@ If the file is not found, *locate_data_file* will raise exception, and the test
 
 Example:
 
-~~~~~
+~~~~{.php}
 stepread [locate_data_file CAROSKI_COUPELLE.step] a *
-~~~~~
+~~~~
 
 When the test needs to produce some snapshots or other artefacts, use Tcl variable *imagedir* as the location where such files should be put. 
 * Command *testgrid* sets this variable to the subdirectory of the results folder corresponding to the grid. 
@@ -601,20 +601,20 @@ The test system can recognize an image file (snapshot) and include it in HTML lo
 The image format (defined by extension) should be *png*.
 
 Example:
-~~~~~
+~~~~{.php}
 xwd $::imagedir/${::casename}.png
 vdisplay result; vfit
 vdump $::imagedir/${::casename}-axo.png
 vfront; vfit
 vdump $::imagedir/${::casename}-front.png
-~~~~~
+~~~~
 
 would produce:
-~~~~~
+~~~~
 A1.png
 A1-axo.png
 A1-front.png
-~~~~~
+~~~~
 
 Note that OCCT must be built with FreeImage support to be able to produce usable images.
 
@@ -644,26 +644,26 @@ The new test created for an unsolved problem should return BAD. The new test cre
 If the test produces an invalid result at a certain moment then the corresponding bug should be created in the OCCT issue tracker located at https://tracker.dev.opencascade.org, and the problem should be marked as TODO in the test script.
 
 The following statement should be added to such a test script:
-~~~~~
+~~~~{.php}
 puts "TODO BugNumber ListOfPlatforms: RegularExpression"
-~~~~~
+~~~~
 
 Here:
 * *BugNumber* is the bug ID in the tracker. For example: #12345.
 * *ListOfPlatforms* is a list of platforms, at which the bug is reproduced (Linux, Windows, MacOS, or All). Note that the platform name is custom for the OCCT test system; Use procedure *checkplatform* to get the platform name.
 
 Example:
-~~~~~
+~~~~{.php}
 Draw[2]> checkplatform
 Windows
-~~~~~
+~~~~
 
 * RegularExpression is a regular expression, which should be matched against the line indicating the problem in the script output. 
 
 Example:
-~~~~~
+~~~~{.php}
 puts "TODO #22622 Mandriva2008: Abort .* an exception was raised"
-~~~~~
+~~~~
 
 The parser checks the test output and if an output line matches the *RegularExpression* then it will be assigned a BAD status instead of FAILED.
 
@@ -673,29 +673,29 @@ To mark the test as BAD for an incomplete case (when the final *TEST COMPLETE* m
 
 Example:
 
-~~~~~
+~~~~{.php}
 puts "TODO OCC22817 All: exception.+There are no suitable edges"
 puts "TODO OCC22817 All: \\*\\* Exception \\*\\*"
 puts "TODO OCC22817 All: TEST INCOMPLETE"
-~~~~~
+~~~~
 
 @subsection testmanual_3_7 Marking required output
 
 To check the obtained test output matches the expected results considered correct, add REQUIRED statement for each specific message.
 For that, the following statement should be added to the corresponding test script:
 
-~~~~~
+~~~~{.php}
 puts "REQUIRED ListOfPlatforms: RegularExpression"
-~~~~~
+~~~~
 
 Here *ListOfPlatforms* and *RegularExpression* have the same meaning as in TODO statements described above.
 
 The REQUIRED statement can also be used to mask the message that would normally be interpreted as error (according to the rules defined in *parse.rules*) but should not be considered as such within the current test.
 
 Example:
-~~~~~
+~~~~{.php}
 puts "REQUIRED Linux: Faulty shapes in variables faulty_1 to faulty_5"
-~~~~~
+~~~~
 
 This statement notifies test system that errors reported by *checkshape* command are expected in that test case, and test should be considered as OK if this message appears, despite of presence of general rule stating that 'Faulty' signals failure.
 
@@ -711,13 +711,13 @@ Note: in OCCT 6.5.3, file *DrawAppliInit* already exists in <i>$CASROOT/src/Draw
 
 For example, let us assume that *d:/occt* contains an up-to-date version of OCCT sources with tests, and the test data archive is unpacked to *d:/test-data*):
 
-~~~~~
+~~~~{.php}
 set env(CASROOT) d:/occt
 set env(CSF_TestScriptsPath) $env(CASROOT)/tests
 source $env(CASROOT)/src/DrawResources/TestCommands.tcl
 set env(CSF_TestDataPath) $env(CASROOT)/data;d:/test-data
 return
-~~~~~
+~~~~
 
 Note that on older versions of OCCT the tests are run in compatibility mode and thus not all output of the test command can be captured; this can lead to absence of some error messages (can be reported as either a failure or an improvement).
 
@@ -728,13 +728,13 @@ You can extend the test system by adding your own tests. For that it is necessar
 Use Tcl command <i>_path_separator</i> to insert a platform-dependent separator to the path list.
 
 For example:
-~~~~~
+~~~~{.php}
 set env(CSF_TestScriptsPath) \
   $env(TestScriptsPath)[_path_separator]d:/MyOCCTProject/tests
 set env(CSF_TestDataPath) \
   d:/occt/test-data[_path_separator]d:/MyOCCTProject/data
 return ;# this is to avoid an echo of the last command above in cout
-~~~~~
+~~~~
 
 @subsection testmanual_4_3 Parallel execution of tests
 
@@ -749,21 +749,21 @@ Some test results are very dependent on the characteristics of the workstation,
 
 OCCT test system provides a dedicated command *testdiff* for comparing CPU time of execution, memory usage, and images produced by the tests.
 
-~~~~~
+~~~~{.php}
 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>-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;
+  * *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:
-       * 1 -- outputs only differences;
-       * 2 -- additionally outputs the list of logs and directories present in one of directories only;
-       * 3 -- (by default) additionally outputs progress messages;
+  * 1 -- outputs only differences;
+  * 2 -- additionally outputs the list of logs and directories present in one of directories only;
+  * 3 -- (by default) additionally outputs progress messages;
 * <i>-image [filename]</i> - compare images and save the resulting log in specified file (<i>$dir1/diffimage-$dir2.log</i> by default)
 * <i>-cpu [filename]</i> - compare overall CPU and save the resulting log in specified file (<i>$dir1/diffcpu-$dir2.log</i> by default)
 * <i>-memory [filename]</i> - compare memory delta and save the resulting log in specified file (<i>$dir1/diffmemory-$dir2.log</i> by default)
@@ -771,18 +771,18 @@ Possible options are:
 
 Example:
 
-~~~~~
+~~~~{.php}
 Draw[]> testdiff results/CR12345-2012-10-10T08:00 results/master-2012-10-09T21:20 
-~~~~~
+~~~~
 
 Particular tests can generate additional data that need to be compared by *testdiff* command.
 For that, for each parameter to be controlled, the test should produce the line containing keyword "COUNTER* followed by arbitrary name of the parameter, then colon and numeric value of the parameter.
 
 Example of test code:
 
-~~~~~
+~~~~{.php}
 puts "COUNTER Memory heap usage at step 5: [meminfo h]"
-~~~~~
+~~~~
 
 @section testmanual_5 APPENDIX
 
@@ -794,10 +794,10 @@ This group allows testing the interaction of OCCT and 3rdparty products.
 
 DRAW module: VISUALIZATION.
 
-| Grid | Commands      | Functionality |
+| Grid  | Commands  | Functionality |
 | :---- | :----- | :------- | 
-| export       | vexport       | export of images to different formats |
-| fonts         | vtrihedron, vcolorscale, vdrawtext   | display of fonts |
+| export  | vexport | export of images to different formats |
+| fonts  | vtrihedron, vcolorscale, vdrawtext | display of fonts |
 
 
 @subsubsection testmanual_5_1_2 blend
@@ -806,15 +806,15 @@ This group allows testing blends (fillets) and related operations.
 
 DRAW module: MODELING.
 
-| Grid | Commands      | Functionality |
+| Grid  | Commands  | Functionality |
 | :---- | :----- | :------- | 
-| simple       | blend | fillets on simple shapes |
-| complex      | blend         | fillets on complex shapes, non-trivial geometry |
-| tolblend_simple      | tolblend, blend | |
-| buildevol    | buildevol     | |
-| tolblend_buildvol |  tolblend, buildevol |   use of additional command tolblend |
-| bfuseblend   | bfuseblend    | | 
-| encoderegularity     | encoderegularity      | | 
+| simple  | blend | fillets on simple shapes |
+| complex | blend   | fillets on complex shapes, non-trivial geometry |
+| tolblend_simple | tolblend, blend | |
+| buildevol | buildevol | |
+| tolblend_buildvol |   tolblend, buildevol | use of additional command tolblend |
+| bfuseblend  | bfuseblend  | | 
+| encoderegularity  | encoderegularity  | | 
 
 @subsubsection testmanual_5_1_3 boolean
 
@@ -827,32 +827,32 @@ Grids names are based on name of the command used, with suffixes:
 * <i>_simple</i> -- for tests operating on simple shapes (boxes, cylinders, toruses, etc.);
 * <i>_complex</i> -- for tests dealing with complex shapes.
 
-| Grid | Commands      | Functionality |
+| Grid  | Commands  | Functionality |
 | :---- | :----- | :------- | 
-| bcommon_2d   | bcommon       | Common operation (old algorithm), 2d |
-| bcommon_complex      | bcommon       | Common operation (old algorithm), complex shapes |
-| bcommon_simple       | bcommon       | Common operation (old algorithm), simple shapes |
-| bcut_2d      | bcut | Cut operation (old algorithm), 2d |
-| bcut_complex | bcut  | Cut operation (old algorithm), complex shapes |
-| bcut_simple  | bcut |        Cut operation (old algorithm), simple shapes |
-| bcutblend    | bcutblend     | | 
-| bfuse_2d     | bfuse | Fuse operation (old algorithm), 2d |
-| bfuse_complex        | bfuse |       Fuse operation (old algorithm), complex shapes |
-| bfuse_simple | bfuse | Fuse operation (old algorithm), simple shapes |
-| bopcommon_2d | bopcommon |   Common operation, 2d |
-| bopcommon_complex    | bopcommon     | Common operation, complex shapes | 
-| bopcommon_simple     | bopcommon     | Common operation, simple shapes |
-| bopcut_2d |  bopcut |        Cut operation, 2d |
-| bopcut_complex |     bopcut |        Cut operation, complex shapes |
-| bopcut_simple        | bopcut        | Cut operation, simple shapes |
-| bopfuse_2d   | bopfuse       | Fuse operation, 2d |
-| bopfuse_complex      | bopfuse       | Fuse operation, complex shapes |
-| bopfuse_simple       | bopfuse       | Fuse operation, simple shapes |
-| bopsection   | bopsection    | Section |
-| boptuc_2d    | boptuc        | |
-| boptuc_complex       | boptuc        | |
-| boptuc_simple        | boptuc        | |
-| bsection |   bsection        | Section (old algorithm) |
+| bcommon_2d  | bcommon | Common operation (old algorithm), 2d |
+| bcommon_complex | bcommon | Common operation (old algorithm), complex shapes |
+| bcommon_simple  | bcommon | Common operation (old algorithm), simple shapes |
+| bcut_2d | bcut | Cut operation (old algorithm), 2d |
+| bcut_complex  | bcut  | Cut operation (old algorithm), complex shapes |
+| bcut_simple | bcut |  Cut operation (old algorithm), simple shapes |
+| bcutblend | bcutblend | | 
+| bfuse_2d  | bfuse | Fuse operation (old algorithm), 2d |
+| bfuse_complex | bfuse | Fuse operation (old algorithm), complex shapes |
+| bfuse_simple  | bfuse | Fuse operation (old algorithm), simple shapes |
+| bopcommon_2d  | bopcommon | Common operation, 2d |
+| bopcommon_complex | bopcommon | Common operation, complex shapes | 
+| bopcommon_simple  | bopcommon | Common operation, simple shapes |
+| bopcut_2d | bopcut |  Cut operation, 2d |
+| bopcut_complex |  bopcut |  Cut operation, complex shapes |
+| bopcut_simple | bopcut  | Cut operation, simple shapes |
+| bopfuse_2d  | bopfuse | Fuse operation, 2d |
+| bopfuse_complex | bopfuse | Fuse operation, complex shapes |
+| bopfuse_simple  | bopfuse | Fuse operation, simple shapes |
+| bopsection  | bopsection  | Section |
+| boptuc_2d | boptuc  | |
+| boptuc_complex  | boptuc  | |
+| boptuc_simple | boptuc  | |
+| bsection |  bsection  | Section (old algorithm) |
 
 @subsubsection testmanual_5_1_4 bugs
 
@@ -867,15 +867,15 @@ This group allows testing OCAF functionality.
 
 DRAW module: OCAFKERNEL.
 
-| Grid | Commands      | Functionality |
+| Grid  | Commands  | Functionality |
 | :---- | :----- | :------- | 
-| basic        | |     Basic attributes |
-| bugs | |     Saving and restoring of document |
-| driver       | |     OCAF drivers |
-| named_shape  | |     *TNaming_NamedShape* attribute |
-| presentation | | *AISPresentation* attributes |
-| tree | |     Tree construction attributes |
-| xlink         | |    XLink attributes |
+| basic | |   Basic attributes |
+| bugs  | | Saving and restoring of document |
+| driver  | | OCAF drivers |
+| named_shape | | *TNaming_NamedShape* attribute |
+| presentation  | | *AISPresentation* attributes |
+| tree  | | Tree construction attributes |
+| xlink  | |  XLink attributes |
 
 @subsubsection testmanual_5_1_6 chamfer
 
@@ -885,17 +885,17 @@ DRAW module: MODELING.
 
 The test grid name is constructed depending on the type of the tested chamfers. Additional suffix <i>_complex</i> is used for test cases involving complex geometry (e.g. intersections of edges forming a chamfer); suffix <i>_sequence</i> is used for grids where chamfers are computed sequentially.
 
-| Grid | Commands      | Functionality |
+| Grid  | Commands  | Functionality |
 | :---- | :----- | :------- | 
-| equal_dist   | |     Equal distances from edge |
-| equal_dist_complex   | |     Equal distances from edge, complex shapes |
-| equal_dist_sequence  | |     Equal distances from edge, sequential operations |
-| dist_dist    | |     Two distances from edge |
-| dist_dist_complex    | |     Two distances from edge, complex shapes |
-| dist_dist_sequence   | |     Two distances from edge, sequential operations |
-| dist_angle   | |     Distance from edge and given angle |
-| dist_angle_complex   | |     Distance from edge and given angle |
-| dist_angle_sequence  | |     Distance from edge and given angle |
+| equal_dist  | |   Equal distances from edge |
+| equal_dist_complex  | | Equal distances from edge, complex shapes |
+| equal_dist_sequence | | Equal distances from edge, sequential operations |
+| dist_dist | | Two distances from edge |
+| dist_dist_complex | | Two distances from edge, complex shapes |
+| dist_dist_sequence  | | Two distances from edge, sequential operations |
+| dist_angle  | | Distance from edge and given angle |
+| dist_angle_complex  | | Distance from edge and given angle |
+| dist_angle_sequence | | Distance from edge and given angle |
 
 @subsubsection testmanual_5_1_7 de
 
@@ -903,7 +903,7 @@ This group tests reading and writing of CAD data files (iges, step) to and from
 
 Test cases check transfer status, shape and attributes against expected reference values.
 
-| Grid | Commands | Functionality |
+| Grid  | Commands | Functionality |
 | :---- | :----- | :------- | 
 | iges_1, iges_2, iges_3 | igesbrep, brepiges, ReadIges, WriteIges | IGES tests | 
 | step_1, step_2, step_3, step_4, step_5 | stepread, stepwrite, ReadStep, WriteStep | STEP tests |
@@ -912,11 +912,11 @@ Test cases check transfer status, shape and attributes against expected referenc
 
 This group allows demonstrating how testing cases are created, and testing DRAW commands and the test system as a whole.
 
-| Grid | Commands      | Functionality |
+| Grid  | Commands  | Functionality |
 | :---- | :----- | :------- | 
-| draw |  getsource, restore   | Basic DRAW commands |
-| testsystem   | |     Testing system |
-| samples      | |     OCCT samples | 
+| draw  |  getsource, restore | Basic DRAW commands |
+| testsystem  | | Testing system |
+| samples | | OCCT samples | 
 
 
 @subsubsection testmanual_5_1_9 draft
@@ -925,9 +925,9 @@ This group allows testing draft operations.
 
 DRAW module: MODELING.
 
-| Grid | Commands      | Functionality |
+| Grid  | Commands  | Functionality |
 | :---- | :----- | :------- | 
-| Angle        | depouille     | Drafts with angle (inclined walls) |
+| Angle | depouille | Drafts with angle (inclined walls) |
 
 
 @subsubsection testmanual_5_1_10 feat
@@ -936,13 +936,13 @@ This group allows testing creation of features on a shape.
 
 DRAW module: MODELING (package *BRepTest*).
 
-| Grid | Commands      | Functionality |
+| Grid  | Commands  | Functionality |
 | :---- | :----- | :------- | 
-| featdprism           | | |
-| featlf               | | |
-| featprism            | | |
-| featrevol            | | | 
-| featrf               | | |
+| featdprism    | | |
+| featlf    | | |
+| featprism   | | |
+| featrevol   | | | 
+| featrf    | | |
 
 @subsubsection testmanual_5_1_11 heal
 
@@ -950,28 +950,28 @@ This group allows testing the functionality provided by *ShapeHealing* toolkit.
 
 DRAW module: XSDRAW
 
-| Grid | Commands      | Functionality |
+| Grid  | Commands  | Functionality |
 | :---- | :----- | :------- | 
-| fix_shape    | fixshape      | Shape healing | 
-| fix_gaps     | fixwgaps      | Fixing gaps between edges on a wire |
-| same_parameter       | sameparameter | Fixing non-sameparameter edges |
-| same_parameter_locked        | sameparameter | Fixing non-sameparameter edges |
-| fix_face_size        | DT_ApplySeq   | Removal of small faces |
-| elementary_to_revolution     | DT_ApplySeq   | Conversion of elementary surfaces to revolution |
-| direct_faces | directfaces   | Correction of axis of elementary surfaces | 
-| drop_small_edges     | fixsmall      | Removal of small edges | 
-| split_angle  | DT_SplitAngle |       Splitting periodic surfaces by angle |
-| split_angle_advanced | DT_SplitAngle | Splitting periodic surfaces by angle |
-| split_angle_standard | DT_SplitAngle | Splitting periodic surfaces by angle |
-| split_closed_faces | DT_ClosedSplit  | Splitting of closed faces |
-| surface_to_bspline | DT_ToBspl       | Conversion of surfaces to b-splines |
-| surface_to_bezier | DT_ShapeConvert |        Conversion of surfaces to bezier |
-| split_continuity     | DT_ShapeDivide | Split surfaces by continuity criterion |
+| fix_shape | fixshape  | Shape healing | 
+| fix_gaps  | fixwgaps  | Fixing gaps between edges on a wire |
+| same_parameter  | sameparameter | Fixing non-sameparameter edges |
+| same_parameter_locked | sameparameter | Fixing non-sameparameter edges |
+| fix_face_size | DT_ApplySeq | Removal of small faces |
+| elementary_to_revolution  | DT_ApplySeq | Conversion of elementary surfaces to revolution |
+| direct_faces  | directfaces | Correction of axis of elementary surfaces | 
+| drop_small_edges  | fixsmall  | Removal of small edges | 
+| split_angle | DT_SplitAngle | Splitting periodic surfaces by angle |
+| split_angle_advanced | DT_SplitAngle  | Splitting periodic surfaces by angle |
+| split_angle_standard | DT_SplitAngle  | Splitting periodic surfaces by angle |
+| split_closed_faces |  DT_ClosedSplit  | Splitting of closed faces |
+| surface_to_bspline |  DT_ToBspl | Conversion of surfaces to b-splines |
+| surface_to_bezier | DT_ShapeConvert | Conversion of surfaces to bezier |
+| split_continuity  | DT_ShapeDivide | Split surfaces by continuity criterion |
 | split_continuity_advanced | DT_ShapeDivide | Split surfaces by continuity criterion |
 | split_continuity_standard | DT_ShapeDivide | Split surfaces by continuity criterion |
-| surface_to_revolution_advanced |     DT_ShapeConvertRev      | Convert elementary surfaces to revolutions, complex cases |
-| surface_to_revolution_standard |     DT_ShapeConvertRev      | Convert elementary surfaces to revolutions, simple cases |
-| update_tolerance_locked      | updatetolerance       | Update the tolerance of shape so that it satisfy the rule: toler(face)<=toler(edge)<=toler(vertex) |
+| surface_to_revolution_advanced |  DT_ShapeConvertRev  | Convert elementary surfaces to revolutions, complex cases |
+| surface_to_revolution_standard |  DT_ShapeConvertRev  | Convert elementary surfaces to revolutions, simple cases |
+| update_tolerance_locked | updatetolerance | Update the tolerance of shape so that it satisfy the rule: toler(face)<=toler(edge)<=toler(vertex) |
 
 @subsubsection testmanual_5_1_12 mesh
 
@@ -979,14 +979,14 @@ This group allows testing shape tessellation (*BRepMesh*) and shading.
 
 DRAW modules: MODELING (package *MeshTest*), VISUALIZATION (package *ViewerTest*)
 
-| Grid | Commands      | Functionality |
+| Grid  | Commands  | Functionality |
 | :---- | :----- | :------- | 
-| advanced_shading     | vdisplay      | Shading, complex shapes |
-| standard_shading     | vdisplay      | Shading, simple shapes |
-| advanced_mesh        | mesh |        Meshing of complex shapes |
-| standard_mesh | mesh |       Meshing of simple shapes |
-| advanced_incmesh     | incmesh       | Meshing of complex shapes |
-| standard_incmesh     | incmesh       | Meshing of simple shapes |
+| advanced_shading  | vdisplay  | Shading, complex shapes |
+| standard_shading  | vdisplay  | Shading, simple shapes |
+| advanced_mesh | mesh |  Meshing of complex shapes |
+| standard_mesh | mesh |  Meshing of simple shapes |
+| advanced_incmesh  | incmesh | Meshing of complex shapes |
+| standard_incmesh  | incmesh | Meshing of simple shapes |
 | advanced_incmesh_parallel | incmesh | Meshing of complex shapes, parallel mode |
 | standard_incmesh_parallel | incmesh | Meshing of simple shapes, parallel mode |
 
@@ -996,14 +996,14 @@ This group allows testing creation of simple surfaces.
 
 DRAW module: MODELING (package *BRepTest*)
 
-| Grid | Commands      | Functionality |
+| Grid  | Commands  | Functionality |
 | :---- | :----- | :------- | 
-| after_trim | mkface  | |
-| after_offset | mkface        | |
-| after_extsurf_and_offset     | mkface  | |   
-| after_extsurf_and_trim | mkface      | | 
-| after_revsurf_and_offset | mkface    | | 
-| mkplane | mkplane    | |
+| after_trim | mkface | |
+| after_offset | mkface | |
+| after_extsurf_and_offset  | mkface  | | 
+| after_extsurf_and_trim | mkface | | 
+| after_revsurf_and_offset | mkface | | 
+| mkplane | mkplane | |
 
 @subsubsection testmanual_5_1_14 nproject
 
@@ -1011,9 +1011,9 @@ This group allows testing normal projection of edges and wires onto a face.
 
 DRAW module: MODELING (package *BRepTest*) 
 
-| Grid | Commands      | Functionality |
+| Grid  | Commands  | Functionality |
 | :---- | :----- | :------- | 
-| Base | nproject      |  |
+| Base  | nproject  |  |
 
 @subsubsection testmanual_5_1_15 offset
 
@@ -1021,25 +1021,25 @@ This group allows testing offset functionality for curves and surfaces.
 
 DRAW module: MODELING (package *BRepTest*) 
 
-| Grid | Commands      | Functionality |
+| Grid  | Commands  | Functionality |
 | :---- | :----- | :------- | 
-| compshape    | offsetcompshape       | Offset of shapes with removal of some faces | 
-| faces_type_a | offsetparameter, offsetload, offsetperform | Offset on a subset of faces with a fillet |
-| faces_type_i         | offsetparameter, offsetload, offsetperform |  Offset on a subset of faces with a sharp edge |
-| shape_type_a         | offsetparameter, offsetload, offsetperform |  Offset on a whole shape with a fillet |
-| shape_type_i         | offsetparameter, offsetload, offsetperform |  Offset on a whole shape with a fillet |
-| shape         | offsetshape  | |
-| wire_closed_outside_0_005, wire_closed_outside_0_025, wire_closed_outside_0_075, wire_closed_inside_0_005, wire_closed_inside_0_025, wire_closed_inside_0_075, wire_unclosed_outside_0_005, wire_unclosed_outside_0_025, wire_unclosed_outside_0_075 |       mkoffset | 2d offset of closed and unclosed planar wires with different offset step and directions of offset ( inside / outside ) |
-       
+| compshape | offsetcompshape | Offset of shapes with removal of some faces | 
+| faces_type_a  | offsetparameter, offsetload, offsetperform | Offset on a subset of faces with a fillet |
+| faces_type_i  | offsetparameter, offsetload, offsetperform |  Offset on a subset of faces with a sharp edge |
+| shape_type_a  | offsetparameter, offsetload, offsetperform |  Offset on a whole shape with a fillet |
+| shape_type_i  | offsetparameter, offsetload, offsetperform |  Offset on a whole shape with a fillet |
+| shape  | offsetshape  | |
+| wire_closed_outside_0_005, wire_closed_outside_0_025, wire_closed_outside_0_075, wire_closed_inside_0_005, wire_closed_inside_0_025, wire_closed_inside_0_075, wire_unclosed_outside_0_005, wire_unclosed_outside_0_025, wire_unclosed_outside_0_075  | mkoffset | 2d offset of closed and unclosed planar wires with different offset step and directions of offset ( inside / outside ) |
+  
 @subsubsection testmanual_5_1_16 pipe
 
 This group allows testing construction of pipes (sweeping of a contour along profile).
 
 DRAW module: MODELING (package *BRepTest*) 
 
-| Grid | Commands      | Functionality |
+| Grid  | Commands  | Functionality |
 | :---- | :----- | :------- | 
-| Standard     | pipe  | |
+| Standard  | pipe  | |
 
 @subsubsection testmanual_5_1_17 prism
 
@@ -1047,9 +1047,9 @@ This group allows testing construction of prisms.
 
 DRAW module: MODELING (package *BRepTest*) 
 
-| Grid | Commands      | Functionality |
+| Grid  | Commands  | Functionality |
 | :---- | :----- | :------- | 
-| seminf | prism       | |
+| seminf | prism  | |
 
 @subsubsection testmanual_5_1_18 sewing
 
@@ -1057,46 +1057,46 @@ This group allows testing sewing of faces by connecting edges.
 
 DRAW module: MODELING (package *BRepTest*) 
 
-| Grid | Commands      | Functionality |
+| Grid  | Commands  | Functionality |
 | :---- | :----- | :------- | 
-| tol_0_01     | sewing | Sewing faces with tolerance 0.01 |
-| tol_1        | sewing | Sewing faces with tolerance 1 |
+| tol_0_01  | sewing | Sewing faces with tolerance 0.01 |
+| tol_1 | sewing | Sewing faces with tolerance 1 |
 | tol_100 | sewing | Sewing faces with tolerance 100 | 
 
 @subsubsection testmanual_5_1_19 thrusection
 
 This group allows testing construction of shell or a solid passing through a set of sections in a given sequence (loft).
 
-| Grid | Commands      | Functionality |
+| Grid  | Commands  | Functionality |
 | :---- | :----- | :------- | 
-| solids       | thrusection | Lofting with resulting solid | 
-| not_solids | thrusection     | Lofting with resulting shell or face | 
+| solids  | thrusection | Lofting with resulting solid | 
+| not_solids | thrusection  | Lofting with resulting shell or face | 
 
 @subsubsection testmanual_5_1_20 xcaf
 
 This group allows  testing extended data exchange packages.
 
-| Grid | Commands      | Functionality |
+| Grid  | Commands  | Functionality |
 | :---- | :----- | :------- | 
-| dxc, dxc_add_ACL, dxc_add_CL, igs_to_dxc, igs_add_ACL, brep_to_igs_add_CL, stp_to_dxc, stp_add_ACL, brep_to_stp_add_CL, brep_to_dxc, add_ACL_brep, brep_add_CL       | | Subgroups are divided by format of source file, by format of result file and by type of document modification. For example, *brep_to_igs* means that the source shape in brep format was added to the document, which was saved into igs format after that. The postfix *add_CL* means that colors and layers were initialized in the document before saving and the postfix *add_ACL* corresponds to the creation of assembly and initialization of colors and layers in a document before saving. |
-       
+| dxc, dxc_add_ACL, dxc_add_CL, igs_to_dxc, igs_add_ACL, brep_to_igs_add_CL, stp_to_dxc, stp_add_ACL, brep_to_stp_add_CL, brep_to_dxc, add_ACL_brep, brep_add_CL  | | Subgroups are divided by format of source file, by format of result file and by type of document modification. For example, *brep_to_igs* means that the source shape in brep format was added to the document, which was saved into igs format after that. The postfix *add_CL* means that colors and layers were initialized in the document before saving and the postfix *add_ACL* corresponds to the creation of assembly and initialization of colors and layers in a document before saving. |
+  
 
 @subsection testmanual_5_2 Mapping of OCCT functionality to grid names in group *bugs*
 
-| OCCT Module / Mantis category        | Toolkits      | Test grid in group bugs |
+| OCCT Module / Mantis category | Toolkits  | Test grid in group bugs |
 | :---------- | :--------- | :---------- | 
-| Application Framework        | PTKernel, TKPShape, TKCDF, TKLCAF, TKCAF, TKBinL, TKXmlL, TKShapeSchema, TKPLCAF, TKBin, TKXml, TKPCAF, FWOSPlugin, TKStdLSchema, TKStdSchema, TKTObj, TKBinTObj, TKXmlTObj | caf |
-| Draw | TKDraw, TKTopTest, TKViewerTest, TKXSDRAW, TKDCAF, TKXDEDRAW, TKTObjDRAW, TKQADraw, DRAWEXE, Problems of testing system |     draw | 
+| Application Framework | PTKernel, TKPShape, TKCDF, TKLCAF, TKCAF, TKBinL, TKXmlL, TKShapeSchema, TKPLCAF, TKBin, TKXml, TKPCAF, FWOSPlugin, TKStdLSchema, TKStdSchema, TKTObj, TKBinTObj, TKXmlTObj | caf |
+| Draw  | TKDraw, TKTopTest, TKViewerTest, TKXSDRAW, TKDCAF, TKXDEDRAW, TKTObjDRAW, TKQADraw, DRAWEXE, Problems of testing system | draw | 
 | Shape Healing | TKShHealing | heal |
-| Mesh | TKMesh, TKXMesh | mesh |
-| Data Exchange        | TKIGES        | iges |
-| Data Exchange        |       TKSTEPBase, TKSTEPAttr, TKSTEP209, TKSTEP |     step |
-| Data Exchange        |       TKSTL, TKVRML   | stlvrml |
-| Data Exchange        | TKXSBase, TKXCAF, TKXCAFSchema, TKXDEIGES, TKXDESTEP, TKXmlXCAF, TKBinXCAF | xde |
-| Foundation Classes | TKernel, TKMath | fclasses |
-| Modeling_algorithms |        TKGeomAlgo, TKTopAlgo, TKPrim, TKBO, TKBool, TKHLR, TKFillet, TKOffset, TKFeat, TKXMesh |       modalg |
-| Modeling Data | TKG2d, TKG3d, TKGeomBase, TKBRep     | moddata |
-| Visualization | TKService, TKV2d, TKV3d, TKOpenGl, TKMeshVS, TKNIS   | vis |
+| Mesh  | TKMesh, TKXMesh | mesh |
+| Data Exchange | TKIGES  | iges |
+| Data Exchange | TKSTEPBase, TKSTEPAttr, TKSTEP209, TKSTEP | step |
+| Data Exchange | TKSTL, TKVRML   | stlvrml |
+| Data Exchange | TKXSBase, TKXCAF, TKXCAFSchema, TKXDEIGES, TKXDESTEP, TKXmlXCAF, TKBinXCAF | xde |
+| Foundation Classes |  TKernel, TKMath | fclasses |
+| Modeling_algorithms | TKGeomAlgo, TKTopAlgo, TKPrim, TKBO, TKBool, TKHLR, TKFillet, TKOffset, TKFeat, TKXMesh | modalg |
+| Modeling Data | TKG2d, TKG3d, TKGeomBase, TKBRep  | moddata |
+| Visualization | TKService, TKV2d, TKV3d, TKOpenGl, TKMeshVS, TKNIS  | vis |
 
 
 @subsection testmanual_5_3 Recommended approaches to checking test results
@@ -1106,50 +1106,50 @@ This group allows  testing extended data exchange packages.
 Run command *checkshape* on the result (or intermediate) shape and make sure that *parse.rules* of the test grid or group reports bad shapes (usually recognized by word "Faulty") as error.
 
 Example
-~~~~~
+~~~~{.php}
 checkshape result
-~~~~~
+~~~~
 
 To check the number of faults in the shape command *checkfaults* can be used.
 
 Use: checkfaults shape source_shape [ref_value=0]
 
 The default syntax of *checkfaults* command:
-~~~~~
+~~~~{.php}
 checkfaults results a_1
-~~~~~
+~~~~
 
 The command will check the number of faults in the source shape (*a_1*) and compare it
 with number of faults in the resulting shape (*result*). If shape *result* contains
 more faults, you will get an error:
-~~~~~
+~~~~{.php}
 checkfaults results a_1
 Error : Number of faults is 5
-~~~~~
+~~~~
 It is possible to set the reference value for comparison (reference value is 4):
 
-~~~~~
+~~~~{.php}
 checkfaults results a_1 4
-~~~~~
+~~~~
 
 If number of faults in the resulting shape is unstable, reference value should be set to "-1".
 As a result command *checkfaults* will return the following error:
 
-~~~~~
+~~~~{.php}
 checkfaults results a_1 -1
 Error : Number of faults is UNSTABLE
-~~~~~
+~~~~
 
 @subsubsection testmanual_5_3_2 Shape tolerance
 
 The maximal tolerance of sub-shapes of each kind of the resulting shape can be extracted from output of tolerance command as follows:
 
-~~~~~
+~~~~{.php}
 set tolerance [tolerance result]
 regexp { *FACE +: +MAX=([-0-9.+eE]+)} $tolerance dummy max_face
 regexp { *EDGE +: +MAX=([-0-9.+eE]+)} $tolerance dummy max_edgee
 regexp { *VERTEX +: +MAX=([-0-9.+eE]+)} $tolerance dummy max_vertex
-~~~~~
+~~~~
 
 It is possible to use command *checkmaxtol* to check maximal tolerance of shape and compare it with reference value.
 
@@ -1162,39 +1162,39 @@ Allowed options are:
  *   <i>-multi_tol</i> -- tolerance multiplier.
 
 The default syntax of *checkmaxtol* command for comparison with the reference value:
-~~~~~
+~~~~{.php}
 checkmaxtol result -ref 0.00001
-~~~~~
+~~~~
 
 There is an opportunity to compare max tolerance of resulting shape with max tolerance of source shape.
 In the following example command *checkmaxtol* gets max tolerance among objects *a_1* and *a_2*.
 Then it chooses the maximum value between founded tolerance and value -min_tol (0.000001)
 and multiply it on the coefficient -multi_tol (i.e. 2):
 
-~~~~~
+~~~~{.php}
 checkmaxtol result -source {a_1 a_2} -min_tol 0.000001 -multi_tol 2
-~~~~~
+~~~~
 
 If the value of maximum tolerance more than founded tolerance for comparison, the command will return an error.
 
 Also, command *checkmaxtol* can be used to get max tolerance of the shape:
 
-~~~~~
+~~~~{.php}
 set maxtol [checkmaxtol result]
-~~~~~
+~~~~
 
 @subsubsection testmanual_5_3_3 Shape volume, area, or length
 
 Use command *vprops, sprops,* or *lprops* to correspondingly measure volume, area, or length of the shape produced by the test. The value can be extracted from the result of the command by *regexp*.
 
 Example:
-~~~~~
+~~~~{.php}
 # check area of shape result with 1% tolerance
 regexp {Mass +: +([-0-9.+eE]+)} [sprops result] dummy area
 if { abs($area - $expected) > 0.1 + 0.01 * abs ($area) } {
     puts "Error: The area of result shape is $area, while expected $expected"
 }
-~~~~~
+~~~~
 
 @subsubsection testmanual_5_3_4 Memory leaks
 
@@ -1204,7 +1204,7 @@ To check memory leak on a particular operation, run it in a cycle, measure the m
 The command *checktrend* (defined in *tests/bugs/begin*) can be used to analyze a sequence of memory measurements and to get a statistically based evaluation of the leak presence.
 
 Example: 
-~~~~~
+~~~~{.php}
 set listmem {}
 for {set i 1} {$i < 100} {incr i} {
     # run suspect operation 
@@ -1216,13 +1216,13 @@ for {set i 1} {$i < 100} {incr i} {
         break
     }
 }
-~~~~~
+~~~~
 
 @subsubsection testmanual_5_3_5 Visualization
 
 The following command sequence allows you to take a snapshot of the viewer, give it the name of the test case, and save in the directory indicated by Tcl variable *imagedir*. 
 
-~~~~~
+~~~~{.php}
 vinit
 vclear
 vdisplay result
@@ -1230,7 +1230,7 @@ vsetdispmode 1
 vfit
 vzfit
 vdump $imagedir/${casename}_shading.png
-~~~~~
+~~~~
 
 This image will be included in the HTML log produced by *testgrid* command and will be checked for non-regression through comparison of images by command *testdiff*.
 
@@ -1245,32 +1245,32 @@ Allowed options are:
 *   <i>-vdispmode N</i> -- sets *vdispmode* for 3d viewer (default value is 1)
 *   <i>-screenshot</i> -- makes a screenshot of already created viewer
 *   The procedure can check a property of shape (length, area or volume) and compare it with value *N*:
-       * <i>-l [N]</i>
-       * <i>-s [N]</i>
-       * <i>-v [N]</i>
-       * If the current property is equal to value *N*, the shape is marked as valid in the procedure.
-       * If value *N* is not given, the procedure will mark the shape as valid if the current property is non-zero.
+  * <i>-l [N]</i>
+  * <i>-s [N]</i>
+  * <i>-v [N]</i>
+  * If the current property is equal to value *N*, the shape is marked as valid in the procedure.
+  * If value *N* is not given, the procedure will mark the shape as valid if the current property is non-zero.
 *   <i>-with {a b c}</i> -- displays shapes *a, b* and *c* together with the shape (if the shape is valid)
 *   <i>-otherwise {d e f}</i> -- displays shapes *d, e* and *f* instead of the shape (if the shape is NOT valid)
 
 Note that is required to use either option <i> -2d </i> or option <i> -3d</i>.
 
 Examples:
-~~~~~
+~~~~{.php}
 checkview -display result -2d -path ${imagedir}/${test_image}.png
 checkview -display result -3d -path ${imagedir}/${test_image}.png
 checkview -display result_2d -2d v2d -path ${imagedir}/${test_image}.png
-~~~~~
+~~~~
 
-~~~~~
+~~~~{.php}
 box a 10 10 10
 box b 5 5 5 10 10 10
 bcut result b a
 set result_vertices [explode result v]
 checkview -display result -2d -with ${result_vertices} -otherwise { a b } -l -path ${imagedir}/${test_image}.png
-~~~~~
+~~~~
 
-~~~~~
+~~~~{.php}
 box a 10 10 10
 box b 5 5 5 10 10 10
 bcut result b a
@@ -1278,7 +1278,7 @@ vinit
 vdisplay a b
 vfit
 checkview -screenshot -3d -path ${imagedir}/${test_image}.png
-~~~~~
+~~~~
 
 @subsubsection testmanual_5_3_6 Number of free edges
 
@@ -1290,9 +1290,9 @@ Allowed options are:
  * <i>-tol N</i> -- used tolerance (default -0.01);
  * <i>-type N</i> -- used type, possible values are "closed" and "opened" (default "closed").
 
-~~~~~
+~~~~{.php}
 checkfreebounds result 13
-~~~~~
+~~~~
 
 Option <i>-tol N</i> defines tolerance for command *freebounds*, which is used within command *checkfreebounds*.
 
@@ -1301,10 +1301,10 @@ Option <i>-type N</i> is used to select the type of counted free edges: closed o
 If the number of free edges in the resulting shape is unstable, the reference value should be set to "-1".
 As a result command *checkfreebounds* will return the following error:
 
-~~~~~
+~~~~{.php}
 checkfreebounds result -1
 Error : Number of free edges is UNSTABLE
-~~~~~
+~~~~
 
 @subsubsection testmanual_5_3_7 Compare numbers
 
@@ -1312,9 +1312,9 @@ Procedure *checkreal* checks the equality of two reals with a tolerance (relativ
 
 Use: checkreal name value expected tol_abs tol_rel
 
-~~~~~
+~~~~{.php}
 checkreal "Some important value" $value 5 0.0001 0.01
-~~~~~
+~~~~
 
 @subsubsection testmanual_5_3_8 Check number of sub-shapes
 
@@ -1336,9 +1336,9 @@ Allowed options are:
       the same sub-shapes with different location as different sub-shapes.
  * <i>-m msg</i> -- prints "msg" in case of error
 
-~~~~~
+~~~~{.php}
 checknbshapes result -vertex 8 -edge 4
-~~~~~
+~~~~
 
 @subsubsection testmanual_5_3_9 Check pixel color
 
@@ -1354,9 +1354,9 @@ This procedure checks color with tolerance (5x5 area).
 
 Next example will compare color of point with coordinates x=100 y=100 with RGB color R=1 G=0 B=0.
 If colors are not equal, procedure will check the nearest ones points (5x5 area)
-~~~~~
+~~~~{.php}
 checkcolor 100 100 1 0 0
-~~~~~
+~~~~
 
 @subsubsection testmanual_5_3_10 Compute length, area and volume of input shape
 
@@ -1375,10 +1375,10 @@ Allowed options are:
 
 Options <i> -l, -s </i> and <i> -v</i> are independent and can be used in any order. Tolerance *epsilon* is the same for all options.
 
-~~~~~
+~~~~{.php}
 checkprops result -s 6265.68 
 checkprops result -s -equal FaceBrep
-~~~~~
+~~~~
 
 @subsubsection testmanual_5_3_11 Parse output dump and compare it with reference values
 
@@ -1391,9 +1391,9 @@ Allowed options are:
  * <i>-ref VALUE</i> -- list of reference values for each parameter in *NAME*; 
  * <i>-eps EPSILON</i> -- the epsilon defines relative precision of computation.
 
-~~~~~
+~~~~{.php}
 checkdump result -name {Center Axis XAxis YAxis Radii} -ref {{-70 0} {-1 -0} {-1 -0} {0 -1} {20 10}} -eps 0.01
-~~~~~
+~~~~
 
 @subsubsection testmanual_5_3_12 Compute length of input curve
 
@@ -1407,10 +1407,10 @@ Allowed options are:
  * <i>-equal CURVE</i> -- compares the length of input curves. Puts error if they are not equal;
  * <i>-notequal CURVE</i> -- compares the length of input curves. Puts error if they are equal.
 
-~~~~~
+~~~~{.php}
 checklength cp1 -l 7.278
 checklength res -l -equal ext_1
-~~~~~
+~~~~
 @subsubsection testmanual_5_3_13 Check maximum deflection, number of triangles and nodes in mesh
 
 Command *checktrinfo* can be used to to check the maximum deflection, as well as the number of nodes and triangles in mesh.
@@ -1438,33 +1438,33 @@ Note that options <i> -tri, -nod </i> and <i> -defl </i> do not work together wi
 Examples:
 
 Comparison with some reference values:
-~~~~~
+~~~~{.php}
 checktrinfo result -tri 129 -nod 131 -defl 0.01
-~~~~~
+~~~~
 
 Comparison with another mesh:
-~~~~~
+~~~~{.php}
 checktrinfo result -ref [tringo a]
-~~~~~
+~~~~
 
 Comparison of deflection with the max possible value:
-~~~~~
+~~~~{.php}
 checktrinfo result -max_defl 1
-~~~~~
+~~~~
 
 Check that the current values are not equal to zero:
-~~~~~
+~~~~{.php}
 checktrinfo result -tri -nod -defl
-~~~~~
+~~~~
 
 Check that the number of triangles and the number of nodes are not equal to some specific values:
-~~~~~
+~~~~{.php}
 checktrinfo result -tri !10 -nod !8
-~~~~~
+~~~~
 
 It is possible to compare current values with reference values with some tolerances.
 Use options <i>-tol_\* </i> for that.
-~~~~~
+~~~~{.php}
 checktrinfo result -defl 1 -tol_abs_defl 0.001
-~~~~~
+~~~~
 
index cbd67ca..b21551a 100644 (file)
@@ -49,34 +49,34 @@ Open CASCADE Test Harness or @ref occt_user_guides__test_harness "DRAW" provides
 
 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).
 
-~~~~~
+~~~~{.php}
 const char* Draw_Eval (const char *theCommandStr)
-~~~~~
+~~~~
 
 Evaluates a DRAW command or script.
 A command is passed as a string parameter.
 
-~~~~~
+~~~~{.php}
 const char* DBRep_Set (const char* theNameStr, void* theShapePtr)
-~~~~~
+~~~~
 
 Sets the specified shape as a value of DRAW interpreter variable with the given name.
 - *theNameStr* -- the DRAW interpreter variable name to set.
 - *theShapePtr* -- a pointer to *TopoDS_Shape* variable.
 
-~~~~~
+~~~~{.php}
 const char* DBRep_SetComp (const char* theNameStr, void* theListPtr)
-~~~~~
+~~~~
 
 Makes a compound from the specified list of shapes and sets it as a value of DRAW interpreter variable with the given name.
 - *theNameStr* -- the DRAW interpreter variable name to set.
 - *theListPtr* -- a pointer to *TopTools_ListOfShape* variable.
 
-~~~~~
+~~~~{.php}
 const char* DrawTrSurf_Set (const char* theNameStr, void* theHandlePtr)
 const char* DrawTrSurf_SetPnt (const char* theNameStr, void* thePntPtr)
 const char* DrawTrSurf_SetPnt2d (const char* theNameStr, void* thePnt2dPtr)
-~~~~~
+~~~~
 
 Sets the specified geometric object as a value of DRAW interpreter variable with the given name.
 - *theNameStr* -- the DRAW interpreter variable name to set.
@@ -90,27 +90,27 @@ All these functions are defined in *TKDraw* toolkit and return a string indicati
 
 The following functions are provided by *TKBRep* toolkit and can be used from debugger prompt:
 
-~~~~~
+~~~~{.php}
 const char* BRepTools_Write (const char* theFileNameStr, void* theShapePtr)
-~~~~~
+~~~~
 
 Saves the specified shape to a file with the given name.
 - *theFileNameStr* -- the name of the file where the shape is saved.
 - *theShapePtr* -- a pointer to *TopoDS_Shape* variable.
 
-~~~~~
+~~~~{.php}
 const char* BRepTools_Dump (void* theShapePtr)
 const char* BRepTools_DumpLoc (void* theShapePtr)
-~~~~~
+~~~~
 
 Dumps shape or its location to cout.
 - *theShapePtr* -- a pointer to *TopoDS_Shape* variable.
 
 The following function is provided by *TKMesh* toolkit:
 
-~~~~~
+~~~~{.php}
 const char* BRepMesh_Dump (void* theMeshHandlePtr, const char* theFileNameStr)
-~~~~~
+~~~~
 
 Stores mesh produced in parametric space to BREP file.
 - *theMeshHandlePtr* -- a pointer to *Handle(BRepMesh_DataStructureOfDelaun)* variable.
@@ -118,10 +118,10 @@ Stores mesh produced in parametric space to BREP file.
 
 The following functions are provided by *TKTopTest* toolkit:
 
-~~~~~
+~~~~{.php}
 const char* MeshTest_DrawLinks(const char* theNameStr, void* theFaceAttr)
 const char* MeshTest_DrawTriangles(const char* theNameStr, void* theFaceAttr)
-~~~~~
+~~~~
 
 Sets the edges or triangles from mesh data structure of type *Handle(BRepMesh_FaceAttribute)* as DRAW interpreter variables, assigning a unique name in the form "<theNameStr>_<index>" to each object.
 - *theNameStr* -- the prefix to use in names of objects.
@@ -129,9 +129,9 @@ Sets the edges or triangles from mesh data structure of type *Handle(BRepMesh_Fa
 
 The following additional function is provided by *TKGeomBase* toolkit:
 
-~~~~~
+~~~~{.php}
 const char* GeomTools_Dump (void* theHandlePtr)
-~~~~~
+~~~~
 
 Dump geometric object to cout.
 - *theHandlePtr* -- a pointer to the geometric variable (<i>Handle</i> to *Geom_Geometry* or *Geom2d_Curve* or descendant) to be set.
@@ -174,7 +174,7 @@ It is implemented in 'vaspect' and 'boundingbox' commands.
 
 Json output for Bnd_OBB (using command 'bounding v -obb -dumpJson'):
 
-~~~~~
+~~~~{.java}
 "Bnd_OBB": {
    "Center": {
       "gp_XYZ": [1, 2, 3]
@@ -193,7 +193,7 @@ Json output for Bnd_OBB (using command 'bounding v -obb -dumpJson'):
    "HDims[2]": 0,
    "IsAABox": 1,
 }
-~~~~~
+~~~~
 
 @section occt_debug_vstudio Using Visual Studio debugger 
 
@@ -206,18 +206,18 @@ When the execution is interrupted by a breakpoint, you can use this window to ca
 For example, assume that you are debugging a function, where local variable *TopoDS_Edge* *anEdge1* is of interest.
 The following set of commands in the Command window will save this edge to file *edge1.brep*, then put it to DRAW variable *e1* and show it maximized in the axonometric DRAW view:
 
-~~~~~
+~~~~{.php}
 >? ({,,TKBRep.dll}BRepTools_Write)("d:/edge1.brep",(void*)&anEdge1)
 0x04a2f234 "d:/edge1.brep"
 >? ({,,TKDraw.dll}DBRep_Set)("e1",(void*)&anEdge1)
 0x0369eba8 "e1"
 >? ({,,TKDraw.dll}Draw_Eval)("donly e1; axo; fit")
 0x029a48f0 ""
-~~~~~
+~~~~
 
 For convenience it is possible to define aliases to commands in this window, for instance (here ">" is prompt provided by the command window; in the Immediate window this symbol should be entered manually):
 
-~~~~~
+~~~~{.php}
 >alias deval      ? ({,,TKDraw}Draw_Eval)
 >alias dsetshape  ? ({,,TKDraw}DBRep_Set)
 >alias dsetcomp   ? ({,,TKDraw}DBRep_SetComp)
@@ -229,18 +229,18 @@ For convenience it is possible to define aliases to commands in this window, for
 >alias dumploc    ? ({,,TKBRep}BRepTools_DumpLoc)
 >alias dumpmesh   ? ({,,TKMesh}BRepMesh_Dump)
 >alias dumpgeom   ? ({,,TKGeomBase}GeomTools_Dump)
-~~~~
+~~~~
 
 Note that aliases are stored in the Visual Studio user's preferences and it is sufficient to define them once on a workstation. With these aliases, the above example can be reproduced easier (note the space symbol after alias name!):
 
-~~~~~
+~~~~{.php}
 >saveshape ("d:/edge1.brep",(void*)&anEdge1)
 0x04a2f234 "d:/edge1.brep"
 >dsetshape ("e1",(void*)&anEdge1)
 0x0369eba8 "e1"
 >deval ("donly e1; axo; fit")
 0x029a48f0 ""
-~~~~~
+~~~~
 
 Note that there is no guarantee that the call will succeed and will not affect the program execution, thus use this feature at your own risk. In particular, the commands interacting with window system (such as *axo*, *vinit*, etc.) are known to cause application crash when the program is built in 64-bit mode. To avoid this, it is recommended to prepare all necessary view windows in advance, and arrange these windows to avoid overlapping with the Visual Studio window, to ensure that they are visible during debug. 
 
@@ -252,7 +252,7 @@ In Visual Studio 2005-2010 the rules for this display are defined in file *autoe
 
 ### \[AutoExpand\] section 
 
-~~~~~
+~~~~{.cpp}
 ; Open CASCADE classes
 Standard_Transient=<,t> count=<count,d>
 Handle_Standard_Transient=<entity,x> count=<entity->count,d> <,t>
@@ -274,11 +274,11 @@ gp_Dir2d=<coord.x,g>, <coord.y,g>
 gp_Vec2d=<coord.x,g>, <coord.y,g>
 gp_Mat2d={<matrix[0][0],g>,<matrix[0][1],g>}, {<matrix[1][0],g>,<matrix[1][1],g>}
 gp_Ax1=loc={<loc.coord.x,g>, <loc.coord.y,g>, <loc.coord.z,g>} vdir={<vdir.coord.x,g>, <vdir.coord.y,g>, <vdir.coord.z,g>}
-~~~~
+~~~~
 
 ### \[Visualizer\] section
 
-~~~~~
+~~~~{.cpp}
 ; Open CASCADE classes
 
 NCollection_Handle<*> {
@@ -342,7 +342,7 @@ Handle_TCollection_HAsciiString {
              #array( expr: ((TCollection_HAsciiString*)$e.entity)->myString.mystring[$i], 
                      size: ((TCollection_HAsciiString*)$e.entity)->myString.mylength) ) )
 }
-~~~~~
+~~~~
 
 In Visual Studio 2012 and later, visualizers can be put in a separate file in subdirectory *Visualizers*. See file *occt.natvis* for example.
 
@@ -403,7 +403,10 @@ Example of configuration steps for Ubuntu:
 
 7. Run DRAW and perform tests as usual, keeping in mind that running with sanitizer is much heavier than normal build:
 > ./draw.sh relwithdeb  <br>
-> Draw[]> testgrid -parallel 0
+
+~~~~{.php}
+Draw[]> testgrid -parallel 0
+~~~~
 
 Note that when running tests under sanitizers, behavior may be different.
 Known problems (as of CLang 6.0) are:
index 4d5cc2c..c32ef17 100644 (file)
@@ -380,7 +380,7 @@ https://www.opencascade.com/content/3rd-party-components
 | Component | Requirement |
 | --------- | ----------- |
 | Minimum memory    | 512 MB, 1 GB recommended |
-| Free disk space (complete installation) | 600 MB approx. |
+| Free disk space (complete installation) | 1,5 GB approx. |
 
 On desktop, 3D viewer for optimal performance requires graphics processing unit (GPU) supporting OpenGL 3.3 or above. 
 Ray tracing requires OpenGL 4.0+ or OpenGL 3.3+ with *GL_ARB_texture_buffer_object_rgb32* extension.
index f267d96..57cf5fb 100644 (file)
@@ -128,7 +128,7 @@ ad696002-5b34-11d1-b5ba-00a0c9064368.Location: PAppStdPlugin
  
 ## Implementation of Attribute Transformation in a HXX file
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~
 \#include <TDF_Attribute.hxx>
 
 \#include <gp_Ax3.hxx>
@@ -223,11 +223,11 @@ private:
   gp_Pnt myFirstPoint;
   gp_Pnt mySecondPoint;
 }; 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 ## Implementation of Attribute Transformation in a CPP file
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
 \#include <MyPackage_Transformation.hxx> 
 
 //======================================================================= 
@@ -526,7 +526,7 @@ Standard_OStream& MyPackage_Transformation::Dump(Standard_OStream& anOS) const
 MyPackage_Transformation::MyPackage_Transformation():myType(gp_Identity){ 
 
 }
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 ##  Implementation of typical actions with standard OCAF attributes.
 
index 12576ab..dec2b81 100644 (file)
@@ -160,7 +160,7 @@ drivers for a function  driver table with the help of *TFunction_DriverTable* cl
 
   This is an example of the code for iteration and execution of functions.  
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
 
     // The scope of functions is  defined.  
     Handle(TFunction_Scope) scope = TFunction_Scope::Set( anyLabel );  
@@ -200,14 +200,14 @@ drivers for a function  driver table with the help of *TFunction_DriverTable* cl
       } // end of iteration of current functions  
     } // end of iteration of  functions.
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 ### Example 2: Cylinder function driver
 
   This is an example of the code for a cylinder function driver. To make the things clearer, the methods 
 <i>\::Arguments()</i>  and <i>\::Results()</i>  from the base class are also mentioned.   
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
 
     // A virtual method  ::Arguments() returns a list of arguments of the function.  
     CylinderDriver::Arguments( TDF_LabelList&amp; args )  
@@ -283,4 +283,4 @@ drivers for a function  driver table with the help of *TFunction_DriverTable* cl
        
       return 0;
     }
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
index 96de5fe..1d2fac6 100644 (file)
@@ -811,7 +811,7 @@ The following example illustrates how to use the GF algorithm:
 
 #### Usage of the GF algorithm on C++ level
 
-~~~~
+~~~~{.cpp}
 BOPAlgo_Builder aBuilder;
 // Setting arguments
 TopTools_ListOfShape aLSObjects = …; // Objects
@@ -865,7 +865,7 @@ const TopoDS_Shape& aResult = aBuilder.Shape();
 
 #### Usage of the GF algorithm on Tcl level
 
-~~~~
+~~~~{.cpp}
 # prepare the arguments
 box b1 10 10 10 
 box b2 3 4 5 10 10 10 
@@ -1199,7 +1199,7 @@ It is based on the General Fuse  algorithm, thus all options of the General Fuse
 @subsubsection specification__boolean_8_3_1 API
 
 On the low level the Splitter algorithm is implemented in class *BOPAlgo_Splitter*. The usage of this algorithm looks as follows:
-~~~~~
+~~~~{.cpp}
 BOPAlgo_Splitter aSplitter;
 // Setting arguments and tools
 TopTools_ListOfShape aLSObjects = …; // Objects
@@ -1218,12 +1218,12 @@ if (aSplitter.HasErrors()) { //check error status
 }
 //
 const TopoDS_Shape& aResult = aSplitter.Shape(); // result of the operation
-~~~~~
+~~~~
 
 @subsubsection specification__boolean_8_3_2 DRAW
 
 The command *bsplit* implements the Splitter algorithm in DRAW. Similarly to the *bbuild* command for the General Fuse algorithm, the *bsplit* command should be used after the Pave Filler is filled.
-~~~~~
+~~~~{.cpp}
 # s1 s2 s3 - objects
 # t1 t2 t3 - tools
 bclearobjects
@@ -1232,7 +1232,7 @@ baddobjects s1 s2 s3
 baddtools t1 t2 t3
 bfillds
 bsplit result
-~~~~~
+~~~~
 
 @subsection specification__boolean_8_4 Examples
 
@@ -1240,7 +1240,7 @@ bsplit result
 
 Splitting a face by the set of edges:
 
-~~~~
+~~~~{.cpp}
 # draw script for reproducing
 bclearobjects
 bcleartools
@@ -1286,7 +1286,7 @@ bsplit result
 
 Splitting a plate by the set of cylinders:
 
-~~~~
+~~~~{.cpp}
 # draw script for reproducing:
 bclearobjects
 bcleartools
@@ -2182,7 +2182,7 @@ This option is useful e.g. for building a solid from the faces of one shell or f
 
 #### C++ Level
 The usage of the algorithm on the API level:
-~~~~
+~~~~{.cpp}
 BOPAlgo_MakerVolume aMV;
 // Set the arguments
 TopTools_ListOfShape aLS = …; // arguments
@@ -2206,7 +2206,7 @@ const TopoDS_Shape& aResult = aMV.Shape(); // result of the operation
 
 #### Tcl Level
 To use the algorithm in Draw the command mkvolume has been implemented. The usage of this command is following:
-~~~~
+~~~~{.php}
 Usage: mkvolume r b1 b2 ... [-c] [-ni] [-ai]
 Options:
 -c - use this option to have input compounds considered as set of separate arguments (allows passing multiple arguments as one compound);
@@ -2309,7 +2309,7 @@ aResult = aCBuilder.Shape(); // the result
 #### DRAW usage
 
 The following set of new commands has been implemented to run the algorithm in DRAW Test Harness:
-~~~~
+~~~~{.php}
 bcbuild          : Initialization of the Cells Builder. Use: *bcbuild r*
 bcadd            : Add parts to result. Use: *bcadd r s1 (0,1) s2 (0,1) ... [-m material [-u]]*
 bcaddall         : Add all parts to result. Use: *bcaddall r [-m material [-u]]*
@@ -2320,7 +2320,7 @@ bcmakecontainers : Make containers from the parts added to result. Use: *bcmakec
 ~~~~
 
 Here is the example of the algorithm use on the DRAW level:
-~~~~
+~~~~{.php}
 psphere s1 15
 psphere s2 15
 psphere s3 15
@@ -2343,7 +2343,7 @@ bcremoveint res
 @subsection specification__boolean_10c_Cells_2 Examples
 
 The following simple example illustrates the possibilities of the algorithm working on a cylinder and a sphere intersected by a plane:
-~~~~
+~~~~{.php}
 pcylinder c 10 30 
 psphere s 15
 ttranslate s 0 0 30
@@ -2353,7 +2353,7 @@ mkface f p -25 30 -17 17
 
 @figure{/specification/boolean_operations/images/cells_algorithm_001.png,"Arguments",160} 
 
-~~~~
+~~~~{.php}
 bclearobjects
 bcleartools
 baddobjects c s f
@@ -2363,7 +2363,7 @@ bcbuild r
 
 #### 1. Common for all arguments
 
-~~~~
+~~~~{.php}
 bcremoveall
 bcadd res c 1 s 1 f 1
 ~~~~
@@ -2372,7 +2372,7 @@ bcadd res c 1 s 1 f 1
 
 #### 2. Common between cylinder and face
 
-~~~~
+~~~~{.php}
 bcremoveall
 bcadd res f 1 c 1
 ~~~~
@@ -2381,7 +2381,7 @@ bcadd res f 1 c 1
 
 #### 3. Common between cylinder and sphere
 
-~~~~
+~~~~{.php}
 bcremoveall
 bcadd res c 1 s 1
 ~~~~
@@ -2390,7 +2390,7 @@ bcadd res c 1 s 1
 
 #### 4. Fuse of cylinder and sphere
 
-~~~~
+~~~~{.php}
 bcremoveall
 bcadd res c 1 -m 1
 bcadd res s 1 -m 1
@@ -2401,7 +2401,7 @@ bcremoveint res
 
 #### 5. Parts of the face inside solids - FUSE(COMMON(f, c), COMMON(f, s))
 
-~~~~
+~~~~{.php}
 bcremoveall
 bcadd res f 1 s 1 -m 1
 bcadd res f 1 c 1 -m 1
@@ -2409,7 +2409,7 @@ bcadd res f 1 c 1 -m 1
 
 @figure{/specification/boolean_operations/images/cells_algorithm_006_1.png,"Parts of the face inside solids",160} 
 
-~~~~
+~~~~{.php}
 bcremoveint res
 ~~~~
 
@@ -2417,7 +2417,7 @@ bcremoveint res
 
 #### 6. Part of the face outside solids
 
-~~~~
+~~~~{.php}
 bcremoveall
 bcadd res f 1 c 0 s 0
 ~~~~
@@ -2426,7 +2426,7 @@ bcadd res f 1 c 0 s 0
 
 #### 7. Fuse operation (impossible using standard Boolean Fuse operation)
 
-~~~~
+~~~~{.php}
 bcremoveall
 bcadd res c 1 -m 1
 bcadd res s 1 -m 1
@@ -2788,7 +2788,7 @@ For setting the Gluing options in DRAW it is necessary to call the <i>bglue</i>
 * 1 - for partial coincidence;
 * 2 - for full coincidence
 
-~~~~
+~~~~{.php}
 bglue 1
 ~~~~
 
@@ -2836,7 +2836,7 @@ To enable the safe processing mode for the operation in DRAW, it is necessary to
 * 0 - default value, the safe mode is switched off;
 * 1 - the safe mode will be switched on.
 
-~~~~
+~~~~{.php}
 bnondestructive 1
 ~~~~
 
@@ -2867,7 +2867,7 @@ To enable/disable the classification of the solids in DRAW, it is necessary to c
 * 0 - disabling the classification;
 * 1 - default value, enabling the classification.
 
-~~~~
+~~~~{.php}
 bcheckinverted 0
 ~~~~
 
@@ -2893,7 +2893,7 @@ aGF.SetUseOBB(Standard_True);
 To enable/disable the usage of OBB in the operation in DRAW it is necessary to call the *buseobb* command with the appropriate value:
 * 0 - disabling the usage of OBB;
 * 1 - enabling the usage of OBB.
-~~~~
+~~~~{.php}
 buseobb 1
 ~~~~
 
@@ -2919,7 +2919,7 @@ Note that messages corresponding to errors and warnings are defined in resource
 These messages can be localized; for that put translated version to separate file and load it in the application by call to *Message_MsgFile::Load()* .
 
 Here is the example of how to use this system:
-~~~~~
+~~~~{.php}
 BOPAlgo_PaveFiller aPF;
 aPF.SetArguments(...);
 aPF.Perform();
@@ -2934,12 +2934,12 @@ if (aPF.HasErrors()) {
   }
   ...
 }
-~~~~~
+~~~~
 
 DRAW commands executing Boolean operations output errors and warnings generated by these operations in textual form.
 Additional option allows saving shapes for which warnings have been generated, as DRAW variables. 
 To activate this option, run command *bdrawwarnshapes* with argument 1 (or with 0 to deactivate):
-~~~~
+~~~~{.php}
 bdrawwarnshapes 1
 ~~~~
 
@@ -2978,7 +2978,7 @@ But if the faces are fully coinciding, the result must be empty, and both faces
 
 Example of the overlapping faces:
 
-~~~~
+~~~~{.php}
 plane p 0 0 0 0 0 1
 mkface f1 p -10 10 -10 10
 mkface f2 p 0 20 -10 10
@@ -3005,7 +3005,7 @@ Thus, each of the input edges will be Modified into its two splits.
 But in the CUT operation on the same edges, the tool edge will be Deleted from the result and, thus, will not have any Modified shapes.
 
 Example of the intersecting edges:
-~~~~
+~~~~{.php}
 line l1 0 0 0 1 0 0
 mkedge e1 l1 -10 10
 
@@ -3051,7 +3051,7 @@ Two intersecting edges will both have the intersection vertices Generated from t
 
 As for the operation with intersecting faces, consider the following example:
 
-~~~~
+~~~~{.php}
 plane p1 0 0 0 0 0 1
 mkface f1 p1 -10 10 -10 10
 
@@ -3115,7 +3115,7 @@ For controlling this possibility in DRAW the command **bsimplify** has been impl
 
 Here is the simple example of simplification of the result of Fuse operation of two boxes:
 
-~~~~
+~~~~{.php}
 bsimplify -f 1
 
 box b1 10 10 15
@@ -3173,7 +3173,7 @@ The following example illustrates how to use General Fuse operator:
 
 #### C++ Level
 
-~~~~
+~~~~{.cpp}
 #include <TopoDS_Shape.hxx>
 #include <TopTools_ListOfShape.hxx>
 #include <BRepAlgoAPI_BuilderAlgo.hxx>
@@ -3205,7 +3205,7 @@ The following example illustrates how to use General Fuse operator:
 
 #### Tcl Level
 
-~~~~
+~~~~{.php}
 # prepare the arguments
 box b1 10 10 10 
 box b2 3 4 5 10 10 10 
@@ -3231,7 +3231,7 @@ The following example illustrates how to use the Splitter operator:
 
 #### C++ Level
 
-~~~~
+~~~~{.cpp}
 #include <TopoDS_Shape.hxx>
 #include <TopTools_ListOfShape.hxx>
 #include <BRepAlgoAPI_Splitter.hxx>
@@ -3265,7 +3265,7 @@ const TopoDS_Shape& aResult = aSplitter.Shape();
 
 #### Tcl Level
 
-~~~~
+~~~~{.php}
 # prepare the arguments
 # objects
 box b1 10 10 10 
@@ -3297,7 +3297,7 @@ The following example illustrates how to use Common operation:
 
 #### C++ Level
 
-~~~~
+~~~~{.cpp}
 #include <TopoDS_Shape.hxx>
 #include <TopTools_ListOfShape.hxx>
 #include < BRepAlgoAPI_Common.hxx>
@@ -3336,7 +3336,7 @@ The following example illustrates how to use Common operation:
 
 #### Tcl Level
 
-~~~~
+~~~~{.php}
 # prepare the arguments
 box b1 10 10 10 
 box b2 7 0 4 10 10 10 
@@ -3364,7 +3364,7 @@ The following example illustrates how to use Fuse operation:
 
 #### C++ Level
 
-~~~~
+~~~~{.cpp}
 #include <TopoDS_Shape.hxx>
 #include <TopTools_ListOfShape.hxx>
 #include < BRepAlgoAPI_Fuse.hxx>
@@ -3403,7 +3403,7 @@ The following example illustrates how to use Fuse operation:
 
 #### Tcl Level
 
-~~~~
+~~~~{.php}
 # prepare the arguments
 box b1 10 10 10 
 box b2 7 0 4 10 10 10 
@@ -3431,7 +3431,7 @@ The following example illustrates how to use Cut operation:
 
 #### C++ Level
 
-~~~~
+~~~~{.cpp}
 #include <TopoDS_Shape.hxx>
 #include <TopTools_ListOfShape.hxx>
 #include < BRepAlgoAPI_Cut.hxx>
@@ -3470,7 +3470,7 @@ The following example illustrates how to use Cut operation:
 
 #### Tcl Level
 
-~~~~
+~~~~{.php}
 # prepare the arguments
 box b1 10 10 10 
 box b2 7 0 4 10 10 10 
@@ -3499,7 +3499,7 @@ The following example illustrates how to use Section operation:
 
 #### C++ Level
 
-~~~~
+~~~~{.cpp}
 #include <TopoDS_Shape.hxx>
 #include <TopTools_ListOfShape.hxx>
 #include < BRepAlgoAPI_Section.hxx>
@@ -3538,7 +3538,7 @@ The following example illustrates how to use Section operation:
 
 #### Tcl Level
 
-~~~~
+~~~~{.php}
 # prepare the arguments
 box b1 10 10 10 
 box b2 3 4 5 10 10 10 
index 767a59d..4565bb2 100644 (file)
@@ -35,12 +35,12 @@ Each of these methods has two arguments:
 
 The following sample code reads a shape from ASCII file and writes it to a binary one:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
   TopoDS_Shape aShape;
   if (BRepTools::Read (aShape, "source_file.txt")) {
     BinTools::Write (aShape, "result_file.bin");
   }
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
  
 @section specification__brep_format_3 Format Common Structure
  
@@ -250,7 +250,7 @@ The example record is interpreted as a line which  passes through a point *P*=(1
  
 **BNF-like Definition**
  
-~~~~
+~~~~{.cpp}
     <3D curve record 2> = "2" <_> <3D circle center> <_> <3D circle N> <_> <3D circle Dx> <_> <3D circle Dy> <_> <3D circle radius> <_\n>;  
      
     <3D circle center> = <3D point>;  
@@ -283,7 +283,7 @@ The  example record is interpreted as a circle which has its center *P*=(1, 2, 3
  
 **BNF-like Definition**
 
-~~~~
+~~~~{.cpp}
     <3D curve record 3> = "3" <_> <3D ellipse center> <_> <3D ellipse N> <_> <3D ellipse Dmaj> <_> <3D ellipse Dmin> <_> <3D ellipse Rmaj> <_> <3D ellipse Rmin> <_\n>;  
      
     <3D ellipse center> = <3D point>;  
@@ -318,7 +318,7 @@ The  example record is interpreted as an ellipse which has its center *P*=(1, 2,
  
 **BNF-like Definition**  
 
-~~~~
+~~~~{.cpp}
     <3D curve record 4> = "4" <_> <3D parabola origin> <_> <3D parabola N> <_> <3D parabola Dx> <_> <3D parabola Dy> <_> <3D parabola focal length> <_\n>;  
      
     <3D parabola origin> = <3D point>;  
@@ -352,7 +352,7 @@ The  example record is interpreted as a parabola in plane which passes through a
  
 **BNF-like Definition**  
 
-~~~~
+~~~~{.cpp}
     <3D curve record 5> = "5" <_> <3D hyperbola origin> <_> <3D hyperbola N> <_> <3D hyperbola Dx> <_> <3D hyperbola Dy> <_> <3D hyperbola Kx> <_> <3D hyperbola Ky> <_\n>;  
      
     <3D hyperbola origin> = <3D point>;  
@@ -428,7 +428,7 @@ The example record is interpreted as a Bezier curve with a rational flag *r*=1,
  
 **BNF-like Definition**
 
-~~~~
+~~~~{.cpp}
        <3D curve record 7> = "7" <_> <3D B-spline rational flag> <_> "0" <_> <3D B-spline degree> <_> 
        <3D B-spline pole count> <_> <3D B-spline multiplicity knot count> <3D B-spline weight poles> 
        <_\n> <3D B-spline multiplicity knots> <_\n>;
@@ -492,7 +492,7 @@ The example record is interpreted as a B-spline curve  with a rational flag *r*=
  
 **BNF-like Definition**  
 
-~~~~
+~~~~{.cpp}
        <3D curve record 8> = "8" <_> <3D trimmed curve u min> <_> <3D trimmed curve u max> <_\n> <3D curve record>;
 
        <3D trimmed curve u min> = <real>;
@@ -764,7 +764,7 @@ where @f$ V(v)=(5,2,0)+4 \cdot (cos(v) \cdot (1,0,0)+sin(v) \cdot (0,1,0)), V_{D
  
 **BNF-like Definition**
 
-~~~~
+~~~~{.cpp}
        <surface record 8> = "8" <_> <Bezier surface u rational flag> <_> <Bezier surface v rational flag> <_> <Bezier surface u degree> <_> <Bezier surface v degree> <_> 
        <Bezier surface weight poles>;
 
@@ -1076,7 +1076,7 @@ The example record is interpreted as a line which  passes through a point *P*=(3
  
 **BNF-like Definition**
 
-~~~~
+~~~~{.cpp}
        <2D curve record 2> = "2" <_> <2D circle center> <_> <2D circle Dx> <_> <2D circle Dy> <_> <2D circle radius> <_\n>;
 
        <2D circle center> = <2D point>;
@@ -1247,7 +1247,7 @@ The example record is interpreted as a Bezier curve  with a rational flag *r*=1,
  
 **BNF-like Definition**
 
-~~~~
+~~~~{.cpp}
        <2D curve record 7> = "7" <_> <2D B-spline rational flag> <_> "0" <_> <2D B-spline degree> <_> <2D B-spline pole count> <_> <2D B-spline multiplicity knot count> <2D B-spline weight poles> <_\n> <2D B-spline multiplicity knots> <_\n>;
 
        <2D B-spline rational flag> = <flag>;
@@ -1430,7 +1430,7 @@ The example record describes a polyline from *m*=2 nodes with a parameter prese
  
 **BNF-like Definition**
 
-~~~~
+~~~~{.cpp}
        <triangulations> = <triangulation header> <_\n> <triangulation records>;
 
        <triangulation header> = "Triangulations" <_> <triangulation count>;
@@ -1785,7 +1785,7 @@ The usage of \<vertex data representation u  parameter\> *U* is  described belo
  
 **BNF-like Definition**
 
-~~~~
+~~~~{.cpp}
        <edge data> = <_> <edge data tolerance> <_> <edge data same parameter flag> <_> edge data same range flag> <_> <edge data degenerated flag> <_\n> <edge data representations>;
 
        <edge data tolerance> = <real>;
@@ -1855,7 +1855,7 @@ Flags \<edge data same parameter flag\>, \<edge data same range flag\> and \<edg
  
 **BNF-like Definition**
 
-~~~~
+~~~~{.cpp}
        <face data> = <face data natural restriction flag> <_> <face data tolerance> <_> <surface number> <_> <location number> <\n> ["2" <_> <triangulation number>];
 
        <face data natural restriction flag> = <flag>;
index 5447e2f..7858488 100644 (file)
@@ -66,19 +66,19 @@ To choose the best class for this application, consider the following:
 Since all the points you will define are only used to create the profile's curves, an object with a limited lifetime will do. Choose the *gp_Pnt* class.
 To instantiate a *gp_Pnt* object, just specify the X, Y, and Z coordinates of the points in the global Cartesian coordinate system:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     gp_Pnt aPnt1(-myWidth / 2., 0, 0);
     gp_Pnt aPnt2(-myWidth / 2., -myThickness / 4., 0);
     gp_Pnt aPnt3(0, -myThickness / 2., 0);
     gp_Pnt aPnt4(myWidth / 2., -myThickness / 4., 0);
     gp_Pnt aPnt5(myWidth / 2., 0, 0);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 Once your objects are instantiated, you can use methods provided by the class to access and modify its data. For example, to get the X coordinate of a point:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
 Standard_Real xValue1 = aPnt1.X();
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 @subsection OCCT_TUTORIAL_SUB2_2 Profile: Defining the Geometry
 With the help of the previously defined points, you can compute a part of the bottle's profile geometry. As shown in the figure below, it will consist of two segments and one arc.
@@ -95,15 +95,15 @@ This is because the *GC* provides two algorithm classes which are exactly what i
 
 Both of these classes return a *Geom_TrimmedCurve* manipulated by handle. This entity represents a base curve (line or circle, in our case), limited between two of its parameter values. For example, circle C is parameterized between 0 and 2PI. If you need to create a quarter of a circle, you create a *Geom_TrimmedCurve* on C limited between 0 and M_PI/2.
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     Handle(Geom_TrimmedCurve) aArcOfCircle = GC_MakeArcOfCircle(aPnt2,aPnt3,aPnt4);
     Handle(Geom_TrimmedCurve) aSegment1    = GC_MakeSegment(aPnt1, aPnt2);
     Handle(Geom_TrimmedCurve) aSegment2    = GC_MakeSegment(aPnt4, aPnt5);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 All *GC* classes provide a casting method to obtain a result automatically with a function-like call. Note that this method will raise an exception if construction has failed. To handle possible errors more explicitly, you may use the *IsDone* and *Value* methods. For example:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     GC_MakeSegment mkSeg (aPnt1, aPnt2);
     Handle(Geom_TrimmedCurve) aSegment1;
     if(mkSegment.IsDone()){
@@ -112,7 +112,7 @@ All *GC* classes provide a casting method to obtain a result automatically with
     else {
     // handle error
     }
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 
 @subsection OCCT_TUTORIAL_SUB2_3 Profile: Defining the Topology
@@ -144,18 +144,18 @@ Referring to the previous table, to build the profile, you will create:
 However, the *TopoDS* package provides only the data structure of the topological entities. Algorithm classes available to compute standard topological objects can be found in the *BRepBuilderAPI* package.
 To create an edge, you use the BRepBuilderAPI_MakeEdge class with the previously computed curves:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     TopoDS_Edge aEdge1 = BRepBuilderAPI_MakeEdge(aSegment1);
     TopoDS_Edge aEdge2 = BRepBuilderAPI_MakeEdge(aArcOfCircle);
     TopoDS_Edge aEdge3 = BRepBuilderAPI_MakeEdge(aSegment2);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 In Open CASCADE Technology, you can create edges in several ways. One possibility is to create an edge directly from two points, in which case the underlying geometry of this edge is a line, bounded by two vertices being automatically computed from the two input points. For example, aEdge1 and aEdge3 could have been computed in a simpler way:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     TopoDS_Edge aEdge1 = BRepBuilderAPI_MakeEdge(aPnt1, aPnt3);
     TopoDS_Edge aEdge2 = BRepBuilderAPI_MakeEdge(aPnt4, aPnt5);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 To connect the edges, you need to create a wire with the *BRepBuilderAPI_MakeWire* class. There are two ways of building a wire with this class:
 
@@ -164,9 +164,9 @@ To connect the edges, you need to create a wire with the *BRepBuilderAPI_MakeWir
 
 When building a wire from less than four edges, as in the present case, you can use the constructor directly as follows:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     TopoDS_Wire aWire = BRepBuilderAPI_MakeWire(aEdge1, aEdge2, aEdge3);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 
 @subsection OCCT_TUTORIAL_SUB2_4 Profile: Completing the Profile
@@ -186,17 +186,17 @@ The first way is to define it from scratch, using its geometric definition:
   * X axis is located at (0, 0, 0) - use the *gp_Pnt* class.
   * X axis direction is (1, 0, 0) - use the *gp_Dir* class. A *gp_Dir* instance is created out of its X, Y and Z coordinates.
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     gp_Pnt aOrigin(0, 0, 0);
     gp_Dir xDir(1, 0, 0);
     gp_Ax1 xAxis(aOrigin, xDir);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 The second and simplest way is to use the geometric constants defined in the gp package (origin, main directions and axis of the global coordinate system). To get the X axis, just call the *gp::OX* method:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     gp_Ax1 xAxis = gp::OX();
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 As previously explained, the 3D geometric transformation is defined with the *gp_Trsf* class. There are two different ways to use this class:
 
@@ -205,43 +205,43 @@ As previously explained, the 3D geometric transformation is defined with the *gp
     
 Since the simplest approach is always the best one, you should use the SetMirror method with the axis as the center of symmetry.
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     gp_Trsf aTrsf;
     aTrsf.SetMirror(xAxis);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 You now have all necessary data to apply the transformation with the BRepBuilderAPI_Transform class by specifying:
 
   * the shape on which the transformation must be applied.
   * the geometric transformation
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     BRepBuilderAPI_Transform aBRepTrsf(aWire, aTrsf);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 *BRepBuilderAPI_Transform* does not modify the nature of the shape: the result of the reflected wire remains a wire. But the function-like call or the *BRepBuilderAPI_Transform::Shape* method returns a *TopoDS_Shape* object:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     TopoDS_Shape aMirroredShape = aBRepTrsf.Shape();
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 What you need is a method to consider the resulting reflected shape as a wire. The *TopoDS* global functions provide this kind of service by casting a shape into its real type. To cast the transformed wire, use the *TopoDS::Wire* method.
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     TopoDS_Wire aMirroredWire = TopoDS::Wire(aMirroredShape);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 The bottle's profile is almost finished. You have created two wires: *aWire* and *aMirroredWire*. You need to concatenate them to compute a single shape. To do this, you use the *BRepBuilderAPI_MakeWire* class as follows:
 
   * create an instance of *BRepBuilderAPI_MakeWire*.
   * add all edges of the two wires by using the *Add* method on this object.
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     BRepBuilderAPI_MakeWire mkWire;
     mkWire.Add(aWire);
     mkWire.Add(aMirroredWire);
     TopoDS_Wire myWireProfile = mkWire.Wire();
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 
 @section sec3 Building the Body
@@ -266,9 +266,9 @@ Your current profile is a wire. Referring to the Shape/Generates table, you need
 To create a face, use the *BRepBuilderAPI_MakeFace* class. As previously explained, a face is a part of a surface bounded by a closed wire. Generally, *BRepBuilderAPI_MakeFace* computes a face out of a surface and one or more wires.
 When the wire lies on a plane, the surface is automatically computed.
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     TopoDS_Face myFaceProfile = BRepBuilderAPI_MakeFace(myWireProfile);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 The *BRepPrimAPI* package provides all the classes to create topological primitive constructions: boxes, cones, cylinders, spheres, etc. Among them is the *BRepPrimAPI_MakePrism* class. As specified above, the prism is defined by:
 
@@ -277,15 +277,15 @@ The *BRepPrimAPI* package provides all the classes to create topological primiti
 
 You want the solid to be finite, swept along the Z axis and to be myHeight height. The vector, defined with the *gp_Vec* class on its X, Y and Z coordinates, is:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     gp_Vec aPrismVec(0, 0, myHeight);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 All the necessary data to create the main body of your bottle is now available. Just apply the *BRepPrimAPI_MakePrism* class to compute the solid:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     TopoDS_Shape myBody = BRepPrimAPI_MakePrism(myFaceProfile, aPrismVec);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 
 @subsection OCCT_TUTORIAL_SUB3_2 Applying Fillets
@@ -305,9 +305,9 @@ To apply fillets on the edges of a shape, you use the *BRepFilletAPI_MakeFillet*
   * Add the fillet descriptions (an edge and a radius) using the *Add* method (you can add as many edges as you need).
   * Ask for the resulting filleted shape with the *Shape* method.
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
 BRepFilletAPI_MakeFillet mkFillet(myBody);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 To add the fillet description, you need to know the edges belonging to your shape. The best solution is to explore your solid to retrieve its edges. This kind of functionality is provided with the *TopExp_Explorer* class, which explores the data structure described in a *TopoDS_Shape* and extracts the sub-shapes you specifically need. 
 Generally, this explorer is created by providing the following information:
@@ -315,9 +315,9 @@ Generally, this explorer is created by providing the following information:
   * the shape to explore
   * the type of sub-shapes to be found. This information is given with the *TopAbs_ShapeEnum* enumeration.
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
 TopExp_Explorer anEdgeExplorer(myBody, TopAbs_EDGE);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 An explorer is usually applied in a loop by using its three main methods:
 
@@ -326,26 +326,26 @@ An explorer is usually applied in a loop by using its three main methods:
   * *Next()* to move onto the next sub-shape to explore.
 
   
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     while(anEdgeExplorer.More()){
         TopoDS_Edge anEdge = TopoDS::Edge(anEdgeExplorer.Current());
         //Add edge to fillet algorithm
         ...
         anEdgeExplorer.Next();
     }
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 In the explorer loop, you have found all the edges of the bottle shape. Each one must then be added in the *BRepFilletAPI_MakeFillet* instance with the *Add()* method. Do not forget to specify the radius of the fillet along with it.
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     mkFillet.Add(myThickness / 12., anEdge);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 Once this is done, you perform the last step of the procedure by asking for the filleted shape.
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     myBody = mkFillet.Shape();
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 
 @subsection OCCT_TUTORIAL_SUB3_3 Adding the Neck
@@ -358,31 +358,31 @@ To add a neck to the bottle, you will create a cylinder and fuse it to the body.
 To position the cylinder, you need to define a coordinate system with the *gp_Ax2* class defining a right-handed coordinate system from a point and two directions - the main (Z) axis direction and the X direction (the Y direction is computed from these two).
 To align the neck with the center of the top face, being in the global coordinate system (0, 0, *myHeight*), with its normal on the global Z axis, your local coordinate system can be defined as follows:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     gp_Pnt neckLocation(0, 0, myHeight);
     gp_Dir neckAxis = gp::DZ();
     gp_Ax2 neckAx2(neckLocation, neckAxis);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 To create a cylinder, use another class from the primitives construction package: the *BRepPrimAPI_MakeCylinder* class. The information you must provide is:
 
   * the coordinate system where the cylinder will be located;
   * the radius and height.
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     Standard_Real myNeckRadius = myThickness / 4.;
     Standard_Real myNeckHeight = myHeight / 10;
     BRepPrimAPI_MakeCylinder MKCylinder(neckAx2, myNeckRadius, myNeckHeight);
     TopoDS_Shape myNeck = MKCylinder.Shape();
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 You now have two separate parts: a main body and a neck that you need to fuse together.
 The *BRepAlgoAPI* package provides services to perform Boolean operations between shapes, and especially: *common* (Boolean intersection), *cut* (Boolean subtraction) and *fuse* (Boolean union).
 Use *BRepAlgoAPI_Fuse* to fuse the two shapes:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     myBody = BRepAlgoAPI_Fuse(myBody, myNeck);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 
 @subsection OCCT_TUTORIAL_SUB3_4 Creating a Hollowed Solid
@@ -411,11 +411,11 @@ The challenging part in this procedure is to find the face to remove from your s
     
 To find the face with such characteristics, you will once again use an explorer to iterate on all the bottle's faces to find the appropriate one.
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     for(TopExp_Explorer aFaceExplorer(myBody, TopAbs_FACE) ; aFaceExplorer.More() ; aFaceExplorer.Next()){
         TopoDS_Face aFace = TopoDS::Face(aFaceExplorer.Current());
     }
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 For each detected face, you need to access the geometric properties of the shape: use the *BRep_Tool* class for that. The most commonly used methods of this class are:
     
@@ -423,9 +423,9 @@ For each detected face, you need to access the geometric properties of the shape
   * *Curve* to access the 3D curve of an edge;
   * *Point* to access the 3D point of a vertex.
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
 Handle(Geom_Surface) aSurface = BRep_Tool::Surface(aFace);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 As you can see, the *BRep_Tool::Surface* method returns an instance of the *Geom_Surface* class manipulated by handle. However, the *Geom_Surface* class does not provide information about the real type of the object *aSurface*, which could be an instance of *Geom_Plane*, *Geom_CylindricalSurface*, etc.
 All objects manipulated by handle, like *Geom_Surface*, inherit from the *Standard_Transient* class which provides two very useful methods concerning types:
@@ -436,52 +436,52 @@ All objects manipulated by handle, like *Geom_Surface*, inherit from the *Standa
 DynamicType returns the real type of the object, but you need to compare it with the existing known types to determine whether *aSurface* is a plane, a cylindrical surface or some other type.
 To compare a given type with the type you seek, use the *STANDARD_TYPE* macro, which returns the type of a class:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     if(aSurface->DynamicType() == STANDARD_TYPE(Geom_Plane)){
     //
     }
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 If this comparison is true, you know that the *aSurface* real type is *Geom_Plane*. You can then convert it from *Geom_Surface* to *Geom_Plane* by using the *DownCast()* method provided by each class inheriting *Standard_Transient*. As its name implies, this static method is used to downcast objects to a given type with the following syntax:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     Handle(Geom_Plane) aPlane = Handle(Geom_Plane)::DownCast(aSurface);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 Remember that the goal of all these conversions is to find the highest face of the bottle lying on a plane. Suppose that you have these two global variables:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     TopoDS_Face faceToRemove;
     Standard_Real zMax = -1;
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 You can easily find the plane whose origin is the biggest in Z knowing that the location of the plane is given with the *Geom_Plane::Location* method. For example:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     gp_Pnt aPnt = aPlane->Location();
     Standard_Real aZ = aPnt.Z();
     if(aZ > zMax){
         zMax = aZ;
         faceToRemove = aFace;
     }
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 You have now found the top face of the neck. Your final step before creating the hollowed solid is to put this face in a list. Since more than one face can be removed from the initial solid, the *BRepOffsetAPI_MakeThickSolid* constructor takes a list of faces as arguments.
 Open CASCADE Technology provides many collections for different kinds of objects: see *TColGeom* package for collections of objects from *Geom* package, *TColgp* package for collections of objects from gp package, etc.
 The collection for shapes can be found in the *TopTools* package. As *BRepOffsetAPI_MakeThickSolid* requires a list, use the *TopTools_ListOfShape* class.
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     TopTools_ListOfShape facesToRemove;
     facesToRemove.Append(faceToRemove);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 All the necessary data are now available so you can create your hollowed solid by calling the *BRepOffsetAPI_MakeThickSolid* MakeThickSolidByJoin method:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     BRepOffsetAPI_MakeThickSolid BodyMaker;
     BodyMaker.MakeThickSolidByJoin(myBody, facesToRemove, -myThickness / 50, 1.e-3);
     myBody = BodyMaker.Shape();
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 
 @section sec4 Building the Threading
@@ -504,11 +504,11 @@ Using the same coordinate system *neckAx2* used to position the neck, you create
 
 Notice that one of the cylindrical surfaces is smaller than the neck. There is a good reason for this: after the thread creation, you will fuse it with the neck. So, we must make sure that the two shapes remain in contact.
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     Handle(Geom_CylindricalSurface) aCyl1 = new Geom_CylindricalSurface(neckAx2, myNeckRadius * 0.99);
 
     Handle(Geom_CylindricalSurface) aCyl2 = new Geom_CylindricalSurface(neckAx2, myNeckRadius * 1.05);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 
 @subsection OCCT_TUTORIAL_SUB4_2 Defining 2D Curves
@@ -564,11 +564,11 @@ To use 2D primitive geometry types of Open CASCADE Technology for defining a poi
   * To define a 2D direction (unit vector) from its X and Y coordinates, use the gp_Dir2d class. The coordinates will automatically be normalized.
   * To define a 2D right-handed coordinate system, use the *gp_Ax2d* class, which is computed from a point (origin of the coordinate system) and a direction - the X direction of the coordinate system. The Y direction will be automatically computed.
   
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     gp_Pnt2d aPnt(2. * M_PI, myNeckHeight / 2.);
     gp_Dir2d aDir(2. * M_PI, myNeckHeight / 4.);
     gp_Ax2d anAx2d(aPnt, aDir);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 You will now define the curves. As previously mentioned, these thread profiles are computed on two cylindrical surfaces. In the following figure, curves on the left define the base (on *aCyl1* surface) and the curves on the right define the top of the thread's shape (on *aCyl2* surface).
 
@@ -588,36 +588,36 @@ Supposing that:
 
 Your ellipses are defined as follows:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     Standard_Real aMajor = 2. * M_PI;
     Standard_Real aMinor = myNeckHeight / 10;
     Handle(Geom2d_Ellipse) anEllipse1 = new Geom2d_Ellipse(anAx2d, aMajor, aMinor);
     Handle(Geom2d_Ellipse) anEllipse2 = new Geom2d_Ellipse(anAx2d, aMajor, aMinor / 4);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 To describe portions of curves for the arcs drawn above, you define *Geom2d_TrimmedCurve* trimmed curves out of the created ellipses and two parameters to limit them.
 As the parametric equation of an ellipse is P(U) = O + (MajorRadius * cos(U) * XDirection) + (MinorRadius * sin(U) * YDirection), the ellipses need to be limited between 0 and M_PI.
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     Handle(Geom2d_TrimmedCurve) anArc1 = new Geom2d_TrimmedCurve(anEllipse1, 0, M_PI);
     Handle(Geom2d_TrimmedCurve) anArc2 = new Geom2d_TrimmedCurve(anEllipse2, 0, M_PI);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 The last step consists in defining the segment, which is the same for the two profiles: a line limited by the first and the last point of one of the arcs.
 To access the point corresponding to the parameter of a curve or a surface, you use the Value or D0 method (meaning 0th derivative), D1 method is for first derivative, D2 for the second one.
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     gp_Pnt2d anEllipsePnt1 = anEllipse1->Value(0);
     gp_Pnt2d anEllipsePnt2;
     anEllipse1->D0(M_PI, anEllipsePnt2);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 When creating the bottle's profile, you used classes from the *GC* package, providing algorithms to create elementary geometries.
 In 2D geometry, this kind of algorithms is found in the *GCE2d* package. Class names and behaviors are similar to those in *GC*. For example, to create a 2D segment out of two points:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     Handle(Geom2d_TrimmedCurve) aSegment = GCE2d_MakeSegment(anEllipsePnt1, anEllipsePnt2);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 
 @subsection OCCT_TUTORIAL_SUB4_3 Building Edges and Wires
@@ -637,28 +637,28 @@ Previously, you have built:
 
 To compute the edges out of these curves, once again use the *BRepBuilderAPI_MakeEdge* class. One of its constructors allows you to build an edge out of a curve described in the 2D parametric space of a surface.
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     TopoDS_Edge anEdge1OnSurf1 = BRepBuilderAPI_MakeEdge(anArc1, aCyl1);
     TopoDS_Edge anEdge2OnSurf1 = BRepBuilderAPI_MakeEdge(aSegment, aCyl1);
     TopoDS_Edge anEdge1OnSurf2 = BRepBuilderAPI_MakeEdge(anArc2, aCyl2);
     TopoDS_Edge anEdge2OnSurf2 = BRepBuilderAPI_MakeEdge(aSegment, aCyl2);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 Now, you can create the two profiles of the threading, lying on each surface.
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     TopoDS_Wire threadingWire1 = BRepBuilderAPI_MakeWire(anEdge1OnSurf1, anEdge2OnSurf1);
     TopoDS_Wire threadingWire2 = BRepBuilderAPI_MakeWire(anEdge1OnSurf2, anEdge2OnSurf2);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 Remember that these wires were built out of a surface and 2D curves.
 One important data item is missing as far as these wires are concerned: there is no information on the 3D curves. Fortunately, you do not need to compute this yourself, which can be a difficult task since the mathematics can be quite complex.
 When a shape contains all the necessary information except 3D curves, Open CASCADE Technology provides a tool to build them automatically. In the BRepLib tool package, you can use the *BuildCurves3d* method to compute 3D curves for all the edges of a shape.
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp} 
+~~~~{.cpp}
     BRepLib::BuildCurves3d(threadingWire1);
     BRepLib::BuildCurves3d(threadingWire2);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 
 @subsection OCCT_TUTORIAL_SUB4_4 Creating Threading
@@ -675,12 +675,12 @@ The loft function is implemented in the *BRepOffsetAPI_ThruSections* class, whic
   * Use the *CheckCompatibility* method to activate (or deactivate) the option that checks whether the wires have the same number of edges. In this case, wires have two edges each, so you can deactivate this option.
   * Ask for the resulting loft shape with the Shape method.
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp} 
+~~~~{.cpp}
     BRepOffsetAPI_ThruSections aTool(Standard_True);
     aTool.AddWire(threadingWire1); aTool.AddWire(threadingWire2);
     aTool.CheckCompatibility(Standard_False);
     TopoDS_Shape myThreading = aTool.Shape();
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 
 @section sec5 Building the Resulting Compound
@@ -688,13 +688,13 @@ The loft function is implemented in the *BRepOffsetAPI_ThruSections* class, whic
 
 You are almost done building the bottle. Use the *TopoDS_Compound* and *BRep_Builder* classes to build single shape from *myBody* and *myThreading*:
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp} 
+~~~~{.cpp}
     TopoDS_Compound aRes;
     BRep_Builder aBuilder;
     aBuilder.MakeCompound (aRes);
     aBuilder.Add (aRes, myBody);
     aBuilder.Add (aRes, myThreading);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 Congratulations! Your bottle is complete. Here is the result snapshot of the Tutorial application:
 
@@ -709,7 +709,7 @@ If you want to know more and develop major projects using Open CASCADE Technolog
 
 Complete definition of MakeBottle function (defined in the file src/MakeBottle.cxx of the Tutorial):
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp} 
+~~~~{.cpp}
     TopoDS_Shape MakeBottle(const Standard_Real myWidth, const Standard_Real myHeight,
                             const Standard_Real myThickness)
     {
@@ -846,5 +846,5 @@ Complete definition of MakeBottle function (defined in the file src/MakeBottle.c
 
         return aRes;
     }
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
index d41c636..f809020 100644 (file)
@@ -39,7 +39,7 @@ Porting of user applications from an earlier OCCT version to version 6.5 require
 Porting of user applications from an earlier OCCT version to version 6.5.1 requires taking into account the following major changes:
 
 *      Method *Graphic3d_Structure::Groups()* now returns *Graphic3d_SequenceOfGroup*. If this method has been used, the application code should be updated to iterate another collection type or, if *Graphic3d_HSetOfGroup* is required, to fill its own collection:
-~~~~
+~~~~{.cpp}
 const Graphic3d_SequenceOfGroup& aGroupsSeq = theStructure.Groups();
 Handle(Graphic3d_HSetOfGroup) aGroupSet = new Graphic3d_HSetOfGroup();
 Standard_Integer aLen = aGroupsSeq.Length();
@@ -62,7 +62,7 @@ Porting of user applications from an earlier OCCT version to version 6.5.2 requi
 * If the callback mechanism in call_togl_redraw function was used in the application code, it is necessary to revise it to take into account the new callback execution and provide a check of reason value of Aspect_GraphicCallbackStruct in callback methods to confirm that the callback code is executed at the right moment. Now the callbacks are executed before redrawing the underlayer, before redrawing the overlayer and at the end of redrawing. The information about the moment when the callback is invoked is provided with the reason value in form of an additional bit flag <i>(OCC_PRE_REDRAW, OCC_PRE_OVERLAY)</i>. The state of OpenGl changed in callback methods will not be restored automatically, which might lead to unwanted behavior in redrawing procedure.
 * The print method used in the application code might need to be revised to take into account the ability to choose between print algorithms: tile and stretch. The stretch algorithm will be selected by default during porting.
 * It is recommended to *BRepMesh_DiscretFactory* users, to check *BRepMesh_DiscretFactory::SetDefault()* return value to determine plugin availability / validity. *BRepMesh_DiscretFactory::Discret()* method now returns handle instead of pointer. The code should be updated in the following manner:
-~~~~
+~~~~{.cpp}
 Handle(BRepMesh_DiscretRoot) aMeshAlgo = BRepMesh_DiscretFactory::Get().Discret (theShape, theDeflection, theAngularToler);
  if (!aMeshAlgo.IsNull())  {}
 ~~~~
@@ -88,7 +88,7 @@ Porting of user applications from an earlier OCCT version to version 6.5.3 requi
 
 Porting of user applications from an earlier OCCT version to version 6.5.4 requires taking into account the following major changes:
 * The code using obsolete classes *Aspect_PixMap, Xw_PixMap* and *WNT_PixMap* should be rewritten implementing class *Image_PixMap*, which is now retrieved by *ToPixMap* methods as argument. A sample code using *ToPixMap* is given below:
-~~~~
+~~~~{.cpp}
 #include <Image_AlienPixMap.hxx>
 void dump (Handle(V3d_View)& theView3D)
 {
@@ -121,7 +121,7 @@ Correspondingly, the code using methods *SetAnimationModeOn(), SetAnimationModeO
    * Interactive selection of 2D presentations should be set up inside *ComputeSelection()* virtual method of a custom interactive object class, using standard sensitive entities from *Select3D* package and standard or custom entity owners derived from *SelectMgr_EntityOwner* base.
 Refer to the Visualization User's Guide for further details concerning OCCT 3D visualization and selection classes. See also *Viewer2D* OCCT sample application, which shows how 2D drawing can be implemented using TKV3d API.
 * Run-time graphic driver library loading mechanism based on *CSF_GraphicShr* environment variable usage has been replaced by explicit linking against *TKOpenGl* library. The code sample below shows how the graphic driver should be created and initialized in the application code: 
-~~~~
+~~~~{.cpp}
 // initialize a new viewer with OpenGl graphic driver
 Handle(Graphic3d_GraphicDriver) aGraphicDriver = 
 new OpenGl_GraphicDriver ("TKOpenGl");
@@ -264,7 +264,7 @@ Custom Interactive Objects should implement new virtual method *SelectMgr_Select
 
 Now the method *SelectMgr_Selection::Sensitive()* does not return *SelectBasics_SensitiveEntity*. It returns an instance of *SelectMgr_SensitiveEntity*, which belongs to a different class hierarchy (thus *DownCast()* will fail). To access base sensitive it is necessary to use method *SelectMgr_SensitiveEntity::BaseSensitive()*. For example:
 
-~~~~
+~~~~{.cpp}
 Handle(SelectMgr_Selection) aSelection = anInteractiveObject->Selection (aMode);
 for (aSelection->Init(); aSelection->More(); aSelection->Next())
 {
@@ -286,7 +286,7 @@ The depth and distance to the center of geometry must be calculated for the 3D p
 
 Here is an example of overlap/inclusion test for a box:
 
-~~~~
+~~~~{.cpp}
 if (!theMgr.IsOverlapAllowed()) // check for inclusion
 {
   Standard_Boolean isInside = Standard_True;
@@ -404,26 +404,26 @@ Most of typical changes required for upgrading code for OCCT 7.0 can be done aut
 This tool is a Tcl script, thus Tcl should be available on your workstation to run it.
 
 Example:
-~~~~~
+~~~~{.php}
  $ tclsh
  % source <path_to_occt>/adm/upgrade.tcl
  % upgrade -recurse -all -src=<path_to_your_sources>
-~~~~~
+~~~~
 
 On Windows, the helper batch script *upgrade.bat* can be used, provided that Tcl is either available in *PATH*, or configured via *custom.bat* script (for instance, if you use OCCT installed from Windows installer package). Start it from the command prompt:
 
-~~~~~
+~~~~
 cmd> <path_to_occt>\upgrade.bat -recurse -all -inc=<path_to_occt>\inc -src=<path_to_your_sources> [options]
-~~~~~
+~~~~
 
 Run the upgrade tool without arguments to see the list of available options.
 
 The upgrade tool performs the following changes in the code.
 
 1. Replaces macro *DEFINE_STANDARD_RTTI* by *DEFINE_STANDARD_RTTIEXT*, with second argument indicating base class for the main argument class (if inheritance is recognized by the script):
-~~~~~
+~~~~{.cpp}
 DEFINE_STANDARD_RTTI(Class) -> DEFINE_STANDARD_RTTIEXT(Class, Base)
-~~~~~
+~~~~
 
    @note If macro *DEFINE_STANDARD_RTTI* with two arguments (used in intermediate development versions of OCCT 7.0) is found, the script will convert it to either *DEFINE_STANDARD_RTTIEXT* or *DEFINE_STANDARD_RTTI_INLINE*. 
    The former case is used if current file is header and source file with the same name is found in the same folder. 
@@ -431,50 +431,50 @@ DEFINE_STANDARD_RTTI(Class) -> DEFINE_STANDARD_RTTIEXT(Class, Base)
    The latter variant defines all methods for RTTI as inline, and does not require *IMPLEMENT_STANDARD_RTTIEXT* macro. 
 
 2. Replaces forward declarations of collection classes previously generated from CDL generics (defined in *TCollection* package) by inclusion of the corresponding header:
-~~~~~
+~~~~{.cpp}
 class TColStd_Array1OfReal; -> #include <TColStd_Array1OfReal.hxx>
-~~~~~
+~~~~
 
 3. Replaces underscored names of *Handle* classes by usage of a macro:
-~~~~~
+~~~~{.cpp}
 Handle_Class -> Handle(Class)
-~~~~~
+~~~~
   This change is not applied if the source or header file is recognized as containing the definition of Qt class with signals or slots, to avoid possible compilation errors of MOC files caused by inability of MOC to recognize macros (see https://doc.qt.io/qt-4.8/signalsandslots.html).
   The file is considered as defining a Qt object if it contains strings *Q_OBJECT* and either *slots:* or *signals:*. 
 
 4. Removes forward declarations of classes with names <i>Handle(C)</i> or *Handle_C*, replacing them either by forward declaration of its argument class, or (for files defining Qt objects) <i>\#include</i> statement for a header with the name of the argument class and extension .hxx:
-~~~~~
+~~~~{.cpp}
 class Handle(TColStd_HArray1OfReal); -> #include <TColStd_HArray1OfReal.hxx>
-~~~~~
+~~~~
 
 5. Removes <i> \#includes </i> of files <i>Handle_...hxx</i> that have disappeared in OCCT 7.0:
-~~~~~
+~~~~{.cpp}
 #include <Handle_Geom_Curve.hxx> ->
-~~~~~
+~~~~
 
 6. Removes *typedef* statements that use *Handle* macro to generate the name:
-~~~~~
+~~~~{.cpp}
 typedef NCollection_Handle<Message_Msg> Handle(Message_Msg); ->
-~~~~~
+~~~~
 
 7. Converts C-style casts applied to Handles into calls to <i>DownCast()</i> method:
-~~~~~
+~~~~{.cpp}
     ((Handle(A)&)b)     -> Handle(A)::DownCast(b)
     (Handle(A)&)b       -> Handle(A)::DownCast(b)
     (*((Handle(A)*)&b)) -> Handle(A)::DownCast(b)
     *((Handle(A)*)&b)   -> Handle(A)::DownCast(b)
     (*(Handle(A)*)&b)   -> Handle(A)::DownCast(b)
-~~~~~
+~~~~
 
 8. Moves <i>Handle()</i> macro out of namespace scope:
-~~~~~
+~~~~{.cpp}
 Namespace::Handle(Class) -> Handle(Namespace::Class)
-~~~~~
+~~~~
 
 9. Converts local variables of reference type, which are initialized by a temporary object returned by call to <i>DownCast()</i>, to the variables of non-reference type (to avoid using references to destroyed memory):
-~~~~~
+~~~~{.cpp}
     const Handle(A)& a = Handle(B)::DownCast (b); -> Handle(A) a (Handle(B)::DownCast (b));
-~~~~~
+~~~~
 
 10. Adds  <i>\#include</i> for all classes used as argument to macro <i>STANDARD_TYPE()</i>, except for already included ones;
 
@@ -487,9 +487,9 @@ Namespace::Handle(Class) -> Handle(Namespace::Class)
 As long as the upgrade routine runs, some information messages are sent to the standard output. 
 In some cases the warnings or errors like the following may appear:
 
-~~~~~
+~~~~
   Error in {HEADER_FILE}: Macro DEFINE_STANDARD_RTTI used for class {CLASS_NAME} whose declaration is not found in this file, cannot fix
-~~~~~
+~~~~
 
 Be sure to check carefully all reported errors and warnings, as the corresponding code will likely require manual corrections.
 In some cases these messages may help you to detect errors in your code, for instance, cases where *DEFINE_STANDARD_RTTI* macro is used with incorrect class name as an argument.
@@ -506,12 +506,12 @@ The use of handle objects (construction, comparison using operators == or !=, us
 
 For example, the following lines will fail to compile if *Geom_Line.hxx* is not included:
 
-~~~~~
+~~~~{.cpp}
 Handle(Geom_Line) aLine = 0;
 if (aLine != aCurve) {...} 
 if (aCurve->IsKind(STANDARD_TYPE(Geom_Line)) {...}
 aLine = Handle(Geom_Line)::DownCast (aCurve);
-~~~~~
+~~~~
 
 Note that it is not necessary to include header of the class to declare Handle to it.
 However, if you define a class *B* that uses Handle(*A*) in its fields, or contains a method returning Handle(*A*), it is advisable to have header defining *A* included in the header of *B*.
@@ -523,31 +523,31 @@ This issue appears in the compilers that do not support default arguments in tem
 The problem is that operator  <i> const handle<T2>& </i> is defined for any type *T2*, thus the compiler cannot make the right choice.
 
 Example:
-~~~~~
+~~~~{.cpp}
 void func (const Handle(Geom_Curve)&);
 void func (const Handle(Geom_Surface)&);
 
 Handle(Geom_TrimmedCurve) aCurve = new Geom_TrimmedCurve (...);
 func (aCurve); // ambiguity error in VC++ 10
-~~~~~
+~~~~
 
 Note that this problem can be avoided in many cases if macro *OCCT_HANDLE_NOCAST* is used, see @ref upgrade_occt700_cdl_nocast "below".
 
 To resolve this ambiguity, change your code so that argument type should correspond exactly to the function signature. 
 In some cases this can be done by using the relevant type for the corresponding variable, like in the example above:
 
-~~~~~
+~~~~{.cpp}
 Handle(Geom_Curve) aCurve = new Geom_TrimmedCurve (...);  
-~~~~~
+~~~~
 
 Other variants consist in assigning the argument to a local variable of the correct type and using the direct cast or constructor:
 
-~~~~~
+~~~~{.cpp}
 const Handle(Geom_Curve)& aGCurve (aTrimmedCurve);
 func (aGCurve); // OK - argument has exact type
 func (static_cast(aCurve)); // OK - direct cast 
 func (Handle(Geom_Curve)(aCurve)); // OK - temporary handle is constructed
-~~~~~
+~~~~
 
 Another possibility consists in defining additional template variant of the overloaded function causing ambiguity, and using *SFINAE* to resolve the ambiguity.
 This technique can be illustrated by the definition of the template variant of method <i>IGESData_IGESWriter::Send()</i>.
@@ -558,31 +558,31 @@ As the cast of a handle to the reference to another handle to the base type has
 
 For example:
 
-~~~~~
+~~~~{.cpp}
 Handle(Geom_Geometry) aC = GC_MakeLine (p, v); // compiler error
-~~~~~
+~~~~
 
 The problem is that the class *GC_MakeLine* has a user-defined conversion to <i>const Handle(Geom_TrimmedCurve)&,</i> which is not the same as the type of the local variable *aC*.
 
 To resolve this, use method <i>Value()</i>:
 
-~~~~~
+~~~~{.cpp}
 Handle(Geom_Geometry) aC = GC_MakeLine (p, v).Value(); // ok
-~~~~~
+~~~~
 
 or use variable of the appropriate type:
 
-~~~~~
+~~~~{.cpp}
 Handle(Geom_TrimmedCurve) aC = GC_MakeLine (p, v); // ok
-~~~~~
+~~~~
 
 A similar problem appears with GCC compiler, when *const* handle to derived type is used to construct handle to base type via assignment (and in some cases in return statement), for instance:
 
-~~~~~
+~~~~{.cpp}
   const Handle(Geom_Line) aLine;
   Handle(Geom_Curve) c1 = aLine; // GCC error 
   Handle(Geom_Curve) c2 (aLine); // ok
-~~~~~
+~~~~
 
 This problem is specific to GCC and it does not appear if macro *OCCT_HANDLE_NOCAST* is used, see @ref upgrade_occt700_cdl_nocast "below".
 
@@ -593,20 +593,20 @@ You might need to clean your code from incorrect use of macros *STANDARD_TYPE*()
 1. Explicit definitions of static functions with names generated by macro *STANDARD_TYPE()*, which are artifacts of old implementation of RTTI, should be removed.
    
    Example:
-~~~~~
+~~~~{.cpp}
 const Handle(Standard_Type)& STANDARD_TYPE(math_GlobOptMin)
 {
   static Handle(Standard_Type) _atype = new Standard_Type ("math_GlobOptMin", sizeof (math_GlobOptMin));
   return _atype;
 }
-~~~~~
+~~~~
 
 2. Incorrect location of closing parenthesis of *Handle()* macro that was not detectable in OCCT 6.x will cause a compiler error and must be corrected.
 
    Example (note misplaced closing parenthesis):
-~~~~~
+~~~~{.cpp}
 aBSpline = Handle( Geom2d_BSplineCurve::DownCast(BS->Copy()) );
-~~~~~
+~~~~
 
 #### Use of class Standard_AncestorIterator
 
@@ -617,20 +617,20 @@ Class *Standard_AncestorIterator* has been removed; use method *Parent()* of *St
 Handles in OCCT 7.0 do not have the operator of conversion to <i>Standard_Transient*,</i> which was present in earlier versions.
 This is done to prevent possible unintended errors like this:
 
-~~~~~
+~~~~{.cpp}
 Handle(Geom_Line) aLine = ...;
 Handle(Geom_Surface) aSurf = ...;
 ...
 if (aLine == aSurf) {...} // will cause a compiler error in OCCT 7.0, but not OCCT 6.x
-~~~~~
+~~~~
 
 The places where this implicit cast has been used should be corrected manually.
 The typical situation is when Handle is passed to stream:
 
-~~~~~
+~~~~{.cpp}
 Handle(Geom_Line) aLine = ...;
 os << aLine; // in OCCT 6.9.0, resolves to operator << (void*) 
-~~~~~
+~~~~
 
 Call method <i>get()</i> explicitly to output the address of the Handle.
 
@@ -639,24 +639,24 @@ Call method <i>get()</i> explicitly to output the address of the Handle.
 Method *DownCast()* in OCCT 7.0 is made templated; if its argument is not a base class, "deprecated" compiler warning is generated.
 This is done to prevent possible unintended errors like this:
 
-~~~~~
+~~~~{.cpp}
 Handle(Geom_Surface) aSurf = ;
 Handle(Geom_Line) aLine = 
   Handle(Geom_Line)::DownCast (aSurf); // will cause a compiler warning in OCCT 7.0, but not OCCT 6.x
-~~~~~
+~~~~
 
 The places where this cast has been used should be corrected manually.
 
 If down casting is used in a template context where the argument can have the same or unrelated type so that *DownCast()* may be not available in all cases, use C++ *dynamic_cast<>* instead, e.g.: 
 
-~~~~~
+~~~~{.cpp}
 template <class T>
 bool CheckLine (const Handle(T) theArg)
 {
   Handle(Geom_Line) aLine = dynamic_cast<Geom_Line> (theArg.get());
   ...
 }
-~~~~~
+~~~~
 
 @subsubsection upgrade_occt700_cdl_runtime Possible runtime problems
 
@@ -671,19 +671,19 @@ This problem does not appear if macro *OCCT_HANDLE_NOCAST* is used during compil
 
 Example:
 
-~~~~~
+~~~~{.cpp}
 // note that DownCast() returns new temporary object!
 const Handle(Geom_BoundedCurve)& aBC =
 Handle(Geom_TrimmedCurve)::DownCast(aCurve);
 aBC->Transform (T); // access violation in OCCT 7.0
-~~~~~
+~~~~
 
 @subsubsection upgrade_occt700_cdl_nocast Option to avoid cast of handle to reference to base type
 
 In OCCT 6.x and earlier versions the handle classes formed a hierarchy echoing the hierarchy of the corresponding object classes .
 This automatically enabled the possibility to use the handle to a derived class in all contexts where the handle to a base class was needed, e.g. to pass it in a function by reference without copying:
 
-~~~~
+~~~~{.cpp}
 Standard_Boolean GetCurve (Handle(Geom_Curve)& theCurve);
 ....
 Handle(Geom_Line) aLine;
@@ -705,13 +705,13 @@ This implies creation of temporary objects and hence may be more expensive at ru
 The code that relies on the possibility of casting to base should be amended to always use the handle of argument type in function call and to use *DownCast()* to safely convert the result to the desired type.
 For instance, the code from the example below can be changed as follows:
 
-~~~~~
+~~~~{.cpp}
 Handle(Geom_Line) aLine;
 Handle(Geom_Curve) aCurve;
 if (GetCurve (aCure) && !(aLine = Handle(Geom_Line)::DownCast (aCurve)).IsNull()) {
   // use aLine safely
 }
-~~~~~
+~~~~
 
 @subsubsection upgrade_occt700_cdl_compat Preserving compatibility with OCCT 6.x
 
@@ -724,12 +724,12 @@ If you like to preserve the compatibility of your application code with OCCT ver
 3. Define macros *DEFINE_STANDARD_RTTIEXT* and *DEFINE_STANDARD_RTTI_INLINE* when building with previous versions of OCCT, resolving to *DEFINE_STANDARD_RTTI* with single argument 
 
    Example:
-~~~~~   
+~~~~{.cpp}
 #if OCC_VERSION_HEX < 0x070000
   #define DEFINE_STANDARD_RTTIEXT(C1,C2) DEFINE_STANDARD_RTTI(C1)
   #define DEFINE_STANDARD_RTTI_INLINE(C1,C2) DEFINE_STANDARD_RTTI(C1)
 #endif
-~~~~~
+~~~~
 
 @subsubsection upgrade_occt700_cdl_wok Applications based on CDL and WOK
 
@@ -768,7 +768,7 @@ The code that used the tools provided by that package should be corrected manual
 The recommended approach is to use sorting algorithms provided by STL.
 
 For instance:
-~~~~~
+~~~~{.cpp}
 #include <SortTools_StraightInsertionSortOfReal.hxx>
 #include <SortTools_ShellSortOfReal.hxx>
 #include <TCollection_CompareOfReal.hxx>
@@ -777,15 +777,15 @@ TCollection_Array1OfReal aValues = ...;
 ...
 TCollection_CompareOfReal aCompReal;
 SortTools_StraightInsertionSortOfReal::Sort(aValues, aCompReal);
-~~~~~
+~~~~
 can be replaced by:
-~~~~~
+~~~~{.cpp}
 #include <algorithm>
 ...
 TCollection_Array1OfReal aValues = ...;
 ...
 std::stable_sort (aValues.begin(), aValues.end());
-~~~~~
+~~~~
 
 @subsection upgrade_occt700_2dlayers On-screen objects and ColorScale
 
@@ -802,7 +802,7 @@ Predefined Z-layers *Graphic3d_ZLayerId_TopOSD* and *Graphic3d_ZLayerId_BotOSD*
 The property of *V3d_View* storing the global *ColorScale* object has been removed with associated methods *V3d_View::ColorScaleDisplay(), V3d_View::ColorScaleErase(), V3d_View::ColorScaleIsDisplayed()* and *V3d_View::ColorScale()* as well as the classes *V3d_ColorScale, V3d_ColorScaleLayerItem* and *Aspect_ColorScale*.
 Here is an example of creating *ColorScale* using the updated API:
 
-~~~~~
+~~~~{.cpp}
 Handle(AIS_ColorScale) aCS = new AIS_ColorScale();
 // configuring
 Standard_Integer aWidth, aHeight;
@@ -815,13 +815,13 @@ aCS->SetZLayer (Graphic3d_ZLayerId_TopOSD);
 aCS->SetTransformPersistence (Graphic3d_TMF_2d, gp_Pnt (-1,-1,0));
 aCS->SetToUpdate();
 theContextAIS->Display (aCS);
-~~~~~
+~~~~
 
 To see how 2d objects are implemented in OCCT you can call Draw commands *vcolorscale, vlayerline* or *vdrawtext* (with <i>-2d</i> option).
 Draw command *vcolorscale* now requires the name of *ColorScale* object as argument.
 To display this object use command *vdisplay*. For example:
 
-~~~~~
+~~~~{.php}
 pload VISUALIZATION
 vinit
 vcolorscale cs -demo
@@ -832,16 +832,16 @@ vsetdispmode 1
 vfit
 vlayerline 0 300 300 300 10
 vdrawtext t "2D-TEXT" -2d -pos 0 150 0 -color red
-~~~~~
+~~~~
 
 Here is a small example in C++ illustrating how to display a custom AIS object in 2d:
-~~~~~
+~~~~{.cpp}
 Handle(AIS_InteractiveContext) aContext = ...;
 Handle(AIS_InteractiveObject) anObj =...; // create an AIS object
 anObj->SetZLayer(Graphic3d_ZLayerId_TopOSD); // display object in overlay
 anObj->SetTransformPersistence (Graphic3d_TMF_2d, gp_Pnt (-1,-1,0)); // set 2d flag, coordinate origin is set to down-left corner
 aContext->Display (anObj); // display the object
-~~~~~
+~~~~
 
 @subsection upgrade_occt700_userdraw UserDraw and Visual3d
 
@@ -879,7 +879,7 @@ The functionality previously provided by *Visual3d* package has been redesigned
 Old APIs based on global callback functions for creating *UserDraw* objects and for performing custom OpenGL rendering within the view have been dropped.
 *UserDraw* callbacks are no more required since *OpenGl_Group* now inherits *Graphic3d_Group* and thus can be accessed directly from *AIS_InteractiveObject*:
 
-~~~~~
+~~~~{.cpp}
 //! Class implementing custom OpenGL element.
 class UserDrawElement : public OpenGl_Element {};
 
@@ -901,12 +901,12 @@ void UserDrawObject::Compute (const Handle(PrsMgr_PresentationManager)& thePrsMg
   // invalidate bounding box of the scene
   thePrsMgr->StructureManager()->Update();
 }
-~~~~~
+~~~~
 
 To perform a custom OpenGL code within the view, it is necessary to inherit from class *OpenGl_View*.
 See the following code sample:
 
-~~~~~
+~~~~{.cpp}
 //! Custom view.
 class UserView : public OpenGl_View
 {
@@ -953,7 +953,7 @@ public:
   }
 };
 
-~~~~~
+~~~~
 
 @subsection upgrade_occt700_localcontext Deprecation of Local Context
 
@@ -1172,22 +1172,22 @@ Class *BRepOffsetAPI_MakeOffsetShape*:
 * *BRepOffsetAPI_MakeOffsetShape::PerformByJoin()* - method has been added. This method is old algorithm behaviour. 
 
 The code below shows new calling procedure:
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     BRepOffsetAPI_MakeOffsetShape OffsetMaker;
     OffsetMaker.PerformByJoin(Shape, OffsetValue, Tolerance);
     NewShape = OffsetMaker.Shape();
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 Class *BRepOffsetAPI_MakeThickSolid*:
 * *BRepOffsetAPI_MakeThickSolid::BRepOffsetAPI_MakeThickSolid()* - constructor with parameters has been deleted.
 * *BRepOffsetAPI_MakeThickSolid::MakeThickSolidByJoin()* - method has been added. This method is old algorithm behaviour. 
 
 The code below shows new calling procedure:
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.cpp}
     BRepOffsetAPI_MakeThickSolid BodyMaker;
     BodyMaker.MakeThickSolidByJoin(myBody, facesToRemove, -myThickness / 50, 1.e-3);
     myBody = BodyMaker.Shape();
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 @subsection upgrade_720_highlight Highlight style
 
@@ -1317,7 +1317,7 @@ One can use this functionality in two ways:
 
 The code example below demonstrates how to read shapes from a storage driver using *StdStorage* class.
 
-~~~~
+~~~~{.cpp}
 // aDriver should be created and opened for reading
 Handle(StdStorage_Data) aData;
 
@@ -1355,7 +1355,7 @@ if (!aRoots.IsNull())
 
 The following code demonstrates how to write shapes in OCCT 7.2.0 using *StdStorage* class.
 
-~~~~
+~~~~{.cpp}
 // Create a file driver
 NCollection_Handle<Storage_BaseDriver> aFileDriver(new FSD_File());
 
@@ -1640,7 +1640,7 @@ The following changes have been introduced in the API of *BRepMesh_IncrementalMe
 
 Example of usage:
 Case 1 (explicit parameters):
-~~~~
+~~~~{.cpp}
 #include <IMeshData_Status.hxx>
 #include <IMeshTools_Parameters.hxx>
 #include <BRepMesh_IncrementalMesh.hxx>
@@ -1688,7 +1688,7 @@ In fact, drawing points or lines with lighting applied is a valid use case, but
 As aspects for different primitive types have been merged, Graphic3d_Group does no more provide per-type aspect properties.
 Existing code relying on old behavior and putting interleaved per-type aspects into single Graphic3d_Group should be updated.
 For example, the following pseudo-code will not work anymore, because all *SetGroupPrimitivesAspect* calls will setup the same property:
-~~~~
+~~~~{.cpp}
 Handle(Graphic3d_Group) aGroup = thePrs->NewGroup();
 aGroup->SetGroupPrimitivesAspect (myDrawer->ShadingAspect()->Aspect());
 aGroup->SetGroupPrimitivesAspect (myDrawer->LineAspect()->Aspect());    //!< overrides previous aspect
@@ -1700,7 +1700,7 @@ aGroup->AddPrimitiveArray (aTris);
 ~~~~
 
 To solve the problem, the code should be modified to either put primitives into dedicated groups (preferred approach), or using *SetPrimitivesAspect* in proper order:
-~~~~
+~~~~{.cpp}
 Handle(Graphic3d_Group) aGroup = thePrs->NewGroup();
 
 aGroup->SetGroupPrimitivesAspect (myDrawer->ShadingAspect()->Aspect());
@@ -1718,7 +1718,7 @@ Decomposition of Ambient, Diffuse, Specular and Emissive properties has been eli
 As result, the following methods of *Graphic3d_MaterialAspect* class have been removed: SetReflectionMode(), SetReflectionModeOn(), Ambient(), Diffuse(), Emissive(), Specular(), SetAmbient(), SetDiffuse(), SetSpecular(), SetEmissive().
 
 Previously, computation of final value required the following code:
-~~~~
+~~~~{.cpp}
 Graphic3d_MaterialAspect theMaterial; Quantity_Color theInteriorColor;
 Graphic3d_Vec3 anAmbient (0.0f);
 if (theMaterial.ReflectionMode (Graphic3d_TOR_AMBIENT))
@@ -1730,7 +1730,7 @@ if (theMaterial.ReflectionMode (Graphic3d_TOR_AMBIENT))
 ~~~~
 
 New code looks like this:
-~~~~
+~~~~{.cpp}
 Graphic3d_MaterialAspect theMaterial; Quantity_Color theInteriorColor;
 Graphic3d_Vec3 anAmbient = theMaterial.AmbientColor();
 if (theMaterial.MaterialType (Graphic3d_MATERIAL_ASPECT)) { anAmbient *= (Graphic3d_Vec3 )theInteriorColor; }
@@ -1751,7 +1751,7 @@ Existing code should be updated to:
 Parameters of *Text* in *Graphic3d_Group* are moved into a new *Graphic3d_Text* class. *AddText* of *Graphic3d_Group* should be used instead of the previous *Text*.
 
 The previous code:
-~~~~
+~~~~{.cpp}
 Standard_Real x, y, z;
 theAttachmentPoint.Coord(x,y,z);
 theGroup->Text (theText,
@@ -1763,7 +1763,7 @@ theGroup->Text (theText,
                 theAspect->VerticalJustification());
 ~~~~
 should be replaced by the new code:
-~~~~
+~~~~{.cpp}
 Handle(Graphic3d_Text) aText = new Graphic3d_Text (theAspect->Height());
 aText->SetText (theText.ToExtString());
 aText->SetPosition (theAttachmentPoint);
@@ -1927,7 +1927,7 @@ The method Select3D_SensitiveEntity::NbSubElements() has been changed to be cons
 @subsection upgrade_750_Booleans Changes in Boolean operations algorithm
 
 * TreatCompound method has been moved from *BOPAlgo_Tools* to *BOPTools_AlgoTools*. Additionally, the map parameter became optional:
-~~~~
+~~~~{.cpp}
 void BOPTools_AlgoTools::TreatCompound (const TopoDS_Shape& theS,
                                         TopTools_ListOfShape& theLS,
                                         TopTools_MapOfShape* theMap = NULL);
@@ -2094,25 +2094,25 @@ corresponding type of the message.
 The code that used operator << for messenger, should be ported as follows.
 
 Before the change:
-~~~~~
+~~~~{.cpp}
   Handle(Message_Messenger) theMessenger = ...;
   theMessenger << "Value = " << anInteger << Message_EndLine;
-~~~~~
+~~~~
 
 After the change, single-line variant:
-~~~~~
+~~~~{.cpp}
   Handle(Message_Messenger) theMessenger = ...;
   theMessenger->SendInfo() << "Value = " << anInteger << std::endl;
-~~~~~
+~~~~
 
 After the change, extended variant:
-~~~~~
+~~~~{.cpp}
   Handle(Message_Messenger) theMessenger = ...;
   Message_Messenger::StreamBuffer aSender = theMessenger->SendInfo();
   aSender << "Array: [ ";
   for (int i = 0; i < aNb; ++i) { aSender << anArray[i] << " "; }
   aSender << "]" << std::endl; // aSender can be used further for other messages
-~~~~~
+~~~~
 
 @subsection upgrade_750_message_printer Message_Printer interface change
 
@@ -2136,13 +2136,13 @@ provided that each thread deals with its own instance of *TDataStd_Application*
 Note that neither *TDataStd_Application* nor *TDocStd_Document* is protected from concurrent access from several threads.
 Such protection, if necessary, shall be implemented on the application level.
 For an example, access to labels and attributes could be protected by mutex if there is a probability that different threads access the same labels / attributes:
-~~~~~
+~~~~{.cpp}
   {
     Standard_Mutex::Sentry aSentry (myMainLabelAccess);
     TDF_Label aChildLab = aDocument->Main().NewChild();
     TDataStd_Integer::Set(aChildLab, 0);
   }
-~~~~~
+~~~~
 
 @subsection upgrade_750_draw_hotkeys Draw Harness hotkeys
 
@@ -2179,10 +2179,10 @@ Existing code relying on old behavior, if any, shall be rewritten.
 
 Geom_RectangularTrimmedSurface sequentially trimming in U and V directions already no longer loses the first trim.
 For example:
-~~~~~
+~~~~{.cpp}
   Handle(Geom_RectangularTrimmedSurface) ST  = new Geom_RectangularTrimmedSurface (Sbase, u1, u2, Standard_True); // trim along U
   Handle(Geom_RectangularTrimmedSurface) ST1 = new Geom_RectangularTrimmedSurface (ST, v1, v2, Standard_False); // trim along V
-~~~~~
+~~~~
 gives different result.
 In current version ST1 - surface trimmed only along V, U trim is removed;
 After modification ST1 - surface trimmed along U and V, U trim is kept.
index ccc6625..b10b73d 100644 (file)
@@ -50,18 +50,18 @@ This documentation describes:
 
 This document is a reference manual. It contains a full description of each command. All descriptions have the format illustrated below for the exit command. 
 
-~~~~~
+~~~~{.php}
 exit
-~~~~~
+~~~~
 
 Terminates the Draw, TCL session. If the commands are read from a file using the source command, this will terminate the file. 
 
 **Example:** 
 
-~~~~~
+~~~~{.php}
 # this is a very short example 
 exit 
-~~~~~
+~~~~
 
 
 @subsection occt_draw_1_3 Getting started
@@ -86,38 +86,38 @@ The format of the file is compliant with standard Open CASCADE Technology resour
 Each key defines a sequence of either further (nested) keys or a name of the dynamic library. Keys can be nested down to an arbitrary level. However, cyclic dependencies between the keys are not checked. 
 
 **Example:** (excerpt from DrawPlugin): 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~
 OCAF               : VISUALIZATION, OCAFKERNEL 
 VISUALIZATION      : AISV 
 OCAFKERNEL         : DCAF 
 
 DCAF               : TKDCAF 
 AISV               : TKViewerTest 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 @subsubsection occt_draw_1_3_3 Activation of commands implemented in the plug-in
 
 To load a plug-in declared in the resource file and to activate the commands the following command must be used in Test Harness: 
 
-~~~~~
+~~~~{.php}
 pload [-PluginFileName] [[Key1] [Key2]...]
-~~~~~
+~~~~
 
-where: 
+Where: 
 
 * <i>-PluginFileName</i> -- defines the name of a plug-in resource file (prefix "-" is mandatory) described above. If this parameter is omitted then the default name *DrawPlugin* is used. 
 * *Key* -- defines the key(s) enumerating plug-ins to be loaded. If no keys are specified then the key named *DEFAULT* is used (if there is no such key in the file then no plug-ins are loaded). 
 
 According to the OCCT resource file management rules, to access the resource file the environment variable *CSF_PluginFileNameDefaults* (and optionally *CSF_PluginFileNameUserDefaults*) must be set and point to the directory storing the resource file. If it is omitted then the plug-in resource file will be searched in the <i>$CASROOT/src/DrawResources</i> directory. 
 
-~~~~~
+~~~~{.php}
 Draw[]        pload -DrawPlugin OCAF 
-~~~~~
+~~~~
 This command will search the resource file *DrawPlugin* using variable *CSF_DrawPluginDefaults* (and *CSF_DrawPluginUserDefaults*) and will start with the OCAF key. Since the *DrawPlugin* is the file shipped with Open CASCADE Technology it will be found in the <i>$CASROOT/src/DrawResources</i> directory (unless this location is redefined by user's variables). The OCAF key will be recursively extracted into two toolkits/plug-ins: *TKDCAF* and *TKViewerTest* (e.g. on Windows they correspond to *TKDCAF.dll* and *TKViewerTest.dll*). Thus, commands implemented for Visualization and OCAF will be loaded and activated in Test Harness. 
 
-~~~~~
+~~~~{.php}
 Draw[]        pload (equivalent to pload -DrawPlugin DEFAULT). 
-~~~~~
+~~~~
 This command will find the default DrawPlugin file and the DEFAULT key. The latter finally maps to the TKTopTest toolkit which implements basic modeling commands. 
 
 
@@ -140,11 +140,11 @@ TCL is an interpreted command language, not a structured language like C, Pascal
 
 The basic program for TCL is a script. A script consists of one or more commands. Commands are separated by new lines or semicolons. 
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 set a 24 
 set b 15 
 set a 25; set b 15 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 Each command consists of one or more *words*; the first word is the name of a command and additional words are arguments to that command. 
 
@@ -157,7 +157,7 @@ The following substitutions are performed by TCL:
 Variable substitution is triggered by the $ character (as with csh), the content of the variable is substituted; { } may be used as in csh to enclose the name of the variable.
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 # set a variable value 
 set file documentation 
 puts $file #to display file contents on the screen 
@@ -172,19 +172,19 @@ set pfile ${file}PS
 # a last one, 
 # delete files NEWdocumentation and OLDdocumentation 
 foreach prefix {NEW OLD} {rm $prefix$file} 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 Command substitution is triggered by the [ ] characters. The brackets must enclose a valid script. The script is evaluated and the result is substituted. 
 
 Compare command construction in csh. 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 set degree 30 
 set pi 3.14159265 
 # expr is a command evaluating a numeric expression 
 set radian [expr $pi*$degree/180] 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 Backslash substitution is triggered by the backslash character. It is used to insert special characters like $, [ , ] , etc. It is also useful to insert a new line, a backslash terminated line is continued on the following line. 
 
@@ -193,16 +193,16 @@ TCL uses two forms of *quoting* to prevent substitution and word breaking.
 Double quote *quoting* enables the definition of a string with space and tabs as a single word. Substitutions are still performed inside the inverted commas " ". 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 # set msg to ;the price is 12.00; 
 set price 12.00 
 set msg ;the price is $price; 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 Braces *quoting* prevents all substitutions. Braces are also nested. The main use of braces is to defer evaluation when defining procedures and control structures. Braces are used for a clearer presentation of TCL scripts on several lines. 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 set x 0 
 # this will loop for ever 
 # because while argument is ;0 < 3; 
@@ -220,22 +220,22 @@ while {$x < 3}
 { 
 set x [expr $x+1] 
 } 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 Comments start with a \# character as the first non-blank character in a command. To add a comment at the end of the line, the comment must be preceded by a semi-colon to end the preceding command. 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 # This is a comment 
 set a 1 # this is not a comment 
 set b 1; # this is a comment 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 The number of words is never changed by substitution when parsing in TCL. For example, the result of a substitution is always a single word. This is different from csh but convenient as the behavior of the parser is more predictable. It may sometimes be necessary to force a second round of parsing. **eval** accomplishes this: it accepts several arguments, concatenates them and executes the resulting script. 
 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~{.php}
 # I want to delete two files 
 
 set files ;foo bar; 
@@ -246,7 +246,7 @@ set files ;foo bar;
 exec rm $files 
 
 # a second evaluation will do it 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 @subsection occt_draw_2_3 Accessing variables in TCL and Draw
 
@@ -261,22 +261,22 @@ There are many kinds of Draw variables, and new ones may be added with C++. Geom
 Draw numeric variables can be used within an expression anywhere a Draw command requires a numeric value. The *expr* command is useless in this case as the variables are stored not as strings but as floating point values. 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 # dset is used for numeric variables 
 # pi is a predefined Draw variable 
 dset angle pi/3 radius 10 
 point p radius*cos(angle) radius*sin(angle) 0 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 It is recommended that you use TCL variables only for strings and Draw for numerals. That way, you will avoid the *expr* command. As a rule, Geometry and Topology require numbers but no strings. 
 
 @subsubsection occt_draw_2_3_1 set, unset
 
-Syntax:                  
+Syntax:
 
-~~~~~
+~~~~{.php}
 set varname [value] 
 unset varname [varname varname ...] 
-~~~~~
+~~~~
 
 *set* assigns a string value to a variable. If the variable does not already exist, it is created. 
 
@@ -285,14 +285,14 @@ Without a value, *set* returns the content of the variable.
 *unset* deletes variables. It is also used to delete Draw variables.
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 set a "Hello world"
 set b "Goodbye" 
 set a 
 == "Hello world" 
 unset a b 
 set a 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 **Note**, that the *set* command can set only one variable, unlike the *dset* command. 
 
@@ -301,10 +301,10 @@ set a
 
 Syntax
 
-~~~~~
+~~~~{.php}
 dset var1 value1 vr2 value2 ... 
 dval name 
-~~~~~
+~~~~
 
 *dset* assigns values to Draw numeric variables. The argument can be any numeric expression including Draw numeric variables. Since all Draw commands expect a numeric expression, there is no need to use $ or *expr*. The *dset* command can assign several variables. If there is an odd number of arguments, the last variable will be assigned a value of 0. If the variable does not exist, it will be created. 
 
@@ -312,7 +312,7 @@ dval name
 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 # z is set to 0 
 dset x 10 y 15 z 
 == 0 
@@ -323,17 +323,17 @@ point p x y z
 # "puts" prints a string 
 puts ;x = [dval x], cos(x/pi) = [dval cos(x/pi)]; 
 == x = 10, cos(x/pi) = -0.99913874099467914 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 **Note,** that in TCL, parentheses are not considered to be special characters. Do not forget to quote an expression if it contains spaces in order to avoid parsing different words. <i>(a + b)</i> is parsed as three words: <i>"(a + b)"</i> or <i>(a+b)</i> are correct.
 
 @subsubsection occt_draw_2_3_3 del, dall
 
-Syntax:      
-~~~~~
+Syntax:
+~~~~{.php}
 del varname_pattern [varname_pattern ...] 
 dall
-~~~~~
+~~~~
 
 *del* command does the same thing as *unset*, but it deletes the variables matched by the pattern.
 
@@ -346,13 +346,13 @@ TCL uses lists. A list is a string containing elements separated by spaces or ta
 This allows you to insert lists within lists. 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 # a list of 3 strings 
 ;a b c; 
 
 # a list of two strings the first is a list of 2 
 ;{a b} c; 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 Many TCL commands return lists and **foreach** is a useful way to create loops on list elements. 
 
@@ -368,16 +368,16 @@ TCL allows looping using control structures. The control structures are implemen
 
 Syntax       
 
-~~~~~
+~~~~{.php}
 if condition script [elseif script .... else script] 
-~~~~~
+~~~~
 
 **If** evaluates the condition and the script to see whether the condition is true. 
 
 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 if {$x > 0} { 
 puts ;positive; 
 } elseif {$x == 0} { 
@@ -385,23 +385,23 @@ puts ;null;
 } else { 
 puts ;negative; 
 } 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 @subsubsection occt_draw_2_5_2 while, for, foreach
 
-Syntax:                  
+Syntax:
 
 
-~~~~~
+~~~~{.php}
 while condition script 
 for init condition reinit script 
 foreach varname list script 
-~~~~~
+~~~~
 
 The three loop structures are similar to their C or csh equivalent. It is important to use braces to delay evaluation. **foreach** will assign the elements of the list to the variable before evaluating the script. \
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 # while example 
 dset x 1.1 
 while {[dval x] < 100} { 
@@ -416,28 +416,28 @@ for {set i 0} {$i < 10} {incr i} {
 } 
 # foreach example 
 foreach object {crapo tomson lucas} {display $object} 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 @subsubsection occt_draw_2_5_3 break, continue
 
-Syntax:                  
+Syntax:
 
-~~~~~
+~~~~{.php}
 break 
 continue 
-~~~~~
+~~~~
 
 Within loops, the **break** and **continue** commands have the same effect as in C. 
 
 **break** interrupts the innermost loop and **continue** jumps to the next iteration. 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 # search the index for which t$i has value ;secret; 
 for {set i 1} {$i <= 100} {incr i} { 
   if {[set t$i] == ;secret;} break; 
 } 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 @subsection occt_draw_2_6 Procedures
 
@@ -454,16 +454,16 @@ As TCL is not a strongly typed language it is very difficult to detect programmi
 
 Syntax:
 
-~~~~~
+~~~~{.php}
 proc argumentlist script 
-~~~~~
+~~~~
 
 **proc** defines a procedure. An argument may have a default value. It is then a list of the form {argument value}. The script is the body of the procedure. 
 
 **return** gives a return value to the procedure. 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 # simple procedure 
 proc hello {} { 
   puts ;hello world; 
@@ -478,17 +478,17 @@ proc fact n {
     return [expr n*[fact [expr n -1]]] 
   } 
 } 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 
 @subsubsection occt_draw_2_6_2 global, upvar
 
-Syntax:                 
+Syntax:
 
-~~~~~
+~~~~{.php}
 global varname [varname ...] 
 upvar varname localname [varname localname ...] 
-~~~~~
+~~~~
 
 
 **global** accesses high level variables. Unlike C, global variables are not visible in procedures. 
@@ -498,7 +498,7 @@ upvar varname localname [varname localname ...]
 **Note** that in the following examples the \$ character is always necessarily used to access the arguments.
  
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 # convert degree to radian 
 # pi is a global variable 
 proc deg2rad (degree} { 
@@ -509,7 +509,7 @@ proc linang {linename x y angle} {
   upvar linename l 
   line l $x $y cos($angle) sin($angle) 
 }
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 @section occt_draw_3 Basic Commands
 
@@ -536,11 +536,11 @@ This section describes several useful commands:
 
 @subsubsection occt_draw_3_1_1 help
 
-Syntax:                  
+Syntax:
 
-~~~~~
+~~~~{.php}
 help [command [helpstring group]] 
-~~~~~
+~~~~
 
 Provides help or modifies the help information. 
 
@@ -549,29 +549,29 @@ Provides help or modifies the help information.
 Specifying the command returns its syntax and in some cases, information on the command, The joker \* is automatically added at the end so that all completing commands are returned as well. 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 # Gives help on all commands starting with *a* 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 
 @subsubsection occt_draw_3_1_2 source
 
 Syntax:
 
-~~~~~
+~~~~{.php}
 source filename 
-~~~~~
+~~~~
 Executes a file. 
 
 The **exit** command will terminate the file. 
 
 @subsubsection occt_draw_3_1_3 spy
 
-Syntax:                  
+Syntax:
 
-~~~~~
+~~~~{.php}
 spy [filename] 
-~~~~~
+~~~~
 
 Saves interactive commands in the file. If spying has already been performed, the current file is closed. **spy** without an argument closes the current file and stops spying. If a file already exists, the file is overwritten. Commands are not appended. 
 
@@ -580,51 +580,51 @@ If a command returns an error it is saved with a comment mark.
 The file created by **spy** can be executed with the **source** command. 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 # all commands will be saved in the file ;session; 
 spy session 
 # the file ;session; is closed and commands are not saved 
 spy 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 
 
 @subsubsection occt_draw_3_1_4 cpulimit
 
-Syntax:                  
+Syntax:
 
-~~~~~
+~~~~{.php}
 cpulimit [nbseconds] 
-~~~~~
+~~~~
 
 **cpulimit**limits a process after the number of seconds specified in nbseconds. It is used in tests to avoid infinite loops. **cpulimit** without arguments removes all existing limits. 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 #limit cpu to one hour 
 cpulimit 3600 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 @subsubsection occt_draw_3_1_5 wait
 
 Syntax:
-~~~~~
+~~~~{.php}
 wait [nbseconds] 
-~~~~~
+~~~~
 Suspends execution for the number of seconds specified in *nbseconds*. The default value is ten (10) seconds. This is a useful command for a slide show. 
 
-~~~~~
+~~~~{.php}
 # You have ten seconds ... 
 wait 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_3_1_6 chrono
 
-Syntax:                  
+Syntax:
 
-~~~~~
+~~~~{.php}
 chrono [ name start/stop/reset/show/restart/[counter text]]
-~~~~~
+~~~~
 
 Without arguments, **chrono** activates Draw chronometers. The elapsed time ,cpu system and cpu user times for each command will be printed. 
 
@@ -637,31 +637,31 @@ With arguments, **chrono** is used to manage activated chronometers. You can per
   * display the current time with specified text (output example - *COUNTER text: N*), command <i>testdiff</i> will compare such outputs between two test runs (counter).
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 chrono 
 ==Chronometers activated. 
 ptorus t 20 5 
 ==Elapsed time: 0 Hours 0 Minutes 0.0318 Seconds 
 ==CPU user time: 0.01 seconds 
 ==CPU system time: 0 seconds 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 @subsection occt_draw_3_2  Variable management commands
 
 @subsubsection occt_draw_3_2_1 isdraw, directory
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 isdraw varname 
 directory [pattern] 
-~~~~~
+~~~~
 
 **isdraw** tests to see if a variable is a Draw variable. **isdraw** will return 1 if there is a Draw value attached to the variable. 
 
 Use **directory** to return a list of all Draw global variables matching a pattern. 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 set a 1 
 isdraw a 
 === 0 
@@ -676,24 +676,24 @@ isdraw c
 
 # to destroy all Draw objects with name containing curve 
 foreach var [directory *curve*] {unset $var} 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 
 @subsubsection occt_draw_3_2_2 whatis, dump
 
 Syntax:
 
-~~~~~
+~~~~{.php}
 whatis varname [varname ...] 
 dump varname [varname ...] 
-~~~~~
+~~~~
 
 **whatis** returns short information about a Draw variable. This is usually the type name. 
 
 **dump** returns a brief type description, the coordinates, and if need be, the parameters of a Draw variable. 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 circle c 0 0 1 0 5 
 whatis c 
 c is a 2d curve 
@@ -706,39 +706,39 @@ Center :0, 0
 XAxis :1, 0 
 YAxis :-0, 1 
 Radius :5 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 **Note** The behavior of *whatis* on other variables (not Draw) is not excellent. 
 
 
 @subsubsection occt_draw_3_2_3 renamevar, copy
 
-Syntax:      
-~~~~~
+Syntax:
+~~~~{.php}
 renamevar varname tovarname [varname tovarname ...] 
 copy varname tovarname [varname tovarname ...] 
-~~~~~
+~~~~
 
   * **renamevar** changes the name of a Draw variable. The original variable will no longer exist. Note that the content is not modified. Only the name is changed. 
   * **copy** creates a new variable with a copy of the content of an existing variable. The exact behavior of **copy** is type dependent; in the case of certain topological variables, the content may still be shared. 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 circle c1 0 0 1 0 5 
 renamevar c1 c2 
 
 # curves are copied, c2 will not be modified 
 copy c2 c3 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 @subsubsection occt_draw_3_2_4 datadir, save, restore
 
 Syntax:
-~~~~~
+~~~~{.php}
 datadir [directory] 
 save variable [filename] 
 restore filename [variablename] 
-~~~~~
+~~~~
 
   * **datadir** without arguments prints the path of the current data directory. 
   * **datadir** with an argument sets the data directory path. \
@@ -751,7 +751,7 @@ If the path starts with a dot (.) only the last directory name will be changed i
 The exact content of the file is type-dependent. They are usually ASCII files and so, architecture independent. 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 # note how TCL accesses shell environment variables 
 # using $env() 
 datadir 
@@ -770,7 +770,7 @@ ls [datadir]
 
 restore theBox 
 == theBox 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 @subsection occt_draw_3_3 User defined commands
 
@@ -782,7 +782,7 @@ restore theBox
 
 #### In *DrawTrSurf* package:
 
-~~~~~
+~~~~{.php}
 void Set(Standard_CString& Name,const gp_Pnt& G) ; 
 void Set(Standard_CString& Name,const gp_Pnt2d& G) ; 
 void Set(Standard_CString& Name, 
@@ -795,51 +795,51 @@ void Set(Standard_CString& Name,
 const Handle(Poly_Polygon3D)& P) ; 
 void Set(Standard_CString& Name, 
 const Handle(Poly_Polygon2D)& P) ; 
-~~~~~
+~~~~
 
 #### In *DBRep* package:
 
-~~~~~
+~~~~{.php}
 void Set(const Standard_CString Name, 
 const TopoDS_Shape& S) ; 
-~~~~~
+~~~~
 
 Example of *DrawTrSurf*
 
-~~~~~
+~~~~{.php}
 Handle(Geom2d_Circle) C1 = new Geom2d_Circle 
 (gce_MakeCirc2d (gp_Pnt2d(50,0,) 25)); 
 DrawTrSurf::Set(char*, C1); 
-~~~~~
+~~~~
 
 Example of *DBRep* 
 
-~~~~~
+~~~~{.php}
 TopoDS_Solid B; 
 B = BRepPrimAPI_MakeBox (10,10,10); 
 DBRep::Set(char*,B); 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_3_3_2 get
 
 #### In *DrawTrSurf* package:
  
-~~~~~
+~~~~{.php}
 Handle_Geom_Geometry Get(Standard_CString& Name) ; 
-~~~~~
+~~~~
 
 #### In *DBRep* package:
 
-~~~~~
+~~~~{.php}
 TopoDS_Shape Get(Standard_CString& Name, 
 const TopAbs_ShapeEnum Typ = TopAbs_SHAPE, 
 const Standard_Boolean Complain 
 = Standard_True) ; 
-~~~~~
+~~~~
 
 Example of *DrawTrSurf*
 
-~~~~~
+~~~~{.php}
 Standard_Integer MyCommand 
 (Draw_Interpretor& theCommands, 
 Standard_Integer argc, char** argv) 
@@ -848,11 +848,11 @@ Standard_Integer argc, char** argv)
 // name 
 Handle (Geom_Geometry) aGeom= DrawTrSurf::Get(argv[1]); 
 } 
-~~~~~
+~~~~
 
 Example of *DBRep*
 
-~~~~~
+~~~~{.php}
 Standard_Integer MyCommand 
 (Draw_Interpretor& theCommands, 
 Standard_Integer argc, char** argv) 
@@ -861,7 +861,7 @@ Standard_Integer argc, char** argv)
 // name 
 TopoDS_Solid B = DBRep::Get(argv[1]); 
 } 
-~~~~~
+~~~~
 
 @section occt_draw_4 Graphic Commands
 
@@ -871,11 +871,11 @@ Graphic commands are used to manage the Draw graphic system. Draw provides a 2d
 
 @subsubsection occt_draw_4_1_1 view, delete
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 view index type [X Y W H] 
 delete [index] 
-~~~~~
+~~~~
 
 **view** is the basic view creation command: it creates a new view with the given index. If a view with this index already exits, it is deleted. The view is created with default parameters and X Y W H are the position and dimensions of the window on the screen. Default values are 0, 0, 500, 500. 
 
@@ -893,7 +893,7 @@ Type selects from the following range:
 The index, the type, the current zoom are displayed in the window title . 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 # this is the content of the mu4 procedure 
 proc mu4 {} { 
 delete 
@@ -902,20 +902,20 @@ view 2 +X+Y 320 450 400 400
 view 3 +Y+Z 728 20 400 400 
 view 4 AXON 728 450 400 400 
 } 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 See also: **axo, pers, top, bottom, left, right, front, back, mu4, v2d, av2d, smallview** 
 
 @subsubsection occt_draw_4_1_2  axo, pers, top, ...
 
-Syntax:      
+Syntax:
 
-~~~~~
+~~~~{.php}
 axo 
 pers 
 ... 
 smallview type 
-~~~~~
+~~~~
 
 All these commands are procedures used to define standard screen layout. They delete all existing views and create new ones. The layout usually complies with the European convention, i.e. a top view is under a front view. 
 
@@ -933,12 +933,12 @@ See also: **view**, **delete**
 
 Syntax:
 
-~~~~~
+~~~~{.php}
     mu [index] value 
     2dmu [index] value 
     zoom [index] value 
     wzoom 
-~~~~~
+~~~~
 
 * **mu** (magnify up) increases the zoom in one or several views by a factor of 10%. 
 * **md** (magnify down) decreases the zoom by the inverse factor. **2dmu** and **2dmd** 
@@ -947,7 +947,7 @@ perform the same on one or all 2d views.
 * **wzoom** (window zoom) allows you to select the area you want to zoom in on with the mouse. You will be prompted to give two of the corners of the area that you want to magnify and the rectangle so defined will occupy the window of the view. 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
     # set a zoom of 2.5 
     zoom 2.5 
 
@@ -955,21 +955,21 @@ perform the same on one or all 2d views.
     mu 1 
 
     # magnify by 20% 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 See also: **fit**, **2dfit** 
 
 
 @subsubsection occt_draw_4_14 pu, pd, pl, pr, 2dpu, 2dpd, 2dpl, 2dpr
 
-Syntax:                  
+Syntax:
 
-~~~~~
+~~~~{.php}
 pu [index] 
 pd [index] 
-~~~~~
+~~~~
 
 The <i>p_</i> commands are used to pan. **pu** and **pd** pan up and down respectively; **pl** and **pr** pan to the left and to the right respectively. Each time the view is displaced by 40 pixels. When no index is given, all views will pan in the direction specified. 
-~~~~~
+~~~~{.php}
 # you have selected one anonometric view
 pu
 # or
@@ -977,69 +977,69 @@ pu 1
 
 # you have selected an mu4 view; the object in the third view will pan up
 pu 3
-~~~~~
+~~~~
 See also: **fit**, **2dfit** 
 
 
 @subsubsection occt_draw_4_1_5 fit, 2dfit
 
-Syntax:      
+Syntax:
 
-~~~~~
+~~~~{.php}
 fit [index] 
 2dfit [index] 
-~~~~~
+~~~~
 
 **fit** computes the best zoom and pans on the content of the view. The content of the view will be centered and fit the whole window. 
 
 When fitting all views a unique zoom is computed for all the views. All views are on the same scale. 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 # fit only view 1 
 fit 1 
 # fit all 2d views 
 2dfit 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 See also: **zoom**, **mu**, **pu** 
 
 
 @subsubsection occt_draw_4_1_6 u, d, l, r
 
-Syntax:      
+Syntax:
 
-~~~~~
+~~~~{.php}
 u [index] 
 d [index] 
 l [index] 
 r [index] 
-~~~~~
+~~~~
 
 **u**, **d**, **l**, **r** Rotate the object in view around its axis by five degrees up, down, left or right respectively. This command is restricted to axonometric and perspective views. 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 # rotate the view up 
 u 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 @subsubsection occt_draw_4_1_7 focal, fu, fd
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 focal [f] 
 fu [index] 
 fd [index] 
-~~~~~
+~~~~
 
 * **focal** changes the vantage point in perspective views. A low f value increases the perspective effect; a high one give a perspective similar to that of an axonometric view. The default value is 500. 
 * **fu** and **fd** increase or decrease the focal value by 10%. **fd** makes the eye closer to the object. 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 pers 
 repeat 10 fd 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 **Note**: Do not use a negative or null focal value. 
 
@@ -1047,58 +1047,58 @@ See also: **pers**
 
 @subsubsection occt_draw_4_1_8 color
 
-Syntax: 
+Syntax:
 
-~~~~~
+~~~~{.php}
 color index name 
-~~~~~
+~~~~
 
 **color** sets the color to a value. The index of the *color* is a value between 0 and 15. The name is an X window color name. The list of these can be found in the file *rgb.txt* in the X library directory. 
 
 The default values are: 0 White, 1 Red, 2 Green, 3 Blue, 4 Cyan, 5 Gold, 6 Magenta, 7 Marron, 8 Orange, 9 Pink, 10 Salmon, 11 Violet, 12 Yellow, 13 Khaki, 14 Coral. 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 # change the value of blue 
 color 3 "navy blue" 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 
 **Note** that the color change will be visible on the next redraw of the views, for example, after *fit* or *mu*, etc. 
 
 @subsubsection occt_draw_4_1_9 dtext
 
-Syntax:      
-~~~~~
+Syntax:
+~~~~{.php}
 dtext [x y [z]] string 
-~~~~~
+~~~~
 
 **dtext** displays a string in all 3d or 2d views. If no coordinates are given, a graphic selection is required. If two coordinates are given, the text is created in a 2d view at the position specified. With 3 coordinates, the text is created in a 3d view. 
 
 The coordinates are real space coordinates. 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 # mark the origins 
 dtext 0 0 bebop 
 dtext 0 0 0 bebop 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 @subsubsection occt_draw_4_1_10 hardcopy, hcolor, xwd
 
-Syntax:      
-~~~~~
+Syntax:
+~~~~{.php}
 hardcopy [index] 
 hcolor index width gray 
 xwd [index] filename 
-~~~~~
+~~~~
 
 * **hardcopy** creates a postcript file called a4.ps in the current directory. This file contains the postscript description of the view index, and will allow you to print the view. 
 * **hcolor** lets you change the aspect of lines in the postscript file. It allows to specify a width and a gray level for one of the 16 colors. **width** is measured in points with default value as 1, **gray** is the gray level from 0 = black to 1 = white with default value as 0. All colors are bound to the default values at the beginning. 
 * **xwd** creates an X window xwd file from an active view. By default, the index is set to1. To visualize an xwd file, use the unix command **xwud**. 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 # all blue lines (color 3) 
 # will be half-width and gray 
 hcolor 3 0.5 
@@ -1110,7 +1110,7 @@ lpr a4.ps
 # make an xwd file and display it 
 xwd theview 
 xwud -in theview 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 **Note:** When more than one view is present, specify the index of the view. 
 
@@ -1121,11 +1121,11 @@ See also: **color**
 
 @subsubsection occt_draw_4_1_11 wclick, pick
 
-Syntax:      
-~~~~~
+Syntax:
+~~~~{.php}
 wclick 
 pick index X Y Z b [nowait] 
-~~~~~
+~~~~
 
 **wclick** defers an event until the mouse button is clicked. The message <code>just click</code> is displayed. 
 
@@ -1141,7 +1141,7 @@ This option is useful for tracking the pointer.
 **Note** that the results are stored in Draw numeric variables.
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 # make a circle at mouse location 
 pick index x y z b 
 circle c x y z 0 0 1 1 0 0 0 30 
@@ -1156,7 +1156,7 @@ pick index x y z b nowait
 circle c x y z 0 0 1 1 0 0 0 30 
 repaint 
 } 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 See also: **repaint** 
 
 
@@ -1171,7 +1171,7 @@ The variable name "." (dot) has a special status in Draw. Any Draw command expec
   * If you do not see what you expected while executing loops or sourcing files, use the **repaint** and **dflush** commands.
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 # OK use dot to dump an object on the screen 
 dump . 
 
@@ -1194,23 +1194,23 @@ point . x y z
 
 # give a name to a graphic object 
 renamevar . x 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 
 @subsubsection occt_draw_4_1_12 autodisplay
 
-Syntax:      
+Syntax:
 
-~~~~~
+~~~~{.php}
 autodisplay [0/1] 
-~~~~~
+~~~~
 
 By default, Draw automatically displays any graphic object as soon as it is created. This behavior known as autodisplay can be removed with the command **autodisplay**. Without arguments, **autodisplay** toggles the autodisplay mode. The command always returns the current mode. 
 
 When **autodisplay** is off, using the dot return argument is ineffective. 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 # c is displayed 
 circle c 0 0 1 0 5 
 
@@ -1221,38 +1221,38 @@ circle c 0 0 1 0 5
 
 # c is erased, but not displayed 
 display c 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 @subsubsection occt_draw_4_1_13 display, donly
 
-Syntax:      
-~~~~~
+Syntax:
+~~~~{.php}
 display varname [varname ...] 
 donly varname [varname ...] 
-~~~~~
+~~~~
 
 * **display** makes objects visible. 
 * **donly** *display only* makes objects visible and erases all other objects. It is very useful to extract one object from a messy screen. 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 \# to see all objects 
 foreach var [directory] {display $var} 
 
 \# to select two objects and erase the other ones 
 donly . . 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 
 @subsubsection occt_draw_4_1_14 erase, clear, 2dclear
 
-Syntax:      
+Syntax:
 
-~~~~~
+~~~~{.php}
 erase [varname varname ...] 
 clear 
 2dclear 
-~~~~~
+~~~~
 
 **erase** removes objects from all views. **erase** without arguments erases everything in 2d and 3d. 
 
@@ -1260,31 +1260,31 @@ clear
 
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 # erase eveerything with a name starting with c_ 
 foreach var [directory c_*] {erase $var} 
 
 # clear 2d views 
 2dclear 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 @subsubsection occt_draw_4_1_14_1 disp, don, era
 
 These commands have the same meaning as correspondingly display, donly and erase, but with the difference that they evaluate the arguments using glob pattern rules.
 For example, to display all objects with names d_1, d_2, d_3, etc. it is enough to run the command:
-~~~~~{.cpp}
+~~~~{.php}
 disp d_*
-~~~~~
+~~~~
 
 @subsubsection occt_draw_4_1_15 repaint, dflush
 
 
 Syntax:
 
-~~~~~
+~~~~{.php}
 repaint 
 dflush 
-~~~~~
+~~~~
 
 * **repaint** forces repainting of views. 
 * **dflush** flushes the graphic buffers. 
@@ -1301,14 +1301,14 @@ See also: @ref occt_draw_4_1_11 "pick" command.
 
 @subsubsection occt_draw_4_2_1 vinit
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vinit 
-~~~~~
+~~~~
 Creates a new View window with the specified *view_name*.
 By default the view is created in the viewer and in the graphic driver shared with the active view.
 
-~~~~
+~~~~{.php}
 name = {driverName/viewerName/viewName | viewerName/viewName | viewName}
 ~~~~
 
@@ -1318,110 +1318,110 @@ If *viewerName* is not specified the viewer will be shared with the active view.
 @subsubsection occt_draw_4_2_2 vhelp
 
 Syntax:
-~~~~~
+~~~~{.php}
 vhelp 
-~~~~~
+~~~~
 Displays help in the 3D viewer window. The help consists in a list of hotkeys and their functionalities. 
 
 @subsubsection occt_draw_4_2_3 vtop
 
 Syntax:
-~~~~~
+~~~~{.php}
 vtop 
-~~~~~
+~~~~
 
 Displays top view in the 3D viewer window. Orientation +X+Y.
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 vinit 
 box b 10 10 10 
 vdisplay b 
 vfit 
 vtop 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 @subsubsection occt_draw_4_2_4 vaxo
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vaxo 
-~~~~~
+~~~~
 
 Displays axonometric view in the 3D viewer window. Orientation +X-Y+Z.
 
 **Example:** 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+~~~~{.php}
 vinit 
 box b 10 10 10 
 vdisplay b 
 vfit 
 vaxo 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~
 
 @subsubsection occt_draw_4_2_5 vsetbg
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vsetbg imagefile [filltype] 
-~~~~~
+~~~~
 
 Loads image file as background. *filltype* must be NONE, CENTERED, TILED or STRETCH. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 vsetbg myimage.brep CENTERED 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_4_2_6 vclear
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vclear 
-~~~~~
+~~~~
 Removes all objects from the viewer. 
 
 @subsubsection occt_draw_4_2_7 vrepaint
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vrepaint 
-~~~~~
+~~~~
 Forcibly redisplays the shape in the 3D viewer window. 
 
 @subsubsection occt_draw_4_2_8 vfit
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vfit 
-~~~~~
+~~~~
 Automatic zoom/panning. Objects in the view are visualized to occupy the maximum surface. 
 
 @subsubsection occt_draw_4_2_9 vzfit
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vzfit 
-~~~~~
+~~~~
 
 Automatic depth panning. Objects in the view are visualized to occupy the maximum 3d space. 
 
 @subsubsection occt_draw_4_2_10  vreadpixel
 
-Syntax:     
-~~~~~
+Syntax:
+~~~~{.php}
 vreadpixel xPixel yPixel [{rgb|rgba|depth|hls|rgbf|rgbaf}=rgba] [name] 
-~~~~~
+~~~~
 Read pixel value for active view.
 
 
 @subsubsection occt_draw_4_2_11  vselect
 
-Syntax:     
-~~~~~
+Syntax:
+~~~~{.php}
 vselect x1 y1 [x2 y2 [x3 y3 ... xn yn]] [-allowoverlap 0|1] [shift_selection = 0|1]
-~~~~~
+~~~~
 
 Emulates different types of selection:
 
@@ -1433,19 +1433,19 @@ Emulates different types of selection:
 
 @subsubsection occt_draw_4_2_12  vmoveto
 
-Syntax:     
+Syntax:
 
-~~~~~
+~~~~{.php}
 vmoveto x y
-~~~~~
+~~~~
 Emulates cursor movement to pixel position (x,y).
 
 @subsubsection occt_draw_4_2_13  vviewparams
 
-Syntax:     
-~~~~~
+Syntax:
+~~~~{.php}
 vviewparams [-scale [s]] [-eye [x y z]] [-at [x y z]] [-up [x y z]] [-proj [x y z]] [-center x y] [-size sx]
-~~~~~
+~~~~
 Gets or sets the current view parameters.
 * If called without arguments, all view parameters are printed.
 * The options are:
@@ -1459,36 +1459,36 @@ Gets or sets the current view parameters.
 
 @subsubsection occt_draw_4_2_14  vchangeselected
 
-Syntax:     
-~~~~~
+Syntax:
+~~~~{.php}
 vchangeselected shape
-~~~~~
+~~~~
 Adds a shape to selection or removes one from it.
 
 @subsubsection occt_draw_4_2_16  vnbselected
 
-Syntax:     
-~~~~~
+Syntax:
+~~~~{.php}
 vnbselected
-~~~~~
+~~~~
 Returns the number of selected objects in the interactive context.
 
 @subsubsection occt_draw_4_2_19  vhlr
 
-Syntax:     
-~~~~~
+Syntax:
+~~~~{.php}
 vhlr is_enabled={on|off} [show_hidden={1|0}]
-~~~~~
+~~~~
 Hidden line removal algorithm:
  * <i>is_enabled</i> applies HLR algorithm.
  * <i>show_hidden</i> if equals to 1, hidden lines are drawn as dotted ones.
 
 @subsubsection occt_draw_4_2_20  vhlrtype
 
-Syntax:     
-~~~~~
+Syntax:
+~~~~{.php}
 vhlrtype  algo_type={algo|polyalgo} [shape_1 ... shape_n]
-~~~~~
+~~~~
 
 Changes the type of HLR algorithm used for shapes.
 If the algo_type is algo, the exact HLR algorithm is used, otherwise the polygonal algorithm is used for defined shapes. 
@@ -1500,14 +1500,14 @@ If no shape is specified through the command arguments, the given HLR algorithm_
 @subsubsection occt_draw_4_2_21 vcamera
 
 Syntax:
-~~~~~
+~~~~{.php}
 vcamera [-ortho] [-projtype]
         [-persp]
         [-fovy   [Angle]] [-distance [Distance]]
         [-stereo] [-leftEye] [-rightEye]
         [-iod [Distance]] [-iodType    [absolute|relative]]
         [-zfocus [Value]] [-zfocusType [absolute|relative]]
-~~~~~
+~~~~
 
 Manages camera parameters.
 Prints the current value when the option is called without argument.
@@ -1530,20 +1530,20 @@ Stereoscopic camera:
  * -zfocusType -- focus type, absolute or relative.
 
 **Example:**
-~~~~~
+~~~~{.php}
 vinit
 box b 10 10 10
 vdisplay b
 vfit
 vcamera -persp
-~~~~~
+~~~~
 
 @subsubsection occt_draw_4_2_22 vstereo
 
 Syntax:
-~~~~~
+~~~~{.php}
 vstereo [0|1] [-mode Mode] [-reverse {0|1}] [-anaglyph Filter]
-~~~~~
+~~~~
 
 Defines the stereo output mode. The following modes are available:
  * quadBuffer -- OpenGL QuadBuffer stereo, requires driver support. Should be called BEFORE *vinit*!
@@ -1557,7 +1557,7 @@ Available Anaglyph filters for -anaglyph:
  * redCyan, redCyanSimple, yellowBlue, yellowBlueSimple, greenMagentaSimple.
 
 **Example:**
-~~~~~
+~~~~{.php}
 vinit
 box b 10 10 10
 vdisplay b
@@ -1566,14 +1566,14 @@ vfit
 vcamera -stereo -iod 1
 vcamera -lefteye
 vcamera -righteye
-~~~~~
+~~~~
 
 @subsubsection occt_draw_4_2_23 vfrustumculling
 
 Syntax:
-~~~~~
+~~~~{.php}
 vfrustumculling [toEnable]
-~~~~~
+~~~~
 
 Enables/disables objects clipping.
 
@@ -1582,15 +1582,15 @@ Enables/disables objects clipping.
 
 @subsubsection occt_draw_4_3_1 vdisplay
 
-Syntax: 
-~~~~~                 
+Syntax:
+~~~~{.php}
 vdisplay [-noupdate|-update] [-local] [-mutable] [-neutral]
          [-trsfPers {pan|zoom|rotate|trihedron|full|none}=none] [-trsfPersPos X Y [Z]] [-3d|-2d|-2dTopDown]
          [-dispMode mode] [-highMode mode]
          [-layer index] [-top|-topmost|-overlay|-underlay]
          [-redisplay]
          name1 [name2] ... [name n]
-~~~~~
+~~~~
 
 Displays named objects.
 Option <i>-local</i> enables display of objects in the local selection context.
@@ -1613,62 +1613,62 @@ Local selection context will be opened if there is not any.
 * *redisplay* recomputes presentation of objects.
 
 **Example:** 
-~~~~
+~~~~{.php}
 vinit 
 box b 40 40 40 10 10 10 
 psphere s 20 
 vdisplay s b 
 vfit 
-~~~~
+~~~~
 
 @subsubsection occt_draw_4_3_2 vdonly
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vdonly [-noupdate|-update] [name1] ...  [name n]
-~~~~
+~~~~
 
 Displays only selected or named objects. If there are no selected or named objects, nothing is done. 
 
 **Example:** 
-~~~~
+~~~~{.php}
 vinit 
 box b 40 40 40 10 10 10 
 psphere s 20 
 vdonly b 
 vfit
-~~~~
+~~~~
  
 @subsubsection occt_draw_4_3_3 vdisplayall
 
-Syntax:                  
-~~~~
+Syntax:
+~~~~{.php}
 vdisplayall [-local]
-~~~~
+~~~~
 
 Displays all erased interactive objects (see vdir and vstate).
 Option <i>-local</i> enables displaying objects in the local selection context.
 
 **Example:** 
-~~~~
+~~~~{.php}
 vinit 
 box b 40 40 40 10 10 10 
 psphere s 20 
 vdisplayall 
 vfit 
-~~~~
+~~~~
 
 @subsubsection occt_draw_4_3_4 verase
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 verase [name1] [name2] … [name n]
-~~~~
+~~~~
 
 Erases some selected or named objects. If there are no selected or named objects, the whole viewer is erased. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 box b1 40 40 40 10 10 10 
 box b2 -40 -40 -40 10 10 10 
@@ -1679,19 +1679,19 @@ vfit
 verase b1 
 # erase second box and sphere 
 verase
-~~~~
+~~~~
 
 @subsubsection occt_draw_4_3_5 veraseall
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 veraseall
-~~~~
+~~~~
 
 Erases all objects displayed in the viewer. 
 
 **Example:**
-~~~~
+~~~~{.php}
 vinit 
 box b1 40 40 40 10 10 10 
 box b2 -40 -40 -40 10 10 10 
@@ -1702,14 +1702,14 @@ vfit
 verase b1 
 # erase second box and sphere 
 verseall
-~~~~
+~~~~
 
 @subsubsection occt_draw_4_3_6 vsetdispmode
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vsetdispmode [name] mode(0,1,2,3)
-~~~~
+~~~~
 
 Sets display mode for all, selected or named objects. 
 * *0* (*WireFrame*), 
@@ -1718,47 +1718,47 @@ Sets display mode for all, selected or named objects.
 * *3* (*Exact HideLineremoval*). 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 box b 10 10 10 
 vdisplay b 
 vsetdispmode 1 
 vfit
-~~~~~
+~~~~
  
 @subsubsection occt_draw_4_3_7 vdisplaytype
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vdisplaytype type
-~~~~
+~~~~
 
 Displays all objects of a given type. 
 The following types are possible: *Point*, *Axis*, *Trihedron*, *PlaneTrihedron*, *Line*, *Circle*, *Plane*, *Shape*, *ConnectedShape*, *MultiConn.Shape*, *ConnectedInter.*, *MultiConn.*, *Constraint* and *Dimension*. 
 
 @subsubsection occt_draw_4_3_8 verasetype
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 verasetype type
-~~~~
+~~~~
 
 Erases all objects of a given type. 
 Possible type is *Point*, *Axis*, *Trihedron*, *PlaneTrihedron*, *Line*, *Circle*, *Plane*, *Shape*, *ConnectedShape*, *MultiConn.Shape*, *ConnectedInter.*, *MultiConn.*, *Constraint* and *Dimension*. 
 
 @subsubsection occt_draw_4_3_9 vtypes
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vtypes
-~~~~
+~~~~
 
 Makes a list of known types and signatures in AIS. 
 
 @subsubsection occt_draw_4_3_10 vaspects
 
 Syntax:
-~~~~~
+~~~~{.php}
 vaspects [-noupdate|-update] [name1 [name2 [...]] | -defaults]
          [-setVisibility 0|1]
          [-setColor ColorName] [-setcolor R G B] [-unsetColor]
@@ -1773,7 +1773,7 @@ vaspects [-noupdate|-update] [name1 [name2 [...]] | -defaults]
          [-isoontriangulation 0|1]
          [-setMaxParamValue {value}]
 
-~~~~~
+~~~~
 
 Manages presentation properties of all, selected or named objects.
 * *-subshapes* -- assigns presentation properties to the specified sub-shapes.
@@ -1781,45 +1781,45 @@ Manages presentation properties of all, selected or named objects.
 If *-defaults* option is used there should not be any names of objects and *-subshapes* specifier.
 
 Aliases:
-~~~~~
+~~~~{.php}
 vsetcolor [-noupdate|-update] [name] ColorName
 
-~~~~~
+~~~~
 
 
 Manages presentation properties (color, material, transparency) of all objects, selected or named.
 
 **Color**. The *ColorName* can be: *BLACK*, *MATRAGRAY*, *MATRABLUE*, *ALICEBLUE*, *ANTIQUEWHITE*, *ANTIQUEWHITE1*, *ANTIQUEWHITE2*, *ANTIQUEWHITE3*, *ANTIQUEWHITE4*, *AQUAMARINE1*, *AQUAMARINE2*, *AQUAMARINE4*, *AZURE*, *AZURE2*, *AZURE3*, *AZURE4*, *BEIGE*, *BISQUE*, *BISQUE2*, *BISQUE3*, *BISQUE4*, *BLANCHEDALMOND*, *BLUE1*, *BLUE2*, *BLUE3*, *BLUE4*, *BLUEVIOLET*, *BROWN*, *BROWN1*, *BROWN2*, *BROWN3*, *BROWN4*, *BURLYWOOD*, *BURLYWOOD1*, *BURLYWOOD2*, *BURLYWOOD3*, *BURLYWOOD4*, *CADETBLUE*, *CADETBLUE1*, *CADETBLUE2*, *CADETBLUE3*, *CADETBLUE4*, *CHARTREUSE*, *CHARTREUSE1*, *CHARTREUSE2*, *CHARTREUSE3*, *CHARTREUSE4*, *CHOCOLATE*, *CHOCOLATE1*, *CHOCOLATE2*, *CHOCOLATE3*, *CHOCOLATE4*, *CORAL*, *CORAL1*, *CORAL2*, *CORAL3*, *CORAL4*, *CORNFLOWERBLUE*, *CORNSILK1*, *CORNSILK2*, *CORNSILK3*, *CORNSILK4*, *CYAN1*, *CYAN2*, *CYAN3*, *CYAN4*, *DARKGOLDENROD*, *DARKGOLDENROD1*, *DARKGOLDENROD2*, *DARKGOLDENROD3*, *DARKGOLDENROD4*, *DARKGREEN*, *DARKKHAKI*, *DARKOLIVEGREEN*, *DARKOLIVEGREEN1*, *DARKOLIVEGREEN2*, *DARKOLIVEGREEN3*, *DARKOLIVEGREEN4*, *DARKORANGE*, *DARKORANGE1*, *DARKORANGE2*, *DARKORANGE3*, *DARKORANGE4*, *DARKORCHID*, *DARKORCHID1*, *DARKORCHID2*, *DARKORCHID3*, *DARKORCHID4*, *DARKSALMON*, *DARKSEAGREEN*, *DARKSEAGREEN1*, *DARKSEAGREEN2*, *DARKSEAGREEN3*, *DARKSEAGREEN4*, *DARKSLATEBLUE*, *DARKSLATEGRAY1*, *DARKSLATEGRAY2*, *DARKSLATEGRAY3*, *DARKSLATEGRAY4*, *DARKSLATEGRAY*, *DARKTURQUOISE*, *DARKVIOLET*, *DEEPPINK*, *DEEPPINK2*, *DEEPPINK3*, *DEEPPINK4*, *DEEPSKYBLUE1*, *DEEPSKYBLUE2*, *DEEPSKYBLUE3*, *DEEPSKYBLUE4*, *DODGERBLUE1*, *DODGERBLUE2*, *DODGERBLUE3*, *DODGERBLUE4*, *FIREBRICK*, *FIREBRICK1*, *FIREBRICK2*, *FIREBRICK3*, *FIREBRICK4*, *FLORALWHITE*, *FORESTGREEN*, *GAINSBORO*, *GHOSTWHITE*, *GOLD*, *GOLD1*, *GOLD2*, *GOLD3*, *GOLD4*, *GOLDENROD*, *GOLDENROD1*, *GOLDENROD2*, *GOLDENROD3*, *GOLDENROD4*, *GRAY*, *GRAY0*, *GRAY1*, *GRAY10*, *GRAY11*, *GRAY12*, *GRAY13*, *GRAY14*, *GRAY15*, *GRAY16*, *GRAY17*, *GRAY18*, *GRAY19*, *GRAY2*, *GRAY20*, *GRAY21*, *GRAY22*, *GRAY23*, *GRAY24*, *GRAY25*, *GRAY26*, *GRAY27*, *GRAY28*, *GRAY29*, *GRAY3*, *GRAY30*, *GRAY31*, *GRAY32*, *GRAY33*, *GRAY34*, *GRAY35*, *GRAY36*, *GRAY37*, *GRAY38*, *GRAY39*, *GRAY4*, *GRAY40*, *GRAY41*, *GRAY42*, *GRAY43*, *GRAY44*, *GRAY45*, *GRAY46*, *GRAY47*, *GRAY48*, *GRAY49*, *GRAY5*, *GRAY50*, *GRAY51*, *GRAY52*, *GRAY53*, *GRAY54*, *GRAY55*, *GRAY56*, *GRAY57*, *GRAY58*, *GRAY59*, *GRAY6*, *GRAY60*, *GRAY61*, *GRAY62*, *GRAY63*, *GRAY64*, *GRAY65*, *GRAY66*, *GRAY67*, *GRAY68*, *GRAY69*, *GRAY7*, *GRAY70*, *GRAY71*, *GRAY72*, *GRAY73*, *GRAY74*, *GRAY75*, *GRAY76*, *GRAY77*, *GRAY78*, *GRAY79*, *GRAY8*, *GRAY80*, *GRAY81*, *GRAY82*, *GRAY83*, *GRAY85*, *GRAY86*, *GRAY87*, *GRAY88*, *GRAY89*, *GRAY9*, *GRAY90*, *GRAY91*, *GRAY92*, *GRAY93*, *GRAY94*, *GRAY95*, *GREEN*, *GREEN1*, *GREEN2*, *GREEN3*, *GREEN4*, *GREENYELLOW*, *GRAY97*, *GRAY98*, *GRAY99*, *HONEYDEW*, *HONEYDEW2*, *HONEYDEW3*, *HONEYDEW4*, *HOTPINK*, *HOTPINK1*, *HOTPINK2*, *HOTPINK3*, *HOTPINK4*, *INDIANRED*, *INDIANRED1*, *INDIANRED2*, *INDIANRED3*, *INDIANRED4*, *IVORY*, *IVORY2*, *IVORY3*, *IVORY4*, *KHAKI*, *KHAKI1*, *KHAKI2*, *KHAKI3*, *KHAKI4*, *LAVENDER*, *LAVENDERBLUSH1*, *LAVENDERBLUSH2*, *LAVENDERBLUSH3*, *LAVENDERBLUSH4*, *LAWNGREEN*, *LEMONCHIFFON1*, *LEMONCHIFFON2*, *LEMONCHIFFON3*, *LEMONCHIFFON4*, *LIGHTBLUE*, *LIGHTBLUE1*, *LIGHTBLUE2*, *LIGHTBLUE3*, *LIGHTBLUE4*, *LIGHTCORAL*, *LIGHTCYAN1*, *LIGHTCYAN2*, *LIGHTCYAN3*, *LIGHTCYAN4*, *LIGHTGOLDENROD*, *LIGHTGOLDENROD1*, *LIGHTGOLDENROD2*, *LIGHTGOLDENROD3*, *LIGHTGOLDENROD4*, *LIGHTGOLDENRODYELLOW*, *LIGHTGRAY*, *LIGHTPINK*, *LIGHTPINK1*, *LIGHTPINK2*, *LIGHTPINK3*, *LIGHTPINK4*, *LIGHTSALMON1*, *LIGHTSALMON2*, *LIGHTSALMON3*, *LIGHTSALMON4*, *LIGHTSEAGREEN*, *LIGHTSKYBLUE*, *LIGHTSKYBLUE1*, *LIGHTSKYBLUE2*, *LIGHTSKYBLUE3*, *LIGHTSKYBLUE4*, *LIGHTSLATEBLUE*, *LIGHTSLATEGRAY*, *LIGHTSTEELBLUE*, *LIGHTSTEELBLUE1*, *LIGHTSTEELBLUE2*, *LIGHTSTEELBLUE3*, *LIGHTSTEELBLUE4*, *LIGHTYELLOW*, *LIGHTYELLOW2*, *LIGHTYELLOW3*, *LIGHTYELLOW4*, *LIMEGREEN*, *LINEN*, *MAGENTA1*, *MAGENTA2*, *MAGENTA3*, *MAGENTA4*, *MAROON*, *MAROON1*, *MAROON2*, *MAROON3*, *MAROON4*, *MEDIUMAQUAMARINE*, *MEDIUMORCHID*, *MEDIUMORCHID1*, *MEDIUMORCHID2*, *MEDIUMORCHID3*, *MEDIUMORCHID4*, *MEDIUMPURPLE*, *MEDIUMPURPLE1*, *MEDIUMPURPLE2*, *MEDIUMPURPLE3*, *MEDIUMPURPLE4*, *MEDIUMSEAGREEN*, *MEDIUMSLATEBLUE*, *MEDIUMSPRINGGREEN*, *MEDIUMTURQUOISE*, *MEDIUMVIOLETRED*, *MIDNIGHTBLUE*, *MINTCREAM*, *MISTYROSE*, *MISTYROSE2*, *MISTYROSE3*, *MISTYROSE4*, *MOCCASIN*, *NAVAJOWHITE1*, *NAVAJOWHITE2*, *NAVAJOWHITE3*, *NAVAJOWHITE4*, *NAVYBLUE*, *OLDLACE*, *OLIVEDRAB*, *OLIVEDRAB1*, *OLIVEDRAB2*, *OLIVEDRAB3*, *OLIVEDRAB4*, *ORANGE*, *ORANGE1*, *ORANGE2*, *ORANGE3*, *ORANGE4*, *ORANGERED*, *ORANGERED1*, *ORANGERED2*, *ORANGERED3*, *ORANGERED4*, *ORCHID*, *ORCHID1*, *ORCHID2*, *ORCHID3*, *ORCHID4*, *PALEGOLDENROD*, *PALEGREEN*, *PALEGREEN1*, *PALEGREEN2*, *PALEGREEN3*, *PALEGREEN4*, *PALETURQUOISE*, *PALETURQUOISE1*, *PALETURQUOISE2*, *PALETURQUOISE3*, *PALETURQUOISE4*, *PALEVIOLETRED*, *PALEVIOLETRED1*, *PALEVIOLETRED2*, *PALEVIOLETRED3*, *PALEVIOLETRED4*, *PAPAYAWHIP*, *PEACHPUFF*, *PEACHPUFF2*, *PEACHPUFF3*, *PEACHPUFF4*, *PERU*, *PINK*, *PINK1*, *PINK2*, *PINK3*, *PINK4*, *PLUM*, *PLUM1*, *PLUM2*, *PLUM3*, *PLUM4*, *POWDERBLUE*, *PURPLE*, *PURPLE1*, *PURPLE2*, *PURPLE3*, *PURPLE4*, *RED*, *RED1*, *RED2*, *RED3*, *RED4*, *ROSYBROWN*, *ROSYBROWN1*, *ROSYBROWN2*, *ROSYBROWN3*, *ROSYBROWN4*, *ROYALBLUE*, *ROYALBLUE1*, *ROYALBLUE2*, *ROYALBLUE3*, *ROYALBLUE4*, *SADDLEBROWN*, *SALMON*, *SALMON1*, *SALMON2*, *SALMON3*, *SALMON4*, *SANDYBROWN*, *SEAGREEN*, *SEAGREEN1*, *SEAGREEN2*, *SEAGREEN3*, *SEAGREEN4*, *SEASHELL*, *SEASHELL2*, *SEASHELL3*, *SEASHELL4*, *BEET*, *TEAL*, *SIENNA*, *SIENNA1*, *SIENNA2*, *SIENNA3*, *SIENNA4*, *SKYBLUE*, *SKYBLUE1*, *SKYBLUE2*, *SKYBLUE3*, *SKYBLUE4*, *SLATEBLUE*, *SLATEBLUE1*, *SLATEBLUE2*, *SLATEBLUE3*, *SLATEBLUE4*, *SLATEGRAY1*, *SLATEGRAY2*, *SLATEGRAY3*, *SLATEGRAY4*, *SLATEGRAY*, *SNOW*, *SNOW2*, *SNOW3*, *SNOW4*, *SPRINGGREEN*, *SPRINGGREEN2*, *SPRINGGREEN3*, *SPRINGGREEN4*, *STEELBLUE*, *STEELBLUE1*, *STEELBLUE2*, *STEELBLUE3*, *STEELBLUE4*, *TAN*, *TAN1*, *TAN2*, *TAN3*, *TAN4*, *THISTLE*, *THISTLE1*, *THISTLE2*, *THISTLE3*, *THISTLE4*, *TOMATO*, *TOMATO1*, *TOMATO2*, *TOMATO3*, *TOMATO4*, *TURQUOISE*, *TURQUOISE1*, *TURQUOISE2*, *TURQUOISE3*, *TURQUOISE4*, *VIOLET*, *VIOLETRED*, *VIOLETRED1*, *VIOLETRED2*, *VIOLETRED3*, *VIOLETRED4*, *WHEAT*, *WHEAT1*, *WHEAT2*, *WHEAT3*, *WHEAT4*, *WHITE*, *WHITESMOKE*, *YELLOW*, *YELLOW1*, *YELLOW2*, *YELLOW3*, *YELLOW4* and *YELLOWGREEN*.
-~~~~~
+~~~~{.php}
 vaspects    [name] [-setcolor ColorName] [-setcolor R G B] [-unsetcolor]
 vsetcolor   [name] ColorName
 vunsetcolor [name]
-~~~~~
+~~~~
 
 **Transparency. The *Transp* may be between 0.0 (opaque) and 1.0 (fully transparent).
 **Warning**: at 1.0 the shape becomes invisible.
-~~~~~
+~~~~{.php}
 vaspects           [name] [-settransparency Transp] [-unsettransparency]
 vsettransparency   [name] Transp
 vunsettransparency [name]
-~~~~~
+~~~~
 
 **Material**. The *MatName* can be *BRASS*, *BRONZE*, *COPPER*, *GOLD*, *PEWTER*, *PLASTER*, *PLASTIC*, *SILVER*, *STEEL*, *STONE*, *SHINY_PLASTIC*, *SATIN*, *METALIZED*, *NEON_GNC*, *CHROME*, *ALUMINIUM*, *OBSIDIAN*, *NEON_PHC*, *JADE*, *WATER*, *GLASS*, *DIAMOND* or *CHARCOAL*.
-~~~~~
+~~~~{.php}
 vaspects       [name] [-setmaterial MatName] [-unsetmaterial]
 vsetmaterial   [name] MatName
 vunsetmaterial [name]
-~~~~~
+~~~~
 
 **Line width**. Specifies width of the edges. The *LineWidth* may be between 0.0 and 10.0.
-~~~~~
+~~~~{.php}
 vaspects    [name] [-setwidth LineWidth] [-unsetwidth]
 vsetwidth   [name] LineWidth
 vunsetwidth [name]
-~~~~~
+~~~~
 
 **Example:**
-~~~~~
+~~~~{.php}
 vinit
 box b 10 10 10
 vdisplay b
@@ -1828,7 +1828,7 @@ vfit
 vsetdispmode b 1
 vaspects -setcolor red -settransparency 0.2
 vrotate 10 10 10
-~~~~~
+~~~~
 
 
 
@@ -1837,38 +1837,38 @@ vrotate 10 10 10
 
 @subsubsection occt_draw_4_3_11 vsetshading
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vsetshading shapename [coefficient]
-~~~~
+~~~~
 
 Sets deflection coefficient that defines the quality of the shape’s representation in the shading mode. Default coefficient is 0.0008. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 psphere s 20 
 vdisplay s 
 vfit 
 vsetdispmode 1 
 vsetshading s 0.005
-~~~~~
+~~~~
  
 @subsubsection occt_draw_4_3_12 vunsetshading
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vunsetshading [shapename]
-~~~~
+~~~~
 
 Sets default deflection coefficient (0.0008) that defines the quality of the shape’s representation in the shading mode.
 
 @subsubsection occt_draw_4_3_13 vsetam
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vsetam [shapename] mode
-~~~~
+~~~~
 
 Activates selection mode for all selected or named shapes: 
 * *0* for *shape* itself, 
@@ -1881,55 +1881,55 @@ Activates selection mode for all selected or named shapes:
 * *7* (*compounds*).
  
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 box b 10 10 10 
 vdisplay b 
 vfit 
 vsetam b 2
-~~~~~
+~~~~
  
 @subsubsection occt_draw_4_3_14 vunsetam
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vunsetam
-~~~~
+~~~~
 
 Deactivates all selection modes for all shapes. 
 
 @subsubsection occt_draw_4_3_15 vdump
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vdump <filename>.{png|bmp|jpg|gif} [-width Width -height Height]
       [-buffer rgb|rgba|depth=rgb]
       [-stereo mono|left|right|blend|sideBySide|overUnder=mono]
 
-~~~~
+~~~~
 
 Extracts the contents of the viewer window to a image file.
 
 @subsubsection occt_draw_4_3_16 vdir
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vdir
-~~~~
+~~~~
 
 Displays the list of displayed objects. 
 
 @subsubsection occt_draw_4_3_17 vsub
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vsub 0/1(on/off)[shapename]
-~~~~
+~~~~
 
 Hilights/unhilights named or selected objects which are displayed at neutral state with subintensity color.
  
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 box b 10 10 10 
 psphere s 20 
@@ -1937,14 +1937,14 @@ vdisplay b s
 vfit 
 vsetdispmode 1 
 vsub b 1
-~~~~
+~~~~
 
 @subsubsection occt_draw_4_3_20 vsensdis
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vsensdis
-~~~~
+~~~~
 
 Displays active entities (sensitive entities of one of the standard types corresponding to active selection modes). 
 
@@ -1961,34 +1961,34 @@ Custom (application-defined) sensitive entity types are not processed by this co
 
 @subsubsection occt_draw_4_3_21 vsensera
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vsensera
-~~~~
+~~~~
 
 Erases active entities. 
 
 @subsubsection occt_draw_4_3_23 vr
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vr filename
-~~~~
+~~~~
 
 Reads shape from BREP-format file and displays it in the viewer. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 vr myshape.brep
-~~~~~
+~~~~
  
 @subsubsection occt_draw_4_3_24 vstate
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vstate [-entities] [-hasSelected] [name1] ... [nameN]
-~~~~
+~~~~
 
 Reports show/hidden state for selected or named objects:
  * *entities* -- prints low-level information about detected entities;
@@ -1997,21 +1997,21 @@ Reports show/hidden state for selected or named objects:
 @subsubsection occt_draw_4_3_25 vraytrace
 
 Syntax:
-~~~~~
+~~~~{.php}
 vraytrace [0/1]
-~~~~~
+~~~~
 
 Turns on/off ray tracing renderer.
 
 @subsubsection occt_draw_4_3_26 vrenderparams
 
 Syntax:
-~~~~~
+~~~~{.php}
 vrenderparams [-rayTrace|-raster] [-rayDepth 0..10] [-shadows {on|off}]
               [-reflections {on|off}] [-fsaa {on|off}] [-gleam {on|off}]
               [-gi {on|off}] [-brng {on|off}] [-env {on|off}]
               [-shadin {color|flat|gouraud|phong}]
-~~~~~
+~~~~
 
 Manages rendering parameters:
 * rayTrace     -- Enables  GPU ray-tracing
@@ -2030,46 +2030,46 @@ Unlike *vcaps*, these parameters dramatically change visual properties.
 The command is intended to control presentation quality depending on hardware capabilities and performance.
 
 **Example:**
-~~~~~
+~~~~{.php}
 vinit
 box b 10 10 10
 vdisplay b
 vfit
 vraytrace 1
 vrenderparams -shadows 1 -reflections 1 -fsaa 1
-~~~~~
+~~~~
 @subsubsection occt_draw_4_3_27 vshaderprog
 
 Syntax:
-~~~~~
+~~~~{.php}
    'vshaderprog [name] pathToVertexShader pathToFragmentShader'
 or 'vshaderprog [name] off'   to disable GLSL program
 or 'vshaderprog [name] phong' to enable per-pixel lighting calculations
-~~~~~
+~~~~
 
 Enables rendering using a shader program.
 
 @subsubsection occt_draw_4_3_28 vsetcolorbg
 
 Syntax:
-~~~~~
+~~~~{.php}
 vsetcolorbg r g b
-~~~~~
+~~~~
 
 Sets background color.
 
 **Example:**
-~~~~~
+~~~~{.php}
 vinit
 vsetcolorbg 200 0 200
-~~~~~
+~~~~
 
 @subsection occt_draw_4_4 AIS viewer -- object commands
 
 @subsubsection occt_draw_4_4_1 vtrihedron
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vtrihedron name [-dispMode {wf|sh|wireframe|shading}]
                 [-origin x y z ]
                 [-zaxis u v w -xaxis u v w ]
@@ -2088,12 +2088,12 @@ vtrihedron name [-dispMode {wf|sh|wireframe|shading}]
                                         |YArrow|ZArrow|XOYAxis|YOZAxis"
                                         |XOZAxis|Whole} value]
 
-~~~~
+~~~~
 
 Creates a new *AIS_Trihedron* object or changes existing trihedron. If no argument is set, the default trihedron (0XYZ) is created.
 
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 vtrihedron tr1
 
@@ -2101,92 +2101,92 @@ vtrihedron t2 -dispmode shading -origin -200 -200 -300
 vtrihedron t2 -color XAxis Quantity_NOC_RED
 vtrihedron t2 -color YAxis Quantity_NOC_GREEN
 vtrihedron t2 -color ZAxis|Origin Quantity_NOC_BLUE1
-~~~~
+~~~~
 
 @subsubsection occt_draw_4_4_2 vplanetri
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vplanetri name
-~~~~
+~~~~
 
 Creates a plane from a trihedron selection. If no arguments are set, the default plane is created. 
 
 
 @subsubsection occt_draw_4_4_3 vsize
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vsize [name] [size]
-~~~~
+~~~~
 
 Changes the size of a named or selected trihedron. If the name is not defined: it affects the selected trihedrons otherwise nothing is done. If the value is not defined, it is set to 100 by default.
  
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 vtrihedron tr1 
 vtrihedron tr2 0 0 0 1 0 0 1 0 0 
 vsize tr2 400
-~~~~
+~~~~
 
 @subsubsection occt_draw_4_4_4 vaxis
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vaxis name [Xa Ya Za Xb Yb Zb]
-~~~~
+~~~~
 
 Creates an axis. If  the values are not defined, an axis is created by interactive selection of two vertices or one edge
  
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 vtrihedron tr 
 vaxis axe1 0 0 0 1 0 0 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_4_4_5 vaxispara
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vaxispara name
-~~~~
+~~~~
 
 Creates an axis by interactive selection of an edge and a vertex. 
 
 @subsubsection occt_draw_4_4_6 vaxisortho
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vaxisotrho name
-~~~~
+~~~~
 
 Creates an axis by interactive selection of an edge and a vertex. The axis will be orthogonal to the selected edge. 
 
 @subsubsection occt_draw_4_4_7 vpoint
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vpoint name [Xa Ya Za]
-~~~~
+~~~~
 
 Creates a point from coordinates. If the values are not defined, a point is created by interactive selection of a vertice or an edge (in the center of the edge). 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 vpoint p 0 0 0 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_4_4_8 vplane
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vplane name [AxisName] [PointName] 
 vplane name [PointName] [PointName] [PointName] 
 vplane name [PlaneName] [PointName]
-~~~~
+~~~~
 
 Creates a plane from named or interactively selected entities.
 TypeOfSensitivity:
@@ -2194,87 +2194,87 @@ TypeOfSensitivity:
  * 1 -- Boundary
 
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 vpoint p1 0 50 0 
 vaxis axe1 0 0 0 0 0 1 
 vtrihedron tr 
 vplane plane1 axe1 p1 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_4_4_9 vplanepara
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vplanepara name
-~~~~
+~~~~
 
 Creates a plane from interactively selected vertex and face. 
 
 @subsubsection occt_draw_4_4_10 vplaneortho
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vplaneortho name
-~~~~
+~~~~
 
 Creates a plane from interactive selected face and coplanar edge. 
 
 @subsubsection occt_draw_4_4_11 vline
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vline name [PointName] [PointName] 
 vline name [Xa Ya Za Xb Yb Zb]
-~~~~
+~~~~
 
 Creates a line from coordinates, named or interactively selected vertices. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 vtrihedron tr 
 vpoint p1 0 50 0 
 vpoint p2 50 0 0 
 vline line1 p1 p2 
 vline line2 0 0 0 50 0 1 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_4_4_12 vcircle
 
-Syntax:      
-~~~~~
+Syntax:
+~~~~{.php}
 vcircle name [PointName PointName PointName IsFilled] 
 vcircle name [PlaneName PointName Radius IsFilled] 
-~~~~~
+~~~~
 
 Creates a circle from named or interactively selected entities.  Parameter IsFilled is defined as 0 or 1.
  
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 vtrihedron tr 
 vpoint p1 0 50 0 
 vpoint p2 50 0 0 
 vpoint p3 0 0 0 
 vcircle circle1 p1 p2 p3 1
-~~~~
+~~~~
 
 @subsubsection occt_draw_4_4_13 vtri2d
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vtri2d name
-~~~~
+~~~~
 
 Creates a plane with a 2D trihedron from an interactively selected face. 
 
 @subsubsection occt_draw_4_4_14 vselmode
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vselmode [object] mode_number is_turned_on=(1|0)
-~~~~
+~~~~
 
 Sets the selection mode for an object. If the object value is not defined, the selection mode is set for all displayed objects. 
 *Mode_number* is a non-negative integer encoding different interactive object classes.
@@ -2293,25 +2293,25 @@ For shapes the following *mode_number* values are allowed:
  * 0 if mode is to be switched off
 
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 vpoint p1 0 0 0 
 vpoint p2 50 0 0 
 vpoint p3 25 40 0 
 vtriangle triangle1 p1 p2 p3 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_4_4_15 vconnect
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vconnect vconnect name Xo Yo Zo object1 object2 ... [color=NAME]
-~~~~
+~~~~
 
 Creates *AIS_ConnectedInteractive* object from the input object and location and displays it.
 
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 vpoint p1 0 0 0 
 vpoint p2 50 0 0 
@@ -2319,49 +2319,49 @@ vsegment segment p1 p2
 restore CrankArm.brep obj 
 vdisplay obj 
 vconnect new obj 100100100 1 0 0 0 0 1
-~~~~
+~~~~
 
 @subsubsection occt_draw_4_4_16 vtriangle
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vtriangle name PointName PointName PointName
-~~~~
+~~~~
 
 Creates and displays a filled triangle from named points. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 vpoint p1 0 0 0 
 vpoint p2 50 0 0 
 vpoint p3 25 40 0 
 vtriangle triangle1 p1 p2 p3
-~~~~
+~~~~
 
 @subsubsection occt_draw_4_4_17 vsegment
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 vsegment name PointName PointName 
-~~~~~
+~~~~
 
 Creates and displays a segment from named points. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 Vinit 
 vpoint p1 0 0 0 
 vpoint p2 50 0 0 
 vsegment segment p1 p2 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_4_4_18 vpointcloud
 
 Syntax:
-~~~~~
+~~~~{.php}
 vpointcloud name shape [-randColor] [-normals] [-noNormals]
-~~~~~
+~~~~
 
 Creates an interactive object for an arbitrary set of points from the triangulated shape.
 Additional options:
@@ -2369,9 +2369,9 @@ Additional options:
  * *normals*   -- generates a normal per point (default);
  * *noNormals* -- does not generate a normal per point.
 
-~~~~~
+~~~~{.php}
 vpointcloud name x y z r npts {surface|volume} [-randColor] [-normals] [-noNormals]
-~~~~~
+~~~~
 Creates an arbitrary set of points (npts) randomly distributed on a spheric surface or within a spheric volume (x y z r).
 Additional options:
  * *randColor* -- generates a random color per point;
@@ -2379,16 +2379,16 @@ Additional options:
  * *noNormals* -- does not generate a normal per point.
 
 **Example:**
-~~~~~
+~~~~{.php}
 vinit
 vpointcloud pc 0 0 0 100 100000 surface -randColor
 vfit
-~~~~~
+~~~~
 
 @subsubsection occt_draw_4_4_19 vclipplane
 
 Syntax:
-~~~~~
+~~~~{.php}
 vclipplane maxplanes <view_name> -- gets plane limit for the view.
 vclipplane create <plane_name> -- creates a new plane.
 vclipplane delete <plane_name> -- deletes a plane.
@@ -2404,12 +2404,12 @@ vclipplane change <plane_name> capping texscale <sx> <sy> -- sets texture scale.
 vclipplane change <plane_name> capping texorigin <tx> <ty> -- sets texture origin.
 vclipplane change <plane_name> capping texrotate <angle> -- sets texture rotation.
 vclipplane change <plane_name> capping hatch on/off/<id> -- sets hatching mask.
-~~~~~
+~~~~
 
 Manages clipping planes
 
 **Example:**
-~~~~~
+~~~~{.php}
 vinit
 vclipplane create pln1
 vclipplane change pln1 equation 1 0 0 -0.1
@@ -2420,12 +2420,12 @@ vsetdispmode 1
 vfit
 vrotate 10 10 10
 vselect 100 100
-~~~~~
+~~~~
 
 @subsubsection occt_draw_4_4_20 vdimension
 
 Syntax:
-~~~~~
+~~~~{.php}
 vdimension name {-angle|-length|-radius|-diameter} -shapes shape1 [shape2 [shape3]]
                 [-text 3d|2d wf|sh|wireframe|shading IntegerSize]
                 [-label left|right|hcenter|hfit top|bottom|vcenter|vfit]
@@ -2435,14 +2435,14 @@ vdimension name {-angle|-length|-radius|-diameter} -shapes shape1 [shape2 [shape
                                [-autovalue] [-value CustomRealValue] [-textvalue CustomTextValue]
                 [-dispunits DisplayUnitsString]
                 [-modelunits ModelUnitsString] [-showunits | -hideunits]
-~~~~~
+~~~~
 
 Builds angle, length, radius or diameter dimension interactive object **name**.
 
 **Attention:** length dimension can't be built without working plane.
 
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit
 vpoint p1 0 0 0
 vpoint p2 50 50 0
@@ -2454,12 +2454,12 @@ vdimension dim2 -angle -shapes p1 p2 p3
 vcircle circle p1 p2 p3 0
 vdimension dim3 -radius -shapes circle
 vfit
-~~~~~
+~~~~
 
 @subsubsection occt_draw_4_4_21 vdimparam
 
 Syntax:
-~~~~~
+~~~~{.php}
 vdimparam name [-text 3d|2d wf|sh|wireframe|shading IntegerSize]
                [-label left|right|hcenter|hfit top|bottom|vcenter|vfit]
                [-arrow external|internal|fit]
@@ -2473,12 +2473,12 @@ vdimparam name [-text 3d|2d wf|sh|wireframe|shading IntegerSize]
                [-dispunits DisplayUnitsString]
                [-modelunits ModelUnitsString]
                [-showunits | -hideunits]
-~~~~~
+~~~~
 
 Sets parameters for angle, length, radius and diameter dimension **name**.
 
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit
 vpoint p1 0 0 0
 vpoint p2 50 50 0
@@ -2487,20 +2487,20 @@ vdimparam dim1 -flyout -15 -arrowlength 4 -showunits -value 10
 vfit
 vdimparam dim1 -textvalue "w_1"
 vdimparam dim1 -autovalue
-~~~~~
+~~~~
 
 @subsubsection occt_draw_4_4_22 vangleparam
 
 Syntax:
-~~~~~
+~~~~{.php}
 vangleparam name [-type interior|exterior]
                  [-showarrow first|second|both|none]
-~~~~~
+~~~~
 
 Sets parameters for angle dimension **name**.
 
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit
 vpoint p1 0 0 0
 vpoint p2 10 0 0
@@ -2508,20 +2508,20 @@ vpoint p3 10 5 0
 vdimension dim1 -angle -plane xoy -shapes p1 p2 p3
 vfit
 vangleparam dim1 -type exterior -showarrow first
-~~~~~
+~~~~
 
 @subsubsection occt_draw_4_4_23 vlengthparam
 
 Syntax:
-~~~~~
+~~~~{.php}
 vlengthparam name [-type interior|exterior]
                   [-showarrow first|second|both|none]
-~~~~~
+~~~~
 
 Sets parameters for length dimension **name**.
 
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit
 vpoint p1 20 20 0
 vpoint p2 80 80 0
@@ -2530,14 +2530,14 @@ vtop
 vfit
 vzoom 0.5
 vlengthparam dim1 -direction ox
-~~~~~
+~~~~
 
 @subsubsection occt_draw_4_4_24 vmovedim
 
 Syntax:
-~~~~~
+~~~~{.php}
 vmovedim [name] [x y z]
-~~~~~
+~~~~
 
 Moves picked or named (if **name** parameter is defined) dimension
 to picked mouse position or input point with coordinates **x**,**y**,**z**.
@@ -2545,13 +2545,13 @@ Text label of dimension **name** is moved to position, another parts of dimensio
 are adjusted.
 
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit
 vpoint p1 0 0 0
 vpoint p2 50 50 0
 vdimension dim1 -length -plane xoy -shapes p1 p2
 vmovedim dim1 -10 30 0
-~~~~~
+~~~~
 
 
 @subsection occt_draw_4_5 AIS viewer -- Mesh Visualization Service
@@ -2560,24 +2560,24 @@ vmovedim dim1 -10 30 0
 
 @subsubsection occt_draw_4_5_1 meshfromstl
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 meshfromstl meshname file
-~~~~
+~~~~
 
 Creates a *MeshVS_Mesh* object based on STL file data. The object will be displayed immediately.
  
 **Example:**
-~~~~
+~~~~{.php}
 meshfromstl mesh myfile.stl
-~~~~
+~~~~
 
 @subsubsection occt_draw_4_5_2 meshdispmode
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 meshdispmode meshname displaymode
-~~~~
+~~~~
 
 Changes the display mode of object **meshname**. The **displaymode** is integer, which can be:
 * *1* for *wireframe*, 
@@ -2585,18 +2585,18 @@ Changes the display mode of object **meshname**. The **displaymode** is integer,
 * *3* for *shrink* mode. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 meshfromstl mesh myfile.stl 
 meshdispmode mesh 2
-~~~~
+~~~~
 
 @subsubsection occt_draw_4_5_3 meshselmode
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 meshselmode meshname selectionmode
-~~~~
+~~~~
 
 Changes the selection mode of object **meshname**. The *selectionmode* is integer OR-combination of mode flags. The basic flags are the following: 
 * *1* -- node selection;
@@ -2605,50 +2605,50 @@ Changes the selection mode of object **meshname**. The *selectionmode* is intege
 * *8* -- faces.
  
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 meshfromstl mesh myfile.stl 
 meshselmode mesh 1
-~~~~
+~~~~
 
 @subsubsection occt_draw_4_5_4 meshshadcolor
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 meshshadcolor meshname red green blue
-~~~~
+~~~~
 
 Changes the face interior color of object **meshname**. The *red*, *green* and *blue* are real values between *0* and *1*.
  
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 meshfromstl mesh myfile.stl 
 meshshadcolormode mesh 0.5 0.5 0.5
-~~~~
+~~~~
 
 @subsubsection occt_draw_4_5_5 meshlinkcolor
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 meshlinkcolor meshname red green blue
-~~~~
+~~~~
 
 Changes the color of face borders for object **meshname**. The *red*, *green* and *blue* are real values between *0* and *1*.
  
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 meshfromstl mesh myfile.stl 
 meshlinkcolormode mesh 0.5 0.5 0.5
-~~~~
+~~~~
 
 @subsubsection occt_draw_4_5_6 meshmat
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 meshmat meshname material
-~~~~
+~~~~
 
 Changes the material of object **meshname**.
 
@@ -2676,117 +2676,117 @@ Changes the material of object **meshname**.
 * *20 -- UserDefined*
  
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 meshfromstl mesh myfile.stl 
 meshmat mesh JADE 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_4_5_7 meshshrcoef
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 meshshrcoef meshname shrinkcoefficient
-~~~~
+~~~~
 
 Changes the value of shrink coefficient used in the shrink mode. In the shrink mode the face is shown as a congruent part of a usual face, so that *shrinkcoefficient* controls the value of this part. The *shrinkcoefficient* is a positive real number.
  
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 meshfromstl mesh myfile.stl 
 meshshrcoef mesh 0.05
-~~~~
+~~~~
 
 @subsubsection occt_draw_4_5_8 meshshow
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 meshshow meshname
-~~~~
+~~~~
 
 Displays **meshname** in the viewer (if it is erased).
  
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 meshfromstl mesh myfile.stl 
 meshshow mesh
-~~~~
+~~~~
 
 @subsubsection occt_draw_4_5_9 meshhide
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 meshhide meshname
-~~~~
+~~~~
 
 Hides **meshname** in the viewer. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 meshfromstl mesh myfile.stl 
 meshhide mesh
-~~~~
+~~~~
 
 @subsubsection occt_draw_4_5_10 meshhidesel
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 meshhidesel meshname
-~~~~
+~~~~
 
 Hides only selected entities. The other part of **meshname** remains visible. 
 
 @subsubsection occt_draw_4_5_11 meshshowsel
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 meshshowsel meshname
-~~~~
+~~~~
 
 Shows only selected entities. The other part of **meshname** becomes invisible. 
 
 @subsubsection occt_draw_4_5_12 meshshowall
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 meshshowall meshname
-~~~~
+~~~~
 
 Changes the state of all entities to visible for **meshname**. 
 
 @subsubsection occt_draw_4_5_13 meshdelete
 
-Syntax:                  
-~~~~~
+Syntax:
+~~~~{.php}
 meshdelete meshname
-~~~~
+~~~~
 
 Deletes MeshVS_Mesh object **meshname**. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 vinit 
 meshfromstl mesh myfile.stl 
 meshdelete mesh 
-~~~~~
+~~~~
 
 @subsection occt_draw_4_6      VIS Viewer commands
 
 A specific plugin with alias *VIS* should be loaded to have access to VIS functionality in DRAW Test Harness:
 
-~~~~
+~~~~{.php}
 \> pload VIS
 ~~~~
 
 @subsubsection occt_draw_4_6_1 ivtkinit
 
 Syntax:
-~~~~~
+~~~~{.php}
 ivtkinit
-~~~~~
+~~~~
 
 Creates a window for VTK viewer.
 
@@ -2795,19 +2795,19 @@ Creates a window for VTK viewer.
 @subsubsection occt_draw_4_6_2 ivtkdisplay
 
 Syntax:
-~~~~~
+~~~~{.php}
 ivtkdisplay name1 [name2] …[name n]
-~~~~~
+~~~~
 
 Displays named objects.
 
 **Example:** 
-~~~~~
+~~~~{.php}
 ivtkinit
 # create cone
 pcone c 5 0 10
 ivtkdisplay c
-~~~~~
+~~~~
 
 @figure{/user_guides/draw_test_harness/images/draw_image002.png,"",261}
 
@@ -2815,14 +2815,14 @@ ivtkdisplay c
 @subsubsection occt_draw_4_6_3 ivtkerase
 
 Syntax:
-~~~~~
+~~~~{.php}
 ivtkerase [name1] [name2] … [name n]
-~~~~~
+~~~~
 
 Erases named objects. If no arguments are passed, erases all displayed objects.
 
 **Example:**
-~~~~~
+~~~~{.php}
 ivtkinit
 # create a sphere
 psphere s 10
@@ -2836,29 +2836,29 @@ ivtkdisplay s c cy
 ivtkerase cy
 # erase the sphere and the cone
 ivtkerase s c
-~~~~~
+~~~~
 
 @subsubsection occt_draw_4_6_4  ivtkfit
 
 Syntax:
-~~~~~
+~~~~{.php}
 ivtkfit
-~~~~~
+~~~~
 
 Automatic zoom/panning.
 
 @subsubsection occt_draw_4_6_5 ivtkdispmode
 
 Syntax:
-~~~~~
+~~~~{.php}
 ivtksetdispmode [name] {0|1}
-~~~~~
+~~~~
 
 Sets display mode for a named object. If no arguments are passed, sets the given display mode for all displayed objects
 The possible modes are: 0 (WireFrame) and 1 (Shading).
 
 **Example:**
-~~~~~
+~~~~{.php}
 ivtkinit
 # create a cone
 pcone c 5 0 10
@@ -2866,21 +2866,21 @@ pcone c 5 0 10
 ivtkdisplay c
 # set shading mode for the cone
 ivtksetdispmode c 1
-~~~~~
+~~~~
 
 @figure{/user_guides/draw_test_harness/images/draw_image003.png,"",262}
 
 @subsubsection occt_draw_4_6_6 ivtksetselmode
 
 Syntax:
-~~~~~
+~~~~{.php}
 ivtksetselmode [name] mode {0|1}
-~~~~~
+~~~~
 
 Sets selection mode for a named object. If no arguments are passed, sets the given selection mode for all the displayed objects.
 
 **Example:**
-~~~~~
+~~~~{.php}
 ivtkinit
 # load a shape from file
 restore CrankArm.brep a
@@ -2888,50 +2888,50 @@ restore CrankArm.brep a
 ivtkdisplay a
 # set the face selection mode
 ivtksetselmode a 4 1
-~~~~~
+~~~~
 
 @figure{/user_guides/draw_test_harness/images/draw_image004.png,"",291}
  
 @subsubsection occt_draw_4_6_7 ivtkmoveto
 
 Syntax:
-~~~~~
+~~~~{.php}
 ivtkmoveto x y
-~~~~~
+~~~~
 
 Imitates mouse cursor moving to point with the given display coordinates **x**,**y**.
 
 **Example:**
-~~~~~
+~~~~{.php}
 ivtkinit
 pcone c 5 0 10
 ivtkdisplay c
 ivtkmoveto 40 50
-~~~~~
+~~~~
 
 @subsubsection occt_draw_4_6_8 ivtkselect
 
 Syntax:
-~~~~~
+~~~~{.php}
 ivtkselect x y
-~~~~~
+~~~~
 
 Imitates mouse cursor moving to point with the given display coordinates and performs selection at this point.
 
 **Example:**
-~~~~~
+~~~~{.php}
 ivtkinit
 pcone c 5 0 10
 ivtkdisplay c
 ivtkselect 40 50
-~~~~~
+~~~~
 
 @subsubsection occt_draw_4_6_9 ivtkdump
 
 Syntax:
-~~~~~
+~~~~{.php}
 ivtkdump *filename* [buffer={rgb|rgba|depth}] [width height] [stereoproj={L|R}]
-~~~~~
+~~~~
 
 Dumps the contents of VTK viewer to image. It supports:
 * dumping in different raster graphics formats: PNG, BMP, JPEG, TIFF or PNM.
@@ -2940,34 +2940,34 @@ Dumps the contents of VTK viewer to image. It supports:
 * dumping of stereo projections (left or right).
 
 **Example:**
-~~~~~
+~~~~{.php}
 ivtkinit
 pcone c 5 0 10
 ivtkdisplay c
 ivtkdump D:/ConeSnapshot.png rgb 768 768
-~~~~~
+~~~~
 
 @subsubsection occt_draw_4_6_10        ivtkbgcolor
 
 
 Syntax:
-~~~~~
+~~~~{.php}
 ivtkbgcolor r g b [r2 g2 b2]
-~~~~~
+~~~~
 
 Sets uniform background color or gradient background if second triple of parameters is set. Color parameters r,g,b have to be chosen in the interval  [0..255].
 
 **Example:**
-~~~~~
+~~~~{.php}
 ivtkinit
 ivtkbgcolor 200 220 250
-~~~~~
+~~~~
  
 @figure{/user_guides/draw_test_harness/images/draw_image005.png,"",196}
 
-~~~~~
+~~~~{.php}
 ivtkbgcolor 10 30 80 255 255 255
-~~~~~
+~~~~
 
 @figure{/user_guides/draw_test_harness/images/draw_image006.png,"",190}
 
@@ -2981,354 +2981,354 @@ This chapter contains a set of commands for Open CASCADE Technology Application
 
 @subsubsection occt_draw_5_1_1 NewDocument
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 NewDocument docname [format]
-~~~~
+~~~~
 
 Creates a new **docname** document with MDTV-Standard or described format. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 # Create new document with default (MDTV-Standard) format 
 NewDocument D 
 
 # Create new document with BinOcaf format 
 NewDocument D2 BinOcaf 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_1_2 IsInSession
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 IsInSession path
-~~~~
+~~~~
 
 Returns *0*, if **path** document is managed by the application session, *1* -- otherwise. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 IsInSession /myPath/myFile.std 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_1_3 ListDocuments
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 ListDocuments
-~~~~
+~~~~
 
 Makes a list of documents handled during the session of the application. 
 
 
 @subsubsection occt_draw_5_1_4 Open
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 Open path docname [-stream]
-~~~~
+~~~~
 
 Retrieves the document of file **docname** in the path **path**. Overwrites the document, if it is already in session. 
 
 option <i>-stream</i> activates usage of alternative interface of OCAF persistence working with C++ streams instead of file names.
 
 **Example:** 
-~~~~~
+~~~~{.php}
 Open /myPath/myFile.std D
-~~~~
+~~~~
 
 @subsubsection occt_draw_5_1_5 Close
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 Close docname
-~~~~
+~~~~
 
 Closes **docname** document. The document is no longer handled by the applicative session. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 Close D 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_1_6 Save
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 Save docname
-~~~~
+~~~~
 
 Saves **docname** active document. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 Save D 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_1_7 SaveAs
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 SaveAs docname path [-stream]
-~~~~
+~~~~
 
 Saves the active document in the file **docname** in the path **path**. Overwrites the file if it already exists.
 
 option <i>-stream</i> activates usage of alternative interface of OCAF persistence working with C++ streams instead of file names.
 
 **Example:** 
-~~~~~
+~~~~{.php}
 SaveAs D /myPath/myFile.std
-~~~~
+~~~~
 
 @subsection occt_draw_5_2 Basic commands
 
 @subsubsection occt_draw_5_2_1 Label
 
-Syntax:   
+Syntax:
 
-~~~~~
+~~~~{.php}
 Label docname entry
-~~~~~
+~~~~
 
 Creates the label expressed by <i>\<entry\></i> if it does not exist.
 
 Example
-~~~~~
+~~~~{.php}
 Label D 0:2
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_2_2 NewChild
 
-Syntax:   
+Syntax:
 
-~~~~~
+~~~~{.php}
 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.
 
 Example
-~~~~~
+~~~~{.php}
 # Create new child of root label
 NewChild D
 
 # Create new child of existing label
 Label D 0:2
 NewChild D 0:2
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_2_3 Children
 
-Syntax:  
-~~~~~
+Syntax:
+~~~~{.php}
 Children docname label
-~~~~~
+~~~~
 Returns the list of attributes of label.
 
 Example
-~~~~~
+~~~~{.php}
 Children D 0:2
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_2_4 ForgetAll
 
-Syntax:   
-~~~~~
+Syntax:
+~~~~{.php}
 ForgetAll docname label
-~~~~~
+~~~~
 Forgets all attributes of the label.
 
 Example
-~~~~~
+~~~~{.php}
 ForgetAll D 0:2
-~~~~~
+~~~~
 
 
 @subsubsection occt_draw_5_3 Application commands
 
 @subsubsection occt_draw_5_3_1  Main
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 Main docname
-~~~~
+~~~~
 
 Returns the main label of the framework. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 Main D 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_3_2  UndoLimit
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 UndoLimit docname [value=0]
-~~~~
+~~~~
 
 
 Sets the limit on the number of Undo Delta stored. **0** will disable Undo on the document. A negative *value* means that there is no limit. Note that by default Undo is disabled. Enabling it will take effect with the next call to *NewCommand*. Of course, this limit is the same for Redo 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 UndoLimit D 100 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_3_3  Undo
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 Undo docname [value=1]
-~~~~
+~~~~
 
 Undoes **value** steps. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 Undo D 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_3_4  Redo
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 Redo docname [value=1]
-~~~~
+~~~~
 
 Redoes **value** steps.
  
 **Example:** 
-~~~~~
+~~~~{.php}
 Redo D 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_3_5  OpenCommand
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 OpenCommand docname
-~~~~
+~~~~
 
 Opens a new command transaction. 
 
 **Example:**
-~~~~
+~~~~{.php}
 OpenCommand D
-~~~~
+~~~~
 
 @subsubsection occt_draw_5_3_6  CommitCommand
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 CommitCommand docname
-~~~~
+~~~~
 
 Commits the Command transaction. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 CommitCommand D
-~~~~
+~~~~
 
 @subsubsection occt_draw_5_3_7  NewCommand
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 NewCommand docname
-~~~~
+~~~~
 
 This is a shortcut for Commit and Open transaction. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 NewCommand D 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_3_8  AbortCommand
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 AbortCommand docname
-~~~~
+~~~~
 
 Aborts the Command transaction. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 AbortCommand D 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_3_9  Copy
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 Copy docname entry Xdocname Xentry
-~~~~
+~~~~
 
 Copies the contents of *entry* to *Xentry*. No links are registered. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 Copy D1 0:2 D2 0:4 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_3_10  UpdateLink
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 UpdateLink docname [entry] 
-~~~~~
+~~~~
 
 Updates external reference set at *entry*. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 UpdateLink D 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_3_11  CopyWithLink
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 CopyWithLink docname entry Xdocname Xentry
-~~~~
+~~~~
 
 Aborts the Command transaction. 
 Copies the content of *entry* to *Xentry*. The link is registered with an *Xlink* attribute at *Xentry*  label. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 CopyWithLink D1 0:2 D2 0:4
-~~~~
+~~~~
 
 @subsubsection occt_draw_5_3_12  UpdateXLinks
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 UpdateXLinks docname entry
-~~~~
+~~~~
 
 Sets modifications on labels impacted by external references to the *entry*. The *document* becomes invalid and must be recomputed 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 UpdateXLinks D 0:2 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_3_13  DumpDocument
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 DumpDocument docname
-~~~~
+~~~~
 
 Displays parameters of *docname* document. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 DumpDocument D 
-~~~~~
+~~~~
 
 
 @subsection occt_draw_5_4  Data Framework commands
@@ -3336,545 +3336,545 @@ DumpDocument D
 
 @subsubsection occt_draw_5_4_1  MakeDF
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 MakeDF dfname
-~~~~
+~~~~
 
 Creates a new data framework. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 MakeDF D 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_4_2  ClearDF
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 ClearDF dfname
-~~~~
+~~~~
 
 Clears a data framework. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 ClearDF D 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_4_3  CopyDF
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 CopyDF dfname1 entry1 [dfname2] entry2
-~~~~
+~~~~
 
 Copies a data framework. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 CopyDF D 0:2 0:4 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_4_4  CopyLabel
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 CopyLabel dfname fromlabel tolablel
-~~~~
+~~~~
 
 Copies a label. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 CopyLabel D1 0:2 0:4 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_4_5  MiniDumpDF
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 MiniDumpDF dfname
-~~~~
+~~~~
 
 Makes a mini-dump of a data framework. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 MiniDumpDF D 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_4_6  XDumpDF
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 XDumpDF dfname
-~~~~
+~~~~
 
 Makes an extended dump of a data framework. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 XDumpDF D
-~~~~
+~~~~
 
 @subsection occt_draw_5_5  General attributes commands
 
 
 @subsubsection occt_draw_5_5_1  SetInteger
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 SetInteger dfname entry value
-~~~~
+~~~~
 
 Finds or creates an Integer attribute at *entry* label and sets *value*. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 SetInteger D 0:2 100 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_5_2  GetInteger
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 GetInteger dfname entry [drawname]
-~~~~
+~~~~
 
 Gets a value of an Integer attribute at *entry* label and sets it to *drawname* variable, if it is defined. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 GetInteger D 0:2 Int1 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_5_3  SetReal
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 SetReal dfname entry value
-~~~~
+~~~~
 
 Finds or creates a Real attribute at *entry* label and sets *value*. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 SetReal D 0:2 100. 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_5_4  GetReal
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 GetReal dfname entry [drawname]
-~~~~
+~~~~
 
 Gets a value of a Real attribute at *entry* label and sets it to *drawname* variable, if it is defined. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 GetReal D 0:2 Real1 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_5_5  SetIntArray
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 SetIntArray dfname entry lower upper value1 value2 … 
-~~~~~
+~~~~
 
 Finds or creates an IntegerArray attribute at *entry* label with lower and upper bounds and sets **value1*, *value2*... 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 SetIntArray D 0:2 1 4 100 200 300 400
-~~~~
+~~~~
 
 @subsubsection occt_draw_5_5_6  GetIntArray
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 GetIntArray dfname entry
-~~~~
+~~~~
 
 Gets a value of an *IntegerArray* attribute at *entry* label. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 GetIntArray D 0:2
-~~~~
+~~~~
 
 @subsubsection occt_draw_5_5_7  SetRealArray
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 SetRealArray dfname entry lower upper value1 value2 …
-~~~~
+~~~~
 
 Finds or creates a RealArray attribute at *entry* label with lower and upper bounds and sets *value1*, *value2*… 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 GetRealArray D 0:2 1 4 100. 200. 300. 400. 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_5_8  GetRealArray
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 GetRealArray dfname entry
-~~~~
+~~~~
 
 Gets a value of a RealArray attribute at *entry* label. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 GetRealArray D 0:2 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_5_9  SetComment
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 SetComment dfname entry value
-~~~~
+~~~~
 
 Finds or creates a Comment attribute at *entry* label and sets *value*. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 SetComment D 0:2 "My comment"
-~~~~
+~~~~
 
 @subsubsection occt_draw_5_5_10  GetComment
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 GetComment dfname entry
-~~~~
+~~~~
 
 Gets a value of a Comment attribute at *entry* label. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 GetComment D 0:2
-~~~~
+~~~~
 
 @subsubsection occt_draw_5_5_11  SetExtStringArray
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 SetExtStringArray dfname entry lower upper value1 value2 …
-~~~~
+~~~~
 
 Finds or creates an *ExtStringArray* attribute at *entry* label with lower and upper bounds and sets *value1*, *value2*… 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 SetExtStringArray D 0:2 1 3 *string1* *string2* *string3*
-~~~~
+~~~~
 
 @subsubsection occt_draw_5_5_12  GetExtStringArray
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 GetExtStringArray dfname entry
-~~~~
+~~~~
 
 Gets a value of an ExtStringArray attribute at *entry* label. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 GetExtStringArray D 0:2 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_5_13  SetName
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 SetName dfname entry value 
-~~~~~
+~~~~
 
 Finds or creates a Name attribute at *entry* label and sets *value*. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 SetName D 0:2 *My name* 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_5_14  GetName
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 GetName dfname entry 
-~~~~~
+~~~~
 
 Gets a value of a Name attribute at *entry* label. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 GetName D 0:2 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_5_15  SetReference
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 SetReference dfname entry reference 
-~~~~~
+~~~~
 
 Creates a Reference attribute at *entry* label and sets *reference*. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 SetReference D 0:2 0:4 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_5_16  GetReference
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 GetReference dfname entry 
-~~~~~
+~~~~
 
 Gets a value of a Reference attribute at *entry* label. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 GetReference D 0:2 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_5_17  SetUAttribute
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 SetUAttribute dfname entry localGUID 
-~~~~~
+~~~~
 
 Creates a UAttribute attribute at *entry* label with *localGUID*. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 set localGUID "c73bd076-22ee-11d2-acde-080009dc4422" 
 SetUAttribute D 0:2 ${localGUID} 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_5_18  GetUAttribute
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 GetUAttribute dfname entry loacalGUID 
-~~~~~
+~~~~
 
 Finds a *UAttribute* at *entry* label with *localGUID*. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 set localGUID "c73bd076-22ee-11d2-acde-080009dc4422" 
 GetUAttribute D 0:2 ${localGUID} 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_5_19  SetFunction
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 SetFunction dfname entry ID failure 
-~~~~~
+~~~~
 
 Finds or creates a *Function* attribute at *entry* label with driver ID and *failure* index. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 set ID "c73bd076-22ee-11d2-acde-080009dc4422" 
 SetFunction D 0:2 ${ID} 1 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_5_20  GetFunction
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 GetFunction dfname entry ID failure 
-~~~~~
+~~~~
 
 Finds a Function attribute at *entry* label and sets driver ID to *ID* variable and failure index to *failure* variable. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 GetFunction D 0:2 ID failure 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_5_21  NewShape
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 NewShape dfname entry [shape] 
-~~~~~
+~~~~
 
 Finds or creates a Shape attribute at *entry* label. Creates or updates the associated *NamedShape* attribute by *shape* if *shape* is defined. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 box b 10 10 10 
 NewShape D 0:2 b 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_5_22  SetShape
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 SetShape dfname entry shape 
-~~~~~
+~~~~
 
 Creates or updates a *NamedShape* attribute at *entry* label by *shape*. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 box b 10 10 10 
 SetShape D 0:2 b 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_5_23  GetShape
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 GetShape2 dfname entry shape 
-~~~~~
+~~~~
 
 Sets a shape from NamedShape attribute associated with *entry* label to *shape* draw variable. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 GetShape2 D 0:2 b 
-~~~~~
+~~~~
 
 @subsection occt_draw_5_6  Geometric attributes commands
 
 
 @subsubsection occt_draw_5_6_1  SetPoint
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 SetPoint dfname entry point
-~~~~
+~~~~
 
 Finds or creates a Point attribute at *entry* label and sets *point* as generated in the associated *NamedShape* attribute. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 point p 10 10 10 
 SetPoint D 0:2 p 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_6_2  GetPoint
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 GetPoint dfname entry [drawname] 
-~~~~~
+~~~~
 
 Gets a vertex from *NamedShape* attribute at *entry* label and sets it to *drawname* variable, if it is defined. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 GetPoint D 0:2 p 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_6_3  SetAxis
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 SetAxis dfname entry axis 
-~~~~~
+~~~~
 
 Finds or creates an Axis attribute at *entry* label and sets *axis* as generated in the associated *NamedShape* attribute. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 line l 10 20 30 100 200 300 
 SetAxis D 0:2 l 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_6_4  GetAxis
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 GetAxis dfname entry [drawname] 
-~~~~~
+~~~~
 
 Gets a line from *NamedShape* attribute at *entry* label and sets it to *drawname* variable, if it is defined. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 GetAxis D 0:2 l 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_6_5  SetPlane
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 SetPlane dfname entry plane 
-~~~~~
+~~~~
 
 Finds or creates a Plane attribute at *entry* label and sets *plane* as generated in the associated *NamedShape* attribute. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 plane pl 10 20 30 -1 0 0 
 SetPlane D 0:2 pl 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_6_6  GetPlane
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 GetPlane dfname entry [drawname] 
-~~~~~
+~~~~
 
 Gets a plane from *NamedShape* attribute at *entry* label and sets it to *drawname* variable, if it is defined. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 GetPlane D 0:2 pl 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_6_7  SetGeometry
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 SetGeometry dfname entry [type] [shape] 
-~~~~~
+~~~~
 
 Creates a Geometry attribute at *entry* label and sets *type* and *shape* as generated in the associated *NamedShape* attribute if they are defined. *type* must be one of the following: *any, pnt, lin, cir, ell, spl, pln, cyl*. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 point p 10 10 10 
 SetGeometry D 0:2 pnt p 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_6_8  GetGeometryType
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 GetGeometryType dfname entry
-~~~~
+~~~~
 
 Gets a geometry type from Geometry attribute at *entry* label. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 GetGeometryType D 0:2 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_6_9  SetConstraint
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 SetConstraint dfname entry keyword geometrie [geometrie …] 
 SetConstraint dfname entry "plane" geometrie 
 SetConstraint dfname entry "value" value
-~~~~~  
+~~~~
 
 1. Creates a Constraint attribute at *entry* label and sets *keyword* constraint between geometry(ies). 
 *keyword* must be one of the following: 
@@ -3883,83 +3883,83 @@ SetConstraint dfname entry "value" value
 3. Sets value for the existing constraint. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 SetConstraint D 0:2 "value" 5 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_6_10  GetConstraint
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 GetConstraint dfname entry
-~~~~
+~~~~
 
 Dumps a Constraint attribute at *entry* label 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 GetConstraint D 0:2 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_6_11  SetVariable
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 SetVariable dfname entry isconstant(0/1) units 
-~~~~~
+~~~~
 
 Creates a Variable attribute at *entry* label and sets *isconstant* flag and *units* as a string. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 SetVariable D 0:2 1 "mm" 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_6_12  GetVariable
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 GetVariable dfname entry isconstant units 
-~~~~~
+~~~~
 
 Gets an *isconstant* flag and units of a Variable attribute at *entry* label. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 GetVariable D 0:2 isconstant units 
 puts "IsConstant=${isconstant}" 
 puts "Units=${units}" 
-~~~~~
+~~~~
 
 @subsection occt_draw_5_7  Tree attributes commands
 
 
 @subsubsection occt_draw_5_7_1  RootNode
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 RootNode dfname treenodeentry [ID]
-~~~~
+~~~~
 
 Returns the ultimate father of *TreeNode* attribute identified by its *treenodeentry* and its *ID* (or default ID, if *ID* is not defined). 
 
 
 @subsubsection occt_draw_5_7_2  SetNode
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 SetNode dfname treenodeentry [ID]
-~~~~
+~~~~
 
 Creates a *TreeNode* attribute on the *treenodeentry* label with its tree *ID* (or assigns a default ID, if the *ID* is not defined). 
 
 
 @subsubsection occt_draw_5_7_3  AppendNode
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 AppendNode dfname fatherentry childentry [fatherID]
-~~~~
+~~~~
 
 
 Inserts a *TreeNode* attribute with its tree *fatherID* (or default ID, if *fatherID* is not defined) on *childentry* as last child of *fatherentry*. 
@@ -3969,10 +3969,10 @@ Inserts a *TreeNode* attribute with its tree *fatherID* (or default ID, if *fath
 
 @subsubsection occt_draw_5_7_4  PrependNode
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 PrependNode dfname fatherentry childentry [fatherID]
-~~~~
+~~~~
 
 
 Inserts a *TreeNode* attribute with its tree *fatherID* (or default ID, if *fatherID* is not defined) on *childentry* as first child of *fatherentry*. 
@@ -3980,46 +3980,46 @@ Inserts a *TreeNode* attribute with its tree *fatherID* (or default ID, if *fath
 
 @subsubsection occt_draw_5_7_5  InsertNodeBefore
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 InsertNodeBefore dfname treenodeentry beforetreenode [ID]
-~~~~
+~~~~
 
 Inserts a *TreeNode* attribute with tree *ID* (or default ID, if *ID* is not defined) *beforetreenode* before *treenodeentry*. 
 
 
 @subsubsection occt_draw_5_7_6  InsertNodeAfter
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 InsertNodeAfter dfname treenodeentry aftertreenode [ID]
-~~~~
+~~~~
 
 Inserts a *TreeNode* attribute with tree *ID* (or default ID, if *ID* is not defined) *aftertreenode* after *treenodeentry*. 
 
 
 @subsubsection occt_draw_5_7_7  DetachNode
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 DetachNode dfname treenodeentry [ID]
-~~~~
+~~~~
 
 Removes a *TreeNode* attribute with tree *ID* (or default ID, if *ID* is not defined) from *treenodeentry*. 
 
 
 @subsubsection occt_draw_5_7_8  ChildNodeIterate
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 ChildNodeIterate dfname treenodeentry alllevels(0/1) [ID]
-~~~~
+~~~~
 
 
 Iterates on the tree of *TreeNode* attributes with tree *ID* (or default ID, if *ID* is not defined). If *alllevels* is set to *1* it explores not only the first, but all the sub Step levels.
  
 **Example:** 
-~~~~~
+~~~~{.php}
 Label D 0:2 
 Label D 0:3 
 Label D 0:4 
@@ -4062,20 +4062,20 @@ ChildNodeIterate D 0:2 1
 ==0:7 
 ==0:6 
 ==0:5 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_7_9  InitChildNodeIterator
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 InitChildNodeIterator dfname treenodeentry alllevels(0/1) [ID]
-~~~~
+~~~~
 
 
 Initializes the iteration on the tree of *TreeNode* attributes with tree *ID* (or default ID, if *ID* is not defined). If *alllevels* is set to *1* it explores not only the first, but also all sub Step levels. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 InitChildNodeIterate D 0:5 1 
 set aChildNumber 0 
 for {set i 1} {$i < 100} {incr i} { 
@@ -4086,44 +4086,44 @@ for {set i 1} {$i < 100} {incr i} {
     } 
 } 
 puts "aChildNumber=$aChildNumber"
-~~~~
+~~~~
 
 @subsubsection occt_draw_5_7_10  ChildNodeMore
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 ChildNodeMore
-~~~~
+~~~~
 
 Returns TRUE if there is a current item in the iteration. 
 
 
 @subsubsection occt_draw_5_7_11  ChildNodeNext
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 ChildNodeNext
-~~~~
+~~~~
 
 Moves to the next Item. 
 
 
 @subsubsection occt_draw_5_7_12  ChildNodeValue
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 ChildNodeValue
-~~~~
+~~~~
 
 Returns the current treenode of *ChildNodeIterator*. 
 
 
 @subsubsection occt_draw_5_7_13  ChildNodeNextBrother
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 ChildNodeNextBrother
-~~~~
+~~~~
 
 Moves to the next *Brother*. If there is none, goes up. This method is interesting only with *allLevels* behavior. 
 
@@ -4133,214 +4133,214 @@ Moves to the next *Brother*. If there is none, goes up. This method is interesti
 
 @subsubsection occt_draw_5_8_1  AISInitViewer
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 AISInitViewer docname
-~~~~
+~~~~
 
 Creates and sets *AISViewer* attribute at root label, creates AIS viewer window. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 AISInitViewer D 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_8_2  AISRepaint
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 AISRepaint docname 
-~~~~~
+~~~~
 
 Updates the AIS viewer window. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 AISRepaint D 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_8_3  AISDisplay
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 AISDisplay docname entry [not_update] 
-~~~~~
+~~~~
 
 Displays a presantation of *AISobject* from *entry* label in AIS viewer. If *not_update* is not defined then *AISobject* is recomputed and all visualization settings are applied. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 AISDisplay D 0:5 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_8_4  AISUpdate
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 AISUpdate docname entry 
-~~~~~
+~~~~
 
 Recomputes a presentation of *AISobject* from *entry* label and applies the visualization setting in AIS viewer. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 AISUpdate D 0:5 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_8_5  AISErase
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 AISErase docname entry 
-~~~~~
+~~~~
 
 Erases *AISobject* of *entry* label in AIS viewer. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 AISErase D 0:5 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_8_6  AISRemove
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 AISRemove docname entry 
-~~~~~
+~~~~
 
 Erases *AISobject* of *entry* label in AIS viewer, then *AISobject* is removed from *AIS_InteractiveContext*. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 AISRemove D 0:5 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_8_7  AISSet
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 AISSet docname entry ID 
-~~~~~
+~~~~
 
 Creates *AISPresentation* attribute at *entry* label and sets as driver ID. ID must be one of the following: *A* (*axis*), *C* (*constraint*), *NS* (*namedshape*), *G* (*geometry*), *PL* (*plane*), *PT* (*point*). 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 AISSet D 0:5 NS 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_8_8  AISDriver
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 AISDriver docname entry [ID] 
-~~~~~
+~~~~
 
 Returns DriverGUID stored in *AISPresentation* attribute of an *entry* label or sets a new one. ID must be one of the following: *A* (*axis*), *C* (*constraint*), *NS* (*namedshape*), *G* (*geometry*), *PL* (*plane*), *PT* (*point*). 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 # Get Driver GUID 
 AISDriver D 0:5 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_8_9  AISUnset
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 AISUnset docname entry 
-~~~~~
+~~~~
 
 Deletes *AISPresentation* attribute (if it exists) of an *entry* label. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 AISUnset D 0:5 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_8_10  AISTransparency
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 AISTransparency docname entry [transparency] 
-~~~~~
+~~~~
 
 Sets (if *transparency* is defined) or gets the value of transparency for *AISPresentation* attribute of an *entry* label. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 AISTransparency D 0:5 0.5 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_8_11  AISHasOwnTransparency
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 AISHasOwnTransparency docname entry 
-~~~~~
+~~~~
 
 Tests *AISPresentation* attribute of an *entry* label by own transparency. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 AISHasOwnTransparency D 0:5 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_8_12  AISMaterial
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 AISMaterial docname entry [material] 
-~~~~~
+~~~~
 
 Sets (if *material* is defined) or gets the value of transparency for *AISPresentation* attribute of an *entry* label. *material* is integer from 0 to 20 (see @ref occt_draw_4_5_6 "meshmat" command). 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 AISMaterial D 0:5 5 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_8_13  AISHasOwnMaterial
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 AISHasOwnMaterial docname entry 
-~~~~~
+~~~~
 
 Tests *AISPresentation* attribute of an *entry* label by own material. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 AISHasOwnMaterial D 0:5 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_8_14  AISColor
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 AISColor docname entry [color] 
-~~~~~
+~~~~
 
 Sets (if *color* is defined) or gets value of color for *AISPresentation* attribute of an *entry* label. *color* is integer from 0 to 516 (see color names in *vsetcolor*). 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 AISColor D 0:5 25 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_5_8_15  AISHasOwnColor
 
-Syntax:       
-~~~~~
+Syntax:
+~~~~{.php}
 AISHasOwnColor docname entry 
-~~~~~
+~~~~
 
 Tests *AISPresentation* attribute of an *entry* label by own color. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 AISHasOwnColor D 0:5 
-~~~~~
+~~~~
 
 @section occt_draw_6 Geometry commands
 
@@ -4388,28 +4388,28 @@ Curves are displayed with an arrow showing the last parameter.
 
 @subsubsection occt_draw_6_2_1 point
 
-Syntax:      
-~~~~~
+Syntax:
+~~~~{.php}
 point name x y [z] 
-~~~~~
+~~~~
   
 Creates a 2d or 3d point, depending on the number of arguments. 
 
 **Example:**
-~~~~~
+~~~~{.php}
 # 2d point 
 point p1 1 2 
 
 # 3d point 
 point p2 10 20 -5 
-~~~~~
+~~~~
   
 @subsubsection occt_draw_6_2_2  line
 
-Syntax:      
-~~~~~
+Syntax:
+~~~~{.php}
 line name x y [z] dx dy [dz]
-~~~~
+~~~~
 
   
 Creates a 2d or 3d line. *x y z* are the coordinates of the line’s point of origin; *dx, dy, dz* give the direction vector. 
@@ -4417,20 +4417,20 @@ Creates a 2d or 3d line. *x y z* are the coordinates of the line’s point of or
 A 2d line will be represented as *x y dx dy*, and a 3d line as *x y z dx dy dz* . A line is parameterized along its length starting from the point of origin along the direction vector. The direction vector is normalized and must not be null. Lines are infinite, even though their representation is not. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 # a 2d line at 45 degrees of the X axis 
 line l 2 0 1 1 
 
 # a 3d line through the point 10 0 0 and parallel to Z 
 line l 10 0 0 0 0 1 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_6_2_3  circle
 
-Syntax:      
-~~~~~
+Syntax:
+~~~~{.php}
 circle name x y [z [dx dy dz]] [ux uy [uz]] radius
-~~~~
+~~~~
 
 Creates a 2d or a 3d circle. 
 
@@ -4441,7 +4441,7 @@ In 3d, *x, y, z* are the coordinates of the center; *dx, dy, dz* give the vector
 The circle is parameterized by the angle in [0,2*pi] starting from the origin and. Note that the specification of origin direction and plane is the same for all analytical curves and surfaces. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 # A 2d circle of radius 5 centered at 10,-2 
 circle c1 10 -2 5 
 
@@ -4458,27 +4458,27 @@ circle c4 10 20 -5 0 1 0 17
 
 # full 3d circle, axis X, origin on Z 
 circle c5 10 20 -5 1 0 0 0 0 1 17 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_6_2_4  ellipse
 
-Syntax: 
-~~~~~
+Syntax:
+~~~~{.php}
 ellipse name x y [z [dx dy dz]] [ux uy [uz]] firstradius secondradius 
-~~~~~
+~~~~
 
 Creates a 2d or 3d ellipse. In a 2d ellipse, the first two arguments define the center; in a 3d ellipse, the first three. The axis system is given by *firstradius*, the major radius, and *secondradius*, the minor radius. The parameter range of the ellipse is [0,2.*pi] starting from the X axis and going towards the Y axis. The Draw ellipse is parameterized by an angle: 
 
-~~~~~
+~~~~{.php}
 P(u) = O + firstradius*cos(u)*Xdir + secondradius*sin(u)*Ydir 
-~~~~~
-where: 
+~~~~
+Where: 
 
   * P is the point of parameter *u*,
   * *O, Xdir* and *Ydir* are respectively the origin, *X Direction* and *Y Direction* of its local coordinate system.
  
 **Example:**
-~~~~~
+~~~~{.php}
 # default 2d ellipse 
 ellipse e1 10 5 20 10 
 
@@ -4490,28 +4490,28 @@ ellipse e3 0 0 0 25 5
 
 # 3d ellipse in the X,Z plane with axis 1, 0 ,1 
 ellipse e4 0 0 0 0 1 0 1 0 1 25 5 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_6_2_5  hyperbola
 
-Syntax:      
-~~~~~
+Syntax:
+~~~~{.php}
 hyperbola name x y [z [dx dy dz]] [ux uy [uz]] firstradius secondradius
-~~~~
+~~~~
 
 Creates a 2d or 3d conic. The first arguments define the center. The axis system is given by *firstradius*, the major radius, and *secondradius*, the minor radius. Note that the hyperbola has only one branch, that in the X direction. 
 
 The Draw hyperbola is parameterized as follows: 
-~~~~~
+~~~~{.php}
 P(U) = O + firstradius*Cosh(U)*XDir + secondradius*Sinh(U)*YDir 
-~~~~~
-where: 
+~~~~
+Where: 
 
   * *P* is the point of parameter *U*,
   * *O, XDir* and *YDir* are respectively the origin, *X Direction* and *YDirection* of its local coordinate system. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 # default 2d hyperbola, with asymptotes 1,1 -1,1 
 hyperbola h1 0 0 30 30 
 
@@ -4520,30 +4520,30 @@ hyperbola h2 0 0 1 2 20 20
 
 # 3d hyperbola, in the XY plane 
 hyperbola h3 0 0 0 50 50 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_6_2_6  parabola
 
-Syntax:      
-~~~~~
+Syntax:
+~~~~{.php}
 parabola name x y [z [dx dy dz]] [ux uy [uz]] FocalLength 
-~~~~~
+~~~~
 
 Creates a 2d or 3d parabola. in the axis system defined by the first arguments. The origin is the apex of the parabola. 
 
 The *Geom_Parabola* is parameterized as follows: 
 
-~~~~~
+~~~~{.php}
 P(u) = O + u*u/(4.*F)*XDir + u*YDir 
-~~~~~
+~~~~
 
-where: 
+Where: 
   * *P* is the point of parameter *u*,
   * *O, XDir* and *YDir* are respectively the origin, *X Direction* and *Y Direction* of its local coordinate system,
   * *F* is the focal length of the parabola.
 
 **Example:** 
-~~~~~
+~~~~{.php}
 # 2d parabola 
 parabola p1 0 0 50 
 
@@ -4552,37 +4552,37 @@ parabola p2 0 0 0 1 50
 
 # 3d parabola in the Y-Z plane, convexity +Z 
 parabola p3 0 0 0 1 0 0 0 0 1 50 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_6_2_7  beziercurve, 2dbeziercurve
 
-Syntax:      
-~~~~~
+Syntax:
+~~~~{.php}
 beziercurve name nbpole pole, [weight] 
 2dbeziercurve name nbpole pole, [weight]
-~~~~
+~~~~
 
 Creates a 3d rational or non-rational Bezier curve. Give the number of poles (control points,) and the coordinates of the poles *(x1 y1 z1 [w1] x2 y2 z2 [w2])*. The degree will be *nbpoles-1*. To create a rational curve, give weights with the poles. You must give weights for all poles or for none. If the weights of all the poles are equal, the curve is polynomial, and therefore non-rational. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 # a rational 2d bezier curve (arc of circle) 
 2dbeziercurve ci 3 0 0 1 10 0 sqrt(2.)/2. 10 10 1 
 
 # a 3d bezier curve, not rational 
 beziercurve cc 4 0 0 0 10 0 0 10 0 10 10 10 10 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_6_2_8  bsplinecurve, 2dbsplinecurve, pbsplinecurve, 2dpbsplinecurve
 
-Syntax:      
-~~~~~
+Syntax:
+~~~~{.php}
 bsplinecurve   name degree nbknots knot, umult pole, weight
 2dbsplinecurve name degree nbknots knot, umult pole, weight
 
 pbsplinecurve   name degree nbknots knot, umult pole, weight (periodic)
 2dpbsplinecurve name degree nbknots knot, umult pole, weight (periodic)
-~~~~~
+~~~~
 
 Creates 2d or 3d bspline curves; the **pbsplinecurve** and **2dpbsplinecurve** commands create periodic bspline curves. 
 
@@ -4597,7 +4597,7 @@ The poles must be given with their weights, use weights of 1 for a non rational
   * For a periodic curve: Sum of multiplicities - last multiplicity
 
 **Example:** 
-~~~~~
+~~~~{.php}
 # a bspline curve with 4 poles and 3 knots 
 bsplinecurve bc 2 3 0 3 1 1 2 3 \ 
 10 0 7 1 7 0 7 1 3 0 8 1 0 0 7 1 
@@ -4612,45 +4612,45 @@ dset h sqrt(3)/2
 -0.25 h/6 1 \ 
 -0.5 -h/3 0.5 \ 
 0 -h/3 1 
-~~~~~
+~~~~
 
 **Note** that you can create the **NURBS** subset of bspline curves and surfaces by trimming analytical curves and surfaces and executing the command *convert*. 
 
 
 @subsubsection occt_draw_6_2_9  uiso, viso
 
-Syntax:      
-~~~~~
+Syntax:
+~~~~{.php}
 uiso name surface u 
 viso name surface u 
-~~~~~
+~~~~
 
 Creates a U or V isoparametric curve from a surface. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 # create a cylinder and extract iso curves 
 
 cylinder c 10 
 uiso c1 c pi/6 
 viso c2 c 
-~~~~~
+~~~~
 
 **Note** that this cannot be done from offset surfaces.
 
 
 @subsubsection occt_draw_6_2_10  to3d, to2d
 
-Syntax:      
-~~~~~
+Syntax:
+~~~~{.php}
 to3d name curve2d [plane] 
 to2d name curve3d [plane] 
-~~~~~
+~~~~
 
 Create respectively a 3d curve from a 2d curve and a 2d curve from a 3d curve. The transformation uses a planar surface to define the XY plane in 3d (by default this plane is the default OXYplane). **to3d** always gives a correct result, but as **to2d** is not a projection, it may surprise you. It is always correct if the curve is planar and parallel to the plane of projection. The points defining the curve are projected on the plane. A circle, however, will remain a circle and will not be changed to an ellipse. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 # the following commands 
 circle c 0 0 5 
 plane p -2 1 0 1 2 3 
@@ -4658,28 +4658,28 @@ to3d c c p
 
 # will create the same circle as 
 circle c -2 1 0 1 2 3 5 
-~~~~~
+~~~~
 
 See also: **project** 
 
 
 @subsubsection occt_draw_6_2_11  project
 
-Syntax:      
-~~~~~
+Syntax:
+~~~~{.php}
 project name curve3d surface 
-~~~~~
+~~~~
 
 Computes a 2d curve in the parametric space of a surface corresponding to a 3d curve. This can only be used on analytical surfaces. 
 
 If we, for example, intersect a cylinder and a plane and project the resulting ellipse on the cylinder, this will create a 2d sinusoid-like bspline. 
 
-~~~~~
+~~~~{.php}
 cylinder c 5 
 plane p 0 0 0 0 1 1 
 intersect i c p 
 project i2d i c 
-~~~~~
+~~~~
 
 @subsection occt_draw_6_3  Surface creation
 
@@ -4694,10 +4694,10 @@ Surfaces are displayed with isoparametric lines. To show the parameterization, a
 
 @subsubsection occt_draw_6_3_1  plane
 
-Syntax:      
-~~~~~
+Syntax:
+~~~~{.php}
 plane name [x y z [dx dy dz [ux uy uz]]]
-~~~~
+~~~~
 
 Creates an infinite plane. 
 
@@ -4710,26 +4710,26 @@ There are default values for the coordinate system. If no arguments are given, t
 Note that this definition will be used for all analytical surfaces. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 # a plane through the point 10,0,0 perpendicular to X 
 # with U direction on Y 
 plane p1 10 0 0 1 0 0 0 1 0 
 
 # an horixontal plane with origin 10, -20, -5 
 plane p2 10 -20 -5 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_6_3_2  cylinder
 
-Syntax:      
-~~~~~
+Syntax:
+~~~~{.php}
 cylinder name [x y z [dx dy dz [ux uy uz]]] radius 
-~~~~~
+~~~~
 
 A cylinder is defined by a coordinate system, and a radius. The surface generated is an infinite cylinder with the Z axis as the axis. The U parameter is the angle starting from X going in the Y direction. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 # a cylinder on the default Z axis, radius 10 
 cylinder c1 10 
 
@@ -4742,71 +4742,71 @@ cylinder c2 5 10 -3 10
 dset lo pi/3. la pi/4. 
 cylinder c3 0 0 0 cos(la)*cos(lo) cos(la)*sin(lo) 
 sin(la) 10 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_6_3_3  cone
 
-Syntax:      
-~~~~~
+Syntax:
+~~~~{.php}
 cone name [x y z [dx dy dz [ux uy uz]]] semi-angle radius 
-~~~~~
+~~~~
 Creates a cone in the infinite coordinate system along the Z-axis. The radius is that of the circle at the intersection of the cone and the XY plane. The semi-angle is the angle formed by the cone relative to the axis; it should be between -90 and 90. If the radius is 0, the vertex is the origin. 
 
 **Example:** 
-~~~~~
+~~~~{.php}
 # a cone at 45 degrees at the origin on Z 
 cone c1 45 0 
 
 # a cone on axis Z with radius r1 at z1 and r2 at z2 
 cone c2 0 0 z1 180.*atan2(r2-r1,z2-z1)/pi r1 
-~~~~~
+~~~~
 
 @subsubsection occt_draw_6_3_4  sphere
 
-Syntax:      
-~~~~~
+Syntax:
+~~~~{.php}
 sphere name [x y z [dx dy dz [ux uy uz]]] radius 
-~~~~~