Version History
---------------

v3.13.0
=======
General
=======
** Updated to Python3
** Added installer files for Python3 installation
** Updated sample scripts to import Core library. Needed for Run Script option which uses runpy library with Python3

Core
====
** Changed COctreeVoxelMesh::SaveVoxelMesh to take bSurface parameter rather than both bSurface and bCohesive. bSurface option outputs both surfaces and cohesive elements
** Clear element information from voxel mesh export before quitting
** Fixed bug in sheared refinement with negative shear angles
** Changed octree voxel mesh to enforce periodic meshing at boundaries
** Added CTextileDecoupledLToL class to create layer to layer textile where binder yarns in the same warp position are not tied together
** Added CBendingPeriodicBoundaries class to output boundary conditions for a unit cell in tension and bending
** Added CDomainPrism to create prismatic domains which can include concave shapes
** Implemented surface and tetgen meshing for prism domains

GUI
===
** Changed octree voxel mesh export to have one check box for output of surface nodes and cohesive elements
** Added drag resize to properties dialog
** Added prism domain option to VTU voxel export

UnitTests
=========
** Changed number of parameters to SaveVoxelMesh in octree voxel mesh test
** Updated octree voxel mesh test file for change to periodic boundaries
** Updated dry fibre test files to account for change in element data description
** Updated voxel export test files to UTF-8

v3.12.2
=======
Core
====
** Bugfix to octree refinement when starting with number of voxels other than 1x1x1

v3.12.1
=======
General
=======
** Updated VS2017 non-bundled installer to set 64-bit registry and added p4est libraries

Core
====
** Bugfix to octree refinement when starting with number of voxels other than 1x1x1
** Updated tetgen export so that o2 option works to export quadratic tet elements
** Change to octree voxel mesh so that initial number of voxels can be specified
** Bug fix in smoothing for octree voxel mesh
** Added AdjustTextileMesh function to CAdjustMeshInterference to allow intersection correction to be called from outside the dry fibre export

GUI
===
** Added octree refinement option to Export ABAQUS Voxel File option. Dialog for voxel octree refinement and smoothing options as secondary dialog
** Added Correct Small Intersections to Tools menu

UnitTests
=========
** Added tetgen quad export test
** Octree voxel mesh test modified for change in SaveVoxelMesh input parameters

v3.12.0
=======
GUI
===
** Added Refresh View option to Render menu
** Added bool casting for SWIG 4 compatibility
** Added Export Yarns, Mesh Yarn Ends and Seed Size options to surface mesh export
** Added Export ABAQUS Surface Mesh File option
** Added Set Resolution option to Tetgen Export
** Rearranged File Export menu
** Created separate ABAQUS and VTU voxel mesh options
** Removed Import TexGenV2 option

Core
====
** Created CMeshDomainPlane class - moved code in CTetgenMesh which did this
** Created CSurfaceMesh class - added functionality to create yarn and/or domain surfaces and to mesh domain ends with or without yarn end meshes
** Created CShellElementExport class - exports surface mesh elements as S4R shell elements with surface sets and contact definitions
** Added SetResolution function to CTextile
** Added SaveToVTK option to CTetgenMesh
** Bugfix to correct extra space in ConstraintsDriver in voxel mesh equations (issue 21)
** Bugfix to correct reversal of G13 and G23 when calculating material properties using periodic boundary conditions set up in voxel mesh export (issue 22)
** Added bRetainPoints variable to SectionPolygon constructor to enable shape to be forced to retain original points rather than iterate between them
** Bugfix to load linear interpolation from tg3 file
** Added COctreeVoxelMesh class for octree refinement and Laplacian smoothing

Unit Tests
==========
** Added tetgen mesh export test
** Changes to inp test files for voxel mesh bug fixes
** Added octree voxel tests

General
=======
** Updated 64-bit Python 27 VS2017 bundle installer to set 64-bit registry
** Updated 64-bit Python 27 VS2017 bundle installer to add Python path to registry

v3.11.0
=======

