From 765b3e07de1c590e1bf92262069d88c88dd205bd Mon Sep 17 00:00:00 2001 From: bugmaster Date: Fri, 1 Nov 2013 17:16:16 +0400 Subject: [PATCH] Renaming overview folder --- dox/overview/LICENSE.md | 157 ++++ dox/overview/Overview.md | 611 +++++++++++++ dox/overview/images/overview_c__ie.png | Bin 0 -> 38265 bytes dox/overview/images/overview_draw.png | Bin 0 -> 17567 bytes dox/overview/images/overview_installation.png | Bin 0 -> 6699 bytes dox/overview/images/overview_mvc.png | Bin 0 -> 32022 bytes .../images/overview_occttransparent.png | Bin 0 -> 35825 bytes dox/overview/images/overview_qt.png | Bin 0 -> 64276 bytes .../tutorial/images/tutorial_image001.png | Bin 0 -> 3971 bytes .../tutorial/images/tutorial_image002.png | Bin 0 -> 4747 bytes .../tutorial/images/tutorial_image003.png | Bin 0 -> 7302 bytes .../tutorial/images/tutorial_image004.png | Bin 0 -> 1948 bytes .../tutorial/images/tutorial_image005.png | Bin 0 -> 1875 bytes .../tutorial/images/tutorial_image006.png | Bin 0 -> 2747 bytes .../tutorial/images/tutorial_image007.png | Bin 0 -> 3229 bytes .../tutorial/images/tutorial_image008.png | Bin 0 -> 3702 bytes .../tutorial/images/tutorial_image009.png | Bin 0 -> 4295 bytes .../tutorial/images/tutorial_image010.png | Bin 0 -> 4364 bytes .../tutorial/images/tutorial_image011.png | Bin 0 -> 2794 bytes .../tutorial/images/tutorial_image012.png | Bin 0 -> 3221 bytes .../tutorial/images/tutorial_image013.png | Bin 0 -> 2633 bytes .../tutorial/images/tutorial_image014.png | Bin 0 -> 3333 bytes .../tutorial/images/tutorial_image015.png | Bin 0 -> 4437 bytes .../tutorial/images/tutorial_image016.png | Bin 0 -> 4158 bytes .../tutorial/images/tutorial_image017.png | Bin 0 -> 5864 bytes .../tutorial/images/tutorial_image018.png | Bin 0 -> 2876 bytes .../tutorial/images/tutorial_image019.png | Bin 0 -> 42500 bytes dox/overview/tutorial/tutorial.md | 862 ++++++++++++++++++ 28 files changed, 1630 insertions(+) create mode 100644 dox/overview/LICENSE.md create mode 100644 dox/overview/Overview.md create mode 100644 dox/overview/images/overview_c__ie.png create mode 100644 dox/overview/images/overview_draw.png create mode 100644 dox/overview/images/overview_installation.png create mode 100644 dox/overview/images/overview_mvc.png create mode 100644 dox/overview/images/overview_occttransparent.png create mode 100644 dox/overview/images/overview_qt.png create mode 100644 dox/overview/tutorial/images/tutorial_image001.png create mode 100644 dox/overview/tutorial/images/tutorial_image002.png create mode 100644 dox/overview/tutorial/images/tutorial_image003.png create mode 100644 dox/overview/tutorial/images/tutorial_image004.png create mode 100644 dox/overview/tutorial/images/tutorial_image005.png create mode 100644 dox/overview/tutorial/images/tutorial_image006.png create mode 100644 dox/overview/tutorial/images/tutorial_image007.png create mode 100644 dox/overview/tutorial/images/tutorial_image008.png create mode 100644 dox/overview/tutorial/images/tutorial_image009.png create mode 100644 dox/overview/tutorial/images/tutorial_image010.png create mode 100644 dox/overview/tutorial/images/tutorial_image011.png create mode 100644 dox/overview/tutorial/images/tutorial_image012.png create mode 100644 dox/overview/tutorial/images/tutorial_image013.png create mode 100644 dox/overview/tutorial/images/tutorial_image014.png create mode 100644 dox/overview/tutorial/images/tutorial_image015.png create mode 100644 dox/overview/tutorial/images/tutorial_image016.png create mode 100644 dox/overview/tutorial/images/tutorial_image017.png create mode 100644 dox/overview/tutorial/images/tutorial_image018.png create mode 100644 dox/overview/tutorial/images/tutorial_image019.png create mode 100644 dox/overview/tutorial/tutorial.md diff --git a/dox/overview/LICENSE.md b/dox/overview/LICENSE.md new file mode 100644 index 0000000000..135828613d --- /dev/null +++ b/dox/overview/LICENSE.md @@ -0,0 +1,157 @@ +License {#occt_pubic_license} +======= + +## Open CASCADE Technology Public License + +*License version: 6.6* @htmlonly
@endhtmlonly +*March, 2013* + +Open CASCADE S.A.S. releases and makes publicly available the source code of the software Open CASCADE Technology to the free software development community under the terms and conditions of this license. + +It is not the purpose of this license to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this license has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. + + +Please read this license carefully and completely before downloading this software. By downloading, using, modifying, distributing and sublicensing this software, you indicate your acceptance to be bound by the terms and conditions of this license. If you do not want to accept or cannot accept for any reasons the terms and conditions of this license, please do not download or use in any manner this software. + +### 1. Definitions + +Unless there is something in the subject matter or in the context inconsistent therewith, the capitalized terms used in this License shall have the following meaning. + +"Applicable Intellectual Property Rights" means (a) with respect to the Initial Developer, any rights under patents or patents applications or other intellectual property rights that are now or hereafter acquired, owned by or assigned to the Initial Developer and that cover subject matter contained in the Original Code, but only to the extent necessary to use, reproduce, modify, distribute or sublicense the Original Code without infringement; and (b) with respect to You or any Contributor, any rights under patents or patents applications or other intellectual property rights that are now or hereafter acquired, owned by or assigned to You or to such Contributor and that cover subject matter contained in Your Modifications or in such Contributor's Modifications, taken alone or in combination with Original Code. + +"Contributor" means each individual or legal entity that creates or contributes to the creation of any Modification, including the Initial Developer. + +"Derivative Program": means a new program combining the Software or portions thereof with other source code not governed by the terms of this License. + +"Initial Developer": means Open CASCADE S.A.S., with main offices at 1, place des Frères Montgolfier, 78280 Guyancourt, France. + +"Modifications": mean any addition to, deletion from or change to the substance or the structure of the Software. When source code of the Software is released as a series of files, a Modification is: (a) any addition to, deletion from or change to the contents of a file containing the Software or (b) any new file or other representation of computer program statements that contains any part of the Software. By way of example, Modifications include any debug of, or improvement to, the Original Code or any of its components or portions as well as its next versions or releases thereof. + +"Original Code": means (a) the source code of the software Open CASCADE Technology originally made available by the Initial Developer under this License, including the source code of any updates or upgrades of the Original Code and (b) the object code compiled from such source code and originally made available by Initial Developer under this License. + +"Software": means the Original Code, the Modifications, the combination of Original Code and any Modifications or any respective portions thereof. + +"You" or "Your": means an individual or a legal entity exercising rights under this License. + + +### 2. Acceptance of license + +By using, reproducing, modifying, distributing or sublicensing the Software or any portion thereof, You expressly indicate Your acceptance of the terms and conditions of this License and undertake to act in accordance with all the provisions of this License applicable to You. + + +### 3. Scope and purpose + +This License applies to the Software and You may not use, reproduce, modify, distribute, sublicense or circulate the Software, or any portion thereof, except as expressly provided under this License. Any attempt to otherwise use, reproduce, modify, distribute or sublicense the Software is void and will automatically terminate Your rights under this License. + + +### 4. Contributor license + +Subject to the terms and conditions of this License, the Initial Developer and each of the Contributors hereby grant You a world-wide, royalty-free, irrevocable and non-exclusive license under the Applicable Intellectual Property Rights they own or control, to use, reproduce, modify, distribute and sublicense the Software provided that: + +You reproduce in all copies of the Software the copyright and other proprietary notices and disclaimers of the Initial Developer as they appear in the Original Code and attached hereto as Schedule "A" and any other notices or disclaimers attached to the Software and keep intact all notices in the Original Code that refer to this License and to the absence of any warranty; +You include a copy of this License with every copy of the Software You distribute; +If you distribute or sublicense the Software (as modified by You or on Your behalf as the case may be), You cause such Software to be licensed as a whole, at no charge, to all third parties, under the terms and conditions of the License, making in particular available to all third parties the source code of the Software; +You document all Your Modifications, indicate the date of each such Modifications, designate the version of the Software You used, prominently include a file carrying such information with respect to the Modifications and duplicate the copyright and other proprietary notices and disclaimers attached hereto as Schedule "B" or any other notices or disclaimers attached to the Software with your Modifications. + +For greater certainty, it is expressly understood that You may freely create Derivative Programs (without any obligation to publish such Derivative Program) and distribute same as a single product. In such case, You must ensure that all the requirements of this License are fulfilled for the Software or any portion thereof. + + +### 5. Your license + +You hereby grant all Contributors and anyone who becomes a party under this License a world-wide, non-exclusive, royalty-free and irrevocable license under the Applicable Intellectual Property Rights owned or controlled by You, to use, reproduce, modify, distribute and sublicense all Your Modifications under the terms and conditions of this License. + + +### 6. Software subject to license + +Your Modifications shall be governed by the terms and conditions of this License. You are not authorized to impose any other terms or conditions than those prevailing under this License when You distribute and/or sublicense the Software, save and except as permitted under Section 7 hereof. + + +### 7. Additional terms + +You may choose to offer, on a non-exclusive basis, and to charge a fee for any warranty, support, maintenance, liability obligations or other rights consistent with the scope of this License with respect to the Software (the "Additional Terms") to the recipients of the Software. However, You may do so only on Your own behalf and on Your sole and exclusive responsibility. You must obtain the recipient's agreement that any such Additional Terms are offered by You alone, and You hereby agree to indemnify, defend and hold the Initial Developer and any Contributor harmless for any liability incurred by or claims asserted against the Initial Developer or any Contributors with respect to any such Additional Terms. + + +### 8. Disclaimer of warranty + +The Software is provided under this License on an "as is" basis, without warranty of any kind, including without limitation, warranties that the Software is free of defects, merchantable, fit for a particular purpose or non-infringing. The entire risk as to the quality and performance of the Software is with You. + + +### 9. Liability + +Under no circumstances shall You, the Initial Developer or any Contributor be liable to any person for any direct or indirect damages of any kind including, without limitation, damages for loss of goodwill, loss of data, work stoppage, computer failure or malfunction or any and all other commercial damages or losses resulting from or relating to this License or indirectly to the use of the Software. + + +### 10. Trademark + +This License does not grant any rights to use the trademarks, trade names and domain names "MATRA", "EADS Matra Datavision", "CAS.CADE", "Open CASCADE", "opencascade.com" and "opencascade.org" or any other trademarks, trade names or domain names used or owned by the Initial Developer. + + +### 11. Copyright + +The Initial Developer retains all rights, title and interest in and to the Original Code. You may not remove the copyright (c) notice which appears when You download the Software. + + +### 12. Term + +This License is granted to You for a term equal to the remaining period of protection covered by the intellectual property rights applicable to the Original Code. + + +### 13. Termination + +In case of termination, as provided in Section 3 above, You agree to immediately stop any further use, reproduction, modification, distribution and sublicensing of the Software and to destroy all copies of the Software that are in Your possession or control. All sublicenses of the Software which have been properly granted prior to termination shall survive any termination of this License. In addition, Sections 5, 8 to 11, 13.2 and 15.2 of this License, in reason of their nature, shall survive the termination of this License for a period of fifteen (15) years. + + +### 14. Versions of the license + +The Initial Developer may publish new versions of this License from time to time. Once Original Code has been published under a particular version of this License, You may choose to continue to use it under the terms and conditions of that version or use the Original Code under the terms of any subsequent version of this License published by the Initial Developer. + + +### 15. Miscellaneous + +#### 15.1 Relationship of Parties + +This License will not be construed as creating an agency, partnership, joint venture or any other form of legal association between You and the Initial Developer, and You will not represent to the contrary, whether expressly, by implication or otherwise. + +#### 15.2 Independent Development + +Nothing in this License will impair the Initial Developer's right to acquire, license, develop, have others develop for it, market or distribute technology or products that perform the same or similar functions as, or otherwise compete with, Modifications, Derivative Programs, technology or products that You may develop, produce, market or distribute. + +#### 15.3 Severability + +If for any reason a court of competent jurisdiction finds any provision of this License, or portion thereof, to be unenforceable, that provision of the License will be enforced to the maximum extent permissible so as to effect the economic benefits and intent of the parties, and the remainder of this License will continue in full force and extent. + + +@htmlonly
@endhtmlonly +#### END OF THE TERMS AND CONDITIONS OF THIS LICENSE + +Open CASCADE S.A.S. is a French société par actions simplifiée having its main offices at 1, place in Frères Montgolfier, 78280 Guyancourt, France. Its web site is located at the following address http://www.opencascade.com + + +#### Open CASCADE Technology Public License + +#### Schedule "A" + +The content of this file is subject to the Open CASCADE Technology Public License Version 6.5 (the "License"). +You may not use the content of this file except in compliance with the License. +Please obtain a copy of the License at http://www.opencascade.org and read it completely before using this file. The Initial Developer of the Original Code is Open CASCADE S.A.S., with main offices at 1, place des Frères Montgolfier, 78280 Guyancourt, France. The Original Code is copyright (c) Open CASCADE S.A.S., 2001. All rights reserved. + +"The Original Code and all software distributed under the License are distributed on an "AS IS" basis, without warranty of any kind, and the Initial Developer hereby disclaims all such warranties, including without limitation, any warranties of merchantability, fitness for a particular purpose or non-infringement. + +Please see the License for the specific terms and conditions governing rights and limitations under the License". + +#### End of Schedule "A" + + +#### Open CASCADE Technology Public License + +#### Schedule "B" + +"The content of this file is subject to the Open CASCADE Technology Public License Version 6.5 (the "License"). You may not use the content of this file except in compliance with the License. Please obtain a copy of the License at http://www.opencascade.org and read it completely before using this file. The Initial Developer of the Original Code is Open CASCADE S.A.S., with main offices at 1, place des Frères Montgolfier, 78280 Guyancourt, France. The Original Code is copyright (c) Open CASCADE S.A.S., 2001. All rights reserved. + +Modifications to the Original Code have been made by ________________________. Modifications are copyright (c) [Year to be included]. All rights reserved. + +The software Open CASCADE Technology and all software distributed under the License are distributed on an "AS IS" basis, without warranty of any kind, and the Initial Developer hereby disclaims all such warranties, including without limitation, any warranties of merchantability, fitness for a particular purpose or non-infringement. Please see the License for the specific terms and conditions governing rights and limitations under the License". + +#### End of Schedule "B" + +@htmlonly
@endhtmlonly \ No newline at end of file diff --git a/dox/overview/Overview.md b/dox/overview/Overview.md new file mode 100644 index 0000000000..7e34d0afcf --- /dev/null +++ b/dox/overview/Overview.md @@ -0,0 +1,611 @@ +Overview {#mainpage} +======== + +@section OCCT_OVW_SECTION_1 Welcome + +Welcome to Open CASCADE Technology version 6.7.0, a minor release, +which introduces a number of new features and improved traditional +functionality along with some changes over the previous release 6.6.0. + +This release makes Open CASCADE Technology even a more powerful and stable +development platform for 3D modeling and numerical simulation applications. + +Open CASCADE Technology 6.7.0 is a full-featured package that allows developing +applications on Windows and Linux platforms. + +@htmlonly
@endhtmlonly http://www.opencascade.org + +@image html /overview/images/overview_occttransparent.png +@image latex /overview/images/overview_occttransparent.png + +Copyright (c) 2001-2013 OPEN CASCADE S.A.S. + +@image html /resources/occt_logo.png +@image latex /resources/occt_logo.png + +@htmlonly
@endhtmlonly + +@section OCCT_OVW_SECTION_2 Copyrights + +Copyright(c) 2001-2013 by OPEN CASCADE S.A.S. All rights reserved. + + Trademark information +---------------------- + +You are hereby informed that all software is a property of its respective authors and is protected by +international and domestic laws on intellectual property and trademarks. +Should you need further information, please directly contact the authors. + +CAS.CADE and Open CASCADE are registered trademarks of OPEN CASCADE S.A.S. + + Acknowledgement +------------------ + +The following parties are acknowledged for producing tools which are used within +Open CASCADE Technology libraries or for release preparation. + +You are hereby informed that all rights to the software listed below belong to its respective +authors and such software may not be freely available and/or be free of charge for any kind +of use or purpose. We strongly recommend that you carefully read the license of these products +and, in case you need any further information, directly contact their authors. + +**Qt** is a cross-platform application framework that is widely used for developing application software +with graphical user interface (GUI). Qt is free and open source software distributed under +the terms of the GNU Lesser General Public License. In OCCT Qt is used for programming samples. +If you need further information on Qt, please, refer to Qt Homepage (qt.digia.com). + +**Tcl** is a high-level programming language. Tk is a graphical user interface (GUI) toolkit, +with buttons, menus, listboxes, scrollbars, and so on. Taken together Tcl and Tk provide a solution +to develop cross-platform graphical user interfaces with a native look and feel. Tcl/Tk is under copyright by +Scriptics Corp., Sun Microsystems, and other companies. However, Tcl/Tk is an open source, and +the copyright allows you to use, modify, and redistribute Tcl/Tk for any purpose, without an +explicit license agreement and without paying any license fees or royalties. +To use Tcl/Tk, please refer to the Licensing Terms (http://www.tcl.tk/software/tcltk/license.html). + +**Robert Boehne** has developed **GNU Autoconf**, **Automake** and **Libtool** scripts and makefiles +for the Open CASCADE project http://sourceforge.net/projects/autoopencas/, +which became an initial groundwork for the build scripts based on respective GNU tools +(autoconf, automake and libtool) in Open CASCADE Technology version 4.0. +These scripts are now maintained by the OPEN CASCADE company. + +**GL2PS** is developed by Christophe Geuzaine and others. It is OpenGL to PostScript printing library. +The library is licensed under GL2PS LICENSE http://www.geuz.org/gl2ps/COPYING.GL2PS Version 2, November 2003. + +**FreeType 2** is developed by Antoine Leca, David Turner, Werner Lemberg and others. +It is a software font engine that is designed to be small, efficient, highly customizable and +portable while capable of producing high-quality output (glyph images). This product +can be used in graphic libraries, display servers, font conversion tools, +text image generation tools, and many other products. + +FreeType 2 is released under two open-source licenses: BSD-like FreeType License and the GPL. + +**Intel(R) Threading Building Blocks (TBB)** offers a rich and complete approach to expressing parallelism in a C++ program. +It is a library that helps you to take advantage of multi-core processor performance without having to be a threading expert. +Threading Building Blocks is not just a threads-replacement library. It represents a higher-level, task-based parallelism that +abstracts platform details and threading mechanisms for scalability and performance. +TBB is available under GPLv2 license with the runtime exception. + +Open CASCADE Technology WOK module on Windows also makes use of LGPL-licensed C routines * regexp and getopt, taken from GNU C library. + +**Doxygen** (Copyright (c) 1997-2010 by Dimitri van Heesch) is open source documentation system for +C++, C, Java, Objective-C, Python, IDL, PHP and C#. This product is used in Open CASCADE Technology +for automatic creation of Technical Documentation from C++ header files. +If you need further information on Doxygen, please refer to http://www.stack.nl/~dimitri/doxygen/index.html. + +**Graphviz** is open source graph visualization software developed by John Ellson, Emden Gansner, Yifan Hu and Arif Bilgin. +Graph visualization is representiation of structured information as diagrams of abstract graphs and networks. +This product is used together with Doxygen in Open CASCADE Technology for automatic creation of Technical Documentation +(generation of dependency graphs). Current versions of Graphviz are licensed on an open source +basis only under The Eclipse Public License (EPL) (http://www.graphviz.org/License.php). + +**Inno Setup** is a free script-driven installation system created in CodeGear Delphi by Jordan Russell. +In OCCT Inno Setup is used to create Installation Wizard on Windows. +It is licensed under Inno Setup License (http://www.jrsoftware.org/files/is/license.txt). + +**FreeImage** is an Open Source library supporting popular graphics image formats, such as PNG, BMP, JPEG, TIFF +and others used by multimedia applications. This library is developed by Hervé Drolon and Floris van den Berg. +FreeImage is easy to use, fast, multithreading safe, compatible with all 32-bit or 64-bit versions of Windows, +and cross-platform (works both with Linux and Mac OS X). FreeImage is licensed under the +GNU General Public License, version 2.0 (GPLv2) and +the FreeImage Public License (FIPL) (http://freeimage.sourceforge.net/freeimage-license.txt). + +Adobe Systems, Inc. provides **Adobe Acrobat Professional**, which is a software to view, create, manipulate, +print and manage files in Portable Document Format (PDF). +This product is used in OCCT for the development and update of User's Guides. + +The same developer provides **Robohelp HTML** that allows developing online Help for applications that are run on the Web and on Intranets. +**Robohelp HTML X5.0.2** is used in OCCT for the development and update of OCCT Overview. + +**Linux** is a registered trademark of Linus Torvalds. + +**Windows** is a registered trademark of Microsoft Corporation in the United States and other countries. + +**Mac** and the Mac logo are trademarks of Apple Inc., registered in the U.S. and other countries. + + +@section OCCT_OVW_SECTION_3 Introduction + + +This document is just an introduction to Open CASCADE Technology (OCCT) dealing with +compatibility and installation issues and providing a general description of OCCT modules +and other features. All modules and development tools are described in User's Guides, available in +Adobe Portable Document Format (PDF). To read this format, you need Adobe Acrobat Reader, +which is a freeware and can be downloaded from the Adobe site. +All user guides can be accessed directly from this help. + +Alongside with PDF User Guides, OCCT suggests its users full reference documentation on all +implementation classes automatically generated by Doxygen software. +This Doxygen generated documentation is supplied in the form of a separate package, +in a usual html file format. + +Reference documentation is presented in **Modules --> Toolkits --> Packages --> Classes** +logic structure with cross-references to all OCCT classes and complete in-browser search by all classes. + +**Recommendation for generation of reference documentation** + +Reference documentation can be generated by OCCT binary WOK package that +is available for downloading from www.opencascade.org and dev.opencascade.org sites. + +Prerequisites: + + * Doxygen version 1.7.4 or higher + * Graphviz version 2.28.0 or higher + +Run WOK (cd \/site folder): + +* Using WOK TCL shell: + > wok_tclsh.sh + +* Using Emacs editor: + > wok_emacs.sh + +In the WOK prompt, step into your workbench: + + >wokcd + +In your workbench, use **wgendoc** command with –h argument to get information about arguments of **wgendoc** command: + + >wgendoc -h + +then run **wgendoc** command with required arguments + +e.g., wgendoc –output=d:/occt/doc {–m=Draw Visualization} -chm + +@section OCCT_OVW_SECTION_5 Requirements + +@subsection OCCT_OVW_SECTION_5_1 Linux Intel + + + + + + + + + + + + + + + +
Operating System 64-bit: Mandriva 2010, CentOS 5. 5, CentOS 6.3, Fedora 17, Fedora 18, Ubuntu-1304, Debian 6.0 *
Minimum memory 512 Mb, 1 Gb recommended
Free disk space (complete installation) For full installation Open CASCADE Technology requires 600 Mb of disk space.
Minimum swap space 500 Mb
Video card **GeForce** The following versions of GeForce drivers are recommended: 64-bit Version: 100.14.19 or later http://www.nvidia.com/object/linux_display_amd64_100.14.19.html 32-bit Version: 100.14.19 or later http://www.nvidia.com/object/linux_display_ia32_100.14.19.html
Graphic library OpenGL 1.1+ (OpenGL 1.5+ is recommended)
C++ GNU gcc 4.0. - 4.7.3.
TCL (for testing tools) Tcltk 8.5 or 8.6 http://www.tcl.tk/software/tcltk/8.6.html
Qt (for demonstration tools) Qt 4.6.2 http://qt.nokia.com/downloads
Freetype (OCCT Text rendering) freetype-2.4.11 http://sourceforge.net/projects/freetype/files/
FreeImage (Support of common graphic formats) FreeImage 3.15.4 http://sourceforge.net/projects/freeimage/files/Source%20Distribution/
gl2ps (Export contents of OCCT viewer to vector graphic file) gl2ps-1.3.8 http://geuz.org/gl2ps/
TBB (optional tool for parallelized version of BRepMesh component) TBB 3.x or 4.x http://www.threadingbuildingblocks.org/
OpenCL (optional for providing ray tracing visualization core http://developer.amd.com/tools-and-sdks/heterogeneous-computing/amd-accelerated-parallel-processing-app-sdk/downloads/
+\* Debian 60 64 bit is a permanently tested platform. + +@subsection OCCT_OVW_SECTION_5_2 Windows Intel + + + + + + + + + + + + + + + + +
Operating System 32/64-bit: 8/ 7 SP1 / VISTA SP2 /XP SP3
Minimum memory 512 Mb, 1 Gb recommended
Free disk space (complete installation) For full installation Open CASCADE Technology requires 650 Mb of disk space but during the process of installation you will need 1,2 Gb of free disk space.
Minimum swap space 500 Mb
Video card **GeForce** Version 266.58 WHQL or later is recommended: http://www.nvidia.com/Download/index.aspx +
Graphic library OpenGL 1.1+ (OpenGL 1.5+ is recommended)
C++ Microsoft Visual Studio .NET 2005 SP1 with all security updates +Microsoft Visual Studio .NET 2008 SP1* +Microsoft Visual Studio .NET 2010 +Microsoft Visual Studio .NET 2012 +Microsoft Visual Studio .NET 2013 +
TCL (for testing tools) TActiveTcl 8.5 or 8.6 +http://www.activestate.com/activetcl/downloads
Qt (for demonstration tools) Qt 4.6.2 http://qt.digia.com/downloads
Freetype (OCCT Text rendering) freetype-2.4.11 http://sourceforge.net/projects/freetype/files/
FreeImage (Support of common graphic formats ) FreeImage 3.15.4 http://sourceforge.net/projects/freeimage/files/Source%20Distribution/
gl2ps (Export contents of OCCT viewer to vector graphic file) gl2ps-1.3.8 http://geuz.org/gl2ps/
TBB (optional tool for parallelized version of BRepMesh component) TBB 3.x or 4.x http://www.threadingbuildingblocks.org/
OpenCL (optional for providing ray tracing visualization core http://developer.amd.com/tools-and-sdks/heterogeneous-computing/amd-accelerated-parallel-processing-app-sdk/downloads/
+ +* The official release of OCCT for Windows contains libraries built with VC++ 2008. + + +@subsection OCCT_OVW_SECTION_5_3 MAC OS X + + + + + + + + + + + + + + + +
Operating System Mac OS X 10.6.8 Snow Leopard / 10.7 Lion
Minimum memory 512 Mb, 1 Gb recommended
Free disk space (complete installation) For full installation Open CASCADE Technology requires 600 Mb of disk space.
Minimum swap space 500 Mb
Video card **GeForce** Version 266.58 WHQL or later is recommended: http://www.nvidia.com/Download/index.aspx +
Graphic library OpenGL 1.1+ (OpenGL 1.5+ is recommended)
C++ XCode 3.2 or newer (4.x is recommended)
Qt (for demonstration tools) Qt 4.6.2 http://qt.digia.com/downloads
Freetype (OCCT Text rendering) freetype-2.4.11 http://sourceforge.net/projects/freetype/files/
FreeImage (Support of common graphic formats ) FreeImage 3.15.4 http://sourceforge.net/projects/freeimage/files/Source%20Distribution/
gl2ps (Export contents of OCCT viewer to vector graphic file) gl2ps-1.3.8 http://geuz.org/gl2ps/
TBB (optional tool for parallelized version of BRepMesh component) TBB 3.x or 4.x http://www.threadingbuildingblocks.org/
OpenCL (optional for providing ray tracing visualization core OpenCL 1.2.8 native
+ +@section OCCT_OVW_SECTION_4 Installation + +Open CASCADE Technology can be installed with binaries precompiled by +Visual C++ 2008 using Installation Procedure under Windows platform only + +The source package and the building tools are available for self-dependent +preparation binary files on Unix and Windows platforms. + +@subsection OCCT_OVW_SECTION_4_1 Windows + +**Recommendation:** + +If you have a previous version of OCCT installed on your station, +and you do not plan to use it along with the new version, you might want to uninstall +the previous version (using Control Panel, Add/Remove Programs) before +the installation of this new version, to avoid possible problems +(conflict of system variables, paths, etc). + +**Attention:** For full installation OCCT requires approximately 650 Mb of disk space, +but during the installation process you will need 1,2 Gb of free disk space. + +OCCT installation with reference documentation requires 1,4 Gb on disk. + + * Download the OCCT installer from OPEN CASCADE web site using the link. you have been provided + * Launch the installer and follow the instructions. + +### Third-party tools + + +The includes and binaries of third-party libraries necessary for building and launching +OCCT are included into binary distribution (built with Visual C++ 2008). +To recompile OCCT libraries with other Visual C++ versions, +it is necessary to install headers and libraries of these third-party products. + +The recommended way to do this is to download each of the third-party tools from its web site +and build it using the relevant tools. For additional convenience of the users, +OPEN CASCADE also provides the documents with recommendations on building +third-party products from source files. + + + +When the installation is complete, you will find the following directories +(some might be absent in case of custom installation): + +@image html /overview/images/overview_installation.png "The directory tree" +@image latex /overview/images/overview_installation.png "The directory tree" + + + + * **adm** This folder contains administration files, which allow rebuilding OCCT; + * **adm/cmake** This folder contains files of CMake building procedure; + * **adm/msvc** This folder contains Visual Studio projects for Visual C++ 2005, 2008 and 2010, which allow rebuilding OCCT under Windows platform in 32 and 64-bit mode; + * **data** This folder contains CAD files in different formats, which can be used to test the OCCT functionalities; + * **doc** This folder contains OCCT Overview documentation; + * **drv** This folder contains source files generated by WOK (private header files and instantiations of generic classes); + * **inc** This folder contains all OCCT header files; + * **samples** This folder contains sample applications. + * **src** This folder contains OCCT source files. They are organized in folders, one per development unit; + * **tests** This folder contains scripts for OCCT testing. + * **win32/vc9** This folder contains executable and library files built in optimize mode for Windows platform by Visual C++ 2008; + +3rd party products have been moved to the root of Open CASCADE installation. + +@image html /overview/images/overview_3rdparty.png "The third-party products" +@image latex /overview/images/overview_3rdparty.png "The third-party products" + + +@subsection OCCT_OVW_SECTION_4_2 System Environment Variables + +To run any Open CASCADE Technology application you need to set the environment variables. + +### On Windows + + +You can define the environment variables with env.bat script located in the +OpenCACADE/ros folder. This script accepts two arguments to be used: +the version of Visual Studio (vc8, vc9, or vc10) and the architecture (win32 or win64). + +The additional environment settings necessary for compiling OCCT libraries and samples +by Microsoft Visual Studio can be set using script custom.bat located in the same folder. +You might need to edit this script to correct the paths to third-party libraries +if they are installed on your system in a non-default location. + +Script msvc.bat can be used with the same arguments for immediate launch of Visual Studio for (re)compiling OCCT. + +### On Unix + + + If OCCT was built by Code::Blocks, you can define the environment variables with env_cbp.sh or custom_cbp.sh script. + + If OCCT was built by Automake, you can define the environment variables with env_amk.sh or custom_amk.sh script. + +The scripts are located in the OpenCACADE/ros folder of the source package. + + +### Description of system variables: + + + * **CASROOT** is used to define the root directory of Open CASCADE Technology; + * **PATH** is required to define the path to OCCT binaries and 3rdparty folder; + * **LD_LIBRARY_PATH** is required to define the path to OCCT libraries (on UNIX platforms only); + * **MMGT_OPT** if set to 1, the memory manager performs optimizations as described below; if set to 2, + Intel (R) TBB optimized memory manager is used; if 0 (default), every memory block is allocated + in C memory heap directly (via malloc() and free() functions). + In the latter case, all other options except MMGT_CLEAR and MMGT_REENTRANT are ignored; + * **MMGT_CLEAR** if set to 1 (default), every allocated memory block is cleared by zeros; + if set to 0, memory block is returned as it is; + * **MMGT_CELLSIZE** defines the maximal size of blocks allocated in large pools of memory. Default is 200; + * **MMGT_NBPAGES** defines the size of memory chunks allocated for small blocks in pages + (operating-system dependent). Default is 10000; + * **MMGT_THRESHOLD** defines the maximal size of blocks that are recycled internally + instead of being returned to the heap. Default is 40000; + * **MMGT_MMAP** when set to 1 (default), large memory blocks are allocated using + memory mapping functions of the operating system; if set to 0, + they will be allocated in the C heap by malloc(); + * **MMGT_REENTRANT** when set to 1 (default), all calls to the + optimized memory manager will be secured against possible simultaneous access from different execution threads. + +This variable should be set in any multithreaded application that uses +an optimized memory manager (MMGT_OPT=1) and has more than one thread +potentially calling OCCT functions. If set to 0, OCCT memory management and +exception handling routines will skip the code protecting from possible concurrency +in multi-threaded environment. This can yield some performance gain in some applications, +but can lead to unpredictable results if used in a multithreaded application; + +**Special note:** for applications that use OCCT memory manager from more than one thread, +on multiprocessor hardware, it is recommended to use options MMGT_OPT=2 and MMGT_REENTRANT=1. + + * **CSF_LANGUAGE** is required to define the default language of messages; + * **CSF_EXCEPTION_PROMPT** – if defined and set to 1 then a diagnostic message is displayed in case of an exception; + * **CSF_MDTVFontDirectory** accesses the fonts that can be used in OCCT; + * **CSF_MDTVTexturesDirectory** defines the directory for available textures when using texture mapping; + * **CSF_UnitsDefinition** and **CSF_UnitsLexicon** are required by programs considering units; + * **CSF_SHMessage** is required in order to define the path to the messages file for *ShapeHealing*; + * **CSF_XSMessage** is required in order to define the path to the messages file for **STEP** and **IGES** translators; + * **CSF_StandardDefaults** and **CSF_PluginDefaults** are required in order to maintain CASCADE Persistence mechanism to make possible any open/save operations with OCAF documents; + * **CSF_StandardLiteDefaults** is required in order to maintain *OCCT Persistence mechanism* to make possible any open/save operations with Lite OCAF documents; + * **CSF_XCAFDefaults** any open/save operations for **XDE** documents; + * **CSF_GraphicShr** is required to define the path to the *TKOpenGl* library; + * **CSF_IGESDefaults** and **CSF_STEPDefaults** are required for **IGES** and **STEP** translators correspondingly in order to define the path to the resource files; + * **CSF_XmlOcafResource** is required in order to set the path to **XSD** resources, which defines XML grammar. + +As part of XML persistence support, these definitions can be used by end users +in XML validators or editors, together with persistent XmlOcaf documents; + +* **CSF_MIGRATION_TYPES** is required in order to read documents that contain old data types, such as *TDataStd_Shape*; +* **TCLLIBPATH**, **TCL_LIBRARY**, **TK_LIBRARY** and **TIX_LIBRARY** are required to allow work with **DRAW** and **WOK**. + +@section OCCT_OVW_SECTION_6 Release Notes + + +Open CASCADE Technology latest version +@htmlonly +Release Notes +@endhtmlonly (PDF) + + +@section OCCT_OVW_SECTION_7 Getting Started + + +@subsection OCCT_OVW_SECTION_7_1 Draw Test Harness + +Draw is a command interpreter based on TCL and a graphical system used for testing and demonstrating OCCT modeling libraries. + +Draw can be used interactively to create, display and modify objects such as curves, surfaces and topological shapes. + +@image html /overview/images/overview_draw.png +@image latex /overview/images/overview_draw.png + +Scripts can be written to customize Draw and perform tests. +New types of objects and new commands can be added using C++ programming language. + +Draw contains: + + * A command interpreter based on TCL command language. + * A 2D an 3D graphic viewer with support of operations such as zoom, pan, rotation and full-screen views. + * An optional set of geometric commands to create and modify curves and surfaces and to use OCCT geometry algorithms. + * A set of topological commands to create and modify BRep shapes and to use OCCT topology algorithms. + * A set of graphic commands for view and display operations including Mesh Visualization Service. + * A set of Application framework commands for handling of files and attributes. + * A set of Data Exchange commands for translation of files from various formats (IGES,STEP) into OCCT shapes. + * A set of Shape Healing commands: check of overlapping edges, approximation of a shape to BSpline, etc. + +You can add new custom test harness commands to Draw in order to test +or demonstrate a new functionality, which you are developing. + +Currently DRAW Test Harness is a single executable called DRAWEXE. + +Commands grouped in toolkits can be loaded at run-time thereby implementing dynamically loaded plug-ins. +Thus you can work only with the commands that suit your needs adding +the commands dynamically without leaving the Test Harness session. + +Declaration of available plug-ins is done through special resource file(s). +The pload command loads the plug-in in accordance with +the specified resource file and activates the commands implemented in the plug-in. + +The whole process of using the plug-in mechanism as well as the instructions for extending Test Harness is described in the +@htmlonly +User's Guide/ +@endhtmlonly + +Draw Test Harness provides an environment for OCCT automated testing system. Please, consult its +@htmlonly +User's Guide / +@endhtmlonly +for details. + +Remarks: + +* The DRAWEXE executable is delivered with the installation procedure on Windows platform only. +* To start it, launch DRAWEXE executable from Open CASCADE Technology//Draw Test Harness item of the Start\\Programs menu. + +@subsection OCCT_OVW_SECTION_7_2 Experimenting with Draw Test Harness + + Running Draw +------------ + +**On Linux:** + +1. If OCCT was built by Code::Blocks * use $CASROOT/draw_cbp.sh file to launch DRAWEXE executable; +2. If OCCT was built by Automake * use $CASROOT/draw_amk.sh file to launch DRAWEXE executable; + +Draw[1]> prompt appears in the command window + +Type pload ALL + +**On Windows:** + +Launch Draw executable from Open CASCADE Technology\\Test Harness\\Draw Test Harness +item of the Start\\Programs menu or Use $CASROOT\\draw.bat file to launch DRAWEXE executable. + +Draw[1]> prompt appears in the command window + +Type pload ALL + +**Creating your first geometric objects** + +1. In the command window, type axo to create an axonometric view +2. Type box b -10 -10 -10 20 20 20 to create a cube b of size 20, + parallel to the X Y Z axis and centered on the origin. + The cube will be displayed in the axonometric view in wireframe mode +3. Type fit to fill the viewer with the cube +4. Type pcylinder c 2 30 to create a cylinder c of radius 2 and height 30. + The cylinder will be displayed in addition to the cube + +**Manipulating the view** + +1. Type clear to erase the view +2. Type donly c to display the cylinder only +3. Type donly b to display the cube only +4. Type hlr hlr b to display the cube in the hidden line removal mode + +**Running demonstration files** + +1. Type cd ..//.. to return to the root directory +2. Type cd src//DrawResources to reach the DrawResources directory +3. Type source "Available Demo File" to run the demonstration provided with Open CASCADE +4. The following demonstration files are available: + * DataExchangeDemo.tcl + * ModelingDemo.tcl + * OCAFDemo.tcl + * VisualizationDemo.tcl + +**Getting Help** + +1. Type help to see all available commands +2. Type help command-name to find out the arguments for a given command + +@subsection OCCT_OVW_SECTION_7_3 Programming Samples + +@subsubsection OCCT_OVW_SECTION_7_3_1 MFC + +Visual C++ programming samples containing 10 Visual C++ projects +illustrating how to use a particular module or functionality. + +The list of MFC samples: + + * Geometry + * Modeling + * Viewer2d + * Viewer3d + * ImportExport + * Ocaf + * Triangulation + * HLR + * Animation + * Convert + +@image html /overview/images/overview_mvc.png +@image latex /overview/images/overview_mvc.png + +**Remarks:** + + * MFC samples are available only on Windows platform; + * To start a sample use Open CASCADE Technology\\Samples\\Mfc\\ item of the Start\\Programs menu; + * Read carefully readme.txt to learn about launching and compilation options. + +@subsubsection OCCT_OVW_SECTION_7_3_2 Qt + +OCCT contains three samples based on Qt application framework + + Import Export +------------- + + Import Export programming sample contains 3D Viewer and Import // Export functionality. + +@image html /overview/images/overview_qt.png +@image latex /overview/images/overview_qt.png + + Tutorial +--------- + +The Qt programming tutorial teaches how to use Open CASCADE Technology services to model a 3D object. +The purpose of the tutorial is not to explain all OCCT classes but +to help start thinking in terms of the Open CASCADE Technology. + +This tutorial assumes that the user has experience in using and setting up C++. +From the viewpoint of programming, Open CASCADE Technology is designed +to enhance user's C++ tools with high performance modeling classes, methods and functions. +The combination of these resources allows creating substantial applications. + +**See also:** @subpage overview__tutorial "3D Object Tutorial" + + Voxel +------ + +This is a demonstration application showing OCCT voxel models. +It also includes a set of non-regression tests and other commands +for testing this functionality (accessible only through TEST pre-processor definition). + +**See also:** + @htmlonly +Voxels User's guide (PDF) +@endhtmlonly + +**Remarks:** + + * Qt samples are available on all supported platforms; + * To start a sample on Windows use Open CASCADE Technology\\Samples\\Qt\\ item of the Start\\Programs menu. + +@subsubsection OCCT_OVW_SECTION_7_3_3 C# + +C# sample containing 3D Viewer and Import // Export functionality. + +@image html /overview/images/overview_c__ie.png +@image latex /overview/images/overview_c__ie.png + +Import: + + * BRep + * Iges + * Step + +Export: + + * Brep + * Iges + * Step + * Stl + * Vrml + +**Remarks:** + + * C# sample is available only on Windows platform; + * It is delivered in source code only and must be built with Microsoft Visual C++ 2005. + + + + diff --git a/dox/overview/images/overview_c__ie.png b/dox/overview/images/overview_c__ie.png new file mode 100644 index 0000000000000000000000000000000000000000..3cfc12e82c819be6008e1d3ac833232052c84f35 GIT binary patch literal 38265 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 $+ZBHq=kU6g?!ayuI-sgW!TrqOvIyMqk( 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 VPHuUgz`s3YdfLX&iW_$${tcymx%L16 literal 0 HcmV?d00001 diff --git a/dox/overview/images/overview_mvc.png b/dox/overview/images/overview_mvc.png new file mode 100644 index 0000000000000000000000000000000000000000..f4104834e658ae2f72febe69cc1cd4676ea0ea47 GIT binary patch literal 32022 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⁡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 UDF{oEp8x;=07*qoM6N<$g0553*Z=?k literal 0 HcmV?d00001 diff --git a/dox/overview/tutorial/images/tutorial_image001.png b/dox/overview/tutorial/images/tutorial_image001.png new file mode 100644 index 0000000000000000000000000000000000000000..5fd0189eac770ab0a224441b28575fb47770aea3 GIT binary patch literal 3971 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 literal 0 HcmV?d00001 diff --git a/dox/overview/tutorial/images/tutorial_image004.png b/dox/overview/tutorial/images/tutorial_image004.png new file mode 100644 index 0000000000000000000000000000000000000000..b10ce22b3c99794ef8ddd34fc2deaba30ac183c1 GIT binary patch literal 1948 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 W?tIblGgf#~pzt_1`&wJVZ~p=1w8jJg literal 0 HcmV?d00001 diff --git a/dox/overview/tutorial/images/tutorial_image008.png b/dox/overview/tutorial/images/tutorial_image008.png new file mode 100644 index 0000000000000000000000000000000000000000..85efc0e311b5fd03a2f92820f41412430f18a8f7 GIT binary patch literal 3702 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 S9mDg_2avY9zFL(kCj396_+cOb literal 0 HcmV?d00001 diff --git a/dox/overview/tutorial/images/tutorial_image010.png b/dox/overview/tutorial/images/tutorial_image010.png new file mode 100644 index 0000000000000000000000000000000000000000..899e224749fdeb451c71fb2591190ffd687d622a GIT binary patch literal 4364 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 P2Lqs~rmI?|VjcN^lzrqU literal 0 HcmV?d00001 diff --git a/dox/overview/tutorial/images/tutorial_image011.png b/dox/overview/tutorial/images/tutorial_image011.png new file mode 100644 index 0000000000000000000000000000000000000000..741a6714ac96f3f57bef6ca8c28435d4a53604f8 GIT binary patch literal 2794 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 literal 0 HcmV?d00001 diff --git a/dox/overview/tutorial/images/tutorial_image012.png b/dox/overview/tutorial/images/tutorial_image012.png new file mode 100644 index 0000000000000000000000000000000000000000..4d68528a0d1e8358c4f9f1febba4f33d098374fc GIT binary patch literal 3221 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 literal 0 HcmV?d00001 diff --git a/dox/overview/tutorial/images/tutorial_image013.png b/dox/overview/tutorial/images/tutorial_image013.png new file mode 100644 index 0000000000000000000000000000000000000000..af84d793dee3e62a20a295c936189e188037a4dc GIT binary patch literal 2633 zcmeHJ`&*KC6n}YpQ`Ahah^7$QJS|K0uo(0IYd6t@_Wt=OT5 zQUGA7^xuc-V%0JbogysI|I754sn-+Vlm`QWZ#2`j02f# zBu>nvKQi!aGD_6)6rP&;y7ea*Hg-i8HAp|lV|Hf~uTR)7<$EBO%|#i4xD@+e80Y>D z2D!TLwcEFV2~Z4|exk#xOz>d2r=}R1Bo^H~aT0nKBry-u&iG)VBDYu`$L(kefxQuN zQNN?Y77TGv2?%4?u>2Hzl^{hwmWc6WW z_LB+S>{sineJdwJLyw6{C59X^d{?09S*UlsK> zY1UVjk+zDDKN8(>OPX+VOrF_Fp~FsCV}2Z^o^AlILfE z63O5DTSF_++92vK(%Osu*+kN}7eT%S$o;+dQX!gwQ3(oH-}I~I1N6;5yAePa2wr=` z@-s{#UgBiy`N_qnT72q@Pc!oWzDQoHH5l5+n&B$!t+#?LiH^#5pRqh1uR+&2!X*h$ zoKEjLG^g`?-4crljegv1Gz#~hbhv`k%}qG%Kyz*R{XFxaHju?)%@-LCO1ndd=GHf@ zaC{<9cLXwxe~{Se zWhVFDF8VDBK~Gz~jw@0`7@<&&exmQuj zTCx(eQW@S)Pv1%EET*0!3tgMV1Etd;%u_DD8@p1%(>PSaLAP0-tNXiWuF-cGv>$F? zEzRZXtW6wI`oVk@noNz&pthMs(honp6I(Wh!sN&)5Bd8w{vAM zyGM$`{*_CO@Qdv_=S6xUztT}_-b0@}_neF#a=YKZ#l)`6T{P#JN1Pi?`T}|uuIlRG hanz&=ENJNnJ59;fD}2hGmm=pM5Ec{>SRW9Z^A90+c=`YU literal 0 HcmV?d00001 diff --git a/dox/overview/tutorial/images/tutorial_image014.png b/dox/overview/tutorial/images/tutorial_image014.png new file mode 100644 index 0000000000000000000000000000000000000000..f9635174f96b9c5be3e327baa97e4c4c68400635 GIT binary patch literal 3333 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 literal 0 HcmV?d00001 diff --git a/dox/overview/tutorial/images/tutorial_image016.png b/dox/overview/tutorial/images/tutorial_image016.png new file mode 100644 index 0000000000000000000000000000000000000000..8ea559a9a6acd5a12ba511e2cd2c63bcd1845053 GIT binary patch literal 4158 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 IM6N<$f-E=WG5`Po literal 0 HcmV?d00001 diff --git a/dox/overview/tutorial/images/tutorial_image017.png b/dox/overview/tutorial/images/tutorial_image017.png new file mode 100644 index 0000000000000000000000000000000000000000..5beaf94edaac8d8e580b7d595bef1f37f36d61ed GIT binary patch literal 5864 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 E1GRnTr2qf` literal 0 HcmV?d00001 diff --git a/dox/overview/tutorial/images/tutorial_image018.png b/dox/overview/tutorial/images/tutorial_image018.png new file mode 100644 index 0000000000000000000000000000000000000000..0ac10c975ac25cbe91521d5ed6513d25cc49c049 GIT binary patch literal 2876 zcmV-C3&Zq@P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D3eibKK~#8N?VZ_n z94ib(b%j?PA+diwhQ{{9nxp+G30s=!~>*P$}2=?8$dI$QWL@I!Ll7 zJKN9Nof~E+SI(uG_YnF*^ZYF+GhE+4XPy15bOTooRiL<20Ev?{b0c>WHYF+57(dop z$CaNocN2!1?_9TW4SInT+s$Uq)%F#RwzTU1pMwn-v(B4z25;DRsNpXAS#h;%J*5er z^XmRQDk?L07CgnajC_5r7B3(f!gEGdEPL)Gu2QpXyVvAu8By`Zi*qsS?t{z9NY>5T zt2$g+M_E;*^=UZW$Ij#5_1+~r-_CMn7}@9HI9PJdhGKY&F|+WnoGbNc7OSb~gP6)x zfi>?Rc-=*D?-p{U7{s!pq-pMB@-+&WGNxE6*j%aH+fLzP) zHj1$+eO%``dj(R<)n#Q0b>a243k50~QHK-J`Z!;~T%os|+%W7eAGzmxZ002ez`IpF zxNuQUNiW&oT*1}p2&jUed64Kc+^zP=@aRG5qYs2<@d;I%*IRc`y4O97ye2O*X#LhJ zfE*`KU6U;j)?XY$mAiwszpnYw#}L1LAW9B8z$i~;J`PHTks8-bd)5|-Qq*Vf^_(5W z1|6W7@?c3(%u}Xvo^GkhpwX#U z`G`fizDrmB&t1lCGrB91n>f*0%gXGi14e|R&(#cCN&Rm5(n<^rGq;H~iYlh1D^QVU zu?eaek_c7x@UQ;7aGHfa*RqFx3(`RMM2u8dz^JEqr*C?Q#eL?x6Q&3Ib`F@K$mmrR=;`9w8iqaa(9(NZ-#^|o5L)9LFhTj{LPb~B} z&}?8ZfQn&YS93kzjz_*f(1Nb=AxHXm^mrH8eajLi8SC=HDpRGIOB>_g z&tBe}%P~>wX#a>p#V|kt`f;P0B)eK>@5Et6BhFPzq<8^DTLflAp<>wNdA__{P^L!3 z>gTwH{_a6KlcgG0KlJ$jt*EArTwr!6Ka)+`{Hlrdhd6A+aQAg7oU4}OwqDId#+9$a zEMIQQHaE!Y$B(j5F8t%Xv1AM8maj?Qmi4Bx-_-AkRDkW>pMp0#BkNWW<0umI8T;V zjY;%? zbaQklLe=hXvDH=-N%}zeC}j~ei$lR#nQJ%?_Tt8z3k!Ooht;t%P8qD;?~OXO_C|2w zf_|q5=msfkUO7g^Rp=xOR@Azm7}b^7j088uDfMM#CtQ{s$^(d>8R*~32^6#ihMT+v z(VdfbvAFzEz`z1p8Qbh%(~)!x;@Mlok7&^JVu+7K z)K?x8K1YECr74TqC8{k``F|*A@#*uE1K`N_L)$aj? zizwizzJ0vRRrP`5Zg6z^O8?K=5{S!-VSW^F0#f;m0l;a}kU-z~K7f_q8w1q1$rO6i zeR4Suzr4!kq)ipY95qV14HQs&Ag*+KLb#6kNr_^1FPq9OMOAfD@ApP|WOJ2>D&G>n zpnr=}=7+-;A-5YJ{7_N1KvfBna8(s6)+0z2fB4@WRhGGTk}f}P5h}HUficA?g#kZ+ z==Xuu0=S>$GV;o~CNL6&IPFNcBlzjEG>UuyPG!#tG;ugrEt>0V7i^$wd_&}w4eisH=++ii&Z9{{k@#t=<13BAlHs};y+f*$JHE)cPS@r_*g}`%gh** zt9Oe>{C@T-k?XgL89Bst&+evf@m{&))Dz`DxW7unHg19_RAqSh_p_IsWxKGO09$OS z$KH<1(q5cO|5Hv@X*`3g-wQrJqFhnuM1sd!*5|@04PNQ4?WL)ekyWfDTvh7_zK>yJ z$@XclheXACrG$>$M)hE*Qa4+_qnC2N0+s~yfk#NTFZXp$>> zA4u$~?{M42s}O9Lf=iqTD1%Dg2U02+aMn6kXeaqz5XR`aKc&6DBfny(Ot>mjPJCJ@ z=p_~y>p8dRB1GY*?du#qa**Y51}bx|+Afi(`^;u3)A9PNfY+Vr2&FT6^~bvW2%RUP zTE|tTrZ_iR<~Sm|tRMkph%Rd8oE=g{Dxj1)|0h+iO?Ki7T34S9Awu zLkoK^X@&Ze{krfPli6jOW!5!|9o+>@9xJ>k^{`xMnaVvdB`;378cATs8_T0^2M0W| z)SyripTOn2AI24zw{|>bvytV-=qgr$J#KYIqOqn`hsx3UiY3I%V3tj1ZlrZ>prWN@ zcODojZkf8RUYSZClV7O-`UCGwfie=`LtxN@8B2<#pO;(T>aE@LHr a6!-@{(ie}3Sy0>n00009SRh8cPLPx6n7`M6qn-e9y~w-+_b;v zz3+c;Kiv;!oRM%w#%Axi=9+7+bt04%r7&N=ef{Fa3rrblan%GsR z(jN-j+_!n)@pjk50kgzW-zq(ZjCROb$9`vqi%8R02IpW}P7Y??1d0&BO9@e2WkmSx zy9;f6ZfYf%rM@CnfuOcKNa&f$x6|dSu5Oe(0{Qd2+0W;S zos2vf!h*0O!ShgCR5Gq7VE4MoQTkWCcT(qE&Yfg#`ZEkn#|ni1tu7FUMp<0#?(qbW zSHUpMxZS*s)y0?x8v>yz&FyGx{3?s>##f5o5_%$Umf|podbLfA*)HTb&Wi_Y3Ei-{ zHr|$TvPH9Hw!K=IMo?ITY=qMy(*nR)GdmWds9%ujDi8tfj)`73&%j5AK}r#fX&6}U zUAG({$2jxZ`1{0H;a3kB2b?(e6JICoUUokFbNfGe**96o1-p1m6y|1H8H%q$=WNvS0i@^ zg@es)DC=9dr2@2t{OVjt>4niL= zgx%?X@O0!}3wVBi#qaOyAovWk(r)3Pa#jY1UIEw>0Kjm!4M z!xNXeZrJGc)_5=Q)3$b!z?@Z=O_-#SjsqmUPJ0=>HKxPdJA0|lgHH6^ zc6e3>*#8HMR2(?c^77yQSZCGXKvP+DF}l-|Pev0`Qc`wiI5%#*6_WCHJ2ItM=blt^ zIbVRQno*Pdqq^Vf4XyLk=`=cj88Io4PZ9%OUA;S~;R(w1IqQ0?h!?23*QYrzD178b zqP~tHt;#RnsQGnV;Uh6Hef0i6q|p$*q`uX4=t$|g?%31t#}@wflXU5Y^cy`{+1C_4 zC+u*WTfTf#C&~yHRKc&LO#lM2s>?wuQ>K%HiJ8%=WzkBSHr`@dzs`%5IWihhlT2w zK4&c@R+n|{T51xM1PqM8>n&-9_6l8j++UFcJgC`(4qK7={t)r!5BT4)1~z`~ zihTW3EN-r1}ZC-eD~O%BQcXEG?@lj%~?*x(5G8hMRF;9ZNjh(9`BLR}^?}{%9GPG2Lf` zh7}eTD%5#u@;)R;Q5fCb4-YU`HTuvcwDp$(jrWT*(36s0K+ys1IK)r)jBKM5gCXt1 zAwu381yO9qg3v7%Gy`O3=xNh-ah82g73k^rs34peXG=dmKqK1rsKEhOV?6Q4I~IJ9 z<0??)6|D8_q8D2v-KN}s$Nv&&2T61(zaoVmXwPdyFmsh$&gK{VZv_9_|8q%E)J~iE zO6__}TzF7vR#bdxcunbh9=N$k_)gPsER!qxqYwUmjz_K)9AIq1&oGzX2ET`Ec8GSH zJ8PreviTWp)$9PL%&Jr2;JN=tH~0U} zgH=M*bJD(Pe(C+D##3%ahK$m^)zHw8p=yh^FJ#pt)Z<%oh|g|EUceJcZy5GqC-lq) zxa+YgvB`S;v!Ps}M;J=g84%DHM;dn50pZ@4eJgkzujv19$f)N$Om9x51@xl#hMdK; zfjdc?R^68sr`vyCNK~93mgHp``nEhR*;H}0;qa}$zN6%I{Eh~zV!bnXAi8PRbHJ@w zQF7-gkXZ;b>AV;q9m6`PY&+{A)Y3C@=Xb6GJ)SyffJea76L17|s0FyqH3=Q75%r}1S>?7{2let+zSCS|0> zS)`?EMULU!ExL-!5cra1erQ1a!Rxr9Df+SZNXlK53)==*yBU8!OeX#acpT0)4R)HA zVa)J}dZ6W_T2?(j%!4xLH+*K_b)$cJ?S)nvq4Jz&;NP8~zO38!D#0~`cbDv5CtTh3MHq$m zPZH(odIvYU`PZM&WqvbcyjJV2)GF>GOF()6Qp6U?Ge$_t zlbIL|DZWj#>d6|vqR@@{-mnPn@mxjOkrWwjIi`HIc~53q`)^qAKHc7n3;K8;^r`t& zXj26xMhEDBB1v=~jzsxyUxwKMFvhB$!h+1S-bhRQEh5aDnn4O1MC~RYsUE(I zD>MpRge7U+cNA}YA!J}Q74kUK)APOPFBX&WgTNuRnfDAUIaJ5EGlmhP-3?L(e7t?> zG%s@A^-72PHk>8SliHBP^25CjmbG)vkJY4U4<*5iZ`7t`2(c?8uW^5}s*Aca20TO8 zV-$M$wWL>%3?Ay%(#YeZX%~8d+=Q3@jw0Q0;n_B0avupfP-I>*xg<%%ADf*ZJR~Uz zTm6EjhrjxN6=EPV4o=XTA7nKKS^G{C)>Zcmpp$Sr)h z_Fs_bi8=YrA-*3(7}*?8jL*7M9}=%Pu9zRVT~GHfXaBN4=ME0tA|RcK%l%Jm;^?5F z4!-6?@o7P!rGn80{Xi|@QdoJ~;j$N7qH+A~_g?9K!)J)Ez)oZ@-6VQlw?UkTs9T5S zb|W2}xkIcYS6HX;!Z-jxZsftxiain$Csp0yD5&tOq zE!Xd#bmC%EM@TgxJdE`AHtSUldyBYWT5VRnW}Mzo%(A`aDcr$dCaV8iilrbz&$3YZ zcSVjZ62gwYSa9ocWwCrtpVvqlXjfwWZkhX0p4y$7G=hhC{{=M}+FY6`#~AhfT&KZ| z#VlVX&glMVMlid{08_U|Ed7iM%U>-qX^GhPvPw3HIEa$n81Z;&oCmL=T^9H-RVdX& z@=`nZ?2_MkM|!&^03O*{^KfpnEAgk_o7k55f&ckJanp|DxOlBKouk2eS;_-I1gRB}CS-@auc+p@*U98XK`cp0S+4;7xq0jBKjspIOPmsP zZP76&$Rp6kbJn~qQ#?R!2;7CFu1q+)T8@&v%`{=4Q zPYpGI?TaKiUX49VQ~^6O8=`*yKI)ejLE#`>b@4o6PS?8EUvn6zt~tT$1zaV-1F*B# zKCRrFx%fVy@=@BXsDrn0R=soJf=eI;H25bfVP*JK(NGTKV?apfQtUwV@|fOBvGjAp zkDRouMz!DXqf5!$pdj}1i@~WVw^t935Kz3!^}n)86c;rB@vX$Uaa>w^b7G|CC1~VW zLrdRGy0h`M^TmZ#^KNQzI{&R1-UYtrMqrwife2~=x8-kY(r`IIM@Cj8A)V-R$|VbE z1bSol!TMOrc)`GHmr(7clI+j$Kn06#xknPx|SePCK9gUE;v7dAD-4+W#k#ui_3 z@3_sE+>rxFc1~mOw=u^*sH2h)LoH_Cv(e21e^^Vi80`8y5WD=T;`dukvWJ}@^be=Y z4!HZVJs!_#kw^w(k_HS!NB5T_jwtk6mcPFowEUNBbI=1Naogof&6PXUgOhyE8xqRr zNyShqci)S@!kahd9}CnuPUYeAX#4qLdZsWV5_`dn*ziF4xeUezo|i|S#JMi01-3Yw zY4nqmwB5a(HIE`n>W(HEaXRmg$11o6RWUma{LGlz?<*b225aD zZ`HmW^GY~VdT%snr}@0xbKIt~3qB?@zQH2Lc;xz8QCPF>&cV4sxe`v#K6X|D4v4Pp z!Mj#$!StyZ=^}Rs2+3&Q94EOW{jBg@`9BRgNrG$nv3ou{`$tbw_DSMH!`|kNJ!6JQ z#EcRsvt=dB5azjYSYp7Pah~bjyvpq&#MxJ?+3~F5p9aZtnWeL!o>&sRHM=rwlKZ`k zIJY45=i|N3T3JhtwAsK?8+3XK4BU7cx!qa^_dWUuBQIB!TWU4e%@qXU1uPD&tysSA zUHGBqxDZ#$YpcjIK<3Rbrv)4mX7R}UVlr@A#7v)r2b-iWbQ&wX0se>3aGQS1+W zL8hB(oQUV^LP63Y`8SUSDn^Lbp#jZxNn1vsDJg`!4+mlyGs1D)E(xuGKI*WO)svOe zg4DEnuqOKNmi6NAZL5j{`1bv1jO{j=u=n6o*W`@~`bhD^)s`)FMpkcOj~aA5W8w`#T7U8l0% zWk~oHf7lNod3X_aHK7HCAbywW)zZ`#a?oFa6Uxt+gEn&{NyeDL+(Vy@g_CVZ^(GJ% z%Ti$8A)rRYfx!p&|75rx%0Nl{cGFCJ><3bZ_NkAhMt>#AiF)pMkUZIZZordT{DgMd z?E-_q!m!`BK5TwV5!jP}-QY)xB+%$zVDqHxgwWAP#HybqSUc7pzTq&H&LM$XN8wi8 z2*svUzN~M(dc*OWcb`9#(K6N3L}bUV%D$&sMw+S)nP1C6N~K>KcIZi>#!xv3Cq0v= za*L_e3kC(`KMja6Wi7$hq`{(HHFi(%D$JWZ^#?sP5d7ulu+8%inJe6B85_V{CNj><& zMH^MD&n1h_&3hUJS=r+GC+u`VuUe;Td{vR1c(H?PcPetoFB_z{E+S6laNV*#*OoWBzkIwIBHEyL-JNlAMB|y^ zZwEZa+$~d*moISnVpeer8NjK%CM73V8;dfK2A;sU;s(|o!caQn+f!ys8tHHEx1_t& z$x&ZQwM2Y6m9?k#a^}VWBz5>b<&E+lPk+4g<<5O8QNsVMNB7WWo+P}ZC_t%cOmQz~ zw|(oRwP8d^tyA(b)<~e^sIXLqy$#8JfaN|{zaFLDiK#nm9_5S0|5QuJSBZ0h(gO(= z;)%_s_~tjy^&%~9}&1F2osZ`+7;Z+*qz1s&|%NMPs(5XcGw^U zpFQ}aqUXBUtOLmMn7mNyGgo3$Dl#mn$maF- zf516-GwQ2Gzz-kD*}-(tNUXJUnPx>#C?;uo@}6=bGEoo#f~CFP?Rm(Dc5|X%n0hw( zbIG%P{U4J)a?j-Zet_4qk_O?DC@J-G$=AaFLZSZ6%X=){Zaqdo$919%BS7(TKi8)c zM9~hT3CpIt-;&U0+cep-%N^@`&zka6SJ1oTQy(qW&eNnAHrJ8PdnTr??f2ERnWY2q zje-#4OzV-$AzaYc*MEJPdJ=?7a)zMRSxv9!M+j!OQZ}y>N_W(Dwnmoz>k( zhPkB^J8s#I8X9F3gxZVb^C62ozd2rxIkzG6k4X|Z?(2RYqj@4A#jvT3>;)3|~nj`ycn5A|rlyfy8dq^NoKQ?qWp1>&mzL zlf|P=b-wX#+5a~9BT*o7OswjS?d12in&+optGo$r!cC(0+J=dnwrdy+P9%0uZ2QBT z&P5k1HLyoHSqV837ERl6LTta%o!jj=5lxq!q~BJF2NK-)s?n0;DbV>eWUYsUnv)I) z@0?3so7!H}5`%$GMrd+!#>u-*pzSw;Eo)oZBhsjtzGK6amXAJqEF9kB67F#h?!Qni z+>YFCO+z|#RSr*e-1O~U$x@Fi)f7WHWb@I9*}m^;-6K+JdWj*Ka-V)6a(Pkkqhv>ST)bcTv#5|ydGJMGjD_U;cOz95BRl^=erw01p z?|Pn1NwND+(-G|NWzP1yWN3jHh6QqDK7xHC0U+4)om04iG`F{tQ{qRaPHRr>WtyRZ zjoJ}5&Lg*BOHa6iGyf%#H}@*VRA?UP!)o7oZ=QsGSHcEn%Dv&`-&og*qxRgenM9&rhrAlH9oW_fkodj~bKN zip1t)OGyTMShD8XC+>YnOWF!F}i2Uh6lUl0QS=O^ptF1R2J1S~l zDt-NIb9_ z2Gpfb|G9XCgg+j=6A!pRB6FR6Teoa4(7%g5OvIk|SRZE46;YLHc zP*hT0Uih>xb55H}L;Ky`$CWPi_S)gQkT2h~J0s&lcdnkJcM*blL~5<%WFHWCR25bin?4X7S3)XET&Lr^ta@_ZiG+r=YBMs&I@;l^yxluGuxn~ODtBTy zc0Tg=a5_h71D+4Kv2~gCN6tkYC6ATrBhR1Eo@nhcp5#aa_==v|eo{Bb7;J$wXqi+- zu*tmz=og(aD21a*Q*hPe;w(g}9L1`?FSUFgDqHu(ms0+$@AaqRfajv>z~ko6PuM2P zV#CSx3)JCJDwP2aLhznl$iW}5yzgbd;7P+X@16BG-QkY?jyoDXx`lk=?3jrODEZa1 zKZ&yo_xJThi(Xy1Vv#mF1iaefFMOGA`0uUpFMrXGd>5ZST4bS zxH)c8BNC#9{VCJh4iCnb96#SYP#SJ@Snm#xd&Uix>I{1Mct#xx((IK8=cV7pwl-Mt zgyrsEFeKc?tYth)+2%6ly$W;OOlt@ptru5WUrPP!VMkBF3u>yhNQ6Ve#h^UhU$ zVP&8#i)n?aU&scw;JN7bOYcE)k95!R%!z2rz}r<1gB_I_=WZn8jjbrafE1JZiWy?ldGZH z!6=5XYhxD4nRIV=ztkfh6F5L~K^jH-^iG zO|lA@r=kxEH2>MC%{8RsB*|#2tAb^(f%f$Sd=7wyaR_U#~_7}w__o$)ad}N zc84`XV$yB!gs#2wGzum6uRp6|VaC{@UKLdS+u$~GlV|7$L0YLEu|IBhVQFu$^E3U& zg|N3K0))bR?S+Z1ylV?jnt!q3K8H*dG8U}Vp}Wfny>!>2No>xS-6P>R%QPW|nO$vc z*l` zW)iUN;5esa;Zz}cLf4HRfnI}d6@~Ws*V{<$eD3A8_~zXeW>Wd#Y)d;{+AaLbBz1U2 z87}c%1rcD-qodQoj0smpicUd^>LrAP+=+St{xxS*WYoec!Eg(&Y3Y9EFquA4UBO7h zw$vCbe9?!`?tW6K4u1a4o$)A7b!af;qfqIrjnCS%H#Vs1ygbi)g-PLyPT%=HF(i#; zIZS?vD2f-BxPw@(>mi`gA7=DB8TXCIle6#Rjb-jKp;`&sCIh`gNeJNf$Hs|WUA5-| zPjlhAGAtoCmU&BF6J>Z=hn_a7AygwdKwg!tvN3s+%Zxhn>0eWGWEqAP) zZy=MM?@zH~+Zt<1YS$f@NJjV|*ava*-tOHXpa_1ABC|g&-^F7gF-DUuUnFU|%Ow4& zT{h(G+0p*+Et#CfQ1C&~(~*+Mrf8y5^=o}@&BevMcy*U%dkE)YPsK_(Yu68%3Ebz4 z6^uv^D3=~04yc%&)UGFTzDhEtXBm% z?Sd8sooVw+EVPm*JYN;{;66YPT$!P*DV<$i+%E5LKO8%l-OteeJfl!_JND#u`j%zU zKEt|PfzuAtC(9D=XE9RPB4aQ(qltllL9NzehO;Z2<{PtWN?g+&3zEAlH70|Jh}>%Z z0#VcJFGDTMdpDW()BFVoulb;lIf-}ccWn#$5-jCx0#U62j}O7xS&tv0Nt=R}0_jfb zCIs;&*S+k4Tm=cxG`qMxue9yB8wV=0i`C|QN1@iq#be9ZI-=i_G!gF9aw}}j*Ld%n z?Y>yL<&B^0#&r*!7Y}d_Ie7Byl zHZ(k6I9oRP^Net`CUxw=JiuPuUXJ0!~1&!BS5lT>m_lC<_aC+)uWYN zSqA3zZg{iSE3cM+BI!y(mcZe$JJ?~zlkPr(PPVj@u2 zpM0g)ZOP8Vh1aC7Zo*0RC{D7D6uXKayh&SG0P5a8PqkgPT5+z-*^6UMHsyhwVTRcf zA>6|_Tk>%jrP5}9rd=(7i4t2sI-Mk4)&gT`lM)bCOGzA6+LW*2*_&6H>qDMLW0s53 zx$S7l-{rBFvYRqSnc1TO?XMOn&*2tY~D+S*C~B<33Xc0gV){zY*;zYl_~a%zm6Cu()AdpK{xHg z50>{Uj*pQuUd#xaaiWEsi+||u*iGDbiGRfzw6k4?{&eubDg0I<^XRNHg1oH3nwSPy z-wr`_z!G zU5H_JNSA~H;3^3uC-Iru^BueLxxS4(UCKt*)!~fI-|?VAs>uU+cTM>^-u_|YpT3(9 zpp~+uHhFo}!TqFBYk}tA6Ax+nCM8$Q|EDIn0=GR z{V)3pP0EWF>1cOuYPWaC2KraHs!npM+25~7X*|$PL@xdq4C)V%L^r_nmbIf_ z{os8>s*v+@S*aO!uN&8^`6bSYX~Z@WOL_G$yn0l~=G>Hv@5LR`PEVbereaDPsjaW}~%aiKyaVOv0J6MWmljXactqc@4qt1ID2;Q-t_GGYy_f+qm(PKPg;oPz4SxACYiMOo+R|DXV+EycFJf~ zs>FyAiO4`BT~F;tj^oP9!|eYvxE1L5`Fl6-onvPCxWr%1_}kA4CqPWzpfxLU%l*$6 z#0~k1=PSHHf~WiW4Bnp5r#G@az1uatH#YKZ&9Vt7?AP zFa4iGj-!Ig)GamZd~EuECS{Ob(%(tzSml)b*Yy;q{*FkgGE$NBUsLV>U&Q|>JF$!x z7$`Qdv41GXemE|+adqzqaq8;8S93hXt%gvz7;WBc>nRI@Dz z^9|_@KN}x`_J>oG(ffPWXbK@bEqx!-(73h25ZbAcf7n;g8t-NF8lUQ}pb}iecoHk)Or;fApBg<+lpIE?U;guWiSP zU2uJWe=bf?1;f)%LXQXDV8=Hn02)?|fG zTd8T)%l1B7**19tKTjHl^q*0H?c8rsiaX*!c{nkUyjC)ynLv|R{(=zB>Awd+1s8!q z*z+lWyc+lsc=UYO6)Eb_f^!VEdjrlQaf8)rMka-DC@rKUtSF#Y_?{-%)V|dIb=2Q~ z0Q$he($F%MFU=(MHlW^VY$XYAS87#s;a-2K+^}vj$*pWoY_W+x4bP)mx@=B=5_@4j zqAEdGK0LDTvd@$;r@#p{_+fmI>Pk&Y+SUd63;mm(33$9Q64uYjrI~a^#1cGzq36Hk zSe|ju;avos47lEu9ytmupa*v!-}IbC+u+skxFHIAdIbQUug+Bg#&~T#$81uvAhAuB z)!3j!W7~r~)9-r~gVNbJqpAo5_(GW(=3sSQZv6)|~QP*2fJe6n)*THB386}wP^&@a+h z%5{{y4oA|pfLkK@R{Qs7eD?U}?asWfwfsVBI=;$Pbr!y={Dvh1kJrq|ud?R~67mz+ zK8T?)YxwxL2Z3d5LTRyfgxdT!R;E7~s5*25cE)`&xUYWX*q-FS=s&LbxJq}kl6C|` z^z?HlsDzSRk!k(@YGU}VnX8)A!OUiPAS0l9j3{oS1buCj1s zRtoNrLDO3#&?C9bqmq=@!^=DW0q+&hiMEAmXHBN!5SlHM702o#m!VwG&$Y(nyvF)ocU= zR(Mcx?Y+7t`4jc%DwWMhEEN;g%a}GHcG&t%T{wR*;;gqxy9Ils($& zb${sg*dW`d;rcB0RtGfX>&U^c!Wl#3Ltjg1uv5&IOJj)>F-|v~(v&el0vw@vfr+ej zLtwT({@3vt@nJs_!A29%P*qPfg{x^x3kZ9<;?OEiyKg&uLSe=Ah!ZSz#qU)_y(YQU zM6c2e;I8V_0Mj@fmpSgYM{Jh($F`@4Y=vcMZp6&zN;C=gilKkKEr#>O7@V{^7bg!x zHota-*Ps}JjcRy3s$!T7E?B%RS|>%`QIHI)gm0Df+O%&So>CZ>>U+Dnm?W&27|^*> zhS^;iNLfuWVDQ4wRO`@l3+&D#UGjp(?Pw!>q-TX2fAu==SKZ?h|7njG=6S__$%2w| zH`?uTO0mX}s_2#cFw$tWojjw`eyi&$v|&XS55v{;bw!+Ri^B*jn&)FeFp7hd*#e+O zv6>q(Gt3 zaX(0(>51|KdifmDw==WdE+zYbR9^<t|`aTv{c9dcQo$F6 z8h@QU9@P~<*^V7$;TIQO>)^B^;jytW0u)dCCQC;rUf6Dm&d4xsMQ-8`R6?2#%?^4G z<+xsbCK`RXC0SZA*(hSwn>}!oJqIS%)pXA!37_db`Law9J9tpr;qlrVLq!^o7wA?_ zB^yaSN20uhCt^f`z3)ENUpVa3(>+FBlH&>1TtwJWNnV~nPan{jGwu#bXQocWiL38Y zXfK9&>I9I#^1p^d>u2a+*@9yf)kVCn*n74pS7X1_u~6hguo6WvP)q`$=4Tkkd80qa zzp(N+?%-}sXbvb9*VB9dZTVC_Ot%ejLL`!1*h}g4$!w7i$@W?1?|BkI1LM`*?VKTZ z%4HK<>>747tTPB`-!sj0++`%d*b~MkS~VEx9}w07E~?hB4GcD&(Bn6bu(0gN@_+G^ z6F+wLwW%J*=JkwR8{Z9dV5p^vB6CD`RpcKaK!u-9901e<4^D=U6=5ys14u^ zp0V7Mp^O&ZTQru}qa$p{wraN(Cgkp+C3d>kSlR3{+MS-rMIMYUt4URMZZhY1ka18- z)sI;=ftTZhb)m$lEozxO4nupQTM+n*7WO;)1hl2SO$jACswU59)o0dc=)i9dGtW2; zkhX9VUuNIk+$9{1jj8`t24oS5onzA)|O_9cJ!ZRNM>w<)Ez%iFec$>`v#G7sM#S?#6}J zV5&oCWV*Zs?FuLd2{J$#|6#-QTIiZt-BuSRPmUY&NkEEI&*2h^U9g`!Ur_H!%CH7Q zm=>zLxVn#3ZQra_e@*O0wjT@iFHx&am(E|9qFacPDBO>U=WY1TO(4@zM8ytGN#+*w^{(}a`9$u)0Ek_>t zI>NoAKre&U*xG4?g+w2A80$J}DUH|fvTr&4gC7LQ|6G$xM0)U=RPW61Cm19|r>q0x z>MDJ)2+fjiZgRIKHi2YeO(c7%X*4G_za1a7{@KVMt<}R!P>_eZB}B16hEZ_1b};*KIn_6a zRSi6ljuy~AS%XrbdyQ;r8-NcGaVEK4@c}mmyr@TkHxmbqIo4^bz#Uyv*hRB*J zg&)_krB`+_md@Tq{|1Jy_3GVv$*p}#^dJv)5kfZOS8hBp%l_z%p6j=#bA2d6cakfR z6HhZa1uyx*mhTF-t=JKkFC&%5rw`3`e=tjN5c#{aKTzCatf()_J!k;v)ltxdQy(7g zJeT5^bz&ita(DODSbVbE{-V#peVM839He_PwFi`PEuktWWQD%Bz5 zNgH8z*BKE;%*aQ5E=ofNcxK2#VFuV>vEN1QP||ge=mzq7dNl|X#5Z}py3PK8Yvb>Y zXjU3#@}L!Gq7s`V6YTyz=Nr`$`GxxKeve8sMj^IPSj!W(r1|KV<}?^7_L?)<*&U>i z6=>7(cj9LjPJ!*hLMMKk5QwK{rU5K9`DJPma+~Vn%7Zvx7+~#unc(H2CrkT zP4C+@{Z+McH;4K?0Nt%R@4(O;k*6pkejRVeEd~P(Odd< zl$-}&B!3GbJWx!=X*8meC!GL@5Cz`wcb77_MV{*by?e+zX8;BqxtqEkMw)THQ3II# zbXu@gRI}!B=oXMRL|wn@Ws}gHW!M?t+B19-x_c{?yWS)fLU#7KGGsR9oc*`X8d)T2ZV`k7%SW#oucaj3v!*>gIJ^gQl&J3fEz661Dg%Ffh-1x^k zluh=Rp)Q4wVU%z&w%JsSD^h4l6ua1LjH?Pgje^M%>!olf6Ycd7&*z8`L$`mg+V}DQ z_?(4}R$fX$?r_=AfbNcEFFNNRz&Qtd09;FZWO7unX;CwPyji^!(!cfS#2GCB_o?!a zdAFr-6wulb#n{bc49Z#FMwaVOdJKPR7zyv* z|1>O8OVo9x(e(8~Qbjh9{^QqDL*FKy8oElF zCu=2H5*nDYTioG+8JhF>3V-Z)yWB(kFJ09XY@zbda|{JZL44ifO$rt7kqQY%w`pyCByC_?QuKH%oc*} zro%QHAH*UHMZ_tLn>XM140#pb>AL0MVR?7L#QN@QmZ?QaQqGQJ3G-TC{~+HRekn9zw%BPVG^SbS z_B7K)KUj)(Q+L?PV%&B-8j8`f`vayUoju0|WffWQWsu&r(80?cw&$0tcIe90-fVae zb=A?*qf;ySo|ez<(gOlXegog&FEU}DLX8X32D~B%J|{kgH})|0fj7a4t@CpGVgoD7 zZ$2M-an~b?5HVm?{Ry_{$%;H7$B3_B&mg0XO&3*Y@er-j&k(O(@I^k9)VzWdO9inPKm&JjFniQvvwn_OHyDt z6G!UG9*K7=7V97~nsblesP)5S=mJmx`3a(O81GfD08M0`>$Ef1Yy&?hUtCNHN0XC< zc)66&ve~`h!Q|rH|MTb>QQ}9?fU3I(3PD_!92lhxGU`aGzJP=o8eD#;>^Rc9CZW=} z_&dQBxc9eWA)CF<#EScx%%dc)IM5cC8-hkG61>uG%n*H%xM1?eTe8;U0`cPKzDP;Z zEyPl`Y}P(XXpO=+v1u`fNn0f5=m`J3Kdh=?VGjMG=*n@+jOPRXx^gSJw6%U{-Bi7D z>zx_Fqc_Dv3G1Leqi|5)Ny37f~l4I%f0sWV|x}K|_ua~zmqJ?j`t`)vS!wkly zx(kSZCZ?SW$RR1=?ej=U6k)fiWKkTiMb0?nMAYZ+Pk&Oj9^*NUZ@!P*8mlI(>N$TL z&;JPGY3;NB48HWZ`0ZE1St7*4_IF%VGzo4gI&heJf3gtmlB}p3?A>9(NRU%F3}#)H zRsOO`+oGkKNc^XvuQv*Bg|51YHCLq0_zNEWwD?kL&Q$(YxkvnlbFoNdG|z zZWrxm^zj(`-gbHF&ryH-onaVXJ6ICb~Sj7kOw@3sho&&4;=sEw$=0t}e4nMj%f zSHFwrJjJwi$_de%7cJLM3gNP;t1&0fYPTO9Si&S(Q01psE*#H4^%LfNROm||0S&PE z-1bd&OmAvS#@&W!6_y(!6{IJvEzB)8F(Jaj;G^!+C*!Z9Mb3HYz>kRj0Uu(0;w2Y0 zjy*k1lhkxtF}=_YB-Rs93g_cjCwVyEMs2%w>cO z7M*GVaUu`N`De$4bcj&fx@CE`GjZZO#_cg4VI+=mvBSAP3y`C-cn-slf=Klva!X$# z&I?OACQ=bJzva8EIyY(@EIE*z6g~G<&(yNt-C1JrIZ=6on~?pmhK!a^0#*Y!*L9yu?-)qAO#cgXhUme7_G%i3Axqe_cLHk0F)@dj97{Wo_iCT zk8nR&Y%&nHOe#(@v9feEj=f8mGr>+K;CPAUc3p78R+PCWA;pTH=x>Eq}1Y z1SWEJEK8^oU+CejdYYyY>^L*c-N>3_<1uz5DGhy=&l5VI8StyILoOTDFf}@j3t$}P z86U0`7A-VxGkjD}gl(W5$RZ>NBf&+bZ9wZAV`s>ao|ZSx2;eHB1yy7PnrJzK-%1g=qn1YL0>=LZu7mBi+Z_6tY& zo<&C&o`V6jIi(NMw|H@E%+?|2X8XpkTV<2tnr`ZFp^J1?9XAv?SfdkyZ!`>hj{4kU zsT~MoUpg{il}FkT@3;I8LWmapMI6iP@g|-y=5R!EBf#MaJ%et2%_mzX+EQv?@XPj3 z$;)8LLYqWv87B#*Y=y*tvzEDo&)|I2Z$j`RHv;t~@O_dCN~`9vPR5;>tfUlfC-*|A%+(J@=mao!>c^W#m1nozXqI)L-Yu0qoV#vaTGX3b6~Fl@En%1Qeg} zdMA|*BxkIPXHP1_LE?C>qkpPf`CE-RaVdI{Z$5p0^|G$YT3~%cPL2rZRm1Mk zmT&wXRfVX6UUdP9R>~{oZTxZSBk#TgjDT!bNgG7 z*TXGuXQ7k(Cf1nSjbvWJ+8ng|dY;#Mw$Y7PGQ$|sLtY>Wz32dbyQkIX*Zi27XJpmE zrVhl8ykrUsRBeh`;r2=b<-)JfDDv;ZsgEogwZ7d}5Yt`awcTRVaC>USOBwXNki_3=Ur~uc)~mKf{Xj4a3BkDKMbNM zVx8XB%;U8rpP5$2opf?(p5K1_b-DhILx`eySWrllF?Za6cy{_{}sXy=rdV>xh0~$#~W}1ramo`kiijaQ6 zOIrPV8Y00>JHD~Z&J)AFdm6*t)9Whh&2Jln9+_v$MpeB>y@trDqO}PPpU%oSv7627 zdV$B!FxldH;sstIl7^efm0tEYFdn-fDnWumHW~YH5p{Q9UCn?B3;*&9e zl>3!G?A?qn%zJyf8IBg-Q0Bu4Rx9cMF-e zg)8hjeC+c)lYpq`8su|P$#}1}+D5u2;#)T*ZnzQk>+G$A2Q{(>vsL5s-8d>_(09K+ zo0)!Z%<$$X|HLNKRiW#%(hw62to>1I_W=$c4_t1T!y{RfR$LqQ)-5|+3gM1nA*fSN zS1*msGI@Mkf=$HdJ4tTYGs*BaI^;_VklQ^CXw5e5smtrNpb^`q@WR?%E;8?>&Yw45 zAHO6M3SBFVY1gTa=iQX}dnjz_O!2aKwQr#^RmMD8l%tmhx0pCq)D|Qy6u09Zv7u@x zbL?=?$q*y-+#k)1JX~Z8V3WX3ekDcMf}c#D<`F=DadE`=4fhvtQ~yxUyc!dJeQ>G~ zn~)K3W9UAa;_JP%Oq^7vYpV-*KDw2`D4?HY?L&R*58PD#W}4ZaST3Zn{Ch&`aMdd`~Y(!8FD}s zN}`(dqp_gFI?! z{)G@#36qKDDpcoERbB0OBTzmNfI6>)$ZSGSe|-%J-2Gbg{`F6uLf7Mp-q~wjGT7D0 zpQ>MM5hJur0ddwAyzERhb5~3C>fZP$s6z6(`?k*98T<*f(-1dQm!r)`vZzQAiE<_LiZ7Xj+w(iO82}8 zpkc*v=Oi+NtD**@#b*`zM#Fq0(&lG*_U;Q2Aznl+at8*9b3QWOr+hJtLvJ$6xZaV4 znJYSu$Vyc^a2e|G_E9@g^Wb90<4?RvYJI=pq!b|j9ZJ1N0a(R z2Lg6X>N6gdTwVj)kbb+EvEY#z^DQS>QB4-tP{lBAo-u7|Bz!yZ9NRrAGc=VwKkZ9&yb}(-J!|~B z!0eg+C$oGzn5=)wq$m9!xuuJeKflnhcoIxLc_$OIW;8PTXuq(EA{WiU;O*&OSi|N> zwMAcNc<;SaUw%<~ZJZyM)j`<$&ZgSK4q>qsu>N&StE(zmMD!QlQuS{HkL)o|=3H4O z){muEkM|$yz1J0f(K&d8X1_o-VI`c28%xm3wCt5I9VPc?yF6tQGI12$j6x*p?!`?% zi07a4*?k=~p^`g1d&>8N(?;;5h@Ov=Oh)TyJ8lVYm@S)OxHV3FDa&N}yo@bj^M#g; z-YHqUO1{FLAPyqVAOMOgQL+&+(ia8ogli;Ru*Ek#B3JhXNS{7=C*OI4n6SsJ`}Df8 z+GiKhiJrWe)VKXT33YsAParSG{jF+DSsD>*xXnDq$O{z7NgH=fHo>D}M4|c*v^UqI zPPZL}ID~}SS3llwtun`?L8(V`nNPj;24*YmsOrhpKc-*g{t8^P2T#pYJe8v!*|SZP zr!~rN{ru<859QWOk{C@GQ^GbEv8*y|1I>}biPKO8OZ9O|$Lk?}OJ_Qj&&!!Y^BYXKY*VE1|A;EaxGgWAwp7w*JLr%u*tBHW)Qr5!o%IY=JaiO|u;ZjO&F@ zzS4>7%~0pLsahtL8q1Fz4QjQkb=t9BW{{ENNeyQ_ZQd;}v-fEYqX#5gy}igYX0@&NvwCIf=U&E8L{B1udE0ZkStnC9JgVte zD03hsn}PkJXY6cb>JkZ9ckj_=>=K?#rt$ExM+ldOg2L26a!Z75L{~9b^L84~{S_4kM zq?qKO3(Dk`#2Dn}y#MjEej#p(ktkb`mncRc54z&_NhSm$3S2U=C-u&xe4zAK@QmMY zH{S3wx)I2DADG^EwYLd`3~4)5Sy_Oo4n0|Bb$cT1jT81yKaF@qLi_h@|H(s*@-wpv zO+GNc{Ul|OkFFb2-WSd0=k+&#yJ|rqbRY+vy7S-XHFKNLEYM~?NKfY8SHS|iYJ27^ z^U0a-+??p<{otzzqQN00cHRX6D`o z?^}0Z9+^_(oqNA)VF>+b6Oras@3rgkxkGGnn&HNPMCH@d}r{b zQDpGEc=k~`i`a3ZLu*o~T)#++4t}5u|4AeHh^UD>S$x8Ns6v#e0L~a~5P9!~@jLFG zoD|RD(wS?tUmFV8|DyH&e5|v==;L5DA(~-TV~P};t0!ey5(qGG=cJU|EpQ`!_d6Em zkSNi_mdi!rOGR#Njh2`pnVYpC?YK=PJRrZ!4Ok5b-$W}jT-^k+T3 zOf?yZ9ry(~jIOdr-+`+f8wdUjckS4)_tx>q#M20p`1O4dQ9q5VnT~s>N~C)mv{Is; zKuq|p2d=GqnvA!64B>(O^&a7OH!Cu_jJcpSJ;%j4m z)}}2m?(vnjb5dH^ z_D&}rE`vDgaFM_V2!;-a%5K6^0=!HjOH2Xq_vwR@@Bz?QNq7-jx|6ROfSM^!Sl3)<&mkGq)6jnca_2|2% zr{K$bqXHee-_ZgYxy}rU+uBzE(&Ken8;NJ!D3?RlqYcAg-qTIGt0)xQJ_{EKkpiOK zPL4SIO06fgejtt#54*vd31SX9PKr`k8##tHS^k2b(nqH@?A?Zqgc-Rs?5yR}CbhXO z2g0u>(x*IF&RDn#4sU)b?(`Qq#|56KJfe<9ORL?#5Q&+@hK|W_aKWC;8A+cO=WG6U z&L}y^ID3SuW9L-i@x^e=D;DUN5APnlUkbKh7c6RWncM{igFH}Ei$1ecS>_X&F@SX` zfhMYmkTp*=(Kp!k-o1Zl4&Vqb=KRqKs!}a&A>js+td{-L?;OVYU7GC8c2AMPt~f3*fW@R1hHmLmKK;tk~;&Qkx61G5W-d)$K+h zh}?_TH1T=`-I{p{l9Jh0IBM>hj_E(l=D&s95)TvV76}~Zl zcoc;%^pnSKyi76dRn2;pwCsJkH1#r;R%>HgsuyPU#H%rjQ?1aVD4<-v{z8M_OK>EM zusNg&)9{UC-tKk{zV?@s?3WJl z9A(Yek)W{*AV@}d^`I*m_EA;#I(1(a$LODNTo{hZ=yfK!(SNE~@~sA9KQ`Q42R((l z+h*1cdMF1?bM_o}wM^8xx8>UTknL|{*;8}qC2ss}&Ve)~=hJ^$*71|3+v%Uev+@Fg+J0)+y?r}XIFd{p28sb*cEe+x zmDjV%tC)VnQvaLFv>GO&02VS!KI?`LnD?YbhXf8`c#LUtqx8Yc-@7Df*x%J-hF1S=J}&7kiV(ER7UU-aEm#gnEL<^#;!$ElAfp+=?qP3%&nmo-H0G zl*`X}bx^rKPI{D&Nz0Z`sUx6Dn0@~uqJ)IjV|EUDwHmzL%J%ES${fvO7YQLlE~(ss z(Fr0k%e8vXJ`zxn^x+boU2Aod`Ef_qJ3JYqwb;tLXOa9ziil&aP zaS^aCO*B$GCk@g3zV|ZrdxFR)2sA898G>dc^bm zrC^mR-KabmX2R6`LmDZ{&7GY99e7(A4ORPCGMMH~Bl{;+)EV(kv(*|W^Z58Y0*W%7-n{)4@BaHxlm5vs&$bzrR za6n(qM3a8E8{KGD7O`E8XScMsot5TmL@>3%leyzi7GMPdR93-XPU+z7lec32DNSKO z+YO{8hEbLZpSjSD$6D8q`1mEJ{&jegZN(2f?+I?EUV~T0 zWG&%_=hnps%txlOs7Bu?-HYv!}S+F zNWT53!)ft$^*}#v9mQr$af**YPEQJND7wxU?y$Li2^CL9!v;@Z_Gh|X9x#8e(f-gK z&gpE692_30c=lPk4e$39#6+Co@E)_^K@h?8kQ+J0v2phq&@f31M5)Lx8ktFqa2)d) z6n@13rj6gHQamA%n;#+yvE*KrctV=~7s?ffamKIwLRp)b%i57un9V#^9P?8)y~%lw zB64yXoJ7^0iJtzN4*kr1ff;irO$U=II$wj+U^e-I#FXN_w z(VR0B6wr+3;V4i)?EaLuCfko~*VYwlIk2S#Iv+Umcz|b2s4cDE4z~`lz6#IW@;Q`__3h{@cFMJS>W+ibY22;JIX?Px~Fuof)BE`h*6EQhu ziWFFv>tebvs&9!?H(nXDInf6|Gd6%D{fCUHnW8^KUJKWsfu|#SpHY_+;!pg)t|xOgWT%LBhKQ^F{=$N zX(tl;fhLGxv?q3$7XIw-F&H~r!ZWmH+ZqNZKREBYS$)iGqxmtoYAa!M&c0E3{(H#y z)GpD)u45v3%IgYW%N!ut`tLPX=VCqk653uG;i zq-Maj7cJ3hLTH6tGHY@gs+sb2)hWgtJ6~V72}-L;zR~GCSJ2PIIyqCTZw=_vHQc?f z7R3(}3R3Z@$gRYq3Ts?)maz2Ue}fgjH}gfLT1m{ggXxsoiRn$q_drdPp$Hj*z-0`` zPGCB+G&FMu6-igbAXNW-`G|&A@CA*Gphvs%6%(ZxJAG44Wz6iH7TJs*-^aZ@N6jt* z%fqon_|S++zgT;HIW8%0;p}g3ey%4mJ%9AFC4+ddmqnxty!A=^YyrO@M5&>^C2q*@ zWUZnn|I7->mVjVWctpHRAMUnKH5SGi7!R=IsU_gYGif8W~dhe7744SA1^+V(=%+)3rpNEGtmPPo#MUCJ&l(yw~_s2!mcor0Cwyqfm;D zmMim8O{59tn|}q<&85UL(0*3;4Y^i#(?9xM*sI!fu2!t85lyswO&sIqrY=|EgbCN+ z^|=Q68YO}*XQhJ7OvT{huej`}uqX$o(9ByAZi5}0xkhkFtS7qT&yyn?UTx*3rbif# zCX0>iSPNESO{SkiB9%?;);GA_@E=Z?6fjh_I&;$5DU5Ke$sM@ulZ$4yg+`!bwN+%4 z+)IqxbrquAa9x8yHFbvvT-a&Q>7J?>)pJvLCV@EYPWBrAh})PdlR#RFTyZ?Lx9Bex z5z?a@Y;VfiX zdZ8;kQ4Y=i=0$fsIELGtKXchf7rNqw8-L|C>Jdt=wcIcL;)X^OMtxLIU(%-}N!EI7 zG=VwhExefhW@aeW0|JY+w~)RxG>uW9id@FJA=Yba)~OQ>HK7yp_D-g@?kmd-7th3VaR+ABYZ{QxjD)Q6gMW)T5c}w9Jr8 zojc|Xj7z~vt=ARFAe#48KR}1;vDv-R`VB6*N z;cvY;3(Afjn+z8DrWeklJ%e$;3%v|-U@2oS2x*kwmqWLDrx%3!7eyeGB^EY4d+_&= z{vXbVXaiynPuYW>4@#oQE`A>kZipA|)U}M~zHG+bqbzXxiiXqJ?2WrqX-LA%~LX^tjFP%Gy<;uv-v1tbRhu*x2 zpeU5NlQdY@aNEUoJpvE*1H{q%xWTnb&Yo<}ER?jJ8r{S5Wtb=bpA>;W*`8YRij~JU zJw`}t3cQs!_l_}_kvMj1O0XS7P6 zqQ&zZ#%)BcQ#0P1!I;L)*&@_cac8r%T6#LVNR@~MoD|Z~1bq@P>s)DdidM^IOMGY<&hwjFq zNfAKY57BDzUU#vD6&w)K_;=2B9g2wLrit$DErd?&%&@dx&{o+<(1{_q%ZK1(CF}c3 zie1TW6(0@tu=si8--Rt*dHw{^9IcQT-~p+sCWj43sa#AJdH3|{rGiK-9_$lXNPmT= z`LQzNYp$#z#Snq`WH#<+jKZ0b$NLy8C;Rw%$LL6FYV;LszMQgjMffd&Gj|Mu?^`)}IGKixSo3HlF69-}CBCTrP2 zq+T9&KA)g_<7W<>RR)P(A3vgVMVfooT82A2adpkx1Y<|2}_z?mL08w+qo~#s;(=y>amW@ zn=cm>w}&RSkVK@yP0QP(-{eWH(idx~QrC4=3v#n)g{B3SRgW{w6APkRz2y<6aeIJN zdRx8b0`~|2znG!5o_AT3a9DVJVJUkZ;8Jw%!vm#mBoFg>KXqLtz55%YgT&>TVc<;vBpvA-ud-R$(Can3XSJPI#_22C+Ki_bF z(HRlfD#UV&SbnYIp;ik;`-TFV3JoGpBZnh^i?F4`Pvz$Iq&6AE;Z>WC2MdC57Yc2jJ{ za!+$XyJthefT0;xVXumD%wyR(UzedA??#Cou{ir1fhR6e)fdT7|DjkA1&nqQdWv_; zy9m$&2pUMIE}w$Lxn42OusONDW>q-OOTpn!1&surdvka}UK4L(J{LPE=!;^A{=R~- zED(R&BV#+#`eb>W-o0M+IQn-2NXFw_vgEIW&qj+hiV34!`a<-EektNsSM8E)b?d~m zqzi8~!XblldM5bis8;xtD-efqQ}_ZNeXfg6aq=cvR!=%Z+@|9^HI~Vlo`>m64hh74 za%AxlW#5GaF|C)pL4Nk5AZL=$uHn}$-;?C`QbyjiV9a*8o?9IV*`D)KH2J{%|K!!# zzW>UqAgtzZ!)M|y@qd*aRizeRZjT8TWihoYQIugDIVrE; zIj}E2;cSH`!j-$g{5#O=%Wp)*dTMvT_V*(Mbp*~O$~eHTto-++Hv9HUJ{H+o=y-Dd%f0@ z&XjZliTk_M6@y0Z(kZc4__$GgjIKr*rYz|qblz@|LFTG6ZV1~H3fP4d*y^~cVglsD z8+M`!*>>lfRsEwY{?CgT3{&}j61X8zeJ?cXy;}P7tPuPUI402}=($k#P&|_2n&b~t z0Tu-hEuh^acb9u9B|e)Wy(U*6OCqP6PimH|5(o2TET&L3upX89N zUb#BV{mD?-b#2E_uNdRVM|<{}rmX0y*ct6O3KhJ0r_M>!JhQjdKUSZIJF;;f+02Ot zvF~_AAOX2TU=k?$r5WZ`?SYr#93%@-&d$jWY{D@{IW!`Q&tA^_ofy`QbV{5*$y~3r zKc?!_J|lohf&an_`%Z5>E-$jG>74EpuhP(HT8v z&Y*7dgC{TSn&-aMjx`IdJ7ptv^(wu(nG7r^@zvsBh2tr<0(SGIyZS3Z&M5Bj-K8PQ zM{51#mb2kj@;uE`QyH8`MR|DwG)asUk(q+}zGheG%Dtq3be|`>=i`S0wh8MC36;tK z(N7J3X1U4a2$(syYjhR5EK;2t^&9G%Agm#JumR$x`Kl>)<-N?)#cq6Qf94b}VOz@u8I*Z$t^LhrJn=BLV*hIC;;$KQ8ZE|)L&J0BfI)N&Mzc%*82R#nKk zed_M#Y zDL*v)u)NA$H&X}gBq923>SU19j{;XVo&;vPyadBOQF!V=T4GxZtlt&bD9j$qlMIvf zXDJliu($)L(=RWFpRzsyCMW#nHEn(ygB7v#vR7_Ui^H!iGhtm3N4vUVr77Xo^1sou zIR0vXQ1w+_k5FCt!hK1Rxh-qT@Z;32|xFN0bbtxVS0Tn@zfXACA)HW5_xSw z!d!FFQRl8P@Bb=K**sry_`Q0S8Dy>*+aofP*pka9I-~m2q~Mn2F+Z@HnIbw?BC}}F z3XB`&`$C{G{d;$XdVF)XHe*CgQh&J>)U`DGIizLp`J$gytjufL`WsrU#&2S@=$jgH zi9b<6s24{b|HQWvSl!~;VwSI&jIyA8x$Y}fsSXI+F*60p!P9 z8e$3*o(WLb0sd^BQk5u20X}uGkRc30Z=VMYrfJ$+75=v=ja=0au=!5z1%TQ}fv1oB zTehRF1ZRal{wIXCkzK&Fzbueu^a`cX>oF( zJuhjHaI9NbM4b8e@b5$b*Pgi~mqQt?C%3Rx3_a|62s?d4y zcOUI-N%#{y zQs%YiDo1Wt;a=sbeT3-k6&`c!#>v0{U zF#Y}L610F|W9Aq8+M$egTx=4Ma#8m9HJsa(%$QU6l+u?J-x|$QF=h9g>zIaJ>8gGk zdFv1m-yKcuN^lggmpegimS=l>REE2S+2#>*x!D`H=-g+B(#?HluX~X~ngL9`6wt^; zcZ4pJwet(V-9eDT(+@dYh-*xKo=LGHKLxd)G?GyP1n<`7^;jNKOvd?njXpv%dCC@W z2u^I#t9ErV@PNo}5(1sFJ^?iHkr#_<$`i0x@N{2akY0CLFu#Q~5)QFVg3^4CSXSDR z^sh*dea9w?L>s>-rF{(XoN7Tg){(eM#?#eB*FBqR*}jBHBdcG$&hUHW2564@E!GOp zli4dMDpv5>6u$}>mgzfVE%wkiEv-MTC>kYFAd9SKs}h%2h5#@OovadXPD-3V{LuqETjZNlF%;5po47 z{IkY`ZQ6FoH=+X>&8xsfFhEhTyM;Vase@1}&V2EkVaZ7AcevRzCG+?p;5oo~r-Wy1^PEK;>4eA7v2{z@wx((7HW^ zNi$6&m-&VN!4To+Sfp4*v|lAT5M>e)xR_t!gM~r`1M_#{5nqk>8Q=>yO&bI9p=d3d)=xAGd^%uR8?wJ+@h9D1;rtasqrP1_b5{bjEbGPQ=uHuJWqCNWp) zvvFEIHXe+=n+5ebS9ExEcX|*Pr*(&xtw!=SBZ?My;;|M!!wipr3BK3zUTWHA<8T+2 znjyua2~}$Nvow_+Ayf%AlV@rMcn!d^&uJ7g^+O+YiW4!fV@7BzzOecucv)R*rvc8R z;$QJb5bGRtrjcNwz;QJlhq#3Z>Q~HQt~><;U-?;b_8iq(R?@G&5)iaWceG3OfZ~z? z=TNCL-gbU{%BOq-{iT}Iy=|NMM6hhuAO>8SbdU|}mO?VZ z!lW9f6|_RF^vk5$f?%?4P{e8p$pbGZ9RXK*T?ben(g(@{I* zH$O?yaBsr;KFPN6i%@`pW#IBOpyB4;vKFT{n7kF(d=t4B6{JOVnIN!B>%=As(4$k= zV$h0WyF~-t!-P8MYYS#NDG})q>$x$`Fw}9~uI(V>NZzmaBe?lOK<4(|)$XwVX1t`a zY#-{%%!4H~7pZBm9b86nD6t|yA+Tk3wOanOqz#zKpzx z2lmhd3Ng!W6{y4t47iZ#VRD4?ROrMk5wzi!hsXc6LIO6_FVa;#z5y&}!w+6&v^&68 zY{wSkp~4zO!|Q@KM1X9l>ymrn4ZXyr5KoVsa<5=);QT+*mE8uC`T2ruCbz~ENi4Mj znuK9Me;fmX)^9o~LYL7s2{@sgZ#Ll~3&1h2IM426E)e_Cf_2vr`@aO%L&GKIE$MLv zQ0d7Je>}EwZFKmp1`dR-SxUdp%brYzJv7Es0tA3qkPYx82p8V&kEt5Mp_%hIMDa91 z{a@8GtG|e&BZB04J-~{3K!Kb75G0KPc_WScU|sJ=+K*!XfWpn~LtWy3ZRGLjo~=nu ze|*>UDFN{>)%0svS#JdFoh8yLxnB|3jzH@?z!ZB4_~{1hNcRN%5a4$?jIICXk+;1& z%5!O2l$JfjsL1&GHDCwcP=*I{gR}&WI++0~1B|kU5@Vk^K;d9O-mBq&yc^3c3r1c^ z`@3KO|L>;*b#)!!JoX(R%t%F}>0f^G!?PI(eD+!45m&Hc-P61@Br@9){|3YC=4cmx zJ!%DLz%8T3qS2of;X`~Bu74Z?FoYT(On><+ihn2A=Xn(p{tXh0hJSWb^cRVE@>>K5 zlGJ9fYR~w$@@(qfqh2Q=hH9o4-=oe+a{;?|$`OvtY6IpsR@iI|m!pA!rfWNyxzw8- ziP^0Jtk~GtVO&R20|vMYHHGJO_~=Wx)PaULbnpvU2=a*+vNa2wvD;WLQ-Q%;WCQ2T zXd4~(3v~AR4VMz8B8WhCj_>ETDXuvnVh*EG%5*RTVkrW=;d!~AL}q~?8~HKZv{$n& z*s3cnlnex|M4W@}TXq`hW1rL$7Wy&U7z)bFo3=ByBvw|fkeFqgCe^Bd3!=f>=dcI9 z6Z5?;`d1paia$A71J^`m!p@c6O5>A!{MN8yD+wLFe+~TuO!~}VZz+S+ALeg%+~QND03|sYyd+%)hPvdFvh}k zj$X-lqd>y_&C-}9}y{V`7<7#1N<{8XPmkI2v^03uRJAuacG`cZRW_lIxg3ef?+0+4o~Q$6AB zQP#P?)+RUX%Wa@#dJ*;PkfmSl_$l#088?dRo2P~PTYQ+zNKw|WCxMRu^(6HDrBjRk z7)Y4cqGWjG8;+sQttS0;MXC z>T#zLJf_5LJyBki###NCO-D(X= ze*quBi!$b@pihY}Ffwd5Tu$-nymHH4MGO?RlTqPN5U-)+aWn75i-`1ff;R-I-J*^| zX2X2ad4EoCg$)%m&3u24igh2$xGV-$&`1GuULWku*eCJc3BD(9RsDI?C_@*qqXS%e z3UVE7ZOOz_dgC#*x=hANZQyU#8>lHP}|Fhe| zm3|Zx(jtQ-L*~VVDM0 z>Wn8p{R==Ei5PYn{XLIh_=jHNfQJEi`&<#N>nDN_8rJmUb-($yumEz%N?e4uDOl)z zf{wf=dEy3J`;JY8gyp!%@ee{zsT2gSBp3YSR6qqC+@baRK5YlEz*8E9eNM**!~x%8 z|3%^h;y|F5P@2|nz2%OqlS2ZpIqgNipEXobu628E>HKUESo`|RfX)NPzaCxo`!2}@ zB$eiDKxRL+@fiq62O?m>AdU~{`}%#&g z3%2V0@GXf8L7TvttVbMS%Uw%2{aDzuwb^(u3`h&StT=7YxgH*}3IDkqA&cDi`+ffG zC2+&Vf@;r+KZDX4;0}RjU#l00uvRKTdK&ER{8o!@143dAOBEk_$~E8`zrnf{n%TD) zmVAXEn@{zCyW(H?|Ak&64p7vmYT$7+1$Z>Jt#=0^gE1CZ@^`55FnY zygnKW-LL0S3DFCmR8FCL$wW<>bXmKQ;PyGTpB>NxOh(tE;S`MGlFWf@mwI@{WiU{T z5$f`_aG`tXa4oR4Fr^dA!3XQ!%@ z@$~h7z9nH}Q|FEh4G#$TYc_zLtiLdrpTZL7)1}Q90E^}*`&Nc17Omck8z+IE6A6E;TyCkaA@|}Jj0Qjv zV&uG)G@ud$;K6yBzW*R

PlmbF(1U+r?*;SbD(mhiiBL`yxH(({z*w=jcp-e{8&g!{oPbs}yyo>MPUvJ&9@RRIC4e1r! zL^lV)PdPs7XcW=ygZXTXuFf{KCjby~AdN=dg&sJ)oPc#RFgZn5 zO{j(_p|!LCX$I)@qYM(0Cn{iupy2=fqb$;-JN-G9jn`SNnD=}Rvpgee`m*t#4&TGn zL@EazM>RHy9Dp%Uap4~f;CKox%1zs1z!XLYgf_k%<#(R&+|w7fTO93C0!fK`x8H8K>)<>9Z$BwEpUQCEKZ`9Yz~Ld9X< zgHSf6#;V@Y0NmXcfqxtE?&}D)KVaKvyU*nJTrzLTZG~K(eozNe*D1`A$M4n%$vv}^ zH}XtFGkb~Tw7tk(amYKxieZjd7|2cVT#V$YHOJ%D;XpP!^62dN)~?;Sz1@pE=704v z@0#Y<5bFLmcb#P#FCRyV0S?;k{XeZtJRk&c723y>LB1KPe=wAU6&HvS$9FB;7B%og zD4c>+43ERzq?gz*I$S2C!4=%HyDa{fhP+)D$!sapO#f|g0NH*1V@U`jEBx_tyVCjH zl3XRZAX-U9`uE8kCk)Zuk`|;}vq|?u>^~=@!nZse0%+8hHW!s010gL|2h~r{mvokr zj?6`Gq42}R2;GiO{ye}|Q3~`go4%YYgsay+f<@W13tqF%j-R9d&c^6Pno6H8`2`w0 znnEFyF?{30xM|^Xdzq7tNeUk-=W?{BHh|h*m(i~xmd9+Oz(ysI|GKG2(Kh`*kYH#N zz0K^Hr+>{Y>c7&D$+5bsLddRp{KI`&?2YATN>2(|Boj5vow9|fvbg7BE|ragk75@2 zrt(VJbu*KofCje<4--=u|I`N*dMM`k^0wc4UfloU6&~{CTUMEo@(0oM88;-53l_RR-&+kGc+3q0S$ffEUh(K(GK!2Fcw?5ofO~|aoWb{> zh$>f0fjH-lL=M+OoRjuRu6N!Q@sC2iR=dej1fHl5iwPfPyzr|d;mVAAAIPG#d$3N zRRnx!PR_TqJ^By+6(vj>A>^&D&)$4xmvEy^4%9ov{&)Z6&figqy7`>%S5} z;ZG#6MKXVOxc2Iv%tfGr;Yg}brJ8wFEL1m|7QC#At#>0*fG?C(>@FsEoZioFoGrco zlM1lVHdv!|1BA2>$bCPztAP*EC55U&IaSMc#`g%_$sNC0QMp!Fz9i5KM~G#^JQl$1 zk=*o^iAwh51xO$K@toc2l;-4&HzyUO=Z&?ZClB{hTIPw`Qax^<>9Sxv7_EjUj3z|; zGF;PcaCl-kV;xd-0M#=>|1zB*N={}Kh;*o8p zjxUJvLw#y;k~6fLl6S_N46xBSrh7T=K8vC_813vn^?Izy(%AG*$~;%>>|_2&~UhRGu7LcZ|h(g8-24y4_TP4{>x z7Ezkm18>^it%FOIfM{4)jkwXiOt^E+9ewFpu=wXw=TiKpvij}qPEh+ z*ZL*?PrBH}^BxObU8>2anr&E+p(ETEY79OX%oC<>DCOQ%{1G>GYaRem04kM{-mmB| z7IHc_Gfd+52w3tJOCa;(p*{(liV;kXFYFRaxD8rqd+9IXH6jWO4r3mI-+k3V|D&!i z4~MdS|NdgKWTy<-vRAUp5=M(5iAiNi45=uOeK*Lympx?PB9SdwV(gLZkv+ziWiVqO z#_+r5d7i%S?|qNsoj>L{?&G-Uy05wJ^SaLMbDkebB?((FA?)|3qgDz8kgxIzT#X8X zVxC@q>S4)yWe!92JMOOfE1)FLIju`2k}X3vyLE9_vSkRyEn`z%UkbS6enrId(}&%k zK@PxA9zM$PRxQaKrv5v2@!yosU2@6?Cf#WBbKx@CvAmAlu{+-qwlz+>3QRzEN@P7F z9eJSx9;(nOlkHfN^LzcgZheV_jN5pLSPWJ3p?DvJsrM;#t3TMC(+NyPYbsvrTQD{O zb1+=rb;aH5kTHtbojz(41Rbi>a66@qcduyiM!y;_{Yu?`70VQw>a{{^{pQiWkR$*+ zOk#SaYl~x1c)rL)J*Ip^?uPU+WA289lA>;Esm-;d`ONo|z1KeORKC(rZW`sLnW2?B z{6LHxx^6MGJC2!Lsd(`J#?_;*`Le0jU5?~|N0$onUv#m*S2WrKms-+BCV^Pd?XOpB zRq!ZE`-2uIyt^MyLy)kR7nkzK6K327B1RhppA%!Y~cih-`4YIGE zY9K46{iP!cX}ba@6?`fsfZA)Y8}}L1kr1ihYkCfLxA*!|<+xIZF@ZLiiWcA0QzsrT zvkY{qxElY3$oack!(iVm)CPix+X0z{XbTVy)pq3SbGgT|r-SF);9y8LbTVNV_6+@Y zN(aApN!C6Gg7|TkF(Av8N?4Lzo{BLZv$zjbr`OE;tEuN((t0&$k}wk1$9G|A6Ul-s zf@C8cQsvHW2}u=b(GgA-!F+%IdJlxc{xX^sBUx$VU*mI`H|HO_i5YT$GCD{2HGbUR z&{-o8OBfW4YL=iZ1=)=&FC8Vx`Kcho*Girs%kqrr`FUVlXBt&hf@X`s;y^lPzf{J- z%B(=nv&bkAy$p1`aiC(q$!jHojRJ_$36bXCZ#$5iJ517etbhK<`W(0)$Q_%YLaoQe zlNj!}uIK@pGh%k6rw{6zfUJc)QlXb23mvs-Jv}RVccoiS?^dex09F0fB)4YF%Afe57Z0n$E zU1km2B1|vEq)-uFaslfSQ9)%}xy-ROal_cHzsJ;|sEm5?L<&V`NV}T@;=Zh-$2UN@ z(C5P7NFzvb0PE2|`{K*T&hl$;{!4VoZ@(bbHTQUY{2O!|ya83`M;oRa}I&ad}#jX+Q-fO9uDW+x`SuW6pFXg5bRw1&@-x3GgVj}Lg4aOpC+ z1T%3RycK#FL=yQPp+NvK73{DY(Nt7fbP$+_XLREWCpCTD% zR3(*wZO3E=qP{_6^K-S0vn#UfLyTbZXjas8TjJWKmNc{2F8*w`hL@tC)SrBSYCU4* zMMMFbj1A)liAgfCxH`}w=-6W(-MMLP9(5a`ognOqZ9D&U@NyGSod%Kdg39@1Y2=%th@MC5d)v8vT?QvDywWsbF(Xj z`VwEB0&#sN{@d%aPid=gh2l?#hNA_~24wlY4Twynn!PABtVF1;Y*FN-!6^>XST0h= zobbTd3A$#ADV&cB$~Up2oonhB*7Govzk7$NiZFCHIpunAuUmGwt8`Zfgu z!*z+d(0!(W{ETAV!U9Dj$PsOc$)VWR9P>3FOP}x=EF*GjQdT9lh{Sn>B%GaI{@$$jx#B7{AXsSVC9 z>KgIomkD=!lm|TfbiiWN62@<6)bi-@Qrqu~Wol5heuXZ3%B<7kQ1ngb37YhF5tWZ^ zR)zlDc!2(+TyeBh5c5GoZw{uvQuH96di=yYsZHnLXJ6CyPBT%V@yWBnT^ZNjsbr^B zJ<+epSY0+QCx!*0W-bTC*bWrF#;mqmOto(IG24iYHANMIE5l_;EOO)$?)aCE=MKwKT z44QDIkw7reP=3NHV#;yeT0pnZ@vg-Kj*E|eE@=E^ryM~%g^aHd&}qvxSaI})LGM@6 z*U@(+hnL>gQr3ksPflb5^i|; zWnyN8A;|HZ&o5$M-cj?MMj(6b1Lm(d;WbHpX=%iV@eQ$`d&26u9cx_v|oPjphP@xCWXR_b?~86Sb+X<$}bGD;$Y}rG1v~}zi5hoG2R8GKjLJF zM)V0DODjaqIE9k^+^qB62U7EXUs@jf|A|C73mUmBi$lYE-zB;BN8zXTbvb($ZvR)?GPQ@s*O z)j3^pmyOZ=Rq><1{RD691V*i@g@~Ri_8R2o_GuO>HyAHPopV6R0eyKb!PJi1;xK1Glvxek3%THN&2`v{Ax&&fV6c7qV}&JKKZ+RAznj% zohfZ)H{dUjXTw4YA&8#KF|8jwcdaJKYHghAy^%Pj9l8GuH$`#Hx+(4D%zYJm-y`Py z(_Q_k(fVNo?P;a5uyq=dF_PB_3?DYB`&sSC~s^js$Y-q=Zo;# zE_kvKV3eDny&qAXCVW!{db%iMcKFw!w-IZ>VBtJk;X?vpd;uccFWYqcdpc^i=Qbz% z6Dq8}-eXXX1den$#i>PHVFn4Nv7bq_Jl<=Y1p8k5WxoM8&;1Jea+?*|HJ8n&6N_9@4xff75W_qAKX3O} zE{luohKdm0yBCXUC6yX7Ba6E}FUsZb8$xc7)y9RpBd}JcfI7LRPBR24dTwo7#&<$0 z#dR`ZY%$-1WpQ^<(tJ(q;99QI$pZR8r=o3;M~$W$!D<|{B0V;R!dtyG(Un}|bI!P1 zNbamKB$cC=jb=$v+lH#*$8XzSx(JN!EW;jK7+^JZAi39A&K5R%h>nA%^j zQ(g-SP*QGSEhK$(wj2bGCF)GUY4CsHRb1)=}WG`V@L-uV6v!swZ<gI#$sQfg8>Jkq z)8AV25~gcp)30(OK7Rsjw7%rsxB&vvX^hj4ZRaiLljz57cSgd}nkERBa@+%q&XIa? zAS~-)1u{mu`JP_Tn7DDJ8gG;DiKMCU!fC6vh{y;l z2jrN~Gm7|9KJWl2dZBS2TCns^)Fm@5QBTTux}`~*wjs5b%C8XKyaw7XHk!LwRBonF zDpT~UyHFzJ_uq`t?&dOApR3w($*#E%ncxPya1Tkbu6~)7;IfBPIvBn`%j>CPNu3d5 zuw7uexOyY8BL*HrbrQAHQmCI=7X0Y+D6MsZ54_cg4ptQtbV2j~6gfW3FbcbdiB6O1 zR32>%KyWZ>_M@dbt8g=&3)XsV9lh9r?bs!jHbi!DuKyQ#?yhM@0GOz^)sCphS-A;gsV zBK$d15k~ZTr~y_yPG+klddqWJ=}dqjS-^h^{N%nwxhqs|v4>c$>khbp_27ng>|SsOd6UP-=_qKcaeOt#d4h zhC9<(SySH?uEW|(fAB0H^-A)D9QV~rHBTzSawY|&1QZYMl#HcD@Hd^DQEzm-I#N0g zA!4v`ZiGiAFeB}vPbuS@M{K@f+qt-AwuW14$lGfc-JGb?Yj0_0m!y#GUqs~aG1eTe zJ6al@fEkGvNCHPoAyk}FLJRXjr>}iUy{vV_-mfjVyRo(5br)fCa(}avIBGeOPv^+g z#Jxg;?ub=X^hsRyjR$!NC;ZEgU(_3s@(_t{@R{rL81#nhDy#vtf)hR6{VRnyG)ZvV zdc;|d`>BLGUS!dY1PBi$GIFJ_xYz|NPkXB+)f;!H68cJwXWDF|J-E2BW9Q9aNV` z;i(*^YHsdO_~W?pm@?4GXQ5`6(gm`)RrG-C3e>FRV_Uc z;lr;_C2H9tA!xck2Uxu;pcP7`t$wbNSC`NYE^G^=wQYbRyntSzWi* zlWWxsQ6}stYp*5H-o)xQo_csMB1r7BOSH(hb1!9cy*K(P)%kjeB%#YQse$|)iSsnK z*B#KiNNZDf-cN!9WNY9NL(Vi{iDjhp>r0JfN5FWs%#H+MNHlXUO?t#4H@l3-8>miE zYu4soND8UT!1(x>^}@QZSZ;?Zqjg!H@we#sy87@{w;}{0SMiO#O*eez4&C$}^(xR) z$|kJ-3@O^1-S1dBBK7rt`8#>0G9R;uvJw7Zm;SfmZ-)wkt(>Z$@N6o8Q<|ZG!oz^^ z72Hh3`2~VN&ADgwQ$c5|LD9Yvm5!pY#jz~6l|-Ss_qgDfH z(mSXXpxwoR77^qvw5LvYM($vX zSgNt5z<%w$=JYEvDX_OsPX^zl5D&+VNz;&ck~&833oYj!PgmwChdbds+OSI&X^Pd} zqN5cJ%Xt%>QOLEmjY_+YKE6pDZO`$ZK~H|d?1u(pTg2P&QPE^fd0sTG9Ggo86d14$ z2zxh>L<7hKOF&v#eO2U|uh2=*d)AYd+9+6OkBGw2muybI%dc9~V_@{l zsXKl`-yCQy%#PlW=iSh7bC@qqUiCp0w!ycS_?jKsn6LBroJW_`s4~x&iGNM+LOkJM z|If#1zMzF1D5h84qtk959nN)MtVSRn^%p#Qn=Aufqk3AUwDP9|(r)c7rTfVoGHvVZ znK65^&iDE8-(Mn1Tj#Mi^^3P<>1ysTSkhK9r3?D%tbMQ+N39?>zCnF)ql3h9`9g4ua z(OAnwSpJZra>BeZxBSjOxw%9QO)7ogJ_YwO##?i7_#PXTkmk;n_?-x!k$M>PeQO(2 znML#Tgnk(%73;~OJel7nRG0vIPWtk%AHsgW^uQN?UFdT#5mmXlhJ=2RMce9!aDPfc zy8lk}h*LYXvDLfEu7%tYo_>kT3pZ8Cs1h7_0I^k8R&LzIj?RPL%dNYk<}<_CT_4bn zm6jbMn&~TgOxU$c_b@gRZa*9l`AXw`Dq%?@S!mo|OA{(K_a3yPr;NAEWmUldh9CrH zX1%;nbi3CxUd7<>Y*RVu))l|YKMyHrVA>vHY<@kjRhOECk0mu;=Xhr)S$v(DMH&Pf zh&xL!$NOA9COo)IB>iRU0)M>iuIR3Iplj;a-6ZYMw4gW##R<>s z&r~h)-}*#+p>ctcuaH||>CFW*!o?)rlmB2xC(EtO_}s@&ZZzzC)odX3g*^_>*VATw z&J7OWNopf>u^>wvt?E`g{aB{C{|{#=N!2e>x%279(j=jh{QRs8)|+)`1{rt7_$PLW zJN4&BYCt`|4|`gHIh}*0(HYG*j|Vmov&q&mZL7L``8z7SE~5r>X+>$$zN;Rr5k-0? ztj{HZkJ$^?DioQW zy%4uR2Kvv;2IyGBBO?Q=zJI^{^x3o7l23gT*YR64*zoA+Pa~16{>m!NiUF{xwJ`de0=?`TIpr;(AS7e7q&K6yLsH zA$upU2M_FEf&IaQ2bg0bPRq&3>6=&~@4vk6psQ#2HR(Ejr*>AtMm?^46zR>C(_nZO zeJVcvys-VJas0G5ZgxIKy|fj#m~5`Fa00#s<>c7Ay1L@RKlc51p+SZqu#1FmWA0q& zN^okXpm~sh`AgSTC|^>60ECdgA4a@y%0lEh3@xGv?n#|~UO25K{V zQ6JR)6%7pq%J^>u*8Q0TFcrq46VRu0%urB)}Os=L7 zP-$Jup^X%F#~Ms0i)v#TT9T8KiAj=XCb}iK+MyqD|J^u|*L-PdTcX$-UJEulOjg^K tPk!Eb1(W?F7uT${uH_%PVMk_9C^kuTeD-UbnE!x}He64m^oB*?{{TG!AkhE- literal 0 HcmV?d00001 diff --git a/dox/overview/tutorial/tutorial.md b/dox/overview/tutorial/tutorial.md new file mode 100644 index 0000000000..fda8026d25 --- /dev/null +++ b/dox/overview/tutorial/tutorial.md @@ -0,0 +1,862 @@ + Tutorial {#overview__tutorial} +======= + +@section sec1 Overview + + +This tutorial will teach you how to use Open CASCADE Technology services to model a 3D object. The purpose of this tutorial is not to describe all Open CASCADE Technology classes but to help you start thinking in terms of Open CASCADE Technology as a tool. + + +@subsection OCCT_TUTORIAL_SUB1_1 Prerequisites + +This tutorial assumes that you have experience in using and setting up C++. +From a programming standpoint, Open CASCADE Technology is designed to enhance your C++ tools with 3D modeling classes, methods and functions. The combination of all these resources will allow you to create substantial applications. + +@subsection OCCT_TUTORIAL_SUB1_2 The Model + +To illustrate the use of classes provided in the 3D geometric modeling toolkits, you will create a bottle as shown: + +@image html /overview/tutorial/images/tutorial_image001.png +@image latex /overview/tutorial/images/tutorial_image001.png + +In the tutorial we will create, step-by-step, a function that will model a bottle as shown above. You will find the complete source code of this tutorial, including the very function *MakeBottle* in the distribution of Open CASCADE Technology. The function body is provided in the file samples/qt/Tutorial/src/MakeBottle.cxx. + +@subsection OCCT_TUTORIAL_SUB1_3 Model Specifications + +We first define the bottle specifications as follows: + +| Object Parameter | Parameter Name | Parameter Value | +| :--------------: | :------------: | :-------------: | +| Bottle height | MyHeight | 70mm | +| Bottle width | MyWidth | 50mm | +| Bottle thickness | MyThickness | 30mm | + +In addition, we decide that the bottle's profile (base) will be centered on the origin of the global Cartesian coordinate system. + +@image html /overview/tutorial/images/tutorial_image002.png +@image latex /overview/tutorial/images/tutorial_image002.png + +This modeling requires four steps: + + * build the bottle's Profile + * build the bottle's Body + * build the Threading on the bottle's neck + * build the result compound + + +@section sec2 Building the Profile + +@subsection OCCT_TUTORIAL_SUB2_1 Defining Support Points + +To create the bottle's profile, you first create characteristic points with their coordinates as shown below in the (XOY) plane. These points will be the supports that define the geometry of the profile. + +@image html /overview/tutorial/images/tutorial_image003.png +@image latex /overview/tutorial/images/tutorial_image003.png + +There are two classes to describe a 3D Cartesian point from its X, Y and Z coordinates in Open CASCADE Technology: + + * the primitive geometric *gp_Pnt* class + * the transient *Geom_CartesianPoint* class manipulated by handle + +A handle is a type of smart pointer that provides automatic memory management. +To choose the best class for this application, consider the following: + + * *gp_Pnt* is manipulated by value. Like all objects of its kind, it will have a limited lifetime. + * *Geom_CartesianPoint* is manipulated by handle and may have multiple references and a long lifetime. + +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} + 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} +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. + +@image html /overview/tutorial/images/tutorial_image004.png +@image latex /overview/tutorial/images/tutorial_image004.png + +To create such entities, you need a specific data structure, which implements 3D geometric objects. This can be found in the Geom package of Open CASCADE Technology. +In Open CASCADE Technology a package is a group of classes providing related functionality. The classes have names that start with the name of a package they belong to. For example, *Geom_Line* and *Geom_Circle* classes belong to the *Geom* package. The *Geom* package implements 3D geometric objects: elementary curves and surfaces are provided as well as more complex ones (such as *Bezier* and *BSpline*). +However, the *Geom* package provides only the data structure of geometric entities. You can directly instantiate classes belonging to *Geom*, but it is easier to compute elementary curves and surfaces by using the *GC* package. +This is because the *GC* provides two algorithm classes which are exactly what is required for our profile: + + * Class *GC_MakeSegment* to create a segment. One of its constructors allows you to define a segment by two end points P1 and P2 + * Class *GC_MakeArcOfCircle* to create an arc of a circle. A useful constructor creates an arc from two end points P1 and P3 and going through P2. + +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} + 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} + GC_MakeSegment mkSeg (aPnt1, aPnt2); + Handle(Geom_TrimmedCurve) aSegment1; + if(mkSegment.IsDone()){ + aSegment1 = mkSeg.Value(); + } + else { + // handle error + } +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +@subsection OCCT_TUTORIAL_SUB2_3 Profile: Defining the Topology + + +You have created the support geometry of one part of the profile but these curves are independent with no relations between each other. +To simplify the modeling, it would be right to manipulate these three curves as a single entity. +This can be done by using the topological data structure of Open CASCADE Technology defined in the *TopoDS* package: it defines relationships between geometric entities which can be linked together to represent complex shapes. +Each object of the *TopoDS* package, inheriting from the *TopoDS_Shape* class, describes a topological shape as described below: + +| Shape | Open CASCADE Technology Class | Description | +| :-------- | :---------------------------- | :------------------------------------------------------------ | +| Vertex | TopoDS_Vertex | Zero dimensional shape corresponding to a point in geometry. | +| Edge | TopoDS_Edge | One-dimensional shape corresponding to a curve and bounded by a vertex at each extremity.| +| Wire | TopoDS_Wire | Sequence of edges connected by vertices. | +| Face | TopoDS_Face | Part of a surface bounded by a closed wire(s). | +| Shell | TopoDS_Shell | Set of faces connected by edges. | +| Solid | TopoDS_Solid | Part of 3D space bounded by Shells. | +| CompSolid | TopoDS_CompSolid | Set of solids connected by their faces. | +| Compound | TopoDS_Compound | Set of any other shapes described above. | + +Referring to the previous table, to build the profile, you will create: + + * Three edges out of the previously computed curves. + * One wire with these edges. + +@image html /overview/tutorial/images/tutorial_image005.png +@image latex /overview/tutorial/images/tutorial_image005.png + +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} + 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} + 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: + + * directly from one to four edges + * by adding other wire(s) or edge(s) to an existing wire (this is explained later in this tutorial) + +When building a wire from less than four edges, as in the present case, you can use the constructor directly as follows: + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp} + TopoDS_Wire aWire = BRepBuilderAPI_MakeWire(aEdge1, aEdge2, aEdge3); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +@subsection OCCT_TUTORIAL_SUB2_4 Profile: Completing the Profile + + +Once the first part of your wire is created you need to compute the complete profile. A simple way to do this is to: + + * compute a new wire by reflecting the existing one. + * add the reflected wire to the initial one. + +@image html /overview/tutorial/images/tutorial_image006.png +@image latex /overview/tutorial/images/tutorial_image006.png + +To apply a transformation on shapes (including wires), you first need to define the properties of a 3D geometric transformation by using the gp_Trsf class. This transformation can be a translation, a rotation, a scale, a reflection, or a combination of these. +In our case, we need to define a reflection with respect to the X axis of the global coordinate system. An axis, defined with the gp_Ax1 class, is built out of a point and has a direction (3D unitary vector). There are two ways to define this axis. +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} + 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} + 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: + + * by defining a transformation matrix by all its values + * by using the appropriate methods corresponding to the required transformation (SetTranslation for a translation, SetMirror for a reflection, etc.): the matrix is automatically computed. + +Since the simplest approach is always the best one, you should use the SetMirror method with the axis as the center of symmetry. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.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} + 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} + 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} + 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} + BRepBuilderAPI_MakeWire mkWire; + mkWire.Add(aWire); + mkWire.Add(aMirroredWire); + TopoDS_Wire myWireProfile = mkWire.Wire(); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +@section sec3 Building the Body + + +@subsection OCCT_TUTORIAL_SUB3_1 Prism the Profile + + +To compute the main body of the bottle, you need to create a solid shape. The simplest way is to use the previously created profile and to sweep it along a direction. The *Prism* functionality of Open CASCADE Technology is the most appropriate for that task. It accepts a shape and a direction as input and generates a new shape according to the following rules: + +| Shape | Generates | +| :----- | :----------------- | +| Vertex | Edge | +| Edge | Face | +| Wire | Shell | +| Face | Solid | +| Shell | Compound of Solids | + +@image html /overview/tutorial/images/tutorial_image007.png +@image latex /overview/tutorial/images/tutorial_image007.png + +Your current profile is a wire. Referring to the Shape/Generates table, you need to compute a face out of its wire to generate a solid. +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} + 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: + + * the basis shape to sweep; + * a vector for a finite prism or a direction for finite and infinite prisms. + +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} + 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} + TopoDS_Shape myBody = BRepPrimAPI_MakePrism(myFaceProfile, aPrismVec); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +@subsection OCCT_TUTORIAL_SUB3_2 Applying Fillets + + +The edges of the bottle's body are very sharp. To replace them by rounded faces, you use the *Fillet* functionality of Open CASCADE Technology. +For our purposes, we will specify that fillets must be: + + * applied on all edges of the shape + * have a radius of *myThickness* / 12 + +@image html /overview/tutorial/images/tutorial_image008.png +@image latex /overview/tutorial/images/tutorial_image008.png + +To apply fillets on the edges of a shape, you use the *BRepFilletAPI_MakeFillet* class. This class is normally used as follows: + + * Specify the shape to be filleted in the *BRepFilletAPI_MakeFillet* constructor. + * 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} +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: + + * the shape to explore + * the type of sub-shapes to be found. This information is given with the *TopAbs_ShapeEnum* enumeration. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp} +TopExp_Explorer anEdgeExplorer(myBody, TopAbs_EDGE); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +An explorer is usually applied in a loop by using its three main methods: + + * *More()* to know if there are more sub-shapes to explore. + * *Current()* to know which is the currently explored sub-shape (used only if the *More()* method returns true). + * *Next()* to move onto the next sub-shape to explore. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.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} + mkFillet.Add(myThickness / 12., anEdge); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Once this is done, you perform the last step of the procedure by asking for the filleted shape. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp} + myBody = mkFillet.Shape(); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +@subsection OCCT_TUTORIAL_SUB3_3 Adding the Neck + + +To add a neck to the bottle, you will create a cylinder and fuse it to the body. The cylinder is to be positioned on the top face of the body with a radius of *myThickness* / 4. and a height of *myHeight* / 10. + +@image html /overview/tutorial/images/tutorial_image009.png +@image latex /overview/tutorial/images/tutorial_image009.png + +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} + 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} + 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} + myBody = BRepAlgoAPI_Fuse(myBody, myNeck); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +@subsection OCCT_TUTORIAL_SUB3_4 Creating a Hollowed Solid + + +Since a real bottle is used to contain liquid material, you should now create a hollowed solid from the bottle's top face. +In Open CASCADE Technology, a hollowed solid is called a *Thick* *Solid* and is internally computed as follows: + + * Remove one or more faces from the initial solid to obtain the first wall W1 of the hollowed solid. + * Create a parallel wall W2 from W1 at a distance D. If D is positive, W2 will be outside the initial solid, otherwise it will be inside. + * Compute a solid from the two walls W1 and W2. + +@image html /overview/tutorial/images/tutorial_image010.png +@image latex /overview/tutorial/images/tutorial_image010.png + +To compute a thick solid, you create an instance of the *BRepOffsetAPI_MakeThickSolid* class by giving the following information: + + * The shape, which must be hollowed. + * The tolerance used for the computation (tolerance criterion for coincidence in generated shapes). + * The thickness between the two walls W1 and W2 (distance D). + * The face(s) to be removed from the original solid to compute the first wall W1. + +The challenging part in this procedure is to find the face to remove from your shape - the top face of the neck, which: + + * has a plane (planar surface) as underlying geometry; + * is the highest face (in Z coordinates) of the bottle. + +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} + 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: + + * *Surface* to access the surface of a face; + * *Curve* to access the 3D curve of an edge; + * *Point* to access the 3D point of a vertex. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.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: + + * *DynamicType* to know the real type of the object + * *IsKind* to know if the object inherits from one particular type + +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} + 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} + 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} + 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} + 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} + 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* constructor: + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp} + MyBody = BRepOffsetAPI_MakeThickSolid(myBody, facesToRemove, -myThickness / 50, 1.e-3); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +@section sec4 Building the Threading + + +@subsection OCCT_TUTORIAL_SUB4_1 Creating Surfaces + + +Up to now, you have learned how to create edges out of 3D curves. +You will now learn how to create an edge out of a 2D curve and a surface. +To learn this aspect of Open CASCADE Technology, you will build helicoidal profiles out of 2D curves on cylindrical surfaces. The theory is more complex than in previous steps, but applying it is very simple. +As a first step, you compute these cylindrical surfaces. You are already familiar with curves of the *Geom* package. Now you can create a cylindrical surface (*Geom_CylindricalSurface*) using: + + * a coordinate system; + * a radius. + +Using the same coordinate system *neckAx2* used to position the neck, you create two cylindrical surfaces *Geom_CylindricalSurface* with the following radii: + +@image html /overview/tutorial/images/tutorial_image011.png +@image latex /overview/tutorial/images/tutorial_image011.png + +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} + 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 + + +To create the neck of the bottle, you made a solid cylinder based on a cylindrical surface. You will create the profile of threading by creating 2D curves on such a surface. +All geometries defined in the *Geom* package are parameterized. This means that each curve or surface from Geom is computed with a parametric equation. +A *Geom_CylindricalSurface* surface is defined with the following parametric equation: + +P(U, V) = O + R * (cos(U) * xDir + sin(U) * yDir) + V * zDir, where : + + * P is the point defined by parameters (U, V). + * O, *Dir, yDir and zDir are respectively the origin, the X direction, Y direction and Z direction of the cylindrical surface local coordinate system. + * R is the radius of the cylindrical surface. + * U range is [0, 2PI] and V is infinite. + +@image html /overview/tutorial/images/tutorial_image012.png +@image latex /overview/tutorial/images/tutorial_image012.png + +The advantage of having such parameterized geometries is that you can compute, for any (U, V) parameters of the surface: + + * the 3D point; + * the derivative vectors of order 1, 2 to N at this point. + +There is another advantage of these parametric equations: you can consider a surface as a 2D parametric space defined with a (U, V) coordinate system. For example, consider the parametric ranges of the neck's surface: + +@image html /overview/tutorial/images/tutorial_image013.png +@image latex /overview/tutorial/images/tutorial_image013.png + +Suppose that you create a 2D line on this parametric (U, V) space and compute its 3D parametric curve. Depending on the line definition, results are as follows: + +| Case | Parametric Equation | Parametric Curve | +| :------------ | :----------------------------------------------------------- | :---------------------------------------------------------------------------- | +| U = 0 | P(V) = O + V * zDir | Line parallel to the Z direction | +| V = 0 | P(U) = O + R * (cos(U) * xDir + sin(U) * yDir) | Circle parallel to the (O, X, Y) plane | +| U != 0 V != 0 | P(U, V) = O + R * (cos(U) * xDir + sin(U) * yDir) + V * zDir | Helicoidal curve describing the evolution of height and angle on the cylinder | + +The helicoidal curve type is exactly what you need. On the neck's surface, the evolution laws of this curve will be: + + * In V parameter: between 0 and myHeighNeck for the height description + * In U parameter: between 0 and 2PI for the angle description. But, since a cylindrical surface is U periodic, you can decide to extend this angle evolution to 4PI as shown in the following drawing: + +@image html /overview/tutorial/images/tutorial_image014.png +@image latex /overview/tutorial/images/tutorial_image014.png + +In this (U, V) parametric space, you will create a local (X, Y) coordinate system to position the curves to be created. This coordinate system will be defined with: + + * A center located in the middle of the neck's cylinder parametric space at (2*PI, myNeckHeight / 2) in U, V coordinates. + * A X direction defined with the (2*PI, myNeckHeight/4) vector in U, V coordinates, so that the curves occupy half of the neck's surfaces. + +@image html /overview/tutorial/images/tutorial_image015.png +@image latex /overview/tutorial/images/tutorial_image015.png + +To use 2D primitive geometry types of Open CASCADE Technology for defining a point and a coordinate system, you will once again instantiate classes from gp: + + * To define a 2D point from its X and Y coordinates, use the *gp_Pnt2d* class. + * 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} + 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). + +@image html /overview/tutorial/images/tutorial_image016.png +@image latex /overview/tutorial/images/tutorial_image016.png + +You have already used the *Geom* package to define 3D geometric entities. For 2D, you will use the *Geom2d* package. As for *Geom*, all geometries are parameterized. For example, a *Geom2d_Ellipse* ellipse is defined from: + + * a coordinate system whose origin is the ellipse center; + * a major radius on the major axis defined by the X direction of the coordinate system; + * a minor radius on the minor axis defined by the Y direction of the coordinate system. + +Supposing that: + + * Both ellipses have the same major radius of 2*PI, + * Minor radius of the first ellipse is myNeckHeight / 10, + * And the minor radius value of the second ellipse is a fourth of the first one, + +Your ellipses are defined as follows: + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.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} + 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} + 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} + Handle(Geom2d_TrimmedCurve) aSegment = GCE2d_MakeSegment(anEllipsePnt1, anEllipsePnt2); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +@subsection OCCT_TUTORIAL_SUB4_3 Building Edges and Wires + + +As you did when creating the base profile of the bottle, you can now: + + * compute the edges of the neck's threading. + * compute two wires out of these edges. + +@image html /overview/tutorial/images/tutorial_image017.png +@image latex /overview/tutorial/images/tutorial_image017.png + +Previously, you have built: + + * two cylindrical surfaces of the threading + * three 2D curves defining the base geometry of the threading + +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} + 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} + 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} + BRepLib::BuildCurves3d(threadingWire1); + BRepLib::BuildCurves3d(threadingWire2); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +@subsection OCCT_TUTORIAL_SUB4_4 Creating Threading + + +You have computed the wires of the threading. The threading will be a solid shape, so you must now compute the faces of the wires, the faces allowing you to join the wires, the shell out of these faces and then the solid itself. This can be a lengthy operation. +There are always faster ways to build a solid when the base topology is defined. You would like to create a solid out of two wires. Open CASCADE Technology provides a quick way to do this by building a loft: a shell or a solid passing through a set of wires in a given sequence. +The loft function is implemented in the *BRepOffsetAPI_ThruSections* class, which you use as follows: + +@image html /overview/tutorial/images/tutorial_image018.png +@image latex /overview/tutorial/images/tutorial_image018.png + + * Initialize the algorithm by creating an instance of the class. The first parameter of this constructor must be specified if you want to create a solid. By default, *BRepOffsetAPI_ThruSections* builds a shell. + * Add the successive wires using the AddWire method. + * 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} + 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 + + +You are almost done building the bottle. Use the *TopoDS_Compound* and *BRep_Builder* classes to build single shape from *myBody* and *myThreading*: + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.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: + +@image html /overview/tutorial/images/tutorial_image019.png +@image latex /overview/tutorial/images/tutorial_image019.png + +We hope that this tutorial has provided you with a feel for the industrial strength power of Open CASCADE Technology. +If you want to know more and develop major projects using Open CASCADE Technology, we invite you to study our training, support, and consulting services on our site at http://www.opencascade.org/support. Our professional services can maximize the power of your Open CASCADE Technology applications. + + +@section sec6 Appendix + + +Complete definition of MakeBottle function (defined in the file src/MakeBottle.cxx of the Tutorial): + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp} + TopoDS_Shape MakeBottle(const Standard_Real myWidth, const Standard_Real myHeight, + const Standard_Real myThickness) + { + // Profile : Define Support Points + 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); + + // Profile : Define the Geometry + Handle(Geom_TrimmedCurve) anArcOfCircle = GC_MakeArcOfCircle(aPnt2,aPnt3,aPnt4); + Handle(Geom_TrimmedCurve) aSegment1 = GC_MakeSegment(aPnt1, aPnt2); + Handle(Geom_TrimmedCurve) aSegment2 = GC_MakeSegment(aPnt4, aPnt5); + + // Profile : Define the Topology + TopoDS_Edge anEdge1 = BRepBuilderAPI_MakeEdge(aSegment1); + TopoDS_Edge anEdge2 = BRepBuilderAPI_MakeEdge(anArcOfCircle); + TopoDS_Edge anEdge3 = BRepBuilderAPI_MakeEdge(aSegment2); + TopoDS_Wire aWire = BRepBuilderAPI_MakeWire(anEdge1, anEdge2, anEdge3); + + // Complete Profile + gp_Ax1 xAxis = gp::OX(); + gp_Trsf aTrsf; + + aTrsf.SetMirror(xAxis); + BRepBuilderAPI_Transform aBRepTrsf(aWire, aTrsf); + TopoDS_Shape aMirroredShape = aBRepTrsf.Shape(); + TopoDS_Wire aMirroredWire = TopoDS::Wire(aMirroredShape); + + BRepBuilderAPI_MakeWire mkWire; + mkWire.Add(aWire); + mkWire.Add(aMirroredWire); + TopoDS_Wire myWireProfile = mkWire.Wire(); + + // Body : Prism the Profile + TopoDS_Face myFaceProfile = BRepBuilderAPI_MakeFace(myWireProfile); + gp_Vec aPrismVec(0, 0, myHeight); + TopoDS_Shape myBody = BRepPrimAPI_MakePrism(myFaceProfile, aPrismVec); + + // Body : Apply Fillets + BRepFilletAPI_MakeFillet mkFillet(myBody); + TopExp_Explorer anEdgeExplorer(myBody, TopAbs_EDGE); + while(anEdgeExplorer.More()){ + TopoDS_Edge anEdge = TopoDS::Edge(anEdgeExplorer.Current()); + //Add edge to fillet algorithm + mkFillet.Add(myThickness / 12., anEdge); + anEdgeExplorer.Next(); + } + + myBody = mkFillet.Shape(); + + // Body : Add the Neck + gp_Pnt neckLocation(0, 0, myHeight); + gp_Dir neckAxis = gp::DZ(); + gp_Ax2 neckAx2(neckLocation, neckAxis); + + Standard_Real myNeckRadius = myThickness / 4.; + Standard_Real myNeckHeight = myHeight / 10.; + + BRepPrimAPI_MakeCylinder MKCylinder(neckAx2, myNeckRadius, myNeckHeight); + TopoDS_Shape myNeck = MKCylinder.Shape(); + + myBody = BRepAlgoAPI_Fuse(myBody, myNeck); + + // Body : Create a Hollowed Solid + TopoDS_Face faceToRemove; + Standard_Real zMax = -1; + + for(TopExp_Explorer aFaceExplorer(myBody, TopAbs_FACE); aFaceExplorer.More(); aFaceExplorer.Next()){ + TopoDS_Face aFace = TopoDS::Face(aFaceExplorer.Current()); + // Check if is the top face of the bottle's neck + Handle(Geom_Surface) aSurface = BRep_Tool::Surface(aFace); + if(aSurface->DynamicType() == STANDARD_TYPE(Geom_Plane)){ + Handle(Geom_Plane) aPlane = Handle(Geom_Plane)::DownCast(aSurface); + gp_Pnt aPnt = aPlane->Location(); + Standard_Real aZ = aPnt.Z(); + if(aZ > zMax){ + zMax = aZ; + faceToRemove = aFace; + } + } + } + + TopTools_ListOfShape facesToRemove; + facesToRemove.Append(faceToRemove); + myBody = BRepOffsetAPI_MakeThickSolid(myBody, facesToRemove, -myThickness / 50, 1.e-3); + // Threading : Create Surfaces + Handle(Geom_CylindricalSurface) aCyl1 = new Geom_CylindricalSurface(neckAx2, myNeckRadius * 0.99); + Handle(Geom_CylindricalSurface) aCyl2 = new Geom_CylindricalSurface(neckAx2, myNeckRadius * 1.05); + + // Threading : Define 2D Curves + gp_Pnt2d aPnt(2. * M_PI, myNeckHeight / 2.); + gp_Dir2d aDir(2. * M_PI, myNeckHeight / 4.); + gp_Ax2d anAx2d(aPnt, aDir); + + 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); + Handle(Geom2d_TrimmedCurve) anArc1 = new Geom2d_TrimmedCurve(anEllipse1, 0, M_PI); + Handle(Geom2d_TrimmedCurve) anArc2 = new Geom2d_TrimmedCurve(anEllipse2, 0, M_PI); + gp_Pnt2d anEllipsePnt1 = anEllipse1->Value(0); + gp_Pnt2d anEllipsePnt2 = anEllipse1->Value(M_PI); + + Handle(Geom2d_TrimmedCurve) aSegment = GCE2d_MakeSegment(anEllipsePnt1, anEllipsePnt2); + // Threading : Build Edges and Wires + 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); + TopoDS_Wire threadingWire1 = BRepBuilderAPI_MakeWire(anEdge1OnSurf1, anEdge2OnSurf1); + TopoDS_Wire threadingWire2 = BRepBuilderAPI_MakeWire(anEdge1OnSurf2, anEdge2OnSurf2); + BRepLib::BuildCurves3d(threadingWire1); + BRepLib::BuildCurves3d(threadingWire2); + + // Create Threading + BRepOffsetAPI_ThruSections aTool(Standard_True); + aTool.AddWire(threadingWire1); + aTool.AddWire(threadingWire2); + aTool.CheckCompatibility(Standard_False); + + TopoDS_Shape myThreading = aTool.Shape(); + + // Building the Resulting Compound + TopoDS_Compound aRes; + BRep_Builder aBuilder; + aBuilder.MakeCompound (aRes); + aBuilder.Add (aRes, myBody); + aBuilder.Add (aRes, myThreading); + + return aRes; + } +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~