=======
General
=======
** Upgraded to VTK 6.3.0
** Changed CMakelists files for VS2017
** Created installer for VS2017 build
** Upgraded to wxWidgets3.0.4
** Added installer file for VS2017 build
** Added CFXImportVTK.exe and chamis_model_final.for to Utilities folder in installation

Core
====
** Added functions to create voxel mesh and periodic boundary conditions for rotated domains
** Made ShapeBinderYarns function public
** Bugfix to correct 4 quarter hybrid section constructor
** Added functions to access inherited class pointers in CYarnSection
** Added yarn number to volume fraction error messages
** Added write orientation and elements header functions to misc.cpp
** Included headers in all Abaqus .eld and .ori files
** Changed triangle library to https://github.com/wo80/Triangle to address memory issues in Win10 build
** Added whole surface output to dry fibre export with compression plates

GUI
===
** Added rotated boundary conditions option to Voxel Mesh Export
** Various bugfixes for wxWidgets3 compatability
** Bugfix in print pattern draft so doesn't exit program if cancel 
** Added ROTATED_BC to VolumeMesh export dialog
** Corrected size of rendered domain for textiles with very small dimensions

UnitTests
=========
** Added rotated voxel mesh export test
** Added files for mesher tests
** Added hybrid section tests
** Added GetXYarnIndex test to Textile3DTests
** Added rotated voxel test

v3.10.0
======
General
=======
** Increased resolution in Core module structure graph for documentation
** Added profile tests

Core
====
** Added OutputOrientationsAndElementSets an AddElementInfo functions to CVoxelMesh so that can call from Python script
** Moved WriteValues function to Misc.h
** Created CMaterial and CTextile Material classes in Materials files to remove duplication in CSimulationAbaqus and CPeriodicBoundaries
** Added OutputDummyNodeSets, CreateMaterials and OutputStep functions to CPeriodicBoundaries so that can call from Python script
** Bugfix to enable rotated sections with hybrid sections
** Changed TextileWeave2D.SetInPlaneTangents to set to true or false
** Added functionality to CSimulationAbaqus to export either whole yarn surfaces or upper and lower surfaces
** Bugfix to avoid crash if empty node set sent to CMesher SaveNodeSets
** Moved ConvertToInterpNodes into CTextile and also created CYarn function
** Changed SlaveNode section meshes to pointers
** Added weft stack ordering to ConvertToPatternDraft in orthogonal and layer to layer weaves

GUI
===
** Changed SaveToAbaqus to use CSimulationAbaqus so don't need to load Abaqus.py
** Bugfix in WeaveWizard3D to update number of binder layers in pattern dialog correctly
** Added Rotate Textile function
** Added Upper and Lower or Whole Surface options to dry fibre export
** Enabled Create Pattern Draft option
** Added dialog for weft stack ordering for pattern drafts

UnitTests
=========
** Added TestRotateYarns in GeometricTests
** Added DryFibreExport tests
** Added orthogonal weave to textile factory
** Added layer to layer weave to textile factory
** Added pattern draft tests

v3.9.0
======
General
=======
** Created ProfileTests folder for programs to profile
** Added DataHandlingInPlane script for handling of single layer voxel mesh export
** Added dataHandlingInPlane to Installation files
** Added VoxelExportTests & VoxelContinuumTest.inp test file
** Moved CompareFiles function out of XMLTests into TestUtilities
** Initialise binder pattern in 3D textiles after loading from file
** Added CompareFiles function int TestUtilities files to UnitTests

Core
====
** Added call to BuildTextileIfNeeded to DomainVolumeFraction calculations in CTextile
** Changed voxel Abaqus export so that creates transverse periodic boundary conditions for sheared as well as continuum
** Added functions to mymath.h to find closest of vector of XY points to a given point
** Added functions to mymath.h to find index of point in a vector of points which is within a given tolerence of a specified point. 
** Added functions to mymath.h to find the closest point on the lines joining a vector of points to a specified point
** Added function to find the point the point on a yarn surface which is closest to a specified point
** Bugfix in CMesh::MeshConvexHull function
** Added functions to create a quad element mesh of the plane through the centre of the yarns
** Added functions to get the number of layers in the section meshes
** Changed CYarnSectionMeshInterpNode to use the number of layers in the section mesh if already set
** Added CheckCells function to CTextile3DWeave. 

GUI
===
** Changed CMakeLists to work with VS2012
** Change to 3DWizard binder controls page so displays correct data when using edit
** Added dialog to trigger user survey on exit (after initial use and then after predefined number of uses)

v3.8.2
======
General
=======
** Added missing files to uninstaller
** Made separate Python26 and Python27 builds for bundled version. Seems to be an issue with Python27 version not always loading
** Changed non-bundled installer so that always copies Pythonx.dll into the TexGen folder (addresses problem if Python sub=version TexGen is compiled with is different to the installed Python version)

v3.8.1
======
Core
====
** Correction to volume mesh node sets to remove duplicate nodes when using quadratic elements
** Bugfix to prevent yarn AssignSection reassigning to itself
** Bugfix to ensure binder ratio is greater than 0 in CTextile3DWeave
** Added functions to find next and previous y cell index in CTextile3DWeave
** Changed CreatePeriodicBoundaries in CSimulationAbaqus to use the domain size rather than the repeat to find node pairs
** Changed power ellipse description in CSectionPowerEllipse.h to update documentation
** Changes to CheckUpVectors in CTextile3DWeave to check if textile has been built and to check for valid indices
** Bugfix to check for errors in intersection of yarns with domain for tetgen export. Exits if error in surface mesh
** Added check in CYarn.ReplaceNode for duplicate nodes
** Added GetSectionConstant function to YarnSection so that returns correct type of pointer for use in Python scripts
** Added angle to node so that cross-section can be angled relative to yarn tangent
** Changed CTextileWeave, CTextile3DWeave and CShearedTextileWeave2D to create default domain at textile height or + 10% as selected
** Added documentation comments to VoxelMesh.h
** Changes to creation of model from weave pattern for orthogonal weaves to take into account non-standard weaves
** Bug fixes in BuildTextile for 3D weaves
** Creation of pattern draft for LayerToLayer textiles
** Added functions to calculate volume fraction for domain
** Change to AddTextile to re-render if textile has been overwritten

Exporter
========
** Change to CExporter::ConvertSection to specify tangents at start and end of continuous sections, giving C1 continuity at the join
GUI
===
** Bugfix to Export Volume Mesh so that doesn't crash if not selected periodic boundaries
** Added checkbox to 2D & 3D weave wizards to choose whether or not to add 10% to height of default domain
** Added functions to calculate volume fraction for domain and for selected yarns
** Change to CTexGenMainFrame::TextileCallback to re-render if textile has been overwritten
** Change to message in domain volume fraction dialog to work in Linux

General
=======
** Added tow width and height to WeavePattern script
** Changed installation scripts to use Python27


v3.8.0
======
Core
====
** Added bCorrectWidths parameter to RefineTextile in TextileWeave and TextileWeave2D. Enables refine to be called without doing width correction
** Added Get3DWeave function to CTextile for calling 3D weave functions from Python scripts
** Added CalculateReedDesign function to CTextile3DWeave
** Added ShapeWeftYarns function to CTextile3DWeave to add extra nodes to weft yarns to minimise interference
** Added GetTangent function to CSectionPowerEllipse
** Improved test for whether binder node is added at 0 and 90 degrees (ie at ends) of adjacent weft yarns in LayerToLayer textiles based on angle between weft yarns
** Added function to TextileOrthogonal to create pattern draft from textile
** Changed tetgen mesh export to allow non-periodic meshing. In this case the domain surfaces are not triangulated prior to tetrahedralization by tetgen
** Added SetWidth function to CSectionEllipse
** Added check in DomainPlanes GetRepeatLimits to check for all repeats being set to zero
** Added CorrectEdgeInterference function to CTextileWeave
** Changes to TextileWeave2D::AdjustSectionsForRotation to allow for textile being non-periodic
** Added parameters to weave Refine() call to specify whether CorrectWidths and CorrectInterference functions are to be selected and whether the textile is periodic
** Changed CAdjustMeshInterference class so that can be called via Python interface. Also moved functions from CSimulationAbaqus into CAdjustMeshInterference to facilitate this
** Added Up vector to POINT_INFO. Use to create second perpendicular vector when outputting orientations.
** Bugfix to Volume Mesh export so doesn't crash if non-periodic mesh
** Changes to weave pattern import for orthogonal weaves (not included in release builds for 3.8.0)
** Changes to COrthogonalTextile and CTextile3DWeave to enable import of orthogonal weave pattern.


GUI
===
** Bug fix in CPatternDraftDialog to display correctly on dialog box
** Added check for textile existing before create pattern draft
** Added Save button to PatternDraftDialog
** Import WiseTex Python package on startup
** Add Max Nest Layers option
** Import FlowTex Python package on startup
** Added Periodic option to Tetgen Mesh export
** Correction for Python string in Tetgen export

General
=======
** Added WeavePattern script for inputting weave pattern text file and creating 3D model (not included in release builds for 3.8.0)
** Upgraded to OpenCASCADE 3.7.1
** Added LayeredTextile2.py to scripts which uses the CLayeredTextile class to create a layered textile
** Upgraded to tetgen version 1.5

v3.7.0
======
Core
====
** Added CTextileLayered class
** Added Get and SetPlane functions to CDomainPlanes class
** Added function to TexGen.cpp to return list of textiles loaded
** Added function to CTextile to get layered textile
** Bug fix to Check in Yarn AddNode for duplicate nodes
** Added functions to CTextile: SetAllYarnsYoungsModulusX etc to set properties for all yarns in the textile to the same value
** Bug fix to stop TexGen crashing when invalid distances are entered for domain planes
** Bug fix for if GetNode is called without interpolation being initialised
** Added default values for string in constructor of voxel mesh classes
** Changed CProperties to store value of FibreArea to avoid repeated recalculation
** Bug fix to GetBoxLimits in CDomainPlanes so that it returns correct value
** Included <iterator> in GeometrySolver for compatibility with VS2010
** Change to Mesh.cpp to speed up RemoveOpposingTriangles
** Added functions to nest layers, either maintaining offsets or finding maximum nesting
** Added CPatternDraft class
** Changes to Textile3DWeave and TextileWeave2D to create textiles from weave pattern input
** Creation of pattern draft from textile

GUI
===
** Check in Domain Create Box for min/max being correctly specified
** Added Layers option to 2D Weave Wizard. Allows specification of number of layers to be generated
** Added Create Layered to Textiles menus
** Added dialog to select textiles to be layered
** Added dialog to change offsets of layers in layered textiles
** Added Set Layer Offsets option to Textiles menu
** Added Nest Layers option
** Change to SectionSelect to pop event handler when destroy class
** Added PatternDraftDialog (Not included in release builds for v3.7.0)


General
=======
** Added latin_random files: uses latin hypercube method for assigning random offsets to layers
** Bug fix to dataHandling.py to correct indices for shear_yz and shear_zx

v3.6.1
======
Core
====
** Added default MaxVolumeFraction to CTextile3DWeave class
** Changed number of binder nodes added in layer to layer and angle interlock 3D textiles where binder is travelling diagonally through layers
** Changed 3D weave classes to allow all of warp direction yarns to be binders
** Changed CMesher class (used in Volume Mesh export) to give matching nodes on opposite faces when Periodic option is selected
** Added periodic boundary conditions to CMesher class
** Bug fixes in CShearedTextileWeave2D so that runs if no domain specified and if numbers of warp and weft yarns are different
** Change to CInterpolation::CreateEquiSpacedSlaveNodes to improve spacing when yarn has high curvature

GUI
===
** Added dialog to Save Screen Shot so that the image resolution can be increased
** Added Join Yarns option to Export dialog
** Changed 3D weave wizard front page to show images and description of different weave types
** Changed 3D weave wizard warp page to show binder/warp ratio and allow warp ratio of 0 (ie all binder yarns)
** Changed Export Volume Mesh options to include boundary condition selection when Periodic option is selected

Exporter
========
** Changed ConvertYarns function so can join yarn sections into continuous yarn

Renderer
========
** Changed SaveScreenshot so axes are disabled if  magnifying image (otherwise they are tiled across image)

General
======
** Addition of FloatVector to Core.i
** Added Python STL templates to front page of documentation
** Changed installation scripts to use Python26

v3.6.0
======
Core
====
** Put TextileWeave2D refine function calls into RefineTextile function. Refine can be called via TextileWeave class subsequent to weave creation
** Changes to correct volume mesh of rotated rectangular sections
** Correction to single layer RVE boundary conditions for Abaqus voxel mesh export
** Extended voxel mesh to domains sheared in the x and y directions, giving voxels with a parallelepiped shape
** Bug fix in PeriodicBoundaries.cpp to correct error in thermo-mechanical step
** Added maximum volume fraction variable to Orthogonal refine 
** Added ShearedPeriodicBoundary class so that periodic boundary condition equations are output for the sheared domain voxel mesh
** Added StaggeredPeriodicBoundary and StaggeredVoxelMesh classes. Creates periodic boundary condition equations given an x offset to give a reduced unit cell 
** Added ShearedTextileWeave2D class. Creates sheared 2D textile with either rectangular or sheared domain
** Bugfix to YarnSectionInterpNode so that creates consistent section meshes when there are MidNodeSections
** Changed default number of section points to 40 for 2D wizard and individual yarn creation
** Added functions to YarnSectionInterpNode to process mid node sections
** Added refine functions to ShearedTextileWeave2D. Functions to calculate yarn rotations required, correct interference and adjust sections to restore correct yarn area

GUI
===
** Changes to correctly generate rotated rectangular sections
** Added Sheared option to Abaqus voxel mesh export
** Added maximum yarn volume fraction input to 3D wizard
** Added RangeValidator class to confine text control to given bounds
** Changed entry in Properties dialog to Total Yarn Area for clarity
** Changed AbaqusVoxelInput dialog to include sheard and staggered periodic boundary conditions
** Added options to WeaveWizard for creating sheared textiles
** Changes to enable editing of sheared textiles
** Changed default for IGES and STEP export to Faceted (OpenCascade seems to be more robust in this mode)

Renderer
--------
** Updated to VTK 5.10.1

v3.5.3
======
Core
----
** Various small changes to remove compilation warnings
** Bug fix to orientation calculation in PointInsideYarn
** Bug fix to CSection::CreateEquiSpacedSection
** Point inside yarn checks for constant cross-section before calculating orientation
** Output of voxel and surface meshes in SCIRun compatible format
** Modification to CalculateNumberOfLayers functions to give correct number of layers with rotated and polygon sections
** Changes to CTextileOrthogonal::AdjustBinderYarnSection correction of initial calculation of 
   binder target height to give correct final textile height
** Change to CTextileOrthogonal::AdjustOuterWeftYarns to ensure outer weftyarns have same volume fraction as original shape if possible
** Change to CTextileOrthogonal to offset yarn below crimped outer weft yarns (if space available)
** Changed CYarn::PointInsideYarn function to give correct solution for both convex and concave sections
** Changes to CMesh::GetNodePairs to optimise
** Changes to SimulationAbaqus::GetYarnSurfaces and GetPeriodicBoundaries to optimise

Renderer
--------
** Changed render orientation so that renders when no domain specified

GUI
---
** Added SCIRun .pts format to options in SaveSurfaceMesh
** Changed domain tooltip in wizards to indicated z direction is fabric thickness + 10%

Exporter
--------
** Exception handling for OpenCASCADE exception when exporting to STEP and IGES

General
-------
** Added scripts for extraction of material properties from Abaqus .odb file produced by running .inp file generated for voxel export


v3.5.2
======

Core
----
** Added functions to Textile3DWeave and TextileOffsetAngleInterlock for implementation of 3DWizard edit
** Added CSectionRectangle and CSectionMeshRectangleSection classes
** Added refine option to CTextileOrthogonal
** Added Orientations to POINT_INFO structure
** Added calculation of orientations from section meshes so that gives changes to orientations where cross-section changes
** Bugfix to save number of binder layers in 3D layer-to-layer weave

GUI
---
** Implemented Edit function for textiles created with 3D weave wizard
** Added Rectangle section to Select Section dialog
** Change to YarnSectionSelect to turn off triangluar corners in section meshes when rectangular section in yarn
** Added refine option to Orthogonal weaves in 3D wizard. Adjusts weave to specified thickness.
** Added dialog with link to User Guide
** Added Render Orientations option to Renderer
** Added yes/no dialog to check before delete textile

General
-------
Added 64-bit installer and modified 32-bit ones so that can have both builds side by side.

v3.5.1
======

Core
----
** Added ReplaceFilenameSpaces function to replace spaces with underscores for ABAQUS export compatibility
** Added x offset parameter to power ellipse section. Input distance from centre for position of maximum height
** Correction of ConstraintsDriver naming in Load Cases for voxel export (PeriodicBoundaries.cpp)
** Bug fixes in PeriodicBoundaries and VoxelMesh - don't create materials for yarns if matrix only, output element set for matrix when matrix only
** Added OutputMatrixElementSet and OutputAllNodesSet functions to VoxelMesh
** Added CTextileOffsetAngleInterlock class
** Added CreateContacts for new CTextile3DWeave based classes to CSimulationAbaqus (to create contacts for dry textile Abaqus export)
** Changed 3D textile classes to store a power for the power ellipse sections and create them accordingly
** Added nodes containing domain AABB to Abaqus dry fibre export
** Added refine option to CTextileOrthogonal. NB Still in development. Code in repository but option not included in this release
** Removed thermomechanical step from voxel mesh output. Causes error trying to access non-existent Node 0. Will replace when find cause

GUI
---
** Added OnWarpYarnChanged function to WeaveWizard3D to prevent selection of warp yarn ratio greater than number of warp yarns
** Added x offset parameter to power ellipse section. Input distance from centre for position of maximum height
** Changed 3D wizard to give Offset option for angle interlock weaves
** Added option to 3D wizard to specify power of power ellipse section for warp, weft and binder yarns
** Added refine option to Orthogonal weaves in 3D wizard.  Adjusts weave to specified thickness. NB Still in development. Code in repository but option not included in this release
** Added properties pages to 3D wizard: used to keep yarns within realistic fibre volume fractions when refining
** Added dialog to select filename for Tetgen mesh export

General
-------
** Created LayeredTextile.py script for combination of one textile from two CTextileWeave2D textiles
** Upgraded to OpenCASCADE6.5.2

v3.5.0
======
Core
----
** Added CTextile3DWeave and CTextileOrthogonal classes for automatic creation of 3D woven textiles
** Added CTextileAngleInterlock class
** Bug fix for insertion and deletion of nodes when using interpolation between nodes
** Added CTextileLayerToLayerclass
** Convert surface mesh to triangles before save as Tetgen mesh

GUI
---
** Added new 3D Weave Wizard.
** Added Tetgen Option dialog
** Rebuilt TexGen.xrc using wxFormBuilder

v3.4.1
======
Core
----
** Reinstated calculation of SurfaceDefinitions in Abaqus dry fibre export
** Added recalculation of SurfaceDefinitions after mesh regeneration in Abaqus dry fibre export
** Bug fix in output of voxel mesh boundary conditions

GUI
---
** Added option to choose between C3D8 and C3D8R elements in ABAQUS dry fibre and voxel exports
** Added option to not output boundary conditions to ABAQUS voxel export


v3.4.0
======
Core
----
** Added equations & load cases for z-axis untied periodic boundary conditions
** Added periodic boundary conditions to Abaqus voxel mesh output
** Corrected node order in elements of voxel mesh
** Bug fix in CTimer
** Added matrix properties to textile
** Added x,y,z Young's modulus and Poisson's ratio and xy,xz and yz shear modulus to yarn properties
** Added coeffiecients of thermal expansion to yarn and matrix properties
** Bug fix in CYarSectionInterpPosition
** Changes to CSectionPolygon to calculate correct t values around circumference
** Improvements to mesh interference correction in Abaqus export
** Added AdjustSectionMeshes to Abaqus export - regenerates textile based on interference adjustment to give more even volume mesh
** Added set of default material properties

GUI
---
** Addition of tied/z-untied option to voxel mesh dialog
** Improvement to filename input for Abaqus dry mesh and voxel options
** Added matrix property input
** Added x,y,z Young's modulus and Poisson's ratio and xy,xz and yz shear modulus yarn property inputs
** Added coefficient of thermal explansion property input for yarn and matrix
** Added option to regenerate mesh after interference correction in Abaqus export

v3.3.3
======
GUI
---
** Bugfix to send correct textile to SaveToAbaqus
** Addition of option to correct interference on SaveToAbaqus dialog
** Fixed bug in DomainPlanes dialog for Linux version
** Error message if try to use modeller options before create textile
** Error message if no filename when save to Abaqus
** Added check for interference needing updating when select TrimToDomain
** Checkbox added to AbaqusOptions to set include compression plates
** Added option to save voxels to Abaqus file ( yarn, matrix or both)
** Removed Young's modulus & Poisson's ratio from SaveToAbaqus dialog as now obtained from yarn properties

Core
----
** Added AdjustMeshInterference: Adjusts for small intersections in volume mesh by moving points on meshes
   until within a given tolerance
** Change to MeshClosedLoop so that returns without meshing if can't fit triangles rather than keeling over with assertion
** Changed DetectInterference so that yarn index of yarn which the point is inside is returned
** Changed DetectInterference to check whether point inside domain
** Added POLYGON element type to mesh.  Used to save cross-sections when adjusting volume mesh
** Added Max( XYZ &Vector) to mymath - returns maximum of X,Y,Z values in vector
** Code to calculate section volume fractions of adjusted volume mesh
** Added Young's Modulus and Poisson's Ratio to yarn properties
** Added SetupMaterials to save to abaqus so that saves material for yarns from yarn properties
** Code to save voxels to Abaqus file
** Added SetSubMatrix function to CMatrix
** Added RemoveElementType function to CMesh
** Added overloaded GetPointInformation function which forces search within specified yarn only
** Change to SimulationAbaqus to call GetPointInformation for specific yarns before single mesh is assembled

Renderer
--------
** Changed call to DetectInterference so that returns yarn index of yarn the point is inside
** Changes to give correct rendering of interference when change domain
** Code to ensure that new POLYGON mesh type isn't rendered

v3.3.2
======
Core
----
** Modifications to functions for Abaqus output
** Added SetInPlaneTangents function to 2DTextile class to force in-plane tangents at master nodes
** Fixed bug in SetProperties
** Changes to finish off hybrid section implementation
** Bug fix in Abaqus export
** Changes to correct incompatible vector iterator errors
** Added function to force number of layers in sections to be same along length of yarn so compatible when building volume mesh

GUI
---
** Added option to Weave Wizard to force in-plane tangents at nodes for 2D weaves
** Added Render Intersection Depth to Renderer menu
** Changed add empty textile so that added via Python command - otherwise missed when record script
** Added Abaqus File option to Files->Export
** Changes to finish off hybrid section implementation
** Bug fix in WeaveWizard to get Linux version working

Renderer
--------
** Changed RenderIntersections so takes bool bDepth in which case intersection points are scaled to depth of intersection from surface
** Implemented render volume mesh
** Fixed bugs in CircleRange & WeavePatternCtrl which caused Linux build to crash
** Added Option in Section dialog to keep sections compatible along length of yarn


v3.3.1
====
Core
----
** Fixed bug where PointInsideYarn function didn't converge
** Added functions to allow messages to be turned on/off

GUI
---
** Added menu option to turn messages on/off

Renderer
--------
** Changed deprecated function calls to current ones

v3.3.0
======
Core
----
** Added GeometrySolver class which can be used to predict textile geometry
** Added SimulationAbaqus class which can be used to automate the process of running ABAQUS simulations
** Added TextileDeformerAbaqus which uses ABAQUS to calculate deformed textile geometry under given boundary conditions
** Added Rotate and Translate functions to CDomain class
** Added option to prevent projecting mid-side nodes to the yarn-matrix boundary when meshing
** Increased precision of floating point numbers stored in .tg3 files
** Fixed bug where fibre area wasn't calculated correctly from number of fibres & fibre diameter
** Fixed various bugs in the volume meshing algorithm
** Fixed wedge element ordering inconsistencies

Renderer
--------
** Added ability to render images as quads in 3D space in the render window
** Axes notations now switch between black and white depending on background color

GUI
---
** Added various options to the export mesh dialog with some tool tips
** Fixed display bug for weave wizard. When number of weft yarns was equal to 1 the yarn was not straight.
** Added parallel projection option to menu

v3.2.1
======
Core
----
** Fixed a problem where the faces on Tetrahedral volume meshes created from TexGen didn't always match
** Removed support for Hybrid meshes, meshing was exhibiting the same face mismatching issues however this is more difficult to solve
** Updated GridFile.py and WiseTex.py to work with API changes of TexGen
** Added code to export mesh to ABAQUS file format
** Internal changes to the mesh class which resolves some issues with using it with the Python interface
** Added function in CTexGenRenderer to render yarns with a given color
** Fixed bug where mesher was ignoring seed if it was too low due to a problem with passing parameters to triangle
** Added quadratic element support for volume meshing


v3.2.0
======
Core
----
** Added ability to create volume meshes of yarns and domain directly within texgen
** Added functions to export to VTK file format for external viewing
** Added functions to export surface mesh to STL file format
** Added new classes to store properties of Textiles and Yarns along with their units
** Optimised code that calculates repeat vectors necessary to fit yarns within the domain

GUI
---
** The 2D weave wizard now also handles 3D weaves
** Weave wizard allows setting width, height and spacing of yarns independantly
** Added menus for taking screenshots and exporting surface/volume meshes
** Added dialog for setting material properties
** Added support for hybrid and power ellipse sections


General
-------
** Created new bundle installer that comes packaged with Python

v3.1.0
======
Core
----
** Introduced new 'ObjectContainer' class to ease memory handling
** Fixed a bug with saving to XML file
** Improved SectionMeshRectangular to deal with circular-like cross sections
** Changed AssignDomain to take a const reference.
** Added SetThickness function to CTextileWeave
** If yarn interpolation function, resolution, section and section mesh are not defined defaults are used now instead of giving error messages

Renderer
--------
** Extended CRenderer::Start method to include the ability to render window size
** Added function to take screenshot

GUI
---
** Updated to be compatible with wxWidgets 2.8
** Updated GUI to work with wxWidgets unicode build
** Introduced new modeller page

General
-------
** Added twill weave example script
** Created unit tests for GridFile.py, FlowTex.py, WiseTex.py and TexGenv2.py
** Updated TexGenv2.py to read Up vectors. However there is still no support for varying cross section definition.
** Added tolerance to find PointInsideYarn
** Updated lenticular cross section to allow a distortion lenticular cross section
** Changed the behaviour of FlowTex.py in response to request from Bart
** Fixed problem with calling CTexGenRenderer::ResetCamera(XYZ) from python.
** Cleaned up C++ example programs
** Changed doxyfile to generate windows .chm help file and included in the installer
** Added option to create static builds

v3.0.3
======
** Fixed bug with windows installer, python dll should be copied correctly now
** Added option to switch domain axes on and off independently from the domain itself
** Fixed a bug related to loading YarnSectionInterpNode instances from XML
** Updated the CTextileWeave class to create more realistic models
** Updated GetPointInformation in CTextile with a tolerance

v3.0.2
======
** Initial SourceForge release, started keeping record of changes
