diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md index 8963039..83330ea 100644 --- a/README.md +++ b/README.md @@ -1,92 +1,33 @@ # Kinematic Player +**Lecteur 3D pour l'analyse cinématique des mécanismes**
+**3D player for kinematic analysis **
+Ce lecteur 3D est un environnement léger et spécifique pour l'analyse cinématique d'un mécanisme en mouvement ( [vidéo de +présentation](https://nuage03.apps.education.fr/index.php/s/HiLe7JwgMGDnkaM) ). -## Getting started +Mécanismes : +* Baton de colle +* Système de clampage d'un automate de prélévement sangin (Hémomixer) +* Pince Schrader +* Serrure biométrique -To make it easy for you to get started with GitLab, here's a list of recommended next steps. +![Screenshot](img/screenshot-01.jpg) -Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)! +Les fonctionalités du lecteur sont : +* l'identification des mobilités cinématiques par l'animation du mécanisme, +* l'identification des classes d'équivalence par la colorisation des composants, +* l'identification des liaisons normalisées par la visualisation des repères locaux (repère pièce), +* l'exploration par la mise en transparence des composants et l'éclatement du mécanisme, +* une entrée dans le mécanisme par la nomenclature. -## Add your files +Les fichiers sources sont dans le groupe Blender-Edutech de Gitlab : https://gitlab.com/blender-edutech/kinematic-player -- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files -- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command: +Les binaires (Game Engine Runtime) sont hébergés sur [apps.education.fr](https://nuage03.apps.education.fr/index.php/s/g75WfrdXM4Gx35s). -``` -cd existing_repo -git remote add origin https://gitlab.com/blender-edutech/kinematic-player.git -git branch -M main -git push -uf origin main -``` +Ce lecteur fait partie du projet open source [Blender-EduTech (Blender/UPBGE pour l'Enseignement Technologique)](https://gitlab.com/blender-edutech). -## Integrate with your tools +L'environnement de développement est basé sur : la plateforme de modélisation et d'animation 3D Blender ( https://blender.org ), le langage Python +(https://python.org ) et le moteur de jeu 3D UPGE ( https://upbge.org ). -- [ ] [Set up project integrations](https://gitlab.com/blender-edutech/kinematic-player/-/settings/integrations) - -## Collaborate with your team - -- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/) -- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html) -- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically) -- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/) -- [ ] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html) - -## Test and Deploy - -Use the built-in continuous integration in GitLab. - -- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html) -- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/) -- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html) -- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/) -- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html) - -*** - -# Editing this README - -When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template. - -## Suggestions for a good README -Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information. - -## Name -Choose a self-explaining name for your project. - -## Description -Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors. - -## Badges -On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge. - -## Visuals -Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method. - -## Installation -Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection. - -## Usage -Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README. - -## Support -Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc. - -## Roadmap -If you have ideas for releases in the future, it is a good idea to list them in the README. - -## Contributing -State if you are open to contributions and what your requirements are for accepting them. - -For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self. - -You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser. - -## Authors and acknowledgment -Show your appreciation to those who have contributed to the project. - -## License -For open source projects, say how it is licensed. - -## Project status -If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers. +Les applications pédagogique se trouvent dans le [dépôt des documents pédagogiques du projet Blender-EduTech](https://gitlab.com/blender-edutech/blender-edutech-oer-french) . diff --git a/asset/icons/axes-fond.FCStd b/asset/icons/axes-fond.FCStd new file mode 100644 index 0000000..7f16c8b Binary files /dev/null and b/asset/icons/axes-fond.FCStd differ diff --git a/asset/icons/axes-fond.obj b/asset/icons/axes-fond.obj new file mode 100644 index 0000000..97d58d5 --- /dev/null +++ b/asset/icons/axes-fond.obj @@ -0,0 +1,495 @@ +# FreeCAD v0.19 build20655 (Git) Arch module +# http://www.freecadweb.org +mtllib axes-fond.mtl +o Body +usemtl color_cccccc +v -20.0 190.0 -10.0 +v -29.27051 188.531693 -10.0 +v -20.0 190.0 10.0 +v -29.27051 188.531693 10.0 +v -37.633556 184.270508 -10.0 +v -37.633556 184.270508 10.0 +v -44.270512 177.63356 -10.0 +v -44.270512 177.63356 10.0 +v -48.531696 169.270508 -10.0 +v -48.531696 169.270508 10.0 +v -50.0 160.0 -10.0 +v -50.0 160.0 10.0 +v 160.0 190.0 -10.0 +v 160.0 190.0 10.0 +v -50.0 -20.0 -10.0 +v -50.0 -20.0 10.0 +v 167.0 0.0 -10.0 +v 169.270508 -48.531693 -10.0 +v 160.0 -50.0 -10.0 +v 177.63356 -44.270508 -10.0 +v 184.270508 -37.633556 -10.0 +v 188.531693 -29.27051 -10.0 +v 190.0 -20.0 -10.0 +v 124.0 -25.0 -10.0 +v 20.0 -15.0 -10.0 +v 124.0 -15.0 -10.0 +v 13.79991 -20.846163 -10.0 +v -20.0 -50.0 -10.0 +v 5.996408 -24.27021 -10.0 +v 190.0 160.0 -10.0 +v 124.0 25.0 -10.0 +v -2.503815 -24.874302 -10.0 +v -10.713121 -22.588249 -10.0 +v -29.27051 -48.531696 -10.0 +v 20.0 15.0 -10.0 +v 124.0 15.0 -10.0 +v 18.493723 16.822075 -10.0 +v -17.67767 -17.67767 -10.0 +v -37.633556 -44.270512 -10.0 +v -44.270508 -37.633556 -10.0 +v -48.531696 -29.27051 -10.0 +v -22.588249 -10.713121 -10.0 +v 169.270508 188.531693 -10.0 +v 177.63356 184.270508 -10.0 +v 184.270508 177.63356 -10.0 +v -24.874302 -2.503815 -10.0 +v 188.531693 169.270508 -10.0 +v -24.27021 5.996408 -10.0 +v -20.846163 13.79991 -10.0 +v 25.0 124.0 -10.0 +v 16.822075 18.493723 -10.0 +v 15.0 20.0 -10.0 +v 15.0 124.0 -10.0 +v -25.0 124.0 -10.0 +v -15.0 124.0 -10.0 +v -15.0 20.0 -10.0 +v 0.105175 167.0 -10.0 +v 169.270508 -48.531693 10.0 +v 167.0 0.0 10.0 +v 160.0 -50.0 10.0 +v 177.63356 -44.270508 10.0 +v 184.270508 -37.633556 10.0 +v 188.531693 -29.27051 10.0 +v 190.0 -20.0 10.0 +v 124.0 -25.0 10.0 +v 124.0 -15.0 10.0 +v 20.0 -15.0 10.0 +v 13.79991 -20.846163 10.0 +v 5.996408 -24.27021 10.0 +v -20.0 -50.0 10.0 +v 190.0 160.0 10.0 +v 124.0 25.0 10.0 +v -2.503815 -24.874302 10.0 +v -10.713121 -22.588249 10.0 +v -29.27051 -48.531696 10.0 +v 20.0 15.0 10.0 +v 124.0 15.0 10.0 +v 18.493723 16.822075 10.0 +v -17.67767 -17.67767 10.0 +v -37.633556 -44.270512 10.0 +v -44.270508 -37.633556 10.0 +v -48.531696 -29.27051 10.0 +v -22.588249 -10.713121 10.0 +v 177.63356 184.270508 10.0 +v 169.270508 188.531693 10.0 +v 184.270508 177.63356 10.0 +v -24.874302 -2.503815 10.0 +v 188.531693 169.270508 10.0 +v -24.27021 5.996408 10.0 +v -20.846163 13.79991 10.0 +v 25.0 124.0 10.0 +v 16.822075 18.493723 10.0 +v 15.0 20.0 10.0 +v 15.0 124.0 10.0 +v -25.0 124.0 10.0 +v -15.0 124.0 10.0 +v -15.0 20.0 10.0 +v 0.105175 167.0 10.0 +vn -0.1564347892999649 0.9876883029937744 0.0 +vn -0.1564347892999649 0.9876883029937744 0.0 +vn -0.45399045944213867 0.8910065293312073 0.0 +vn -0.45399045944213867 0.8910065293312073 0.0 +vn -0.7071064114570618 0.7071071863174438 0.0 +vn -0.7071064114570618 0.7071071863174438 0.0 +vn -0.8910066485404968 0.45399022102355957 0.0 +vn -0.8910066485404968 0.45399022102355957 0.0 +vn -0.9876883625984192 0.15643441677093506 0.0 +vn -0.9876883625984192 0.15643441677093506 0.0 +vn 0.0 1.0 0.0 +vn 0.0 1.0 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 -0.0 0.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn -0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 -0.0 1.0 +vn 0.0 -0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 -0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 -0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 -0.0 1.0 +vn 0.0 -0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 -0.0 1.0 +vn 0.0 -0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.9876883029937744 0.1564348042011261 -0.0 +vn 0.9876883029937744 0.1564348042011261 0.0 +vn 0.8910066485404968 0.45399022102355957 0.0 +vn 0.8910066485404968 0.45399022102355957 -0.0 +vn 0.7071068286895752 0.7071068286895752 0.0 +vn 0.45399022102355957 0.8910066485404968 0.0 +vn 0.7071068286895752 0.7071068286895752 -0.0 +vn 0.45399022102355957 0.8910066485404968 0.0 +vn 0.1564348042011261 0.9876883029937744 0.0 +vn 0.1564348042011261 0.9876883029937744 -0.0 +vn -0.9876883625984192 -0.15643438696861267 0.0 +vn -0.9876883625984192 -0.15643438696861267 0.0 +vn -0.891006350517273 -0.45399078726768494 0.0 +vn -0.891006350517273 -0.45399078726768494 0.0 +vn -0.7071070075035095 -0.7071065902709961 0.0 +vn -0.7071070075035095 -0.7071065902709961 0.0 +vn -0.45399045944213867 -0.8910065293312073 0.0 +vn -0.45399045944213867 -0.8910065293312073 0.0 +vn -0.15643438696861267 -0.9876883625984192 0.0 +vn -0.15643438696861267 -0.9876883625984192 0.0 +vn 1.0 0.0 0.0 +vn 1.0 0.0 0.0 +vn 0.0 -1.0 0.0 +vn 0.0 -1.0 0.0 +vn 0.1564348042011261 -0.9876883029937744 0.0 +vn 0.1564348042011261 -0.9876883029937744 0.0 +vn 0.45399022102355957 -0.8910066485404968 0.0 +vn 0.7071069478988647 -0.7071065902709961 0.0 +vn 0.45399022102355957 -0.8910066485404968 0.0 +vn 0.7071069478988647 -0.7071065902709961 0.0 +vn 0.8910065293312073 -0.45399045944213867 0.0 +vn 0.9876883029937744 -0.1564347892999649 0.0 +vn 0.8910065293312073 -0.45399045944213867 0.0 +vn 0.9876883029937744 -0.1564347892999649 0.0 +vn -0.8654255270957947 -0.50103759765625 0.0 +vn -0.8654255270957947 -0.50103759765625 0.0 +vn 0.0 1.0 -0.0 +vn 0.0 1.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 -0.0 0.0 +vn -0.7707363963127136 -0.6371541619300842 -0.0 +vn -0.7707363963127136 -0.6371541619300842 0.0 +vn -0.7071067690849304 -0.7071067690849304 0.0 +vn -0.7071067690849304 -0.7071067690849304 -0.0 +vn -0.6371541619300842 -0.7707363963127136 0.0 +vn -0.6371541619300842 -0.7707363963127136 -0.0 +vn 0.0 -1.0 0.0 +vn 0.0 -1.0 0.0 +vn 1.0 0.0 0.0 +vn 1.0 -0.0 0.0 +vn -0.5026204586029053 -0.8645071387290955 0.0 +vn -0.5026204586029053 -0.8645071387290955 0.0 +vn -0.5026204586029053 0.8645071387290955 0.0 +vn -0.5026204586029053 0.8645071387290955 0.0 +vn 1.0 0.0 0.0 +vn 1.0 -0.0 0.0 +vn 0.0 1.0 -0.0 +vn 0.0 1.0 0.0 +vn 0.7275681495666504 -0.6860354542732239 0.0 +vn 0.7275681495666504 -0.6860354542732239 0.0 +vn 0.9157252311706543 -0.4018051326274872 0.0 +vn 0.9157252311706543 -0.4018051326274872 0.0 +vn 0.9974842071533203 -0.0708889365196228 0.0 +vn 0.963345468044281 0.26826369762420654 -0.0 +vn 0.9974842071533203 -0.0708889365196228 0.0 +vn 0.963345468044281 0.26826369762420654 0.0 +vn 0.8172757625579834 0.5762466788291931 0.0 +vn 0.8172757625579834 0.5762466788291931 0.0 +vn 0.5762466788291931 0.8172757625579834 0.0 +vn 0.26826369762420654 0.963345468044281 -0.0 +vn 0.5762466788291931 0.8172757625579834 0.0 +vn 0.26826369762420654 0.963345468044281 0.0 +vn -0.0708889365196228 0.9974842071533203 0.0 +vn -0.0708889365196228 0.9974842071533203 0.0 +vn -0.4018051326274872 0.9157252311706543 0.0 +vn -0.6860354542732239 0.7275681495666504 0.0 +vn -0.4018051326274872 0.9157252311706543 0.0 +vn -0.6860354542732239 0.7275681495666504 0.0 +vn 1.0 0.0 0.0 +vn 1.0 0.0 0.0 +vn 0.0 1.0 0.0 +vn 0.0 1.0 -0.0 +vn 0.8635879158973694 -0.5041983127593994 0.0 +vn 0.8635879158973694 -0.5041983127593994 0.0 +f 1//1 2//1 3//1 +f 3//2 2//2 4//2 +f 4//3 5//3 6//3 +f 2//4 5//4 4//4 +f 6//5 7//5 8//5 +f 5//6 7//6 6//6 +f 8//7 9//7 10//7 +f 7//8 9//8 8//8 +f 10//9 11//9 12//9 +f 9//10 11//10 10//10 +f 13//11 1//11 3//11 +f 13//12 3//12 14//12 +f 11//13 15//13 12//13 +f 12//14 15//14 16//14 +f 17//15 18//15 19//15 +f 17//16 20//16 18//16 +f 17//17 21//17 20//17 +f 17//18 22//18 21//18 +f 17//19 23//19 22//19 +f 24//20 17//20 19//20 +f 25//21 26//21 24//21 +f 27//22 25//22 24//22 +f 28//23 29//23 27//23 +f 28//24 24//24 19//24 +f 28//25 27//25 24//25 +f 30//26 17//26 31//26 +f 30//27 23//27 17//27 +f 32//28 29//28 28//28 +f 33//29 28//29 34//29 +f 33//30 32//30 28//30 +f 35//31 31//31 36//31 +f 37//32 31//32 35//32 +f 38//33 34//33 39//33 +f 38//34 33//34 34//34 +f 40//35 38//35 39//35 +f 41//36 38//36 40//36 +f 41//37 42//37 38//37 +f 43//38 44//38 45//38 +f 15//39 42//39 41//39 +f 15//40 46//40 42//40 +f 13//41 47//41 30//41 +f 13//42 45//42 47//42 +f 13//43 43//43 45//43 +f 48//44 46//44 15//44 +f 49//45 48//45 15//45 +f 50//46 13//46 30//46 +f 50//47 37//47 51//47 +f 50//48 51//48 52//48 +f 50//49 30//49 31//49 +f 50//50 31//50 37//50 +f 53//51 50//51 52//51 +f 54//52 49//52 15//52 +f 54//53 55//53 56//53 +f 54//54 56//54 49//54 +f 57//55 13//55 50//55 +f 1//56 13//56 57//56 +f 11//57 54//57 15//57 +f 11//58 57//58 54//58 +f 2//59 1//59 57//59 +f 9//60 57//60 11//60 +f 7//61 57//61 9//61 +f 5//62 2//62 57//62 +f 5//63 57//63 7//63 +f 58//64 59//64 60//64 +f 61//65 59//65 58//65 +f 62//66 59//66 61//66 +f 63//67 59//67 62//67 +f 64//68 59//68 63//68 +f 59//69 65//69 60//69 +f 66//70 67//70 65//70 +f 67//71 68//71 65//71 +f 69//72 70//72 68//72 +f 65//73 70//73 60//73 +f 68//74 70//74 65//74 +f 59//75 71//75 72//75 +f 64//76 71//76 59//76 +f 69//77 73//77 70//77 +f 70//78 74//78 75//78 +f 73//79 74//79 70//79 +f 72//80 76//80 77//80 +f 72//81 78//81 76//81 +f 75//82 79//82 80//82 +f 74//83 79//83 75//83 +f 79//84 81//84 80//84 +f 79//85 82//85 81//85 +f 83//86 82//86 79//86 +f 84//87 85//87 86//87 +f 83//88 16//88 82//88 +f 87//89 16//89 83//89 +f 88//90 14//90 71//90 +f 86//91 14//91 88//91 +f 85//92 14//92 86//92 +f 87//93 89//93 16//93 +f 89//94 90//94 16//94 +f 14//95 91//95 71//95 +f 78//96 91//96 92//96 +f 92//97 91//97 93//97 +f 71//98 91//98 72//98 +f 72//99 91//99 78//99 +f 91//100 94//100 93//100 +f 90//101 95//101 16//101 +f 96//102 95//102 97//102 +f 97//103 95//103 90//103 +f 14//104 98//104 91//104 +f 14//105 3//105 98//105 +f 95//106 12//106 16//106 +f 98//107 12//107 95//107 +f 3//108 4//108 98//108 +f 98//109 10//109 12//109 +f 98//110 8//110 10//110 +f 4//111 6//111 98//111 +f 98//112 6//112 8//112 +f 30//113 47//113 71//113 +f 71//114 47//114 88//114 +f 88//115 45//115 86//115 +f 47//116 45//116 88//116 +f 86//117 44//117 84//117 +f 84//118 44//118 85//118 +f 45//119 44//119 86//119 +f 44//120 43//120 85//120 +f 85//121 13//121 14//121 +f 43//122 13//122 85//122 +f 15//123 41//123 16//123 +f 16//124 41//124 82//124 +f 82//125 40//125 81//125 +f 41//126 40//126 82//126 +f 81//127 39//127 80//127 +f 40//128 39//128 81//128 +f 80//129 34//129 75//129 +f 39//130 34//130 80//130 +f 75//131 28//131 70//131 +f 34//132 28//132 75//132 +f 23//133 30//133 71//133 +f 23//134 71//134 64//134 +f 28//135 19//135 70//135 +f 70//136 19//136 60//136 +f 19//137 18//137 60//137 +f 60//138 18//138 58//138 +f 58//139 20//139 61//139 +f 61//140 20//140 62//140 +f 18//141 20//141 58//141 +f 20//142 21//142 62//142 +f 62//143 22//143 63//143 +f 63//144 22//144 64//144 +f 21//145 22//145 62//145 +f 22//146 23//146 64//146 +f 57//147 50//147 98//147 +f 98//148 50//148 91//148 +f 50//149 53//149 91//149 +f 91//150 53//150 94//150 +f 53//151 52//151 94//151 +f 94//152 52//152 93//152 +f 76//153 78//153 35//153 +f 35//154 78//154 37//154 +f 37//155 92//155 51//155 +f 78//156 92//156 37//156 +f 51//157 93//157 52//157 +f 92//158 93//158 51//158 +f 35//159 36//159 76//159 +f 76//160 36//160 77//160 +f 36//161 31//161 77//161 +f 77//162 31//162 72//162 +f 31//163 17//163 72//163 +f 72//164 17//164 59//164 +f 17//165 24//165 59//165 +f 59//166 24//166 65//166 +f 24//167 26//167 65//167 +f 65//168 26//168 66//168 +f 26//169 25//169 66//169 +f 66//170 25//170 67//170 +f 97//171 90//171 56//171 +f 56//172 90//172 49//172 +f 49//173 89//173 48//173 +f 90//174 89//174 49//174 +f 48//175 87//175 46//175 +f 46//176 87//176 42//176 +f 89//177 87//177 48//177 +f 87//178 83//178 42//178 +f 42//179 79//179 38//179 +f 83//180 79//180 42//180 +f 38//181 74//181 33//181 +f 33//182 74//182 32//182 +f 79//183 74//183 38//183 +f 74//184 73//184 32//184 +f 32//185 69//185 29//185 +f 73//186 69//186 32//186 +f 29//187 68//187 27//187 +f 27//188 68//188 25//188 +f 69//189 68//189 29//189 +f 68//190 67//190 25//190 +f 56//191 55//191 96//191 +f 56//192 96//192 97//192 +f 55//193 54//193 95//193 +f 55//194 95//194 96//194 +f 54//195 57//195 98//195 +f 54//196 98//196 95//196 diff --git a/asset/icons/axes.FCStd b/asset/icons/axes.FCStd new file mode 100644 index 0000000..1f55f06 Binary files /dev/null and b/asset/icons/axes.FCStd differ diff --git a/asset/icons/axes.obj b/asset/icons/axes.obj new file mode 100644 index 0000000..c8e588c --- /dev/null +++ b/asset/icons/axes.obj @@ -0,0 +1,3993 @@ +# FreeCAD v0.19 build20655 (Git) Arch module +# http://www.freecadweb.org +mtllib axes.mtl +o Part__Feature +usemtl color_cccccc +v 14.585548 14.585548 -3.50168 +v 15.0 15.0 0.0 +v 124.0 15.0 0.0 +v 124.0 14.095389 -5.130302 +v 13.365098 13.365098 -6.809857 +v 124.0 11.490666 -9.641814 +v 11.40609 11.40609 -9.741721 +v 8.816779 8.816779 -12.135255 +v 124.0 7.5 -12.990381 +v 4.635255 4.635255 -14.265848 +v 124.0 2.604723 -14.772117 +v 0.0 -0.0 -15.0 +v 124.0 -2.604723 -14.772117 +v 0.0 -5.130302 -14.095389 +v 124.0 -7.5 -12.990381 +v 0.0 -9.641814 -11.490666 +v 124.0 -11.490666 -9.641814 +v 0.0 -12.990381 -7.5 +v 124.0 -14.095389 -5.130302 +v 0.0 -14.772117 -2.604723 +v 124.0 -15.0 0.0 +v 0.0 -14.772117 2.604723 +v 124.0 -14.095389 5.130302 +v 0.0 -12.990381 7.5 +v 124.0 -11.490666 9.641814 +v 0.0 -9.641814 11.490666 +v 124.0 -7.5 12.990381 +v 0.0 -5.130302 14.095389 +v 124.0 -2.604723 14.772117 +v 0.0 -0.0 15.0 +v 124.0 2.604723 14.772117 +v 6.809857 6.809857 13.365098 +v 124.0 7.5 12.990381 +v 11.298286 11.298286 9.866546 +v 124.0 11.490666 9.641814 +v 13.817271 13.817271 5.838065 +v 124.0 14.095389 5.130302 +v 14.701344 14.701344 2.978332 +v -14.265848 0.0 -4.635255 +v -15.0 0.0 0.0 +v -15.0 124.0 0.0 +v -14.095389 124.0 -5.130302 +v -12.135255 0.0 -8.816779 +v -11.490666 124.0 -9.641814 +v -8.816779 0.0 -12.135255 +v -7.5 124.0 -12.990381 +v -4.635255 0.0 -14.265848 +v -2.604723 124.0 -14.772117 +v 2.604723 124.0 -14.772117 +v 7.5 124.0 -12.990381 +v 11.490666 124.0 -9.641814 +v 14.095389 124.0 -5.130302 +v 15.0 124.0 0.0 +v 14.095389 124.0 5.130302 +v 11.490666 124.0 9.641814 +v 7.5 124.0 12.990381 +v 2.604723 124.0 14.772117 +v -2.604723 124.0 14.772117 +v -4.635255 0.0 14.265848 +v -7.5 124.0 12.990381 +v -8.816779 0.0 12.135255 +v -11.490666 124.0 9.641814 +v -12.135255 0.0 8.816779 +v -14.095389 124.0 5.130302 +v -14.265848 0.0 4.635255 +v 124.0 -23.492315 -8.550504 +v 124.0 -19.151112 -16.069691 +v 124.0 -12.5 -21.650635 +v 124.0 -25.0 0.0 +v 124.0 -4.341205 -24.620193 +v 124.0 4.341205 -24.620193 +v 124.0 -23.492315 8.550504 +v 124.0 12.5 -21.650635 +v 124.0 -19.151112 16.069691 +v 124.0 19.151112 -16.069691 +v 124.0 -12.5 21.650635 +v 124.0 23.492315 -8.550504 +v 124.0 -4.341205 24.620193 +v 124.0 25.0 0.0 +v 124.0 4.341205 24.620193 +v 124.0 23.492315 8.550504 +v 124.0 12.5 21.650635 +v 124.0 19.151112 16.069691 +v 23.492315 124.0 -8.550504 +v 19.151112 124.0 -16.069691 +v 12.5 124.0 -21.650635 +v 25.0 124.0 0.0 +v 4.341205 124.0 -24.620193 +v -4.341205 124.0 -24.620193 +v 23.492315 124.0 8.550504 +v -12.5 124.0 -21.650635 +v 19.151112 124.0 16.069691 +v -19.151112 124.0 -16.069691 +v 12.5 124.0 21.650635 +v -23.492315 124.0 -8.550504 +v 4.341205 124.0 24.620193 +v -25.0 124.0 0.0 +v -4.341205 124.0 24.620193 +v -23.492315 124.0 8.550504 +v -12.5 124.0 21.650635 +v -19.151112 124.0 16.069691 +v 138.333328 16.666666 0.0 +v 152.666672 6.383704 -5.356564 +v 152.666672 8.333333 0.0 +v 167.0 0.0 0.0 +v 152.666672 1.447068 -8.206731 +v 138.333328 12.767407 -10.713127 +v 152.666672 -4.166667 -7.216878 +v 138.333328 2.894136 -16.413462 +v 152.666672 -7.830772 -2.850168 +v 138.333328 -8.333333 -14.433757 +v 152.666672 -7.830772 2.850168 +v 138.333328 -15.661544 -5.700336 +v 152.666672 -4.166667 7.216878 +v 138.333328 -15.661544 5.700336 +v 152.666672 1.447068 8.206731 +v 138.333328 -8.333333 14.433757 +v 152.666672 6.383704 5.356564 +v 138.333328 2.894136 16.413462 +v 138.333328 12.767407 10.713127 +v -16.666666 138.333328 0.0 +v -6.383704 152.666672 -5.356564 +v -8.333333 152.666672 0.0 +v 0.0 167.0 0.0 +v -1.447068 152.666672 -8.206731 +v -12.767407 138.333328 -10.713127 +v 4.166667 152.666672 -7.216878 +v -2.894136 138.333328 -16.413462 +v 7.830772 152.666672 -2.850168 +v 8.333333 138.333328 -14.433757 +v 7.830772 152.666672 2.850168 +v 15.661544 138.333328 -5.700336 +v 4.166667 152.666672 7.216878 +v 15.661544 138.333328 5.700336 +v -1.447068 152.666672 8.206731 +v 8.333333 138.333328 14.433757 +v -6.383704 152.666672 5.356564 +v -2.894136 138.333328 16.413462 +v -12.767407 138.333328 10.713127 +vn 0.0 0.9930684566497803 -0.11753751337528229 +vn 0.0018270431319251657 0.9848061203956604 -0.1736478954553604 +vn 0.001873970148153603 0.86602383852005 -0.49999916553497314 +vn -0.0009438961278647184 0.9383038878440857 -0.345810204744339 +vn -0.00013168649456929415 0.8315103054046631 -0.5555092692375183 +vn 0.0016612171893939376 0.6427867412567139 -0.7660433650016785 +vn 0.00014180819562170655 0.6787241697311401 -0.7343932390213013 +vn 0.0018325833370909095 0.34201961755752563 -0.9396911263465881 +vn -0.0014078340027481318 0.4551074206829071 -0.8904354572296143 +vn 0.0018377656815573573 0.0 -0.9999982714653015 +vn -0.001502094673924148 0.15789936482906342 -0.9874539971351624 +vn 0.0018377662636339664 -0.34201958775520325 -0.9396910071372986 +vn -0.0018377716187387705 -0.17364788055419922 -0.9848061203956604 +vn 0.001837767194956541 -0.6427865624427795 -0.7660431265830994 +vn -0.0018377713859081268 -0.49999919533729553 -0.8660239577293396 +vn 0.0018377710366621614 -0.8660238981246948 -0.49999919533729553 +vn -0.001837767194956541 -0.7660431265830994 -0.6427865624427795 +vn 0.0018377716187387705 -0.9848061203956604 -0.17364788055419922 +vn -0.001837767194956541 -0.9396910071372986 -0.34201961755752563 +vn 0.0018377716187387705 -0.9848061203956604 0.17364788055419922 +vn -0.0018377656815573573 -0.9999982714653015 -0.0 +vn 0.0018377710366621614 -0.8660238981246948 0.49999919533729553 +vn -0.0018377656815573573 -0.9396910071372986 0.34201961755752563 +vn 0.001837767194956541 -0.6427865624427795 0.7660431265830994 +vn -0.001837767893448472 -0.7660431265830994 0.6427865624427795 +vn 0.0018377662636339664 -0.34201958775520325 0.9396910071372986 +vn -0.0018377713859081268 -0.49999919533729553 0.8660239577293396 +vn -0.0018377716187387705 -0.17364788055419922 0.9848061203956604 +vn 0.0018377656815573573 0.0 0.9999982714653015 +vn -0.003181200474500656 0.2364508956670761 0.9716382622718811 +vn 0.0009904911275953054 0.3420200049877167 0.9396921396255493 +vn -0.0011042674304917455 0.6154534816741943 0.7881724834442139 +vn 0.00043029343942180276 0.642787516117096 0.7660443186759949 +vn -0.0003906691854353994 0.847995936870575 0.5300025343894958 +vn 0.0010257886024191976 0.8660249710083008 0.49999985098838806 +vn -0.0005153767415322363 0.9554328322410583 0.2952083349227905 +vn 0.002040859777480364 0.984805703163147 0.17364780604839325 +vn -0.0 0.9950099587440491 0.09977570921182632 +vn -0.9876883029937744 0.0 -0.15643437206745148 +vn -0.984807550907135 0.0006605249363929033 -0.17364813387393951 +vn -0.8660247921943665 0.0011750995181500912 -0.4999997019767761 +vn -0.891006350517273 -0.0005876357317902148 -0.45399045944213867 +vn -0.6427868604660034 0.0015430997591465712 -0.766043484210968 +vn -0.7071064114570618 -0.0010289909550920129 -0.7071064114570618 +vn -0.342019647359848 0.0017640795558691025 -0.9396911859512329 +vn -0.4539901316165924 -0.0013235298683866858 -0.8910056948661804 +vn 0.0 0.0018377656815573573 -0.9999982714653015 +vn -0.15643420815467834 -0.0014708893140777946 -0.9876872897148132 +vn 0.34201961755752563 0.0018325833370909095 -0.9396911263465881 +vn 0.15789936482906342 -0.001502094673924148 -0.9874539971351624 +vn 0.6427867412567139 0.0016612171893939376 -0.7660433650016785 +vn 0.4551073908805847 -0.001407834468409419 -0.8904353976249695 +vn 0.6787241697311401 0.00014180855941958725 -0.7343932390213013 +vn 0.86602383852005 0.001873970148153603 -0.49999916553497314 +vn 0.8315103054046631 -0.00013168617442715913 -0.5555093288421631 +vn 0.9848061203956604 0.0018270431319251657 -0.1736478954553604 +vn 0.9383040070533752 -0.0009438959532417357 -0.34581026434898376 +vn 0.9930684566497803 1.9808523080128793e-18 -0.11753751337528229 +vn 0.984805703163147 0.002040859777480364 0.17364780604839325 +vn 0.9950099587440491 0.0 0.09977570176124573 +vn 0.8660249710083008 0.0010257886024191976 0.49999985098838806 +vn 0.9554327130317688 -0.0005153764504939318 0.29520830512046814 +vn 0.642787516117096 0.00043029343942180276 0.7660443186759949 +vn 0.847995936870575 -0.00039067008765414357 0.5300025343894958 +vn 0.3420200049877167 0.0009904911275953054 0.9396921396255493 +vn 0.6154534816741943 -0.0011042669648304582 0.7881724834442139 +vn 0.2364508956670761 -0.003181200008839369 0.9716382622718811 +vn 0.0 0.0018377656815573573 0.9999982714653015 +vn -0.15643420815467834 -0.0014708893140777946 0.9876872897148132 +vn -0.342019647359848 0.0017640795558691025 0.9396911859512329 +vn -0.4539901316165924 -0.0013235302176326513 0.8910056948661804 +vn -0.6427868604660034 0.0015430997591465712 0.766043484210968 +vn -0.7071064114570618 -0.0010289917699992657 0.7071064114570618 +vn -0.8660247921943665 0.0011750995181500912 0.4999997019767761 +vn -0.891006350517273 -0.0005876354407519102 0.45399045944213867 +vn -0.984807550907135 0.0006605249363929033 0.17364813387393951 +vn -0.9876883029937744 0.0 0.15643437206745148 +vn -1.0 1.4931761491994823e-16 1.2529235916913746e-16 +vn -1.0 2.806252712082407e-16 4.860572042272306e-16 +vn -1.0 0.0 0.0 +vn -1.0 8.570501044723175e-17 1.511210837222731e-17 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 -0.0 +vn -1.0 2.796998413912511e-17 -3.3333333895412784e-17 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 -0.0 +vn -1.6309787450718288e-13 -1.0 -3.200975725800581e-13 +vn 0.0 -1.0 0.0 +vn 0.0 -1.0 0.0 +vn -1.3432098044507262e-13 -1.0 1.3432098044507262e-13 +vn -3.6658423827962486e-14 -1.0 -9.999958478720963e-17 +vn -6.606673351840578e-14 -1.0 -2.1466379699188257e-14 +vn 0.0 -1.0 0.0 +vn 0.0 -1.0 0.0 +vn 0.0 -1.0 0.0 +vn 0.0 -1.0 0.0 +vn -0.0 -1.0 0.0 +vn 0.0 -1.0 -0.0 +vn 0.0 -1.0 0.0 +vn -0.0 -1.0 0.0 +vn -0.0 -1.0 0.0 +vn 0.0 -1.0 -0.0 +vn 0.0 -1.0 0.0 +vn 0.0 -1.0 0.0 +vn -0.0 -1.0 -0.0 +vn 0.0 -1.0 -0.0 +vn -0.0 -1.0 0.0 +vn 0.0 -1.0 0.0 +vn -0.0 -1.0 0.0 +vn 0.0 -1.0 -0.0 +vn -0.0 -1.0 0.0 +vn 0.0 -1.0 -0.0 +vn 0.0 -1.0 0.0 +vn 0.0 -1.0 0.0 +vn -0.0 -1.0 0.0 +vn -0.0 -1.0 0.0 +vn 0.0 -1.0 0.0 +vn 0.0 -1.0 0.0 +vn -0.0 -1.0 0.0 +vn -0.0 -1.0 -0.0 +vn -0.0 -1.0 0.0 +vn 0.0 -1.0 0.0 +vn -0.0 -1.0 0.0 +vn -0.0 -1.0 0.0 +vn 0.0 -1.0 0.0 +vn 0.0 -1.0 0.0 +vn 0.0 -1.0 -0.0 +vn -0.0 -1.0 0.0 +vn -0.0 -1.0 0.0 +vn -0.0 -1.0 0.0 +vn 0.0 -1.0 -0.0 +vn 0.4968808591365814 0.8546346426010132 -0.15069517493247986 +vn 0.4968808591365814 0.8546346426010132 0.15069517493247986 +vn 0.4794462025165558 0.8246471881866455 -0.3001469671726227 +vn 0.4794462323188782 0.438785582780838 -0.7599990367889404 +vn 0.4968808591365814 0.557823121547699 -0.6647878289222717 +vn 0.4968808591365814 0.7515531778335571 -0.4339093267917633 +vn 0.4794458746910095 0.8246474862098694 -0.30014705657958984 +vn 0.5458835959434509 0.7873318195343018 -0.28656530380249023 +vn 0.47944578528404236 0.8246474862098694 -0.30014705657958984 +vn 0.4794462323188782 -0.1523885726928711 -0.864238977432251 +vn 0.49688079953193665 0.0 -0.8678187727928162 +vn 0.4968808889389038 0.2968115210533142 -0.8154829144477844 +vn 0.47944584488868713 0.4387856721878052 -0.7599992752075195 +vn 0.5458835959434509 0.41893044114112854 -0.7256089448928833 +vn 0.4794458746910095 0.43878570199012756 -0.7599992752075195 +vn 0.47944584488868713 -0.1523885726928711 -0.8642392158508301 +vn 0.4794462323188782 -0.6722585558891296 -0.5640919208526611 +vn 0.4968808591365814 -0.557823121547699 -0.6647878289222717 +vn 0.4968808591365814 -0.2968115210533142 -0.8154829144477844 +vn 0.5458835959434509 -0.14549297094345093 -0.8251320719718933 +vn 0.4794458746910095 -0.15238863229751587 -0.8642392158508301 +vn 0.4794462323188782 -0.8775712251663208 0.0 +vn 0.49688079953193665 -0.8546346426010132 -0.1506951004266739 +vn 0.4968808591365814 -0.7515531182289124 -0.4339093863964081 +vn 0.5458836555480957 -0.6418387293815613 -0.5385666489601135 +vn 0.47944584488868713 -0.6722586750984192 -0.5640920996665955 +vn 0.47944578528404236 -0.672258734703064 -0.5640920996665955 +vn 0.4794462323188782 -0.6722585558891296 0.5640919208526611 +vn 0.4968808591365814 -0.7515531182289124 0.4339093863964081 +vn 0.49688079953193665 -0.8546346426010132 0.1506951004266739 +vn 0.5458835959434509 -0.8378610610961914 0.0 +vn 0.47944584488868713 -0.6722586750984192 0.5640920996665955 +vn 0.47944584488868713 -0.8775715231895447 0.0 +vn 0.4794458746910095 -0.8775715231895447 0.0 +vn 0.4794462323188782 -0.1523885726928711 0.864238977432251 +vn 0.4968808591365814 -0.2968115210533142 0.8154829144477844 +vn 0.4968808591365814 -0.557823121547699 0.6647878289222717 +vn 0.47944584488868713 -0.672258734703064 0.5640920996665955 +vn 0.5458836555480957 -0.6418387293815613 0.5385666489601135 +vn 0.4794462025165558 0.8246471881866455 0.3001469671726227 +vn 0.4794462323188782 0.438785582780838 0.7599990367889404 +vn 0.4968808889389038 0.2968115210533142 0.8154829144477844 +vn 0.49688079953193665 0.0 0.8678187727928162 +vn 0.5458835959434509 -0.14549297094345093 0.8251320719718933 +vn 0.47944584488868713 -0.1523885726928711 0.8642392158508301 +vn 0.47944584488868713 -0.15238863229751587 0.8642392158508301 +vn 0.4968808591365814 0.7515531778335571 0.4339093267917633 +vn 0.4968808591365814 0.557823121547699 0.6647878289222717 +vn 0.4794458746910095 0.8246474862098694 0.30014705657958984 +vn 0.47944578528404236 0.8246474862098694 0.30014705657958984 +vn 0.5458835959434509 0.7873318195343018 0.28656530380249023 +vn 0.5458835363388062 0.41893044114112854 0.7256089448928833 +vn 0.47944578528404236 0.4387856721878052 0.7599992752075195 +vn 0.4794458746910095 0.43878570199012756 0.7599992752075195 +vn -0.8546346426010132 0.4968808591365814 -0.15069517493247986 +vn -0.8546346426010132 0.4968808591365814 0.15069517493247986 +vn -0.8246471881866455 0.4794462025165558 -0.3001469671726227 +vn -0.438785582780838 0.4794462323188782 -0.7599990367889404 +vn -0.557823121547699 0.4968808591365814 -0.6647878289222717 +vn -0.7515531778335571 0.4968808591365814 -0.4339093267917633 +vn -0.8246474862098694 0.4794458746910095 -0.30014705657958984 +vn -0.7873318195343018 0.5458835959434509 -0.28656530380249023 +vn -0.8246474862098694 0.47944578528404236 -0.30014705657958984 +vn 0.1523885726928711 0.4794462323188782 -0.864238977432251 +vn 0.0 0.49688079953193665 -0.8678187727928162 +vn -0.2968115210533142 0.4968808889389038 -0.8154829144477844 +vn -0.4387856721878052 0.47944584488868713 -0.7599992752075195 +vn -0.41893044114112854 0.5458835959434509 -0.7256089448928833 +vn -0.43878570199012756 0.4794458746910095 -0.7599992752075195 +vn 0.1523885726928711 0.47944584488868713 -0.8642392158508301 +vn 0.6722585558891296 0.4794462323188782 -0.5640919208526611 +vn 0.557823121547699 0.4968808591365814 -0.6647878289222717 +vn 0.2968115210533142 0.4968808591365814 -0.8154829144477844 +vn 0.14549297094345093 0.5458835959434509 -0.8251320719718933 +vn 0.15238863229751587 0.4794458746910095 -0.8642392158508301 +vn 0.8775712251663208 0.4794462323188782 0.0 +vn 0.8546346426010132 0.49688079953193665 -0.1506951004266739 +vn 0.7515531182289124 0.4968808591365814 -0.4339093863964081 +vn 0.6418387293815613 0.5458836555480957 -0.5385666489601135 +vn 0.6722586750984192 0.47944584488868713 -0.5640920996665955 +vn 0.8775715231895447 0.47944584488868713 0.0 +vn 0.672258734703064 0.47944578528404236 -0.5640920996665955 +vn 0.6722585558891296 0.4794462323188782 0.5640919208526611 +vn 0.7515531182289124 0.4968808591365814 0.4339093863964081 +vn 0.8546346426010132 0.49688079953193665 0.1506951004266739 +vn 0.8378610610961914 0.5458835959434509 0.0 +vn 0.8775715231895447 0.4794458746910095 0.0 +vn 0.6722586750984192 0.47944584488868713 0.5640920996665955 +vn 0.1523885726928711 0.4794462323188782 0.864238977432251 +vn 0.2968115210533142 0.4968808591365814 0.8154829144477844 +vn 0.557823121547699 0.4968808591365814 0.6647878289222717 +vn 0.672258734703064 0.47944584488868713 0.5640920996665955 +vn 0.6418387293815613 0.5458836555480957 0.5385666489601135 +vn -0.8246471881866455 0.4794462025165558 0.3001469671726227 +vn -0.438785582780838 0.4794462323188782 0.7599990367889404 +vn -0.2968115210533142 0.4968808889389038 0.8154829144477844 +vn 0.0 0.49688079953193665 0.8678187727928162 +vn 0.14549297094345093 0.5458835959434509 0.8251320719718933 +vn 0.1523885726928711 0.47944584488868713 0.8642392158508301 +vn 0.15238863229751587 0.47944584488868713 0.8642392158508301 +vn -0.4387856721878052 0.47944584488868713 0.7599992752075195 +vn -0.8246474862098694 0.4794458746910095 0.30014705657958984 +vn -0.7515531778335571 0.4968808591365814 0.4339093267917633 +vn -0.557823121547699 0.4968808591365814 0.6647878289222717 +vn -0.8246474862098694 0.47944578528404236 0.30014705657958984 +vn -0.7873318195343018 0.5458835959434509 0.28656530380249023 +vn -0.41893044114112854 0.5458835363388062 0.7256089448928833 +vn -0.43878570199012756 0.47944584488868713 0.7599992752075195 +f 1//1 2//1 3//1 +f 1//2 3//2 4//2 +f 5//3 4//3 6//3 +f 5//4 1//4 4//4 +f 7//5 5//5 6//5 +f 8//6 6//6 9//6 +f 8//7 7//7 6//7 +f 10//8 9//8 11//8 +f 10//9 8//9 9//9 +f 12//10 11//10 13//10 +f 12//11 10//11 11//11 +f 14//12 13//12 15//12 +f 14//13 12//13 13//13 +f 16//14 15//14 17//14 +f 16//15 14//15 15//15 +f 18//16 17//16 19//16 +f 18//17 16//17 17//17 +f 20//18 19//18 21//18 +f 20//19 18//19 19//19 +f 22//20 21//20 23//20 +f 22//21 20//21 21//21 +f 24//22 23//22 25//22 +f 24//23 22//23 23//23 +f 26//24 25//24 27//24 +f 26//25 24//25 25//25 +f 28//26 27//26 29//26 +f 28//27 26//27 27//27 +f 30//28 28//28 29//28 +f 30//29 29//29 31//29 +f 32//30 30//30 31//30 +f 32//31 31//31 33//31 +f 34//32 32//32 33//32 +f 34//33 33//33 35//33 +f 36//34 34//34 35//34 +f 36//35 35//35 37//35 +f 38//36 36//36 37//36 +f 38//37 37//37 3//37 +f 2//38 38//38 3//38 +f 39//39 40//39 41//39 +f 39//40 41//40 42//40 +f 43//41 42//41 44//41 +f 43//42 39//42 42//42 +f 45//43 44//43 46//43 +f 45//44 43//44 44//44 +f 47//45 46//45 48//45 +f 47//46 45//46 46//46 +f 12//47 48//47 49//47 +f 12//48 47//48 48//48 +f 10//49 49//49 50//49 +f 10//50 12//50 49//50 +f 8//51 50//51 51//51 +f 8//52 10//52 50//52 +f 7//53 8//53 51//53 +f 5//54 51//54 52//54 +f 5//55 7//55 51//55 +f 1//56 52//56 53//56 +f 1//57 5//57 52//57 +f 2//58 1//58 53//58 +f 38//59 53//59 54//59 +f 38//60 2//60 53//60 +f 36//61 54//61 55//61 +f 36//62 38//62 54//62 +f 34//63 55//63 56//63 +f 34//64 36//64 55//64 +f 32//65 56//65 57//65 +f 32//66 34//66 56//66 +f 30//67 32//67 57//67 +f 30//68 57//68 58//68 +f 59//69 30//69 58//69 +f 59//70 58//70 60//70 +f 61//71 59//71 60//71 +f 61//72 60//72 62//72 +f 63//73 61//73 62//73 +f 63//74 62//74 64//74 +f 65//75 63//75 64//75 +f 65//76 64//76 41//76 +f 40//77 65//77 41//77 +f 18//78 12//78 16//78 +f 16//79 12//79 14//79 +f 20//80 22//80 18//80 +f 18//81 22//81 12//81 +f 28//82 30//82 26//82 +f 26//83 30//83 24//83 +f 24//84 30//84 22//84 +f 22//85 30//85 12//85 +f 66//86 17//86 67//86 +f 67//87 15//87 68//87 +f 17//88 15//88 67//88 +f 69//89 19//89 66//89 +f 66//90 19//90 17//90 +f 68//91 13//91 70//91 +f 15//92 13//92 68//92 +f 69//93 21//93 19//93 +f 70//94 11//94 71//94 +f 13//95 11//95 70//95 +f 72//96 23//96 69//96 +f 69//97 23//97 21//97 +f 71//98 9//98 73//98 +f 11//99 9//99 71//99 +f 74//100 25//100 72//100 +f 72//101 25//101 23//101 +f 6//102 75//102 9//102 +f 9//103 75//103 73//103 +f 74//104 27//104 25//104 +f 6//105 4//105 75//105 +f 74//106 76//106 27//106 +f 76//107 29//107 27//107 +f 4//108 77//108 75//108 +f 76//109 78//109 29//109 +f 3//110 79//110 4//110 +f 4//111 79//111 77//111 +f 29//112 80//112 31//112 +f 78//113 80//113 29//113 +f 37//114 81//114 3//114 +f 35//115 81//115 37//115 +f 3//116 81//116 79//116 +f 80//117 82//117 31//117 +f 33//118 82//118 35//118 +f 31//119 82//119 33//119 +f 35//120 83//120 81//120 +f 82//121 83//121 35//121 +f 12//122 45//122 47//122 +f 45//123 39//123 43//123 +f 39//124 65//124 40//124 +f 59//125 65//125 30//125 +f 30//126 65//126 12//126 +f 12//127 65//127 45//127 +f 45//128 65//128 39//128 +f 65//129 61//129 63//129 +f 59//130 61//130 65//130 +f 84//131 51//131 85//131 +f 85//132 50//132 86//132 +f 51//133 50//133 85//133 +f 87//134 52//134 84//134 +f 84//135 52//135 51//135 +f 86//136 49//136 88//136 +f 50//137 49//137 86//137 +f 87//138 53//138 52//138 +f 88//139 48//139 89//139 +f 49//140 48//140 88//140 +f 90//141 54//141 87//141 +f 87//142 54//142 53//142 +f 89//143 46//143 91//143 +f 48//144 46//144 89//144 +f 92//145 55//145 90//145 +f 90//146 55//146 54//146 +f 44//147 93//147 46//147 +f 46//148 93//148 91//148 +f 92//149 56//149 55//149 +f 44//150 42//150 93//150 +f 92//151 94//151 56//151 +f 94//152 57//152 56//152 +f 42//153 95//153 93//153 +f 94//154 96//154 57//154 +f 41//155 97//155 42//155 +f 42//156 97//156 95//156 +f 57//157 98//157 58//157 +f 96//158 98//158 57//158 +f 64//159 99//159 41//159 +f 62//160 99//160 64//160 +f 41//161 99//161 97//161 +f 98//162 100//162 58//162 +f 60//163 100//163 62//163 +f 58//164 100//164 60//164 +f 62//165 101//165 99//165 +f 100//166 101//166 62//166 +f 77//167 79//167 102//167 +f 79//168 81//168 102//168 +f 103//169 104//169 105//169 +f 106//170 103//170 105//170 +f 107//171 73//171 75//171 +f 107//172 75//172 77//172 +f 107//173 102//173 104//173 +f 107//174 77//174 102//174 +f 107//175 104//175 103//175 +f 108//176 106//176 105//176 +f 109//177 70//177 71//177 +f 109//178 71//178 73//178 +f 109//179 103//179 106//179 +f 109//180 73//180 107//180 +f 109//181 107//181 103//181 +f 109//182 106//182 108//182 +f 110//183 108//183 105//183 +f 111//184 67//184 68//184 +f 111//185 68//185 70//185 +f 111//186 70//186 109//186 +f 111//187 109//187 108//187 +f 112//188 110//188 105//188 +f 113//189 69//189 66//189 +f 113//190 66//190 67//190 +f 113//191 67//191 111//191 +f 113//192 108//192 110//192 +f 113//193 111//193 108//193 +f 114//194 112//194 105//194 +f 115//195 74//195 72//195 +f 115//196 72//196 69//196 +f 115//197 69//197 113//197 +f 115//198 112//198 114//198 +f 115//199 110//199 112//199 +f 115//200 113//200 110//200 +f 116//201 114//201 105//201 +f 117//202 78//202 76//202 +f 117//203 76//203 74//203 +f 117//204 115//204 114//204 +f 117//205 74//205 115//205 +f 118//206 105//206 104//206 +f 118//207 116//207 105//207 +f 119//208 82//208 80//208 +f 119//209 80//209 78//209 +f 119//210 78//210 117//210 +f 119//211 114//211 116//211 +f 119//212 117//212 114//212 +f 120//213 81//213 83//213 +f 120//214 83//214 82//214 +f 120//215 104//215 102//215 +f 120//216 118//216 104//216 +f 120//217 102//217 81//217 +f 120//218 82//218 119//218 +f 120//219 116//219 118//219 +f 120//220 119//220 116//220 +f 95//221 97//221 121//221 +f 97//222 99//222 121//222 +f 122//223 123//223 124//223 +f 125//224 122//224 124//224 +f 126//225 91//225 93//225 +f 126//226 93//226 95//226 +f 126//227 121//227 123//227 +f 126//228 95//228 121//228 +f 126//229 123//229 122//229 +f 127//230 125//230 124//230 +f 128//231 88//231 89//231 +f 128//232 89//232 91//232 +f 128//233 122//233 125//233 +f 128//234 91//234 126//234 +f 128//235 126//235 122//235 +f 128//236 125//236 127//236 +f 129//237 127//237 124//237 +f 130//238 85//238 86//238 +f 130//239 86//239 88//239 +f 130//240 88//240 128//240 +f 130//241 128//241 127//241 +f 131//242 129//242 124//242 +f 132//243 87//243 84//243 +f 132//244 84//244 85//244 +f 132//245 85//245 130//245 +f 132//246 127//246 129//246 +f 132//247 129//247 131//247 +f 132//248 130//248 127//248 +f 133//249 131//249 124//249 +f 134//250 92//250 90//250 +f 134//251 90//251 87//251 +f 134//252 87//252 132//252 +f 134//253 132//253 131//253 +f 134//254 131//254 133//254 +f 135//255 133//255 124//255 +f 136//256 96//256 94//256 +f 136//257 94//257 92//257 +f 136//258 134//258 133//258 +f 136//259 92//259 134//259 +f 137//260 124//260 123//260 +f 137//261 135//261 124//261 +f 138//262 100//262 98//262 +f 138//263 98//263 96//263 +f 138//264 96//264 136//264 +f 138//265 133//265 135//265 +f 138//266 136//266 133//266 +f 138//267 135//267 137//267 +f 139//268 123//268 121//268 +f 139//269 99//269 101//269 +f 139//270 101//270 100//270 +f 139//271 137//271 123//271 +f 139//272 121//272 99//272 +f 139//273 100//273 138//273 +f 139//274 138//274 137//274 +o Part__Feature001 +usemtl color_cccccc +v 10.531897 2.595879 -22.524221 +v 16.069691 0.0 -19.151112 +v 8.550504 0.0 -23.492315 +v 8.119166 7.192954 -22.524221 +v 0.0 0.0 -25.0 +v 3.846432 10.142209 -22.524221 +v -1.307473 10.768006 -22.524221 +v 17.306934 9.08338 -15.587245 +v 21.650635 0.0 -12.5 +v -6.161851 8.926983 -22.524221 +v 11.103272 16.085867 -15.587245 +v -9.604625 5.040895 -22.524221 +v 2.355984 19.403276 -15.587245 +v 23.664957 5.832888 -5.563024 +v 24.620193 0.0 -4.341205 +v -10.847094 0.0 -22.524221 +v -6.931032 18.275629 -15.587245 +v 18.243601 16.16242 -5.563024 +v -9.604625 -5.040895 -22.524221 +v -14.630232 12.961254 -15.587245 +v 8.642855 22.789335 -5.563024 +v -6.161851 -8.926983 -22.524221 +v -18.977821 4.677613 -15.587245 +v -2.937864 24.19549 -5.563024 +v 21.581394 11.32679 5.563024 +v 24.620193 0.0 4.341205 +v 21.650635 0.0 12.5 +v -1.307473 -10.768006 -22.524221 +v -18.977821 -4.677613 -15.587245 +v -13.845554 20.058748 -5.563024 +v 13.845554 20.058748 5.563024 +v 3.846432 -10.142209 -22.524221 +v -14.630232 -12.961254 -15.587245 +v -21.581394 11.32679 -5.563024 +v 2.937864 24.19549 5.563024 +v 8.119166 -7.192954 -22.524221 +v 18.977821 4.677613 15.587245 +v 16.069691 0.0 19.151112 +v -6.931032 -18.275629 -15.587245 +v -24.373198 0.0 -5.563024 +v -8.642855 22.789335 5.563024 +v 10.531897 -2.595879 -22.524221 +v 14.630232 12.961254 15.587245 +v 2.355984 -19.403276 -15.587245 +v -21.581394 -11.32679 -5.563024 +v -18.243601 16.16242 5.563024 +v 6.931032 18.275629 15.587245 +v 11.103272 -16.085867 -15.587245 +v -13.845554 -20.058748 -5.563024 +v -23.664957 5.832888 5.563024 +v -2.355984 19.403276 15.587245 +v 17.306934 -9.08338 -15.587245 +v 9.604625 5.040895 22.524221 +v 8.550504 0.0 23.492315 +v 0.0 0.0 25.0 +v -2.937864 -24.19549 -5.563024 +v -23.664957 -5.832888 5.563024 +v -11.103272 16.085867 15.587245 +v 6.161851 8.926983 22.524221 +v 8.642855 -22.789335 -5.563024 +v -18.243601 -16.16242 5.563024 +v -17.306934 9.08338 15.587245 +v 1.307473 10.768006 22.524221 +v 18.243601 -16.16242 -5.563024 +v -8.642855 -22.789335 5.563024 +v -19.545788 0.0 15.587245 +v -3.846432 10.142209 22.524221 +v 23.664957 -5.832888 -5.563024 +v 2.937864 -24.19549 5.563024 +v -17.306934 -9.08338 15.587245 +v -8.119166 7.192954 22.524221 +v 13.845554 -20.058748 5.563024 +v -11.103272 -16.085867 15.587245 +v -10.531897 2.595879 22.524221 +v 21.581394 -11.32679 5.563024 +v -2.355984 -19.403276 15.587245 +v -10.531897 -2.595879 22.524221 +v 6.931032 -18.275629 15.587245 +v -8.119166 -7.192954 22.524221 +v 14.630232 -12.961254 15.587245 +v -3.846432 -10.142209 22.524221 +v 18.977821 -4.677613 15.587245 +v 1.307473 -10.768006 22.524221 +v 6.161851 -8.926983 22.524221 +v 9.604625 -5.040895 22.524221 +vn 0.49914154410362244 -0.058570101857185364 -0.8645387291908264 +vn 0.17190054059028625 0.14151880145072937 -0.9748961925506592 +vn 0.27518147230148315 0.1444263458251953 -0.9504820704460144 +vn 0.5967935919761658 0.3132213354110718 -0.7387352585792542 +vn 0.12999401986598969 0.188328817486763 -0.973464846611023 +vn 0.027583200484514236 0.22716812789440155 -0.973464846611023 +vn 0.7578060030937195 0.14626511931419373 -0.6358746290206909 +vn 0.5536646246910095 0.23771613836288452 -0.798089325428009 +vn -0.08114659041166306 0.21396592259407043 -0.973464846611023 +vn 0.3464561402797699 0.5019282102584839 -0.7924873232841492 +vn 0.48582231998443604 0.4304009974002838 -0.7607442140579224 +vn -0.1712866574525833 0.1517467498779297 -0.973464846611023 +vn 0.07351390272378922 0.6054415702819824 -0.792487382888794 +vn 0.2301570177078247 0.6068740487098694 -0.7607442140579224 +vn 0.9365302324295044 0.08197095990180969 -0.34086915850639343 +vn -0.22218701243400574 0.054764166474342346 -0.973464846611023 +vn -0.21626947820186615 0.57025545835495 -0.792487382888794 +vn -0.07823451608419418 0.6443195343017578 -0.7607441544532776 +vn 0.894244372844696 0.3219550549983978 -0.3109210431575775 +vn 0.6591046452522278 0.5839157700538635 -0.4739444851875305 +vn 0.7431268095970154 0.39002299308776855 -0.5437321662902832 +vn -0.22218701243400574 -0.054764166474342346 -0.973464846611023 +vn -0.45650792121887207 0.4044307470321655 -0.792487382888794 +vn -0.3687035143375397 0.5341591835021973 -0.7607441544532776 +vn 0.312249094247818 0.8233330249786377 -0.47394439578056335 +vn 0.5254327654838562 0.7612209320068359 -0.3800830543041229 +vn -0.17128664255142212 -0.1517467349767685 -0.973464846611023 +vn -0.5747069120407104 0.3016293942928314 -0.7607441544532776 +vn -0.5921661257743835 0.14595578610897064 -0.7924873232841492 +vn -0.10613910853862762 0.8741346001625061 -0.47394439578056335 +vn 0.11149075627326965 0.9182084202766418 -0.3800829350948334 +vn 0.9658448696136475 0.25912097096443176 0.0 +vn 0.9186592102050781 0.21039390563964844 0.3343645930290222 +vn 0.9791027307510376 0.18012192845344543 0.09441359341144562 +vn 0.8836674690246582 0.46378445625305176 -0.06352744251489639 +vn -0.08114659041166306 -0.21396592259407043 -0.973464846611023 +vn -0.6490519046783447 0.0 -0.7607440948486328 +vn -0.5921661257743835 -0.14595578610897064 -0.7924873232841492 +vn -0.5002121925354004 0.7246823906898499 -0.47394439578056335 +vn -0.32799267768859863 0.8648455142974854 -0.3800829350948334 +vn 0.5669171810150146 0.8213215470314026 -0.06352748721837997 +vn 0.7469988465309143 0.6617832183837891 0.06352762877941132 +vn 0.027583200484514236 -0.22716812789440155 -0.973464846611023 +vn -0.5747069120407104 -0.3016293942928314 -0.7607441544532776 +vn -0.45650792121887207 -0.4044307470321655 -0.792487382888794 +vn -0.6923367977142334 0.61335688829422 -0.38008296489715576 +vn -0.7796925902366638 0.4092141389846802 -0.47394439578056335 +vn 0.3538886308670044 0.9331275224685669 0.06352746486663818 +vn 0.1202932670712471 0.9907037019729614 -0.06352756172418594 +vn 0.17190054059028625 -0.14151880145072937 -0.9748961925506592 +vn 0.12999401986598969 -0.188328817486763 -0.973464846611023 +vn 0.7659749388694763 0.013478187844157219 0.6427291631698608 +vn -0.3687034845352173 -0.5341591238975525 -0.7607441544532776 +vn -0.21626947820186615 -0.57025545835495 -0.792487382888794 +vn -0.8980749249458313 0.2213556170463562 -0.38008302450180054 +vn -0.8805547952651978 0.0 -0.47394445538520813 +vn -0.3538886308670044 0.9331275224685669 -0.06352747231721878 +vn -0.1202932670712471 0.9907037019729614 0.06352755427360535 +vn 0.5967935919761658 -0.3132213354110718 -0.7387352585792542 +vn 0.49914154410362244 0.058570101857185364 -0.8645387291908264 +vn 0.27518147230148315 -0.1444263458251953 -0.9504821300506592 +vn 0.6923367977142334 0.61335688829422 0.3800829350948334 +vn 0.5314887762069702 0.27894675731658936 0.799817681312561 +vn 0.8032764792442322 0.31463339924812317 0.5057199001312256 +vn 0.8837332725524902 0.46381890773773193 0.0623498372733593 +vn -0.07823451608419418 -0.6443195343017578 -0.7607441544532776 +vn 0.07351390272378922 -0.6054415702819824 -0.792487382888794 +vn -0.7796925902366638 -0.4092141389846802 -0.47394439578056335 +vn -0.8980749249458313 -0.2213556170463562 -0.38008299469947815 +vn -0.7469987869262695 0.6617832183837891 -0.06352762132883072 +vn -0.5669172406196594 0.8213216066360474 0.06352750957012177 +vn 0.5002121329307556 0.7246823310852051 0.4739443361759186 +vn 0.32799267768859863 0.8648455142974854 0.3800829350948334 +vn 0.2301570177078247 -0.6068740487098694 -0.7607442140579224 +vn 0.3464561402797699 -0.5019282102584839 -0.7924873232841492 +vn -0.5002121925354004 -0.7246823906898499 -0.47394439578056335 +vn -0.6923367977142334 -0.61335688829422 -0.38008296489715576 +vn -0.9689805507659912 0.2388322800397873 -0.06352756917476654 +vn -0.8836674690246582 0.46378442645072937 0.06352744251489639 +vn -0.11149074137210846 0.9182084202766418 0.3800829350948334 +vn 0.10613911598920822 0.8741346001625061 0.47394445538520813 +vn 0.5536646246910095 -0.23771613836288452 -0.798089325428009 +vn 0.7578060030937195 -0.14626511931419373 -0.6358746290206909 +vn 0.48582231998443604 -0.4304009974002838 -0.7607440948486328 +vn 0.49904903769493103 0.06164409592747688 0.8643784523010254 +vn 0.17165538668632507 0.15106436610221863 0.9735060334205627 +vn 0.6036673784255981 0.273000031709671 0.7490371465682983 +vn -0.32799267768859863 -0.8648455142974854 -0.3800829350948334 +vn -0.10613910853862762 -0.8741346001625061 -0.47394439578056335 +vn -0.9979800581932068 0.0 0.06352749466896057 +vn -0.9689805507659912 -0.2388322800397873 -0.06352756917476654 +vn -0.3122491240501404 0.8233330249786377 0.47394439578056335 +vn -0.5254327654838562 0.7612209320068359 0.38008302450180054 +vn 0.17128664255142212 0.1517467349767685 0.973464846611023 +vn 0.36870354413986206 0.5341591835021973 0.7607441544532776 +vn 0.45650798082351685 0.4044308066368103 0.792487382888794 +vn 0.11149074882268906 -0.9182083606719971 -0.3800829350948334 +vn 0.312249094247818 -0.8233330249786377 -0.47394439578056335 +vn -0.7469987869262695 -0.6617832183837891 -0.06352762132883072 +vn -0.8836674690246582 -0.46378442645072937 0.06352744251489639 +vn -0.8190045952796936 0.42984676361083984 0.3800830841064453 +vn -0.6591046452522278 0.5839157700538635 0.4739444851875305 +vn 0.07823452353477478 0.6443195343017578 0.7607441544532776 +vn 0.08114659041166306 0.21396592259407043 0.973464846611023 +vn 0.21626941859722137 0.5702553987503052 0.792487382888794 +vn 0.894244372844696 -0.3219550549983978 -0.3109210431575775 +vn 0.6591046452522278 -0.5839157700538635 -0.4739444851875305 +vn 0.5254327654838562 -0.7612209320068359 -0.38008302450180054 +vn -0.3538886308670044 -0.9331275224685669 -0.06352747231721878 +vn -0.5669172406196594 -0.8213216066360474 0.06352749466896057 +vn -0.9249523878097534 0.0 0.3800829350948334 +vn -0.8549674153327942 0.2107306718826294 0.47394445538520813 +vn -0.2301570177078247 0.6068740487098694 0.7607442140579224 +vn -0.027583200484514236 0.22716812789440155 0.973464846611023 +vn -0.07351390272378922 0.6054415702819824 0.7924873232841492 +vn 0.9365302324295044 -0.08197095990180969 -0.34086915850639343 +vn 0.7431268095970154 -0.39002299308776855 -0.5437321662902832 +vn -0.1202932670712471 -0.9907037019729614 0.06352756172418594 +vn 0.1202932670712471 -0.9907037019729614 -0.06352756172418594 +vn -0.8549674153327942 -0.2107306718826294 0.47394445538520813 +vn -0.8190045952796936 -0.42984676361083984 0.3800830841064453 +vn -0.3464561104774475 0.5019282698631287 0.792487382888794 +vn -0.12999401986598969 0.188328817486763 0.973464846611023 +vn -0.4858223795890808 0.4304009675979614 0.7607442140579224 +vn 0.3538886308670044 -0.9331275224685669 0.06352747231721878 +vn 0.5669171810150146 -0.8213215470314026 -0.06352748721837997 +vn -0.6591046452522278 -0.5839157700538635 0.4739444851875305 +vn -0.5254327654838562 -0.7612209320068359 0.38008302450180054 +vn -0.6301915049552917 0.1553283929824829 0.7607441544532776 +vn -0.20262476801872253 0.10634564608335495 0.973464846611023 +vn -0.5400293469429016 0.28342920541763306 0.792487382888794 +vn 0.9791027307510376 -0.18012192845344543 0.09441359341144562 +vn 0.8836674690246582 -0.46378445625305176 -0.06352744251489639 +vn 0.9658448696136475 -0.25912097096443176 0.0 +vn 0.9186592102050781 -0.21039390563964844 0.3343645930290222 +vn 0.7469988465309143 -0.6617832183837891 0.06352759897708893 +vn -0.11149074137210846 -0.9182084202766418 0.3800829350948334 +vn -0.3122491240501404 -0.8233330249786377 0.47394445538520813 +vn -0.6098882555961609 0.0 0.792487382888794 +vn -0.22883659601211548 0.0 0.973464846611023 +vn -0.6301915049552917 -0.1553283929824829 0.7607441544532776 +vn 0.32799267768859863 -0.8648455142974854 0.3800829350948334 +vn 0.10613911598920822 -0.8741346001625061 0.47394445538520813 +vn -0.4858223795890808 -0.4304009675979614 0.7607442140579224 +vn -0.5400293469429016 -0.28342920541763306 0.792487382888794 +vn -0.20262476801872253 -0.10634564608335495 0.973464846611023 +vn 0.8032764792442322 -0.31463339924812317 0.5057199001312256 +vn 0.6923367977142334 -0.61335688829422 0.3800829350948334 +vn 0.5002121329307556 -0.7246823310852051 0.4739443361759186 +vn -0.3464561104774475 -0.5019282698631287 0.792487382888794 +vn -0.12999401986598969 -0.188328817486763 0.973464846611023 +vn -0.2301570177078247 -0.6068740487098694 0.7607442140579224 +vn 0.7659749388694763 -0.013478187844157219 0.6427291631698608 +vn 0.5314887762069702 -0.27894675731658936 0.7998177409172058 +vn 0.8837332725524902 -0.46381890773773193 0.062349770218133926 +vn -0.027583200484514236 -0.22716812789440155 0.973464846611023 +vn 0.07823452353477478 -0.6443195343017578 0.7607441544532776 +vn -0.07351390272378922 -0.6054415702819824 0.7924873232841492 +vn 0.36870354413986206 -0.5341591835021973 0.7607441544532776 +vn 0.08114659041166306 -0.21396592259407043 0.973464846611023 +vn 0.21626940369606018 -0.5702553987503052 0.7924874424934387 +vn 0.49904903769493103 -0.06164409592747688 0.8643784523010254 +vn 0.17165538668632507 -0.15106436610221863 0.9735060334205627 +vn 0.6036673784255981 -0.273000031709671 0.7490371465682983 +vn 0.1712866574525833 -0.1517467498779297 0.973464846611023 +vn 0.45650792121887207 -0.4044307470321655 0.7924874424934387 +f 140//275 141//275 142//275 +f 143//276 142//276 144//276 +f 143//277 140//277 142//277 +f 143//278 141//278 140//278 +f 145//279 143//279 144//279 +f 146//280 145//280 144//280 +f 147//281 148//281 141//281 +f 147//282 141//282 143//282 +f 149//283 146//283 144//283 +f 150//284 143//284 145//284 +f 150//285 147//285 143//285 +f 151//286 149//286 144//286 +f 152//287 145//287 146//287 +f 152//288 150//288 145//288 +f 153//289 154//289 148//289 +f 155//290 151//290 144//290 +f 156//291 146//291 149//291 +f 156//292 152//292 146//292 +f 157//293 148//293 147//293 +f 157//294 147//294 150//294 +f 157//295 153//295 148//295 +f 158//296 155//296 144//296 +f 159//297 149//297 151//297 +f 159//298 156//298 149//298 +f 160//299 150//299 152//299 +f 160//300 157//300 150//300 +f 161//301 158//301 144//301 +f 162//302 159//302 151//302 +f 162//303 151//303 155//303 +f 163//304 152//304 156//304 +f 163//305 160//305 152//305 +f 164//306 165//306 154//306 +f 164//307 166//307 165//307 +f 164//308 154//308 153//308 +f 164//309 153//309 157//309 +f 167//310 161//310 144//310 +f 168//311 162//311 155//311 +f 168//312 155//312 158//312 +f 169//313 156//313 159//313 +f 169//314 163//314 156//314 +f 170//315 157//315 160//315 +f 170//316 164//316 157//316 +f 171//317 167//317 144//317 +f 172//318 168//318 158//318 +f 172//319 158//319 161//319 +f 173//320 169//320 159//320 +f 173//321 159//321 162//321 +f 174//322 170//322 160//322 +f 174//323 160//323 163//323 +f 175//324 144//324 142//324 +f 175//325 171//325 144//325 +f 176//326 177//326 166//326 +f 178//327 172//327 161//327 +f 178//328 161//328 167//328 +f 179//329 173//329 162//329 +f 179//330 162//330 168//330 +f 180//331 163//331 169//331 +f 180//332 174//332 163//332 +f 181//333 141//333 175//333 +f 181//334 142//334 141//334 +f 181//335 175//335 142//335 +f 182//336 164//336 170//336 +f 182//337 177//337 176//337 +f 182//338 166//338 164//338 +f 182//339 176//339 166//339 +f 183//340 178//340 167//340 +f 183//341 167//341 171//341 +f 184//342 168//342 172//342 +f 184//343 179//343 168//343 +f 185//344 169//344 173//344 +f 185//345 180//345 169//345 +f 186//346 182//346 170//346 +f 186//347 170//347 174//347 +f 187//348 183//348 171//348 +f 187//349 171//349 175//349 +f 188//350 172//350 178//350 +f 188//351 184//351 172//351 +f 189//352 173//352 179//352 +f 189//353 185//353 173//353 +f 190//354 174//354 180//354 +f 190//355 186//355 174//355 +f 191//356 175//356 141//356 +f 191//357 141//357 148//357 +f 191//358 187//358 175//358 +f 192//359 193//359 177//359 +f 192//360 194//360 193//360 +f 192//361 177//361 182//361 +f 195//362 188//362 178//362 +f 195//363 178//363 183//363 +f 196//364 189//364 179//364 +f 196//365 179//365 184//365 +f 197//366 190//366 180//366 +f 197//367 180//367 185//367 +f 198//368 194//368 192//368 +f 198//369 182//369 186//369 +f 198//370 192//370 182//370 +f 199//371 195//371 183//371 +f 199//372 183//372 187//372 +f 200//373 184//373 188//373 +f 200//374 196//374 184//374 +f 201//375 185//375 189//375 +f 201//376 197//376 185//376 +f 202//377 186//377 190//377 +f 202//378 194//378 198//378 +f 202//379 198//379 186//379 +f 203//380 191//380 148//380 +f 203//381 187//381 191//381 +f 203//382 199//382 187//382 +f 204//383 188//383 195//383 +f 204//384 200//384 188//384 +f 205//385 189//385 196//385 +f 205//386 201//386 189//386 +f 206//387 190//387 197//387 +f 206//388 194//388 202//388 +f 206//389 202//389 190//389 +f 207//390 148//390 154//390 +f 207//391 203//391 148//391 +f 208//392 204//392 195//392 +f 208//393 195//393 199//393 +f 209//394 205//394 196//394 +f 209//395 196//395 200//395 +f 210//396 206//396 197//396 +f 210//397 194//397 206//397 +f 210//398 197//398 201//398 +f 211//399 208//399 199//399 +f 211//400 199//400 203//400 +f 212//401 209//401 200//401 +f 212//402 200//402 204//402 +f 213//403 201//403 205//403 +f 213//404 194//404 210//404 +f 213//405 210//405 201//405 +f 214//406 207//406 154//406 +f 214//407 203//407 207//407 +f 214//408 154//408 165//408 +f 214//409 165//409 166//409 +f 214//410 211//410 203//410 +f 215//411 204//411 208//411 +f 215//412 212//412 204//412 +f 216//413 213//413 205//413 +f 216//414 194//414 213//414 +f 216//415 205//415 209//415 +f 217//416 208//416 211//416 +f 217//417 215//417 208//417 +f 218//418 209//418 212//418 +f 218//419 216//419 209//419 +f 218//420 194//420 216//420 +f 219//421 214//421 166//421 +f 219//422 211//422 214//422 +f 219//423 217//423 211//423 +f 220//424 218//424 212//424 +f 220//425 194//425 218//425 +f 220//426 212//426 215//426 +f 221//427 166//427 177//427 +f 221//428 177//428 219//428 +f 221//429 219//429 166//429 +f 222//430 194//430 220//430 +f 222//431 215//431 217//431 +f 222//432 220//432 215//432 +f 223//433 217//433 219//433 +f 223//434 194//434 222//434 +f 223//435 222//435 217//435 +f 224//436 177//436 193//436 +f 224//437 193//437 194//437 +f 224//438 219//438 177//438 +f 224//439 194//439 223//439 +f 224//440 223//440 219//440 +o Part__Feature002 +usemtl color_cccccc +v -60.0 160.0 -17.0 +v -60.0 -20.0 -17.0 +v -60.0 -20.0 16.0 +v -60.0 160.0 16.0 +v -20.0 -60.0 -17.0 +v -20.0 -60.0 16.0 +v -32.36068 -58.042259 16.0 +v -32.36068 -58.042259 -17.0 +v -43.51141 -52.36068 -17.0 +v -43.51141 -52.36068 16.0 +v -52.36068 -43.51141 16.0 +v -52.36068 -43.51141 -17.0 +v -58.042259 -32.36068 -17.0 +v -58.042259 -32.36068 16.0 +v -57.927052 160.0 -19.85317 +v -57.0 160.0 -20.0 +v -57.0 -20.0 -20.0 +v -57.927052 -20.0 -19.85317 +v -58.763355 160.0 -19.427052 +v -58.763355 -20.0 -19.427052 +v -59.427052 160.0 -18.763355 +v -59.427052 -20.0 -18.763355 +v -59.853168 160.0 -17.927052 +v -59.853168 -20.0 -17.927052 +v -59.804226 160.0 17.236069 +v -59.804226 -20.0 17.236069 +v -59.236069 160.0 18.351141 +v -59.236069 -20.0 18.351141 +v -58.351143 -20.0 19.236069 +v -58.351143 160.0 19.236069 +v -57.236069 160.0 19.804226 +v -57.236069 -20.0 19.804226 +v -56.0 160.0 20.0 +v -56.0 -20.0 20.0 +v -58.042259 172.360687 16.0 +v -58.042259 172.360687 -17.0 +v -52.36068 183.511414 -17.0 +v -52.36068 183.511414 16.0 +v -43.51141 192.360687 16.0 +v -43.51141 192.360687 -17.0 +v -32.36068 198.042267 -17.0 +v -32.36068 198.042267 16.0 +v -20.0 200.0 -17.0 +v -20.0 200.0 16.0 +v -31.433628 -55.189091 -20.0 +v -20.0 -57.0 -20.0 +v -20.0 -57.927052 -19.85317 +v -32.315308 -57.902618 -17.927052 +v -20.0 -59.853168 -17.927052 +v -32.183628 -57.497353 -18.763355 +v -20.0 -59.427052 -18.763355 +v -31.978537 -56.866142 -19.427052 +v -20.0 -58.763355 -19.427052 +v -31.720104 -56.07077 -19.85317 +v -43.425106 -52.24189 -17.927052 +v -43.174641 -51.897156 -18.763355 +v -42.784531 -51.360214 -19.427052 +v -42.292961 -50.683628 -19.85317 +v -41.748055 -49.933628 -20.0 +v -49.933628 -41.748055 -20.0 +v -52.24189 -43.425106 -17.927052 +v -51.897156 -43.174641 -18.763355 +v -51.360214 -42.784531 -19.427052 +v -50.683628 -42.292961 -19.85317 +v -57.902618 -32.315308 -17.927052 +v -57.497353 -32.183628 -18.763355 +v -56.866142 -31.978537 -19.427052 +v -56.07077 -31.720104 -19.85317 +v -55.189091 -31.433628 -20.0 +v -20.0 -59.804226 17.236069 +v -57.856068 -32.300182 17.236069 +v -57.31572 -32.124611 18.351141 +v -56.474102 -31.851154 19.236069 +v -55.413605 -31.506578 19.804226 +v -54.238033 -31.124611 20.0 +v -52.202297 -43.396336 17.236069 +v -51.742645 -43.062382 18.351141 +v -51.026726 -42.542236 19.236069 +v -50.124611 -41.88681 19.804226 +v -49.124611 -41.160271 20.0 +v -43.396336 -52.202297 17.236069 +v -43.062382 -51.742645 18.351141 +v -42.542236 -51.026726 19.236069 +v -41.88681 -50.124611 19.804226 +v -31.124611 -54.238033 20.0 +v -41.160271 -49.124611 20.0 +v -32.300182 -57.856068 17.236069 +v -32.124611 -57.31572 18.351141 +v -20.0 -59.236069 18.351141 +v -31.851154 -56.474102 19.236069 +v -20.0 -58.351143 19.236069 +v -31.506578 -55.413605 19.804226 +v -20.0 -56.0 20.0 +v -20.0 -57.236069 19.804226 +v 160.0 -60.0 -17.0 +v 160.0 -60.0 16.0 +v 179.396912 -46.697559 -20.0 +v 189.933624 -41.748055 -20.0 +v 181.748047 -49.933628 -20.0 +v 186.697556 -39.396912 -20.0 +v 195.189087 -31.433628 -20.0 +v 170.197571 -51.384865 -20.0 +v 171.433624 -55.189091 -20.0 +v 191.384872 -30.197559 -20.0 +v 197.0 -20.0 -20.0 +v 160.0 -53.0 -20.0 +v 160.0 -57.0 -20.0 +v 193.0 -20.0 -20.0 +v 197.0 160.0 -20.0 +v -20.0 -53.0 -20.0 +v 193.0 160.0 -20.0 +v -30.197561 -51.384865 -20.0 +v 191.384872 170.197556 -20.0 +v 195.189087 171.433624 -20.0 +v -39.396912 -46.697559 -20.0 +v 186.697556 179.396912 -20.0 +v 189.933624 181.748047 -20.0 +v -46.697559 -39.396915 -20.0 +v 181.748047 189.933624 -20.0 +v 179.396912 186.697556 -20.0 +v -51.384865 -30.197561 -20.0 +v 170.197556 191.384872 -20.0 +v 171.433624 195.189087 -20.0 +v -53.0 -20.0 -20.0 +v 160.0 197.0 -20.0 +v 160.0 193.0 -20.0 +v -53.0 160.0 -20.0 +v -20.0 197.0 -20.0 +v -20.0 193.0 -20.0 +v -30.197561 191.384872 -20.0 +v -51.384865 170.197556 -20.0 +v -55.189091 171.433624 -20.0 +v -31.433628 195.189087 -20.0 +v -49.933628 181.748047 -20.0 +v -46.697559 179.396912 -20.0 +v -41.748055 189.933624 -20.0 +v -39.396912 186.697556 -20.0 +v -57.902618 172.315308 -17.927052 +v -57.497353 172.183624 -18.763355 +v -56.866142 171.978531 -19.427052 +v -56.07077 171.720108 -19.85317 +v -52.24189 183.42511 -17.927052 +v -51.897156 183.174637 -18.763355 +v -51.360214 182.784531 -19.427052 +v -50.683628 182.292969 -19.85317 +v -43.425106 192.241898 -17.927052 +v -43.174641 191.897156 -18.763355 +v -42.784531 191.360214 -19.427052 +v -42.292961 190.683624 -19.85317 +v -32.315308 197.902618 -17.927052 +v -20.0 199.853165 -17.927052 +v -32.183628 197.49736 -18.763355 +v -20.0 199.427048 -18.763355 +v -20.0 198.763351 -19.427052 +v -31.978537 196.866135 -19.427052 +v -31.720104 196.07077 -19.85317 +v -20.0 197.927048 -19.85317 +v 189.124619 -41.160271 20.0 +v 179.984695 -47.506577 20.0 +v 181.160263 -49.124611 20.0 +v 187.506577 -39.984695 20.0 +v 194.238037 -31.124611 20.0 +v 170.506577 -52.335918 20.0 +v 171.124619 -54.238033 20.0 +v 192.335922 -30.506577 20.0 +v 196.0 -20.0 20.0 +v 160.0 -54.0 20.0 +v 160.0 -56.0 20.0 +v 194.0 -20.0 20.0 +v 196.0 160.0 20.0 +v -20.0 -54.0 20.0 +v 194.0 160.0 20.0 +v -30.506577 -52.335922 20.0 +v 194.238037 171.124619 20.0 +v 192.335922 170.506577 20.0 +v -39.984699 -47.506577 20.0 +v 189.124619 181.160263 20.0 +v 187.506577 179.984695 20.0 +v -47.506577 -39.984699 20.0 +v 179.984695 187.506577 20.0 +v 181.160263 189.124619 20.0 +v -52.335922 -30.506578 20.0 +v 171.124619 194.238037 20.0 +v 170.506577 192.335922 20.0 +v -54.0 -20.0 20.0 +v 160.0 196.0 20.0 +v 160.0 194.0 20.0 +v -54.0 160.0 20.0 +v -20.0 196.0 20.0 +v -20.0 194.0 20.0 +v -30.506578 192.335922 20.0 +v -54.238033 171.124619 20.0 +v -52.335922 170.506577 20.0 +v -31.124611 194.238037 20.0 +v -47.506577 179.984695 20.0 +v -49.124611 181.160263 20.0 +v -39.984699 187.506577 20.0 +v -41.160271 189.124619 20.0 +v -32.300182 197.856064 17.236069 +v -20.0 199.80423 17.236069 +v -32.124611 197.31572 18.351141 +v -20.0 199.236069 18.351141 +v -31.851154 196.474106 19.236069 +v -20.0 198.351135 19.236069 +v -31.506578 195.413605 19.804226 +v -20.0 197.236069 19.804226 +v -43.396336 192.202301 17.236069 +v -43.062382 191.742645 18.351141 +v -42.542236 191.026718 19.236069 +v -41.88681 190.124619 19.804226 +v -52.202297 183.396332 17.236069 +v -51.742645 183.062378 18.351141 +v -51.026726 182.542236 19.236069 +v -50.124611 181.88681 19.804226 +v -57.856068 172.300186 17.236069 +v -57.31572 172.124619 18.351141 +v -56.474102 171.851151 19.236069 +v -55.413605 171.506577 19.804226 +v 160.0 200.0 -17.0 +v 160.0 200.0 16.0 +v 160.0 -57.927052 -19.85317 +v 160.0 -58.763355 -19.427052 +v 160.0 -59.427052 -18.763355 +v 160.0 -59.853168 -17.927052 +v 160.0 -59.804226 17.236069 +v 160.0 -59.236069 18.351141 +v 160.0 -58.351143 19.236069 +v 160.0 -57.236069 19.804226 +v 200.0 -20.0 -17.0 +v 200.0 -20.0 16.0 +v 198.042267 -32.36068 16.0 +v 198.042267 -32.36068 -17.0 +v 192.360687 -43.51141 16.0 +v 192.360687 -43.51141 -17.0 +v 183.511414 -52.36068 16.0 +v 183.511414 -52.36068 -17.0 +v 172.360687 -58.042259 -17.0 +v 172.360687 -58.042259 16.0 +v 160.0 197.927048 -19.85317 +v 160.0 198.763351 -19.427052 +v 160.0 199.427048 -18.763355 +v 160.0 199.853165 -17.927052 +v 197.902618 -32.315308 -17.927052 +v 199.853165 -20.0 -17.927052 +v 197.49736 -32.183628 -18.763355 +v 199.427048 -20.0 -18.763355 +v 196.866135 -31.978537 -19.427052 +v 198.763351 -20.0 -19.427052 +v 196.07077 -31.720104 -19.85317 +v 197.927048 -20.0 -19.85317 +v 192.241898 -43.425106 -17.927052 +v 191.897156 -43.174641 -18.763355 +v 191.360214 -42.784531 -19.427052 +v 190.683624 -42.292961 -19.85317 +v 183.42511 -52.24189 -17.927052 +v 183.174637 -51.897156 -18.763355 +v 182.784531 -51.360214 -19.427052 +v 182.292969 -50.683628 -19.85317 +v 172.315308 -57.902618 -17.927052 +v 172.183624 -57.497353 -18.763355 +v 171.978531 -56.866142 -19.427052 +v 171.720108 -56.07077 -19.85317 +v 199.853165 160.0 -17.927052 +v 198.042267 172.360687 -17.0 +v 200.0 160.0 -17.0 +v 172.315308 197.902618 -17.927052 +v 172.360687 198.042267 -17.0 +v 172.183624 197.49736 -18.763355 +v 171.978531 196.866135 -19.427052 +v 171.720108 196.07077 -19.85317 +v 183.42511 192.241898 -17.927052 +v 183.511414 192.360687 -17.0 +v 183.174637 191.897156 -18.763355 +v 182.784531 191.360214 -19.427052 +v 182.292969 190.683624 -19.85317 +v 192.241898 183.42511 -17.927052 +v 192.360687 183.511414 -17.0 +v 191.897156 183.174637 -18.763355 +v 191.360214 182.784531 -19.427052 +v 190.683624 182.292969 -19.85317 +v 197.902618 172.315308 -17.927052 +v 199.427048 160.0 -18.763355 +v 197.49736 172.183624 -18.763355 +v 198.763351 160.0 -19.427052 +v 196.866135 171.978531 -19.427052 +v 196.07077 171.720108 -19.85317 +v 197.927048 160.0 -19.85317 +v -52.072948 -20.0 -19.85317 +v -52.072948 160.0 -19.85317 +v -51.236645 -20.0 -19.427052 +v -51.236645 160.0 -19.427052 +v -50.572948 160.0 -18.763355 +v -50.572948 -20.0 -18.763355 +v -50.146832 -20.0 -17.927052 +v -50.146832 160.0 -17.927052 +v -50.0 -20.0 -17.0 +v -50.0 160.0 -17.0 +v -50.503185 169.911087 -19.85317 +v -49.707813 169.652649 -19.427052 +v -49.076603 169.447556 -18.763355 +v -48.671341 169.315887 -17.927052 +v -48.531696 169.270508 -17.0 +v -45.947559 178.852005 -19.85317 +v -45.270977 178.360443 -19.427052 +v -44.734035 177.970322 -18.763355 +v -44.389297 177.719864 -17.927052 +v -44.270512 177.63356 -17.0 +v -38.852005 185.947556 -19.85317 +v -38.360439 185.270981 -19.427052 +v -37.970329 184.734039 -18.763355 +v -37.719864 184.389297 -17.927052 +v -37.633556 184.270508 -17.0 +v -29.911087 190.503189 -19.85317 +v -20.0 192.072952 -19.85317 +v -29.652655 189.707809 -19.427052 +v -20.0 191.236649 -19.427052 +v -20.0 190.572952 -18.763355 +v -29.447561 189.076599 -18.763355 +v -29.315884 188.671341 -17.927052 +v -20.0 190.0 -17.0 +v -29.27051 188.531693 -17.0 +v -20.0 190.146835 -17.927052 +v -20.0 -52.072948 -19.85317 +v -48.531696 -29.27051 -17.0 +v -29.911085 -50.503189 -19.85317 +v -29.652653 -49.707813 -19.427052 +v -20.0 -51.236645 -19.427052 +v -29.447561 -49.076603 -18.763355 +v -20.0 -50.572948 -18.763355 +v -29.315882 -48.671341 -17.927052 +v -29.27051 -48.531696 -17.0 +v -20.0 -50.0 -17.0 +v -20.0 -50.146832 -17.927052 +v -38.852005 -45.947559 -19.85317 +v -38.360439 -45.270977 -19.427052 +v -37.970329 -44.734035 -18.763355 +v -37.719864 -44.389297 -17.927052 +v -37.633556 -44.270512 -17.0 +v -45.947559 -38.852005 -19.85317 +v -45.270977 -38.360439 -19.427052 +v -44.734035 -37.970329 -18.763355 +v -44.389297 -37.719864 -17.927052 +v -44.270508 -37.633556 -17.0 +v -50.503185 -29.911087 -19.85317 +v -49.707813 -29.652655 -19.427052 +v -49.076603 -29.447561 -18.763355 +v -48.671341 -29.315884 -17.927052 +v 160.0 192.072952 -19.85317 +v 160.0 191.236649 -19.427052 +v 160.0 190.572952 -18.763355 +v 160.0 190.146835 -17.927052 +v 160.0 190.0 -17.0 +v 160.0 -52.072948 -19.85317 +v 160.0 -51.236645 -19.427052 +v 160.0 -50.572948 -18.763355 +v 160.0 -50.146832 -17.927052 +v 160.0 -50.0 -17.0 +v 169.911087 190.503189 -19.85317 +v 169.652649 189.707809 -19.427052 +v 169.447556 189.076599 -18.763355 +v 169.315887 188.671341 -17.927052 +v 169.270508 188.531693 -17.0 +v 178.852005 185.947556 -19.85317 +v 178.360443 185.270981 -19.427052 +v 177.970322 184.734039 -18.763355 +v 177.719864 184.389297 -17.927052 +v 177.63356 184.270508 -17.0 +v 185.947556 178.852005 -19.85317 +v 185.270981 178.360443 -19.427052 +v 184.734039 177.970322 -18.763355 +v 184.389297 177.719864 -17.927052 +v 184.270508 177.63356 -17.0 +v 190.503189 169.911087 -19.85317 +v 192.072952 160.0 -19.85317 +v 189.707809 169.652649 -19.427052 +v 191.236649 160.0 -19.427052 +v 189.076599 169.447556 -18.763355 +v 190.572952 160.0 -18.763355 +v 188.671341 169.315887 -17.927052 +v 190.0 160.0 -17.0 +v 188.531693 169.270508 -17.0 +v 190.146835 160.0 -17.927052 +v 190.503189 -29.911085 -19.85317 +v 192.072952 -20.0 -19.85317 +v 189.707809 -29.652653 -19.427052 +v 191.236649 -20.0 -19.427052 +v 189.076599 -29.447559 -18.763355 +v 190.572952 -20.0 -18.763355 +v 188.671341 -29.315882 -17.927052 +v 188.531693 -29.27051 -17.0 +v 190.0 -20.0 -17.0 +v 190.146835 -20.0 -17.927052 +v 185.947556 -38.852005 -19.85317 +v 185.270981 -38.360435 -19.427052 +v 184.734039 -37.970325 -18.763355 +v 184.389297 -37.71986 -17.927052 +v 184.270508 -37.633556 -17.0 +v 178.852005 -45.947559 -19.85317 +v 178.360443 -45.270973 -19.427052 +v 177.970337 -44.734032 -18.763355 +v 177.719864 -44.389297 -17.927052 +v 177.63356 -44.270508 -17.0 +v 169.911087 -50.503185 -19.85317 +v 169.652664 -49.707813 -19.427052 +v 169.447571 -49.076603 -18.763355 +v 169.315887 -48.671337 -17.927052 +v 169.270508 -48.531693 -17.0 +v 160.0 199.80423 17.236069 +v 160.0 199.236069 18.351141 +v 160.0 198.351135 19.236069 +v 160.0 197.236069 19.804226 +v 172.300186 -57.856068 17.236069 +v 172.124619 -57.31572 18.351141 +v 171.851151 -56.474102 19.236069 +v 171.506577 -55.413605 19.804226 +v 183.396332 -52.202297 17.236069 +v 183.062378 -51.742645 18.351141 +v 182.542236 -51.026726 19.236069 +v 181.88681 -50.124611 19.804226 +v 192.202301 -43.396336 17.236069 +v 191.742645 -43.062382 18.351141 +v 191.026718 -42.542236 19.236069 +v 190.124619 -41.88681 19.804226 +v 197.856064 -32.300182 17.236069 +v 199.80423 -20.0 17.236069 +v 197.31572 -32.124611 18.351141 +v 199.236069 -20.0 18.351141 +v 196.474106 -31.851154 19.236069 +v 198.351135 -20.0 19.236069 +v 195.413605 -31.506578 19.804226 +v 197.236069 -20.0 19.804226 +v 197.856064 172.300186 17.236069 +v 199.80423 160.0 17.236069 +v 200.0 160.0 16.0 +v 198.042267 172.360687 16.0 +v 197.31572 172.124619 18.351141 +v 199.236069 160.0 18.351141 +v 196.474106 171.851151 19.236069 +v 198.351135 160.0 19.236069 +v 195.413605 171.506577 19.804226 +v 197.236069 160.0 19.804226 +v 192.202301 183.396332 17.236069 +v 192.360687 183.511414 16.0 +v 183.511414 192.360687 16.0 +v 191.742645 183.062378 18.351141 +v 191.026718 182.542236 19.236069 +v 190.124619 181.88681 19.804226 +v 183.396332 192.202301 17.236069 +v 183.062378 191.742645 18.351141 +v 182.542236 191.026718 19.236069 +v 181.88681 190.124619 19.804226 +v 172.300186 197.856064 17.236069 +v 172.360687 198.042267 16.0 +v 172.124619 197.31572 18.351141 +v 171.851151 196.474106 19.236069 +v 171.506577 195.413605 19.804226 +v -50.195774 -20.0 17.236069 +v -50.0 160.0 16.0 +v -50.195774 160.0 17.236069 +v -50.0 -20.0 16.0 +v -50.763931 -20.0 18.351141 +v -50.763931 160.0 18.351141 +v -51.648857 160.0 19.236069 +v -51.648857 -20.0 19.236069 +v -52.763931 -20.0 19.804226 +v -52.763931 160.0 19.804226 +v -48.717888 169.331009 17.236069 +v -48.531696 169.270508 16.0 +v -49.25824 169.506577 18.351141 +v -50.099854 169.780029 19.236069 +v -51.160351 170.124619 19.804226 +v -44.428894 177.748627 17.236069 +v -44.270512 177.63356 16.0 +v -44.888542 178.082581 18.351141 +v -45.604465 178.602737 19.236069 +v -46.506577 179.258163 19.804226 +v -37.748631 184.428894 17.236069 +v -37.633556 184.270508 16.0 +v -38.082584 184.88855 18.351141 +v -38.602734 185.604462 19.236069 +v -39.258156 186.506577 19.804226 +v -29.331007 188.71788 17.236069 +v -29.27051 188.531693 16.0 +v -20.0 190.0 16.0 +v -20.0 190.19577 17.236069 +v -20.0 190.763931 18.351141 +v -29.506578 189.25824 18.351141 +v -29.780035 190.099854 19.236069 +v -20.0 191.648865 19.236069 +v -30.124611 191.160355 19.804226 +v -20.0 192.763931 19.804226 +v -29.27051 -48.531696 16.0 +v -20.0 -50.195774 17.236069 +v -20.0 -50.0 16.0 +v -48.531696 -29.27051 16.0 +v -29.331007 -48.717888 17.236069 +v -20.0 -50.763931 18.351141 +v -29.506577 -49.25824 18.351141 +v -29.780035 -50.099854 19.236069 +v -20.0 -51.648857 19.236069 +v -30.124611 -51.160351 19.804226 +v -20.0 -52.763931 19.804226 +v -37.748631 -44.428894 17.236069 +v -37.633556 -44.270512 16.0 +v -38.082584 -44.888542 18.351141 +v -38.602734 -45.604465 19.236069 +v -39.258156 -46.506577 19.804226 +v -44.428894 -37.748631 17.236069 +v -44.270508 -37.633556 16.0 +v -44.888542 -38.082584 18.351141 +v -45.604465 -38.602734 19.236069 +v -46.506577 -39.258156 19.804226 +v -48.717888 -29.331007 17.236069 +v -49.25824 -29.506578 18.351141 +v -50.099854 -29.780035 19.236069 +v -51.160351 -30.124613 19.804226 +v 160.0 190.0 16.0 +v 160.0 190.19577 17.236069 +v 160.0 190.763931 18.351141 +v 160.0 191.648865 19.236069 +v 160.0 192.763931 19.804226 +v 160.0 -50.0 16.0 +v 160.0 -50.195774 17.236069 +v 160.0 -50.763931 18.351141 +v 160.0 -51.648857 19.236069 +v 160.0 -52.763931 19.804226 +v 169.331009 188.71788 17.236069 +v 169.270508 188.531693 16.0 +v 169.506577 189.25824 18.351141 +v 169.780029 190.099854 19.236069 +v 170.124619 191.160355 19.804226 +v 177.748627 184.428894 17.236069 +v 177.63356 184.270508 16.0 +v 184.270508 177.63356 16.0 +v 178.082581 184.88855 18.351141 +v 178.602737 185.604462 19.236069 +v 179.258163 186.506577 19.804226 +v 184.428894 177.748627 17.236069 +v 184.88855 178.082581 18.351141 +v 185.604462 178.602737 19.236069 +v 186.506577 179.258163 19.804226 +v 188.71788 169.331009 17.236069 +v 188.531693 169.270508 16.0 +v 190.0 160.0 16.0 +v 190.19577 160.0 17.236069 +v 189.25824 169.506577 18.351141 +v 190.763931 160.0 18.351141 +v 190.099854 169.780029 19.236069 +v 191.648865 160.0 19.236069 +v 191.160355 170.124619 19.804226 +v 192.763931 160.0 19.804226 +v 188.531693 -29.27051 16.0 +v 190.19577 -20.0 17.236069 +v 190.0 -20.0 16.0 +v 188.71788 -29.331007 17.236069 +v 189.25824 -29.506577 18.351141 +v 190.763931 -20.0 18.351141 +v 190.099854 -29.780035 19.236069 +v 191.648865 -20.0 19.236069 +v 191.160355 -30.124611 19.804226 +v 192.763931 -20.0 19.804226 +v 184.428894 -37.748631 17.236069 +v 184.270508 -37.633556 16.0 +v 184.88855 -38.082584 18.351141 +v 185.604462 -38.60273 19.236069 +v 186.506577 -39.258156 19.804226 +v 177.748627 -44.428894 17.236069 +v 177.63356 -44.270508 16.0 +v 178.082581 -44.888542 18.351141 +v 178.602737 -45.604462 19.236069 +v 179.258163 -46.506577 19.804226 +v 169.331009 -48.717888 17.236069 +v 169.270508 -48.531693 16.0 +v 169.506577 -49.258236 18.351141 +v 169.780045 -50.099854 19.236069 +v 170.124619 -51.160351 19.804226 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -0.1564345806837082 -0.9876883029937744 0.0 +vn -0.1564345806837082 -0.9876883029937744 0.0 +vn -0.4539904296398163 -0.8910065293312073 0.0 +vn -0.7071067690849304 -0.7071067690849304 0.0 +vn -0.4539904296398163 -0.8910065293312073 0.0 +vn -0.7071067690849304 -0.7071067690849304 0.0 +vn -0.8910065293312073 -0.4539904296398163 0.0 +vn -0.8910065293312073 -0.4539904296398163 0.0 +vn -0.9876883029937744 -0.1564345806837082 0.0 +vn -0.9876883029937744 -0.1564345806837082 0.0 +vn -0.15643349289894104 0.0 -0.9876885414123535 +vn -0.15643349289894104 -0.0 -0.9876885414123535 +vn -0.45399123430252075 -0.0 -0.8910062313079834 +vn -0.45399123430252075 0.0 -0.8910062313079834 +vn -0.7071067690849304 -0.0 -0.7071067690849304 +vn -0.7071067690849304 0.0 -0.7071067690849304 +vn -0.8910070061683655 -0.0 -0.45398959517478943 +vn -0.8910070061683655 0.0 -0.45398959517478943 +vn -0.9876881837844849 -0.0 -0.15643547475337982 +vn -0.9876881837844849 0.0 -0.15643547475337982 +vn -0.9876883029937744 0.0 0.15643447637557983 +vn -0.9876883029937744 0.0 0.15643447637557983 +vn -0.8910066485404968 0.0 0.4539901614189148 +vn -0.7071075439453125 0.0 0.7071060538291931 +vn -0.8910066485404968 0.0 0.4539901614189148 +vn -0.7071075439453125 0.0 0.7071060538291931 +vn -0.45398959517478943 0.0 0.8910070061683655 +vn -0.45398959517478943 0.0 0.8910070061683655 +vn -0.15643447637557983 0.0 0.9876883029937744 +vn -0.15643447637557983 0.0 0.9876883029937744 +vn -0.9876883029937744 0.15643447637557983 0.0 +vn -0.9876883029937744 0.15643447637557983 0.0 +vn -0.8910065293312073 0.45399054884910583 0.0 +vn -0.7071069478988647 0.7071066498756409 0.0 +vn -0.8910065293312073 0.45399054884910583 0.0 +vn -0.7071069478988647 0.7071066498756409 0.0 +vn -0.4539904296398163 0.8910065293312073 0.0 +vn -0.4539904296398163 0.8910065293312073 0.0 +vn -0.15643398463726044 0.9876884818077087 0.0 +vn -0.15643398463726044 0.9876884818077087 0.0 +vn -0.02476903796195984 -0.15638551115989685 -0.9873854517936707 +vn -0.9758203029632568 -0.15455487370491028 -0.1545557677745819 +vn -0.15455451607704163 -0.9758203029632568 -0.1545557826757431 +vn -0.15455499291419983 -0.9758210182189941 -0.1545511931180954 +vn -0.13973717391490936 -0.882265031337738 -0.4495353400707245 +vn -0.13973651826381683 -0.8822630643844604 -0.4495393931865692 +vn -0.11129884421825409 -0.7027135491371155 -0.7027134895324707 +vn -0.11129920184612274 -0.7027148604393005 -0.7027120590209961 +vn -0.0717199370265007 -0.4528220593929291 -0.8887116312980652 +vn -0.02476898394525051 -0.15638528764247894 -0.9873855113983154 +vn -0.0717199519276619 -0.4528220593929291 -0.8887116312980652 +vn -0.44853535294532776 -0.8803004026412964 -0.15455545485019684 +vn -0.4485359489917755 -0.8803008198738098 -0.154551163315773 +vn -0.40553322434425354 -0.795903205871582 -0.44953417778015137 +vn -0.40553146600723267 -0.7959008812904358 -0.44953975081443787 +vn -0.323001891374588 -0.6339272856712341 -0.7027132511138916 +vn -0.3230026364326477 -0.6339284777641296 -0.7027118802070618 +vn -0.07188257575035095 -0.14107750356197357 -0.9873854517936707 +vn -0.11195973306894302 -0.11195973306894302 -0.9873854517936707 +vn -0.2081388384103775 -0.4084954857826233 -0.8887124061584473 +vn -0.2081395834684372 -0.40849676728248596 -0.8887116312980652 +vn -0.07188243418931961 -0.1410771608352661 -0.9873855113983154 +vn -0.6986103057861328 -0.6986103057861328 -0.15455487370491028 +vn -0.8803004026412964 -0.44853535294532776 -0.15455545485019684 +vn -0.6986103653907776 -0.6986103653907776 -0.1545550376176834 +vn -0.631632387638092 -0.6316323280334473 -0.44953441619873047 +vn -0.631632387638092 -0.631632387638092 -0.44953426718711853 +vn -0.5030876398086548 -0.5030876398086548 -0.702713131904602 +vn -0.5030876994132996 -0.5030876994132996 -0.7027129530906677 +vn -0.11195974797010422 -0.11195974797010422 -0.9873853921890259 +vn -0.32418376207351685 -0.32418376207351685 -0.8887124061584473 +vn -0.32418379187583923 -0.32418379187583923 -0.8887124061584473 +vn -0.8803008198738098 -0.4485359489917755 -0.154551163315773 +vn -0.9758211374282837 -0.15455465018749237 -0.1545511782169342 +vn -0.882265031337738 -0.13973717391490936 -0.4495353400707245 +vn -0.7027134299278259 -0.11129898577928543 -0.7027134895324707 +vn -0.7959033846855164 -0.40553274750709534 -0.44953423738479614 +vn -0.8822630643844604 -0.13973651826381683 -0.4495393931865692 +vn -0.7959007620811462 -0.40553194284439087 -0.44953957200050354 +vn -0.6339285373687744 -0.32300248742103577 -0.7027119398117065 +vn -0.6339272856712341 -0.32300201058387756 -0.7027131915092468 +vn -0.7027149200439453 -0.1112990602850914 -0.7027120590209961 +vn -0.4528220593929291 -0.0717199370265007 -0.8887116312980652 +vn -0.15638551115989685 -0.024769021198153496 -0.9873855113983154 +vn -0.1410771608352661 -0.07188240438699722 -0.9873855710029602 +vn -0.15638528764247894 -0.024769000709056854 -0.9873855710029602 +vn -0.4528220593929291 -0.0717199519276619 -0.8887116312980652 +vn -0.14107754826545715 -0.07188263535499573 -0.9873855113983154 +vn -0.4084954857826233 -0.20813892781734467 -0.8887122869491577 +vn -0.4084967076778412 -0.20813941955566406 -0.88871169090271 +vn -0.15455490350723267 -0.9758204221725464 0.1545547991991043 +vn -0.9758205413818359 -0.1545548439025879 0.15455476939678192 +vn -0.9758205413818359 -0.15455491840839386 0.15455427765846252 +vn -0.8822647333145142 -0.13973696529865265 0.44953596591949463 +vn -0.8822650909423828 -0.1397371143102646 0.4495350420475006 +vn -0.702714204788208 -0.11129914224147797 0.7027128338813782 +vn -0.7027130722999573 -0.11129878461360931 0.7027139663696289 +vn -0.15638643503189087 -0.024769196286797523 0.9873852729797363 +vn -0.45282045006752014 -0.07171975821256638 0.8887125253677368 +vn -0.15638649463653564 -0.024769200012087822 0.9873853325843811 +vn -0.45282089710235596 -0.07171987742185593 0.8887122869491577 +vn -0.6986103653907776 -0.6986103653907776 0.15455418825149536 +vn -0.8803005814552307 -0.4485354423522949 0.15455368161201477 +vn -0.8803005218505859 -0.44853535294532776 0.15455444157123566 +vn -0.7959018349647522 -0.4055320620536804 0.4495375156402588 +vn -0.7959027886390686 -0.4055328667163849 0.44953519105911255 +vn -0.4084957242012024 -0.20813889801502228 0.8887122273445129 +vn -0.6339269876480103 -0.32300177216529846 0.7027136087417603 +vn -0.6339279413223267 -0.32300254702568054 0.70271235704422 +vn -0.14107853174209595 -0.07188307493925095 0.9873852729797363 +vn -0.4084947109222412 -0.20813851058483124 0.8887127637863159 +vn -0.1410781741142273 -0.0718829333782196 0.9873853921890259 +vn -0.6986104249954224 -0.6986104249954224 0.15455420315265656 +vn -0.503088116645813 -0.503088116645813 0.70271235704422 +vn -0.6316313743591309 -0.6316313743591309 0.44953712821006775 +vn -0.6316313147544861 -0.6316313147544861 0.4495372176170349 +vn -0.5030881762504578 -0.5030881762504578 0.70271235704422 +vn -0.07188307493925095 -0.14107853174209595 0.9873852729797363 +vn -0.11196061968803406 -0.11196061968803406 0.9873852729797363 +vn -0.11196058243513107 -0.11196058243513107 0.9873852729797363 +vn -0.3241831958293915 -0.3241831958293915 0.8887128829956055 +vn -0.3241831958293915 -0.3241831958293915 0.8887128233909607 +vn -0.44853541254997253 -0.8803005218505859 0.15455427765846252 +vn -0.44853541254997253 -0.8803006410598755 0.15455372631549835 +vn -0.15455485880374908 -0.9758206009864807 0.15455427765846252 +vn -0.13973696529865265 -0.8822647333145142 0.44953596591949463 +vn -0.1397371143102646 -0.8822650909423828 0.4495350420475006 +vn -0.4055323004722595 -0.7959016561508179 0.44953757524490356 +vn -0.32300248742103577 -0.6339279413223267 0.7027124166488647 +vn -0.405532568693161 -0.7959027290344238 0.4495353698730469 +vn -0.11129914224147797 -0.702714204788208 0.7027128338813782 +vn -0.11129878461360931 -0.7027130722999573 0.7027139663696289 +vn -0.3230017125606537 -0.6339268684387207 0.7027137875556946 +vn -0.024769196286797523 -0.15638643503189087 0.9873852729797363 +vn -0.07171975821256638 -0.45282045006752014 0.8887125253677368 +vn -0.024769200012087822 -0.15638649463653564 0.9873853325843811 +vn -0.0718829482793808 -0.1410781890153885 0.9873853921890259 +vn -0.20813849568367004 -0.4084946811199188 0.8887128233909607 +vn -0.07171987742185593 -0.45282089710235596 0.8887122869491577 +vn -0.20813889801502228 -0.4084957540035248 0.8887122869491577 +vn 0.0 -1.0 0.0 +vn 0.0 -1.0 0.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 0.0 -1.0 +vn 0.0 -0.0 -1.0 +vn -0.9758203029632568 0.15455451607704163 -0.1545557826757431 +vn -0.975820779800415 0.15455485880374908 -0.1545524150133133 +vn -0.8822649717330933 0.13973721861839294 -0.4495353102684021 +vn -0.8822627663612366 0.13973647356033325 -0.4495398998260498 +vn -0.7027135491371155 0.11129890382289886 -0.7027134895324707 +vn -0.7027146816253662 0.11129921674728394 -0.7027122378349304 +vn -0.45282211899757385 0.07171992212533951 -0.88871169090271 +vn -0.15638548135757446 0.02476900815963745 -0.9873854517936707 +vn -0.15638506412506104 0.024768974632024765 -0.9873855710029602 +vn -0.452822744846344 0.07172008603811264 -0.8887113332748413 +vn -0.8803002834320068 0.4485354721546173 -0.15455545485019684 +vn -0.6986105442047119 0.6986101865768433 -0.15455490350723267 +vn -0.8803003430366516 0.4485355317592621 -0.15455494821071625 +vn -0.7959019541740417 0.4055323898792267 -0.449537068605423 +vn -0.7959001660346985 0.405531108379364 -0.4495413303375244 +vn -0.6339281797409058 0.32300230860710144 -0.70271235704422 +vn -0.6339280605316162 0.32300224900245667 -0.70271235704422 +vn -0.1410764455795288 0.07188206911087036 -0.987385630607605 +vn -0.11195847392082214 0.11195842176675797 -0.9873857498168945 +vn -0.4084968864917755 0.20813943445682526 -0.8887115716934204 +vn -0.4084983766078949 0.2081403285264969 -0.8887106776237488 +vn -0.14107660949230194 0.07188213616609573 -0.9873855710029602 +vn -0.6316308975219727 0.6316306591033936 -0.4495387375354767 +vn -0.6986104846000671 0.698610246181488 -0.15455488860607147 +vn -0.6316308379173279 0.631630539894104 -0.4495390057563782 +vn -0.5030887126922607 0.5030887126922607 -0.7027115821838379 +vn -0.32418540120124817 0.32418540120124817 -0.8887112736701965 +vn -0.5030876994132996 0.5030874609947205 -0.702713131904602 +vn -0.11195966601371765 0.11195981502532959 -0.9873855113983154 +vn -0.3241826593875885 0.3241831064224243 -0.888713002204895 +vn -0.44853511452674866 0.880299985408783 -0.1545582264661789 +vn -0.15455421805381775 0.9758198857307434 -0.15455901622772217 +vn -0.15455414354801178 0.9758198261260986 -0.15455962717533112 +vn -0.44853511452674866 0.8803003430366516 -0.15455566346645355 +vn -0.1397363543510437 0.8822650909423828 -0.4495353698730469 +vn -0.1112983375787735 0.7027135491371155 -0.7027136087417603 +vn -0.13973675668239594 0.8822662830352783 -0.44953295588493347 +vn -0.4055318832397461 0.7959006428718567 -0.4495399296283722 +vn -0.4055328369140625 0.7959035634994507 -0.4495337903499603 +vn -0.3230016231536865 0.6339274048805237 -0.7027133107185364 +vn -0.11129801720380783 0.7027069330215454 -0.7027202844619751 +vn -0.3229995667934418 0.6339218616485596 -0.7027192711830139 +vn -0.07171980291604996 0.45282214879989624 -0.8887116312980652 +vn -0.024769065901637077 0.1563861221075058 -0.9873853921890259 +vn -0.07188212871551514 0.14107663929462433 -0.987385630607605 +vn -0.024768952280282974 0.1563846319913864 -0.987385630607605 +vn -0.07172059267759323 0.45282527804374695 -0.8887099027633667 +vn -0.07188262790441513 0.1410774439573288 -0.9873853921890259 +vn -0.2081383317708969 0.4084940254688263 -0.8887132406234741 +vn -0.2081405371427536 0.40849944949150085 -0.8887101411819458 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 -0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 -0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 -0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 -0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn 0.0 0.0 1.0 +vn -0.9758204817771912 0.1545548141002655 0.1545547991991043 +vn -0.1545555144548416 0.9758208990097046 0.15455187857151031 +vn -0.1545541137456894 0.9758192896842957 0.1545630693435669 +vn -0.13973677158355713 0.8822635412216187 0.44953832030296326 +vn -0.1397378295660019 0.8822662234306335 0.449532687664032 +vn -0.11129800230264664 0.702711284160614 0.7027158737182617 +vn -0.11129901558160782 0.7027145624160767 0.7027124166488647 +vn -0.024769220501184464 0.15638692677021027 0.9873852729797363 +vn -0.07172014564275742 0.45282289385795593 0.8887112140655518 +vn -0.024769200012087822 0.15638649463653564 0.9873853325843811 +vn -0.07171926647424698 0.4528197944164276 0.8887128829956055 +vn -0.448535293340683 0.8803002238273621 0.15455634891986847 +vn -0.4485343396663666 0.8802996873855591 0.15456213057041168 +vn -0.4055326282978058 0.7959039807319641 0.4495331943035126 +vn -0.40553179383277893 0.7959007024765015 0.4495397210121155 +vn -0.3230029344558716 0.6339278817176819 0.7027122974395752 +vn -0.32300129532814026 0.6339255571365356 0.7027151584625244 +vn -0.07188303768634796 0.14107854664325714 0.9873852133750916 +vn -0.2081407755613327 0.4084985554218292 0.8887104988098145 +vn -0.20813827216625214 0.40849483013153076 0.8887128829956055 +vn -0.07188306003808975 0.14107860624790192 0.9873852729797363 +vn -0.8803001642227173 0.44853538274765015 0.15455637872219086 +vn -0.6986101269721985 0.6986097693443298 0.15455840528011322 +vn -0.6986104249954224 0.6986098885536194 0.15455667674541473 +vn -0.5030866861343384 0.503086507320404 0.7027145624160767 +vn -0.6316316723823547 0.631631076335907 0.44953712821006775 +vn -0.6316307783126831 0.631630539894104 0.4495391249656677 +vn -0.5030887126922607 0.503089189529419 0.7027111649513245 +vn -0.14107808470726013 0.0718829557299614 0.9873852729797363 +vn -0.11196021735668182 0.11196000874042511 0.9873853325843811 +vn -0.11196069419384003 0.11196058243513107 0.9873852729797363 +vn -0.3241858184337616 0.3241855204105377 0.8887110948562622 +vn -0.32418307662010193 0.3241833746433258 0.8887128233909607 +vn -0.8822646737098694 0.13973701000213623 0.44953593611717224 +vn -0.8803001642227173 0.4485354721546173 0.15455560386180878 +vn -0.9758205413818359 0.1545547991991043 0.15455475449562073 +vn -0.8822653889656067 0.13973698019981384 0.44953471422195435 +vn -0.7959014773368835 0.4055325984954834 0.4495376646518707 +vn -0.7959031462669373 0.4055330753326416 0.44953426718711853 +vn -0.7027142643928528 0.11129919439554214 0.7027127146720886 +vn -0.6339288353919983 0.3230026364326477 0.7027116417884827 +vn -0.6339247226715088 0.3230012357234955 0.7027158141136169 +vn -0.408494770526886 0.20813831686973572 0.8887128233909607 +vn -0.70271235704422 0.11129859834909439 0.7027146816253662 +vn -0.1563866287469864 0.024769209325313568 0.9873852729797363 +vn -0.4528205096721649 0.07171977311372757 0.888712465763092 +vn -0.15638647973537445 0.02476920373737812 0.9873852729797363 +vn -0.14107869565486908 0.0718831866979599 0.9873852729797363 +vn -0.4528209865093231 0.07171991467475891 0.8887122273445129 +vn -0.4084959030151367 0.2081390917301178 0.8887120485305786 +vn 0.0 1.0 0.0 +vn 0.0 1.0 -0.0 +vn 0.0 -0.15643349289894104 -0.9876885414123535 +vn 0.0 -0.15643349289894104 -0.9876885414123535 +vn 0.0 -0.45399123430252075 -0.8910062313079834 +vn 0.0 -0.45399123430252075 -0.8910062313079834 +vn 0.0 -0.7071067690849304 -0.7071067690849304 +vn 0.0 -0.7071067690849304 -0.7071067690849304 +vn 0.0 -0.8910070061683655 -0.45398959517478943 +vn 0.0 -0.8910070061683655 -0.45398959517478943 +vn 0.0 -0.9876881837844849 -0.15643547475337982 +vn 0.0 -0.9876881837844849 -0.15643547475337982 +vn 0.0 -0.9876883029937744 0.15643447637557983 +vn 0.0 -0.9876883029937744 0.15643447637557983 +vn 0.0 -0.8910066485404968 0.4539901614189148 +vn 0.0 -0.7071075439453125 0.7071060538291931 +vn 0.0 -0.8910066485404968 0.4539901614189148 +vn 0.0 -0.7071075439453125 0.7071060538291931 +vn 0.0 -0.45398959517478943 0.8910070061683655 +vn 0.0 -0.45398959517478943 0.8910070061683655 +vn 0.0 -0.15643447637557983 0.9876883029937744 +vn 0.0 -0.15643447637557983 0.9876883029937744 +vn 0.9876884818077087 -0.15643398463726044 0.0 +vn 0.8910065293312073 -0.4539904296398163 0.0 +vn 0.9876884818077087 -0.15643398463726044 0.0 +vn 0.7071066498756409 -0.7071069478988647 0.0 +vn 0.8910065293312073 -0.4539904296398163 0.0 +vn 0.7071066498756409 -0.7071069478988647 0.0 +vn 0.45399054884910583 -0.8910065293312073 0.0 +vn 0.45399054884910583 -0.8910065293312073 0.0 +vn 0.15643447637557983 -0.9876883029937744 0.0 +vn 0.15643447637557983 -0.9876883029937744 0.0 +vn 0.0 0.15643411874771118 -0.9876883625984192 +vn 0.0 0.15643411874771118 -0.9876883625984192 +vn 0.0 0.45399123430252075 -0.8910062313079834 +vn 0.0 0.45399123430252075 -0.8910062313079834 +vn 0.0 0.7071067690849304 -0.7071067690849304 +vn 0.0 0.7071067690849304 -0.7071067690849304 +vn 0.0 0.8910070061683655 -0.45398959517478943 +vn 0.0 0.8910070061683655 -0.45398959517478943 +vn 0.0 0.9876875281333923 -0.15643943846225739 +vn 0.0 0.9876875281333923 -0.15643943846225739 +vn 0.9758198261260986 -0.15455414354801178 -0.15455962717533112 +vn 0.9758198857307434 -0.15455421805381775 -0.15455901622772217 +vn 0.8822650909423828 -0.1397363543510437 -0.4495353698730469 +vn 0.8822662830352783 -0.13973675668239594 -0.44953295588493347 +vn 0.7027135491371155 -0.111299067735672 -0.7027134895324707 +vn 0.7027071118354797 -0.11129730939865112 -0.7027201652526855 +vn 0.45282214879989624 -0.07171980291604996 -0.8887116312980652 +vn 0.1563861221075058 -0.024769065901637077 -0.9873853921890259 +vn 0.1563846319913864 -0.024768952280282974 -0.987385630607605 +vn 0.45282527804374695 -0.07172059267759323 -0.8887099027633667 +vn 0.8803004026412964 -0.44853535294532776 -0.15455545485019684 +vn 0.880299985408783 -0.44853493571281433 -0.1545581966638565 +vn 0.795900821685791 -0.40553146600723267 -0.4495398998260498 +vn 0.795903205871582 -0.40553319454193115 -0.4495341181755066 +vn 0.6339271068572998 -0.3230022192001343 -0.7027133107185364 +vn 0.6339221596717834 -0.32299894094467163 -0.7027193307876587 +vn 0.14107750356197357 -0.07188257575035095 -0.9873854517936707 +vn 0.11195971816778183 -0.11195977032184601 -0.9873854517936707 +vn 0.40849432349205017 -0.20813794434070587 -0.8887131214141846 +vn 0.40849927067756653 -0.2081410139799118 -0.8887101411819458 +vn 0.14107662439346313 -0.0718822106719017 -0.9873855710029602 +vn 0.6986101865768433 -0.6986105442047119 -0.15455490350723267 +vn 0.4485354721546173 -0.8803002834320068 -0.15455545485019684 +vn 0.698610246181488 -0.6986104846000671 -0.15455500781536102 +vn 0.6316304206848145 -0.6316307187080383 -0.4495392441749573 +vn 0.631630539894104 -0.6316308379173279 -0.44953903555870056 +vn 0.5030876994132996 -0.5030876994132996 -0.7027129530906677 +vn 0.5030885338783264 -0.5030887126922607 -0.7027117013931274 +vn 0.11195854842662811 -0.11195839196443558 -0.9873857498168945 +vn 0.32418546080589294 -0.32418543100357056 -0.888711154460907 +vn 0.32418304681777954 -0.3241825997829437 -0.8887131810188293 +vn 0.15455485880374908 -0.975820779800415 -0.1545524150133133 +vn 0.15455451607704163 -0.9758203029632568 -0.1545557826757431 +vn 0.1397368460893631 -0.882265031337738 -0.4495353102684021 +vn 0.4485355317592621 -0.8803003430366516 -0.15455475449562073 +vn 0.11129902303218842 -0.7027134895324707 -0.7027134895324707 +vn 0.40553149580955505 -0.7959001064300537 -0.4495410919189453 +vn 0.1397368460893631 -0.882262647151947 -0.4495399594306946 +vn 0.4055320620536804 -0.7959020733833313 -0.44953712821006775 +vn 0.32300224900245667 -0.6339280605316162 -0.70271235704422 +vn 0.11129909008741379 -0.702714741230011 -0.7027122378349304 +vn 0.32300230860710144 -0.633928120136261 -0.7027124166488647 +vn 0.07171992212533951 -0.45282211899757385 -0.88871169090271 +vn 0.02476900815963745 -0.15638548135757446 -0.9873854517936707 +vn 0.07188215106725693 -0.14107660949230194 -0.987385630607605 +vn 0.024768974632024765 -0.15638506412506104 -0.9873855710029602 +vn 0.07188206166028976 -0.1410764753818512 -0.9873855710029602 +vn 0.07172008603811264 -0.452822744846344 -0.8887113332748413 +vn 0.208139568567276 -0.4084968566894531 -0.8887115120887756 +vn 0.20814019441604614 -0.4084984064102173 -0.8887107372283936 +vn 0.9758197665214539 0.154554083943367 -0.15455970168113708 +vn 0.15455414354801178 0.9758198261260986 -0.15455962717533112 +vn 0.1545540988445282 0.9758197665214539 -0.15456025302410126 +vn 0.13973641395568848 0.8822651505470276 -0.44953539967536926 +vn 0.13973671197891235 0.8822659850120544 -0.44953346252441406 +vn 0.11129911988973618 0.7027135491371155 -0.7027134895324707 +vn 0.11129730939865112 0.7027068138122559 -0.7027203440666199 +vn 0.07171976566314697 0.4528220295906067 -0.88871169090271 +vn 0.02476906031370163 0.156386137008667 -0.9873853921890259 +vn 0.024768926203250885 0.1563844084739685 -0.987385630607605 +vn 0.07172073423862457 0.45282596349716187 -0.8887096047401428 +vn 0.4485354721546173 0.8803002834320068 -0.15455545485019684 +vn 0.4485345482826233 0.8802996277809143 -0.15456199645996094 +vn 0.4055306613445282 0.7958995699882507 -0.4495428502559662 +vn 0.4055328667163849 0.7959026098251343 -0.44953542947769165 +vn 0.3230026364326477 0.6339279413223267 -0.7027122974395752 +vn 0.32299861311912537 0.63392174243927 -0.7027198672294617 +vn 0.07188206911087036 0.1410764455795288 -0.987385630607605 +vn 0.20813854038715363 0.40849569439888 -0.8887123465538025 +vn 0.20814181864261627 0.408500999212265 -0.8887091279029846 +vn 0.07188192009925842 0.14107608795166016 -0.9873856902122498 +vn 0.6986103653907776 0.6986103653907776 -0.15455488860607147 +vn 0.8803002834320068 0.4485354721546173 -0.15455545485019684 +vn 0.6986103057861328 0.6986103057861328 -0.15455496311187744 +vn 0.6316289901733398 0.6316289901733398 -0.44954386353492737 +vn 0.6316290497779846 0.6316290497779846 -0.4495435953140259 +vn 0.5030887126922607 0.5030887126922607 -0.7027115821838379 +vn 0.5030885934829712 0.5030885934829712 -0.7027117013931274 +vn 0.11195845901966095 0.11195845901966095 -0.9873857498168945 +vn 0.1410764455795288 0.07188206911087036 -0.987385630607605 +vn 0.11195848137140274 0.11195848137140274 -0.9873858094215393 +vn 0.3241846263408661 0.3241846263408661 -0.8887118101119995 +vn 0.3241846263408661 0.3241846263408661 -0.8887118101119995 +vn 0.882265031337738 0.13973656296730042 -0.4495354890823364 +vn 0.8802996277809143 0.4485345482826233 -0.154561847448349 +vn 0.9758197665214539 0.15455414354801178 -0.15456025302410126 +vn 0.7027135491371155 0.11129836738109589 -0.7027135491371155 +vn 0.7959029674530029 0.4055324196815491 -0.4495353698730469 +vn 0.7958992719650269 0.4055311977863312 -0.4495428204536438 +vn 0.882266104221344 0.13973656296730042 -0.44953346252441406 +vn 0.6339281797409058 0.32300275564193726 -0.7027121782302856 +vn 0.7027066946029663 0.11129803210496902 -0.7027204036712646 +vn 0.63392174243927 0.32299861311912537 -0.7027198076248169 +vn 0.4528220295906067 0.07171976566314697 -0.88871169090271 +vn 0.156386137008667 0.02476906031370163 -0.9873853921890259 +vn 0.1563844084739685 0.024768926203250885 -0.987385630607605 +vn 0.14107608795166016 0.07188192009925842 -0.9873856902122498 +vn 0.45282596349716187 0.07172073423862457 -0.8887096047401428 +vn 0.4084954857826233 0.20813901722431183 -0.8887123465538025 +vn 0.40850114822387695 0.20814132690429688 -0.8887092471122742 +vn 0.15643411874771118 0.0 -0.9876883625984192 +vn 0.15643411874771118 0.0 -0.9876883625984192 +vn 0.45399123430252075 0.0 -0.8910062313079834 +vn 0.45399123430252075 0.0 -0.8910062313079834 +vn 0.7071067690849304 0.0 -0.7071067690849304 +vn 0.7071067690849304 0.0 -0.7071067690849304 +vn 0.8910070061683655 0.0 -0.45398959517478943 +vn 0.8910070061683655 0.0 -0.45398959517478943 +vn 0.9876875281333923 0.0 -0.15643943846225739 +vn 0.9876875281333923 0.0 -0.15643943846225739 +vn 0.15643349289894104 0.0 -0.9876885414123535 +vn 0.15643349289894104 0.0 -0.9876885414123535 +vn 0.45399123430252075 0.0 -0.8910062313079834 +vn 0.7071067690849304 0.0 -0.7071067690849304 +vn 0.45399123430252075 0.0 -0.8910062313079834 +vn 0.7071067690849304 0.0 -0.7071067690849304 +vn 0.8910070061683655 0.0 -0.45398959517478943 +vn 0.8910070061683655 0.0 -0.45398959517478943 +vn 0.9876881837844849 0.0 -0.15643547475337982 +vn 0.9876881837844849 0.0 -0.15643547475337982 +vn 0.15638551115989685 -0.024769051000475883 -0.9873855113983154 +vn 0.15638546645641327 -0.024769043549895287 -0.9873854517936707 +vn 0.45282214879989624 -0.07172007858753204 -0.8887116312980652 +vn 0.4528217315673828 -0.07171996682882309 -0.8887118101119995 +vn 0.7027136087417603 -0.11129887402057648 -0.7027134895324707 +vn 0.702714741230011 -0.11129923164844513 -0.7027122378349304 +vn 0.9758203029632568 -0.15455469489097595 -0.15455633401870728 +vn 0.8822649717330933 -0.13973695039749146 -0.4495353698730469 +vn 0.9758204221725464 -0.15455465018749237 -0.15455587208271027 +vn 0.8822653293609619 -0.139737069606781 -0.44953468441963196 +vn 0.14107750356197357 -0.07188256829977036 -0.9873854517936707 +vn 0.1410776525735855 -0.07188265770673752 -0.9873853921890259 +vn 0.4084981679916382 -0.20814022421836853 -0.8887107968330383 +vn 0.40849581360816956 -0.20813870429992676 -0.8887122869491577 +vn 0.6339280009269714 -0.32300254702568054 -0.7027124166488647 +vn 0.6339249014854431 -0.32300040125846863 -0.702716052532196 +vn 0.8803009390830994 -0.44853535294532776 -0.15455187857151031 +vn 0.7959032654762268 -0.4055330753326416 -0.4495340585708618 +vn 0.7959039211273193 -0.4055336117744446 -0.44953250885009766 +vn 0.8802997469902039 -0.4485355019569397 -0.15455849468708038 +vn 0.07188273221254349 -0.14107738435268402 -0.9873854517936707 +vn 0.11195971071720123 -0.11195977032184601 -0.9873854517936707 +vn 0.11195974051952362 -0.1119598001241684 -0.9873854517936707 +vn 0.3241870105266571 -0.32418718934059143 -0.8887099623680115 +vn 0.324186235666275 -0.324186235666275 -0.888710618019104 +vn 0.5030848383903503 -0.5030840039253235 -0.7027177214622498 +vn 0.50308758020401 -0.50308758020401 -0.702713131904602 +vn 0.6986096501350403 -0.6986104249954224 -0.1545577347278595 +vn 0.6986106038093567 -0.6986106038093567 -0.15455219149589539 +vn 0.6316331028938293 -0.6316331028938293 -0.4495322108268738 +vn 0.6316311955451965 -0.6316301822662354 -0.449538916349411 +vn 0.02476879395544529 -0.15638473629951477 -0.987385630607605 +vn 0.024769145995378494 -0.1563861072063446 -0.9873853325843811 +vn 0.07188230752944946 -0.1410767287015915 -0.9873855710029602 +vn 0.2081414759159088 -0.40849989652633667 -0.8887097239494324 +vn 0.07172038406133652 -0.45282208919525146 -0.8887116312980652 +vn 0.11129950731992722 -0.7027134299278259 -0.7027134299278259 +vn 0.07171951234340668 -0.4528188109397888 -0.8887133598327637 +vn 0.20813773572444916 -0.40849417448043823 -0.8887132406234741 +vn 0.1112995520234108 -0.7027146816253662 -0.70271235704422 +vn 0.3230017125606537 -0.633927583694458 -0.7027130722999573 +vn 0.3230019211769104 -0.6339282393455505 -0.7027124166488647 +vn 0.15455499291419983 -0.9758197665214539 -0.15455934405326843 +vn 0.44853508472442627 -0.8802997469902039 -0.15455913543701172 +vn 0.13973736763000488 -0.8822649717330933 -0.44953522086143494 +vn 0.15455500781536102 -0.9758196473121643 -0.15455970168113708 +vn 0.44853541254997253 -0.8802999258041382 -0.15455758571624756 +vn 0.40553176403045654 -0.7959005832672119 -0.4495399594306946 +vn 0.1397378295660019 -0.882266104221344 -0.44953274726867676 +vn 0.4055326581001282 -0.7959039807319641 -0.4495331048965454 +vn 0.02476903237402439 0.15638549625873566 -0.9873854517936707 +vn 0.9758203625679016 0.15455467998981476 -0.1545557975769043 +vn 0.02476905845105648 0.15638591349124908 -0.9873853325843811 +vn 0.07172004133462906 0.4528220593929291 -0.8887115716934204 +vn 0.07171962410211563 0.4528205096721649 -0.888712465763092 +vn 0.1112988069653511 0.7027135491371155 -0.7027135491371155 +vn 0.11129920929670334 0.7027148604393005 -0.7027120590209961 +vn 0.15455467998981476 0.9758204817771912 -0.1545550674200058 +vn 0.13973703980445862 0.882265031337738 -0.4495353400707245 +vn 0.15455472469329834 0.9758203029632568 -0.15455582737922668 +vn 0.1397368609905243 0.8822645545005798 -0.44953614473342896 +vn 0.11195971071720123 0.11195977032184601 -0.9873854517936707 +vn 0.07188260555267334 0.14107748866081238 -0.9873854517936707 +vn 0.0718827024102211 0.14107763767242432 -0.9873854517936707 +vn 0.20813997089862823 0.4084973931312561 -0.8887112140655518 +vn 0.20813865959644318 0.40849536657333374 -0.8887125253677368 +vn 0.3230019211769104 0.6339273452758789 -0.7027133107185364 +vn 0.3230026662349701 0.6339284181594849 -0.7027118802070618 +vn 0.4485354721546173 0.8803005218505859 -0.15455369651317596 +vn 0.4055323302745819 0.7959020137786865 -0.4495370388031006 +vn 0.4485355019569397 0.8803003430366516 -0.1545546054840088 +vn 0.4055324196815491 0.7959021329879761 -0.4495368003845215 +vn 0.11195942014455795 0.11195942014455795 -0.9873855113983154 +vn 0.32418540120124817 0.32418540120124817 -0.8887112140655518 +vn 0.32418543100357056 0.32418546080589294 -0.8887112140655518 +vn 0.50308758020401 0.50308758020401 -0.702713131904602 +vn 0.6316315531730652 0.6316315531730652 -0.44953659176826477 +vn 0.5030875205993652 0.5030875205993652 -0.7027132511138916 +vn 0.698610246181488 0.6986098289489746 -0.1545577049255371 +vn 0.6986103653907776 0.6986103653907776 -0.15455472469329834 +vn 0.6316315531730652 0.6316315531730652 -0.4495367109775543 +vn 0.15638531744480133 0.024769006296992302 -0.9873854517936707 +vn 0.14107728004455566 0.071882463991642 -0.9873854517936707 +vn 0.15638551115989685 0.024769051000475883 -0.9873855113983154 +vn 0.1410772055387497 0.07188243418931961 -0.9873855113983154 +vn 0.4528220295906067 0.07172001898288727 -0.8887116312980652 +vn 0.4084976017475128 0.2081398367881775 -0.8887112736701965 +vn 0.4528220593929291 0.07172002643346786 -0.8887116312980652 +vn 0.408496618270874 0.20813946425914764 -0.8887116312980652 +vn 0.7027135491371155 0.1112988069653511 -0.7027135491371155 +vn 0.6339272260665894 0.3230020999908447 -0.702713131904602 +vn 0.6339280605316162 0.3230023682117462 -0.70271235704422 +vn 0.7027146816253662 0.11129915714263916 -0.7027122378349304 +vn 0.8803001046180725 0.448535680770874 -0.15455558896064758 +vn 0.8822649717330933 0.13973701000213623 -0.4495353400707245 +vn 0.8802999258041382 0.44853541254997253 -0.15455758571624756 +vn 0.9758203625679016 0.15455472469329834 -0.15455541014671326 +vn 0.7959020137786865 0.40553247928619385 -0.44953685998916626 +vn 0.7959024310112 0.4055325984954834 -0.449535995721817 +vn 0.8822647333145142 0.13973689079284668 -0.44953593611717224 +vn 0.0 -0.15643411874771118 -0.9876883625984192 +vn 0.0 -0.45399123430252075 -0.8910062313079834 +vn 0.0 -0.15643411874771118 -0.9876883625984192 +vn 0.0 -0.7071067690849304 -0.7071067690849304 +vn 0.0 -0.45399123430252075 -0.8910062313079834 +vn 0.0 -0.8910070061683655 -0.45398959517478943 +vn 0.0 -0.7071067690849304 -0.7071067690849304 +vn 0.0 -0.9876875281333923 -0.15643943846225739 +vn 0.0 -0.8910070061683655 -0.45398959517478943 +vn 0.0 -0.9876875281333923 -0.15643943846225739 +vn 0.0 0.15643349289894104 -0.9876885414123535 +vn 0.0 0.45399123430252075 -0.8910062313079834 +vn 0.0 0.15643349289894104 -0.9876885414123535 +vn 0.0 0.7071067690849304 -0.7071067690849304 +vn 0.0 0.45399123430252075 -0.8910062313079834 +vn 0.0 0.8910070061683655 -0.45398959517478943 +vn 0.0 0.7071067690849304 -0.7071067690849304 +vn 0.0 0.9876881837844849 -0.15643547475337982 +vn 0.0 0.8910070061683655 -0.45398959517478943 +vn 0.0 0.9876881837844849 -0.15643547475337982 +vn -0.024769145995378494 -0.1563861072063446 -0.9873853325843811 +vn -0.024768831208348274 -0.1563848853111267 -0.987385630607605 +vn -0.0717204287648201 -0.45282211899757385 -0.8887116312980652 +vn -0.0717194527387619 -0.45281848311424255 -0.888713538646698 +vn -0.11129943281412125 -0.7027134895324707 -0.7027134299278259 +vn -0.11129975318908691 -0.7027145624160767 -0.7027122974395752 +vn -0.15455499291419983 -0.9758195281028748 -0.15456025302410126 +vn -0.1397373080253601 -0.8822649717330933 -0.4495352506637573 +vn -0.15455494821071625 -0.9758196473121643 -0.15455974638462067 +vn -0.1397380232810974 -0.8822668194770813 -0.44953152537345886 +vn -0.0718827024102211 -0.1410774141550064 -0.9873854517936707 +vn -0.07188249379396439 -0.14107708632946014 -0.9873855113983154 +vn -0.20813791453838348 -0.40849289298057556 -0.8887137174606323 +vn -0.3230016231536865 -0.6339283585548401 -0.7027124762535095 +vn -0.20814107358455658 -0.40850117802619934 -0.8887092471122742 +vn -0.323000431060791 -0.6339249610900879 -0.702716052532196 +vn -0.44853511452674866 -0.8803004622459412 -0.15455542504787445 +vn -0.4055318832397461 -0.7959023714065552 -0.4495369493961334 +vn -0.4055343270301819 -0.7959052920341492 -0.44952937960624695 +vn -0.4485352635383606 -0.8802992701530457 -0.154561847448349 +vn -0.11195974051952362 -0.11195974051952362 -0.9873854517936707 +vn -0.1119597852230072 -0.1119597852230072 -0.9873854517936707 +vn -0.3241879642009735 -0.3241879642009735 -0.8887093663215637 +vn -0.3241879343986511 -0.3241879343986511 -0.8887093663215637 +vn -0.5030844807624817 -0.5030844807624817 -0.702717661857605 +vn -0.5030845403671265 -0.5030845403671265 -0.7027176022529602 +vn -0.6986103057861328 -0.6986103057861328 -0.15455488860607147 +vn -0.6316322684288025 -0.6316322684288025 -0.44953465461730957 +vn -0.6986103057861328 -0.6986103057861328 -0.15455514192581177 +vn -0.6316323280334473 -0.6316322684288025 -0.44953441619873047 +vn -0.1563848853111267 -0.024768831208348274 -0.987385630607605 +vn -0.14107710123062134 -0.07188254594802856 -0.9873855113983154 +vn -0.1563861072063446 -0.024769145995378494 -0.9873853325843811 +vn -0.1410774290561676 -0.07188267260789871 -0.9873855113983154 +vn -0.45282211899757385 -0.0717204287648201 -0.8887116312980652 +vn -0.40850117802619934 -0.20814107358455658 -0.8887092471122742 +vn -0.45281848311424255 -0.0717194527387619 -0.888713538646698 +vn -0.40849289298057556 -0.2081378847360611 -0.8887137770652771 +vn -0.7027134895324707 -0.11129943281412125 -0.7027134299278259 +vn -0.6339250206947327 -0.3230004608631134 -0.7027159333229065 +vn -0.6339284181594849 -0.3230016529560089 -0.7027124762535095 +vn -0.7027145624160767 -0.11129975318908691 -0.7027122974395752 +vn -0.9758195281028748 -0.15455499291419983 -0.15456025302410126 +vn -0.8802995085716248 -0.44853463768959045 -0.1545618325471878 +vn -0.8822649717330933 -0.1397373080253601 -0.4495352506637573 +vn -0.9758196473121643 -0.15455494821071625 -0.15455974638462067 +vn -0.795905590057373 -0.4055335521697998 -0.44952937960624695 +vn -0.8803001642227173 -0.4485357105731964 -0.154555544257164 +vn -0.795901894569397 -0.4055325984954834 -0.4495370090007782 +vn -0.8822668194770813 -0.1397380232810974 -0.44953152537345886 +vn -0.0247690100222826 0.15638551115989685 -0.9873854517936707 +vn -0.156386137008667 0.02476915344595909 -0.9873853325843811 +vn -0.15638473629951477 0.024768799543380737 -0.987385630607605 +vn -0.4528220295906067 0.07172039151191711 -0.8887115716934204 +vn -0.45281875133514404 0.07171951979398727 -0.8887133598327637 +vn -0.7027134895324707 0.11129938066005707 -0.7027135491371155 +vn -0.7027146220207214 0.11129972338676453 -0.7027122974395752 +vn -0.9758198857307434 0.15455499291419983 -0.15455901622772217 +vn -0.8822649121284485 0.13973738253116608 -0.44953539967536926 +vn -0.9758196473121643 0.15455502271652222 -0.15455971658229828 +vn -0.8822661638259888 0.13973785936832428 -0.44953274726867676 +vn -0.14107738435268402 0.0718827173113823 -0.9873854517936707 +vn -0.1410766988992691 0.07188228517770767 -0.9873855710029602 +vn -0.4084993004798889 0.20814111828804016 -0.888710081577301 +vn -0.40849414467811584 0.20813778042793274 -0.8887131810188293 +vn -0.6339275240898132 0.3230016231536865 -0.7027133107185364 +vn -0.6339282989501953 0.3230020999908447 -0.7027122974395752 +vn -0.8803003430366516 0.44853535294532776 -0.15455542504787445 +vn -0.7959009408950806 0.4055311977863312 -0.4495398998260498 +vn -0.7959036231040955 0.40553340315818787 -0.4495331048965454 +vn -0.8802998661994934 0.4485354721546173 -0.15455804765224457 +vn -0.11195977032184601 0.11195971816778183 -0.9873854517936707 +vn -0.1119598001241684 0.11195974051952362 -0.9873854517936707 +vn -0.324186235666275 0.324186235666275 -0.888710618019104 +vn -0.3241855502128601 0.3241853713989258 -0.888711154460907 +vn -0.5030877590179443 0.5030875205993652 -0.7027131915092468 +vn -0.5030885934829712 0.5030885934829712 -0.7027117013931274 +vn -0.6986105442047119 0.6986100673675537 -0.15455488860607147 +vn -0.6316308975219727 0.6316304802894592 -0.4495390057563782 +vn -0.6986105442047119 0.6986101269721985 -0.15455467998981476 +vn -0.6316309571266174 0.631630539894104 -0.44953903555870056 +vn -0.0718822181224823 0.14107659459114075 -0.987385630607605 +vn -0.07172001898288727 0.4528220593929291 -0.8887116312980652 +vn -0.024768980219960213 0.15638506412506104 -0.9873855113983154 +vn -0.07188256829977036 0.14107747375965118 -0.9873853921890259 +vn -0.11129886656999588 0.7027135491371155 -0.7027134895324707 +vn -0.20813971757888794 0.4084967076778412 -0.8887116312980652 +vn -0.07172006368637085 0.452822744846344 -0.8887113332748413 +vn -0.32300278544425964 0.6339279413223267 -0.70271235704422 +vn -0.2081403285264969 0.4084983468055725 -0.8887107372283936 +vn -0.13973680138587952 0.8822650909423828 -0.4495353698730469 +vn -0.11129888892173767 0.7027148008346558 -0.7027122378349304 +vn -0.32300275564193726 0.6339278817176819 -0.7027122974395752 +vn -0.1545550674200058 0.9758201837539673 -0.15455634891986847 +vn -0.4485349655151367 0.8803000450134277 -0.15455831587314606 +vn -0.1545550376176834 0.9758203029632568 -0.15455573797225952 +vn -0.44853535294532776 0.8803002238273621 -0.1545555591583252 +vn -0.4055323004722595 0.7959020137786865 -0.4495370388031006 +vn -0.13973695039749146 0.8822627067565918 -0.4495399594306946 +vn -0.40553179383277893 0.7958999872207642 -0.44954103231430054 +vn -0.15643411874771118 -0.0 -0.9876883625984192 +vn -0.45399123430252075 -0.0 -0.8910062313079834 +vn -0.15643411874771118 -0.0 -0.9876883625984192 +vn -0.7071067690849304 -0.0 -0.7071067690849304 +vn -0.45399123430252075 -0.0 -0.8910062313079834 +vn -0.8910070061683655 -0.0 -0.45398959517478943 +vn -0.7071067690849304 -0.0 -0.7071067690849304 +vn -0.9876875281333923 -0.0 -0.15643943846225739 +vn -0.8910070061683655 -0.0 -0.45398959517478943 +vn -0.9876875281333923 -0.0 -0.15643943846225739 +vn 0.0 0.9876888394355774 0.15643151104450226 +vn 0.0 0.9876888394355774 0.15643151104450226 +vn 0.0 0.8910054564476013 0.4539926052093506 +vn 0.0 0.7071044445037842 0.7071090936660767 +vn 0.0 0.8910054564476013 0.4539926052093506 +vn 0.0 0.7071044445037842 0.7071090936660767 +vn 0.0 0.4539920389652252 0.8910057544708252 +vn 0.0 0.4539920389652252 0.8910057544708252 +vn 0.0 0.15643447637557983 0.9876883029937744 +vn 0.0 0.15643447637557983 0.9876883029937744 +vn 0.1545547991991043 -0.9758205413818359 0.1545548439025879 +vn 0.1545548141002655 -0.9758204817771912 0.15455473959445953 +vn 0.13973687589168549 -0.8822647333145142 0.44953590631484985 +vn 0.1397371143102646 -0.8822652697563171 0.44953468441963196 +vn 0.11129919439554214 -0.7027142643928528 0.7027127146720886 +vn 0.11129859834909439 -0.70271235704422 0.7027146816253662 +vn 0.024769209325313568 -0.1563866287469864 0.9873852729797363 +vn 0.07171977311372757 -0.4528205096721649 0.888712465763092 +vn 0.02476920373737812 -0.15638647973537445 0.9873852729797363 +vn 0.07171991467475891 -0.4528209865093231 0.8887122273445129 +vn 0.6986097693443298 -0.6986101269721985 0.15455840528011322 +vn 0.44853538274765015 -0.8803001642227173 0.15455637872219086 +vn 0.4485354721546173 -0.8803001642227173 0.15455570816993713 +vn 0.4055323004722595 -0.7959017157554626 0.4495375156402588 +vn 0.40553343296051025 -0.7959030866622925 0.4495340883731842 +vn 0.32300063967704773 -0.6339249610900879 0.7027159929275513 +vn 0.3230031132698059 -0.6339284181594849 0.7027117013931274 +vn 0.0718829557299614 -0.14107808470726013 0.9873852729797363 +vn 0.2081383615732193 -0.40849483013153076 0.8887127637863159 +vn 0.20813912153244019 -0.4084959924221039 0.8887121081352234 +vn 0.0718831792473793 -0.14107868075370789 0.9873852729797363 +vn 0.6986099481582642 -0.6986104846000671 0.1545562893152237 +vn 0.6316313743591309 -0.63163161277771 0.4495367407798767 +vn 0.5030887722969055 -0.5030890107154846 0.7027112245559692 +vn 0.6316304802894592 -0.631631076335907 0.44953882694244385 +vn 0.5030868649482727 -0.5030863881111145 0.7027145028114319 +vn 0.1119605302810669 -0.11196073889732361 0.9873852729797363 +vn 0.11196005344390869 -0.11196015775203705 0.9873853325843811 +vn 0.3241831064224243 -0.3241833746433258 0.8887128233909607 +vn 0.3241858184337616 -0.3241855204105377 0.8887110352516174 +vn 0.9758192896842957 -0.1545541137456894 0.1545630693435669 +vn 0.8802993893623352 -0.44853484630584717 0.15456221997737885 +vn 0.9758208990097046 -0.1545555144548416 0.15455187857151031 +vn 0.8803004622459412 -0.44853475689888 0.15455639362335205 +vn 0.8822635412216187 -0.13973677158355713 0.44953832030296326 +vn 0.7959007024765015 -0.40553179383277893 0.44953975081443787 +vn 0.8822662234306335 -0.1397378295660019 0.449532687664032 +vn 0.7959039807319641 -0.4055326282978058 0.44953328371047974 +vn 0.702711284160614 -0.11129800230264664 0.7027158737182617 +vn 0.6339253783226013 -0.3230016529560089 0.7027151584625244 +vn 0.6339280009269714 -0.32300251722335815 0.70271235704422 +vn 0.7027145624160767 -0.11129901558160782 0.7027124166488647 +vn 0.15638692677021027 -0.024769220501184464 0.9873852729797363 +vn 0.14107860624790192 -0.07188306748867035 0.9873852729797363 +vn 0.45282289385795593 -0.07172014564275742 0.8887112140655518 +vn 0.15638649463653564 -0.024769200012087822 0.9873853325843811 +vn 0.40849459171295166 -0.20813874900341034 0.8887127637863159 +vn 0.14107857644557953 -0.07188304513692856 0.9873852729797363 +vn 0.4084988534450531 -0.2081403136253357 0.8887104988098145 +vn 0.4528197944164276 -0.07171926647424698 0.8887128829956055 +vn 0.9758208990097046 0.15455546975135803 0.15455183386802673 +vn 0.9758192300796509 0.15455400943756104 0.1545635312795639 +vn 0.8822636008262634 0.13973669707775116 0.44953832030296326 +vn 0.8822664022445679 0.1397378295660019 0.44953233003616333 +vn 0.7027113437652588 0.11129804700613022 0.7027158141136169 +vn 0.7027138471603394 0.11129883676767349 0.702713131904602 +vn 0.1563871055841446 0.024769233539700508 0.9873851537704468 +vn 0.4528229534626007 0.07172016054391861 0.8887112140655518 +vn 0.15638647973537445 0.02476920373737812 0.9873852729797363 +vn 0.4528198838233948 0.07171930372714996 0.8887128233909607 +vn 0.6986097097396851 0.6986097097396851 0.15456050634384155 +vn 0.8802997469902039 0.4485352039337158 0.15455904603004456 +vn 0.8802993893623352 0.4485344886779785 0.15456339716911316 +vn 0.7959043979644775 0.4055331349372864 0.44953200221061707 +vn 0.7959005832672119 0.4055321514606476 0.44953975081443787 +vn 0.6339260339736938 0.323001891374588 0.7027143836021423 +vn 0.6339260339736938 0.3230018615722656 0.7027145028114319 +vn 0.14107811450958252 0.07188291847705841 0.9873852729797363 +vn 0.408498615026474 0.20814073085784912 0.8887104988098145 +vn 0.4084949493408203 0.20813828706741333 0.8887127041816711 +vn 0.1410790979862213 0.07188329100608826 0.9873852133750916 +vn 0.6986097097396851 0.6986097097396851 0.15456050634384155 +vn 0.5030873417854309 0.5030873417854309 0.7027134895324707 +vn 0.6316308379173279 0.6316308379173279 0.4495386779308319 +vn 0.6316307783126831 0.6316307187080383 0.44953879714012146 +vn 0.5030874013900757 0.5030874013900757 0.7027134299278259 +vn 0.11196013540029526 0.11196013540029526 0.9873853325843811 +vn 0.11196013540029526 0.11196013540029526 0.9873853921890259 +vn 0.32418569922447205 0.32418569922447205 0.8887109756469727 +vn 0.32418569922447205 0.32418569922447205 0.8887109756469727 +vn 0.15455400943756104 0.9758192300796509 0.1545635312795639 +vn 0.44853487610816956 0.8802991509437561 0.15456357598304749 +vn 0.15455546975135803 0.9758208990097046 0.15455183386802673 +vn 0.4485347867012024 0.880299985408783 0.15455910563468933 +vn 0.13973669707775116 0.8822636008262634 0.44953832030296326 +vn 0.4055321216583252 0.7959004640579224 0.44953984022140503 +vn 0.1397378295660019 0.8822664022445679 0.44953233003616333 +vn 0.405533105134964 0.7959043383598328 0.449532151222229 +vn 0.11129804700613022 0.7027113437652588 0.7027158141136169 +vn 0.32300183176994324 0.6339259147644043 0.7027145028114319 +vn 0.3230018615722656 0.6339260339736938 0.7027145028114319 +vn 0.20814074575901031 0.4084986448287964 0.8887104988098145 +vn 0.11129883676767349 0.7027138471603394 0.702713131904602 +vn 0.024769233539700508 0.1563871055841446 0.9873851537704468 +vn 0.07188340276479721 0.14107906818389893 0.9873852133750916 +vn 0.07172016054391861 0.4528229534626007 0.8887112140655518 +vn 0.02476920373737812 0.15638647973537445 0.9873852729797363 +vn 0.07188285887241364 0.14107824862003326 0.9873853325843811 +vn 0.07171930372714996 0.4528198838233948 0.8887128233909607 +vn 0.2081383466720581 0.4084950387477875 0.8887127041816711 +vn 0.9876888394355774 -0.0 0.15643151104450226 +vn 0.9876888394355774 0.0 0.15643151104450226 +vn 0.8910054564476013 -0.0 0.4539926052093506 +vn 0.7071044445037842 -0.0 0.7071090936660767 +vn 0.8910054564476013 0.0 0.4539926052093506 +vn 0.7071044445037842 -0.0 0.7071090936660767 +vn 0.4539920389652252 -0.0 0.8910057544708252 +vn 0.4539920389652252 0.0 0.8910057544708252 +vn 0.15643447637557983 -0.0 0.9876883029937744 +vn 0.15643447637557983 0.0 0.9876883029937744 +vn 0.9876883029937744 -0.0 0.15643447637557983 +vn 0.9876883029937744 0.0 0.15643447637557983 +vn 0.8910066485404968 -0.0 0.4539901614189148 +vn 0.7071075439453125 -0.0 0.7071060538291931 +vn 0.8910066485404968 0.0 0.4539901614189148 +vn 0.7071075439453125 -0.0 0.7071060538291931 +vn 0.45398959517478943 -0.0 0.8910070061683655 +vn 0.45398959517478943 0.0 0.8910070061683655 +vn 0.15643447637557983 -0.0 0.9876883029937744 +vn 0.15643447637557983 0.0 0.9876883029937744 +vn 0.9758205413818359 -0.15455473959445953 0.1545548141002655 +vn 0.9758205413818359 -0.15455472469329834 0.15455473959445953 +vn 0.8822647929191589 -0.13973680138587952 0.44953593611717224 +vn 0.8822641372680664 -0.1397368609905243 0.44953709840774536 +vn 0.7027142643928528 -0.11129894107580185 0.7027127146720886 +vn 0.7027148008346558 -0.11129892617464066 0.7027121782302856 +vn 0.1563866138458252 -0.02476920187473297 0.9873852729797363 +vn 0.45282042026519775 -0.07171963900327682 0.8887125253677368 +vn 0.15638650953769684 -0.024769164621829987 0.9873852729797363 +vn 0.4528202414512634 -0.07171963900327682 0.8887125849723816 +vn 0.8803010582923889 -0.4485354423522949 0.1545509696006775 +vn 0.8803001642227173 -0.4485357105731964 0.15455563366413116 +vn 0.7959026098251343 -0.40553298592567444 0.44953542947769165 +vn 0.7959020733833313 -0.4055328369140625 0.44953644275665283 +vn 0.6339287161827087 -0.3230023682117462 0.7027117609977722 +vn 0.6339247226715088 -0.3230011761188507 0.7027158737182617 +vn 0.11196112632751465 -0.11196106672286987 0.9873851537704468 +vn 0.1410788893699646 -0.07188332825899124 0.9873852133750916 +vn 0.4084959030151367 -0.20813874900341034 0.8887121677398682 +vn 0.40849387645721436 -0.20813807845115662 0.8887133002281189 +vn 0.1410786658525467 -0.0718831792473793 0.9873852729797363 +vn 0.6986098289489746 -0.6986105442047119 0.15455631911754608 +vn 0.6986110210418701 -0.6986106634140015 0.15455015003681183 +vn 0.6316309571266174 -0.6316305994987488 0.44953879714012146 +vn 0.6316325068473816 -0.6316314339637756 0.44953563809394836 +vn 0.5030847787857056 -0.5030853152275085 0.7027166485786438 +vn 0.503089427947998 -0.5030885934829712 0.7027111649513245 +vn 0.3241836726665497 -0.32418403029441833 0.8887123465538025 +vn 0.11196030676364899 -0.11196041852235794 0.9873852729797363 +vn 0.3241836130619049 -0.32418397068977356 0.8887124061584473 +vn 0.15455515682697296 -0.9758209586143494 0.15455132722854614 +vn 0.44853565096855164 -0.8803008198738098 0.15455161035060883 +vn 0.15455523133277893 -0.9758208394050598 0.15455183386802673 +vn 0.13973714411258698 -0.8822634816169739 0.44953835010528564 +vn 0.44853475689888 -0.8803005218505859 0.15455622971057892 +vn 0.40553149580955505 -0.7959010004997253 0.44953957200050354 +vn 0.4055306315422058 -0.7959000468254089 0.44954195618629456 +vn 0.13973626494407654 -0.8822615742683411 0.4495422840118408 +vn 0.11129894852638245 -0.7027112245559692 0.7027157545089722 +vn 0.3230022192001343 -0.6339280605316162 0.70271235704422 +vn 0.32300353050231934 -0.6339297890663147 0.7027103304862976 +vn 0.11129886656999588 -0.7027145624160767 0.7027124166488647 +vn 0.024769242852926254 -0.15638692677021027 0.9873852729797363 +vn 0.07188314944505692 -0.14107856154441833 0.9873852729797363 +vn 0.07171991467475891 -0.45282289385795593 0.8887112736701965 +vn 0.024769119918346405 -0.15638647973537445 0.9873852729797363 +vn 0.07188304513692856 -0.14107827842235565 0.9873852729797363 +vn 0.20813888311386108 -0.40849512815475464 0.888712465763092 +vn 0.07171985507011414 -0.4528196156024933 0.8887128829956055 +vn 0.20813854038715363 -0.4084946811199188 0.8887128233909607 +vn 0.15455469489097595 0.9758204817771912 0.15455485880374908 +vn 0.9758204817771912 0.15455469489097595 0.1545547991991043 +vn 0.15638649463653564 0.024769173935055733 0.9873852729797363 +vn 0.13973699510097504 0.8822647333145142 0.449535995721817 +vn 0.15455476939678192 0.9758205413818359 0.15455427765846252 +vn 0.13973668217658997 0.8822640776634216 0.4495373070240021 +vn 0.11129888147115707 0.7027142643928528 0.7027127742767334 +vn 0.11129887402057648 0.7027144432067871 0.7027125358581543 +vn 0.02476918138563633 0.15638647973537445 0.9873853921890259 +vn 0.0717196986079216 0.45282045006752014 0.888712465763092 +vn 0.02476917952299118 0.15638647973537445 0.9873852729797363 +vn 0.0717197060585022 0.45282092690467834 0.8887122273445129 +vn 0.4485355019569397 0.8803005218505859 0.15455368161201477 +vn 0.4485355615615845 0.8803005218505859 0.15455396473407745 +vn 0.40553271770477295 0.795902669429779 0.44953539967536926 +vn 0.4055325984954834 0.795901894569397 0.44953683018684387 +vn 0.3230017125606537 0.6339260339736938 0.7027145028114319 +vn 0.3230022192001343 0.6339277625083923 0.7027127146720886 +vn 0.07188300043344498 0.14107832312583923 0.9873852729797363 +vn 0.07188298553228378 0.14107827842235565 0.9873852729797363 +vn 0.20813916623592377 0.40849629044532776 0.8887118697166443 +vn 0.20813894271850586 0.40849560499191284 0.8887122273445129 +vn 0.6986103057861328 0.6986100077629089 0.1545563042163849 +vn 0.6986104249954224 0.6986104249954224 0.15455429255962372 +vn 0.6316320300102234 0.6316320300102234 0.44953542947769165 +vn 0.6316319704055786 0.6316319704055786 0.4495353698730469 +vn 0.5030866265296936 0.5030866265296936 0.7027144432067871 +vn 0.32418447732925415 0.32418447732925415 0.8887119293212891 +vn 0.5030866861343384 0.5030866861343384 0.7027145028114319 +vn 0.14107830822467804 0.07188301533460617 0.9873852729797363 +vn 0.11196036636829376 0.11196036636829376 0.9873852729797363 +vn 0.11196037381887436 0.11196037381887436 0.9873853921890259 +vn 0.32418444752693176 0.32418444752693176 0.8887119293212891 +vn 0.8803003430366516 0.4485357701778412 0.15455426275730133 +vn 0.8803001642227173 0.44853538274765015 0.15455617010593414 +vn 0.9758205413818359 0.15455476939678192 0.15455427765846252 +vn 0.8822647333145142 0.13973675668239594 0.44953590631484985 +vn 0.7959026098251343 0.4055330157279968 0.4495353698730469 +vn 0.8822639584541321 0.13973687589168549 0.4495375156402588 +vn 0.7959017157554626 0.40553224086761475 0.4495375454425812 +vn 0.7027142643928528 0.11129888147115707 0.7027127742767334 +vn 0.6339279413223267 0.32300272583961487 0.70271235704422 +vn 0.633926272392273 0.3230014443397522 0.7027144432067871 +vn 0.40849632024765015 0.20813921093940735 0.8887118697166443 +vn 0.7027145624160767 0.11129886656999588 0.7027124166488647 +vn 0.45282045006752014 0.0717196837067604 0.8887125253677368 +vn 0.15638649463653564 0.024769175797700882 0.9873853921890259 +vn 0.14107829332351685 0.07188300043344498 0.9873852729797363 +vn 0.4528208374977112 0.071719691157341 0.8887122869491577 +vn 0.4084954261779785 0.20813889801502228 0.8887123465538025 +vn 0.0 -0.9876888394355774 0.15643151104450226 +vn 0.0 -0.8910054564476013 0.4539926052093506 +vn 0.0 -0.9876888394355774 0.15643151104450226 +vn 0.0 -0.7071044445037842 0.7071090936660767 +vn 0.0 -0.8910054564476013 0.4539926052093506 +vn 0.0 -0.4539920389652252 0.8910057544708252 +vn 0.0 -0.7071044445037842 0.7071090936660767 +vn 0.0 -0.15643447637557983 0.9876883029937744 +vn 0.0 -0.4539920389652252 0.8910057544708252 +vn 0.0 -0.15643447637557983 0.9876883029937744 +vn 0.0 0.9876883029937744 0.15643447637557983 +vn 0.0 0.8910066485404968 0.4539901614189148 +vn 0.0 0.9876883029937744 0.15643447637557983 +vn 0.0 0.7071075439453125 0.7071060538291931 +vn 0.0 0.8910066485404968 0.4539901614189148 +vn 0.0 0.45398959517478943 0.8910070061683655 +vn 0.0 0.7071075439453125 0.7071060538291931 +vn 0.0 0.15643447637557983 0.9876883029937744 +vn 0.0 0.45398959517478943 0.8910070061683655 +vn 0.0 0.15643447637557983 0.9876883029937744 +vn -0.15455520153045654 -0.9758209586143494 0.1545518934726715 +vn -0.15455518662929535 -0.9758209586143494 0.15455178916454315 +vn -0.139736607670784 -0.8822636008262634 0.44953835010528564 +vn -0.1397368311882019 -0.8822616934776306 0.44954192638397217 +vn -0.11129901558160782 -0.7027112245559692 0.7027157545089722 +vn -0.11129892617464066 -0.7027148008346558 0.7027121782302856 +vn -0.02476927451789379 -0.1563870906829834 0.9873852133750916 +vn -0.07171986252069473 -0.45282289385795593 0.8887112140655518 +vn -0.024769101291894913 -0.15638649463653564 0.9873853325843811 +vn -0.07171978801488876 -0.452818900346756 0.8887132406234741 +vn -0.6986106634140015 -0.6986106038093567 0.15455208718776703 +vn -0.4485352635383606 -0.8803007006645203 0.15455362200737 +vn -0.4485352635383606 -0.8803008794784546 0.15455284714698792 +vn -0.4055314064025879 -0.7959009408950806 0.4495396912097931 +vn -0.4055313169956207 -0.7959004640579224 0.4495406150817871 +vn -0.3230026066303253 -0.633928656578064 0.7027117013931274 +vn -0.3230026364326477 -0.633928656578064 0.7027117013931274 +vn -0.07188332825899124 -0.1410788893699646 0.9873852133750916 +vn -0.2081383764743805 -0.40849483013153076 0.8887127637863159 +vn -0.2081376612186432 -0.4084927439689636 0.8887138366699219 +vn -0.0718834325671196 -0.14107903838157654 0.9873851537704468 +vn -0.6986106634140015 -0.6986106634140015 0.15455207228660583 +vn -0.5030873417854309 -0.5030873417854309 0.7027134895324707 +vn -0.6316307783126831 -0.6316307783126831 0.44953879714012146 +vn -0.6316307783126831 -0.6316307783126831 0.44953885674476624 +vn -0.5030874013900757 -0.5030874013900757 0.7027134299278259 +vn -0.3241831958293915 -0.3241831958293915 0.8887128233909607 +vn -0.11196109652519226 -0.11196109652519226 0.9873851537704468 +vn -0.11196108907461166 -0.11196108907461166 0.987385094165802 +vn -0.32418322563171387 -0.32418322563171387 0.8887128829956055 +vn -0.9758209586143494 -0.15455518662929535 0.15455178916454315 +vn -0.880300760269165 -0.44853532314300537 0.15455296635627747 +vn -0.9758209586143494 -0.15455520153045654 0.1545518934726715 +vn -0.8803007006645203 -0.44853517413139343 0.15455380082130432 +vn -0.7959010004997253 -0.4055313766002655 0.4495396018028259 +vn -0.8822636008262634 -0.139736607670784 0.44953835010528564 +vn -0.8822616934776306 -0.1397368311882019 0.44954192638397217 +vn -0.7959004044532776 -0.40553128719329834 0.4495408236980438 +vn -0.7027112245559692 -0.11129901558160782 0.7027157545089722 +vn -0.6339288353919983 -0.3230026662349701 0.7027115821838379 +vn -0.7027148008346558 -0.11129892617464066 0.7027121782302856 +vn -0.633928656578064 -0.3230026066303253 0.7027117013931274 +vn -0.1563870906829834 -0.02476927451789379 0.9873852133750916 +vn -0.14107905328273773 -0.07188341021537781 0.9873851537704468 +vn -0.45282289385795593 -0.07171986252069473 0.8887112140655518 +vn -0.15638649463653564 -0.024769101291894913 0.9873853325843811 +vn -0.1410788744688034 -0.07188335061073303 0.9873852729797363 +vn -0.40849462151527405 -0.2081386148929596 0.8887128233909607 +vn -0.452818900346756 -0.07171978801488876 0.8887132406234741 +vn -0.40849292278289795 -0.2081374228000641 0.8887138366699219 +vn -0.9758209586143494 0.15455517172813416 0.1545519232749939 +vn -0.024769235402345657 0.15638647973537445 0.9873852729797363 +vn -0.9758210182189941 0.15455526113510132 0.15455134212970734 +vn -0.8822636008262634 0.139736607670784 0.44953835010528564 +vn -0.8822616338729858 0.1397368609905243 0.44954216480255127 +vn -0.7027112245559692 0.11129894852638245 0.7027157545089722 +vn -0.7027144432067871 0.11129887402057648 0.7027125358581543 +vn -0.15638694167137146 0.024769252166152 0.9873852729797363 +vn -0.45282289385795593 0.07171991467475891 0.8887112736701965 +vn -0.15638647973537445 0.024769119918346405 0.9873852729797363 +vn -0.4528196156024933 0.07171985507011414 0.8887128829956055 +vn -0.8803001642227173 0.44853532314300537 0.15455631911754608 +vn -0.8803010582923889 0.4485350549221039 0.15455180406570435 +vn -0.7959002256393433 0.40553075075149536 0.44954147934913635 +vn -0.7959010004997253 0.4055314064025879 0.4495396912097931 +vn -0.6339306235313416 0.32300347089767456 0.7027095556259155 +vn -0.6339275240898132 0.32300251722335815 0.7027127742767334 +vn -0.14107850193977356 0.07188312709331512 0.9873852729797363 +vn -0.1410786658525467 0.07188323885202408 0.9873852729797363 +vn -0.40849462151527405 0.2081386148929596 0.8887128233909607 +vn -0.40849465131759644 0.2081385999917984 0.8887128233909607 +vn -0.6986108422279358 0.6986103653907776 0.15455207228660583 +vn -0.6986099481582642 0.6986103653907776 0.15455645322799683 +vn -0.6316318511962891 0.6316322088241577 0.44953539967536926 +vn -0.6316301822662354 0.6316312551498413 0.4495388865470886 +vn -0.503089964389801 0.503089427947998 0.7027101516723633 +vn -0.5030854344367981 0.5030863285064697 0.7027156949043274 +vn -0.11196109652519226 0.11196109652519226 0.9873851537704468 +vn -0.3241834044456482 0.32418307662010193 0.8887127637863159 +vn -0.11196067184209824 0.11196056008338928 0.9873852729797363 +vn -0.3241833746433258 0.32418304681777954 0.8887128233909607 +vn -0.1545550525188446 0.975820004940033 0.15455767512321472 +vn -0.44853493571281433 0.8803000450134277 0.15455827116966248 +vn -0.15455473959445953 0.9758205413818359 0.1545548141002655 +vn -0.44853585958480835 0.8803004026412964 0.15455342829227448 +vn -0.13973714411258698 0.8822647333145142 0.44953590631484985 +vn -0.1397370547056198 0.8822653293609619 0.44953465461730957 +vn -0.40553322434425354 0.7959030866622925 0.44953426718711853 +vn -0.4055328369140625 0.7959027290344238 0.4495352506637573 +vn -0.11129876971244812 0.7027142643928528 0.7027127742767334 +vn -0.3230009973049164 0.6339249014854431 0.7027158737182617 +vn -0.3230018615722656 0.6339260935783386 0.7027143836021423 +vn -0.1112988069653511 0.7027122974395752 0.7027146816253662 +vn -0.07188336551189423 0.14107906818389893 0.9873851537704468 +vn -0.07171963900327682 0.45282042026519775 0.8887125253677368 +vn -0.07188329100608826 0.1410788744688034 0.9873852729797363 +vn -0.024769257754087448 0.1563871055841446 0.9873851537704468 +vn -0.20813846588134766 0.40849465131759644 0.8887128829956055 +vn -0.07171966135501862 0.4528210759162903 0.8887122273445129 +vn -0.20813928544521332 0.40849587321281433 0.8887120485305786 +vn -0.9876888394355774 0.0 0.15643151104450226 +vn -0.8910054564476013 0.0 0.4539926052093506 +vn -0.9876888394355774 0.0 0.15643151104450226 +vn -0.7071044445037842 0.0 0.7071090936660767 +vn -0.8910054564476013 0.0 0.4539926052093506 +vn -0.4539920389652252 0.0 0.8910057544708252 +vn -0.7071044445037842 0.0 0.7071090936660767 +vn -0.15643447637557983 0.0 0.9876883029937744 +vn -0.4539920389652252 0.0 0.8910057544708252 +vn -0.15643447637557983 0.0 0.9876883029937744 +vn 0.15643389523029327 0.9876884818077087 -0.0 +vn 0.15643389523029327 0.9876884818077087 -0.0 +vn 0.45399054884910583 0.8910065293312073 -0.0 +vn 0.7071067690849304 0.7071067690849304 -0.0 +vn 0.45399054884910583 0.8910065293312073 0.0 +vn 0.7071067690849304 0.7071067690849304 -0.0 +vn 0.8910065293312073 0.45399054884910583 -0.0 +vn 0.8910065293312073 0.45399054884910583 0.0 +vn 0.9876884818077087 0.15643389523029327 -0.0 +vn 0.9876884818077087 0.15643389523029327 0.0 +vn 1.0 0.0 0.0 +vn 1.0 0.0 0.0 +vn 1.0 0.0 0.0 +vn 1.0 0.0 0.0 +vn 0.9876883625984192 -0.15643441677093506 0.0 +vn 0.9876883625984192 -0.15643441677093506 0.0 +vn 0.8910067081451416 -0.45399028062820435 0.0 +vn 0.8910067081451416 -0.45399028062820435 0.0 +vn 0.45399048924446106 -0.891006588935852 0.0 +vn 0.707106351852417 -0.7071071863174438 0.0 +vn 0.707106351852417 -0.7071071863174438 0.0 +vn 0.45399048924446106 -0.891006588935852 0.0 +vn 0.1564347743988037 -0.9876882433891296 0.0 +vn 0.1564347743988037 -0.9876882433891296 0.0 +vn 0.15643438696861267 0.9876883625984192 0.0 +vn 0.45399048924446106 0.891006588935852 0.0 +vn 0.15643438696861267 0.9876883625984192 0.0 +vn 0.45399048924446106 0.891006588935852 0.0 +vn 0.8910064101219177 0.45399078726768494 0.0 +vn 0.7071070075035095 0.7071065306663513 0.0 +vn 0.7071070075035095 0.7071065306663513 -0.0 +vn 0.8910064101219177 0.45399078726768494 0.0 +vn 0.9876883625984192 0.15643438696861267 0.0 +vn 0.9876883625984192 0.15643438696861267 -0.0 +vn 0.0 -1.0 0.0 +vn 0.0 -1.0 0.0 +vn 0.0 1.0 0.0 +vn 0.0 1.0 -0.0 +vn -0.1564348191022873 -0.9876883625984192 0.0 +vn -0.45399028062820435 -0.8910067081451416 -0.0 +vn -0.1564348191022873 -0.9876883625984192 0.0 +vn -0.45399028062820435 -0.8910067081451416 0.0 +vn -0.8910067081451416 -0.45399028062820435 -0.0 +vn -0.7071067690849304 -0.7071067690849304 0.0 +vn -0.7071067690849304 -0.7071067690849304 0.0 +vn -0.8910067081451416 -0.45399028062820435 0.0 +vn -0.9876883625984192 -0.1564348191022873 0.0 +vn -0.9876883625984192 -0.1564348191022873 0.0 +vn -0.9876882433891296 0.1564347743988037 0.0 +vn -0.9876882433891296 0.1564347743988037 0.0 +vn -0.7071069478988647 0.7071065902709961 0.0 +vn -0.891006588935852 0.45399048924446106 0.0 +vn -0.891006588935852 0.45399048924446106 0.0 +vn -0.7071069478988647 0.7071065902709961 0.0 +vn -0.45399028062820435 0.8910067081451416 0.0 +vn -0.45399028062820435 0.8910067081451416 0.0 +vn -0.1564348191022873 0.9876883625984192 0.0 +vn -0.1564348191022873 0.9876883625984192 0.0 +vn -1.0 0.0 0.0 +vn -1.0 -0.0 0.0 +f 225//441 226//441 227//441 +f 225//442 227//442 228//442 +f 229//443 230//443 231//443 +f 232//444 229//444 231//444 +f 233//445 231//445 234//445 +f 233//446 234//446 235//446 +f 233//447 232//447 231//447 +f 236//448 233//448 235//448 +f 237//449 235//449 238//449 +f 237//450 236//450 235//450 +f 226//451 238//451 227//451 +f 226//452 237//452 238//452 +f 239//453 240//453 241//453 +f 239//454 241//454 242//454 +f 243//455 242//455 244//455 +f 243//456 239//456 242//456 +f 245//457 244//457 246//457 +f 245//458 243//458 244//458 +f 247//459 246//459 248//459 +f 247//460 245//460 246//460 +f 225//461 248//461 226//461 +f 225//462 247//462 248//462 +f 249//463 227//463 250//463 +f 249//464 228//464 227//464 +f 251//465 250//465 252//465 +f 251//466 252//466 253//466 +f 251//467 249//467 250//467 +f 254//468 251//468 253//468 +f 255//469 253//469 256//469 +f 255//470 254//470 253//470 +f 257//471 256//471 258//471 +f 257//472 255//472 256//472 +f 225//473 228//473 259//473 +f 260//474 225//474 259//474 +f 261//475 259//475 262//475 +f 261//476 262//476 263//476 +f 261//477 260//477 259//477 +f 264//478 261//478 263//478 +f 265//479 263//479 266//479 +f 265//480 264//480 263//480 +f 267//481 266//481 268//481 +f 267//482 265//482 266//482 +f 269//483 270//483 271//483 +f 248//484 237//484 226//484 +f 272//485 273//485 229//485 +f 272//486 229//486 232//486 +f 274//487 275//487 273//487 +f 274//488 273//488 272//488 +f 276//489 277//489 275//489 +f 276//490 275//490 274//490 +f 278//491 271//491 277//491 +f 278//492 269//492 271//492 +f 278//493 277//493 276//493 +f 279//494 232//494 233//494 +f 279//495 272//495 232//495 +f 280//496 272//496 279//496 +f 280//497 274//497 272//497 +f 281//498 274//498 280//498 +f 281//499 276//499 274//499 +f 282//500 283//500 269//500 +f 282//501 284//501 283//501 +f 282//502 276//502 281//502 +f 282//503 278//503 276//503 +f 282//504 269//504 278//504 +f 285//505 233//505 236//505 +f 285//506 236//506 237//506 +f 285//507 279//507 233//507 +f 286//508 279//508 285//508 +f 286//509 280//509 279//509 +f 287//510 280//510 286//510 +f 287//511 281//511 280//511 +f 288//512 284//512 282//512 +f 288//513 282//513 281//513 +f 288//514 281//514 287//514 +f 289//515 285//515 237//515 +f 289//516 237//516 248//516 +f 290//517 248//517 246//517 +f 290//518 246//518 244//518 +f 290//519 286//519 285//519 +f 290//520 289//520 248//520 +f 290//521 285//521 289//521 +f 291//522 286//522 290//522 +f 291//523 287//523 286//523 +f 291//524 290//524 244//524 +f 292//525 244//525 242//525 +f 292//526 242//526 241//526 +f 292//527 293//527 284//527 +f 292//528 241//528 293//528 +f 292//529 291//529 244//529 +f 292//530 284//530 288//530 +f 292//531 288//531 287//531 +f 292//532 287//532 291//532 +f 294//533 231//533 230//533 +f 295//534 250//534 227//534 +f 295//535 227//535 238//535 +f 296//536 252//536 250//536 +f 296//537 250//537 295//537 +f 297//538 253//538 252//538 +f 297//539 252//539 296//539 +f 298//540 299//540 258//540 +f 298//541 256//541 253//541 +f 298//542 258//542 256//542 +f 298//543 253//543 297//543 +f 300//544 235//544 234//544 +f 300//545 238//545 235//545 +f 300//546 295//546 238//546 +f 301//547 295//547 300//547 +f 301//548 296//548 295//548 +f 302//549 298//549 297//549 +f 302//550 297//550 296//550 +f 302//551 296//551 301//551 +f 303//552 304//552 299//552 +f 303//553 298//553 302//553 +f 303//554 299//554 298//554 +f 305//555 300//555 234//555 +f 306//556 302//556 301//556 +f 306//557 300//557 305//557 +f 306//558 301//558 300//558 +f 307//559 302//559 306//559 +f 308//560 309//560 310//560 +f 308//561 310//561 304//561 +f 308//562 304//562 303//562 +f 308//563 303//563 302//563 +f 308//564 302//564 307//564 +f 311//565 234//565 231//565 +f 311//566 305//566 234//566 +f 311//567 231//567 294//567 +f 312//568 294//568 313//568 +f 312//569 311//569 294//569 +f 312//570 306//570 305//570 +f 312//571 307//571 306//571 +f 312//572 305//572 311//572 +f 314//573 313//573 315//573 +f 314//574 312//574 313//574 +f 314//575 307//575 312//575 +f 316//576 317//576 309//576 +f 316//577 315//577 318//577 +f 316//578 318//578 317//578 +f 316//579 309//579 308//579 +f 316//580 308//580 307//580 +f 316//581 314//581 315//581 +f 316//582 307//582 314//582 +f 229//583 319//583 320//583 +f 229//584 320//584 230//584 +f 321//585 322//585 323//585 +f 324//586 325//586 322//586 +f 324//587 322//587 321//587 +f 326//588 323//588 327//588 +f 326//589 321//589 323//589 +f 328//590 325//590 324//590 +f 329//591 325//591 328//591 +f 330//592 327//592 331//592 +f 330//593 326//593 327//593 +f 332//594 329//594 328//594 +f 333//595 329//595 332//595 +f 334//596 331//596 270//596 +f 334//597 330//597 331//597 +f 335//598 333//598 332//598 +f 336//599 270//599 269//599 +f 336//600 334//600 270//600 +f 337//601 338//601 333//601 +f 337//602 333//602 335//602 +f 339//603 269//603 283//603 +f 339//604 336//604 269//604 +f 340//605 341//605 338//605 +f 340//606 338//606 337//606 +f 342//607 339//607 283//607 +f 343//608 340//608 344//608 +f 343//609 341//609 340//609 +f 284//610 342//610 283//610 +f 345//611 342//611 284//611 +f 346//612 343//612 344//612 +f 347//613 343//613 346//613 +f 293//614 345//614 284//614 +f 348//615 345//615 293//615 +f 241//616 348//616 293//616 +f 349//617 347//617 346//617 +f 349//618 346//618 350//618 +f 240//619 348//619 241//619 +f 240//620 351//620 348//620 +f 352//621 349//621 350//621 +f 352//622 350//622 353//622 +f 354//623 352//623 353//623 +f 355//624 351//624 240//624 +f 356//625 355//625 240//625 +f 357//626 352//626 354//626 +f 358//627 355//627 356//627 +f 358//628 359//628 355//628 +f 360//629 357//629 354//629 +f 360//630 354//630 361//630 +f 360//631 359//631 358//631 +f 360//632 361//632 359//632 +f 362//633 247//633 225//633 +f 362//634 225//634 260//634 +f 363//635 245//635 247//635 +f 363//636 247//636 362//636 +f 364//637 243//637 245//637 +f 364//638 245//638 363//638 +f 365//639 239//639 243//639 +f 365//640 240//640 239//640 +f 365//641 356//641 240//641 +f 365//642 243//642 364//642 +f 366//643 260//643 261//643 +f 366//644 261//644 264//644 +f 366//645 362//645 260//645 +f 367//646 362//646 366//646 +f 367//647 363//647 362//647 +f 368//648 363//648 367//648 +f 368//649 364//649 363//649 +f 369//650 358//650 356//650 +f 369//651 360//651 358//651 +f 369//652 364//652 368//652 +f 369//653 365//653 364//653 +f 369//654 356//654 365//654 +f 370//655 367//655 366//655 +f 370//656 366//656 264//656 +f 371//657 367//657 370//657 +f 372//658 368//658 367//658 +f 372//659 369//659 368//659 +f 372//660 367//660 371//660 +f 373//661 360//661 369//661 +f 373//662 369//662 372//662 +f 374//663 264//663 265//663 +f 374//664 265//664 267//664 +f 374//665 267//665 375//665 +f 374//666 370//666 264//666 +f 376//667 375//667 377//667 +f 376//668 377//668 378//668 +f 376//669 374//669 375//669 +f 376//670 371//670 370//670 +f 376//671 370//671 374//671 +f 379//672 372//672 371//672 +f 379//673 376//673 378//673 +f 379//674 371//674 376//674 +f 380//675 378//675 381//675 +f 380//676 381//676 352//676 +f 380//677 357//677 360//677 +f 380//678 352//678 357//678 +f 380//679 379//679 378//679 +f 380//680 360//680 373//680 +f 380//681 373//681 372//681 +f 380//682 372//682 379//682 +f 382//683 383//683 384//683 +f 382//684 385//684 383//684 +f 382//685 386//685 385//685 +f 384//686 387//686 388//686 +f 383//687 387//687 384//687 +f 386//688 389//688 385//688 +f 386//689 390//689 389//689 +f 388//690 391//690 392//690 +f 387//691 391//691 388//691 +f 390//692 393//692 389//692 +f 390//693 394//693 393//693 +f 392//694 395//694 317//694 +f 391//695 395//695 392//695 +f 394//696 396//696 393//696 +f 317//697 397//697 309//697 +f 395//698 397//698 317//698 +f 398//699 399//699 394//699 +f 394//700 399//700 396//700 +f 309//701 400//701 310//701 +f 397//702 400//702 309//702 +f 401//703 402//703 398//703 +f 398//704 402//704 399//704 +f 400//705 403//705 310//705 +f 401//706 404//706 402//706 +f 403//707 304//707 310//707 +f 401//708 405//708 404//708 +f 403//709 406//709 304//709 +f 406//710 299//710 304//710 +f 405//711 407//711 404//711 +f 404//712 407//712 408//712 +f 406//713 409//713 299//713 +f 409//714 258//714 299//714 +f 407//715 410//715 408//715 +f 408//716 410//716 411//716 +f 409//717 257//717 258//717 +f 412//718 257//718 409//718 +f 410//719 413//719 411//719 +f 411//720 413//720 414//720 +f 413//721 415//721 414//721 +f 412//722 416//722 257//722 +f 417//723 416//723 412//723 +f 413//724 418//724 415//724 +f 417//725 419//725 416//725 +f 419//726 420//726 416//726 +f 421//727 420//727 419//727 +f 418//728 422//728 415//728 +f 415//729 422//729 421//729 +f 421//730 422//730 420//730 +f 249//731 259//731 228//731 +f 423//732 424//732 268//732 +f 423//733 268//733 266//733 +f 425//734 426//734 424//734 +f 425//735 424//735 423//735 +f 427//736 428//736 426//736 +f 427//737 426//737 425//737 +f 429//738 418//738 413//738 +f 429//739 430//739 428//739 +f 429//740 413//740 430//740 +f 429//741 428//741 427//741 +f 431//742 266//742 263//742 +f 431//743 423//743 266//743 +f 431//744 425//744 423//744 +f 432//745 425//745 431//745 +f 433//746 427//746 425//746 +f 433//747 425//747 432//747 +f 434//748 422//748 418//748 +f 434//749 427//749 433//749 +f 434//750 429//750 427//750 +f 434//751 418//751 429//751 +f 435//752 262//752 259//752 +f 435//753 263//753 262//753 +f 435//754 431//754 263//754 +f 436//755 433//755 432//755 +f 436//756 431//756 435//756 +f 436//757 432//757 431//757 +f 437//758 433//758 436//758 +f 438//759 416//759 420//759 +f 438//760 420//760 422//760 +f 438//761 422//761 434//761 +f 438//762 434//762 433//762 +f 438//763 433//763 437//763 +f 439//764 249//764 251//764 +f 439//765 435//765 259//765 +f 439//766 259//766 249//766 +f 440//767 439//767 251//767 +f 440//768 436//768 435//768 +f 440//769 435//769 439//769 +f 441//770 251//770 254//770 +f 441//771 437//771 436//771 +f 441//772 436//772 440//772 +f 441//773 438//773 437//773 +f 441//774 440//774 251//774 +f 442//775 257//775 416//775 +f 442//776 254//776 255//776 +f 442//777 255//777 257//777 +f 442//778 416//778 438//778 +f 442//779 441//779 254//779 +f 442//780 438//780 441//780 +f 443//781 267//781 268//781 +f 443//782 268//782 444//782 +f 271//783 270//783 331//783 +f 271//784 331//784 445//784 +f 277//785 445//785 446//785 +f 277//786 271//786 445//786 +f 275//787 446//787 447//787 +f 275//788 277//788 446//788 +f 273//789 447//789 448//789 +f 273//790 275//790 447//790 +f 229//791 448//791 319//791 +f 229//792 273//792 448//792 +f 294//793 320//793 449//793 +f 294//794 230//794 320//794 +f 313//795 449//795 450//795 +f 313//796 450//796 451//796 +f 313//797 294//797 449//797 +f 315//798 313//798 451//798 +f 318//799 451//799 452//799 +f 318//800 315//800 451//800 +f 317//801 452//801 392//801 +f 317//802 318//802 452//802 +f 453//803 454//803 455//803 +f 456//804 455//804 457//804 +f 456//805 453//805 455//805 +f 458//806 457//806 459//806 +f 458//807 456//807 457//807 +f 460//808 458//808 459//808 +f 461//809 459//809 462//809 +f 461//810 460//810 459//810 +f 319//811 462//811 320//811 +f 319//812 461//812 462//812 +f 463//813 349//813 352//813 +f 463//814 352//814 381//814 +f 464//815 381//815 378//815 +f 464//816 463//816 381//816 +f 465//817 378//817 377//817 +f 465//818 464//818 378//818 +f 466//819 377//819 375//819 +f 466//820 465//820 377//820 +f 443//821 375//821 267//821 +f 443//822 466//822 375//822 +f 467//823 468//823 453//823 +f 467//824 453//824 456//824 +f 469//825 470//825 468//825 +f 469//826 468//826 467//826 +f 471//827 472//827 470//827 +f 471//828 470//828 469//828 +f 473//829 474//829 472//829 +f 473//830 329//830 474//830 +f 473//831 325//831 329//831 +f 473//832 472//832 471//832 +f 475//833 456//833 458//833 +f 475//834 467//834 456//834 +f 476//835 467//835 475//835 +f 476//836 469//836 467//836 +f 477//837 469//837 476//837 +f 477//838 471//838 469//838 +f 478//839 322//839 325//839 +f 478//840 323//840 322//840 +f 478//841 471//841 477//841 +f 478//842 473//842 471//842 +f 478//843 325//843 473//843 +f 479//844 458//844 460//844 +f 479//845 460//845 461//845 +f 479//846 475//846 458//846 +f 479//847 476//847 475//847 +f 480//848 476//848 479//848 +f 481//849 477//849 476//849 +f 481//850 476//850 480//850 +f 482//851 323//851 478//851 +f 482//852 477//852 481//852 +f 482//853 478//853 477//853 +f 483//854 461//854 319//854 +f 483//855 319//855 448//855 +f 483//856 448//856 447//856 +f 483//857 479//857 461//857 +f 484//858 447//858 446//858 +f 484//859 479//859 483//859 +f 484//860 483//860 447//860 +f 484//861 480//861 479//861 +f 485//862 481//862 480//862 +f 485//863 484//863 446//863 +f 485//864 480//864 484//864 +f 486//865 446//865 445//865 +f 486//866 445//866 331//866 +f 486//867 327//867 323//867 +f 486//868 331//868 327//868 +f 486//869 323//869 482//869 +f 486//870 485//870 446//870 +f 486//871 482//871 481//871 +f 486//872 481//872 485//872 +f 487//873 488//873 489//873 +f 490//874 466//874 443//874 +f 490//875 443//875 491//875 +f 492//876 465//876 466//876 +f 492//877 466//877 490//877 +f 493//878 464//878 465//878 +f 493//879 465//879 492//879 +f 494//880 463//880 464//880 +f 494//881 349//881 463//881 +f 494//882 347//882 349//882 +f 494//883 464//883 493//883 +f 495//884 491//884 496//884 +f 495//885 490//885 491//885 +f 497//886 490//886 495//886 +f 497//887 492//887 490//887 +f 498//888 492//888 497//888 +f 498//889 493//889 492//889 +f 499//890 343//890 347//890 +f 499//891 493//891 498//891 +f 499//892 494//892 493//892 +f 499//893 347//893 494//893 +f 500//894 496//894 501//894 +f 500//895 501//895 488//895 +f 500//896 495//896 496//896 +f 500//897 497//897 495//897 +f 502//898 497//898 500//898 +f 503//899 498//899 497//899 +f 503//900 497//900 502//900 +f 504//901 341//901 343//901 +f 504//902 338//902 341//902 +f 504//903 343//903 499//903 +f 504//904 498//904 503//904 +f 504//905 499//905 498//905 +f 505//906 487//906 506//906 +f 505//907 500//907 488//907 +f 505//908 488//908 487//908 +f 507//909 506//909 508//909 +f 507//910 500//910 505//910 +f 507//911 502//911 500//911 +f 507//912 505//912 506//912 +f 507//913 503//913 502//913 +f 509//914 507//914 508//914 +f 509//915 503//915 507//915 +f 510//916 508//916 511//916 +f 510//917 511//917 333//917 +f 510//918 333//918 338//918 +f 510//919 338//919 504//919 +f 510//920 509//920 508//920 +f 510//921 504//921 503//921 +f 510//922 503//922 509//922 +f 474//923 329//923 333//923 +f 474//924 333//924 511//924 +f 472//925 511//925 508//925 +f 472//926 474//926 511//926 +f 470//927 508//927 506//927 +f 470//928 472//928 508//928 +f 468//929 506//929 487//929 +f 468//930 470//930 506//930 +f 453//931 487//931 489//931 +f 453//932 468//932 487//932 +f 512//933 351//933 513//933 +f 512//934 348//934 351//934 +f 514//935 513//935 515//935 +f 514//936 515//936 516//936 +f 514//937 512//937 513//937 +f 517//938 514//938 516//938 +f 518//939 516//939 519//939 +f 518//940 517//940 516//940 +f 520//941 519//941 521//941 +f 520//942 518//942 519//942 +f 522//943 513//943 351//943 +f 522//944 351//944 355//944 +f 523//945 515//945 513//945 +f 523//946 513//946 522//946 +f 524//947 516//947 515//947 +f 524//948 515//948 523//948 +f 525//949 526//949 521//949 +f 525//950 519//950 516//950 +f 525//951 521//951 519//951 +f 525//952 516//952 524//952 +f 527//953 355//953 359//953 +f 527//954 522//954 355//954 +f 528//955 522//955 527//955 +f 528//956 523//956 522//956 +f 529//957 524//957 523//957 +f 529//958 523//958 528//958 +f 530//959 531//959 526//959 +f 530//960 524//960 529//960 +f 530//961 525//961 524//961 +f 530//962 526//962 525//962 +f 532//963 361//963 354//963 +f 532//964 359//964 361//964 +f 532//965 527//965 359//965 +f 533//966 527//966 532//966 +f 533//967 528//967 527//967 +f 534//968 529//968 528//968 +f 534//969 528//969 533//969 +f 535//970 536//970 531//970 +f 535//971 531//971 530//971 +f 535//972 530//972 529//972 +f 535//973 529//973 534//973 +f 537//974 354//974 353//974 +f 537//975 353//975 538//975 +f 537//976 532//976 354//976 +f 537//977 533//977 532//977 +f 539//978 538//978 540//978 +f 539//979 540//979 541//979 +f 539//980 537//980 538//980 +f 539//981 533//981 537//981 +f 542//982 539//982 541//982 +f 542//983 534//983 533//983 +f 542//984 533//984 539//984 +f 543//985 544//985 545//985 +f 543//986 545//986 536//986 +f 543//987 541//987 546//987 +f 543//988 546//988 544//988 +f 543//989 536//989 535//989 +f 543//990 535//990 534//990 +f 543//991 542//991 541//991 +f 543//992 534//992 542//992 +f 336//993 547//993 334//993 +f 520//994 548//994 518//994 +f 549//995 547//995 336//995 +f 550//996 551//996 547//996 +f 550//997 547//997 549//997 +f 552//998 553//998 551//998 +f 552//999 551//999 550//999 +f 554//1000 555//1000 556//1000 +f 554//1001 557//1001 553//1001 +f 554//1002 556//1002 557//1002 +f 554//1003 553//1003 552//1003 +f 558//1004 339//1004 342//1004 +f 558//1005 336//1005 339//1005 +f 558//1006 549//1006 336//1006 +f 559//1007 549//1007 558//1007 +f 559//1008 550//1008 549//1008 +f 560//1009 550//1009 559//1009 +f 560//1010 552//1010 550//1010 +f 561//1011 562//1011 555//1011 +f 561//1012 552//1012 560//1012 +f 561//1013 555//1013 554//1013 +f 561//1014 554//1014 552//1014 +f 563//1015 558//1015 342//1015 +f 564//1016 559//1016 558//1016 +f 564//1017 558//1017 563//1017 +f 565//1018 559//1018 564//1018 +f 565//1019 561//1019 560//1019 +f 565//1020 560//1020 559//1020 +f 566//1021 567//1021 562//1021 +f 566//1022 562//1022 561//1022 +f 566//1023 561//1023 565//1023 +f 568//1024 345//1024 348//1024 +f 568//1025 342//1025 345//1025 +f 568//1026 348//1026 512//1026 +f 568//1027 563//1027 342//1027 +f 569//1028 512//1028 514//1028 +f 569//1029 564//1029 563//1029 +f 569//1030 568//1030 512//1030 +f 569//1031 563//1031 568//1031 +f 570//1032 514//1032 517//1032 +f 570//1033 565//1033 564//1033 +f 570//1034 564//1034 569//1034 +f 570//1035 569//1035 514//1035 +f 571//1036 548//1036 567//1036 +f 571//1037 517//1037 518//1037 +f 571//1038 567//1038 566//1038 +f 571//1039 518//1039 548//1039 +f 571//1040 566//1040 565//1040 +f 571//1041 565//1041 570//1041 +f 571//1042 570//1042 517//1042 +f 353//1043 350//1043 572//1043 +f 538//1044 572//1044 573//1044 +f 538//1045 353//1045 572//1045 +f 540//1046 573//1046 574//1046 +f 540//1047 538//1047 573//1047 +f 541//1048 574//1048 575//1048 +f 541//1049 540//1049 574//1049 +f 546//1050 575//1050 576//1050 +f 546//1051 541//1051 575//1051 +f 544//1052 546//1052 576//1052 +f 577//1053 334//1053 547//1053 +f 577//1054 547//1054 551//1054 +f 577//1055 330//1055 334//1055 +f 578//1056 551//1056 553//1056 +f 578//1057 577//1057 551//1057 +f 579//1058 553//1058 557//1058 +f 579//1059 578//1059 553//1059 +f 580//1060 557//1060 556//1060 +f 580//1061 579//1061 557//1061 +f 581//1062 580//1062 556//1062 +f 582//1063 572//1063 350//1063 +f 582//1064 350//1064 346//1064 +f 583//1065 573//1065 572//1065 +f 583//1066 572//1066 582//1066 +f 584//1067 574//1067 573//1067 +f 584//1068 573//1068 583//1068 +f 585//1069 586//1069 576//1069 +f 585//1070 575//1070 574//1070 +f 585//1071 576//1071 575//1071 +f 585//1072 574//1072 584//1072 +f 587//1073 346//1073 344//1073 +f 587//1074 582//1074 346//1074 +f 587//1075 583//1075 582//1075 +f 588//1076 584//1076 583//1076 +f 588//1077 583//1077 587//1077 +f 589//1078 584//1078 588//1078 +f 590//1079 591//1079 586//1079 +f 590//1080 584//1080 589//1080 +f 590//1081 585//1081 584//1081 +f 590//1082 586//1082 585//1082 +f 592//1083 344//1083 340//1083 +f 592//1084 587//1084 344//1084 +f 593//1085 587//1085 592//1085 +f 593//1086 588//1086 587//1086 +f 594//1087 589//1087 588//1087 +f 594//1088 588//1088 593//1088 +f 595//1089 596//1089 591//1089 +f 595//1090 590//1090 589//1090 +f 595//1091 591//1091 590//1091 +f 595//1092 589//1092 594//1092 +f 597//1093 337//1093 335//1093 +f 597//1094 340//1094 337//1094 +f 597//1095 335//1095 598//1095 +f 597//1096 592//1096 340//1096 +f 599//1097 598//1097 600//1097 +f 599//1098 593//1098 592//1098 +f 599//1099 597//1099 598//1099 +f 599//1100 592//1100 597//1100 +f 601//1101 600//1101 602//1101 +f 601//1102 594//1102 593//1102 +f 601//1103 593//1103 599//1103 +f 601//1104 599//1104 600//1104 +f 603//1105 604//1105 605//1105 +f 603//1106 605//1106 596//1106 +f 603//1107 602//1107 606//1107 +f 603//1108 606//1108 604//1108 +f 603//1109 594//1109 601//1109 +f 603//1110 596//1110 595//1110 +f 603//1111 595//1111 594//1111 +f 603//1112 601//1112 602//1112 +f 577//1113 326//1113 330//1113 +f 607//1114 608//1114 332//1114 +f 607//1115 332//1115 328//1115 +f 609//1116 610//1116 608//1116 +f 609//1117 608//1117 607//1117 +f 611//1118 612//1118 610//1118 +f 611//1119 610//1119 609//1119 +f 613//1120 614//1120 615//1120 +f 613//1121 616//1121 612//1121 +f 613//1122 615//1122 616//1122 +f 613//1123 612//1123 611//1123 +f 617//1124 328//1124 324//1124 +f 617//1125 607//1125 328//1125 +f 618//1126 607//1126 617//1126 +f 618//1127 609//1127 607//1127 +f 619//1128 609//1128 618//1128 +f 619//1129 611//1129 609//1129 +f 620//1130 621//1130 614//1130 +f 620//1131 611//1131 619//1131 +f 620//1132 613//1132 611//1132 +f 620//1133 614//1133 613//1133 +f 622//1134 324//1134 321//1134 +f 622//1135 617//1135 324//1135 +f 623//1136 618//1136 617//1136 +f 623//1137 617//1137 622//1137 +f 624//1138 619//1138 618//1138 +f 624//1139 618//1139 623//1139 +f 625//1140 626//1140 621//1140 +f 625//1141 620//1141 619//1141 +f 625//1142 621//1142 620//1142 +f 625//1143 619//1143 624//1143 +f 627//1144 321//1144 326//1144 +f 627//1145 577//1145 578//1145 +f 627//1146 326//1146 577//1146 +f 627//1147 622//1147 321//1147 +f 628//1148 578//1148 579//1148 +f 628//1149 623//1149 622//1149 +f 628//1150 627//1150 578//1150 +f 628//1151 624//1151 623//1151 +f 628//1152 622//1152 627//1152 +f 629//1153 579//1153 580//1153 +f 629//1154 628//1154 579//1154 +f 629//1155 624//1155 628//1155 +f 630//1156 581//1156 631//1156 +f 630//1157 631//1157 626//1157 +f 630//1158 580//1158 581//1158 +f 630//1159 626//1159 625//1159 +f 630//1160 625//1160 624//1160 +f 630//1161 629//1161 580//1161 +f 630//1162 624//1162 629//1162 +f 335//1163 332//1163 608//1163 +f 598//1164 608//1164 610//1164 +f 598//1165 335//1165 608//1165 +f 600//1166 610//1166 612//1166 +f 600//1167 598//1167 610//1167 +f 602//1168 612//1168 616//1168 +f 602//1169 600//1169 612//1169 +f 606//1170 616//1170 615//1170 +f 606//1171 602//1171 616//1171 +f 604//1172 606//1172 615//1172 +f 632//1173 268//1173 424//1173 +f 632//1174 444//1174 268//1174 +f 633//1175 424//1175 426//1175 +f 633//1176 426//1176 428//1176 +f 633//1177 632//1177 424//1177 +f 634//1178 633//1178 428//1178 +f 635//1179 428//1179 430//1179 +f 635//1180 634//1180 428//1180 +f 410//1181 430//1181 413//1181 +f 410//1182 635//1182 430//1182 +f 636//1183 449//1183 320//1183 +f 636//1184 320//1184 462//1184 +f 637//1185 450//1185 449//1185 +f 637//1186 449//1186 636//1186 +f 638//1187 451//1187 450//1187 +f 638//1188 450//1188 637//1188 +f 639//1189 388//1189 392//1189 +f 639//1190 452//1190 451//1190 +f 639//1191 392//1191 452//1191 +f 639//1192 451//1192 638//1192 +f 640//1193 459//1193 457//1193 +f 640//1194 462//1194 459//1194 +f 640//1195 636//1195 462//1195 +f 641//1196 636//1196 640//1196 +f 641//1197 637//1197 636//1197 +f 642//1198 638//1198 637//1198 +f 642//1199 637//1199 641//1199 +f 643//1200 384//1200 388//1200 +f 643//1201 638//1201 642//1201 +f 643//1202 639//1202 638//1202 +f 643//1203 388//1203 639//1203 +f 644//1204 640//1204 457//1204 +f 645//1205 641//1205 640//1205 +f 645//1206 642//1206 641//1206 +f 645//1207 640//1207 644//1207 +f 646//1208 642//1208 645//1208 +f 647//1209 382//1209 384//1209 +f 647//1210 384//1210 643//1210 +f 647//1211 643//1211 642//1211 +f 647//1212 642//1212 646//1212 +f 648//1213 455//1213 454//1213 +f 648//1214 457//1214 455//1214 +f 648//1215 454//1215 649//1215 +f 648//1216 644//1216 457//1216 +f 650//1217 649//1217 651//1217 +f 650//1218 645//1218 644//1218 +f 650//1219 648//1219 649//1219 +f 650//1220 644//1220 648//1220 +f 652//1221 651//1221 653//1221 +f 652//1222 646//1222 645//1222 +f 652//1223 645//1223 650//1223 +f 652//1224 650//1224 651//1224 +f 654//1225 390//1225 386//1225 +f 654//1226 386//1226 382//1226 +f 654//1227 653//1227 655//1227 +f 654//1228 655//1228 390//1228 +f 654//1229 646//1229 652//1229 +f 654//1230 382//1230 647//1230 +f 654//1231 647//1231 646//1231 +f 654//1232 652//1232 653//1232 +f 656//1233 657//1233 658//1233 +f 656//1234 658//1234 659//1234 +f 660//1235 661//1235 657//1235 +f 660//1236 657//1236 656//1236 +f 662//1237 663//1237 661//1237 +f 662//1238 661//1238 660//1238 +f 664//1239 398//1239 394//1239 +f 664//1240 665//1240 663//1240 +f 664//1241 394//1241 665//1241 +f 664//1242 663//1242 662//1242 +f 666//1243 667//1243 668//1243 +f 666//1244 659//1244 667//1244 +f 666//1245 656//1245 659//1245 +f 666//1246 660//1246 656//1246 +f 669//1247 660//1247 666//1247 +f 670//1248 662//1248 660//1248 +f 670//1249 660//1249 669//1249 +f 671//1250 401//1250 398//1250 +f 671//1251 662//1251 670//1251 +f 671//1252 664//1252 662//1252 +f 671//1253 398//1253 664//1253 +f 672//1254 666//1254 668//1254 +f 673//1255 670//1255 669//1255 +f 673//1256 669//1256 666//1256 +f 673//1257 666//1257 672//1257 +f 674//1258 670//1258 673//1258 +f 675//1259 405//1259 401//1259 +f 675//1260 401//1260 671//1260 +f 675//1261 671//1261 670//1261 +f 675//1262 670//1262 674//1262 +f 676//1263 677//1263 444//1263 +f 676//1264 668//1264 677//1264 +f 676//1265 444//1265 632//1265 +f 676//1266 672//1266 668//1266 +f 678//1267 632//1267 633//1267 +f 678//1268 673//1268 672//1268 +f 678//1269 676//1269 632//1269 +f 678//1270 672//1270 676//1270 +f 679//1271 633//1271 634//1271 +f 679//1272 674//1272 673//1272 +f 679//1273 673//1273 678//1273 +f 679//1274 675//1274 674//1274 +f 679//1275 678//1275 633//1275 +f 680//1276 410//1276 407//1276 +f 680//1277 407//1277 405//1277 +f 680//1278 634//1278 635//1278 +f 680//1279 635//1279 410//1279 +f 680//1280 405//1280 675//1280 +f 680//1281 679//1281 634//1281 +f 680//1282 675//1282 679//1282 +f 649//1283 658//1283 657//1283 +f 649//1284 454//1284 658//1284 +f 651//1285 657//1285 661//1285 +f 651//1286 661//1286 663//1286 +f 651//1287 649//1287 657//1287 +f 653//1288 651//1288 663//1288 +f 655//1289 663//1289 665//1289 +f 655//1290 653//1290 663//1290 +f 390//1291 665//1291 394//1291 +f 390//1292 655//1292 665//1292 +f 681//1293 682//1293 683//1293 +f 681//1294 684//1294 682//1294 +f 685//1295 683//1295 686//1295 +f 685//1296 686//1296 687//1296 +f 685//1297 681//1297 683//1297 +f 688//1298 685//1298 687//1298 +f 689//1299 687//1299 690//1299 +f 689//1300 688//1300 687//1300 +f 409//1301 690//1301 412//1301 +f 409//1302 689//1302 690//1302 +f 691//1303 683//1303 682//1303 +f 691//1304 682//1304 692//1304 +f 693//1305 686//1305 683//1305 +f 693//1306 683//1306 691//1306 +f 694//1307 687//1307 686//1307 +f 694//1308 686//1308 693//1308 +f 695//1309 417//1309 412//1309 +f 695//1310 690//1310 687//1310 +f 695//1311 412//1311 690//1311 +f 695//1312 687//1312 694//1312 +f 696//1313 692//1313 697//1313 +f 696//1314 691//1314 692//1314 +f 698//1315 691//1315 696//1315 +f 698//1316 693//1316 691//1316 +f 699//1317 694//1317 693//1317 +f 699//1318 693//1318 698//1318 +f 700//1319 421//1319 419//1319 +f 700//1320 419//1320 417//1320 +f 700//1321 694//1321 699//1321 +f 700//1322 695//1322 694//1322 +f 700//1323 417//1323 695//1323 +f 701//1324 697//1324 702//1324 +f 701//1325 696//1325 697//1325 +f 703//1326 696//1326 701//1326 +f 703//1327 698//1327 696//1327 +f 704//1328 699//1328 698//1328 +f 704//1329 698//1329 703//1329 +f 705//1330 700//1330 699//1330 +f 705//1331 421//1331 700//1331 +f 705//1332 699//1332 704//1332 +f 706//1333 707//1333 708//1333 +f 706//1334 702//1334 707//1334 +f 706//1335 708//1335 709//1335 +f 706//1336 709//1336 710//1336 +f 706//1337 701//1337 702//1337 +f 711//1338 703//1338 701//1338 +f 711//1339 701//1339 706//1339 +f 711//1340 706//1340 710//1340 +f 712//1341 710//1341 713//1341 +f 712//1342 703//1342 711//1342 +f 712//1343 704//1343 703//1343 +f 712//1344 711//1344 710//1344 +f 714//1345 414//1345 415//1345 +f 714//1346 415//1346 421//1346 +f 714//1347 713//1347 715//1347 +f 714//1348 715//1348 414//1348 +f 714//1349 421//1349 705//1349 +f 714//1350 705//1350 704//1350 +f 714//1351 712//1351 713//1351 +f 714//1352 704//1352 712//1352 +f 716//1353 717//1353 718//1353 +f 681//1354 719//1354 684//1354 +f 409//1355 406//1355 689//1355 +f 720//1356 721//1356 717//1356 +f 720//1357 717//1357 716//1357 +f 722//1358 721//1358 720//1358 +f 723//1359 724//1359 721//1359 +f 723//1360 721//1360 722//1360 +f 725//1361 397//1361 395//1361 +f 725//1362 726//1362 724//1362 +f 725//1363 395//1363 726//1363 +f 725//1364 724//1364 723//1364 +f 727//1365 716//1365 728//1365 +f 727//1366 720//1366 716//1366 +f 729//1367 720//1367 727//1367 +f 729//1368 722//1368 720//1368 +f 730//1369 722//1369 729//1369 +f 730//1370 723//1370 722//1370 +f 731//1371 400//1371 397//1371 +f 731//1372 397//1372 725//1372 +f 731//1373 723//1373 730//1373 +f 731//1374 725//1374 723//1374 +f 732//1375 728//1375 733//1375 +f 732//1376 727//1376 728//1376 +f 734//1377 729//1377 727//1377 +f 734//1378 727//1378 732//1378 +f 735//1379 729//1379 734//1379 +f 735//1380 731//1380 730//1380 +f 735//1381 730//1381 729//1381 +f 736//1382 406//1382 403//1382 +f 736//1383 403//1383 400//1383 +f 736//1384 400//1384 731//1384 +f 736//1385 731//1385 735//1385 +f 737//1386 733//1386 719//1386 +f 737//1387 732//1387 733//1387 +f 737//1388 719//1388 681//1388 +f 738//1389 681//1389 685//1389 +f 738//1390 734//1390 732//1390 +f 738//1391 737//1391 681//1391 +f 738//1392 732//1392 737//1392 +f 739//1393 685//1393 688//1393 +f 739//1394 734//1394 738//1394 +f 739//1395 735//1395 734//1395 +f 739//1396 736//1396 735//1396 +f 739//1397 738//1397 685//1397 +f 740//1398 688//1398 689//1398 +f 740//1399 689//1399 406//1399 +f 740//1400 406//1400 736//1400 +f 740//1401 739//1401 688//1401 +f 740//1402 736//1402 739//1402 +f 708//1403 741//1403 742//1403 +f 709//1404 742//1404 743//1404 +f 709//1405 708//1405 742//1405 +f 710//1406 743//1406 744//1406 +f 710//1407 709//1407 743//1407 +f 713//1408 744//1408 745//1408 +f 713//1409 710//1409 744//1409 +f 715//1410 745//1410 411//1410 +f 715//1411 713//1411 745//1411 +f 414//1412 715//1412 411//1412 +f 746//1413 718//1413 717//1413 +f 747//1414 717//1414 721//1414 +f 747//1415 746//1415 717//1415 +f 748//1416 721//1416 724//1416 +f 748//1417 747//1417 721//1417 +f 749//1418 724//1418 726//1418 +f 749//1419 748//1419 724//1419 +f 750//1420 726//1420 395//1420 +f 750//1421 749//1421 726//1421 +f 391//1422 750//1422 395//1422 +f 751//1423 742//1423 741//1423 +f 751//1424 741//1424 752//1424 +f 753//1425 743//1425 742//1425 +f 753//1426 742//1426 751//1426 +f 754//1427 744//1427 743//1427 +f 754//1428 743//1428 753//1428 +f 755//1429 408//1429 411//1429 +f 755//1430 745//1430 744//1430 +f 755//1431 411//1431 745//1431 +f 755//1432 744//1432 754//1432 +f 756//1433 757//1433 758//1433 +f 756//1434 752//1434 757//1434 +f 756//1435 751//1435 752//1435 +f 759//1436 751//1436 756//1436 +f 759//1437 753//1437 751//1437 +f 760//1438 754//1438 753//1438 +f 760//1439 753//1439 759//1439 +f 761//1440 404//1440 408//1440 +f 761//1441 754//1441 760//1441 +f 761//1442 755//1442 754//1442 +f 761//1443 408//1443 755//1443 +f 762//1444 756//1444 758//1444 +f 763//1445 760//1445 759//1445 +f 763//1446 756//1446 762//1446 +f 763//1447 759//1447 756//1447 +f 764//1448 760//1448 763//1448 +f 764//1449 761//1449 760//1449 +f 765//1450 402//1450 404//1450 +f 765//1451 404//1451 761//1451 +f 765//1452 761//1452 764//1452 +f 766//1453 767//1453 768//1453 +f 766//1454 758//1454 767//1454 +f 766//1455 768//1455 769//1455 +f 766//1456 762//1456 758//1456 +f 766//1457 763//1457 762//1457 +f 770//1458 769//1458 771//1458 +f 770//1459 766//1459 769//1459 +f 770//1460 763//1460 766//1460 +f 772//1461 771//1461 773//1461 +f 772//1462 764//1462 763//1462 +f 772//1463 770//1463 771//1463 +f 772//1464 763//1464 770//1464 +f 774//1465 396//1465 399//1465 +f 774//1466 399//1466 402//1466 +f 774//1467 773//1467 775//1467 +f 774//1468 775//1468 396//1468 +f 774//1469 402//1469 765//1469 +f 774//1470 765//1470 764//1470 +f 774//1471 772//1471 773//1471 +f 774//1472 764//1472 772//1472 +f 776//1473 777//1473 778//1473 +f 391//1474 387//1474 750//1474 +f 779//1475 777//1475 776//1475 +f 780//1476 781//1476 777//1476 +f 780//1477 777//1477 779//1477 +f 782//1478 783//1478 781//1478 +f 782//1479 781//1479 780//1479 +f 784//1480 389//1480 393//1480 +f 784//1481 785//1481 783//1481 +f 784//1482 393//1482 785//1482 +f 784//1483 783//1483 782//1483 +f 786//1484 776//1484 787//1484 +f 786//1485 779//1485 776//1485 +f 786//1486 780//1486 779//1486 +f 788//1487 780//1487 786//1487 +f 789//1488 780//1488 788//1488 +f 789//1489 782//1489 780//1489 +f 790//1490 385//1490 389//1490 +f 790//1491 389//1491 784//1491 +f 790//1492 784//1492 782//1492 +f 790//1493 782//1493 789//1493 +f 791//1494 787//1494 792//1494 +f 791//1495 786//1495 787//1495 +f 793//1496 786//1496 791//1496 +f 793//1497 788//1497 786//1497 +f 794//1498 789//1498 788//1498 +f 794//1499 788//1499 793//1499 +f 795//1500 383//1500 385//1500 +f 795//1501 790//1501 789//1501 +f 795//1502 385//1502 790//1502 +f 795//1503 789//1503 794//1503 +f 796//1504 797//1504 746//1504 +f 796//1505 792//1505 797//1505 +f 796//1506 746//1506 747//1506 +f 796//1507 791//1507 792//1507 +f 798//1508 747//1508 748//1508 +f 798//1509 796//1509 747//1509 +f 798//1510 791//1510 796//1510 +f 798//1511 793//1511 791//1511 +f 799//1512 748//1512 749//1512 +f 799//1513 793//1513 798//1513 +f 799//1514 794//1514 793//1514 +f 799//1515 798//1515 748//1515 +f 800//1516 387//1516 383//1516 +f 800//1517 749//1517 750//1517 +f 800//1518 383//1518 795//1518 +f 800//1519 750//1519 387//1519 +f 800//1520 795//1520 794//1520 +f 800//1521 799//1521 749//1521 +f 800//1522 794//1522 799//1522 +f 768//1523 778//1523 777//1523 +f 769//1524 777//1524 781//1524 +f 769//1525 768//1525 777//1525 +f 771//1526 781//1526 783//1526 +f 771//1527 769//1527 781//1527 +f 773//1528 783//1528 785//1528 +f 773//1529 771//1529 783//1529 +f 775//1530 785//1530 393//1530 +f 775//1531 773//1531 785//1531 +f 396//1532 775//1532 393//1532 +f 443//1533 444//1533 677//1533 +f 491//1534 443//1534 677//1534 +f 496//1535 677//1535 668//1535 +f 496//1536 668//1536 667//1536 +f 496//1537 491//1537 677//1537 +f 501//1538 496//1538 667//1538 +f 488//1539 667//1539 659//1539 +f 488//1540 501//1540 667//1540 +f 489//1541 659//1541 658//1541 +f 489//1542 488//1542 659//1542 +f 453//1543 489//1543 658//1543 +f 453//1544 658//1544 454//1544 +f 520//1545 521//1545 682//1545 +f 520//1546 682//1546 684//1546 +f 521//1547 526//1547 682//1547 +f 682//1548 526//1548 692//1548 +f 692//1549 531//1549 697//1549 +f 526//1550 531//1550 692//1550 +f 702//1551 536//1551 707//1551 +f 697//1552 536//1552 702//1552 +f 531//1553 536//1553 697//1553 +f 536//1554 545//1554 707//1554 +f 707//1555 544//1555 708//1555 +f 545//1556 544//1556 707//1556 +f 718//1557 556//1557 716//1557 +f 716//1558 555//1558 728//1558 +f 556//1559 555//1559 716//1559 +f 555//1560 562//1560 728//1560 +f 733//1561 567//1561 719//1561 +f 728//1562 567//1562 733//1562 +f 562//1563 567//1563 728//1563 +f 567//1564 548//1564 719//1564 +f 719//1565 520//1565 684//1565 +f 548//1566 520//1566 719//1566 +f 544//1567 576//1567 708//1567 +f 708//1568 576//1568 741//1568 +f 581//1569 556//1569 718//1569 +f 581//1570 718//1570 746//1570 +f 576//1571 586//1571 741//1571 +f 752//1572 586//1572 757//1572 +f 741//1573 586//1573 752//1573 +f 586//1574 591//1574 757//1574 +f 758//1575 596//1575 767//1575 +f 757//1576 596//1576 758//1576 +f 591//1577 596//1577 757//1577 +f 596//1578 605//1578 767//1578 +f 767//1579 604//1579 768//1579 +f 605//1580 604//1580 767//1580 +f 778//1581 615//1581 776//1581 +f 615//1582 614//1582 776//1582 +f 787//1583 621//1583 792//1583 +f 776//1584 621//1584 787//1584 +f 614//1585 621//1585 776//1585 +f 621//1586 626//1586 792//1586 +f 792//1587 631//1587 797//1587 +f 626//1588 631//1588 792//1588 +f 797//1589 581//1589 746//1589 +f 631//1590 581//1590 797//1590 +f 604//1591 615//1591 768//1591 +f 768//1592 615//1592 778//1592 diff --git a/asset/icons/computer-symbolic.FCStd b/asset/icons/computer-symbolic.FCStd new file mode 100644 index 0000000..0da48ba Binary files /dev/null and b/asset/icons/computer-symbolic.FCStd differ diff --git a/asset/icons/computer-symbolic.obj b/asset/icons/computer-symbolic.obj new file mode 100644 index 0000000..288f826 --- /dev/null +++ b/asset/icons/computer-symbolic.obj @@ -0,0 +1,2380 @@ +# Created by FreeCAD +v 1.870924 -3.707492 -0.500000 +v 2.116667 -3.704167 0.000000 +v 2.116667 -3.704167 -1.000000 +v 0.862318 -3.885835 -0.833333 +v 0.928847 -3.849371 -1.000000 +v 0.846896 -3.896903 -1.000000 +v 0.871037 -3.880156 -0.750000 +v 0.905384 -3.860696 -0.750000 +v 0.833849 -3.907625 -0.833333 +v 0.812336 -3.929969 -1.000000 +v 0.849044 -3.895270 -0.750000 +v 0.862318 -3.885835 -0.166667 +v 0.846896 -3.896903 0.000000 +v 0.928847 -3.849371 0.000000 +v 0.905384 -3.860696 -0.250000 +v 0.871037 -3.880156 -0.250000 +v 0.849044 -3.895270 -0.250000 +v 0.833849 -3.907625 -0.166667 +v 0.812336 -3.929969 0.000000 +v 0.980140 -3.828386 -0.875000 +v 1.082487 -3.796507 -1.000000 +v 1.038458 -3.808945 -0.750000 +v 1.018231 -3.815258 -0.625000 +v 0.996045 -3.822689 -0.500000 +v 1.189199 -3.772071 -0.500000 +v 0.923686 -3.851753 -0.625000 +v 0.804125 -3.941568 -0.916667 +v 0.799101 -3.950740 -1.000000 +v 1.018231 -3.815258 -0.375000 +v 0.884667 -3.871941 -0.500000 +v 0.824204 -3.916698 -0.500000 +v 0.923686 -3.851753 -0.375000 +v 1.038458 -3.808945 -0.250000 +v 0.802128 -3.944930 -0.750000 +v 0.795467 -3.959992 -0.833333 +v 0.794579 -3.963270 -1.000000 +v 0.793854 -3.967339 -1.000000 +v 0.793750 -3.968750 -1.000000 +v 0.799546 -3.949817 -0.750000 +v 0.797557 -3.954214 -0.750000 +v 0.980140 -3.828386 -0.125000 +v 1.082487 -3.796507 0.000000 +v 0.802128 -3.944930 -0.250000 +v 0.799546 -3.949817 -0.250000 +v 0.797557 -3.954214 -0.250000 +v 0.804125 -3.941568 -0.083333 +v 0.799101 -3.950740 0.000000 +v 0.795467 -3.959992 -0.166667 +v 0.793750 -3.968750 0.000000 +v 0.794579 -3.963270 0.000000 +v 0.793854 -3.967339 0.000000 +v 1.161226 -3.777820 -0.875000 +v 1.319414 -3.750005 -1.000000 +v 1.251631 -3.760614 -0.750000 +v 1.220042 -3.766188 -0.625000 +v 1.474602 -3.731333 -0.500000 +v 1.220042 -3.766188 -0.375000 +v 1.251631 -3.760614 -0.250000 +v 1.161226 -3.777820 -0.125000 +v 1.319414 -3.750005 0.000000 +v 1.433328 -3.735639 -0.875000 +v 1.657671 -3.716855 -1.000000 +v 1.562542 -3.723509 -0.750000 +v 1.517716 -3.727280 -0.625000 +v 1.517716 -3.727280 -0.375000 +v 1.562542 -3.723509 -0.250000 +v 1.433328 -3.735639 -0.125000 +v 1.657671 -3.716855 0.000000 +v 1.814677 -3.709302 -0.875000 +v 1.814677 -3.709302 -0.125000 +v 1.050204 -4.233027 -0.500000 +v 1.058333 -4.233333 -1.000000 +v 1.058333 -4.233333 0.000000 +v 0.934404 -4.204270 -0.833333 +v 0.911940 -4.192683 -1.000000 +v 0.957614 -4.213765 -1.000000 +v 0.905294 -4.188717 -0.750000 +v 0.887658 -4.176762 -0.833333 +v 0.911450 -4.192400 -0.833333 +v 0.926501 -4.200490 -0.750000 +v 0.945592 -4.209130 -0.750000 +v 0.962471 -4.215477 -0.750000 +v 0.978794 -4.220604 -0.750000 +v 0.994301 -4.224642 -0.750000 +v 1.013257 -4.228556 -0.750000 +v 0.911450 -4.192400 -0.166667 +v 0.905294 -4.188717 -0.250000 +v 0.926501 -4.200490 -0.250000 +v 0.887658 -4.176762 -0.166667 +v 0.934404 -4.204270 -0.166667 +v 0.957614 -4.213765 0.000000 +v 0.911940 -4.192683 0.000000 +v 0.945592 -4.209130 -0.250000 +v 0.962471 -4.215477 -0.250000 +v 0.978794 -4.220604 -0.250000 +v 0.994301 -4.224642 -0.250000 +v 1.013257 -4.228556 -0.250000 +v 0.809245 -4.069189 -0.944444 +v 0.802228 -4.045078 -1.000000 +v 0.822234 -4.099779 -1.000000 +v 0.813434 -4.080431 -0.916667 +v 0.826718 -4.108102 -0.916667 +v 0.862618 -4.155210 -0.833333 +v 0.824070 -4.103289 -0.777778 +v 0.809657 -4.070374 -0.750000 +v 1.045870 -4.232736 -0.875000 +v 1.028261 -4.230887 -1.000000 +v 0.918192 -4.196176 -0.666667 +v 0.801080 -4.040099 -0.500000 +v 0.904539 -4.188250 -0.625000 +v 0.896068 -4.182741 -0.625000 +v 0.963453 -4.215812 -0.583333 +v 1.015180 -4.228892 -0.625000 +v 1.021559 -4.229929 -0.625000 +v 0.809657 -4.070374 -0.250000 +v 0.918192 -4.196176 -0.333333 +v 0.896068 -4.182741 -0.375000 +v 0.904539 -4.188250 -0.375000 +v 0.963453 -4.215812 -0.416667 +v 1.015180 -4.228892 -0.375000 +v 1.021559 -4.229929 -0.375000 +v 0.813434 -4.080431 -0.083333 +v 0.824070 -4.103289 -0.222222 +v 0.862618 -4.155210 -0.166667 +v 0.809245 -4.069189 -0.055556 +v 0.802228 -4.045078 0.000000 +v 0.822234 -4.099779 0.000000 +v 0.826718 -4.108102 -0.083333 +v 1.045870 -4.232736 -0.125000 +v 1.028261 -4.230887 0.000000 +v 0.865617 -4.158143 -0.958333 +v 0.847813 -4.138898 -1.000000 +v 0.878409 -4.169519 -1.000000 +v 0.840941 -4.130057 -0.759259 +v 1.009163 -4.227803 -0.937500 +v 0.860883 -4.153462 -0.763889 +v 0.850352 -4.141939 -0.750000 +v 0.855865 -4.148177 -0.708333 +v 0.871556 -4.163640 -0.722222 +v 0.846469 -4.137241 -0.687500 +v 0.868691 -4.161037 -0.680556 +v 0.827677 -4.109778 -0.625000 +v 0.838618 -4.126842 -0.562500 +v 0.820988 -4.097308 -0.500000 +v 0.842424 -4.132046 -0.541667 +v 0.850352 -4.141939 -0.500000 +v 0.905042 -4.188562 -0.541667 +v 0.842424 -4.132046 -0.458333 +v 0.838618 -4.126842 -0.437500 +v 0.924783 -4.199627 -0.527778 +v 0.963944 -4.215978 -0.500000 +v 0.905294 -4.188717 -0.500000 +v 0.827677 -4.109778 -0.375000 +v 0.905042 -4.188562 -0.458333 +v 0.924783 -4.199627 -0.472222 +v 1.015567 -4.228959 -0.541667 +v 0.846469 -4.137241 -0.312500 +v 0.868691 -4.161037 -0.319444 +v 0.855865 -4.148177 -0.291667 +v 1.015567 -4.228959 -0.458333 +v 0.840941 -4.130057 -0.240741 +v 0.871556 -4.163640 -0.277778 +v 0.850352 -4.141939 -0.250000 +v 0.860883 -4.153462 -0.236111 +v 0.865617 -4.158143 -0.041667 +v 0.847813 -4.138898 0.000000 +v 0.878409 -4.169519 0.000000 +v 1.009163 -4.227803 -0.062500 +v 3.175000 -4.233333 0.000000 +v 3.175000 -4.233333 -1.000000 +v 3.439278 -3.976880 -0.500000 +v 3.439583 -3.968750 -1.000000 +v 3.439583 -3.968750 0.000000 +v 3.410520 -4.092680 -0.833333 +v 3.398933 -4.115144 -1.000000 +v 3.420015 -4.069469 -1.000000 +v 3.394968 -4.121789 -0.750000 +v 3.383012 -4.139425 -0.833333 +v 3.398649 -4.115633 -0.833333 +v 3.406739 -4.100583 -0.750000 +v 3.415380 -4.081491 -0.750000 +v 3.421727 -4.064612 -0.750000 +v 3.426854 -4.048289 -0.750000 +v 3.430892 -4.032783 -0.750000 +v 3.434806 -4.013827 -0.750000 +v 3.398649 -4.115633 -0.166667 +v 3.394968 -4.121789 -0.250000 +v 3.406739 -4.100583 -0.250000 +v 3.383012 -4.139425 -0.166667 +v 3.410520 -4.092680 -0.166667 +v 3.420015 -4.069469 0.000000 +v 3.398933 -4.115144 0.000000 +v 3.415380 -4.081491 -0.250000 +v 3.421727 -4.064612 -0.250000 +v 3.426854 -4.048289 -0.250000 +v 3.430892 -4.032783 -0.250000 +v 3.434806 -4.013827 -0.250000 +v 3.275439 -4.217838 -0.944444 +v 3.251328 -4.224855 -1.000000 +v 3.306029 -4.204849 -1.000000 +v 3.286680 -4.213649 -0.916667 +v 3.314352 -4.200365 -0.916667 +v 3.361460 -4.164465 -0.833333 +v 3.309539 -4.203013 -0.777778 +v 3.276623 -4.217426 -0.750000 +v 3.438986 -3.981214 -0.875000 +v 3.437137 -3.998822 -1.000000 +v 3.402426 -4.108891 -0.666667 +v 3.246349 -4.226003 -0.500000 +v 3.394500 -4.122544 -0.625000 +v 3.388991 -4.131016 -0.625000 +v 3.422062 -4.063630 -0.583333 +v 3.435142 -4.011904 -0.625000 +v 3.436179 -4.005524 -0.625000 +v 3.276623 -4.217426 -0.250000 +v 3.402426 -4.108891 -0.333333 +v 3.388991 -4.131016 -0.375000 +v 3.394500 -4.122544 -0.375000 +v 3.422062 -4.063630 -0.416667 +v 3.435142 -4.011904 -0.375000 +v 3.436179 -4.005524 -0.375000 +v 3.286680 -4.213649 -0.083333 +v 3.309539 -4.203013 -0.222222 +v 3.361460 -4.164465 -0.166667 +v 3.275439 -4.217838 -0.055556 +v 3.251328 -4.224855 0.000000 +v 3.306029 -4.204849 0.000000 +v 3.314352 -4.200365 -0.083333 +v 3.438986 -3.981214 -0.125000 +v 3.437137 -3.998822 0.000000 +v 3.364393 -4.161467 -0.958333 +v 3.345149 -4.179270 -1.000000 +v 3.375770 -4.148674 -1.000000 +v 3.336307 -4.186142 -0.759259 +v 3.434053 -4.017920 -0.937500 +v 3.359712 -4.166200 -0.763889 +v 3.348189 -4.176732 -0.750000 +v 3.354427 -4.171218 -0.708333 +v 3.369890 -4.155528 -0.722222 +v 3.343492 -4.180614 -0.687500 +v 3.367288 -4.158392 -0.680556 +v 3.316029 -4.199406 -0.625000 +v 3.333092 -4.188466 -0.562500 +v 3.303558 -4.206095 -0.500000 +v 3.338296 -4.184659 -0.541667 +v 3.348189 -4.176732 -0.500000 +v 3.394812 -4.122041 -0.541667 +v 3.338296 -4.184659 -0.458333 +v 3.333092 -4.188466 -0.437500 +v 3.405877 -4.102301 -0.527778 +v 3.422228 -4.063140 -0.500000 +v 3.394968 -4.121789 -0.500000 +v 3.316029 -4.199406 -0.375000 +v 3.394812 -4.122041 -0.458333 +v 3.405877 -4.102301 -0.472222 +v 3.435209 -4.011516 -0.541667 +v 3.343492 -4.180614 -0.312500 +v 3.367288 -4.158392 -0.319444 +v 3.354427 -4.171218 -0.291667 +v 3.435209 -4.011516 -0.458333 +v 3.336307 -4.186142 -0.240741 +v 3.369890 -4.155528 -0.277778 +v 3.348189 -4.176732 -0.250000 +v 3.359712 -4.166200 -0.236111 +v 3.364393 -4.161467 -0.041667 +v 3.345149 -4.179270 0.000000 +v 3.375770 -4.148674 0.000000 +v 3.434053 -4.017920 -0.062500 +v 3.362045 -3.879998 -0.833333 +v 3.391616 -3.900983 -1.000000 +v 3.345898 -3.870358 -1.000000 +v 3.324098 -3.858745 -0.833333 +v 3.249187 -3.826920 -1.000000 +v 3.343536 -3.869029 -0.750000 +v 3.312032 -3.852872 -0.750000 +v 3.274299 -3.836490 -0.750000 +v 3.362045 -3.879998 -0.166667 +v 3.345898 -3.870358 0.000000 +v 3.391616 -3.900983 0.000000 +v 3.324098 -3.858745 -0.166667 +v 3.249187 -3.826920 0.000000 +v 3.343536 -3.869029 -0.250000 +v 3.312032 -3.852872 -0.250000 +v 3.274299 -3.836490 -0.250000 +v 2.431884 -3.709792 -0.750000 +v 2.524583 -3.713963 -1.000000 +v 2.431884 -3.709792 -0.250000 +v 2.524583 -3.713963 0.000000 +v 2.692573 -3.725287 -0.500000 +v 3.435306 -3.953105 -0.833333 +v 3.438834 -3.963615 -1.000000 +v 3.433588 -3.949410 -1.000000 +v 3.428511 -3.940459 -0.833333 +v 3.419347 -3.927933 -1.000000 +v 3.411476 -3.919104 -0.916667 +v 3.431813 -3.946018 -0.750000 +v 3.425148 -3.935474 -0.750000 +v 3.415469 -3.923419 -0.750000 +v 3.189335 -3.807287 -0.875000 +v 3.079335 -3.779374 -1.000000 +v 3.431813 -3.946018 -0.250000 +v 3.435306 -3.953105 -0.166667 +v 3.438834 -3.963615 0.000000 +v 3.433588 -3.949410 0.000000 +v 3.251060 -3.827602 -0.625000 +v 3.428511 -3.940459 -0.166667 +v 3.425148 -3.935474 -0.250000 +v 3.419347 -3.927933 0.000000 +v 3.415469 -3.923419 -0.250000 +v 3.299155 -3.846971 -0.500000 +v 3.173220 -3.802620 -0.500000 +v 3.377417 -3.890254 -0.500000 +v 3.147815 -3.795709 -0.625000 +v 2.969198 -3.758524 -0.500000 +v 2.652692 -3.722107 -0.875000 +v 2.838630 -3.740078 -1.000000 +v 3.411476 -3.919104 -0.083333 +v 3.251060 -3.827602 -0.375000 +v 3.147815 -3.795709 -0.375000 +v 2.734293 -3.728982 -0.625000 +v 3.189335 -3.807287 -0.125000 +v 3.079335 -3.779374 0.000000 +v 2.734293 -3.728982 -0.375000 +v 2.652692 -3.722107 -0.125000 +v 2.838630 -3.740078 0.000000 +v 3.413357 -3.921099 -0.625000 +v 3.413357 -3.921099 -0.375000 +v 3.009254 -3.765451 -0.916667 +v 2.893482 -3.747132 -0.937500 +v 2.971040 -3.758828 -0.875000 +v 3.000344 -3.763851 -0.750000 +v 3.053989 -3.774049 -0.708333 +v 2.899220 -3.747924 -0.791667 +v 2.971040 -3.758828 -0.625000 +v 2.971040 -3.758828 -0.375000 +v 3.036196 -3.770513 -0.208333 +v 2.876973 -3.744910 -0.291667 +v 2.940460 -3.753954 -0.250000 +v 2.971040 -3.758828 -0.125000 +v 3.009254 -3.765451 -0.083333 +v 2.893482 -3.747132 -0.062500 +v 3.175000 -0.264583 0.000000 +v 3.355798 -0.285096 0.000000 +v 3.175000 -0.264583 -1.000000 +v 3.355798 -0.285096 -1.000000 +v 3.521729 -0.343594 0.000000 +v 3.521729 -0.343594 -1.000000 +v 3.668229 -0.435511 0.000000 +v 3.668229 -0.435511 -1.000000 +v 3.790736 -0.556285 0.000000 +v 3.790736 -0.556285 -1.000000 +v 3.884686 -0.701352 0.000000 +v 3.884686 -0.701352 -1.000000 +v 3.945515 -0.866149 0.000000 +v 3.945515 -0.866149 -1.000000 +v 3.962826 -0.960434 0.000000 +v 3.962826 -0.960434 -1.000000 +v 3.968750 -1.058333 0.000000 +v 3.968750 -1.058333 -1.000000 +v 1.058333 -0.264583 0.000000 +v 1.058333 -0.264583 -1.000000 +v 3.968750 -2.645833 0.000000 +v 3.968750 -2.645833 -1.000000 +v 0.859548 -2.820808 0.000000 +v 0.442597 -3.147882 0.000000 +v 0.565104 -3.268656 0.000000 +v 0.905617 -2.862185 0.000000 +v 0.711605 -3.360573 0.000000 +v 0.824270 -2.769680 0.000000 +v 0.348647 -3.002815 0.000000 +v 0.960561 -2.891897 0.000000 +v 0.877536 -3.419070 0.000000 +v 0.801699 -2.710716 0.000000 +v 0.287819 -2.838018 0.000000 +v 0.270507 -2.743733 0.000000 +v 1.007815 -2.905640 0.000000 +v 1.058333 -3.439583 0.000000 +v 1.058333 -2.910417 0.000000 +v 0.793750 -2.645833 0.000000 +v 0.264583 -2.645833 0.000000 +v 0.793750 -1.058333 0.000000 +v 0.264583 -1.058333 0.000000 +v 0.798527 -1.007815 0.000000 +v 0.285096 -0.877536 0.000000 +v 0.812270 -0.960561 0.000000 +v 0.343594 -0.711605 0.000000 +v 0.841981 -0.905617 0.000000 +v 0.435511 -0.565104 0.000000 +v 0.883359 -0.859548 0.000000 +v 0.556285 -0.442597 0.000000 +v 0.934487 -0.824270 0.000000 +v 3.175000 -2.910417 0.000000 +v 3.175000 -3.439583 0.000000 +v 3.272900 -3.433660 0.000000 +v 3.239883 -2.902467 0.000000 +v 3.367185 -3.416348 0.000000 +v 3.531981 -3.355520 0.000000 +v 0.701352 -0.348647 0.000000 +v 0.993450 -0.801699 0.000000 +v 3.298846 -2.879896 0.000000 +v 3.677048 -3.261570 0.000000 +v 3.349975 -2.844619 0.000000 +v 0.866149 -0.287819 0.000000 +v 3.797822 -3.139063 0.000000 +v 3.391352 -2.798550 0.000000 +v 0.960434 -0.270507 0.000000 +v 1.058333 -0.793750 0.000000 +v 3.889740 -2.992562 0.000000 +v 3.421064 -2.743606 0.000000 +v 3.948237 -2.826631 0.000000 +v 3.434807 -2.696352 0.000000 +v 3.439583 -2.645833 0.000000 +v 3.439583 -1.058333 0.000000 +v 3.175000 -0.793750 0.000000 +v 3.225518 -0.798527 0.000000 +v 3.431634 -0.993450 0.000000 +v 3.272772 -0.812270 0.000000 +v 3.327717 -0.841981 0.000000 +v 3.409063 -0.934487 0.000000 +v 3.373785 -0.883359 0.000000 +v 0.442597 -3.147882 -1.000000 +v 0.859548 -2.820808 -1.000000 +v 0.565104 -3.268656 -1.000000 +v 0.905617 -2.862185 -1.000000 +v 0.711605 -3.360573 -1.000000 +v 0.348647 -3.002815 -1.000000 +v 0.824270 -2.769680 -1.000000 +v 0.960561 -2.891897 -1.000000 +v 0.877536 -3.419070 -1.000000 +v 0.287819 -2.838018 -1.000000 +v 0.801699 -2.710716 -1.000000 +v 0.270507 -2.743733 -1.000000 +v 1.007815 -2.905640 -1.000000 +v 1.058333 -3.439583 -1.000000 +v 1.058333 -2.910417 -1.000000 +v 0.264583 -2.645833 -1.000000 +v 0.793750 -2.645833 -1.000000 +v 0.793750 -1.058333 -1.000000 +v 0.264583 -1.058333 -1.000000 +v 0.798527 -1.007815 -1.000000 +v 0.285096 -0.877536 -1.000000 +v 0.343594 -0.711605 -1.000000 +v 0.812270 -0.960561 -1.000000 +v 0.435511 -0.565104 -1.000000 +v 0.841981 -0.905617 -1.000000 +v 0.883359 -0.859548 -1.000000 +v 0.556285 -0.442597 -1.000000 +v 0.934487 -0.824270 -1.000000 +v 3.175000 -2.910417 -1.000000 +v 3.175000 -3.439583 -1.000000 +v 3.272900 -3.433660 -1.000000 +v 3.367185 -3.416348 -1.000000 +v 3.239883 -2.902467 -1.000000 +v 3.531981 -3.355520 -1.000000 +v 0.701352 -0.348647 -1.000000 +v 0.993450 -0.801699 -1.000000 +v 3.298846 -2.879896 -1.000000 +v 3.677048 -3.261570 -1.000000 +v 3.349975 -2.844619 -1.000000 +v 0.866149 -0.287819 -1.000000 +v 3.391352 -2.798550 -1.000000 +v 3.797822 -3.139063 -1.000000 +v 0.960434 -0.270507 -1.000000 +v 1.058333 -0.793750 -1.000000 +v 3.889740 -2.992562 -1.000000 +v 3.421064 -2.743606 -1.000000 +v 3.434807 -2.696352 -1.000000 +v 3.948237 -2.826631 -1.000000 +v 3.439583 -2.645833 -1.000000 +v 3.439583 -1.058333 -1.000000 +v 3.175000 -0.793750 -1.000000 +v 3.225518 -0.798527 -1.000000 +v 3.431634 -0.993450 -1.000000 +v 3.272772 -0.812270 -1.000000 +v 3.327717 -0.841981 -1.000000 +v 3.409063 -0.934487 -1.000000 +v 3.373785 -0.883359 -1.000000 +vn -0.013532 0.999908 0.000000 +vn -0.501687 0.864979 -0.011021 +vn -0.492931 0.870034 -0.007712 +vn -0.691299 0.722528 -0.007634 +vn -0.607799 0.794083 0.003506 +vn -0.607789 0.794069 -0.006905 +vn -0.566367 0.824147 0.003099 +vn -0.501687 0.864979 0.011021 +vn -0.492931 0.870034 0.007712 +vn -0.566367 0.824147 -0.003099 +vn -0.691299 0.722528 0.007634 +vn -0.607799 0.794083 -0.003506 +vn -0.607789 0.794069 0.006905 +vn -0.325255 0.945289 -0.025233 +vn -0.430866 0.902059 0.025362 +vn -0.448644 0.892923 -0.037505 +vn -0.362340 0.931733 0.024141 +vn -0.253482 0.967259 0.012516 +vn -0.565627 0.823070 0.051211 +vn -0.360096 0.932877 -0.008450 +vn -0.492922 0.870017 0.009920 +vn -0.362412 0.931918 -0.013617 +vn -0.360086 0.932852 -0.011162 +vn -0.843315 0.537356 -0.008301 +vn -0.768292 0.639959 0.013373 +vn -0.253482 0.967259 -0.012516 +vn -0.488899 0.872262 -0.011732 +vn -0.404334 0.914360 0.021463 +vn -0.594943 0.803708 0.009776 +vn -0.594943 0.803708 -0.009776 +vn -0.360096 0.932877 0.008450 +vn -0.488899 0.872262 0.011732 +vn -0.360086 0.932852 0.011162 +vn -0.362412 0.931918 0.013617 +vn -0.404334 0.914360 -0.021463 +vn -0.492922 0.870017 -0.009920 +vn -0.565627 0.823070 -0.051211 +vn -0.757281 0.653076 0.004103 +vn -0.726568 0.686408 0.030715 +vn -0.726846 0.686670 -0.013361 +vn -0.940614 0.339475 -0.001664 +vn -0.984483 0.175471 0.001797 +vn -0.997297 0.073197 0.006429 +vn -0.895917 0.444192 0.005124 +vn -0.883800 0.467181 0.025285 +vn -0.913496 0.406816 -0.004966 +vn -0.884082 0.467330 -0.001163 +vn -0.910591 0.411802 0.035263 +vn -0.911142 0.412052 -0.005720 +vn -0.325255 0.945289 0.025233 +vn -0.362340 0.931733 -0.024141 +vn -0.430866 0.902059 -0.025362 +vn -0.448644 0.892923 0.037505 +vn -0.726846 0.686670 0.013361 +vn -0.726568 0.686408 -0.030715 +vn -0.883800 0.467181 -0.025285 +vn -0.815268 0.579083 0.000000 +vn -0.910591 0.411802 -0.035263 +vn -0.843315 0.537356 0.008301 +vn -0.757281 0.653076 -0.004103 +vn -0.884082 0.467330 0.001163 +vn -0.768293 0.639959 -0.013373 +vn -0.981316 0.192403 0.000000 +vn -0.940383 0.340118 0.000000 +vn -0.940614 0.339475 0.001664 +vn -0.984483 0.175471 -0.001797 +vn -0.997297 0.073197 -0.006429 +vn -0.911142 0.412052 0.005720 +vn -0.913496 0.406816 0.004966 +vn -0.940383 0.340118 0.000000 +vn -0.981316 0.192403 0.000000 +vn -0.895917 0.444192 -0.005124 +vn -0.192533 0.980963 -0.025372 +vn -0.268862 0.962843 0.025418 +vn -0.268869 0.962870 -0.024310 +vn -0.221039 0.974927 0.025668 +vn -0.141296 0.989898 0.011719 +vn -0.221095 0.975174 -0.012384 +vn -0.236242 0.971613 -0.012569 +vn -0.236246 0.971633 0.010837 +vn -0.236242 0.971613 0.012569 +vn -0.236246 0.971633 -0.010837 +vn -0.141296 0.989898 -0.011719 +vn -0.221095 0.975174 0.012384 +vn -0.192533 0.980963 0.025372 +vn -0.268869 0.962870 0.024310 +vn -0.221039 0.974927 -0.025668 +vn -0.268862 0.962843 -0.025418 +vn -0.097505 0.994909 -0.025490 +vn -0.153141 0.987882 -0.025222 +vn -0.153138 0.987862 0.026018 +vn -0.118460 0.992615 0.026134 +vn -0.129597 0.991487 -0.012549 +vn -0.129598 0.991500 0.011466 +vn -0.060042 0.998128 0.011657 +vn -0.118491 0.992876 -0.012544 +vn -0.059079 0.998213 0.008922 +vn -0.129597 0.991487 0.012549 +vn -0.129598 0.991500 -0.011466 +vn -0.060042 0.998128 -0.011657 +vn -0.059079 0.998213 -0.008922 +vn -0.118491 0.992876 0.012544 +vn -0.097505 0.994909 0.025490 +vn -0.153138 0.987862 -0.026018 +vn -0.153141 0.987882 0.025222 +vn -0.118460 0.992615 -0.026134 +vn -0.027624 0.999288 -0.025681 +vn -0.017890 0.999838 -0.002142 +vn -0.068874 0.997280 0.026252 +vn -0.068875 0.997297 -0.025577 +vn -0.054593 0.998503 0.003370 +vn -0.027624 0.999288 0.025681 +vn -0.017890 0.999838 0.002142 +vn -0.068874 0.997280 -0.026252 +vn -0.054593 0.998503 -0.003370 +vn -0.068875 0.997297 0.025577 +vn -0.037572 -0.999294 0.000000 +vn -0.419074 -0.907928 -0.006636 +vn -0.549246 -0.835653 -0.003647 +vn -0.485348 -0.874317 0.002782 +vn -0.459343 -0.888253 -0.003268 +vn -0.412323 -0.911035 0.002224 +vn -0.351935 -0.935996 -0.007338 +vn -0.299571 -0.953682 -0.027353 +vn -0.251605 -0.966245 -0.055366 +vn -0.201321 -0.975037 -0.093658 +vn -0.485348 -0.874317 -0.002782 +vn -0.549246 -0.835653 0.003647 +vn -0.419074 -0.907928 0.006636 +vn -0.459343 -0.888253 0.003268 +vn -0.412323 -0.911035 -0.002224 +vn -0.351935 -0.935996 0.007338 +vn -0.299571 -0.953682 0.027353 +vn -0.251605 -0.966245 0.055367 +vn -0.201321 -0.975037 0.093658 +vn -0.990907 -0.110062 0.077394 +vn -0.938724 -0.343325 -0.030432 +vn -0.989518 -0.090342 0.112658 +vn -0.900809 -0.432445 -0.039172 +vn -0.892332 -0.428376 0.142257 +vn -0.818459 -0.573688 -0.031740 +vn -0.983280 -0.181748 -0.011315 +vn -0.914897 -0.403671 0.003626 +vn -0.081060 -0.996704 -0.003322 +vn -0.049845 -0.998757 -0.000200 +vn -0.259716 -0.965033 -0.035487 +vn -0.485348 -0.874316 -0.003136 +vn -0.412316 -0.911021 0.006046 +vn -0.351789 -0.935606 0.029769 +vn -0.299114 -0.952227 0.061607 +vn -0.994764 -0.102198 0.000000 +vn -0.983137 -0.182500 -0.011629 +vn -0.545058 -0.838180 -0.019145 +vn -0.439170 -0.898000 0.026930 +vn -0.332655 -0.942423 0.034341 +vn -0.293683 -0.953676 -0.065208 +vn -0.251981 -0.967689 0.009183 +vn -0.202210 -0.979342 0.000473 +vn -0.109662 -0.993969 0.000495 +vn -0.134513 -0.990910 -0.001956 +vn -0.160465 -0.987042 -0.000190 +vn -0.983137 -0.182500 0.011629 +vn -0.545058 -0.838180 0.019145 +vn -0.439170 -0.898000 -0.026930 +vn -0.485348 -0.874316 0.003136 +vn -0.412316 -0.911021 -0.006046 +vn -0.351789 -0.935606 -0.029769 +vn -0.299114 -0.952227 -0.061607 +vn -0.202210 -0.979342 -0.000473 +vn -0.293683 -0.953676 0.065208 +vn -0.332655 -0.942423 -0.034341 +vn -0.251981 -0.967689 -0.009183 +vn -0.160465 -0.987042 0.000190 +vn -0.983280 -0.181748 0.011315 +vn -0.818459 -0.573688 0.031740 +vn -0.914897 -0.403671 -0.003626 +vn -0.990907 -0.110062 -0.077394 +vn -0.938724 -0.343325 0.030432 +vn -0.989518 -0.090342 -0.112657 +vn -0.892332 -0.428376 -0.142257 +vn -0.900809 -0.432445 0.039172 +vn -0.259716 -0.965033 0.035487 +vn -0.081060 -0.996704 0.003322 +vn -0.134513 -0.990910 0.001956 +vn -0.049845 -0.998757 0.000200 +vn -0.109662 -0.993969 -0.000495 +vn -0.832396 -0.544281 0.104285 +vn -0.707192 -0.706608 -0.024185 +vn -0.567666 -0.821734 0.050087 +vn -0.843422 -0.506533 -0.179060 +vn -0.791379 -0.611308 -0.004643 +vn -0.652344 -0.757920 0.002132 +vn -0.458058 -0.885770 -0.074797 +vn -0.549040 -0.835340 -0.027616 +vn -0.584578 -0.811028 0.022408 +vn -0.832530 -0.543963 0.104871 +vn -0.873306 -0.474729 0.109406 +vn -0.235481 -0.971582 -0.024004 +vn -0.227112 -0.972220 0.056644 +vn -0.280330 -0.959776 0.015639 +vn -0.142217 -0.989821 0.005395 +vn -0.805555 -0.592498 -0.005208 +vn -0.765496 -0.614490 -0.190836 +vn -0.652343 -0.757919 0.002784 +vn -0.625546 -0.779918 0.020497 +vn -0.764899 -0.642433 -0.047000 +vn -0.876514 -0.473169 0.088511 +vn -0.788488 -0.614927 0.012274 +vn -0.586676 -0.809614 0.018338 +vn -0.614618 -0.788045 -0.035072 +vn -0.726842 -0.686557 0.018463 +vn -0.707340 -0.706768 -0.012214 +vn -0.834176 -0.543992 -0.090689 +vn -0.703720 -0.710466 -0.004007 +vn -0.734260 -0.678410 0.024935 +vn -0.571131 -0.819938 -0.038872 +vn -0.580842 -0.813943 0.010905 +vn -0.860921 -0.507473 -0.035865 +vn -0.739354 -0.669471 0.071869 +vn -0.726502 -0.680981 0.091977 +vn -0.925480 -0.378534 0.014088 +vn -0.728329 -0.682693 -0.058888 +vn -0.905224 -0.422749 0.043045 +vn -0.835070 -0.549407 0.028442 +vn -0.840824 -0.540993 0.018467 +vn -0.938673 -0.326651 -0.110417 +vn -0.669213 -0.741472 -0.048721 +vn -0.668681 -0.740883 -0.062914 +vn -0.423274 -0.906001 -0.000840 +vn -0.545157 -0.838334 0.000150 +vn -0.684340 -0.728807 0.022790 +vn -0.835070 -0.549407 -0.028442 +vn -0.938673 -0.326651 0.110417 +vn -0.840824 -0.540993 -0.018467 +vn -0.456248 -0.887901 -0.058902 +vn -0.385563 -0.922681 0.000431 +vn -0.648270 -0.761410 0.001077 +vn -0.488790 -0.872401 -0.000301 +vn -0.905224 -0.422749 -0.043045 +vn -0.728329 -0.682693 0.058888 +vn -0.925480 -0.378534 -0.014088 +vn -0.668681 -0.740883 0.062914 +vn -0.684340 -0.728807 -0.022790 +vn -0.648270 -0.761410 -0.001077 +vn -0.545157 -0.838334 -0.000150 +vn -0.423274 -0.906001 0.000840 +vn -0.669213 -0.741472 0.048721 +vn -0.385303 -0.922790 -0.000000 +vn -0.488790 -0.872401 0.000301 +vn -0.456248 -0.887901 0.058903 +vn -0.385563 -0.922681 -0.000431 +vn -0.488463 -0.872584 -0.000000 +vn -0.244876 -0.969554 0.000367 +vn -0.160465 -0.987042 -0.000039 +vn -0.120142 -0.992752 0.002927 +vn -0.244229 -0.969717 -0.000494 +vn -0.860921 -0.507473 0.035865 +vn -0.726502 -0.680981 -0.091977 +vn -0.739354 -0.669470 -0.071869 +vn -0.571131 -0.819938 0.038872 +vn -0.734260 -0.678410 -0.024935 +vn -0.834176 -0.543992 0.090689 +vn -0.160465 -0.987042 0.000039 +vn -0.116670 -0.993171 -0.000000 +vn -0.243854 -0.969812 -0.000000 +vn -0.244229 -0.969717 0.000494 +vn -0.244876 -0.969554 -0.000367 +vn -0.120142 -0.992752 -0.002927 +vn -0.876514 -0.473169 -0.088511 +vn -0.873306 -0.474729 -0.109406 +vn -0.586676 -0.809614 -0.018338 +vn -0.703720 -0.710466 0.004007 +vn -0.580842 -0.813943 -0.010905 +vn -0.788488 -0.614927 -0.012274 +vn -0.707340 -0.706768 0.012214 +vn -0.652343 -0.757919 -0.002784 +vn -0.614618 -0.788045 0.035072 +vn -0.805555 -0.592498 0.005208 +vn -0.765496 -0.614490 0.190836 +vn -0.764899 -0.642433 0.047000 +vn -0.726842 -0.686556 -0.018463 +vn -0.625546 -0.779918 -0.020497 +vn -0.832396 -0.544281 -0.104285 +vn -0.707192 -0.706608 0.024185 +vn -0.567666 -0.821734 -0.050087 +vn -0.791379 -0.611308 0.004643 +vn -0.652344 -0.757920 -0.002132 +vn -0.832530 -0.543963 -0.104871 +vn -0.843423 -0.506533 0.179060 +vn -0.584578 -0.811028 -0.022408 +vn -0.458058 -0.885770 0.074797 +vn -0.549040 -0.835340 0.027616 +vn -0.235481 -0.971582 0.024004 +vn -0.227112 -0.972220 -0.056644 +vn -0.142217 -0.989821 -0.005395 +vn -0.280330 -0.959776 -0.015639 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.999294 -0.037571 0.000000 +vn 0.907928 -0.419073 -0.006638 +vn 0.835651 -0.549249 -0.003652 +vn 0.874323 -0.485336 0.002777 +vn 0.888246 -0.459355 -0.003267 +vn 0.911033 -0.412328 0.002227 +vn 0.935993 -0.351943 -0.007336 +vn 0.953688 -0.299551 -0.027361 +vn 0.966244 -0.251611 -0.055359 +vn 0.975036 -0.201333 -0.093647 +vn 0.874323 -0.485336 -0.002777 +vn 0.835651 -0.549249 0.003652 +vn 0.907928 -0.419073 0.006638 +vn 0.888247 -0.459355 0.003267 +vn 0.911033 -0.412328 -0.002227 +vn 0.935993 -0.351943 0.007336 +vn 0.953688 -0.299551 0.027361 +vn 0.966244 -0.251611 0.055359 +vn 0.975036 -0.201333 0.093647 +vn 0.110059 -0.990907 0.077395 +vn 0.343328 -0.938722 -0.030432 +vn 0.090337 -0.989518 0.112664 +vn 0.432445 -0.900809 -0.039168 +vn 0.428376 -0.892333 0.142256 +vn 0.573688 -0.818459 -0.031742 +vn 0.181748 -0.983280 -0.011316 +vn 0.403671 -0.914897 0.003625 +vn 0.996702 -0.081075 -0.003322 +vn 0.998756 -0.049868 -0.000200 +vn 0.965033 -0.259715 -0.035489 +vn 0.874322 -0.485336 -0.003135 +vn 0.911018 -0.412321 0.006045 +vn 0.935603 -0.351796 0.029767 +vn 0.952232 -0.299094 0.061622 +vn 0.102196 -0.994764 0.000000 +vn 0.182496 -0.983138 -0.011629 +vn 0.838180 -0.545058 -0.019151 +vn 0.898003 -0.439165 0.026927 +vn 0.942423 -0.332655 0.034340 +vn 0.953676 -0.293684 -0.065208 +vn 0.967687 -0.251987 0.009184 +vn 0.979340 -0.202221 0.000475 +vn 0.993967 -0.109676 0.000495 +vn 0.990912 -0.134496 -0.001953 +vn 0.987048 -0.160426 -0.000188 +vn 0.182496 -0.983138 0.011629 +vn 0.838180 -0.545058 0.019151 +vn 0.898003 -0.439165 -0.026927 +vn 0.874322 -0.485336 0.003135 +vn 0.911018 -0.412321 -0.006045 +vn 0.935603 -0.351796 -0.029767 +vn 0.952232 -0.299094 -0.061622 +vn 0.979340 -0.202221 -0.000475 +vn 0.953676 -0.293684 0.065208 +vn 0.942423 -0.332655 -0.034340 +vn 0.967687 -0.251987 -0.009184 +vn 0.987048 -0.160426 0.000188 +vn 0.181748 -0.983280 0.011316 +vn 0.573688 -0.818459 0.031742 +vn 0.403671 -0.914897 -0.003625 +vn 0.110059 -0.990907 -0.077395 +vn 0.343328 -0.938722 0.030432 +vn 0.090337 -0.989518 -0.112664 +vn 0.428376 -0.892333 -0.142256 +vn 0.432445 -0.900809 0.039168 +vn 0.965033 -0.259715 0.035489 +vn 0.996702 -0.081075 0.003322 +vn 0.990912 -0.134496 0.001953 +vn 0.998756 -0.049868 0.000200 +vn 0.993967 -0.109676 -0.000495 +vn 0.544273 -0.832399 0.104299 +vn 0.706608 -0.707192 -0.024176 +vn 0.821738 -0.567658 0.050099 +vn 0.506534 -0.843422 -0.179058 +vn 0.611307 -0.791380 -0.004644 +vn 0.757924 -0.652339 0.002131 +vn 0.885764 -0.458071 -0.074790 +vn 0.835338 -0.549043 -0.027614 +vn 0.811027 -0.584580 0.022407 +vn 0.543963 -0.832530 0.104869 +vn 0.474729 -0.873306 0.109404 +vn 0.971583 -0.235479 -0.024008 +vn 0.972220 -0.227110 0.056643 +vn 0.959776 -0.280330 0.015637 +vn 0.989821 -0.142212 0.005392 +vn 0.592497 -0.805556 -0.005210 +vn 0.614489 -0.765498 -0.190832 +vn 0.757923 -0.652338 0.002781 +vn 0.779918 -0.625546 0.020490 +vn 0.642429 -0.764902 -0.047012 +vn 0.473169 -0.876514 0.088513 +vn 0.614912 -0.788500 0.012285 +vn 0.809608 -0.586685 0.018344 +vn 0.788042 -0.614623 -0.035059 +vn 0.686565 -0.726834 0.018470 +vn 0.706778 -0.707330 -0.012209 +vn 0.543994 -0.834173 -0.090695 +vn 0.710471 -0.703715 -0.004016 +vn 0.678414 -0.734257 0.024928 +vn 0.819940 -0.571128 -0.038876 +vn 0.813946 -0.580839 0.010895 +vn 0.507471 -0.860922 -0.035864 +vn 0.669472 -0.739352 0.071872 +vn 0.680980 -0.726503 0.091976 +vn 0.378534 -0.925480 0.014089 +vn 0.682692 -0.728330 -0.058889 +vn 0.422746 -0.905225 0.043045 +vn 0.549403 -0.835074 0.028435 +vn 0.541002 -0.840819 0.018475 +vn 0.326651 -0.938674 -0.110415 +vn 0.741472 -0.669212 -0.048730 +vn 0.740884 -0.668681 -0.062902 +vn 0.906002 -0.423273 -0.000835 +vn 0.838334 -0.545158 0.000154 +vn 0.728808 -0.684338 0.022795 +vn 0.549403 -0.835074 -0.028435 +vn 0.326651 -0.938674 0.110415 +vn 0.541002 -0.840819 -0.018475 +vn 0.887899 -0.456252 -0.058907 +vn 0.922680 -0.385566 0.000428 +vn 0.761409 -0.648270 0.001065 +vn 0.872401 -0.488791 -0.000312 +vn 0.422746 -0.905225 -0.043045 +vn 0.682692 -0.728330 0.058889 +vn 0.378534 -0.925480 -0.014089 +vn 0.740884 -0.668681 0.062902 +vn 0.728809 -0.684338 -0.022795 +vn 0.761409 -0.648270 -0.001065 +vn 0.838334 -0.545157 -0.000154 +vn 0.906002 -0.423273 0.000835 +vn 0.741472 -0.669212 0.048730 +vn 0.922788 -0.385308 0.000000 +vn 0.872401 -0.488791 0.000312 +vn 0.887899 -0.456252 0.058907 +vn 0.922680 -0.385566 -0.000428 +vn 0.872590 -0.488453 0.000000 +vn 0.969554 -0.244876 0.000368 +vn 0.987048 -0.160426 -0.000039 +vn 0.992752 -0.120146 0.002924 +vn 0.969718 -0.244226 -0.000497 +vn 0.507471 -0.860922 0.035864 +vn 0.680980 -0.726503 -0.091976 +vn 0.669472 -0.739352 -0.071872 +vn 0.819939 -0.571128 0.038876 +vn 0.678414 -0.734257 -0.024928 +vn 0.543994 -0.834173 0.090695 +vn 0.987048 -0.160426 0.000039 +vn 0.993170 -0.116677 0.000000 +vn 0.969813 -0.243849 0.000000 +vn 0.969718 -0.244226 0.000497 +vn 0.969554 -0.244876 -0.000368 +vn 0.992752 -0.120146 -0.002924 +vn 0.473169 -0.876514 -0.088513 +vn 0.474729 -0.873306 -0.109404 +vn 0.809608 -0.586685 -0.018344 +vn 0.710471 -0.703715 0.004016 +vn 0.813946 -0.580839 -0.010895 +vn 0.614912 -0.788500 -0.012285 +vn 0.706778 -0.707330 0.012209 +vn 0.757923 -0.652338 -0.002781 +vn 0.788042 -0.614623 0.035059 +vn 0.592497 -0.805556 0.005210 +vn 0.614489 -0.765498 0.190831 +vn 0.642429 -0.764902 0.047013 +vn 0.686565 -0.726834 -0.018470 +vn 0.779918 -0.625546 -0.020490 +vn 0.544273 -0.832399 -0.104299 +vn 0.706608 -0.707192 0.024176 +vn 0.821738 -0.567658 -0.050099 +vn 0.611307 -0.791380 0.004644 +vn 0.757924 -0.652339 -0.002131 +vn 0.543963 -0.832530 -0.104870 +vn 0.506534 -0.843422 0.179058 +vn 0.811027 -0.584580 -0.022407 +vn 0.885764 -0.458071 0.074790 +vn 0.835338 -0.549043 0.027614 +vn 0.971583 -0.235479 0.024008 +vn 0.972220 -0.227110 -0.056643 +vn 0.989821 -0.142212 -0.005392 +vn 0.959776 -0.280330 -0.015637 +vn 0.556516 0.830816 -0.005867 +vn 0.409708 0.912162 -0.009973 +vn 0.488648 0.872475 0.003118 +vn 0.488641 0.872462 -0.006303 +vn 0.456340 0.889799 0.003371 +vn 0.398225 0.917261 -0.006978 +vn 0.556516 0.830816 0.005867 +vn 0.409708 0.912162 0.009973 +vn 0.488648 0.872475 -0.003118 +vn 0.488641 0.872462 0.006303 +vn 0.456340 0.889799 -0.003371 +vn 0.398225 0.917261 0.006978 +vn 0.024007 0.999682 -0.007776 +vn 0.017843 0.999841 0.000000 +vn 0.024007 0.999682 0.007776 +vn 0.017843 0.999841 0.000000 +vn 0.059335 0.998238 0.000000 +vn 0.989449 0.144395 0.011839 +vn 0.938067 0.346450 -0.001990 +vn 0.833432 0.552605 -0.004294 +vn 0.880908 0.473286 0.001412 +vn 0.696903 0.717094 -0.010149 +vn 0.636717 0.770934 0.015903 +vn 0.771302 0.636446 0.005423 +vn 0.474361 -0.875262 0.094332 +vn 0.880904 0.473284 -0.003326 +vn 0.845272 0.534333 0.002158 +vn 0.602866 0.797316 0.028959 +vn 0.779766 0.626043 -0.005971 +vn 0.625813 0.779955 0.005201 +vn 0.787207 0.616682 -0.002893 +vn 0.269494 0.962747 -0.022176 +vn 0.364778 0.930594 -0.030527 +vn 0.350966 0.936153 0.021011 +vn 0.946242 0.323459 0.000000 +vn 0.946242 0.323459 0.000000 +vn 0.989449 0.144395 -0.011839 +vn 0.938067 0.346449 0.001990 +vn 0.474362 -0.875261 -0.094332 +vn 0.455927 0.888993 0.042673 +vn 0.398220 0.917248 0.008812 +vn 0.845272 0.534333 -0.002158 +vn 0.880908 0.473286 -0.001412 +vn 0.833432 0.552605 0.004294 +vn 0.880904 0.473284 0.003326 +vn 0.779766 0.626043 0.005971 +vn 0.602866 0.797316 -0.028959 +vn 0.332117 0.943060 0.018341 +vn 0.483944 0.875056 0.008703 +vn 0.396934 0.917787 -0.010514 +vn 0.483944 0.875056 -0.008703 +vn 0.295139 0.955428 -0.007157 +vn 0.211246 0.977370 0.011106 +vn 0.295121 0.955370 -0.013066 +vn 0.082853 0.996361 -0.019996 +vn 0.058536 0.998272 0.005050 +vn 0.696903 0.717094 0.010149 +vn 0.787207 0.616682 0.002893 +vn 0.771302 0.636446 -0.005423 +vn 0.625813 0.779955 -0.005201 +vn 0.636717 0.770934 -0.015903 +vn 0.396934 0.917787 0.010514 +vn 0.332117 0.943060 -0.018341 +vn 0.455927 0.888993 -0.042673 +vn 0.398220 0.917248 -0.008812 +vn 0.211246 0.977370 -0.011106 +vn 0.295121 0.955370 0.013066 +vn 0.295139 0.955428 0.007157 +vn 0.119286 0.992805 0.010467 +vn 0.066353 0.997769 -0.007347 +vn 0.269494 0.962747 0.022176 +vn 0.350966 0.936153 -0.021011 +vn 0.364778 0.930594 0.030527 +vn 0.119286 0.992805 -0.010467 +vn 0.066353 0.997769 0.007347 +vn 0.082853 0.996361 0.019996 +vn 0.058536 0.998272 -0.005050 +vn 0.603113 0.797643 -0.004615 +vn 0.616894 0.786867 -0.016802 +vn 0.779779 0.626053 0.001555 +vn 0.845132 0.534245 0.018278 +vn 0.803599 0.595172 0.000000 +vn 0.803599 0.595172 0.000000 +vn 0.845132 0.534245 -0.018278 +vn 0.779779 0.626053 -0.001555 +vn 0.603113 0.797643 0.004615 +vn 0.651278 0.758840 0.000000 +vn 0.616894 0.786867 0.016802 +vn 0.221154 0.974966 0.023092 +vn 0.161051 0.986490 -0.030006 +vn 0.107854 0.994012 0.017530 +vn 0.161342 0.986469 -0.029131 +vn 0.216506 0.975311 0.043523 +vn 0.158344 0.987314 -0.011729 +vn 0.216697 0.976170 -0.011573 +vn 0.278616 0.959770 0.034855 +vn 0.264144 0.963337 -0.047010 +vn 0.206900 0.977989 -0.027017 +vn 0.085976 0.994840 0.053860 +vn 0.078087 0.996298 -0.035961 +vn 0.103710 0.994607 0.001326 +vn 0.149520 0.988759 -0.000508 +vn 0.154142 0.988042 0.003569 +vn 0.204237 0.978921 0.000629 +vn 0.204176 0.978628 0.024483 +vn 0.125076 0.992147 -0.000570 +vn 0.125068 0.992087 0.011008 +vn 0.184024 0.982915 0.003642 +vn 0.156760 0.987632 -0.002939 +vn 0.204237 0.978921 -0.000629 +vn 0.125076 0.992147 0.000570 +vn 0.272930 0.961304 0.037456 +vn 0.258639 0.964701 -0.049585 +vn 0.204224 0.978860 -0.011211 +vn 0.083039 0.995386 0.048082 +vn 0.075359 0.996544 -0.034937 +vn 0.125038 0.991849 -0.024504 +vn 0.169181 0.985581 0.002960 +vn 0.122347 0.992066 0.028907 +vn 0.143296 0.989674 -0.003532 +vn 0.114581 0.993356 0.010701 +vn 0.171979 0.985094 -0.003663 +vn 0.228430 0.973511 0.009817 +vn 0.221154 0.974966 -0.023092 +vn 0.173426 0.984844 -0.002497 +vn 0.158344 0.987314 0.011729 +vn 0.161051 0.986490 0.030006 +vn 0.107854 0.994012 -0.017530 +vn 0.161342 0.986469 0.029131 +vn 0.114478 0.992465 -0.043669 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn -0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.112736 0.993625 0.000000 +vn 0.112736 0.993625 0.000000 +vn 0.332482 0.943110 0.000000 +vn 0.332482 0.943110 0.000000 +vn 0.531471 0.847076 0.000000 +vn 0.531471 0.847076 0.000000 +vn 0.702052 0.712126 0.000000 +vn 0.702052 0.712126 0.000000 +vn 0.839352 0.543588 0.000000 +vn 0.839352 0.543588 0.000000 +vn 0.938132 0.346277 0.000000 +vn 0.938132 0.346277 0.000000 +vn 0.983558 0.180590 0.000000 +vn 0.983558 0.180590 0.000000 +vn 0.998174 0.060398 0.000000 +vn 0.998174 0.060398 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn -0.993625 0.112736 0.000000 +vn -0.993625 0.112736 0.000000 +vn -0.943110 0.332482 0.000000 +vn -0.943110 0.332482 0.000000 +vn -0.847076 0.531471 0.000000 +vn -0.847076 0.531471 0.000000 +vn -0.712126 0.702052 0.000000 +vn -0.712126 0.702052 0.000000 +vn -0.543589 0.839352 0.000000 +vn -0.543589 0.839352 0.000000 +vn -0.346277 0.938132 0.000000 +vn -0.346277 0.938132 0.000000 +vn -0.180589 0.983559 0.000000 +vn -0.180589 0.983559 0.000000 +vn -0.060399 0.998174 0.000000 +vn -0.060399 0.998174 0.000000 +vn 0.993625 -0.112735 0.000000 +vn 0.993625 -0.112735 0.000000 +vn 0.943109 -0.332483 0.000000 +vn 0.943109 -0.332483 0.000000 +vn 0.847076 -0.531471 0.000000 +vn 0.847076 -0.531471 0.000000 +vn 0.712125 -0.702052 0.000000 +vn 0.712125 -0.702052 0.000000 +vn 0.543589 -0.839352 0.000000 +vn 0.543589 -0.839352 0.000000 +vn 0.346276 -0.938133 0.000000 +vn 0.346276 -0.938133 0.000000 +vn 0.180591 -0.983558 0.000000 +vn 0.180591 -0.983558 0.000000 +vn 0.060398 -0.998174 0.000000 +vn 0.060398 -0.998174 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.112735 -0.993625 -0.000000 +vn -0.112735 -0.993625 0.000000 +vn -0.332483 -0.943109 0.000000 +vn -0.332483 -0.943109 -0.000000 +vn -0.531471 -0.847076 0.000000 +vn -0.531471 -0.847076 -0.000000 +vn -0.702052 -0.712126 0.000000 +vn -0.702052 -0.712126 -0.000000 +vn -0.839352 -0.543589 0.000000 +vn -0.839352 -0.543589 -0.000000 +vn -0.938132 -0.346277 0.000000 +vn -0.938132 -0.346277 -0.000000 +vn -0.983559 -0.180589 0.000000 +vn -0.983559 -0.180589 -0.000000 +vn -0.998174 -0.060399 0.000000 +vn -0.998174 -0.060399 -0.000000 +vn -0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.121609 -0.992578 0.000000 +vn 0.121609 -0.992578 0.000000 +vn 0.357501 -0.933913 0.000000 +vn 0.357501 -0.933913 0.000000 +vn 0.567916 -0.823086 0.000000 +vn 0.567916 -0.823086 0.000000 +vn 0.743970 -0.668213 0.000000 +vn 0.743970 -0.668213 0.000000 +vn 0.879626 -0.475667 0.000000 +vn 0.879626 -0.475667 0.000000 +vn 0.960215 -0.279261 0.000000 +vn 0.960215 -0.279261 0.000000 +vn 0.995560 -0.094132 0.000000 +vn 0.995560 -0.094132 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.992578 0.121609 0.000000 +vn 0.992578 0.121609 0.000000 +vn 0.933913 0.357501 0.000000 +vn 0.933913 0.357501 0.000000 +vn 0.823087 0.567916 0.000000 +vn 0.823087 0.567916 0.000000 +vn 0.668213 0.743970 0.000000 +vn 0.668213 0.743970 0.000000 +vn 0.475664 0.879627 0.000000 +vn 0.475664 0.879627 0.000000 +vn 0.279264 0.960214 0.000000 +vn 0.279264 0.960214 0.000000 +vn 0.094130 0.995560 0.000000 +vn 0.094130 0.995560 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.121609 0.992578 0.000000 +vn -0.121609 0.992578 0.000000 +vn -0.357501 0.933913 0.000000 +vn -0.357501 0.933913 0.000000 +vn -0.567914 0.823088 0.000000 +vn -0.567914 0.823088 0.000000 +vn -0.743970 0.668213 0.000000 +vn -0.743970 0.668213 0.000000 +vn -0.879627 0.475664 0.000000 +vn -0.879627 0.475664 0.000000 +vn -0.960214 0.279264 0.000000 +vn -0.960214 0.279264 0.000000 +vn -0.995560 0.094129 0.000000 +vn -0.995560 0.094129 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.992578 -0.121609 -0.000000 +vn -0.992578 -0.121609 0.000000 +vn -0.933913 -0.357501 0.000000 +vn -0.933913 -0.357501 -0.000000 +vn -0.823086 -0.567917 0.000000 +vn -0.823086 -0.567917 -0.000000 +vn -0.668215 -0.743969 0.000000 +vn -0.668215 -0.743969 -0.000000 +vn -0.475666 -0.879626 0.000000 +vn -0.475666 -0.879626 -0.000000 +vn -0.279262 -0.960215 0.000000 +vn -0.279262 -0.960215 -0.000000 +vn -0.094132 -0.995560 0.000000 +vn -0.094132 -0.995560 -0.000000 +g Extrude001 +f 1//1 2//1 3//1 +f 4//2 5//2 6//2 +f 7//3 8//3 4//3 +f 9//4 6//4 10//4 +f 9//5 4//5 6//5 +f 11//6 4//6 9//6 +f 11//7 7//7 4//7 +f 12//8 13//8 14//8 +f 12//9 15//9 16//9 +f 12//10 16//10 17//10 +f 18//11 19//11 13//11 +f 18//12 13//12 12//12 +f 18//13 12//13 17//13 +f 20//14 21//14 5//14 +f 20//15 5//15 4//15 +f 20//16 4//16 8//16 +f 22//17 20//17 8//17 +f 23//18 24//18 25//18 +f 26//19 7//19 11//19 +f 26//20 24//20 23//20 +f 26//21 8//21 7//21 +f 26//22 22//22 8//22 +f 26//23 23//23 22//23 +f 27//24 10//24 28//24 +f 27//25 9//25 10//25 +f 29//26 25//26 24//26 +f 30//27 26//27 11//27 +f 30//28 24//28 26//28 +f 30//29 11//29 31//29 +f 30//30 31//30 17//30 +f 32//31 29//31 24//31 +f 32//32 30//32 17//32 +f 32//33 33//33 29//33 +f 32//34 15//34 33//34 +f 32//35 24//35 30//35 +f 32//36 16//36 15//36 +f 32//37 17//37 16//37 +f 34//38 9//38 27//38 +f 34//39 11//39 9//39 +f 34//40 31//40 11//40 +f 35//41 28//41 36//41 +f 35//42 36//42 37//42 +f 35//43 37//43 38//43 +f 35//44 27//44 28//44 +f 39//45 31//45 34//45 +f 39//46 27//46 35//46 +f 39//47 34//47 27//47 +f 40//48 31//48 39//48 +f 40//49 39//49 35//49 +f 41//50 14//50 42//50 +f 41//51 33//51 15//51 +f 41//52 12//52 14//52 +f 41//53 15//53 12//53 +f 43//54 17//54 31//54 +f 43//55 18//55 17//55 +f 44//56 43//56 31//56 +f 45//57 31//57 40//57 +f 45//58 44//58 31//58 +f 46//59 47//59 19//59 +f 46//60 18//60 43//60 +f 46//61 43//61 44//61 +f 46//62 19//62 18//62 +f 48//63 38//63 49//63 +f 48//64 40//64 35//64 +f 48//65 50//65 47//65 +f 48//66 51//66 50//66 +f 48//67 49//67 51//67 +f 48//68 44//68 45//68 +f 48//69 46//69 44//69 +f 48//70 45//70 40//70 +f 48//71 35//71 38//71 +f 48//72 47//72 46//72 +f 52//73 53//73 21//73 +f 52//74 21//74 20//74 +f 52//75 20//75 22//75 +f 54//76 52//76 22//76 +f 55//77 25//77 56//77 +f 55//78 54//78 22//78 +f 55//79 23//79 25//79 +f 55//80 22//80 23//80 +f 57//81 25//81 29//81 +f 57//82 29//82 33//82 +f 57//83 56//83 25//83 +f 58//84 57//84 33//84 +f 59//85 42//85 60//85 +f 59//86 33//86 41//86 +f 59//87 58//87 33//87 +f 59//88 41//88 42//88 +f 61//89 62//89 53//89 +f 61//90 52//90 54//90 +f 61//91 53//91 52//91 +f 63//92 61//92 54//92 +f 64//93 55//93 56//93 +f 64//94 54//94 55//94 +f 64//95 56//95 1//95 +f 64//96 63//96 54//96 +f 64//97 1//97 63//97 +f 65//98 56//98 57//98 +f 65//99 57//99 58//99 +f 65//100 1//100 56//100 +f 66//101 1//101 65//101 +f 66//102 65//102 58//102 +f 67//103 60//103 68//103 +f 67//104 59//104 60//104 +f 67//105 58//105 59//105 +f 67//106 66//106 58//106 +f 69//107 3//107 62//107 +f 69//108 1//108 3//108 +f 69//109 62//109 61//109 +f 69//110 61//110 63//110 +f 69//111 63//111 1//111 +f 70//112 68//112 2//112 +f 70//113 2//113 1//113 +f 70//114 67//114 68//114 +f 70//115 1//115 66//115 +f 70//116 66//116 67//116 +f 71//117 72//117 73//117 +f 74//118 75//118 76//118 +f 77//119 78//119 79//119 +f 80//120 77//120 79//120 +f 80//121 79//121 74//121 +f 81//122 80//122 74//122 +f 82//123 81//123 74//123 +f 83//124 82//124 74//124 +f 84//125 83//125 74//125 +f 85//126 84//126 74//126 +f 86//127 87//127 88//127 +f 86//128 89//128 87//128 +f 90//129 91//129 92//129 +f 90//130 86//130 88//130 +f 90//131 88//131 93//131 +f 90//132 93//132 94//132 +f 90//133 94//133 95//133 +f 90//134 95//134 96//134 +f 97//135 90//135 96//135 +f 98//136 38//136 99//136 +f 98//137 99//137 100//137 +f 101//138 38//138 98//138 +f 102//139 101//139 98//139 +f 102//140 103//140 101//140 +f 104//141 101//141 103//141 +f 105//142 38//142 101//142 +f 105//143 101//143 104//143 +f 106//144 107//144 72//144 +f 106//145 72//145 71//145 +f 106//146 85//146 74//146 +f 108//147 77//147 80//147 +f 108//148 80//148 81//148 +f 108//149 81//149 82//149 +f 108//150 82//150 83//150 +f 109//151 49//151 38//151 +f 109//152 38//152 105//152 +f 110//153 111//153 108//153 +f 112//154 110//154 108//154 +f 113//155 108//155 83//155 +f 113//156 112//156 108//156 +f 113//157 83//157 84//157 +f 113//158 84//158 85//158 +f 114//159 106//159 71//159 +f 114//160 85//160 106//160 +f 114//161 113//161 85//161 +f 115//162 49//162 109//162 +f 116//163 117//163 118//163 +f 116//164 118//164 119//164 +f 116//165 88//165 87//165 +f 116//166 93//166 88//166 +f 116//167 94//167 93//167 +f 116//168 95//168 94//168 +f 120//169 97//169 96//169 +f 120//170 116//170 119//170 +f 120//171 95//171 116//171 +f 120//172 96//172 95//172 +f 121//173 97//173 120//173 +f 122//174 49//174 115//174 +f 122//175 123//175 124//175 +f 122//176 115//176 123//176 +f 125//177 126//177 49//177 +f 125//178 127//178 126//178 +f 125//179 49//179 122//179 +f 128//180 122//180 124//180 +f 128//181 125//181 122//181 +f 129//182 90//182 97//182 +f 129//183 73//183 130//183 +f 129//184 97//184 121//184 +f 129//185 71//185 73//185 +f 129//186 121//186 71//186 +f 131//187 100//187 132//187 +f 131//188 132//188 133//188 +f 131//189 133//189 75//189 +f 131//190 102//190 98//190 +f 131//191 103//191 102//191 +f 131//192 78//192 103//192 +f 131//193 74//193 79//193 +f 131//194 79//194 78//194 +f 131//195 75//195 74//195 +f 131//196 98//196 100//196 +f 134//197 105//197 104//197 +f 135//198 76//198 107//198 +f 135//199 106//199 74//199 +f 135//200 74//200 76//200 +f 135//201 107//201 106//201 +f 136//202 104//202 103//202 +f 136//203 134//203 104//203 +f 136//204 103//204 78//204 +f 136//205 78//205 77//205 +f 137//206 134//206 136//206 +f 138//207 105//207 134//207 +f 138//208 134//208 137//208 +f 139//209 77//209 108//209 +f 139//210 136//210 77//210 +f 139//211 137//211 136//211 +f 139//212 138//212 137//212 +f 140//213 105//213 138//213 +f 141//214 138//214 139//214 +f 141//215 140//215 138//215 +f 141//216 108//216 111//216 +f 141//217 139//217 108//217 +f 142//218 105//218 140//218 +f 142//219 140//219 141//219 +f 142//220 141//220 111//220 +f 142//221 109//221 105//221 +f 143//222 142//222 111//222 +f 143//223 109//223 142//223 +f 144//224 145//224 146//224 +f 144//225 143//225 145//225 +f 144//226 109//226 143//226 +f 147//227 146//227 145//227 +f 147//228 145//228 143//228 +f 147//229 110//229 112//229 +f 147//230 111//230 110//230 +f 147//231 143//231 111//231 +f 148//232 144//232 146//232 +f 149//233 109//233 144//233 +f 149//234 144//234 148//234 +f 150//235 147//235 112//235 +f 150//236 112//236 151//236 +f 152//237 146//237 147//237 +f 152//238 147//238 150//238 +f 153//239 109//239 149//239 +f 153//240 149//240 117//240 +f 153//241 115//241 109//241 +f 154//242 149//242 148//242 +f 154//243 117//243 149//243 +f 154//244 146//244 152//244 +f 154//245 118//245 117//245 +f 154//246 119//246 118//246 +f 154//247 148//247 146//247 +f 155//248 150//248 151//248 +f 155//249 154//249 152//249 +f 155//250 119//250 154//250 +f 155//251 151//251 119//251 +f 155//252 152//252 150//252 +f 156//253 112//253 113//253 +f 156//254 113//254 114//254 +f 156//255 114//255 71//255 +f 156//256 151//256 112//256 +f 157//257 115//257 153//257 +f 158//258 153//258 117//258 +f 158//259 157//259 153//259 +f 158//260 117//260 116//260 +f 159//261 157//261 158//261 +f 159//262 115//262 157//262 +f 160//263 121//263 120//263 +f 160//264 156//264 71//264 +f 160//265 151//265 156//265 +f 160//266 119//266 151//266 +f 160//267 120//267 119//267 +f 160//268 71//268 121//268 +f 161//269 115//269 159//269 +f 161//270 123//270 115//270 +f 162//271 116//271 87//271 +f 162//272 159//272 158//272 +f 162//273 158//273 116//273 +f 163//274 161//274 159//274 +f 163//275 159//275 162//275 +f 164//276 89//276 124//276 +f 164//277 162//277 87//277 +f 164//278 124//278 123//278 +f 164//279 123//279 161//279 +f 164//280 161//280 163//280 +f 164//281 163//281 162//281 +f 164//282 87//282 89//282 +f 165//283 166//283 127//283 +f 165//284 167//284 166//284 +f 165//285 92//285 167//285 +f 165//286 128//286 124//286 +f 165//287 124//287 89//287 +f 165//288 127//288 125//288 +f 165//289 125//289 128//289 +f 165//290 90//290 92//290 +f 165//291 86//291 90//291 +f 165//292 89//292 86//292 +f 168//293 130//293 91//293 +f 168//294 90//294 129//294 +f 168//295 129//295 130//295 +f 168//296 91//296 90//296 +f 169//297 73//297 72//297 +f 169//298 72//298 170//298 +f 171//299 172//299 173//299 +f 174//300 175//300 176//300 +f 177//301 178//301 179//301 +f 180//302 177//302 179//302 +f 180//303 179//303 174//303 +f 181//304 180//304 174//304 +f 182//305 181//305 174//305 +f 183//306 182//306 174//306 +f 184//307 183//307 174//307 +f 185//308 184//308 174//308 +f 186//309 187//309 188//309 +f 186//310 189//310 187//310 +f 190//311 191//311 192//311 +f 190//312 186//312 188//312 +f 190//313 188//313 193//313 +f 190//314 193//314 194//314 +f 190//315 194//315 195//315 +f 190//316 195//316 196//316 +f 197//317 190//317 196//317 +f 198//318 170//318 199//318 +f 198//319 199//319 200//319 +f 201//320 170//320 198//320 +f 202//321 201//321 198//321 +f 202//322 203//322 201//322 +f 204//323 201//323 203//323 +f 205//324 170//324 201//324 +f 205//325 201//325 204//325 +f 206//326 207//326 172//326 +f 206//327 172//327 171//327 +f 206//328 185//328 174//328 +f 208//329 177//329 180//329 +f 208//330 180//330 181//330 +f 208//331 181//331 182//331 +f 208//332 182//332 183//332 +f 209//333 169//333 170//333 +f 209//334 170//334 205//334 +f 210//335 211//335 208//335 +f 212//336 210//336 208//336 +f 213//337 208//337 183//337 +f 213//338 212//338 208//338 +f 213//339 183//339 184//339 +f 213//340 184//340 185//340 +f 214//341 206//341 171//341 +f 214//342 185//342 206//342 +f 214//343 213//343 185//343 +f 215//344 169//344 209//344 +f 216//345 217//345 218//345 +f 216//346 218//346 219//346 +f 216//347 188//347 187//347 +f 216//348 193//348 188//348 +f 216//349 194//349 193//349 +f 216//350 195//350 194//350 +f 220//351 197//351 196//351 +f 220//352 216//352 219//352 +f 220//353 195//353 216//353 +f 220//354 196//354 195//354 +f 221//355 197//355 220//355 +f 222//356 169//356 215//356 +f 222//357 223//357 224//357 +f 222//358 215//358 223//358 +f 225//359 226//359 169//359 +f 225//360 227//360 226//360 +f 225//361 169//361 222//361 +f 228//362 222//362 224//362 +f 228//363 225//363 222//363 +f 229//364 190//364 197//364 +f 229//365 173//365 230//365 +f 229//366 197//366 221//366 +f 229//367 171//367 173//367 +f 229//368 221//368 171//368 +f 231//369 200//369 232//369 +f 231//370 232//370 233//370 +f 231//371 233//371 175//371 +f 231//372 202//372 198//372 +f 231//373 203//373 202//373 +f 231//374 178//374 203//374 +f 231//375 174//375 179//375 +f 231//376 179//376 178//376 +f 231//377 175//377 174//377 +f 231//378 198//378 200//378 +f 234//379 205//379 204//379 +f 235//380 176//380 207//380 +f 235//381 206//381 174//381 +f 235//382 174//382 176//382 +f 235//383 207//383 206//383 +f 236//384 204//384 203//384 +f 236//385 234//385 204//385 +f 236//386 203//386 178//386 +f 236//387 178//387 177//387 +f 237//388 234//388 236//388 +f 238//389 205//389 234//389 +f 238//390 234//390 237//390 +f 239//391 177//391 208//391 +f 239//392 236//392 177//392 +f 239//393 237//393 236//393 +f 239//394 238//394 237//394 +f 240//395 205//395 238//395 +f 241//396 238//396 239//396 +f 241//397 240//397 238//397 +f 241//398 208//398 211//398 +f 241//399 239//399 208//399 +f 242//400 205//400 240//400 +f 242//401 240//401 241//401 +f 242//402 241//402 211//402 +f 242//403 209//403 205//403 +f 243//404 242//404 211//404 +f 243//405 209//405 242//405 +f 244//406 245//406 246//406 +f 244//407 243//407 245//407 +f 244//408 209//408 243//408 +f 247//409 246//409 245//409 +f 247//410 245//410 243//410 +f 247//411 210//411 212//411 +f 247//412 211//412 210//412 +f 247//413 243//413 211//413 +f 248//414 244//414 246//414 +f 249//415 209//415 244//415 +f 249//416 244//416 248//416 +f 250//417 247//417 212//417 +f 250//418 212//418 251//418 +f 252//419 246//419 247//419 +f 252//420 247//420 250//420 +f 253//421 209//421 249//421 +f 253//422 249//422 217//422 +f 253//423 215//423 209//423 +f 254//424 249//424 248//424 +f 254//425 217//425 249//425 +f 254//426 246//426 252//426 +f 254//427 218//427 217//427 +f 254//428 219//428 218//428 +f 254//429 248//429 246//429 +f 255//430 250//430 251//430 +f 255//431 254//431 252//431 +f 255//432 219//432 254//432 +f 255//433 251//433 219//433 +f 255//434 252//434 250//434 +f 256//435 212//435 213//435 +f 256//436 213//436 214//436 +f 256//437 214//437 171//437 +f 256//438 251//438 212//438 +f 257//439 215//439 253//439 +f 258//440 253//440 217//440 +f 258//441 257//441 253//441 +f 258//442 217//442 216//442 +f 259//443 257//443 258//443 +f 259//444 215//444 257//444 +f 260//445 221//445 220//445 +f 260//446 256//446 171//446 +f 260//447 251//447 256//447 +f 260//448 219//448 251//448 +f 260//449 220//449 219//449 +f 260//450 171//450 221//450 +f 261//451 215//451 259//451 +f 261//452 223//452 215//452 +f 262//453 216//453 187//453 +f 262//454 259//454 258//454 +f 262//455 258//455 216//455 +f 263//456 261//456 259//456 +f 263//457 259//457 262//457 +f 264//458 189//458 224//458 +f 264//459 262//459 187//459 +f 264//460 224//460 223//460 +f 264//461 223//461 261//461 +f 264//462 261//462 263//462 +f 264//463 263//463 262//463 +f 264//464 187//464 189//464 +f 265//465 266//465 227//465 +f 265//466 267//466 266//466 +f 265//467 192//467 267//467 +f 265//468 228//468 224//468 +f 265//469 224//469 189//469 +f 265//470 227//470 225//470 +f 265//471 225//471 228//471 +f 265//472 190//472 192//472 +f 265//473 186//473 190//473 +f 265//474 189//474 186//474 +f 268//475 230//475 191//475 +f 268//476 190//476 229//476 +f 268//477 229//477 230//477 +f 268//478 191//478 190//478 +f 269//479 270//479 271//479 +f 272//480 271//480 273//480 +f 272//481 269//481 271//481 +f 274//482 269//482 272//482 +f 275//483 274//483 272//483 +f 276//484 275//484 272//484 +f 277//485 278//485 279//485 +f 280//486 281//486 278//486 +f 280//487 278//487 277//487 +f 280//488 277//488 282//488 +f 280//489 282//489 283//489 +f 280//490 283//490 284//490 +f 285//491 286//491 3//491 +f 287//492 3//492 2//492 +f 287//493 2//493 288//493 +f 287//494 285//494 3//494 +f 287//495 289//495 285//495 +f 290//496 172//496 291//496 +f 290//497 291//497 292//497 +f 293//498 292//498 294//498 +f 293//499 290//499 292//499 +f 295//500 294//500 270//500 +f 295//501 270//501 269//501 +f 295//502 293//502 294//502 +f 296//503 172//503 290//503 +f 296//504 290//504 293//504 +f 297//505 296//505 293//505 +f 298//506 269//506 274//506 +f 298//507 297//507 293//507 +f 298//508 295//508 269//508 +f 298//509 293//509 295//509 +f 299//510 273//510 300//510 +f 299//511 276//511 272//511 +f 299//512 272//512 273//512 +f 301//513 173//513 172//513 +f 301//514 172//514 296//514 +f 302//515 303//515 173//515 +f 302//516 304//516 303//516 +f 302//517 173//517 301//517 +f 305//518 274//518 275//518 +f 305//519 275//519 276//519 +f 306//520 301//520 307//520 +f 306//521 304//521 302//521 +f 306//522 308//522 304//522 +f 306//523 302//523 301//523 +f 309//524 306//524 307//524 +f 309//525 282//525 277//525 +f 310//526 305//526 311//526 +f 310//527 312//527 274//527 +f 310//528 274//528 305//528 +f 310//529 282//529 312//529 +f 313//530 311//530 305//530 +f 313//531 314//531 311//531 +f 313//532 305//532 276//532 +f 315//533 316//533 286//533 +f 315//534 286//534 285//534 +f 317//535 279//535 308//535 +f 317//536 306//536 309//536 +f 317//537 308//537 306//537 +f 317//538 309//538 277//538 +f 317//539 277//539 279//539 +f 318//540 282//540 310//540 +f 318//541 310//541 311//541 +f 318//542 283//542 282//542 +f 318//543 284//543 283//543 +f 319//544 311//544 314//544 +f 319//545 284//545 318//545 +f 319//546 318//546 311//546 +f 320//547 289//547 314//547 +f 320//548 285//548 289//548 +f 321//549 322//549 281//549 +f 321//550 281//550 280//550 +f 321//551 280//551 284//551 +f 323//552 314//552 289//552 +f 323//553 289//553 287//553 +f 324//554 288//554 325//554 +f 324//555 287//555 288//555 +f 326//556 298//556 274//556 +f 326//557 274//557 312//557 +f 326//558 297//558 298//558 +f 326//559 296//559 297//559 +f 327//560 296//560 326//560 +f 327//561 301//561 296//561 +f 327//562 307//562 301//562 +f 327//563 309//563 307//563 +f 327//564 282//564 309//564 +f 327//565 326//565 312//565 +f 327//566 312//566 282//566 +f 328//567 299//567 300//567 +f 329//568 300//568 316//568 +f 329//569 316//569 315//569 +f 329//570 328//570 300//570 +f 330//571 299//571 328//571 +f 330//572 328//572 329//572 +f 331//573 299//573 330//573 +f 332//574 276//574 299//574 +f 332//575 313//575 276//575 +f 332//576 299//576 331//576 +f 333//577 315//577 285//577 +f 333//578 285//578 320//578 +f 333//579 329//579 315//579 +f 333//580 330//580 329//580 +f 333//581 331//581 330//581 +f 334//582 314//582 313//582 +f 334//583 313//583 332//583 +f 334//584 320//584 314//584 +f 334//585 333//585 320//585 +f 334//586 332//586 331//586 +f 334//587 331//587 333//587 +f 335//588 319//588 314//588 +f 335//589 314//589 323//589 +f 336//590 284//590 319//590 +f 336//591 321//591 284//591 +f 336//592 319//592 335//592 +f 337//593 323//593 287//593 +f 337//594 287//594 324//594 +f 337//595 335//595 323//595 +f 338//596 336//596 335//596 +f 338//597 337//597 324//597 +f 338//598 335//598 337//598 +f 339//599 338//599 324//599 +f 339//600 336//600 338//600 +f 340//601 321//601 336//601 +f 340//602 322//602 321//602 +f 340//603 336//603 339//603 +f 341//604 340//604 339//604 +f 341//605 325//605 322//605 +f 341//606 324//606 325//606 +f 341//607 322//607 340//607 +f 341//608 339//608 324//608 +f 50//609 51//609 49//609 +f 47//610 50//610 49//610 +f 19//611 49//611 126//611 +f 19//612 47//612 49//612 +f 13//613 126//613 127//613 +f 13//614 19//614 126//614 +f 14//615 127//615 166//615 +f 14//616 166//616 167//616 +f 14//617 167//617 92//617 +f 14//618 92//618 91//618 +f 14//619 91//619 130//619 +f 14//620 130//620 73//620 +f 14//621 13//621 127//621 +f 42//622 14//622 73//622 +f 60//623 42//623 73//623 +f 68//624 60//624 73//624 +f 2//625 68//625 73//625 +f 169//626 288//626 2//626 +f 169//627 2//627 73//627 +f 325//628 288//628 169//628 +f 322//629 325//629 169//629 +f 281//630 169//630 226//630 +f 281//631 226//631 227//631 +f 281//632 227//632 266//632 +f 281//633 322//633 169//633 +f 278//634 266//634 267//634 +f 278//635 267//635 192//635 +f 278//636 192//636 191//636 +f 278//637 281//637 266//637 +f 304//638 230//638 173//638 +f 304//639 173//639 303//639 +f 279//640 278//640 191//640 +f 279//641 191//641 230//641 +f 308//642 279//642 230//642 +f 308//643 230//643 304//643 +f 37//644 36//644 38//644 +f 36//645 28//645 38//645 +f 38//646 10//646 99//646 +f 28//647 10//647 38//647 +f 99//648 6//648 100//648 +f 10//649 6//649 99//649 +f 100//650 5//650 132//650 +f 132//651 5//651 133//651 +f 133//652 5//652 75//652 +f 75//653 5//653 76//653 +f 76//654 5//654 107//654 +f 107//655 5//655 72//655 +f 6//656 5//656 100//656 +f 5//657 21//657 72//657 +f 21//658 53//658 72//658 +f 53//659 62//659 72//659 +f 62//660 3//660 72//660 +f 286//661 170//661 3//661 +f 3//662 170//662 72//662 +f 286//663 316//663 170//663 +f 316//664 300//664 170//664 +f 170//665 273//665 199//665 +f 199//666 273//666 200//666 +f 200//667 273//667 232//667 +f 300//668 273//668 170//668 +f 232//669 271//669 233//669 +f 233//670 271//670 175//670 +f 175//671 271//671 176//671 +f 273//672 271//672 232//672 +f 207//673 292//673 172//673 +f 172//674 292//674 291//674 +f 271//675 270//675 176//675 +f 176//676 270//676 207//676 +f 270//677 294//677 207//677 +f 207//678 294//678 292//678 +g Cut +f 342//679 343//679 344//679 +f 344//680 343//680 345//680 +f 345//681 346//681 347//681 +f 343//682 346//682 345//682 +f 347//683 348//683 349//683 +f 346//684 348//684 347//684 +f 349//685 350//685 351//685 +f 348//686 350//686 349//686 +f 351//687 352//687 353//687 +f 350//688 352//688 351//688 +f 353//689 354//689 355//689 +f 352//690 354//690 353//690 +f 355//691 356//691 357//691 +f 354//692 356//692 355//692 +f 357//693 358//693 359//693 +f 356//694 358//694 357//694 +f 360//695 342//695 361//695 +f 361//696 342//696 344//696 +f 358//697 362//697 359//697 +f 359//698 362//698 363//698 +f 364//699 365//699 366//699 +f 367//700 366//700 368//700 +f 367//701 364//701 366//701 +f 369//702 370//702 365//702 +f 369//703 365//703 364//703 +f 371//704 368//704 372//704 +f 371//705 367//705 368//705 +f 373//706 374//706 370//706 +f 373//707 375//707 374//707 +f 373//708 370//708 369//708 +f 376//709 372//709 377//709 +f 376//710 371//710 372//710 +f 378//711 376//711 377//711 +f 379//712 380//712 375//712 +f 379//713 375//713 373//713 +f 381//714 380//714 379//714 +f 381//715 382//715 380//715 +f 383//716 382//716 381//716 +f 383//717 384//717 382//717 +f 385//718 386//718 384//718 +f 385//719 384//719 383//719 +f 387//720 388//720 386//720 +f 387//721 386//721 385//721 +f 389//722 388//722 387//722 +f 390//723 388//723 389//723 +f 390//724 389//724 391//724 +f 392//725 378//725 377//725 +f 392//726 377//726 393//726 +f 392//727 393//727 394//727 +f 395//728 396//728 397//728 +f 395//729 394//729 396//729 +f 395//730 392//730 394//730 +f 398//731 390//731 391//731 +f 398//732 391//732 399//732 +f 400//733 397//733 401//733 +f 400//734 395//734 397//734 +f 402//735 400//735 401//735 +f 403//736 398//736 399//736 +f 404//737 405//737 402//737 +f 404//738 402//738 401//738 +f 406//739 403//739 399//739 +f 406//740 399//740 407//740 +f 360//741 406//741 407//741 +f 408//742 405//742 404//742 +f 408//743 409//743 405//743 +f 410//744 411//744 409//744 +f 410//745 409//745 408//745 +f 362//746 412//746 411//746 +f 362//747 411//747 410//747 +f 413//748 412//748 362//748 +f 358//749 413//749 362//749 +f 342//750 407//750 414//750 +f 342//751 414//751 415//751 +f 342//752 360//752 407//752 +f 356//753 416//753 413//753 +f 356//754 413//754 358//754 +f 343//755 415//755 417//755 +f 343//756 342//756 415//756 +f 354//757 416//757 356//757 +f 346//758 417//758 418//758 +f 346//759 343//759 417//759 +f 352//760 419//760 416//760 +f 352//761 416//761 354//761 +f 348//762 418//762 420//762 +f 348//763 346//763 418//763 +f 350//764 420//764 419//764 +f 350//765 419//765 352//765 +f 350//766 348//766 420//766 +f 421//767 422//767 423//767 +f 423//768 424//768 425//768 +f 422//769 424//769 423//769 +f 426//770 427//770 421//770 +f 421//771 427//771 422//771 +f 425//772 428//772 429//772 +f 424//773 428//773 425//773 +f 430//774 431//774 426//774 +f 432//775 431//775 430//775 +f 426//776 431//776 427//776 +f 429//777 433//777 434//777 +f 428//778 433//778 429//778 +f 433//779 435//779 434//779 +f 436//780 437//780 432//780 +f 432//781 437//781 431//781 +f 436//782 438//782 437//782 +f 439//783 438//783 436//783 +f 439//784 440//784 438//784 +f 441//785 440//785 439//785 +f 442//786 443//786 441//786 +f 441//787 443//787 440//787 +f 444//788 445//788 442//788 +f 442//789 445//789 443//789 +f 444//790 446//790 445//790 +f 444//791 447//791 446//791 +f 446//792 447//792 448//792 +f 435//793 449//793 434//793 +f 434//794 449//794 450//794 +f 450//795 449//795 451//795 +f 452//796 453//796 454//796 +f 451//797 453//797 452//797 +f 449//798 453//798 451//798 +f 447//799 455//799 448//799 +f 448//800 455//800 456//800 +f 454//801 457//801 458//801 +f 453//802 457//802 454//802 +f 457//803 459//803 458//803 +f 455//804 460//804 456//804 +f 461//805 462//805 459//805 +f 459//806 462//806 458//806 +f 460//807 463//807 456//807 +f 456//808 463//808 464//808 +f 463//809 361//809 464//809 +f 461//810 465//810 462//810 +f 466//811 465//811 461//811 +f 467//812 468//812 466//812 +f 466//813 468//813 465//813 +f 469//814 363//814 467//814 +f 467//815 363//815 468//815 +f 469//816 470//816 363//816 +f 470//817 359//817 363//817 +f 464//818 344//818 471//818 +f 471//819 344//819 472//819 +f 361//820 344//820 464//820 +f 473//821 357//821 470//821 +f 470//822 357//822 359//822 +f 472//823 345//823 474//823 +f 344//824 345//824 472//824 +f 473//825 355//825 357//825 +f 474//826 347//826 475//826 +f 345//827 347//827 474//827 +f 476//828 353//828 473//828 +f 473//829 353//829 355//829 +f 475//830 349//830 477//830 +f 347//831 349//831 475//831 +f 477//832 351//832 476//832 +f 476//833 351//833 353//833 +f 349//834 351//834 477//834 +f 382//835 384//835 439//835 +f 439//836 384//836 441//836 +f 441//837 386//837 442//837 +f 384//838 386//838 441//838 +f 442//839 388//839 444//839 +f 386//840 388//840 442//840 +f 444//841 390//841 447//841 +f 388//842 390//842 444//842 +f 447//843 398//843 455//843 +f 390//844 398//844 447//844 +f 455//845 403//845 460//845 +f 398//846 403//846 455//846 +f 460//847 406//847 463//847 +f 403//848 406//848 460//848 +f 463//849 360//849 361//849 +f 406//850 360//850 463//850 +f 362//851 410//851 363//851 +f 363//852 410//852 468//852 +f 468//853 408//853 465//853 +f 410//854 408//854 468//854 +f 465//855 404//855 462//855 +f 408//856 404//856 465//856 +f 462//857 401//857 458//857 +f 404//858 401//858 462//858 +f 458//859 397//859 454//859 +f 401//860 397//860 458//860 +f 454//861 396//861 452//861 +f 397//862 396//862 454//862 +f 452//863 394//863 451//863 +f 396//864 394//864 452//864 +f 451//865 393//865 450//865 +f 394//866 393//866 451//866 +f 380//867 382//867 436//867 +f 436//868 382//868 439//868 +f 393//869 377//869 450//869 +f 450//870 377//870 434//870 +f 377//871 372//871 434//871 +f 434//872 372//872 429//872 +f 429//873 368//873 425//873 +f 372//874 368//874 429//874 +f 425//875 366//875 423//875 +f 368//876 366//876 425//876 +f 423//877 365//877 421//877 +f 366//878 365//878 423//878 +f 421//879 370//879 426//879 +f 365//880 370//880 421//880 +f 426//881 374//881 430//881 +f 370//882 374//882 426//882 +f 430//883 375//883 432//883 +f 374//884 375//884 430//884 +f 432//885 380//885 436//885 +f 375//886 380//886 432//886 +f 414//887 407//887 471//887 +f 471//888 407//888 464//888 +f 407//889 399//889 464//889 +f 464//890 399//890 456//890 +f 456//891 391//891 448//891 +f 399//892 391//892 456//892 +f 448//893 389//893 446//893 +f 391//894 389//894 448//894 +f 446//895 387//895 445//895 +f 389//896 387//896 446//896 +f 445//897 385//897 443//897 +f 387//898 385//898 445//898 +f 443//899 383//899 440//899 +f 385//900 383//900 443//900 +f 440//901 381//901 438//901 +f 383//902 381//902 440//902 +f 381//903 379//903 438//903 +f 438//904 379//904 437//904 +f 379//905 373//905 437//905 +f 437//906 373//906 431//906 +f 431//907 369//907 427//907 +f 373//908 369//908 431//908 +f 427//909 364//909 422//909 +f 369//910 364//910 427//910 +f 422//911 367//911 424//911 +f 364//912 367//912 422//912 +f 424//913 371//913 428//913 +f 367//914 371//914 424//914 +f 428//915 376//915 433//915 +f 371//916 376//916 428//916 +f 433//917 378//917 435//917 +f 376//918 378//918 433//918 +f 378//919 392//919 435//919 +f 435//920 392//920 449//920 +f 392//921 395//921 449//921 +f 449//922 395//922 453//922 +f 453//923 400//923 457//923 +f 395//924 400//924 453//924 +f 457//925 402//925 459//925 +f 400//926 402//926 457//926 +f 459//927 405//927 461//927 +f 402//928 405//928 459//928 +f 461//929 409//929 466//929 +f 405//930 409//930 461//930 +f 466//931 411//931 467//931 +f 409//932 411//932 466//932 +f 467//933 412//933 469//933 +f 411//934 412//934 467//934 +f 412//935 413//935 469//935 +f 469//936 413//936 470//936 +f 413//937 416//937 470//937 +f 470//938 416//938 473//938 +f 473//939 419//939 476//939 +f 416//940 419//940 473//940 +f 476//941 420//941 477//941 +f 419//942 420//942 476//942 +f 477//943 418//943 475//943 +f 420//944 418//944 477//944 +f 475//945 417//945 474//945 +f 418//946 417//946 475//946 +f 474//947 415//947 472//947 +f 417//948 415//948 474//948 +f 472//949 414//949 471//949 +f 415//950 414//950 472//950 diff --git a/asset/icons/computer-symbolic.svg b/asset/icons/computer-symbolic.svg new file mode 100644 index 0000000..a98b555 --- /dev/null +++ b/asset/icons/computer-symbolic.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/asset/icons/dialog-information.png b/asset/icons/dialog-information.png new file mode 100644 index 0000000..0ddba8a Binary files /dev/null and b/asset/icons/dialog-information.png differ diff --git a/asset/icons/edit-clear-all-symbolic.svg b/asset/icons/edit-clear-all-symbolic.svg new file mode 100644 index 0000000..a6b000b --- /dev/null +++ b/asset/icons/edit-clear-all-symbolic.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/asset/icons/error-correct-symbolic.FCStd b/asset/icons/error-correct-symbolic.FCStd new file mode 100644 index 0000000..ed3d115 Binary files /dev/null and b/asset/icons/error-correct-symbolic.FCStd differ diff --git a/asset/icons/error-correct-symbolic.obj b/asset/icons/error-correct-symbolic.obj new file mode 100644 index 0000000..7cc32d6 --- /dev/null +++ b/asset/icons/error-correct-symbolic.obj @@ -0,0 +1,717 @@ +# Created by FreeCAD +v 0.708819 -2.723356 0.000000 +v 2.256367 -1.175279 0.000000 +v 0.708819 -2.723356 -1.000000 +v 2.256367 -1.175279 -1.000000 +v 3.050117 -1.969029 0.000000 +v 3.050117 -1.969029 -1.000000 +v 1.507596 -3.522927 0.000000 +v 1.507596 -3.522927 -1.000000 +v 0.442383 -3.806561 0.000000 +v 0.442383 -3.806561 -1.000000 +v 1.136732 -0.025559 0.000000 +v 1.326621 -0.003704 0.000000 +v 1.326621 -0.003704 -1.000000 +v 1.136732 -0.025559 -1.000000 +v 0.971376 -0.084583 0.000000 +v 0.971376 -0.084583 -1.000000 +v 0.832515 -0.170961 0.000000 +v 0.832515 -0.170961 -1.000000 +v 0.722112 -0.274880 0.000000 +v 0.722112 -0.274880 -1.000000 +v 0.668396 -0.344430 0.000000 +v 0.668396 -0.344430 -1.000000 +v 0.627062 -0.414602 0.000000 +v 0.627062 -0.414602 -1.000000 +v 0.533095 -0.781190 -0.500000 +v 0.532871 -0.797454 -1.000000 +v 0.532871 -0.797454 0.000000 +v 0.550392 -0.639790 -0.750000 +v 0.563587 -0.583368 -1.000000 +v 0.567163 -0.570313 -0.500000 +v 0.539572 -0.704816 -0.750000 +v 0.550392 -0.639790 -0.250000 +v 0.563587 -0.583368 0.000000 +v 0.539572 -0.704816 -0.250000 +v 0.533442 -0.772417 -0.875000 +v 0.536029 -0.736243 -1.000000 +v 0.533442 -0.772417 -0.125000 +v 0.536029 -0.736243 0.000000 +v 0.532871 -1.217083 0.000000 +v 0.532871 -1.217083 -1.000000 +v 0.457994 -1.142206 0.000000 +v 0.457994 -1.142206 -1.000000 +v 0.455877 -1.139560 0.000000 +v 0.455877 -1.139560 -1.000000 +v 0.407411 -1.101318 0.000000 +v 0.407411 -1.101318 -1.000000 +v 0.350308 -1.074962 0.000000 +v 0.350308 -1.074962 -1.000000 +v 0.309688 -1.065250 0.000000 +v 0.309688 -1.065250 -1.000000 +v 0.268817 -1.062037 0.000000 +v 0.268817 -1.062037 -1.000000 +v 0.004233 -1.062037 0.000000 +v 0.004233 -1.062037 -1.000000 +v 0.004233 -1.326621 0.000000 +v 0.004233 -1.326621 -1.000000 +v 0.011450 -1.387939 0.000000 +v 0.011450 -1.387939 -1.000000 +v 0.033211 -1.446956 0.000000 +v 0.033211 -1.446956 -1.000000 +v 0.055094 -1.482535 0.000000 +v 0.055094 -1.482535 -1.000000 +v 0.081756 -1.513681 0.000000 +v 0.081756 -1.513681 -1.000000 +v 0.797983 -2.229908 0.000000 +v 0.797983 -2.229908 -1.000000 +v 1.511565 -1.516327 0.000000 +v 1.511565 -1.516327 -1.000000 +v 1.551118 -1.467502 0.000000 +v 1.551118 -1.467502 -1.000000 +v 1.578419 -1.409547 0.000000 +v 1.578419 -1.409547 -1.000000 +v 1.588455 -1.368213 0.000000 +v 1.588455 -1.368213 -1.000000 +v 1.591733 -1.326621 0.000000 +v 1.591733 -1.326621 -1.000000 +v 1.591733 -1.062037 0.000000 +v 1.591733 -1.062037 -1.000000 +v 1.327150 -1.062037 0.000000 +v 1.327150 -1.062037 -1.000000 +v 1.265832 -1.069254 0.000000 +v 1.265832 -1.069254 -1.000000 +v 1.206815 -1.091015 0.000000 +v 1.206815 -1.091015 -1.000000 +v 1.171236 -1.112898 0.000000 +v 1.171236 -1.112898 -1.000000 +v 1.140090 -1.139560 0.000000 +v 1.140090 -1.139560 -1.000000 +v 1.062567 -1.217083 0.000000 +v 1.062567 -1.217083 -1.000000 +v 1.062567 -0.797454 0.000000 +v 1.062567 -0.797454 -1.000000 +v 1.068751 -0.750325 0.000000 +v 1.068751 -0.750325 -1.000000 +v 1.082131 -0.697626 0.000000 +v 1.082131 -0.697626 -1.000000 +v 1.100931 -0.651404 0.000000 +v 1.100931 -0.651404 -1.000000 +v 1.135709 -0.589864 0.000000 +v 1.135709 -0.589864 -1.000000 +v 1.155324 -0.570229 0.000000 +v 1.155324 -0.570229 -1.000000 +v 1.179786 -0.555329 0.000000 +v 1.179786 -0.555329 -1.000000 +v 1.226235 -0.540836 0.000000 +v 1.226235 -0.540836 -1.000000 +v 1.270780 -0.534911 0.000000 +v 1.270780 -0.534911 -1.000000 +v 1.327150 -0.532871 0.000000 +v 1.327150 -0.532871 -1.000000 +v 2.904067 -0.532871 0.000000 +v 2.904067 -0.532871 -1.000000 +v 2.464065 -0.972079 0.000000 +v 2.464065 -0.972079 -1.000000 +v 3.271837 -1.779852 0.000000 +v 3.271837 -1.779852 -1.000000 +v 3.740150 -1.311540 0.000000 +v 3.740150 -1.311540 -1.000000 +v 3.771576 -1.271333 0.000000 +v 3.771576 -1.271333 -1.000000 +v 3.791669 -1.226464 0.000000 +v 3.791669 -1.226464 -1.000000 +v 3.800384 -1.181427 0.000000 +v 3.800384 -1.181427 -1.000000 +v 3.798916 -1.135170 0.000000 +v 3.798916 -1.135170 -1.000000 +v 3.787477 -1.091076 0.000000 +v 3.787477 -1.091076 -1.000000 +v 3.767650 -1.052031 0.000000 +v 3.767650 -1.052031 -1.000000 +v 3.754537 -1.034029 0.000000 +v 3.754537 -1.034029 -1.000000 +v 3.740150 -1.018117 0.000000 +v 3.740150 -1.018117 -1.000000 +v 3.254110 -0.532871 0.000000 +v 3.254110 -0.532871 -1.000000 +v 2.835011 -0.159808 0.000000 +v 2.835011 -0.159808 -1.000000 +v 2.713645 -0.074534 0.000000 +v 2.713645 -0.074534 -1.000000 +v 2.600944 -0.029196 0.000000 +v 2.600944 -0.029196 -1.000000 +v 2.502481 -0.010153 0.000000 +v 2.502481 -0.010153 -1.000000 +v 2.385483 -0.003704 0.000000 +v 2.385483 -0.003704 -1.000000 +vn -0.707228 0.706986 0.000000 +vn -0.707228 0.706986 0.000000 +vn 0.707107 0.707107 0.000000 +vn 0.707107 0.707107 0.000000 +vn 0.709700 -0.704504 0.000000 +vn 0.709700 -0.704504 0.000000 +vn 0.257304 -0.966330 0.000000 +vn 0.257304 -0.966330 0.000000 +vn -0.971056 0.238850 0.000000 +vn -0.971056 0.238850 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.114340 0.993442 0.000000 +vn -0.114340 0.993442 0.000000 +vn -0.336173 0.941800 0.000000 +vn -0.336173 0.941800 0.000000 +vn -0.528193 0.849124 0.000000 +vn -0.528193 0.849124 0.000000 +vn -0.685399 0.728167 0.000000 +vn -0.685399 0.728167 0.000000 +vn -0.791439 0.611248 0.000000 +vn -0.791439 0.611248 0.000000 +vn -0.861633 0.507533 0.000000 +vn -0.861633 0.507533 0.000000 +vn -0.999905 0.013800 0.000000 +vn -0.935563 0.351880 0.030037 +vn -0.933323 0.359037 0.000000 +vn -0.953029 0.302213 -0.020057 +vn -0.986936 0.159440 0.023142 +vn -0.986227 0.164117 0.020548 +vn -0.935563 0.351880 -0.030037 +vn -0.953029 0.302213 0.020057 +vn -0.986936 0.159440 -0.023142 +vn -0.986227 0.164117 -0.020548 +vn -0.983666 0.177319 0.030959 +vn -0.998655 0.051527 -0.005755 +vn -0.989264 0.144832 -0.019525 +vn -0.996102 0.088202 0.001142 +vn -0.985631 0.164017 -0.040374 +vn -0.999698 0.024568 -0.000350 +vn -0.983666 0.177319 -0.030959 +vn -0.998655 0.051527 0.005755 +vn -0.999698 0.024568 0.000350 +vn -0.989264 0.144832 0.019525 +vn -0.996102 0.088202 -0.001142 +vn -0.985631 0.164017 0.040374 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.707107 0.707106 0.000000 +vn 0.707107 0.707106 0.000000 +vn 0.780859 0.624707 0.000000 +vn 0.780859 0.624707 0.000000 +vn 0.619435 0.785048 0.000000 +vn 0.619435 0.785048 0.000000 +vn 0.419078 0.907950 0.000000 +vn 0.419078 0.907950 0.000000 +vn 0.232538 0.972587 0.000000 +vn 0.232538 0.972587 0.000000 +vn 0.078360 0.996925 0.000000 +vn 0.078360 0.996925 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.993145 -0.116888 0.000000 +vn -0.993145 -0.116888 -0.000000 +vn -0.938254 -0.345948 -0.000000 +vn -0.938254 -0.345948 0.000000 +vn -0.851783 -0.523894 -0.000000 +vn -0.851783 -0.523894 0.000000 +vn -0.759671 -0.650308 -0.000000 +vn -0.759671 -0.650308 0.000000 +vn -0.707107 -0.707107 0.000000 +vn -0.707107 -0.707107 -0.000000 +vn 0.707107 -0.707107 0.000000 +vn 0.707107 -0.707107 0.000000 +vn 0.777028 -0.629466 0.000000 +vn 0.777028 -0.629466 0.000000 +vn 0.904651 -0.426154 0.000000 +vn 0.904651 -0.426154 0.000000 +vn 0.971763 -0.235959 0.000000 +vn 0.971763 -0.235959 0.000000 +vn 0.996909 -0.078570 0.000000 +vn 0.996909 -0.078570 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.116888 0.993145 0.000000 +vn -0.116888 0.993145 0.000000 +vn -0.345948 0.938254 0.000000 +vn -0.345948 0.938254 0.000000 +vn -0.523894 0.851784 0.000000 +vn -0.523894 0.851784 0.000000 +vn -0.650310 0.759669 0.000000 +vn -0.650310 0.759669 0.000000 +vn -0.707106 0.707107 0.000000 +vn -0.707106 0.707107 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.991499 -0.130114 0.000000 +vn 0.991499 -0.130114 0.000000 +vn 0.969250 -0.246076 0.000000 +vn 0.969250 -0.246076 0.000000 +vn 0.926306 -0.376772 0.000000 +vn 0.926306 -0.376772 0.000000 +vn 0.870596 -0.491998 0.000000 +vn 0.870596 -0.491998 0.000000 +vn 0.707473 -0.706740 0.000000 +vn 0.707473 -0.706740 0.000000 +vn 0.520192 -0.854049 0.000000 +vn 0.520192 -0.854049 0.000000 +vn 0.297872 -0.954606 0.000000 +vn 0.297872 -0.954606 0.000000 +vn 0.131842 -0.991271 0.000000 +vn 0.131842 -0.991271 0.000000 +vn 0.036171 -0.999346 0.000000 +vn 0.036171 -0.999346 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn -0.706468 0.707745 0.000000 +vn -0.706468 0.707745 0.000000 +vn -0.707107 -0.707107 0.000000 +vn -0.707107 -0.707107 -0.000000 +vn 0.707107 -0.707107 0.000000 +vn 0.707107 -0.707107 0.000000 +vn 0.787885 -0.615823 0.000000 +vn 0.787885 -0.615823 0.000000 +vn 0.912672 -0.408693 0.000000 +vn 0.912672 -0.408693 0.000000 +vn 0.981787 -0.189984 0.000000 +vn 0.981787 -0.189984 0.000000 +vn 0.999497 0.031713 0.000000 +vn 0.999497 0.031713 0.000000 +vn 0.967961 0.251101 0.000000 +vn 0.967961 0.251101 0.000000 +vn 0.891627 0.452770 0.000000 +vn 0.891627 0.452770 0.000000 +vn 0.808298 0.588773 0.000000 +vn 0.808298 0.588773 0.000000 +vn 0.741758 0.670668 0.000000 +vn 0.741758 0.670668 0.000000 +vn 0.706529 0.707684 0.000000 +vn 0.706529 0.707684 0.000000 +vn 0.664891 0.746941 0.000000 +vn 0.664891 0.746941 0.000000 +vn 0.574902 0.818222 0.000000 +vn 0.574902 0.818222 0.000000 +vn 0.373220 0.927743 0.000000 +vn 0.373220 0.927743 0.000000 +vn 0.189878 0.981808 0.000000 +vn 0.189878 0.981808 0.000000 +vn 0.055039 0.998484 0.000000 +vn 0.055039 0.998484 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 -0.000000 -1.000000 +vn -0.000000 -0.000000 -1.000000 +vn -0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +g Extrude +f 1//1 2//1 3//1 +f 3//2 2//2 4//2 +f 2//3 5//3 4//3 +f 4//4 5//4 6//4 +f 5//5 7//5 6//5 +f 6//6 7//6 8//6 +f 7//7 9//7 8//7 +f 8//8 9//8 10//8 +f 9//9 1//9 10//9 +f 10//10 1//10 3//10 +f 1//11 9//11 7//11 +f 5//12 1//12 7//12 +f 2//13 1//13 5//13 +f 10//14 3//14 8//14 +f 3//15 6//15 8//15 +f 3//16 4//16 6//16 +g Extrude001 +f 11//17 12//17 13//17 +f 11//18 13//18 14//18 +f 15//19 14//19 16//19 +f 15//20 11//20 14//20 +f 17//21 16//21 18//21 +f 17//22 15//22 16//22 +f 19//23 18//23 20//23 +f 19//24 17//24 18//24 +f 21//25 20//25 22//25 +f 21//26 19//26 20//26 +f 23//27 22//27 24//27 +f 23//28 21//28 22//28 +f 25//29 26//29 27//29 +f 28//30 24//30 29//30 +f 30//31 23//31 24//31 +f 30//32 24//32 28//32 +f 30//33 31//33 25//33 +f 30//34 28//34 31//34 +f 32//35 33//35 23//35 +f 32//36 23//36 30//36 +f 34//37 30//37 25//37 +f 34//38 32//38 30//38 +f 35//39 29//39 36//39 +f 35//40 36//40 26//40 +f 35//41 28//41 29//41 +f 35//42 25//42 31//42 +f 35//43 31//43 28//43 +f 35//44 26//44 25//44 +f 37//45 38//45 33//45 +f 37//46 27//46 38//46 +f 37//47 25//47 27//47 +f 37//48 33//48 32//48 +f 37//49 34//49 25//49 +f 37//50 32//50 34//50 +f 39//51 27//51 26//51 +f 39//52 26//52 40//52 +f 41//53 39//53 40//53 +f 41//54 40//54 42//54 +f 43//55 41//55 42//55 +f 43//56 42//56 44//56 +f 45//57 43//57 44//57 +f 45//58 44//58 46//58 +f 47//59 46//59 48//59 +f 47//60 45//60 46//60 +f 49//61 48//61 50//61 +f 49//62 47//62 48//62 +f 51//63 50//63 52//63 +f 51//64 49//64 50//64 +f 53//65 51//65 52//65 +f 53//66 52//66 54//66 +f 55//67 53//67 54//67 +f 55//68 54//68 56//68 +f 57//69 55//69 56//69 +f 57//70 56//70 58//70 +f 59//71 58//71 60//71 +f 59//72 57//72 58//72 +f 61//73 60//73 62//73 +f 61//74 59//74 60//74 +f 63//75 62//75 64//75 +f 63//76 61//76 62//76 +f 65//77 63//77 64//77 +f 65//78 64//78 66//78 +f 67//79 65//79 66//79 +f 67//80 66//80 68//80 +f 69//81 67//81 68//81 +f 69//82 68//82 70//82 +f 71//83 70//83 72//83 +f 71//84 69//84 70//84 +f 73//85 72//85 74//85 +f 73//86 71//86 72//86 +f 75//87 74//87 76//87 +f 75//88 73//88 74//88 +f 77//89 75//89 76//89 +f 77//90 76//90 78//90 +f 79//91 77//91 78//91 +f 79//92 78//92 80//92 +f 81//93 79//93 80//93 +f 81//94 80//94 82//94 +f 83//95 82//95 84//95 +f 83//96 81//96 82//96 +f 85//97 84//97 86//97 +f 85//98 83//98 84//98 +f 87//99 86//99 88//99 +f 87//100 85//100 86//100 +f 89//101 87//101 88//101 +f 89//102 88//102 90//102 +f 91//103 89//103 90//103 +f 91//104 90//104 92//104 +f 93//105 91//105 92//105 +f 93//106 92//106 94//106 +f 95//107 94//107 96//107 +f 95//108 93//108 94//108 +f 97//109 96//109 98//109 +f 97//110 95//110 96//110 +f 99//111 97//111 98//111 +f 99//112 98//112 100//112 +f 101//113 100//113 102//113 +f 101//114 99//114 100//114 +f 103//115 102//115 104//115 +f 103//116 101//116 102//116 +f 105//117 104//117 106//117 +f 105//118 103//118 104//118 +f 107//119 106//119 108//119 +f 107//120 105//120 106//120 +f 109//121 108//121 110//121 +f 109//122 107//122 108//122 +f 111//123 109//123 110//123 +f 111//124 110//124 112//124 +f 113//125 111//125 112//125 +f 113//126 112//126 114//126 +f 115//127 113//127 114//127 +f 115//128 114//128 116//128 +f 117//129 115//129 116//129 +f 117//130 116//130 118//130 +f 119//131 117//131 118//131 +f 119//132 118//132 120//132 +f 121//133 120//133 122//133 +f 121//134 119//134 120//134 +f 123//135 122//135 124//135 +f 123//136 121//136 122//136 +f 125//137 124//137 126//137 +f 125//138 123//138 124//138 +f 127//139 126//139 128//139 +f 127//140 125//140 126//140 +f 129//141 128//141 130//141 +f 129//142 127//142 128//142 +f 131//143 130//143 132//143 +f 131//144 129//144 130//144 +f 133//145 132//145 134//145 +f 133//146 131//146 132//146 +f 135//147 133//147 134//147 +f 135//148 134//148 136//148 +f 137//149 135//149 136//149 +f 137//150 136//150 138//150 +f 139//151 137//151 138//151 +f 139//152 138//152 140//152 +f 141//153 140//153 142//153 +f 141//154 139//154 140//154 +f 143//155 142//155 144//155 +f 143//156 141//156 142//156 +f 145//157 144//157 146//157 +f 145//158 143//158 144//158 +f 12//159 145//159 146//159 +f 12//160 146//160 13//160 +f 51//161 53//161 55//161 +f 39//162 63//162 65//162 +f 41//163 45//163 47//163 +f 41//164 47//164 49//164 +f 41//165 49//165 51//165 +f 41//166 55//166 57//166 +f 41//167 57//167 59//167 +f 41//168 59//168 61//168 +f 41//169 61//169 63//169 +f 41//170 51//170 55//170 +f 41//171 63//171 39//171 +f 43//172 45//172 41//172 +f 89//173 39//173 65//173 +f 67//174 89//174 65//174 +f 87//175 89//175 67//175 +f 71//176 67//176 69//176 +f 91//177 38//177 27//177 +f 91//178 27//178 39//178 +f 91//179 39//179 89//179 +f 75//180 87//180 67//180 +f 75//181 67//181 71//181 +f 75//182 71//182 73//182 +f 75//183 79//183 81//183 +f 75//184 81//184 83//184 +f 75//185 83//185 85//185 +f 75//186 85//186 87//186 +f 93//187 33//187 38//187 +f 93//188 38//188 91//188 +f 95//189 23//189 33//189 +f 95//190 33//190 93//190 +f 97//191 21//191 23//191 +f 97//192 23//192 95//192 +f 77//193 79//193 75//193 +f 99//194 19//194 21//194 +f 99//195 21//195 97//195 +f 17//196 19//196 99//196 +f 17//197 99//197 101//197 +f 17//198 101//198 103//198 +f 15//199 103//199 105//199 +f 15//200 17//200 103//200 +f 11//201 105//201 107//201 +f 11//202 15//202 105//202 +f 12//203 107//203 109//203 +f 12//204 11//204 107//204 +f 145//205 12//205 109//205 +f 141//206 143//206 111//206 +f 123//207 119//207 121//207 +f 139//208 141//208 111//208 +f 137//209 139//209 111//209 +f 129//210 123//210 125//210 +f 129//211 125//211 127//211 +f 129//212 119//212 123//212 +f 135//213 111//213 113//213 +f 135//214 113//214 115//214 +f 135//215 137//215 111//215 +f 133//216 115//216 117//216 +f 133//217 117//217 119//217 +f 133//218 129//218 131//218 +f 133//219 135//219 115//219 +f 133//220 119//220 129//220 +f 109//221 111//221 143//221 +f 109//222 143//222 145//222 +f 54//223 52//223 56//223 +f 64//224 40//224 66//224 +f 46//225 42//225 48//225 +f 48//226 42//226 50//226 +f 50//227 42//227 52//227 +f 56//228 42//228 58//228 +f 58//229 42//229 60//229 +f 60//230 42//230 62//230 +f 62//231 42//231 64//231 +f 52//232 42//232 56//232 +f 64//233 42//233 40//233 +f 46//234 44//234 42//234 +f 40//235 90//235 66//235 +f 90//236 68//236 66//236 +f 90//237 88//237 68//237 +f 68//238 72//238 70//238 +f 36//239 92//239 26//239 +f 26//240 92//240 40//240 +f 40//241 92//241 90//241 +f 88//242 76//242 68//242 +f 68//243 76//243 72//243 +f 72//244 76//244 74//244 +f 80//245 76//245 82//245 +f 82//246 76//246 84//246 +f 84//247 76//247 86//247 +f 86//248 76//248 88//248 +f 29//249 94//249 36//249 +f 36//250 94//250 92//250 +f 24//251 96//251 29//251 +f 29//252 96//252 94//252 +f 22//253 98//253 24//253 +f 24//254 98//254 96//254 +f 80//255 78//255 76//255 +f 20//256 100//256 22//256 +f 22//257 100//257 98//257 +f 20//258 18//258 100//258 +f 100//259 18//259 102//259 +f 102//260 18//260 104//260 +f 104//261 16//261 106//261 +f 18//262 16//262 104//262 +f 106//263 14//263 108//263 +f 16//264 14//264 106//264 +f 108//265 13//265 110//265 +f 14//266 13//266 108//266 +f 13//267 146//267 110//267 +f 144//268 142//268 112//268 +f 120//269 124//269 122//269 +f 142//270 140//270 112//270 +f 140//271 138//271 112//271 +f 124//272 130//272 126//272 +f 126//273 130//273 128//273 +f 120//274 130//274 124//274 +f 112//275 136//275 114//275 +f 114//276 136//276 116//276 +f 138//277 136//277 112//277 +f 116//278 134//278 118//278 +f 118//279 134//279 120//279 +f 130//280 134//280 132//280 +f 136//281 134//281 116//281 +f 120//282 134//282 130//282 +f 112//283 110//283 144//283 +f 144//284 110//284 146//284 diff --git a/asset/icons/error-correct-symbolic.svg b/asset/icons/error-correct-symbolic.svg new file mode 100644 index 0000000..b1245a0 --- /dev/null +++ b/asset/icons/error-correct-symbolic.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/asset/icons/help-faq-symbolic.FCStd b/asset/icons/help-faq-symbolic.FCStd new file mode 100644 index 0000000..b53ed8c Binary files /dev/null and b/asset/icons/help-faq-symbolic.FCStd differ diff --git a/asset/icons/help-faq-symbolic.obj b/asset/icons/help-faq-symbolic.obj new file mode 100644 index 0000000..a91fedf --- /dev/null +++ b/asset/icons/help-faq-symbolic.obj @@ -0,0 +1,2449 @@ +# Created by FreeCAD +v 0.407641 -1.336823 0.000000 +v 0.529167 -1.322917 0.000000 +v 0.529167 -1.322917 -1.000000 +v 0.407641 -1.336823 -1.000000 +v 0.296224 -1.376461 0.000000 +v 0.296224 -1.376461 -1.000000 +v 0.198036 -1.438709 0.000000 +v 0.198036 -1.438709 -1.000000 +v 0.116198 -1.520446 0.000000 +v 0.116198 -1.520446 -1.000000 +v 0.053832 -1.618551 0.000000 +v 0.053832 -1.618551 -1.000000 +v 0.014059 -1.729903 0.000000 +v 0.014059 -1.729903 -1.000000 +v 0.003581 -1.789912 0.000000 +v 0.003581 -1.789912 -1.000000 +v 0.000000 -1.852083 0.000000 +v 0.000000 -1.852083 -1.000000 +v 2.910417 -1.322917 0.000000 +v 2.910417 -1.322917 -1.000000 +v 0.000000 -3.704167 0.000000 +v 0.000000 -3.704167 -1.000000 +v 0.406987 -4.219274 0.000000 +v 0.197529 -4.117135 0.000000 +v 0.295635 -4.179501 0.000000 +v 0.013906 -3.825692 0.000000 +v 0.053544 -3.937109 0.000000 +v 0.115792 -4.035297 0.000000 +v 0.466995 -4.229753 0.000000 +v 0.529167 -4.233333 0.000000 +v 1.618829 -3.927806 0.000000 +v 1.587475 -3.898474 0.000000 +v 1.563141 -3.863495 0.000000 +v 1.655082 -3.949631 0.000000 +v 1.546996 -3.825392 0.000000 +v 1.697924 -3.964119 0.000000 +v 1.539888 -3.793264 0.000000 +v 1.538023 -3.762110 0.000000 +v 1.744663 -3.968750 0.000000 +v 1.543973 -3.710560 0.000000 +v 1.614049 -3.284416 0.000000 +v 1.589024 -3.620177 0.000000 +v 1.622160 -3.588416 0.000000 +v 1.582731 -3.252362 0.000000 +v 1.560954 -3.663247 0.000000 +v 1.651072 -3.308846 0.000000 +v 1.657407 -3.566724 0.000000 +v 1.559211 -3.214875 0.000000 +v 1.544478 -3.174741 0.000000 +v 1.695547 -3.325736 0.000000 +v 1.696973 -3.552601 0.000000 +v 1.720220 -3.548431 0.000000 +v 1.539703 -3.149688 0.000000 +v 1.744663 -3.332163 0.000000 +v 1.744398 -3.547004 0.000000 +v 1.744663 -3.547004 0.000000 +v 1.780734 -3.328890 0.000000 +v 1.794066 -3.552933 0.000000 +v 1.815548 -3.319474 0.000000 +v 1.839629 -3.569763 0.000000 +v 1.854537 -3.300943 0.000000 +v 1.879912 -3.596059 0.000000 +v 1.178693 -2.591019 0.000000 +v 1.143781 -2.551144 0.000000 +v 1.222725 -2.621426 0.000000 +v 1.538023 -3.125258 0.000000 +v 1.126437 -2.520451 0.000000 +v 1.889293 -3.275492 0.000000 +v 1.913474 -3.630386 0.000000 +v 1.114690 -2.488671 0.000000 +v 1.271805 -2.639813 0.000000 +v 1.549469 -3.034350 0.000000 +v 1.918491 -3.244159 0.000000 +v 1.938877 -3.671308 0.000000 +v 1.321329 -2.645833 0.000000 +v 1.579294 -2.952652 0.000000 +v 2.910417 -4.233333 0.000000 +v 1.954141 -3.714995 0.000000 +v 1.959504 -3.762110 0.000000 +v 1.953576 -3.811047 0.000000 +v 1.936752 -3.855409 0.000000 +v 1.910471 -3.894057 0.000000 +v 1.876174 -3.925849 0.000000 +v 1.835301 -3.949646 0.000000 +v 1.791683 -3.963811 0.000000 +v 1.110452 -2.425939 0.000000 +v 1.347785 -2.644794 0.000000 +v 1.112211 -2.386587 0.000000 +v 1.940808 -3.207984 0.000000 +v 1.375059 -2.639649 0.000000 +v 1.606647 -2.903569 0.000000 +v 1.117335 -2.347648 0.000000 +v 1.120510 -2.336271 0.000000 +v 1.410694 -2.626016 0.000000 +v 1.637242 -2.860675 0.000000 +v 1.959504 -3.125258 0.000000 +v 1.954920 -3.168004 0.000000 +v 1.959769 -3.126317 0.000000 +v 1.443603 -2.604661 0.000000 +v 1.967971 -3.117056 0.000000 +v 1.706866 -2.781603 0.000000 +v 1.471387 -2.576659 0.000000 +v 1.155645 -2.221488 0.000000 +v 1.492279 -2.543992 0.000000 +v 2.042319 -3.050910 0.000000 +v 1.785938 -2.711979 0.000000 +v 1.505502 -2.509109 0.000000 +v 1.525222 -2.418422 0.000000 +v 1.516220 -2.445847 0.000000 +v 1.511300 -2.474383 0.000000 +v 3.241547 -4.117541 0.000000 +v 3.031942 -4.219427 0.000000 +v 3.143359 -4.179790 0.000000 +v 1.550238 -2.373606 0.000000 +v 1.212152 -2.118441 0.000000 +v 2.162627 -2.954023 0.000000 +v 1.868737 -2.641068 0.000000 +v 1.585489 -2.334996 0.000000 +v 1.290624 -2.026341 0.000000 +v 1.629355 -2.304334 0.000000 +v 1.680219 -2.283364 0.000000 +v 1.953376 -2.533474 0.000000 +v 1.934898 -2.571486 0.000000 +v 1.945874 -2.553878 0.000000 +v 1.388038 -1.950537 0.000000 +v 1.958560 -2.505955 0.000000 +v 1.736460 -2.273829 0.000000 +v 1.959504 -2.480469 0.000000 +v 1.764587 -2.273630 0.000000 +v 1.793837 -2.277508 0.000000 +v 1.951564 -2.423432 0.000000 +v 1.959504 -2.472267 0.000000 +v 1.835035 -2.290574 0.000000 +v 1.933182 -2.379422 0.000000 +v 1.873839 -2.312747 0.000000 +v 1.907324 -2.343073 0.000000 +v 1.489380 -1.899012 0.000000 +v 3.425524 -3.826347 0.000000 +v 3.323385 -4.035804 0.000000 +v 3.385751 -3.937699 0.000000 +v 3.436002 -3.766338 0.000000 +v 1.592624 -1.867219 0.000000 +v 3.439583 -3.704167 0.000000 +v 2.306417 -2.790470 0.000000 +v 2.253207 -2.863828 0.000000 +v 1.703387 -1.852083 0.000000 +v 3.439583 -2.698750 0.000000 +v 2.371923 -2.370026 0.000000 +v 2.381250 -2.447396 0.000000 +v 2.372414 -2.593817 0.000000 +v 2.347450 -2.701856 0.000000 +v 1.827783 -1.857267 0.000000 +v 1.946250 -1.885603 0.000000 +v 2.061728 -1.938120 0.000000 +v 2.165903 -2.012680 0.000000 +v 2.245714 -2.096060 0.000000 +v 2.308918 -2.191610 0.000000 +v 3.439583 -1.852083 0.000000 +v 2.353262 -2.295948 0.000000 +v 2.972588 -1.326498 0.000000 +v 3.425677 -1.730558 0.000000 +v 3.323791 -1.520953 0.000000 +v 3.386039 -1.619141 0.000000 +v 3.242054 -1.439115 0.000000 +v 3.143949 -1.376749 0.000000 +v 3.032597 -1.336976 0.000000 +v 4.233333 -1.852083 0.000000 +v 0.197529 -4.117135 -1.000000 +v 0.406987 -4.219274 -1.000000 +v 0.295635 -4.179501 -1.000000 +v 0.053544 -3.937109 -1.000000 +v 0.013906 -3.825692 -1.000000 +v 0.115792 -4.035297 -1.000000 +v 0.466995 -4.229753 -1.000000 +v 0.529167 -4.233333 -1.000000 +v 1.587475 -3.898474 -1.000000 +v 1.618829 -3.927806 -1.000000 +v 1.563141 -3.863495 -1.000000 +v 1.655082 -3.949631 -1.000000 +v 1.546996 -3.825392 -1.000000 +v 1.697924 -3.964119 -1.000000 +v 1.539888 -3.793264 -1.000000 +v 1.538023 -3.762110 -1.000000 +v 1.744663 -3.968750 -1.000000 +v 1.543973 -3.710560 -1.000000 +v 1.589024 -3.620177 -1.000000 +v 1.614049 -3.284416 -1.000000 +v 1.622160 -3.588416 -1.000000 +v 1.560954 -3.663247 -1.000000 +v 1.582731 -3.252362 -1.000000 +v 1.651072 -3.308846 -1.000000 +v 1.657407 -3.566724 -1.000000 +v 1.559211 -3.214875 -1.000000 +v 1.544478 -3.174741 -1.000000 +v 1.695547 -3.325736 -1.000000 +v 1.696973 -3.552601 -1.000000 +v 1.720220 -3.548431 -1.000000 +v 1.539703 -3.149688 -1.000000 +v 1.744398 -3.547004 -1.000000 +v 1.744663 -3.332163 -1.000000 +v 1.744663 -3.547004 -1.000000 +v 1.780734 -3.328890 -1.000000 +v 1.794066 -3.552933 -1.000000 +v 1.815548 -3.319474 -1.000000 +v 1.839629 -3.569763 -1.000000 +v 1.854537 -3.300943 -1.000000 +v 1.879912 -3.596059 -1.000000 +v 1.178693 -2.591019 -1.000000 +v 1.143781 -2.551144 -1.000000 +v 1.222725 -2.621426 -1.000000 +v 1.538023 -3.125258 -1.000000 +v 1.126437 -2.520451 -1.000000 +v 1.889293 -3.275492 -1.000000 +v 1.913474 -3.630386 -1.000000 +v 1.114690 -2.488671 -1.000000 +v 1.271805 -2.639813 -1.000000 +v 1.549469 -3.034350 -1.000000 +v 1.918491 -3.244159 -1.000000 +v 1.938877 -3.671308 -1.000000 +v 1.321329 -2.645833 -1.000000 +v 1.579294 -2.952652 -1.000000 +v 1.954141 -3.714995 -1.000000 +v 2.910417 -4.233333 -1.000000 +v 1.959504 -3.762110 -1.000000 +v 1.953576 -3.811047 -1.000000 +v 1.936752 -3.855409 -1.000000 +v 1.910471 -3.894057 -1.000000 +v 1.876174 -3.925849 -1.000000 +v 1.835301 -3.949646 -1.000000 +v 1.791683 -3.963811 -1.000000 +v 1.110452 -2.425939 -1.000000 +v 1.347785 -2.644794 -1.000000 +v 1.112211 -2.386587 -1.000000 +v 1.940808 -3.207984 -1.000000 +v 1.375059 -2.639649 -1.000000 +v 1.606647 -2.903569 -1.000000 +v 1.117335 -2.347648 -1.000000 +v 1.120510 -2.336271 -1.000000 +v 1.410694 -2.626016 -1.000000 +v 1.637242 -2.860675 -1.000000 +v 1.954920 -3.168004 -1.000000 +v 1.959504 -3.125258 -1.000000 +v 1.959769 -3.126317 -1.000000 +v 1.443603 -2.604661 -1.000000 +v 1.967971 -3.117056 -1.000000 +v 1.706866 -2.781603 -1.000000 +v 1.471387 -2.576659 -1.000000 +v 1.155645 -2.221488 -1.000000 +v 1.492279 -2.543992 -1.000000 +v 2.042319 -3.050910 -1.000000 +v 1.785938 -2.711979 -1.000000 +v 1.505502 -2.509109 -1.000000 +v 1.516220 -2.445847 -1.000000 +v 1.525222 -2.418422 -1.000000 +v 1.511300 -2.474383 -1.000000 +v 3.031942 -4.219427 -1.000000 +v 3.241547 -4.117541 -1.000000 +v 3.143359 -4.179790 -1.000000 +v 1.550238 -2.373606 -1.000000 +v 1.212152 -2.118441 -1.000000 +v 2.162627 -2.954023 -1.000000 +v 1.868737 -2.641068 -1.000000 +v 1.585489 -2.334996 -1.000000 +v 1.290624 -2.026341 -1.000000 +v 1.629355 -2.304334 -1.000000 +v 1.680219 -2.283364 -1.000000 +v 1.934898 -2.571486 -1.000000 +v 1.953376 -2.533474 -1.000000 +v 1.945874 -2.553878 -1.000000 +v 1.388038 -1.950537 -1.000000 +v 1.958560 -2.505955 -1.000000 +v 1.736460 -2.273829 -1.000000 +v 1.959504 -2.480469 -1.000000 +v 1.764587 -2.273630 -1.000000 +v 1.793837 -2.277508 -1.000000 +v 1.951564 -2.423432 -1.000000 +v 1.959504 -2.472267 -1.000000 +v 1.835035 -2.290574 -1.000000 +v 1.933182 -2.379422 -1.000000 +v 1.873839 -2.312747 -1.000000 +v 1.907324 -2.343073 -1.000000 +v 1.489380 -1.899012 -1.000000 +v 3.323385 -4.035804 -1.000000 +v 3.425524 -3.826347 -1.000000 +v 3.385751 -3.937699 -1.000000 +v 3.436002 -3.766338 -1.000000 +v 1.592624 -1.867219 -1.000000 +v 3.439583 -3.704167 -1.000000 +v 2.306417 -2.790470 -1.000000 +v 2.253207 -2.863828 -1.000000 +v 1.703387 -1.852083 -1.000000 +v 3.439583 -2.698750 -1.000000 +v 2.371923 -2.370026 -1.000000 +v 2.381250 -2.447396 -1.000000 +v 2.372414 -2.593817 -1.000000 +v 2.347450 -2.701856 -1.000000 +v 1.827783 -1.857267 -1.000000 +v 1.946250 -1.885603 -1.000000 +v 2.061728 -1.938120 -1.000000 +v 2.165903 -2.012680 -1.000000 +v 2.245714 -2.096060 -1.000000 +v 2.308918 -2.191610 -1.000000 +v 3.439583 -1.852083 -1.000000 +v 2.353262 -2.295948 -1.000000 +v 2.972588 -1.326498 -1.000000 +v 3.425677 -1.730558 -1.000000 +v 3.323791 -1.520953 -1.000000 +v 3.386039 -1.619141 -1.000000 +v 3.143949 -1.376749 -1.000000 +v 3.242054 -1.439115 -1.000000 +v 3.032597 -1.336976 -1.000000 +v 4.233333 -1.852083 -1.000000 +v 1.959339 -3.126060 -0.500000 +v 1.959393 -3.126384 -0.750000 +v 1.960641 -3.125605 -0.250000 +v 1.960641 -3.125605 -0.750000 +v 1.959393 -3.126384 -0.250000 +v 1.959530 -3.126415 -0.875000 +v 1.959769 -3.126317 -0.250000 +v 1.959530 -3.126415 -0.375000 +v 1.959530 -3.126415 -0.125000 +v 1.959356 -3.126330 -0.562500 +v 1.959356 -3.126330 -0.437500 +v 1.959530 -3.126415 -0.250000 +v 1.959372 -3.126359 -0.968750 +v 1.959355 -3.125948 -0.937500 +v 1.959332 -3.126211 -0.843750 +v 1.959344 -3.126295 -0.906250 +v 1.959418 -3.126402 -0.593750 +v 1.959418 -3.126402 -0.406250 +v 1.959332 -3.126211 -0.156250 +v 1.959355 -3.125948 -0.062500 +v 1.959344 -3.126295 -0.093750 +v 1.959372 -3.126359 -0.031250 +v 1.959467 -3.126417 -0.953125 +v 1.960499 -3.125737 -0.968750 +v 1.959698 -3.126355 -0.968750 +v 1.959635 -3.126384 -0.937500 +v 1.959382 -3.126372 -0.859375 +v 1.959405 -3.126394 -0.890625 +v 1.959606 -3.126395 -0.796875 +v 1.959769 -3.126317 -0.750000 +v 1.959530 -3.126415 -0.750000 +v 1.959433 -3.126409 -0.796875 +v 1.959382 -3.126372 -0.796875 +v 1.959340 -3.126275 -0.515625 +v 1.959418 -3.126402 -0.531250 +v 1.959807 -3.126294 -0.390625 +v 1.959807 -3.126294 -0.640625 +v 1.959606 -3.126395 -0.203125 +v 1.959433 -3.126409 -0.203125 +v 1.959382 -3.126372 -0.203125 +v 1.959382 -3.126372 -0.140625 +v 1.959405 -3.126394 -0.109375 +v 1.959635 -3.126384 -0.062500 +v 1.960499 -3.125737 -0.031250 +v 1.959467 -3.126417 -0.046875 +v 1.959698 -3.126355 -0.031250 +v 1.959486 -3.126418 -0.968750 +v 1.959338 -3.126265 -0.945312 +v 1.959497 -3.126418 -0.914062 +v 1.959433 -3.126409 -0.921875 +v 1.959441 -3.126411 -0.867188 +v 1.959467 -3.126417 -0.828125 +v 1.959359 -3.126338 -0.820312 +v 1.959541 -3.126413 -0.695312 +v 1.959530 -3.126415 -0.625000 +v 1.959566 -3.126407 -0.617188 +v 1.959566 -3.126407 -0.585938 +v 1.959566 -3.126407 -0.460938 +v 1.959497 -3.126418 -0.414062 +v 1.959566 -3.126407 -0.398438 +v 1.959359 -3.126338 -0.179688 +v 1.959467 -3.126417 -0.171875 +v 1.959441 -3.126411 -0.132812 +v 1.959497 -3.126418 -0.085938 +v 1.959433 -3.126409 -0.078125 +v 1.959338 -3.126265 -0.054688 +v 1.959486 -3.126418 -0.031250 +v 1.960482 -3.125753 -0.996094 +v 1.959334 -3.126234 -0.984375 +v 1.959341 -3.126280 -0.988281 +v 1.959358 -3.125934 -0.992188 +v 1.959778 -3.126311 -0.972656 +v 1.959507 -3.126417 -0.984375 +v 1.959426 -3.126405 -0.976562 +v 1.959379 -3.126369 -0.949219 +v 1.959422 -3.126404 -0.941406 +v 1.959335 -3.126245 -0.929688 +v 1.959396 -3.126386 -0.910156 +v 1.959367 -3.126353 -0.835938 +v 1.959402 -3.126391 -0.824219 +v 1.959399 -3.126389 -0.820312 +v 1.959482 -3.126418 -0.808594 +v 1.959429 -3.126407 -0.574219 +v 1.959408 -3.126396 -0.488281 +v 1.959361 -3.126342 -0.480469 +v 1.959429 -3.126407 -0.449219 +v 1.959408 -3.126396 -0.425781 +v 1.959482 -3.126418 -0.191406 +v 1.959399 -3.126389 -0.179688 +v 1.959402 -3.126391 -0.175781 +v 1.959367 -3.126353 -0.164062 +v 1.959396 -3.126386 -0.089844 +v 1.959335 -3.126245 -0.070312 +v 1.959422 -3.126404 -0.058594 +v 1.959379 -3.126369 -0.050781 +v 1.959778 -3.126311 -0.027344 +v 1.959426 -3.126405 -0.023438 +v 1.959507 -3.126417 -0.015625 +v 1.959334 -3.126234 -0.015625 +v 1.959358 -3.125934 -0.007812 +v 1.959341 -3.126280 -0.011719 +v 1.960482 -3.125753 -0.003906 +v 1.959505 -3.126418 -0.998047 +v 1.959690 -3.126359 -0.996094 +v 1.959460 -3.126416 -0.994141 +v 1.959620 -3.126390 -0.992188 +v 1.959394 -3.126385 -0.986328 +v 1.959382 -3.126372 -0.984375 +v 1.959361 -3.126342 -0.980469 +v 1.959510 -3.126417 -0.970703 +v 1.959334 -3.126236 -0.939453 +v 1.959415 -3.126400 -0.933594 +v 1.959450 -3.126414 -0.937500 +v 1.959356 -3.126330 -0.937500 +v 1.959370 -3.126356 -0.933594 +v 1.959365 -3.126349 -0.925781 +v 1.959406 -3.126395 -0.814453 +v 1.959338 -3.126268 -0.494141 +v 1.959435 -3.126409 -0.470703 +v 1.959406 -3.126395 -0.185547 +v 1.959365 -3.126349 -0.074219 +v 1.959415 -3.126400 -0.066406 +v 1.959356 -3.126330 -0.062500 +v 1.959450 -3.126414 -0.062500 +v 1.959370 -3.126356 -0.066406 +v 1.959334 -3.126236 -0.060547 +v 1.959510 -3.126417 -0.029297 +v 1.959361 -3.126342 -0.019531 +v 1.959394 -3.126385 -0.013672 +v 1.959382 -3.126372 -0.015625 +v 1.959620 -3.126390 -0.007812 +v 1.959460 -3.126416 -0.005859 +v 1.959690 -3.126359 -0.003906 +v 1.959505 -3.126418 -0.001953 +v 1.959423 -3.126404 -0.997070 +v 1.959358 -3.125932 -0.999023 +v 1.959370 -3.126356 -0.996094 +v 1.959482 -3.126418 -0.996094 +v 1.959336 -3.126256 -0.993164 +v 1.959352 -3.126321 -0.992188 +v 1.959483 -3.126418 -0.989258 +v 1.959424 -3.126405 -0.990234 +v 1.959417 -3.126401 -0.982422 +v 1.959427 -3.126406 -0.969727 +v 1.959361 -3.126341 -0.940430 +v 1.959412 -3.126399 -0.938477 +v 1.959368 -3.126354 -0.938477 +v 1.959412 -3.126399 -0.061523 +v 1.959368 -3.126354 -0.061523 +v 1.959361 -3.126341 -0.059570 +v 1.959427 -3.126406 -0.030273 +v 1.959417 -3.126401 -0.017578 +v 1.959483 -3.126418 -0.010742 +v 1.959424 -3.126405 -0.009766 +v 1.959336 -3.126256 -0.006836 +v 1.959370 -3.126356 -0.003906 +v 1.959352 -3.126321 -0.007812 +v 1.959482 -3.126418 -0.003906 +v 1.959423 -3.126404 -0.002930 +v 1.959358 -3.125932 -0.000977 +v 1.959369 -3.126356 -0.999512 +v 1.959340 -3.126278 -0.998535 +v 1.959334 -3.126231 -0.998047 +v 1.959375 -3.126364 -0.993652 +v 1.959393 -3.126384 -0.993164 +v 1.959441 -3.126411 -0.992188 +v 1.959334 -3.126232 -0.991211 +v 1.959387 -3.126379 -0.988770 +v 1.959387 -3.126379 -0.011230 +v 1.959441 -3.126411 -0.007812 +v 1.959334 -3.126232 -0.008789 +v 1.959393 -3.126384 -0.006836 +v 1.959375 -3.126364 -0.006348 +v 1.959334 -3.126231 -0.001953 +v 1.959340 -3.126278 -0.001465 +v 1.959369 -3.126356 -0.000488 +vn -0.113689 0.993516 0.000000 +vn -0.113689 0.993516 0.000000 +vn -0.335181 0.942154 0.000000 +vn -0.335181 0.942154 0.000000 +vn -0.535435 0.844577 0.000000 +vn -0.535435 0.844577 0.000000 +vn -0.706673 0.707540 0.000000 +vn -0.706673 0.707540 0.000000 +vn -0.843913 0.536480 0.000000 +vn -0.843913 0.536480 0.000000 +vn -0.941730 0.336370 0.000000 +vn -0.941730 0.336370 0.000000 +vn -0.985095 0.172013 0.000000 +vn -0.985095 0.172013 0.000000 +vn -0.998345 0.057503 0.000000 +vn -0.998345 0.057503 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 -0.000000 -1.000000 +vn -0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.993516 0.113689 0.000000 +vn 0.993516 0.113689 0.000000 +vn 0.942154 0.335181 0.000000 +vn 0.942154 0.335181 0.000000 +vn 0.844577 0.535434 0.000000 +vn 0.844577 0.535434 0.000000 +vn 0.707540 0.706674 0.000000 +vn 0.707540 0.706674 0.000000 +vn 0.536480 0.843913 0.000000 +vn 0.536480 0.843913 0.000000 +vn 0.336370 0.941730 0.000000 +vn 0.336370 0.941730 0.000000 +vn 0.172013 0.985095 0.000000 +vn 0.172013 0.985095 0.000000 +vn 0.057504 0.998345 0.000000 +vn 0.057504 0.998345 0.000000 +vn -0.993516 -0.113689 0.000000 +vn -0.993516 -0.113689 -0.000000 +vn -0.942154 -0.335181 -0.000000 +vn -0.942154 -0.335181 0.000000 +vn -0.844577 -0.535435 -0.000000 +vn -0.844577 -0.535435 0.000000 +vn -0.707540 -0.706673 -0.000000 +vn -0.707540 -0.706673 0.000000 +vn -0.536480 -0.843913 -0.000000 +vn -0.536480 -0.843913 0.000000 +vn -0.336370 -0.941730 -0.000000 +vn -0.336370 -0.941730 0.000000 +vn -0.172014 -0.985094 -0.000000 +vn -0.172014 -0.985094 0.000000 +vn -0.057497 -0.998346 -0.000000 +vn -0.057497 -0.998346 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.729537 -0.683941 0.000000 +vn 0.729537 -0.683941 0.000000 +vn 0.113687 -0.993517 0.000000 +vn 0.113687 -0.993517 0.000000 +vn 0.335179 -0.942155 0.000000 +vn 0.335179 -0.942155 0.000000 +vn 0.535435 -0.844576 0.000000 +vn 0.535435 -0.844576 0.000000 +vn 0.706674 -0.707540 0.000000 +vn 0.706674 -0.707540 0.000000 +vn 0.843913 -0.536480 0.000000 +vn 0.843913 -0.536480 0.000000 +vn 0.941730 -0.336370 0.000000 +vn 0.941730 -0.336370 0.000000 +vn 0.985095 -0.172010 0.000000 +vn 0.985095 -0.172010 0.000000 +vn 0.998345 -0.057504 0.000000 +vn 0.998345 -0.057504 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.993404 -0.114669 0.000000 +vn 0.993404 -0.114669 0.000000 +vn 0.941218 -0.337799 0.000000 +vn 0.941218 -0.337799 0.000000 +vn 0.837782 -0.546006 0.000000 +vn 0.837782 -0.546006 0.000000 +vn 0.691968 -0.721929 0.000000 +vn 0.691968 -0.721929 0.000000 +vn 0.524122 -0.851643 0.000000 +vn 0.524122 -0.851643 0.000000 +vn 0.336169 -0.941802 0.000000 +vn 0.336169 -0.941802 0.000000 +vn 0.176556 -0.984291 0.000000 +vn 0.176556 -0.984291 0.000000 +vn 0.058907 -0.998263 0.000000 +vn 0.058907 -0.998263 0.000000 +vn 0.098596 0.995127 0.000000 +vn 0.098596 0.995127 0.000000 +vn 0.320348 0.947300 0.000000 +vn 0.320348 0.947300 0.000000 +vn 0.515784 0.856719 0.000000 +vn 0.515784 0.856719 0.000000 +vn 0.683160 0.730269 0.000000 +vn 0.683160 0.730269 0.000000 +vn 0.820890 0.571086 0.000000 +vn 0.820890 0.571086 0.000000 +vn 0.920757 0.390137 0.000000 +vn 0.920757 0.390137 0.000000 +vn 0.976392 0.216007 0.000000 +vn 0.976392 0.216007 0.000000 +vn 0.998213 0.059762 0.000000 +vn 0.998213 0.059762 0.000000 +vn -0.992743 0.120259 0.000000 +vn -0.992743 0.120259 0.000000 +vn -0.935017 0.354602 0.000000 +vn -0.935017 0.354602 0.000000 +vn -0.826924 0.562314 0.000000 +vn -0.826924 0.562314 0.000000 +vn -0.679822 0.733378 0.000000 +vn -0.679822 0.733378 0.000000 +vn -0.503150 0.864199 0.000000 +vn -0.503150 0.864199 0.000000 +vn -0.308867 0.951105 0.000000 +vn -0.308867 0.951105 0.000000 +vn -0.104467 0.994528 0.000000 +vn -0.104467 0.994528 0.000000 +vn -0.119152 -0.992876 0.000000 +vn -0.119152 -0.992876 -0.000000 +vn -0.346496 -0.938052 -0.000000 +vn -0.346496 -0.938052 0.000000 +vn -0.546626 -0.837377 -0.000000 +vn -0.546626 -0.837377 0.000000 +vn -0.715022 -0.699102 -0.000000 +vn -0.715022 -0.699102 0.000000 +vn -0.849618 -0.527399 -0.000000 +vn -0.849618 -0.527399 0.000000 +vn -0.944031 -0.329857 -0.000000 +vn -0.944031 -0.329857 0.000000 +vn -0.993585 -0.113089 -0.000000 +vn -0.993585 -0.113089 0.000000 +vn 0.956206 -0.292695 0.000000 +vn 0.956206 -0.292695 0.000000 +vn 0.876827 -0.480807 0.000000 +vn 0.876827 -0.480807 0.000000 +vn 0.761172 -0.648550 0.000000 +vn 0.761172 -0.648550 0.000000 +vn 0.614128 -0.789206 0.000000 +vn 0.614128 -0.789206 0.000000 +vn 0.453218 -0.891400 0.000000 +vn 0.453218 -0.891400 0.000000 +vn 0.294300 -0.955713 0.000000 +vn 0.294300 -0.955713 0.000000 +vn 0.135392 -0.990792 0.000000 +vn 0.135392 -0.990792 0.000000 +vn 0.963196 -0.268800 0.000000 +vn 0.963196 -0.268800 0.000000 +vn -0.041632 -0.999133 0.000000 +vn -0.041632 -0.999133 -0.000000 +vn -0.232627 -0.972566 -0.000000 +vn -0.232627 -0.972566 0.000000 +vn -0.413981 -0.910286 -0.000000 +vn -0.413981 -0.910286 0.000000 +vn -0.582011 -0.813181 -0.000000 +vn -0.582011 -0.813181 0.000000 +vn -0.722397 -0.691479 -0.000000 +vn -0.722397 -0.691479 0.000000 +vn -0.834045 -0.551696 -0.000000 +vn -0.834045 -0.551696 0.000000 +vn -0.920327 -0.391149 -0.000000 +vn -0.920327 -0.391149 0.000000 +vn -0.969706 -0.244273 -0.000000 +vn -0.969706 -0.244273 0.000000 +vn -0.992812 -0.119686 -0.000000 +vn -0.992812 -0.119686 0.000000 +vn 0.997726 0.067396 0.000000 +vn 0.997726 0.067396 0.000000 +vn 0.999003 -0.044640 0.000000 +vn 0.999003 -0.044640 0.000000 +vn 0.991450 -0.130490 0.000000 +vn 0.991450 -0.130490 0.000000 +vn -0.998184 0.060235 0.000000 +vn -0.998184 0.060235 0.000000 +vn -0.974327 0.225136 0.000000 +vn -0.974327 0.225136 0.000000 +vn -0.907436 0.420190 0.000000 +vn -0.907436 0.420190 0.000000 +vn -0.809480 0.587148 0.000000 +vn -0.809480 0.587148 0.000000 +vn -0.705597 0.708613 0.000000 +vn -0.705597 0.708613 0.000000 +vn -0.627222 0.778841 0.000000 +vn -0.627222 0.778841 0.000000 +vn 0.120679 0.992692 0.000000 +vn 0.120679 0.992692 0.000000 +vn 0.350819 0.936443 0.000000 +vn 0.350819 0.936443 0.000000 +vn 0.568244 0.822860 0.000000 +vn 0.568244 0.822860 0.000000 +vn 0.752376 0.658734 0.000000 +vn 0.752376 0.658734 0.000000 +vn 0.870613 0.491969 0.000000 +vn 0.870613 0.491969 0.000000 +vn 0.937972 0.346711 0.000000 +vn 0.937972 0.346711 0.000000 +vn -0.664693 0.747117 0.000000 +vn -0.664693 0.747117 0.000000 +vn -0.986348 0.164674 0.000000 +vn -0.986348 0.164674 0.000000 +vn -0.935067 0.354471 0.000000 +vn -0.935067 0.354471 0.000000 +vn -0.842445 0.538782 0.000000 +vn -0.842445 0.538782 0.000000 +vn -0.709872 0.704330 0.000000 +vn -0.709872 0.704330 0.000000 +vn -0.544335 0.838868 0.000000 +vn -0.544335 0.838868 0.000000 +vn -0.357319 0.933982 0.000000 +vn -0.357319 0.933982 0.000000 +vn -0.185362 0.982670 0.000000 +vn -0.185362 0.982670 0.000000 +vn -0.039262 0.999229 0.000000 +vn -0.039262 0.999229 0.000000 +vn 0.979393 -0.201965 0.000000 +vn 0.999205 -0.039873 0.000266 +vn -0.759145 0.650921 0.000000 +vn -0.759145 0.650921 0.000000 +vn 0.999205 -0.039873 -0.000266 +vn -0.728851 0.684670 0.002042 +vn -0.632436 0.774612 0.000602 +vn -0.728851 0.684670 -0.002042 +vn 0.999829 0.018492 0.000191 +vn 0.999829 0.018492 -0.000191 +vn 0.222318 0.974974 0.000000 +vn -0.379799 0.925069 0.000000 +vn 0.997076 -0.076396 0.001530 +vn 0.925490 -0.378770 -0.001292 +vn 0.967985 -0.251009 -0.000466 +vn 0.999896 -0.014438 0.000206 +vn 0.746493 0.665393 -0.000045 +vn 0.140881 0.990026 -0.000093 +vn 0.746493 0.665393 0.000045 +vn 0.925490 -0.378770 0.001292 +vn 0.967985 -0.251009 0.000466 +vn 0.999896 -0.014438 -0.000206 +vn 0.997076 -0.076396 -0.001530 +vn -0.610816 0.791750 -0.005910 +vn -0.510427 0.859913 0.003682 +vn -0.772320 0.635181 -0.008208 +vn 0.834618 0.550830 0.000243 +vn 0.949247 0.314531 -0.000241 +vn -0.618424 0.785845 0.000404 +vn -0.632436 0.774612 0.000903 +vn -0.379799 0.925069 -0.000225 +vn -0.078433 0.996919 0.000298 +vn 0.222318 0.974974 -0.000322 +vn 0.573716 0.819055 0.000066 +vn 0.968578 0.248710 -0.000166 +vn 0.999735 -0.022996 0.000370 +vn 0.828680 0.559722 -0.000365 +vn -0.636873 0.770969 0.000000 +vn -0.471587 0.881818 -0.001524 +vn -0.636873 0.770969 0.000000 +vn -0.632436 0.774612 -0.000903 +vn -0.618424 0.785845 -0.000404 +vn -0.379799 0.925069 0.000225 +vn -0.078433 0.996919 -0.000298 +vn 0.222318 0.974974 0.000322 +vn 0.573716 0.819055 -0.000066 +vn 0.968578 0.248710 0.000166 +vn 0.949247 0.314531 0.000241 +vn 0.834618 0.550830 -0.000243 +vn -0.772320 0.635181 0.008208 +vn -0.510427 0.859913 -0.003682 +vn -0.610816 0.791750 0.005910 +vn -0.284970 0.958536 -0.000438 +vn 0.455339 0.890318 0.000478 +vn 0.994939 -0.100463 0.001846 +vn -0.757249 0.653117 -0.003522 +vn 0.197406 0.980322 -0.000244 +vn -0.738780 0.673946 0.000569 +vn -0.016701 0.999860 0.001356 +vn 0.530462 0.847709 -0.000187 +vn 0.093805 0.995590 0.000603 +vn -0.125542 0.992088 -0.000131 +vn 0.525978 0.850498 -0.000236 +vn 0.049454 0.998776 0.000101 +vn 0.998639 0.052148 -0.000872 +vn -0.632436 0.774612 -0.001271 +vn 0.222318 0.974974 -0.000086 +vn -0.379799 0.925069 0.000045 +vn -0.402640 0.915359 -0.000039 +vn 0.160235 0.987079 0.000089 +vn 0.129466 0.991584 0.000052 +vn -0.561845 0.827242 0.000927 +vn -0.363502 0.931593 0.000782 +vn -0.068611 0.997643 -0.000655 +vn -0.426702 0.904393 0.000000 +vn 0.035547 0.999368 0.000000 +vn 0.035547 0.999368 0.000000 +vn -0.426702 0.904393 0.000000 +vn -0.426702 0.904393 0.000000 +vn -0.352240 0.935910 -0.000306 +vn -0.464818 0.885405 0.001452 +vn 0.093618 0.995608 -0.001099 +vn -0.417357 0.908743 -0.000352 +vn 0.016930 0.999857 0.000352 +vn 0.998639 0.052148 0.000872 +vn -0.125542 0.992088 0.000131 +vn 0.525978 0.850498 0.000236 +vn 0.049454 0.998776 -0.000101 +vn 0.530462 0.847709 0.000187 +vn 0.093805 0.995590 -0.000603 +vn -0.738780 0.673946 -0.000569 +vn 0.197406 0.980322 0.000244 +vn -0.757249 0.653117 0.003522 +vn -0.016701 0.999860 -0.001356 +vn 0.994939 -0.100463 -0.001846 +vn 0.455339 0.890318 -0.000478 +vn -0.284970 0.958536 0.000438 +vn -0.747969 0.662469 0.040961 +vn 0.999634 -0.026976 0.002062 +vn 0.951121 -0.308692 -0.008895 +vn 0.971183 -0.238297 -0.004284 +vn -0.707692 0.706008 0.026920 +vn -0.732732 0.680432 0.010761 +vn -0.219497 0.975606 -0.003780 +vn 0.482142 0.876093 0.000262 +vn 0.927885 0.372867 -0.000153 +vn 0.507674 0.861549 0.001016 +vn 0.888404 0.459053 -0.002862 +vn -0.067776 0.997700 -0.001358 +vn 0.996481 -0.083819 -0.000564 +vn 0.867519 0.497404 -0.000225 +vn 0.264985 0.964252 -0.000970 +vn 0.306822 0.951767 0.000214 +vn 0.965550 0.260216 0.000370 +vn 0.559478 0.828845 -0.000358 +vn 0.967200 0.254016 0.000250 +vn 0.779194 0.626783 -0.000204 +vn 0.444071 0.895990 0.001670 +vn 0.343466 0.939165 -0.000301 +vn 0.795558 0.605877 0.000261 +vn -0.078433 0.996919 -0.001114 +vn -0.199604 0.979877 0.000206 +vn 0.573715 0.819053 0.001714 +vn 0.353255 0.935527 -0.000202 +vn -0.008442 0.999964 -0.000119 +vn 0.708155 0.706057 -0.000217 +vn 0.732808 0.680435 0.000108 +vn 0.022657 0.999743 0.000244 +vn 0.093180 0.995649 -0.000121 +vn 0.856657 0.515887 0.000132 +vn 0.996250 0.086522 0.000103 +vn 0.024499 0.999700 0.000265 +vn 0.716980 0.697093 -0.000102 +vn 0.218665 0.975800 0.000194 +vn 0.804979 0.593304 -0.000239 +vn 0.269523 0.962994 -0.000215 +vn 0.752036 0.659122 0.000370 +vn 0.353255 0.935527 0.000202 +vn -0.199604 0.979877 -0.000206 +vn -0.078433 0.996919 0.001114 +vn 0.573715 0.819053 -0.001714 +vn 0.343466 0.939165 0.000301 +vn 0.795558 0.605877 -0.000261 +vn 0.444071 0.895990 -0.001670 +vn 0.967200 0.254016 -0.000250 +vn 0.559478 0.828845 0.000358 +vn 0.965550 0.260216 -0.000370 +vn 0.779194 0.626783 0.000204 +vn 0.264985 0.964252 0.000970 +vn 0.306822 0.951767 -0.000214 +vn 0.867519 0.497404 0.000225 +vn 0.996481 -0.083819 0.000564 +vn -0.067776 0.997700 0.001358 +vn 0.888404 0.459053 0.002862 +vn 0.507674 0.861549 -0.001016 +vn 0.927885 0.372867 0.000153 +vn 0.482142 0.876093 -0.000262 +vn -0.707692 0.706008 -0.026920 +vn -0.219497 0.975606 0.003780 +vn -0.732732 0.680432 -0.010761 +vn 0.971183 -0.238297 0.004284 +vn 0.951121 -0.308692 0.008895 +vn 0.999634 -0.026976 -0.002062 +vn -0.747969 0.662469 -0.040961 +vn -0.524581 0.850932 -0.027013 +vn -0.607350 0.793712 0.033869 +vn -0.606988 0.793240 -0.048331 +vn -0.503411 0.863537 0.029683 +vn -0.770711 0.633680 -0.066737 +vn 0.914349 0.404914 -0.003253 +vn 0.337578 0.941289 -0.004062 +vn 0.945461 0.325713 0.003854 +vn 0.973690 0.227877 -0.000534 +vn 0.688923 0.724834 0.000482 +vn -0.530122 0.847503 -0.026628 +vn -0.326624 0.945131 0.006621 +vn -0.610481 0.791317 0.033623 +vn 0.996723 -0.080881 0.001047 +vn 0.666708 0.745311 0.003328 +vn -0.157395 0.987524 -0.004833 +vn -0.057838 0.998326 0.000822 +vn 0.695602 0.718284 -0.014340 +vn 0.995585 0.093664 0.006166 +vn 0.999993 0.000937 -0.003534 +vn 0.695671 0.718356 0.002404 +vn 0.862985 0.505230 -0.000469 +vn 0.920554 0.390602 0.003306 +vn 0.674975 0.737840 -0.000524 +vn 0.638358 0.769740 0.000602 +vn 0.957979 0.286839 0.000242 +vn 0.344110 0.938929 -0.000712 +vn 0.250189 0.968197 0.000610 +vn 0.759816 0.650138 0.000243 +vn 0.795558 0.605877 -0.000477 +vn 1.000000 -0.000982 0.000067 +vn 0.998240 -0.059277 -0.001999 +vn 0.879844 0.475262 -0.000105 +vn 0.849141 0.528164 0.001417 +vn -0.080435 0.996759 0.000881 +vn 0.715151 0.698969 -0.000575 +vn -0.006991 0.999976 -0.000102 +vn 0.667195 0.744883 0.000107 +vn 0.795558 0.605877 0.000477 +vn 0.759816 0.650138 -0.000243 +vn 0.250189 0.968197 -0.000610 +vn 0.344110 0.938929 0.000712 +vn 0.862985 0.505230 0.000469 +vn 0.638358 0.769740 -0.000602 +vn 0.957979 0.286839 -0.000242 +vn 0.666708 0.745311 -0.003328 +vn -0.057838 0.998326 -0.000822 +vn -0.157395 0.987524 0.004833 +vn 0.920554 0.390602 -0.003306 +vn 0.674975 0.737840 0.000524 +vn 0.995585 0.093664 -0.006166 +vn 0.695671 0.718356 -0.002404 +vn 0.999993 0.000937 0.003534 +vn 0.695602 0.718284 0.014340 +vn 0.996723 -0.080881 -0.001047 +vn -0.326624 0.945131 -0.006621 +vn -0.530122 0.847503 0.026628 +vn -0.610481 0.791317 -0.033623 +vn 0.973690 0.227877 0.000534 +vn 0.688923 0.724834 -0.000482 +vn 0.914349 0.404914 0.003253 +vn 0.945461 0.325713 -0.003854 +vn 0.337578 0.941289 0.004062 +vn -0.770711 0.633680 0.066737 +vn -0.503411 0.863537 -0.029683 +vn -0.606988 0.793240 0.048331 +vn -0.524581 0.850932 0.027013 +vn -0.607350 0.793712 -0.033869 +vn -0.090577 0.995664 -0.021186 +vn 0.999640 0.026823 0.000060 +vn 0.977363 -0.211572 -0.000008 +vn 0.482566 0.875699 -0.016796 +vn -0.270961 0.962133 0.029663 +vn 0.482630 0.875814 0.004252 +vn -0.271078 0.962549 -0.003986 +vn 0.993578 -0.112143 0.015063 +vn 0.999745 -0.014458 -0.017317 +vn 0.035608 0.999302 0.011267 +vn -0.756983 0.652780 -0.029246 +vn 0.298625 0.954369 -0.001588 +vn -0.738748 0.673972 0.003632 +vn 0.945398 0.325691 -0.012154 +vn 0.854203 0.519872 0.008378 +vn 0.722223 0.691660 -0.000610 +vn 0.337570 0.941268 0.007846 +vn 0.185195 0.982702 0.000433 +vn -0.110151 0.993692 -0.021044 +vn 0.646303 0.763081 -0.000037 +vn -0.284847 0.958122 0.029385 +vn 0.455275 0.890192 -0.016815 +vn 0.136637 0.990621 0.000050 +vn 0.967279 0.253713 -0.000619 +vn 0.765101 0.643879 0.006348 +vn 0.726804 0.686844 0.001166 +vn -0.056550 0.998398 -0.001974 +vn 0.666647 0.745243 -0.013927 +vn -0.157361 0.987314 0.021179 +vn 0.930188 0.366829 -0.013702 +vn 0.711774 0.702359 -0.008285 +vn 0.710541 0.701143 0.059415 +vn 0.995798 0.088399 -0.023926 +vn 0.999922 0.000937 0.012427 +vn 0.666647 0.745243 0.013927 +vn -0.056550 0.998398 0.001974 +vn -0.157361 0.987314 -0.021179 +vn 0.999922 0.000937 -0.012427 +vn 0.711774 0.702359 0.008285 +vn 0.710541 0.701143 -0.059415 +vn 0.995798 0.088399 0.023926 +vn 0.967279 0.253713 0.000619 +vn 0.765101 0.643879 -0.006348 +vn 0.726804 0.686844 -0.001166 +vn 0.930188 0.366829 0.013702 +vn 0.455275 0.890192 0.016815 +vn -0.284847 0.958122 -0.029385 +vn 0.646303 0.763081 0.000037 +vn 0.136637 0.990621 -0.000050 +vn -0.110151 0.993692 0.021044 +vn 0.854203 0.519872 -0.008378 +vn 0.185195 0.982702 -0.000433 +vn 0.722223 0.691660 0.000610 +vn 0.945398 0.325691 0.012154 +vn 0.337570 0.941268 -0.007846 +vn 0.298625 0.954369 0.001588 +vn -0.756983 0.652780 0.029246 +vn -0.738748 0.673972 -0.003632 +vn 0.035608 0.999302 -0.011267 +vn 0.993578 -0.112143 -0.015063 +vn 0.999745 -0.014458 0.017317 +vn 0.482630 0.875814 -0.004252 +vn -0.271078 0.962549 0.003986 +vn -0.090577 0.995664 0.021186 +vn 0.482566 0.875699 0.016796 +vn -0.270961 0.962133 -0.029663 +vn 0.999640 0.026823 -0.000060 +vn 0.977363 -0.211572 0.000008 +vn 0.752665 0.188209 0.630930 +vn -0.040845 0.998105 0.046014 +vn 0.992432 -0.080978 0.092312 +vn 0.704660 0.708674 -0.035155 +vn 0.999493 -0.009438 0.030395 +vn 0.840287 0.541800 0.019234 +vn 0.983575 -0.178065 -0.029542 +vn 0.736261 0.674671 0.052341 +vn 0.999442 -0.029039 0.016486 +vn 0.736136 0.674556 -0.055481 +vn 0.940186 0.340659 -0.000981 +vn 0.522996 0.852333 0.001655 +vn 0.914130 0.405242 0.012057 +vn 0.914059 0.405210 -0.017326 +vn 0.123012 0.992133 -0.023262 +vn 0.568966 0.822260 0.012874 +vn -0.120370 0.992719 -0.004473 +vn 0.711712 0.702298 -0.015637 +vn -0.120304 0.992179 0.033290 +vn 0.871464 0.490420 0.006143 +vn 0.710899 0.701496 -0.050257 +vn 0.999686 -0.014457 0.020476 +vn 0.995582 -0.093817 -0.003884 +vn 0.912364 0.409355 0.004543 +vn 0.856033 0.516776 0.012219 +vn 0.384502 0.923123 0.001364 +vn 0.901213 0.433375 -0.001366 +vn 0.342810 0.939370 -0.008101 +vn 0.384502 0.923123 -0.001364 +vn 0.342810 0.939370 0.008101 +vn 0.901213 0.433375 0.001366 +vn -0.120370 0.992719 0.004473 +vn 0.912364 0.409355 -0.004543 +vn 0.856033 0.516776 -0.012219 +vn 0.871464 0.490420 -0.006143 +vn 0.710899 0.701496 0.050257 +vn 0.995582 -0.093817 0.003884 +vn 0.999686 -0.014457 -0.020476 +vn 0.123012 0.992133 0.023262 +vn 0.711712 0.702298 0.015637 +vn -0.120304 0.992179 -0.033290 +vn 0.914130 0.405242 -0.012057 +vn 0.940186 0.340659 0.000981 +vn 0.522996 0.852333 -0.001655 +vn 0.568966 0.822260 -0.012874 +vn 0.914059 0.405210 0.017326 +vn 0.736261 0.674671 -0.052341 +vn 0.840287 0.541800 -0.019234 +vn 0.983575 -0.178065 0.029542 +vn 0.999442 -0.029039 -0.016486 +vn 0.736136 0.674556 0.055481 +vn 0.752665 0.188209 -0.630930 +vn -0.040845 0.998105 -0.046014 +vn 0.704660 0.708674 0.035155 +vn 0.999493 -0.009438 -0.030395 +vn 0.992432 -0.080978 -0.092312 +vn -0.167152 0.985931 0.000000 +vn -0.167152 0.985931 0.000000 +vn -0.381150 0.924513 0.000000 +vn -0.381150 0.924513 0.000000 +vn -0.572897 0.819627 0.000000 +vn -0.572897 0.819627 0.000000 +vn -0.738505 0.674248 0.000000 +vn -0.738505 0.674248 0.000000 +vn -0.873179 0.487399 0.000000 +vn -0.873179 0.487399 0.000000 +vn -0.950127 0.311863 0.000000 +vn -0.950127 0.311863 0.000000 +vn -0.985460 0.169908 0.000000 +vn -0.985460 0.169908 0.000000 +vn -0.994299 0.106632 0.000000 +vn -0.994299 0.106632 0.000000 +vn -0.942977 0.332858 0.000000 +vn -0.942977 0.332858 0.000000 +vn -0.851078 0.525040 0.000000 +vn -0.851078 0.525040 0.000000 +vn -0.731588 0.681747 0.000000 +vn -0.731588 0.681747 0.000000 +vn -0.590814 0.806808 0.000000 +vn -0.590814 0.806808 0.000000 +vn -0.429276 0.903173 0.000000 +vn -0.429276 0.903173 0.000000 +vn -0.261075 0.965319 0.000000 +vn -0.261075 0.965319 0.000000 +vn -0.090359 0.995909 0.000000 +vn -0.090359 0.995909 0.000000 +vn 0.987038 0.160489 0.000000 +vn 0.987038 0.160489 0.000000 +vn 0.922746 0.385409 0.000000 +vn 0.922746 0.385409 0.000000 +vn 0.814857 0.579662 0.000000 +vn 0.814857 0.579662 0.000000 +vn 0.671269 0.741214 0.000000 +vn 0.671269 0.741214 0.000000 +vn 0.496141 0.868242 0.000000 +vn 0.496141 0.868242 0.000000 +vn 0.302314 0.953208 0.000000 +vn 0.302314 0.953208 0.000000 +vn 0.131408 0.991328 0.000000 +vn 0.131408 0.991328 0.000000 +vn -0.007069 0.999975 0.000000 +vn -0.007069 0.999975 0.000000 +vn 0.129745 0.991547 0.000000 +vn 0.129745 0.991547 0.000000 +vn 0.355017 0.934860 0.000000 +vn 0.355017 0.934860 0.000000 +vn 0.550769 0.834657 0.000000 +vn 0.550769 0.834657 0.000000 +vn 0.715260 0.698858 0.000000 +vn 0.715260 0.698858 0.000000 +vn 0.847079 0.531466 0.000000 +vn 0.847079 0.531466 0.000000 +vn 0.938745 0.344612 0.000000 +vn 0.938745 0.344612 0.000000 +vn 0.982318 0.187219 0.000000 +vn 0.982318 0.187219 0.000000 +vn 0.997643 0.068618 0.000000 +vn 0.997643 0.068618 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.992166 -0.124923 0.000000 +vn 0.992166 -0.124923 0.000000 +vn 0.939364 -0.342921 0.000000 +vn 0.939364 -0.342921 0.000000 +vn 0.873515 -0.486797 0.000000 +vn 0.873515 -0.486797 0.000000 +vn 0.814125 -0.580689 0.000000 +vn 0.814125 -0.580689 0.000000 +vn 0.848623 -0.528998 0.000000 +vn 0.848623 -0.528998 0.000000 +vn 0.938564 -0.345106 0.000000 +vn 0.938564 -0.345106 0.000000 +vn 0.982717 -0.185117 0.000000 +vn 0.982717 -0.185117 0.000000 +vn 0.999315 -0.037015 0.000000 +vn 0.999315 -0.037015 0.000000 +vn 0.750520 -0.660847 0.000000 +vn 0.750520 -0.660847 0.000000 +vn 0.660848 -0.750520 0.000000 +vn 0.660848 -0.750520 0.000000 +vn 0.650476 -0.759527 0.000000 +vn 0.650476 -0.759527 0.000000 +vn 0.724699 -0.689065 0.000000 +vn 0.724699 -0.689065 0.000000 +f 1//1 2//1 3//1 +f 1//2 3//2 4//2 +f 5//3 4//3 6//3 +f 5//4 1//4 4//4 +f 7//5 6//5 8//5 +f 7//6 5//6 6//6 +f 9//7 8//7 10//7 +f 9//8 7//8 8//8 +f 11//9 10//9 12//9 +f 11//10 9//10 10//10 +f 13//11 12//11 14//11 +f 13//12 11//12 12//12 +f 15//13 14//13 16//13 +f 15//14 13//14 14//14 +f 17//15 16//15 18//15 +f 17//16 15//16 16//16 +f 2//17 19//17 20//17 +f 2//18 20//18 3//18 +f 21//19 17//19 18//19 +f 21//20 18//20 22//20 +f 23//21 24//21 25//21 +f 26//22 27//22 28//22 +f 29//23 28//23 24//23 +f 29//24 24//24 23//24 +f 29//25 26//25 28//25 +f 21//26 29//26 30//26 +f 21//27 26//27 29//27 +f 31//28 32//28 30//28 +f 33//29 30//29 32//29 +f 34//30 31//30 30//30 +f 35//31 30//31 33//31 +f 36//32 34//32 30//32 +f 37//33 30//33 35//33 +f 38//34 30//34 37//34 +f 39//35 36//35 30//35 +f 40//36 21//36 30//36 +f 40//37 30//37 38//37 +f 41//38 42//38 43//38 +f 44//39 45//39 42//39 +f 44//40 42//40 41//40 +f 46//41 41//41 43//41 +f 46//42 43//42 47//42 +f 48//43 45//43 44//43 +f 49//44 45//44 48//44 +f 49//45 40//45 45//45 +f 49//46 21//46 40//46 +f 50//47 46//47 47//47 +f 50//48 47//48 51//48 +f 50//49 51//49 52//49 +f 53//50 21//50 49//50 +f 54//51 55//51 56//51 +f 54//52 50//52 52//52 +f 54//53 52//53 55//53 +f 57//54 54//54 56//54 +f 57//55 56//55 58//55 +f 59//56 57//56 58//56 +f 59//57 58//57 60//57 +f 61//58 60//58 62//58 +f 61//59 59//59 60//59 +f 63//60 21//60 53//60 +f 64//61 21//61 63//61 +f 9//62 11//62 13//62 +f 9//63 13//63 15//63 +f 65//64 53//64 66//64 +f 65//65 63//65 53//65 +f 67//66 21//66 64//66 +f 68//67 62//67 69//67 +f 68//68 61//68 62//68 +f 70//69 17//69 21//69 +f 70//70 21//70 67//70 +f 71//71 66//71 72//71 +f 71//72 65//72 66//72 +f 73//73 69//73 74//73 +f 73//74 68//74 69//74 +f 75//75 72//75 76//75 +f 75//76 71//76 72//76 +f 77//77 78//77 79//77 +f 77//78 79//78 80//78 +f 77//79 80//79 81//79 +f 77//80 81//80 82//80 +f 77//81 82//81 83//81 +f 77//82 83//82 84//82 +f 77//83 84//83 85//83 +f 77//84 85//84 39//84 +f 77//85 39//85 30//85 +f 86//86 17//86 70//86 +f 87//87 75//87 76//87 +f 88//88 17//88 86//88 +f 89//89 73//89 74//89 +f 90//90 76//90 91//90 +f 90//91 87//91 76//91 +f 7//92 9//92 15//92 +f 92//93 17//93 88//93 +f 93//94 17//94 92//94 +f 94//95 90//95 91//95 +f 94//96 91//96 95//96 +f 96//97 97//97 98//97 +f 99//98 94//98 95//98 +f 100//99 98//99 97//99 +f 101//100 99//100 95//100 +f 101//101 102//101 99//101 +f 103//102 17//102 93//102 +f 104//103 102//103 101//103 +f 105//104 100//104 97//104 +f 105//105 97//105 89//105 +f 1//106 5//106 7//106 +f 1//107 7//107 15//107 +f 106//108 104//108 101//108 +f 106//109 107//109 104//109 +f 108//110 109//110 110//110 +f 111//111 112//111 113//111 +f 114//112 108//112 110//112 +f 2//113 15//113 17//113 +f 2//114 17//114 103//114 +f 2//115 103//115 115//115 +f 2//116 1//116 15//116 +f 116//117 78//117 77//117 +f 116//118 89//118 74//118 +f 116//119 105//119 89//119 +f 116//120 74//120 78//120 +f 117//121 110//121 107//121 +f 117//122 107//122 106//122 +f 117//123 114//123 110//123 +f 118//124 114//124 117//124 +f 119//125 2//125 115//125 +f 120//126 118//126 117//126 +f 121//127 120//127 117//127 +f 122//128 123//128 124//128 +f 125//129 2//129 119//129 +f 126//130 123//130 122//130 +f 127//131 121//131 117//131 +f 128//132 123//132 126//132 +f 129//133 127//133 117//133 +f 130//134 129//134 117//134 +f 131//135 117//135 123//135 +f 131//136 128//136 132//136 +f 131//137 123//137 128//137 +f 133//138 130//138 117//138 +f 134//139 117//139 131//139 +f 135//140 133//140 117//140 +f 136//141 135//141 117//141 +f 136//142 117//142 134//142 +f 137//143 2//143 125//143 +f 138//144 139//144 140//144 +f 141//145 77//145 112//145 +f 141//146 111//146 139//146 +f 141//147 139//147 138//147 +f 141//148 112//148 111//148 +f 142//149 2//149 137//149 +f 143//150 77//150 141//150 +f 143//151 116//151 77//151 +f 143//152 144//152 145//152 +f 143//153 145//153 116//153 +f 146//154 2//154 142//154 +f 147//155 144//155 143//155 +f 147//156 148//156 149//156 +f 147//157 149//157 150//157 +f 147//158 150//158 151//158 +f 147//159 151//159 144//159 +f 19//160 2//160 146//160 +f 19//161 146//161 152//161 +f 19//162 152//162 153//162 +f 19//163 153//163 154//163 +f 19//164 154//164 155//164 +f 19//165 155//165 156//165 +f 19//166 156//166 157//166 +f 158//167 148//167 147//167 +f 158//168 19//168 157//168 +f 158//169 157//169 159//169 +f 158//170 159//170 148//170 +f 160//171 19//171 158//171 +f 161//172 160//172 158//172 +f 162//173 161//173 163//173 +f 162//174 160//174 161//174 +f 164//175 165//175 166//175 +f 164//176 166//176 160//176 +f 164//177 160//177 162//177 +f 167//178 158//178 147//178 +f 168//179 169//179 170//179 +f 171//180 172//180 173//180 +f 173//181 174//181 168//181 +f 168//182 174//182 169//182 +f 172//183 174//183 173//183 +f 174//184 22//184 175//184 +f 172//185 22//185 174//185 +f 176//186 177//186 175//186 +f 175//187 178//187 176//187 +f 177//188 179//188 175//188 +f 175//189 180//189 178//189 +f 179//190 181//190 175//190 +f 175//191 182//191 180//191 +f 175//192 183//192 182//192 +f 181//193 184//193 175//193 +f 22//194 185//194 175//194 +f 175//195 185//195 183//195 +f 186//196 187//196 188//196 +f 189//197 190//197 186//197 +f 186//198 190//198 187//198 +f 187//199 191//199 188//199 +f 188//200 191//200 192//200 +f 189//201 193//201 190//201 +f 189//202 194//202 193//202 +f 185//203 194//203 189//203 +f 22//204 194//204 185//204 +f 191//205 195//205 192//205 +f 192//206 195//206 196//206 +f 196//207 195//207 197//207 +f 22//208 198//208 194//208 +f 199//209 200//209 201//209 +f 195//210 200//210 197//210 +f 197//211 200//211 199//211 +f 200//212 202//212 201//212 +f 201//213 202//213 203//213 +f 202//214 204//214 203//214 +f 203//215 204//215 205//215 +f 205//216 206//216 207//216 +f 204//217 206//217 205//217 +f 22//218 208//218 198//218 +f 22//219 209//219 208//219 +f 12//220 10//220 14//220 +f 14//221 10//221 16//221 +f 198//222 210//222 211//222 +f 208//223 210//223 198//223 +f 22//224 212//224 209//224 +f 207//225 213//225 214//225 +f 206//226 213//226 207//226 +f 18//227 215//227 22//227 +f 22//228 215//228 212//228 +f 211//229 216//229 217//229 +f 210//230 216//230 211//230 +f 214//231 218//231 219//231 +f 213//232 218//232 214//232 +f 217//233 220//233 221//233 +f 216//234 220//234 217//234 +f 222//235 223//235 224//235 +f 224//236 223//236 225//236 +f 225//237 223//237 226//237 +f 226//238 223//238 227//238 +f 227//239 223//239 228//239 +f 228//240 223//240 229//240 +f 229//241 223//241 230//241 +f 230//242 223//242 184//242 +f 184//243 223//243 175//243 +f 18//244 231//244 215//244 +f 220//245 232//245 221//245 +f 18//246 233//246 231//246 +f 218//247 234//247 219//247 +f 221//248 235//248 236//248 +f 232//249 235//249 221//249 +f 10//250 8//250 16//250 +f 18//251 237//251 233//251 +f 18//252 238//252 237//252 +f 235//253 239//253 236//253 +f 236//254 239//254 240//254 +f 241//255 242//255 243//255 +f 239//256 244//256 240//256 +f 243//257 245//257 241//257 +f 244//258 246//258 240//258 +f 247//259 246//259 244//259 +f 18//260 248//260 238//260 +f 247//261 249//261 246//261 +f 245//262 250//262 241//262 +f 241//263 250//263 234//263 +f 6//264 4//264 8//264 +f 8//265 4//265 16//265 +f 249//266 251//266 246//266 +f 252//267 251//267 249//267 +f 253//268 254//268 255//268 +f 256//269 257//269 258//269 +f 254//270 259//270 255//270 +f 16//271 3//271 18//271 +f 18//272 3//272 248//272 +f 248//273 3//273 260//273 +f 4//274 3//274 16//274 +f 222//275 261//275 223//275 +f 234//276 261//276 219//276 +f 250//277 261//277 234//277 +f 219//278 261//278 222//278 +f 255//279 262//279 252//279 +f 252//280 262//280 251//280 +f 259//281 262//281 255//281 +f 259//282 263//282 262//282 +f 3//283 264//283 260//283 +f 263//284 265//284 262//284 +f 265//285 266//285 262//285 +f 267//286 268//286 269//286 +f 3//287 270//287 264//287 +f 267//288 271//288 268//288 +f 266//289 272//289 262//289 +f 267//290 273//290 271//290 +f 272//291 274//291 262//291 +f 274//292 275//292 262//292 +f 262//293 276//293 267//293 +f 273//294 276//294 277//294 +f 267//295 276//295 273//295 +f 275//296 278//296 262//296 +f 262//297 279//297 276//297 +f 278//298 280//298 262//298 +f 280//299 281//299 262//299 +f 262//300 281//300 279//300 +f 3//301 282//301 270//301 +f 283//302 284//302 285//302 +f 223//303 286//303 256//303 +f 257//304 286//304 283//304 +f 283//305 286//305 284//305 +f 256//306 286//306 257//306 +f 3//307 287//307 282//307 +f 223//308 288//308 286//308 +f 261//309 288//309 223//309 +f 289//310 288//310 290//310 +f 290//311 288//311 261//311 +f 3//312 291//312 287//312 +f 289//313 292//313 288//313 +f 293//314 292//314 294//314 +f 294//315 292//315 295//315 +f 295//316 292//316 296//316 +f 296//317 292//317 289//317 +f 3//318 20//318 291//318 +f 291//319 20//319 297//319 +f 297//320 20//320 298//320 +f 298//321 20//321 299//321 +f 299//322 20//322 300//322 +f 300//323 20//323 301//323 +f 301//324 20//324 302//324 +f 293//325 303//325 292//325 +f 20//326 303//326 302//326 +f 302//327 303//327 304//327 +f 304//328 303//328 293//328 +f 20//329 305//329 303//329 +f 305//330 306//330 303//330 +f 306//331 307//331 308//331 +f 305//332 307//332 306//332 +f 309//333 310//333 311//333 +f 311//334 310//334 305//334 +f 305//335 310//335 307//335 +f 303//336 312//336 292//336 +f 161//337 158//337 303//337 +f 161//338 303//338 306//338 +f 163//339 306//339 308//339 +f 163//340 161//340 306//340 +f 162//341 308//341 307//341 +f 162//342 163//342 308//342 +f 164//343 307//343 310//343 +f 164//344 162//344 307//344 +f 165//345 310//345 309//345 +f 165//346 164//346 310//346 +f 166//347 309//347 311//347 +f 166//348 165//348 309//348 +f 160//349 311//349 305//349 +f 160//350 166//350 311//350 +f 19//351 305//351 20//351 +f 19//352 160//352 305//352 +f 26//353 21//353 22//353 +f 26//354 22//354 172//354 +f 27//355 172//355 171//355 +f 27//356 26//356 172//356 +f 28//357 171//357 173//357 +f 28//358 27//358 171//358 +f 24//359 173//359 168//359 +f 24//360 28//360 173//360 +f 25//361 168//361 170//361 +f 25//362 24//362 168//362 +f 23//363 170//363 169//363 +f 23//364 25//364 170//364 +f 29//365 169//365 174//365 +f 29//366 23//366 169//366 +f 30//367 174//367 175//367 +f 30//368 29//368 174//368 +f 158//369 167//369 312//369 +f 158//370 312//370 303//370 +f 77//371 30//371 175//371 +f 77//372 175//372 223//372 +f 167//373 147//373 292//373 +f 167//374 292//374 312//374 +f 112//375 77//375 223//375 +f 112//376 223//376 256//376 +f 113//377 256//377 258//377 +f 113//378 112//378 256//378 +f 111//379 258//379 257//379 +f 111//380 113//380 258//380 +f 139//381 257//381 283//381 +f 139//382 111//382 257//382 +f 140//383 283//383 285//383 +f 140//384 139//384 283//384 +f 138//385 285//385 284//385 +f 138//386 140//386 285//386 +f 141//387 284//387 286//387 +f 141//388 138//388 284//388 +f 143//389 286//389 288//389 +f 143//390 141//390 286//390 +f 147//391 143//391 288//391 +f 147//392 288//392 292//392 +f 56//393 55//393 199//393 +f 56//394 199//394 201//394 +f 40//395 38//395 183//395 +f 40//396 183//396 185//396 +f 45//397 185//397 189//397 +f 45//398 40//398 185//398 +f 42//399 189//399 186//399 +f 42//400 45//400 189//400 +f 43//401 186//401 188//401 +f 43//402 42//402 186//402 +f 47//403 188//403 192//403 +f 47//404 43//404 188//404 +f 51//405 192//405 196//405 +f 51//406 47//406 192//406 +f 52//407 196//407 197//407 +f 52//408 51//408 196//408 +f 55//409 197//409 199//409 +f 55//410 52//410 197//410 +f 36//411 39//411 184//411 +f 36//412 184//412 181//412 +f 34//413 181//413 179//413 +f 34//414 36//414 181//414 +f 31//415 179//415 177//415 +f 31//416 34//416 179//416 +f 32//417 177//417 176//417 +f 32//418 31//418 177//418 +f 33//419 176//419 178//419 +f 33//420 32//420 176//420 +f 35//421 178//421 180//421 +f 35//422 33//422 178//422 +f 37//423 180//423 182//423 +f 37//424 35//424 180//424 +f 38//425 182//425 183//425 +f 38//426 37//426 182//426 +f 80//427 79//427 224//427 +f 80//428 224//428 225//428 +f 81//429 225//429 226//429 +f 81//430 80//430 225//430 +f 82//431 226//431 227//431 +f 82//432 81//432 226//432 +f 83//433 227//433 228//433 +f 83//434 82//434 227//434 +f 84//435 228//435 229//435 +f 84//436 83//436 228//436 +f 85//437 229//437 230//437 +f 85//438 84//438 229//438 +f 39//439 230//439 184//439 +f 39//440 85//440 230//440 +f 58//441 56//441 201//441 +f 58//442 201//442 203//442 +f 60//443 203//443 205//443 +f 60//444 58//444 203//444 +f 62//445 205//445 207//445 +f 62//446 60//446 205//446 +f 69//447 207//447 214//447 +f 69//448 62//448 207//448 +f 74//449 214//449 219//449 +f 74//450 69//450 214//450 +f 78//451 219//451 222//451 +f 78//452 74//452 219//452 +f 79//453 222//453 224//453 +f 79//454 78//454 222//454 +f 103//455 93//455 238//455 +f 103//456 238//456 248//456 +f 115//457 248//457 260//457 +f 115//458 103//458 248//458 +f 119//459 260//459 264//459 +f 119//460 115//460 260//460 +f 125//461 264//461 270//461 +f 125//462 119//462 264//462 +f 137//463 270//463 282//463 +f 137//464 125//464 270//464 +f 142//465 282//465 287//465 +f 142//466 137//466 282//466 +f 146//467 287//467 291//467 +f 146//468 142//468 287//468 +f 93//469 92//469 237//469 +f 93//470 237//470 238//470 +f 152//471 146//471 291//471 +f 152//472 291//472 297//472 +f 153//473 297//473 298//473 +f 153//474 152//474 297//474 +f 154//475 298//475 299//475 +f 154//476 153//476 298//476 +f 155//477 299//477 300//477 +f 155//478 154//478 299//478 +f 156//479 300//479 301//479 +f 156//480 155//480 300//480 +f 157//481 301//481 302//481 +f 157//482 156//482 301//482 +f 159//483 302//483 304//483 +f 159//484 157//484 302//484 +f 148//485 304//485 293//485 +f 148//486 159//486 304//486 +f 149//487 293//487 294//487 +f 149//488 148//488 293//488 +f 86//489 70//489 215//489 +f 86//490 215//490 231//490 +f 88//491 231//491 233//491 +f 88//492 86//492 231//492 +f 92//493 233//493 237//493 +f 92//494 88//494 233//494 +f 150//495 149//495 294//495 +f 150//496 294//496 295//496 +f 151//497 295//497 296//497 +f 151//498 150//498 295//498 +f 144//499 296//499 289//499 +f 144//500 151//500 296//500 +f 145//501 289//501 290//501 +f 145//502 144//502 289//502 +f 116//503 290//503 261//503 +f 116//504 145//504 290//504 +f 105//505 261//505 250//505 +f 105//506 116//506 261//506 +f 71//507 75//507 220//507 +f 71//508 220//508 216//508 +f 65//509 216//509 210//509 +f 65//510 71//510 216//510 +f 63//511 210//511 208//511 +f 63//512 65//512 210//512 +f 64//513 208//513 209//513 +f 64//514 63//514 208//514 +f 67//515 209//515 212//515 +f 67//516 64//516 209//516 +f 70//517 212//517 215//517 +f 70//518 67//518 212//518 +f 100//519 105//519 250//519 +f 100//520 250//520 245//520 +f 107//521 110//521 255//521 +f 107//522 255//522 252//522 +f 104//523 252//523 249//523 +f 104//524 107//524 252//524 +f 102//525 249//525 247//525 +f 102//526 104//526 249//526 +f 99//527 247//527 244//527 +f 99//528 102//528 247//528 +f 94//529 244//529 239//529 +f 94//530 99//530 244//530 +f 90//531 239//531 235//531 +f 90//532 94//532 239//532 +f 87//533 235//533 232//533 +f 87//534 90//534 235//534 +f 75//535 232//535 220//535 +f 75//536 87//536 232//536 +f 313//537 242//537 96//537 +f 314//538 242//538 313//538 +f 315//539 100//539 245//539 +f 315//540 245//540 316//540 +f 317//541 313//541 96//541 +f 318//542 316//542 245//542 +f 319//543 315//543 320//543 +f 321//544 100//544 315//544 +f 322//545 314//545 313//545 +f 323//546 313//546 317//546 +f 324//547 320//547 317//547 +f 324//548 319//548 320//548 +f 325//549 242//549 326//549 +f 327//550 242//550 314//550 +f 327//551 326//551 242//551 +f 327//552 328//552 326//552 +f 329//553 314//553 322//553 +f 330//554 317//554 320//554 +f 330//555 323//555 317//555 +f 331//556 317//556 96//556 +f 331//557 96//557 332//557 +f 333//558 331//558 332//558 +f 334//559 332//559 96//559 +f 335//560 336//560 337//560 +f 338//561 336//561 335//561 +f 338//562 245//562 336//562 +f 339//563 340//563 328//563 +f 339//564 328//564 327//564 +f 341//565 316//565 318//565 +f 341//566 342//566 316//566 +f 341//567 343//567 342//567 +f 344//568 343//568 341//568 +f 344//569 314//569 343//569 +f 345//570 314//570 344//570 +f 345//571 327//571 314//571 +f 346//572 322//572 313//572 +f 346//573 347//573 322//573 +f 348//574 315//574 316//574 +f 348//575 320//575 315//575 +f 348//576 316//576 349//576 +f 350//577 315//577 319//577 +f 350//578 321//578 315//578 +f 350//579 319//579 324//579 +f 351//580 350//580 324//580 +f 351//581 324//581 317//581 +f 352//582 351//582 317//582 +f 352//583 317//583 331//583 +f 353//584 331//584 333//584 +f 354//585 353//585 333//585 +f 355//586 356//586 100//586 +f 357//587 356//587 355//587 +f 358//588 356//588 357//588 +f 359//589 335//589 337//589 +f 359//590 325//590 335//590 +f 360//591 325//591 326//591 +f 361//592 245//592 338//592 +f 361//593 340//593 318//593 +f 361//594 318//594 245//594 +f 361//595 338//595 362//595 +f 363//596 340//596 339//596 +f 363//597 318//597 340//597 +f 364//598 341//598 318//598 +f 364//599 363//599 339//599 +f 364//600 318//600 363//600 +f 365//601 327//601 345//601 +f 366//602 316//602 342//602 +f 366//603 343//603 314//603 +f 366//604 342//604 343//604 +f 366//605 367//605 349//605 +f 366//606 314//606 329//606 +f 366//607 329//607 367//607 +f 366//608 349//608 316//608 +f 368//609 349//609 367//609 +f 368//610 367//610 329//610 +f 369//611 349//611 368//611 +f 369//612 368//612 329//612 +f 370//613 369//613 347//613 +f 370//614 348//614 349//614 +f 370//615 349//615 369//615 +f 371//616 348//616 370//616 +f 372//617 348//617 371//617 +f 372//618 371//618 330//618 +f 372//619 320//619 348//619 +f 372//620 330//620 320//620 +f 373//621 352//621 331//621 +f 374//622 321//622 350//622 +f 375//623 374//623 353//623 +f 375//624 321//624 374//624 +f 375//625 353//625 354//625 +f 375//626 354//626 321//626 +f 376//627 100//627 321//627 +f 376//628 321//628 354//628 +f 376//629 355//629 100//629 +f 377//630 355//630 376//630 +f 378//631 332//631 334//631 +f 379//632 357//632 334//632 +f 379//633 358//633 357//633 +f 380//634 245//634 243//634 +f 381//635 382//635 383//635 +f 381//636 383//636 242//636 +f 381//637 242//637 325//637 +f 384//638 336//638 245//638 +f 384//639 245//639 385//639 +f 384//640 385//640 386//640 +f 387//641 335//641 325//641 +f 387//642 325//642 360//642 +f 388//643 335//643 387//643 +f 388//644 387//644 360//644 +f 388//645 338//645 335//645 +f 389//646 326//646 328//646 +f 390//647 328//647 340//647 +f 390//648 361//648 362//648 +f 390//649 340//649 361//649 +f 391//650 339//650 327//650 +f 391//651 364//651 339//651 +f 391//652 327//652 365//652 +f 392//653 391//653 365//653 +f 392//654 364//654 391//654 +f 392//655 393//655 364//655 +f 392//656 365//656 393//656 +f 394//657 344//657 341//657 +f 394//658 341//658 364//658 +f 394//659 345//659 344//659 +f 394//660 364//660 393//660 +f 395//661 347//661 369//661 +f 395//662 329//662 322//662 +f 395//663 322//663 347//663 +f 395//664 369//664 329//664 +f 396//665 370//665 347//665 +f 396//666 347//666 346//666 +f 397//667 313//667 323//667 +f 398//668 371//668 370//668 +f 398//669 397//669 323//669 +f 399//670 330//670 371//670 +f 399//671 323//671 330//671 +f 399//672 371//672 398//672 +f 399//673 398//673 323//673 +f 400//674 401//674 374//674 +f 400//675 374//675 350//675 +f 400//676 350//676 351//676 +f 400//677 351//677 352//677 +f 402//678 374//678 401//678 +f 402//679 401//679 373//679 +f 403//680 374//680 402//680 +f 403//681 373//681 331//681 +f 403//682 353//682 374//682 +f 403//683 331//683 353//683 +f 403//684 402//684 373//684 +f 404//685 377//685 376//685 +f 404//686 376//686 354//686 +f 404//687 354//687 333//687 +f 405//688 333//688 332//688 +f 406//689 357//689 355//689 +f 407//690 406//690 378//690 +f 407//691 357//691 406//691 +f 407//692 378//692 334//692 +f 407//693 334//693 357//693 +f 408//694 100//694 356//694 +f 408//695 409//695 410//695 +f 408//696 410//696 100//696 +f 411//697 334//697 96//697 +f 411//698 96//698 412//698 +f 413//699 411//699 412//699 +f 414//700 98//700 100//700 +f 415//701 380//701 243//701 +f 416//702 380//702 415//702 +f 417//703 380//703 416//703 +f 418//704 380//704 417//704 +f 418//705 245//705 380//705 +f 419//706 382//706 381//706 +f 420//707 385//707 419//707 +f 420//708 419//708 381//708 +f 421//709 381//709 325//709 +f 421//710 325//710 386//710 +f 422//711 336//711 384//711 +f 422//712 384//712 386//712 +f 422//713 337//713 336//713 +f 423//714 360//714 326//714 +f 424//715 425//715 426//715 +f 424//716 338//716 425//716 +f 424//717 362//717 338//717 +f 427//718 389//718 424//718 +f 427//719 326//719 389//719 +f 427//720 426//720 326//720 +f 427//721 424//721 426//721 +f 428//722 328//722 390//722 +f 428//723 424//723 389//723 +f 428//724 362//724 424//724 +f 428//725 390//725 362//725 +f 428//726 389//726 328//726 +f 429//727 345//727 394//727 +f 429//728 394//728 393//728 +f 429//729 365//729 345//729 +f 429//730 393//730 365//730 +f 430//731 346//731 313//731 +f 430//732 313//732 397//732 +f 430//733 396//733 346//733 +f 430//734 397//734 396//734 +f 431//735 370//735 396//735 +f 431//736 396//736 397//736 +f 431//737 398//737 370//737 +f 431//738 397//738 398//738 +f 432//739 373//739 401//739 +f 432//740 352//740 373//740 +f 432//741 401//741 400//741 +f 432//742 400//742 352//742 +f 433//743 404//743 333//743 +f 433//744 377//744 404//744 +f 433//745 333//745 405//745 +f 434//746 435//746 436//746 +f 434//747 355//747 377//747 +f 434//748 436//748 355//748 +f 434//749 433//749 405//749 +f 434//750 377//750 433//750 +f 437//751 405//751 332//751 +f 437//752 435//752 434//752 +f 437//753 332//753 435//753 +f 437//754 434//754 405//754 +f 438//755 332//755 378//755 +f 439//756 409//756 408//756 +f 439//757 408//757 356//757 +f 439//758 356//758 358//758 +f 440//759 334//759 411//759 +f 440//760 409//760 334//760 +f 441//761 411//761 413//761 +f 441//762 442//762 411//762 +f 441//763 410//763 442//763 +f 443//764 414//764 100//764 +f 444//765 414//765 443//765 +f 445//766 414//766 444//766 +f 446//767 98//767 414//767 +f 446//768 414//768 445//768 +f 447//769 416//769 415//769 +f 448//770 383//770 449//770 +f 448//771 242//771 383//771 +f 450//772 447//772 449//772 +f 450//773 416//773 447//773 +f 450//774 449//774 417//774 +f 450//775 417//775 416//775 +f 451//776 449//776 383//776 +f 452//777 451//777 383//777 +f 453//778 418//778 454//778 +f 453//779 245//779 418//779 +f 453//780 419//780 385//780 +f 453//781 385//781 245//781 +f 455//782 420//782 381//782 +f 455//783 381//783 421//783 +f 455//784 421//784 386//784 +f 455//785 385//785 420//785 +f 455//786 386//786 385//786 +f 456//787 337//787 422//787 +f 456//788 386//788 325//788 +f 456//789 359//789 337//789 +f 456//790 325//790 359//790 +f 456//791 422//791 386//791 +f 457//792 360//792 423//792 +f 457//793 388//793 360//793 +f 458//794 388//794 457//794 +f 458//795 338//795 388//795 +f 458//796 426//796 425//796 +f 458//797 425//797 338//797 +f 458//798 457//798 423//798 +f 459//799 426//799 458//799 +f 459//800 458//800 423//800 +f 459//801 423//801 326//801 +f 459//802 326//802 426//802 +f 460//803 436//803 435//803 +f 460//804 406//804 355//804 +f 460//805 355//805 436//805 +f 461//806 435//806 332//806 +f 461//807 460//807 435//807 +f 461//808 438//808 460//808 +f 461//809 332//809 438//809 +f 462//810 438//810 378//810 +f 462//811 378//811 406//811 +f 462//812 406//812 460//812 +f 462//813 460//813 438//813 +f 463//814 379//814 334//814 +f 463//815 358//815 379//815 +f 463//816 334//816 409//816 +f 463//817 409//817 439//817 +f 463//818 439//818 358//818 +f 464//819 440//819 411//819 +f 464//820 410//820 409//820 +f 464//821 409//821 440//821 +f 464//822 411//822 442//822 +f 464//823 442//823 410//823 +f 465//824 410//824 441//824 +f 465//825 443//825 100//825 +f 465//826 100//826 410//826 +f 466//827 443//827 465//827 +f 467//828 412//828 468//828 +f 467//829 469//829 412//829 +f 470//830 444//830 468//830 +f 470//831 445//831 444//831 +f 471//832 446//832 445//832 +f 471//833 470//833 468//833 +f 471//834 445//834 470//834 +f 472//835 468//835 412//835 +f 472//836 412//836 96//836 +f 473//837 243//837 242//837 +f 473//838 415//838 243//838 +f 473//839 242//839 448//839 +f 474//840 415//840 473//840 +f 474//841 473//841 448//841 +f 475//842 449//842 447//842 +f 475//843 448//843 449//843 +f 475//844 447//844 415//844 +f 475//845 474//845 448//845 +f 475//846 415//846 474//846 +f 476//847 449//847 451//847 +f 476//848 417//848 449//848 +f 477//849 451//849 452//849 +f 477//850 476//850 451//850 +f 477//851 418//851 417//851 +f 477//852 417//852 476//852 +f 478//853 454//853 418//853 +f 478//854 477//854 452//854 +f 478//855 418//855 477//855 +f 479//856 454//856 478//856 +f 479//857 478//857 452//857 +f 479//858 452//858 383//858 +f 479//859 383//859 382//859 +f 480//860 479//860 382//860 +f 480//861 454//861 479//861 +f 480//862 419//862 453//862 +f 480//863 382//863 419//863 +f 480//864 453//864 454//864 +f 481//865 465//865 441//865 +f 481//866 466//866 465//866 +f 481//867 441//867 413//867 +f 482//868 443//868 466//868 +f 483//869 481//869 413//869 +f 483//870 466//870 481//870 +f 483//871 482//871 466//871 +f 483//872 469//872 482//872 +f 483//873 413//873 412//873 +f 483//874 412//874 469//874 +f 484//875 444//875 443//875 +f 484//876 482//876 469//876 +f 484//877 443//877 482//877 +f 484//878 469//878 467//878 +f 485//879 467//879 468//879 +f 485//880 468//880 444//880 +f 485//881 444//881 484//881 +f 485//882 484//882 467//882 +f 486//883 446//883 471//883 +f 486//884 471//884 468//884 +f 486//885 468//885 472//885 +f 487//886 486//886 472//886 +f 487//887 446//887 486//887 +f 488//888 96//888 98//888 +f 488//889 98//889 446//889 +f 488//890 446//890 487//890 +f 488//891 487//891 472//891 +f 488//892 472//892 96//892 +f 121//893 127//893 272//893 +f 121//894 272//894 266//894 +f 120//895 266//895 265//895 +f 120//896 121//896 266//896 +f 118//897 265//897 263//897 +f 118//898 120//898 265//898 +f 114//899 263//899 259//899 +f 114//900 118//900 263//900 +f 108//901 259//901 254//901 +f 108//902 114//902 259//902 +f 109//903 254//903 253//903 +f 109//904 108//904 254//904 +f 110//905 253//905 255//905 +f 110//906 109//906 253//906 +f 97//907 96//907 242//907 +f 97//908 242//908 241//908 +f 89//909 241//909 234//909 +f 89//910 97//910 241//910 +f 73//911 234//911 218//911 +f 73//912 89//912 234//912 +f 68//913 218//913 213//913 +f 68//914 73//914 218//914 +f 61//915 213//915 206//915 +f 61//916 68//916 213//916 +f 59//917 206//917 204//917 +f 59//918 61//918 206//918 +f 57//919 204//919 202//919 +f 57//920 59//920 204//920 +f 54//921 202//921 200//921 +f 54//922 57//922 202//922 +f 131//923 132//923 277//923 +f 131//924 277//924 276//924 +f 134//925 276//925 279//925 +f 134//926 131//926 276//926 +f 136//927 279//927 281//927 +f 136//928 134//928 279//928 +f 135//929 281//929 280//929 +f 135//930 136//930 281//930 +f 133//931 280//931 278//931 +f 133//932 135//932 280//932 +f 130//933 278//933 275//933 +f 130//934 133//934 278//934 +f 129//935 275//935 274//935 +f 129//936 130//936 275//936 +f 127//937 274//937 272//937 +f 127//938 129//938 274//938 +f 50//939 54//939 200//939 +f 50//940 200//940 195//940 +f 46//941 195//941 191//941 +f 46//942 50//942 195//942 +f 41//943 191//943 187//943 +f 41//944 46//944 191//944 +f 44//945 187//945 190//945 +f 44//946 41//946 187//946 +f 48//947 190//947 193//947 +f 48//948 44//948 190//948 +f 49//949 193//949 194//949 +f 49//950 48//950 193//950 +f 53//951 194//951 198//951 +f 53//952 49//952 194//952 +f 66//953 198//953 211//953 +f 66//954 53//954 198//954 +f 132//955 128//955 273//955 +f 132//956 273//956 277//956 +f 72//957 66//957 211//957 +f 72//958 211//958 217//958 +f 76//959 217//959 221//959 +f 76//960 72//960 217//960 +f 91//961 221//961 236//961 +f 91//962 76//962 221//962 +f 95//963 236//963 240//963 +f 95//964 91//964 236//964 +f 124//965 123//965 267//965 +f 124//966 267//966 269//966 +f 122//967 269//967 268//967 +f 122//968 124//968 269//968 +f 126//969 268//969 271//969 +f 126//970 122//970 268//970 +f 128//971 271//971 273//971 +f 128//972 126//972 271//972 +f 101//973 95//973 240//973 +f 101//974 240//974 246//974 +f 106//975 246//975 251//975 +f 106//976 101//976 246//976 +f 117//977 106//977 251//977 +f 117//978 251//978 262//978 +f 123//979 262//979 267//979 +f 123//980 117//980 262//980 diff --git a/asset/icons/help-faq-symbolic.svg b/asset/icons/help-faq-symbolic.svg new file mode 100644 index 0000000..e4b2bf9 --- /dev/null +++ b/asset/icons/help-faq-symbolic.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/asset/icons/preferences-system-search.png b/asset/icons/preferences-system-search.png new file mode 100644 index 0000000..fd26139 Binary files /dev/null and b/asset/icons/preferences-system-search.png differ diff --git a/asset/props/axe.FCStd b/asset/props/axe.FCStd new file mode 100644 index 0000000..c8d4681 Binary files /dev/null and b/asset/props/axe.FCStd differ diff --git a/asset/props/axe.mtl b/asset/props/axe.mtl new file mode 100644 index 0000000..fcf78b5 --- /dev/null +++ b/asset/props/axe.mtl @@ -0,0 +1,6 @@ +# FreeCAD v0.19 build20655 (Git) Arch module +# http://www.freecadweb.org +newmtl color_cccccc +Kd 0.800000011920929 0.800000011920929 0.800000011920929 +Tr 0.0 +# Material Count: 1 \ No newline at end of file diff --git a/asset/props/axe.obj b/asset/props/axe.obj new file mode 100644 index 0000000..10dc643 --- /dev/null +++ b/asset/props/axe.obj @@ -0,0 +1,452 @@ +# FreeCAD v0.19 build20655 (Git) Arch module +# http://www.freecadweb.org +mtllib axe.mtl +o Body +usemtl color_cccccc +v 100.0 5.0 0.0 +v 0.0 4.698463 1.710101 +v 100.0 4.698463 1.710101 +v 0.0 5.0 0.0 +v 0.0 3.830222 3.213938 +v 100.0 3.830222 3.213938 +v 0.0 2.5 4.330127 +v 100.0 2.5 4.330127 +v 100.0 0.868241 4.924039 +v 0.0 0.868241 4.924039 +v 0.0 -0.868241 4.924039 +v 100.0 -0.868241 4.924039 +v 0.0 -2.5 4.330127 +v 100.0 -2.5 4.330127 +v 0.0 -3.830222 3.213938 +v 100.0 -3.830222 3.213938 +v 0.0 -4.698463 1.710101 +v 100.0 -4.698463 1.710101 +v 100.0 -5.0 0.0 +v 0.0 -5.0 0.0 +v 0.0 -4.698463 -1.710101 +v 100.0 -4.698463 -1.710101 +v 0.0 -3.830222 -3.213938 +v 100.0 -3.830222 -3.213938 +v 0.0 -2.5 -4.330127 +v 100.0 -2.5 -4.330127 +v 0.0 -0.868241 -4.924039 +v 100.0 -0.868241 -4.924039 +v 100.0 0.868241 -4.924039 +v 0.0 0.868241 -4.924039 +v 0.0 2.5 -4.330127 +v 100.0 2.5 -4.330127 +v 0.0 3.830222 -3.213938 +v 100.0 3.830222 -3.213938 +v 0.0 4.698463 -1.710101 +v 100.0 4.698463 -1.710101 +v 107.0 8.0 0.0 +v 100.0 10.0 0.0 +v 100.0 9.396926 3.420202 +v 100.0 9.396926 -3.420202 +v 107.0 6.128356 5.142301 +v 100.0 7.660444 6.427876 +v 100.0 5.0 8.660254 +v 107.0 1.389185 7.878462 +v 100.0 1.736482 9.848078 +v 100.0 -1.736482 9.848078 +v 107.0 -4.0 6.928203 +v 100.0 -5.0 8.660254 +v 100.0 -7.660444 6.427876 +v 114.0 4.596267 3.856726 +v 114.0 6.0 0.0 +v 107.0 -7.517541 2.736161 +v 100.0 -9.396926 3.420202 +v 100.0 -10.0 0.0 +v 114.0 1.041889 5.908846 +v 107.0 -7.517541 -2.736161 +v 100.0 -9.396926 -3.420202 +v 100.0 -7.660444 -6.427876 +v 114.0 -3.0 5.196152 +v 121.0 3.064178 2.571151 +v 121.0 4.0 0.0 +v 107.0 -4.0 -6.928203 +v 100.0 -5.0 -8.660254 +v 100.0 -1.736482 -9.848078 +v 114.0 -5.638156 2.052121 +v 121.0 0.694593 3.939231 +v 107.0 1.389185 -7.878462 +v 100.0 1.736482 -9.848078 +v 100.0 5.0 -8.660254 +v 114.0 -5.638156 -2.052121 +v 121.0 -2.0 3.464102 +v 128.0 1.532089 1.285575 +v 128.0 2.0 0.0 +v 135.0 0.0 0.0 +v 107.0 6.128356 -5.142301 +v 100.0 7.660444 -6.427876 +v 114.0 -3.0 -5.196152 +v 121.0 -3.75877 1.368081 +v 128.0 0.347296 1.969615 +v 114.0 1.041889 -5.908846 +v 121.0 -3.75877 -1.368081 +v 128.0 -1.0 1.732051 +v 114.0 4.596267 -3.856726 +v 121.0 -2.0 -3.464102 +v 128.0 -1.879385 0.68404 +v 121.0 0.694593 -3.939231 +v 128.0 -1.879385 -0.68404 +v 121.0 3.064178 -2.571151 +v 128.0 -1.0 -1.732051 +v 128.0 0.347296 -1.969615 +v 128.0 1.532089 -1.285575 +vn 0.0 0.9848077297210693 0.17364825308322906 +vn -0.0 0.9848077297210693 0.17364825308322906 +vn 0.0 0.8660253882408142 0.4999999701976776 +vn -0.0 0.8660253882408142 0.4999999701976776 +vn 0.0 0.6427876949310303 0.7660443186759949 +vn 0.0 0.34202009439468384 0.9396926760673523 +vn -0.0 0.6427876949310303 0.7660443186759949 +vn 0.0 0.34202009439468384 0.9396926760673523 +vn 0.0 0.0 1.0 +vn -0.0 0.0 1.0 +vn 0.0 -0.34202009439468384 0.9396926760673523 +vn 0.0 -0.34202009439468384 0.9396926760673523 +vn 0.0 -0.6427876949310303 0.7660443186759949 +vn 0.0 -0.6427876949310303 0.7660443186759949 +vn 0.0 -0.8660253882408142 0.4999999701976776 +vn 0.0 -0.9848077297210693 0.17364825308322906 +vn 0.0 -0.8660253882408142 0.4999999701976776 +vn 0.0 -0.9848077297210693 0.17364825308322906 +vn 0.0 -0.9848077297210693 -0.17364825308322906 +vn 0.0 -0.9848077297210693 -0.17364825308322906 +vn 0.0 -0.8660253882408142 -0.4999999701976776 +vn 0.0 -0.8660253882408142 -0.4999999701976776 +vn 0.0 -0.6427876949310303 -0.7660443186759949 +vn 0.0 -0.6427876949310303 -0.7660443186759949 +vn 0.0 -0.34202009439468384 -0.9396926760673523 +vn 0.0 0.0 -1.0 +vn 0.0 -0.34202009439468384 -0.9396926760673523 +vn 0.0 0.0 -1.0 +vn 0.0 0.34202009439468384 -0.9396926760673523 +vn 0.0 0.34202009439468384 -0.9396926760673523 +vn 0.0 0.6427876949310303 -0.7660443186759949 +vn 0.0 0.6427876949310303 -0.7660443186759949 +vn 0.0 0.8660253882408142 -0.4999999701976776 +vn 0.0 0.8660253882408142 -0.4999999701976776 +vn 0.0 0.9848077297210693 -0.17364825308322906 +vn 0.0 0.9848077297210693 -0.17364825308322906 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 -0.0 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 -0.0 +vn 0.2708558738231659 0.9479955434799194 0.16715727746486664 +vn 0.2708558738231659 0.9479955434799194 -0.16715727746486664 +vn 0.2708558142185211 0.8336532711982727 0.4813099801540375 +vn 0.2708558440208435 0.6187602877616882 0.7374095916748047 +vn 0.33424097299575806 0.8856486678123474 0.3223497271537781 +vn 0.27085593342781067 0.32923534512519836 0.9045668244361877 +vn 0.27085593342781067 0.0 0.9626198410987854 +vn 0.33424103260040283 0.4712437689304352 0.8162181973457336 +vn 0.27085593342781067 -0.32923537492752075 0.9045668244361877 +vn 0.27085593342781067 -0.6187602877616882 0.7374095916748047 +vn 0.33424103260040283 -0.16366124153137207 0.9281690716743469 +vn 0.2593005895614624 0.9075519442558289 0.33032187819480896 +vn 0.2593005299568176 0.9075520038604736 0.33032193779945374 +vn 0.2708558440208435 -0.8336532711982727 0.4813099503517151 +vn 0.2708558142185211 -0.9479955434799194 0.16715721786022186 +vn 0.33424094319343567 -0.7219873666763306 0.6058194041252136 +vn 0.2593005895614624 0.4828983247280121 0.8364044427871704 +vn 0.2593005895614624 0.4828983247280121 0.8364044427871704 +vn 0.2708558142185211 -0.9479955434799194 -0.16715721786022186 +vn 0.2708558440208435 -0.8336532711982727 -0.4813099503517151 +vn 0.33424097299575806 -0.9424875974655151 0.0 +vn 0.25930055975914 -0.7398431301116943 0.6208021640777588 +vn 0.25930055975914 -0.1677088439464569 0.9511240124702454 +vn 0.2593005895614624 -0.16770881414413452 0.9511240124702454 +vn 0.25930055975914 0.9075520038604736 0.33032187819480896 +vn 0.25930055975914 0.9075520634651184 0.33032190799713135 +vn 0.27085593342781067 -0.6187602877616882 -0.7374095916748047 +vn 0.27085593342781067 -0.32923537492752075 -0.9045668244361877 +vn 0.33424094319343567 -0.7219873666763306 -0.6058194041252136 +vn 0.25930055975914 -0.7398431301116943 0.6208021640777588 +vn 0.25930055975914 0.4828982949256897 0.8364044427871704 +vn 0.25930055975914 0.4828982949256897 0.8364045023918152 +vn 0.27085593342781067 0.0 -0.9626198410987854 +vn 0.27085593342781067 0.32923534512519836 -0.9045668244361877 +vn 0.33424103260040283 -0.16366124153137207 -0.9281690716743469 +vn 0.2593005299568176 -0.9657966494560242 0.0 +vn 0.25930055975914 -0.965796709060669 0.0 +vn 0.25930055975914 -0.1677088737487793 0.9511240124702454 +vn 0.25930055975914 -0.16770882904529572 0.9511240124702454 +vn 0.2593005895614624 0.9075520038604736 0.33032187819480896 +vn 0.25930055975914 0.9075520038604736 0.33032187819480896 +vn 0.25930055975914 0.9075520038604736 0.3303219676017761 +vn 0.2708558440208435 0.6187602877616882 -0.7374095916748047 +vn 0.2708558142185211 0.8336532711982727 -0.4813099801540375 +vn 0.33424103260040283 0.4712437689304352 -0.8162181973457336 +vn 0.33424097299575806 0.8856486678123474 -0.3223497271537781 +vn 0.25930055975914 -0.7398431301116943 -0.6208021640777588 +vn 0.2593005299568176 -0.7398431301116943 -0.6208021640777588 +vn 0.2593005895614624 -0.16770881414413452 -0.9511240124702454 +vn 0.25930055975914 -0.7398431897163391 0.6208021640777588 +vn 0.2593005895614624 -0.7398431301116943 0.6208022236824036 +vn 0.25930055975914 0.4828982949256897 0.8364044427871704 +vn 0.25930055975914 0.4828982353210449 0.8364044427871704 +vn 0.25930055975914 0.4828982949256897 0.8364044427871704 +vn 0.25930055975914 -0.16770878434181213 0.9511240124702454 +vn 0.2593005895614624 0.4828983247280121 -0.8364044427871704 +vn 0.25930055975914 -0.1677088439464569 -0.9511240124702454 +vn 0.2593005895614624 -0.9657966494560242 0.0 +vn 0.2593005895614624 -0.9657966494560242 0.0 +vn 0.25930055975914 -0.16770882904529572 0.9511240124702454 +vn 0.25930055975914 -0.16770882904529572 0.9511240124702454 +vn 0.2593005299568176 0.9075520038604736 -0.33032193779945374 +vn 0.2593005895614624 0.9075519442558289 -0.33032187819480896 +vn 0.25930055975914 0.9075519442558289 -0.33032187819480896 +vn 0.2593005895614624 0.4828983247280121 -0.8364044427871704 +vn 0.25930055975914 -0.7398431301116943 -0.6208021640777588 +vn 0.2593005895614624 -0.7398431897163391 -0.6208021640777588 +vn 0.25930055975914 -0.7398431897163391 0.6208021640777588 +vn 0.25930055975914 -0.7398431897163391 0.6208021640777588 +vn 0.25930055975914 -0.9657966494560242 0.0 +vn 0.25930055975914 -0.7398431301116943 0.6208021640777588 +vn 0.2593005895614624 -0.1677088588476181 -0.9511240124702454 +vn 0.25930055975914 -0.16770882904529572 -0.9511240124702454 +vn 0.25930055975914 -0.9657966494560242 0.0 +vn 0.25930055975914 -0.9657966494560242 0.0 +vn 0.25930055975914 0.9075520038604736 -0.33032187819480896 +vn 0.25930055975914 0.4828982651233673 -0.8364044427871704 +vn 0.25930055975914 0.4828982949256897 -0.8364044427871704 +vn 0.25930055975914 -0.16770878434181213 -0.9511240124702454 +vn 0.25930055975914 -0.7398431897163391 -0.6208021640777588 +vn 0.25930055975914 -0.7398431301116943 -0.6208021640777588 +vn 0.25930055975914 -0.7398431897163391 -0.6208021640777588 +vn 0.25930055975914 -0.16770882904529572 -0.9511240124702454 +vn 0.25930055975914 -0.16770882904529572 -0.9511240124702454 +vn 0.2593005895614624 0.9075520038604736 -0.33032187819480896 +vn 0.25930055975914 0.9075520038604736 -0.33032187819480896 +vn 0.25930055975914 0.9075520038604736 -0.3303219676017761 +vn 0.25930055975914 0.48289820551872253 -0.8364044427871704 +vn 0.25930055975914 0.4828982949256897 -0.8364044427871704 +vn 0.25930055975914 0.4828982949256897 -0.8364044427871704 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 -0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +vn -1.0 0.0 0.0 +f 1//1 2//1 3//1 +f 4//2 2//2 1//2 +f 3//3 5//3 6//3 +f 2//4 5//4 3//4 +f 6//5 7//5 8//5 +f 8//6 7//6 9//6 +f 5//7 7//7 6//7 +f 7//8 10//8 9//8 +f 9//9 11//9 12//9 +f 10//10 11//10 9//10 +f 12//11 13//11 14//11 +f 11//12 13//12 12//12 +f 14//13 15//13 16//13 +f 13//14 15//14 14//14 +f 16//15 17//15 18//15 +f 18//16 17//16 19//16 +f 15//17 17//17 16//17 +f 17//18 20//18 19//18 +f 19//19 21//19 22//19 +f 20//20 21//20 19//20 +f 22//21 23//21 24//21 +f 21//22 23//22 22//22 +f 24//23 25//23 26//23 +f 23//24 25//24 24//24 +f 26//25 27//25 28//25 +f 28//26 27//26 29//26 +f 25//27 27//27 26//27 +f 27//28 30//28 29//28 +f 30//29 31//29 29//29 +f 29//30 31//30 32//30 +f 31//31 33//31 32//31 +f 32//32 33//32 34//32 +f 33//33 35//33 34//33 +f 34//34 35//34 36//34 +f 35//35 4//35 36//35 +f 36//36 4//36 1//36 +f 21//37 20//37 23//37 +f 23//38 31//38 25//38 +f 25//39 31//39 27//39 +f 27//40 31//40 30//40 +f 31//41 35//41 33//41 +f 13//42 11//42 15//42 +f 15//43 11//43 17//43 +f 17//44 11//44 20//44 +f 20//45 11//45 23//45 +f 11//46 10//46 23//46 +f 4//47 5//47 2//47 +f 7//48 5//48 10//48 +f 35//49 5//49 4//49 +f 23//50 5//50 31//50 +f 31//51 5//51 35//51 +f 10//52 5//52 23//52 +f 37//53 38//53 39//53 +f 37//54 40//54 38//54 +f 41//55 39//55 42//55 +f 41//56 42//56 43//56 +f 41//57 37//57 39//57 +f 44//58 43//58 45//58 +f 44//59 45//59 46//59 +f 44//60 41//60 43//60 +f 47//61 46//61 48//61 +f 47//62 48//62 49//62 +f 47//63 44//63 46//63 +f 50//64 51//64 37//64 +f 50//65 37//65 41//65 +f 52//66 49//66 53//66 +f 52//67 53//67 54//67 +f 52//68 47//68 49//68 +f 55//69 50//69 41//69 +f 55//70 41//70 44//70 +f 56//71 54//71 57//71 +f 56//72 57//72 58//72 +f 56//73 52//73 54//73 +f 59//74 47//74 52//74 +f 59//75 55//75 44//75 +f 59//76 44//76 47//76 +f 60//77 61//77 51//77 +f 60//78 51//78 50//78 +f 62//79 58//79 63//79 +f 62//80 63//80 64//80 +f 62//81 56//81 58//81 +f 65//82 59//82 52//82 +f 66//83 60//83 50//83 +f 66//84 50//84 55//84 +f 67//85 64//85 68//85 +f 67//86 68//86 69//86 +f 67//87 62//87 64//87 +f 70//88 52//88 56//88 +f 70//89 65//89 52//89 +f 71//90 55//90 59//90 +f 71//91 66//91 55//91 +f 72//92 73//92 61//92 +f 72//93 74//93 73//93 +f 72//94 61//94 60//94 +f 75//95 69//95 76//95 +f 75//96 76//96 40//96 +f 75//97 67//97 69//97 +f 75//98 40//98 37//98 +f 77//99 56//99 62//99 +f 77//100 70//100 56//100 +f 77//101 62//101 67//101 +f 78//102 71//102 59//102 +f 78//103 59//103 65//103 +f 79//104 72//104 60//104 +f 79//105 60//105 66//105 +f 79//106 74//106 72//106 +f 79//107 66//107 71//107 +f 80//108 67//108 75//108 +f 80//109 77//109 67//109 +f 81//110 78//110 65//110 +f 81//111 65//111 70//111 +f 82//112 74//112 79//112 +f 82//113 79//113 71//113 +f 83//114 75//114 37//114 +f 83//115 37//115 51//115 +f 83//116 51//116 61//116 +f 83//117 80//117 75//117 +f 84//118 70//118 77//118 +f 84//119 81//119 70//119 +f 85//120 82//120 71//120 +f 85//121 74//121 82//121 +f 85//122 78//122 81//122 +f 85//123 71//123 78//123 +f 86//124 77//124 80//124 +f 86//125 84//125 77//125 +f 87//126 74//126 85//126 +f 87//127 85//127 81//127 +f 88//128 83//128 61//128 +f 88//129 80//129 83//129 +f 88//130 86//130 80//130 +f 89//131 84//131 86//131 +f 89//132 74//132 87//132 +f 89//133 81//133 84//133 +f 89//134 87//134 81//134 +f 90//135 89//135 86//135 +f 90//136 74//136 89//136 +f 91//137 61//137 73//137 +f 91//138 73//138 74//138 +f 91//139 88//139 61//139 +f 91//140 86//140 88//140 +f 91//141 74//141 90//141 +f 91//142 90//142 86//142 +f 32//143 69//143 68//143 +f 32//144 76//144 69//144 +f 32//145 34//145 76//145 +f 36//146 40//146 76//146 +f 36//147 76//147 34//147 +f 29//148 32//148 68//148 +f 1//149 38//149 40//149 +f 1//150 40//150 36//150 +f 28//151 68//151 64//151 +f 28//152 29//152 68//152 +f 3//153 39//153 38//153 +f 3//154 38//154 1//154 +f 26//155 64//155 63//155 +f 26//156 28//156 64//156 +f 42//157 39//157 3//157 +f 6//158 42//158 3//158 +f 24//159 26//159 63//159 +f 58//160 24//160 63//160 +f 8//161 42//161 6//161 +f 43//162 42//162 8//162 +f 9//163 43//163 8//163 +f 57//164 22//164 24//164 +f 57//165 24//165 58//165 +f 45//166 9//166 12//166 +f 45//167 43//167 9//167 +f 54//168 19//168 22//168 +f 54//169 22//169 57//169 +f 46//170 45//170 12//170 +f 53//171 18//171 19//171 +f 53//172 19//172 54//172 +f 48//173 12//173 14//173 +f 48//174 46//174 12//174 +f 49//175 18//175 53//175 +f 49//176 48//176 14//176 +f 49//177 14//177 16//177 +f 49//178 16//178 18//178 diff --git a/baton_colle/baton_colle-14.blend b/baton_colle/baton_colle-14.blend new file mode 100644 index 0000000..35fa542 Binary files /dev/null and b/baton_colle/baton_colle-14.blend differ diff --git a/baton_colle/batoncolle.py b/baton_colle/batoncolle.py new file mode 100644 index 0000000..979c112 --- /dev/null +++ b/baton_colle/batoncolle.py @@ -0,0 +1,71 @@ +import bge # Bibliothèque Blender Game Engine (BGE) +import math +import cine # Bibliothèque du player 3d d'analyse de cinématique + +############################################################################### +# batoncolle.py +# @title: Player 3D cinématique du baton de colle +# @project: Blender-EduTech +# @lang: fr +# @authors: Philippe Roy +# @copyright: Copyright (C) 2020-2022 Philippe Roy +# @license: GNU GPL +# +# Commandes déclenchées par UPBGE pour le modèle du baton de colle +# +# Ce player 3D est un environnement léger et spécifique pour la colorisation des solides d'un mécanisme en mouvement. +# Il sert principalement pour l'apprentissage de la détection des classes d'équivalence d'un mécanisme afin de pouvoir faire sa modélisation cinématique. +# +############################################################################### + +# Récupérer la scène 3D +scene = bge.logic.getCurrentScene() +# print("Objets de la scene : ", scene.objects) + +# Mécanisme (objets 3D) + +objects=['Corps', 'Support', 'Colle', 'Bouton', 'Bouchon'] +objects_anim=['Support', 'Colle', 'Bouton', 'Bouchon'] + +objects_dict={'Corps' : [1, '1 : Corps', 'Color-5', ['Repere A']], + 'Support' : [2, '2 : Support', 'Color-2', ['Repere B']], + 'Colle' : [3, '3 : Colle', 'White', []], + 'Bouton' : [4, '4 : Bouton', 'Color-4', []], + 'Bouchon' : [5, '5 : Bouchon', 'Color-3', []]} + +# Couleurs + +colors=[['Color-1', [0.202, 0.114, 0.512,1]], + ['Color-2', [0.051, 0.270, 0.279,1]], + ['Color-3', [0.799, 0.031, 0.038,1]], + ['Color-4', [0.799, 0.130, 0.063,1]], + ['Color-5', [0.8, 0.619, 0.021,1]], + ['Color-6', [0.246, 0.687, 0.078,1]], + ['Color-7', [0.800, 0.005, 0.315,1]], + ['Color-8', [0.75,0.751, 0.75,0]]] + +colors_dict={'Color-1' : [0.202, 0.114, 0.512, 1], + 'Color-2' : [0.051, 0.270, 0.279, 1], + 'Color-3' : [0.799, 0.031, 0.038, 1], + 'Color-4' : [0.799, 0.130, 0.063, 1], + 'Color-5' : [0.8, 0.619, 0.021, 1], + 'Color-6' : [0.246, 0.687, 0.078, 1], + 'Color-7' : [0.800, 0.005, 0.315, 1], + 'Color-8' : [0.75,0.75, 0.75, 0], + 'White' : [0.8, 0.8, 0.8, 1]} + +############################################################################### +# Mécanisme +############################################################################### + +# Initialisation +def init(cont): + scene.objects['Mecanism']['objects'] = objects + scene.objects['Mecanism']['objects_anim'] = objects_anim + scene.objects['Mecanism']['objects_dict'] = objects_dict + scene.objects['Mecanism']['colors'] = colors + scene.objects['Mecanism']['colors_dict'] = colors_dict + cine.manip_init() # Manipulation du modèle 3D + cine.objects_init() # Mécanisme + cine.cmd_init() # Commandes + cine.anim_init() # Animation diff --git a/baton_colle/cine.py b/baton_colle/cine.py new file mode 120000 index 0000000..202c7da --- /dev/null +++ b/baton_colle/cine.py @@ -0,0 +1 @@ +/home/phroy/Bureau/seriousgames/blender-edutech/git/kinematic-player/cine.py \ No newline at end of file diff --git a/baton_colle/cine_about.py b/baton_colle/cine_about.py new file mode 120000 index 0000000..df92645 --- /dev/null +++ b/baton_colle/cine_about.py @@ -0,0 +1 @@ +/home/phroy/Bureau/seriousgames/blender-edutech/git/kinematic-player/cine_about.py \ No newline at end of file diff --git a/baton_colle/cine_config.xml b/baton_colle/cine_config.xml new file mode 120000 index 0000000..ec48df5 --- /dev/null +++ b/baton_colle/cine_config.xml @@ -0,0 +1 @@ +/home/phroy/Bureau/seriousgames/blender-edutech/git/kinematic-player/cine_config.xml \ No newline at end of file diff --git a/baton_colle/cine_doc.py b/baton_colle/cine_doc.py new file mode 120000 index 0000000..e936682 --- /dev/null +++ b/baton_colle/cine_doc.py @@ -0,0 +1 @@ +/home/phroy/Bureau/seriousgames/blender-edutech/git/kinematic-player/cine_doc.py \ No newline at end of file diff --git a/blender-edutech.png b/blender-edutech.png new file mode 100644 index 0000000..44f6948 Binary files /dev/null and b/blender-edutech.png differ diff --git a/blender-edutech.svg b/blender-edutech.svg new file mode 100644 index 0000000..65b3cfb --- /dev/null +++ b/blender-edutech.svg @@ -0,0 +1,67 @@ + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/cine.py b/cine.py new file mode 100644 index 0000000..5f72d87 --- /dev/null +++ b/cine.py @@ -0,0 +1,784 @@ +import bge # Blender Game Engine (UPBGE) +import bpy # Blender +import webbrowser +import math +import xml.etree.ElementTree as ET # Creating/parsing XML file + +import cine_doc # Documentation +import cine_about # About + +############################################################################### +# cine.py +# @title: Bibliothèque générale du player 3D d'analyse de cinématique +# @project: Blender-EduTech +# @lang: fr +# @authors: Philippe Roy +# @copyright: Copyright (C) 2020-2022 Philippe Roy +# @license: GNU GPL +# +# Ce player 3D est un environnement léger et spécifique pour la colorisation des solides d'un mécanisme en mouvement. +# Il sert principalement pour l'apprentissage de la détection des classes d'équivalence d'un mécanisme afin de pouvoir faire sa modélisation cinématique. +# +############################################################################### + +# UPBGE scene +eevee = bpy.context.scene.eevee +scene = bge.logic.getCurrentScene() +# print("Objets de la scene : ", scene.objects) + +# Config file +cine_config = ET.parse('cine_config.xml') +cine_config_tree = cine_config.getroot() + +# Couleurs +color_cmd = [0.8, 0.8, 0.8, 1] # Blanc +color_cmd_hl = [0.8, 0.619, 0.021, 1] # Jaune +color_rep_enabled = [0.8, 0.8, 0.8, 1] # Blanc +color_rep_disabled = [0, 0, 0, 1] # Noir + +# Constantes +JUST_ACTIVATED = bge.logic.KX_INPUT_JUST_ACTIVATED +JUST_RELEASED = bge.logic.KX_INPUT_JUST_RELEASED +ACTIVATE = bge.logic.KX_INPUT_ACTIVE +# JUST_DEACTIVATED = bge.logic.KX_SENSOR_JUST_DEACTIVATED + +############################################################################### +# Gestion du clavier +############################################################################### + +# Mode : Orbit(0) par défaut, Pan(1) avec Shift, Zoom (2) avec Ctrl, Eclaté (1) avec Shift +def keyboard(cont): + obj = scene.objects['Mecanism'] + keyboard = bge.logic.keyboard + + # Touche ESC + if JUST_ACTIVATED in keyboard.inputs[bge.events.ESCKEY].queue: + + # Maj du fichier de config (screen size : data/config/screen/width-> [0][0].text) + screen_width = bge.render.getWindowWidth() + screen_height = bge.render.getWindowHeight() + cine_config_tree[0][0].text=str(screen_width) + cine_config_tree[0][1].text=str(screen_height) + buffer_xml = ET.tostring(cine_config_tree) + with open("cine_config.xml", "wb") as f: + f.write(buffer_xml) + + # Sortir + bge.logic.endGame() + + # Shift -> mode 1 : Pan (clic milieu) ou Eclaté (clic gauche) + if JUST_ACTIVATED in keyboard.inputs[bge.events.LEFTSHIFTKEY].queue: + obj['manip_mode']=1 + if JUST_ACTIVATED in keyboard.inputs[bge.events.RIGHTSHIFTKEY].queue: + obj['manip_mode']=1 + + # Ctrl -> mode 2 : Zoom (clic milieu) + if JUST_ACTIVATED in keyboard.inputs[bge.events.LEFTCTRLKEY].queue: + obj['manip_mode']=2 + if JUST_ACTIVATED in keyboard.inputs[bge.events.RIGHTCTRLKEY].queue: + obj['manip_mode']=2 + + # Pas de modificateur -> mode 0 : Orbit (clic milieu) + if JUST_RELEASED in keyboard.inputs[bge.events.LEFTSHIFTKEY].queue: + obj['manip_mode']=0 + if JUST_RELEASED in keyboard.inputs[bge.events.RIGHTSHIFTKEY].queue: + obj['manip_mode']=0 + if JUST_RELEASED in keyboard.inputs[bge.events.LEFTCTRLKEY].queue: + obj['manip_mode']=0 + if JUST_RELEASED in keyboard.inputs[bge.events.RIGHTCTRLKEY].queue: + obj['manip_mode']=0 + + # Touche Home -> Reset de la vue + if JUST_ACTIVATED in keyboard.inputs[bge.events.HOMEKEY].queue: + scene.objects['Camera'].worldPosition.x = scene.objects['Camera']['init_lx'] + scene.objects['Camera'].worldPosition.y = scene.objects['Camera']['init_ly'] + scene.objects['Camera'].worldPosition.z = scene.objects['Camera']['init_lz'] + applyRotationTo(scene.objects['Mecanism'], 0, 0, 0) + for objet in objets : + scene.objects[objet].setVisible(True,False) + if scene.objects['Mecanism']['exploded'] ==True: + scene.objects['Mecanism']['exploded'] = False + for objet in objets : + scene.objects[objet].worldPosition.x =scene.objects[objet]['init_lx'] + scene.objects[objet].worldPosition.y = scene.objects[objet]['init_ly'] + scene.objects[objet].worldPosition.z = scene.objects[objet]['init_lz'] + if scene.objects['Mecanism']['anim'] == False: # Play d'une frame + anim_play1frame() + + # Touche Space -> Play et Pause + if JUST_ACTIVATED in keyboard.inputs[bge.events.SPACEKEY].queue: + if scene.objects['Mecanism']['anim'] == True: + anim_pause() + scene.objects['Pause'].setVisible(False,False) + scene.objects['Play'].setVisible(True,False) + else: + anim_play() + scene.objects['Play'].setVisible(False,False) + scene.objects['Pause'].setVisible(True,False) + + # Touche H -> Cacher l'objet (hide) + if JUST_ACTIVATED in keyboard.inputs[bge.events.HKEY].queue: + color_num(8) + + # Touche de 1 à 8 -> Couleur de 1 à 8 + if JUST_ACTIVATED in keyboard.inputs[bge.events.ONEKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD1].queue: + color_num(1) + if JUST_ACTIVATED in keyboard.inputs[bge.events.TWOKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD2].queue: + color_num(2) + if JUST_ACTIVATED in keyboard.inputs[bge.events.THREEKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD3].queue: + color_num(3) + if JUST_ACTIVATED in keyboard.inputs[bge.events.FOURKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD4].queue: + color_num(4) + if JUST_ACTIVATED in keyboard.inputs[bge.events.FIVEKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD5].queue: + color_num(5) + if JUST_ACTIVATED in keyboard.inputs[bge.events.SIXKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD6].queue: + color_num(6) + if JUST_ACTIVATED in keyboard.inputs[bge.events.SEVENKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD7].queue: + color_num(7) + if JUST_ACTIVATED in keyboard.inputs[bge.events.EIGHTKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD8].queue: + color_num(8) + +############################################################################### +# Commandes +############################################################################### + +## +# Initialisation des commandes +## + +def cmd_init(): + # Fichier de config (screen size : data/config/screen/width-> [0][0].text, height-> [0][1].text) + bge.render.setWindowSize(int(cine_config_tree[0][0].text),int(cine_config_tree[0][1].text)) + scene.objects['Play-Hl'].setVisible(False,False) + scene.objects['Pause-Hl'].setVisible(False,False) + scene.objects['Reset-colors-Hl'].setVisible(False,False) + scene.objects['Reset-view-Hl'].setVisible(False,False) + scene.objects['Help-cmd-Hl'].setVisible(False,False) + scene.objects['About-cmd-Hl'].setVisible(False,False) + for i in range (1, 9): + scene.objects['Color-'+str(i)+"-Hl"].setVisible(False,False) + +## +# Highlight des commandes +## + +def cmd_hl(cont): + obj = cont.owner + + # Activation + if cont.sensors['MO'].status == JUST_ACTIVATED and scene.objects['Mecanism']['manip_mode']==0: + if obj.name!="Play" and obj.name!="Pause" and obj.name!="Play-Hl" and obj.name!="Pause-Hl": + obj.setVisible(False,True) + scene.objects[obj.name+'-Hl'].setVisible(True,True) + # obj.color = color_cmd_hl + + # Play et pause + if obj.name=="Pause" or obj.name=="Play": + if scene.objects['Mecanism']['anim'] == True: + scene.objects['Pause'].setVisible(False,False) + scene.objects['Pause-Hl'].setVisible(True,False) + else: + scene.objects['Play'].setVisible(False,False) + scene.objects['Play-Hl'].setVisible(True,False) + + # Désactivation + if cont.sensors['MO'].status == JUST_RELEASED and scene.objects['Mecanism']['manip_mode']==0: + if obj.name!="Play" and obj.name!="Pause" and obj.name!="Play-Hl" and obj.name!="Pause-Hl": + scene.objects[obj.name+'-Hl'].setVisible(False,True) + obj.setVisible(True,True) + + # Play et pause + if obj.name=="Pause" or obj.name=="Play": + if scene.objects['Mecanism']['anim'] == True: + scene.objects['Pause-Hl'].setVisible(False,False) + scene.objects['Pause'].setVisible(True,False) + else: + scene.objects['Play-Hl'].setVisible(False,False) + scene.objects['Play'].setVisible(True,False) + +## +# Click sur les commandes +## + +def cmd_click(cont): + obj = cont.owner + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['Mecanism']['manip_mode']==0: + + # Play et pause + if obj.name=="Pause" or obj.name=="Run": + # Pause + if scene.objects['Mecanism']['anim'] == True: + anim_pause() + scene.objects['Pause'].setVisible(False,False) + scene.objects['Pause-Hl'].setVisible(False,False) + scene.objects['Play-Hl'].setVisible(True,False) + else: + # Play + anim_play() + scene.objects['Play'].setVisible(False,False) + scene.objects['Play-Hl'].setVisible(False,False) + scene.objects['Pause-Hl'].setVisible(True,False) + + # Reset-colors + if obj.name=="Reset-colors" : + color_reset() + + # Reset-view + if obj.name=="Reset-view" : + manip_reset() + + # About + if obj.name=="About-cmd" : + if scene.objects['Mecanism']['anim'] == True: # Rendu meilleur en pause + scene.objects['About']['anim']= True + anim_pause() + else: + scene.objects['About']['anim'] = False + cine_about.open() + + # Aide + if obj.name=="Help-cmd" : + if scene.objects['Mecanism']['anim'] == True: # Rendu meilleur en pause + scene.objects['About']['anim']= True + anim_pause() + else: + scene.objects['About']['anim'] = False + cine_doc.open() + +############################################################################### +# Animation +############################################################################### + +# Initialisation de l'animation -> Play +def anim_init(): + start = 1 + end = 250 + layer = 0 + priority = 1 + blendin = 1.0 + mode = bge.logic.KX_ACTION_MODE_LOOP + layerWeight = 0.0 + ipoFlags = 0 + speed = 1.0 + for objet in scene.objects['Mecanism']['objects_anim'] : + scene.objects[objet].playAction(objet+'-Action', start, end, layer, priority, blendin, mode, layerWeight, ipoFlags, speed) + scene.objects['Play'].setVisible(False,False) + scene.objects['Pause'].setVisible(True,False) + scene.objects['Mecanism']['anim'] = True + +# Animation en pause (bas niveau) +def anim_pause(): + layer = 0 + for objet in scene.objects['Mecanism']['objects_anim'] : + scene.objects['Mecanism']['anim_frame'] = scene.objects[objet].getActionFrame(layer) + scene.objects[objet].stopAction(layer) + scene.objects['Mecanism']['anim'] = False + +# Animation en pseudo-pause +# Play d'une frame pour remettre les pièces en place +def anim_play1frame(): + start = scene.objects['Mecanism']['anim_frame'] + end = scene.objects['Mecanism']['anim_frame']+1 + layer = 0 + priority = 1 + blendin = 1.0 + mode = bge.logic.KX_ACTION_MODE_PLAY + layerWeight = 0.0 + ipoFlags = 0 + speed = 1.0 + for objet in scene.objects['Mecanism']['objects_anim'] : + scene.objects[objet].playAction(objet+'-Action', start, end, layer, priority, blendin, mode, layerWeight, ipoFlags, speed) + scene.objects['Mecanism']['anim_frame'] = end + +# Reprise de l'animation (bas niveau) +def anim_play(): + start = scene.objects['Mecanism']['anim_frame'] + end = 250 + layer = 0 + priority = 1 + blendin = 1.0 + mode = bge.logic.KX_ACTION_MODE_PLAY + layerWeight = 0.0 + ipoFlags = 0 + speed = 1.0 + for objet in scene.objects['Mecanism']['objects_anim'] : + scene.objects[objet].playAction(objet+'-Action', start, end, layer, priority, blendin, mode, layerWeight, ipoFlags, speed) + scene.objects['Mecanism']['anim'] = True + +# Play en continu +def anim_boucle(cont): + if scene.objects['Mecanism']['anim'] == True and scene.objects[scene.objects['Mecanism']['objects_anim'][0]].isPlayingAction(0) == False: + start = 1 + end = 250 + layer = 0 + priority = 1 + blendin = 1.0 + mode = bge.logic.KX_ACTION_MODE_LOOP + layerWeight = 0.0 + ipoFlags = 0 + speed = 1.0 + for objet in scene.objects['Mecanism']['objects_anim'] : + scene.objects[objet].playAction(objet+'-Action', start, end, layer, priority, blendin, mode, layerWeight, ipoFlags, speed) + +############################################################################### +# Manipulation du mécanisme +############################################################################### + +## +# Dessiner une cercle (bas niveau) +## + +def circle (center, radius, color): + ang = 0 + ang_step = 0.1 + while ang< 2 * math.pi: + x0 = center[0]+float(radius*math.cos(ang)) + y0 = center[1] + z0 = center[2]+float(radius*math.sin(ang)) + x1 = center[0]+float(radius*math.cos(ang+ang_step)) + y1 = center[1] + z1 = center[2]+float(radius*math.sin(ang+ang_step)) + bge.render.drawLine([x0,y0,z0],[x1,y1,z1],color) + ang += ang_step + + +## +# Initialisation de la vue 3D +## + +# def manip_init(cont): +def manip_init(): + + # Configuration du moteur de rendu + eevee.use_eevee_smaa = True + + # Fenêtres + scene.objects['About'].setVisible(False,True) + + # Mémorisation de la position des composants + for objet in scene.objects['Mecanism']['objects'] : + scene.objects[objet]['init_lx']=scene.objects[objet].worldPosition.x + scene.objects[objet]['init_ly']=scene.objects[objet].worldPosition.y + scene.objects[objet]['init_lz']=scene.objects[objet].worldPosition.z + if 'init_rx' in scene.objects[objet]: + scene.objects[objet]['init_rx'] = scene.objects[objet].worldOrientation.to_euler().x + if 'init_ry' in scene.objects[objet]: + scene.objects[objet]['init_ry'] = scene.objects[objet].worldOrientation.to_euler().y + if 'init_rz' in scene.objects[objet]: + scene.objects[objet]['init_rz'] = scene.objects[objet].worldOrientation.to_euler().z + + # Mémorisation de la position de la caméra + scene.objects['Camera']['init_lx']=scene.objects['Camera'].worldPosition.x + scene.objects['Camera']['init_ly']=scene.objects['Camera'].worldPosition.y + scene.objects['Camera']['init_lz']=scene.objects['Camera'].worldPosition.z + + # Mémorisation de la position du modèle + scene.objects['Mecanism']['init_lx']=scene.objects['Mecanism'].worldPosition.x + scene.objects['Mecanism']['init_ly']=scene.objects['Mecanism'].worldPosition.y + scene.objects['Mecanism']['init_lz']=scene.objects['Mecanism'].worldPosition.z + scene.objects['Mecanism']['init_rx']=scene.objects['Mecanism'].worldOrientation.to_euler().x + scene.objects['Mecanism']['init_ry']=scene.objects['Mecanism'].worldOrientation.to_euler().y + scene.objects['Mecanism']['init_rz']=scene.objects['Mecanism'].worldOrientation.to_euler().z + +## +# Atteindre une orientation (bas niveau) +## + +def applyRotationTo(obj, rx=None, ry=None, rz=None): + rres=0.001 # resolution rotation + + # x + if rx is not None: + while (abs(rx-obj.worldOrientation.to_euler().x) > rres) : + if obj.worldOrientation.to_euler().x-rx > rres: + obj.applyRotation((-rres, 0, 0), True) + if rx-obj.worldOrientation.to_euler().x > rres: + obj.applyRotation((rres, 0, 0), True) + # print ("delta x ",rx-obj.worldOrientation.to_euler().x) + + # y + if ry is not None: + while (abs(ry-obj.worldOrientation.to_euler().y) > rres) : + if obj.worldOrientation.to_euler().y-ry > rres: + obj.applyRotation((0, -rres, 0), True) + if ry-obj.worldOrientation.to_euler().y > rres: + obj.applyRotation((0, rres, 0), True) + # print ("delta y ",ry-obj.worldOrientation.to_euler().y) + + # z + if rz is not None: + while (abs(rz-obj.worldOrientation.to_euler().z) > rres) : + if obj.worldOrientation.to_euler().z-rz > rres: + obj.applyRotation((0, 0, -rres), True) + if rz-obj.worldOrientation.to_euler().z > rres: + obj.applyRotation((0, 0, rres), True) + # print ("delta z ",rz-obj.worldOrientation.to_euler().z) + +## +# Reset de la manipulation de la vue +## + +def manip_reset(): + scene.objects['Camera'].worldPosition.x = scene.objects['Camera']['init_lx'] + scene.objects['Camera'].worldPosition.y = scene.objects['Camera']['init_ly'] + scene.objects['Camera'].worldPosition.z = scene.objects['Camera']['init_lz'] + applyRotationTo(scene.objects['Mecanism'], 0, 0, 0) + for objet in scene.objects['Mecanism']['objects'] : + scene.objects[objet].setVisible(True,False) + scene.objects[objet].restorePhysics() + if scene.objects['Mecanism']['expld'] ==True: + scene.objects['Mecanism']['expld'] = False + for objet in scene.objects['Mecanism']['objects'] : + scene.objects[objet].worldPosition.x =scene.objects[objet]['init_lx'] + scene.objects[objet].worldPosition.y = scene.objects[objet]['init_ly'] + scene.objects[objet].worldPosition.z = scene.objects[objet]['init_lz'] + if scene.objects['Mecanism']['anim'] == False: # Play d'une frame + anim_play1frame() + +## +# Position de départ pour la manipulation de la vue +## + +def manip_start(cont): + obj = cont.owner + obj['click_x']=cont.sensors['ClickM'].position[0] + obj['click_y']=cont.sensors['ClickM'].position[1] + +## +# Manipulation du modèle ou de la caméra +## + +def manip(cont): + obj = cont.owner + sensibilite_orbit=0.0005 + sensibilite_pan=0.005 + sensibilite_zoom=0.01 + delta_x=cont.sensors['DownM'].position[0]-obj['click_x'] + delta_y=cont.sensors['DownM'].position[1]-obj['click_y'] + + # Orbit + if obj['manip_mode']==0: + x0 = scene.objects['Orbit'].worldPosition.x + y0 =scene.objects['Orbit'].worldPosition.y + z0 =scene.objects['Orbit'].worldPosition.z + width = bge.render.getWindowWidth() + height = bge.render.getWindowHeight() + dist_orbit = math.sqrt(((width/2)-obj['click_x'])**2+((height/2)-obj['click_y'])**2) + if dist_orbit<215 : # Orbit sur x et z (150 valeur déterminée visuellement, anciennement 235) + circle ([x0,y0,z0], 5, color_cmd) + n=10 + pas_x=(delta_x*40*sensibilite_orbit)/n + pas_y=(((width/2)-cont.sensors['DownM'].position[0])+((height/2)-cont.sensors['DownM'].position[1]))*0.005 + pas_z=(delta_y*40*sensibilite_orbit)/n + for i in range (n): + bge.render.drawLine([x0+pas_x*i, y0+abs(pas_y*math.sin((3.14*i)/n)), z0-pas_z*i], + [x0+pas_x*(i+1), y0+abs(pas_y*math.sin((3.14*(i+1))/n)), z0-pas_z*(i+1)], + [0.8, 0.619, 0.021]) + scene.objects['Mecanism'].applyRotation((delta_y*sensibilite_orbit, 0, delta_x*sensibilite_orbit), False) + else: # Orbit sur y + circle ([x0,y0,z0], 5, color_cmd_hl) + if abs(delta_x) >= abs(delta_y): + scene.objects['Mecanism'].applyRotation((0, delta_x*sensibilite_orbit, 0), False) + else: + scene.objects['Mecanism'].applyRotation((0, delta_y*sensibilite_orbit, 0), False) + # FIXME : Détecter le sens (trigo ou horaire) + # print ("cont.sensors['DownM'].position[0]", cont.sensors['DownM'].position[0]) + # print ("cont.sensors['DownM'].position[1]", cont.sensors['DownM'].position[1]) + # print ("delta_x", delta_x) + # print ("delta_y", delta_y) + # # if delta_x != 0 and delta_y != 0: + # # print ("delta :", math.sqrt(abs(delta_x*delta_y))*sensibilite_orbit*(delta_x/abs(delta_x))*(delta_y/abs(delta_y))) + # # scene.objects['Mecanism'].applyRotation((0, math.sqrt(abs(delta_x*delta_y))*sensibilite_orbit*(delta_x/abs(delta_x))*(delta_y/abs(delta_y)), 0), False) + # # elif delta_y != 0: + # # print ("delta :", math.sqrt(abs(delta_x*delta_y))*sensibilite_orbit*(delta_y/abs(delta_y))) + # # scene.objects['Mecanism'].applyRotation((0, math.sqrt(abs(delta_x*delta_y))*sensibilite_orbit*(delta_y/abs(delta_y)), 0), False) + # # elif delta_x != 0: + # # print ("delta :", math.sqrt(abs(delta_x*delta_y))*sensibilite_orbit*(delta_x/abs(delta_x))) + # # scene.objects['Mecanism'].applyRotation((0, math.sqrt(abs(delta_x*delta_y))*sensibilite_orbit*(delta_x/abs(delta_x)), 0), False) + # if abs(delta_x) >= abs(delta_y): + # scene.objects['Mecanism'].applyRotation((0, delta_x*sensibilite_orbit, 0), False) + # # if cont.sensors['DownM'].position[1] > height /2: + # # scene.objects['Mecanism'].applyRotation((0, delta_x*sensibilite_orbit, 0), False) + # # else: + # # scene.objects['Mecanism'].applyRotation((0, -delta_x*sensibilite_orbit, 0), False) + # else: + # scene.objects['Mecanism'].applyRotation((0, delta_y*sensibilite_orbit, 0), False) + # # if cont.sensors['DownM'].position[0] > width /2: + # # scene.objects['Mecanism'].applyRotation((0, delta_y*sensibilite_orbit, 0), False) + # # else: + # # scene.objects['Mecanism'].applyRotation((0, -delta_y*sensibilite_orbit, 0), False) + + # Pan + if obj['manip_mode']==1: # Shift + scene.objects['Mecanism'].applyMovement((delta_x*sensibilite_pan, -delta_y*sensibilite_pan, -delta_y*sensibilite_pan), False) + # scene.objects['Camera'].applyMovement((delta_x*-sensibilite_pan, delta_y*sensibilite_pan, 0), True) + + # Zoom + if obj['manip_mode']==2: # Ctrl + scene.objects['Camera'].applyMovement((0, 0, (delta_x+delta_y)*sensibilite_zoom), True) + scene.objects['Camera'].applyMovement((0, 0, (delta_x+delta_y)*sensibilite_zoom), True) + +## +# Zoom +## + +def manip_wheel(cont): + obj = cont.owner + sensibilite_wheel = 20 + if cont.sensors['WheelUp'].positive: + scene.objects['Camera'].applyMovement((0, 0, -sensibilite_wheel), True) + if cont.sensors['WheelDown'].positive: + scene.objects['Camera'].applyMovement((0, 0, sensibilite_wheel), True) + +## +# Vue en éclaté +## + +# Position de départ pour l'éclatement de la vue +def expld_start(cont): + if scene.objects['Mecanism']['manip_mode']==1: + obj = cont.owner + obj['click_x']=cont.sensors['Click'].position[0] + obj['click_y']=cont.sensors['Click'].position[1] + +# Déplacement des composants en vue eclatée +def expld(cont): + obj = cont.owner + sensibilite=0.005 + delta=(cont.sensors['Down'].position[0]-obj['click_x'])+(cont.sensors['Down'].position[1]-obj['click_y']) + objects = scene.objects['Mecanism']['objects'] + if obj['manip_mode']==1: # Shift + scene.objects['Mecanism']['expld'] =True + for object in objects : + ecla_x, ecla_y,ecla_z = 0,0,0 + if 'ecla_x' in scene.objects[object]: + ecla_x = scene.objects[object]['ecla_x'] + if 'ecla_y' in scene.objects[object]: + ecla_y = scene.objects[object]['ecla_y'] + if 'ecla_z' in scene.objects[object]: + ecla_z = scene.objects[object]['ecla_z'] + + # Déplacement dans le repère du mécanisme + x_axis = scene.objects['Mecanism'].orientation.col[0] + y_axis = scene.objects['Mecanism'].orientation.col[1] + z_axis = scene.objects['Mecanism'].orientation.col[2] + scene.objects[object].applyMovement((delta*sensibilite*ecla_x*x_axis[0], delta*sensibilite*ecla_x*x_axis[1] , delta*sensibilite*ecla_x*x_axis[2]), False) + scene.objects[object].applyMovement((delta*sensibilite*ecla_y*y_axis[0], delta*sensibilite*ecla_y*y_axis[1] , delta*sensibilite*ecla_y*y_axis[2]), False) + scene.objects[object].applyMovement((delta*sensibilite*ecla_z*z_axis[0], delta*sensibilite*ecla_z*z_axis[1] , delta*sensibilite*ecla_z*z_axis[2]), False) + +############################################################################### +# Eclaté +############################################################################### + +# Position de départ pour l'éclatement de la vue +def explode_start(cont): + if scene.objects['Mecanism']['manip_mode']==1: + obj = cont.owner + obj['click_x']=cont.sensors['Click'].position[0] + obj['click_y']=cont.sensors['Click'].position[1] + +# Déplacement des composants en vue éclatée +def explode(cont): + obj = cont.owner + sensibilite=0.005 + delta=(cont.sensors['Down'].position[0]-obj['click_x'])+(cont.sensors['Down'].position[1]-obj['click_y']) + if obj['manip_mode']==1: # Shift + scene.objects['Mecanism']['exploded'] =True + for objet in objets : + ecla_x, ecla_y,ecla_z = 0,0,0 + if 'ecla_x' in scene.objects[objet]: + ecla_x = scene.objects[objet]['ecla_x'] + if 'ecla_y' in scene.objects[objet]: + ecla_y = scene.objects[objet]['ecla_y'] + if 'ecla_z' in scene.objects[objet]: + ecla_z = scene.objects[objet]['ecla_z'] + + # Déplacement dans le repère du mécanisme + x_axis = scene.objects['Mecanism'].orientation.col[0] + y_axis = scene.objects['Mecanism'].orientation.col[1] + z_axis = scene.objects['Mecanism'].orientation.col[2] + scene.objects[objet].applyMovement((delta*sensibilite*ecla_x*x_axis[0], delta*sensibilite*ecla_x*x_axis[1] , delta*sensibilite*ecla_x*x_axis[2]), False) + scene.objects[objet].applyMovement((delta*sensibilite*ecla_y*y_axis[0], delta*sensibilite*ecla_y*y_axis[1] , delta*sensibilite*ecla_y*y_axis[2]), False) + scene.objects[objet].applyMovement((delta*sensibilite*ecla_z*z_axis[0], delta*sensibilite*ecla_z*z_axis[1] , delta*sensibilite*ecla_z*z_axis[2]), False) + +############################################################################### +# Couleur +############################################################################### + +# Reset des couleurs du mécanisme +def color_reset(): + colors_dict = scene.objects['Mecanism']['colors_dict'] + for object in scene.objects['Mecanism']['objects'] : + scene.objects[object].color = colors_dict[scene.objects['Mecanism']['objects_dict'][object][2]] + scene.objects['Nomenclature-'+str(scene.objects['Mecanism']['objects_dict'][object][0])].color = colors_dict[scene.objects['Mecanism']['objects_dict'][object][2]] + scene.objects['Nomenclature-'+str(scene.objects['Mecanism']['objects_dict'][object][0])+'-Hl'].color = colors_dict[scene.objects['Mecanism']['objects_dict'][object][2]] + +# Sélection couleur dans la palette avec son numéro de couleur (bas niveau) +def color_num(num): + for i in range (1, 9): + scene.objects['Color-'+str(i)].worldScale=[0.125, 0.125, 0.125] + scene.objects['Color-'+str(i)+"-Hl"].worldScale=[0.125, 0.125, 0.125] + scene.objects['Color-'+str(num)].worldScale=[0.156, 0.156, 0.156] + scene.objects['Color-'+str(num)+'-Hl'].worldScale=[0.156, 0.156, 0.156] + scene.objects['Colors']['color_current']=num + +# Clic sur la palette +def color_click(cont): + obj = cont.owner + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['Mecanism']['manip_mode']==0: + color_num(int(obj.name[6])) + +# Highlight de la palette +def color_hl(cont): + if cont.sensors['MO'].positive and scene.objects['Mecanism']['manip_mode']==0: + hitObject = cont.sensors['MO'].hitObject + if hitObject is not None and "-Hl" not in hitObject .name: + hitObject.setVisible(False,True) + scene.objects[hitObject.name+'-Hl'].setVisible(True,True) + # obj.color = color_cmd_hl + if cont.sensors['MO'].status == JUST_RELEASED: + for i in range (1, 9): + scene.objects['Color-'+str(i)].setVisible(True,True) + scene.objects['Color-'+str(i)+"-Hl"].setVisible(False,True) + +# Colorisation de la pièce +def color_object(cont): + if cont.sensors['Click'].positive and scene.objects['Mecanism']['manip_mode']==0: + hitObject = cont.sensors['MO'].hitObject + if hitObject is not None and hitObject.visible: + color_select = scene.objects['Colors']['color_current'] + if color_select != 0 and color_select != 8: + colors = scene.objects['Mecanism']['colors'] + hitObject.color = colors[color_select-1][1] + scene.objects['Nomenclature-'+str(scene.objects['Mecanism']['objects_dict'][hitObject.name][0])].color = colors[color_select-1][1] + scene.objects['Nomenclature-'+str(scene.objects['Mecanism']['objects_dict'][hitObject.name][0])+'-Hl'].color = colors[color_select-1][1] + if color_select == 8: # Couleur transparente -> disparition + hitObject.setVisible(False,False) + hitObject.suspendPhysics (True) + +############################################################################### +# Objets +############################################################################### + +# Initialisation du mécanisme +def objects_init(): + + objects = scene.objects['Mecanism']['objects'] + objects_dict = scene.objects['Mecanism']['objects_dict'] + colors_dict = scene.objects['Mecanism']['colors_dict'] + + i=1 + for object in objects: + + # Couleurs + scene.objects[object].color = colors_dict[objects_dict[object][2]] + + # Nomenclature + scene.objects['Nomenclature-'+str(i)]['Text'] = objects_dict[object][1] + scene.objects['Nomenclature-'+str(i)]['Object'] = objects[i-1] + scene.objects['Nomenclature-'+str(i)].color = colors_dict[objects_dict[object][2]] + scene.objects['Nomenclature-'+str(i)+'-Hl'].setVisible(False,False) + scene.objects['Nomenclature-'+str(i)+'-Hl']['Text'] = objects_dict[object][1] + scene.objects['Nomenclature-'+str(i)+'-Hl'].color = colors_dict[objects_dict[object][2]] + scene.objects['Nomenclature-'+str(i)+'-Ot']['Text'] = objects_dict[object][1] + scene.objects['Nomenclature-'+str(i)+'-Ot2']['Text'] = objects_dict[object][1] + scene.objects['Nomenclature-'+str(i)+'-Ot2'].setVisible(False,False) + + # Repères + if len(objects_dict[object][3])>0: + scene.objects['Rep-'+str(i)]['Object'] = objects[i-1] + scene.objects['Rep-'+str(i)].color = color_rep_disabled + scene.objects['Rep-'+str(i)+'-Hl'].setVisible(False,False) + for j in range (len (objects_dict[object][3])): + scene.objects[objects_dict[object][3][j]].setVisible(False,True) + + i +=1 + +# Highlight de la pièce dans la nomenclature +def object_hl(cont): + if cont.sensors['MO'].status == JUST_ACTIVATED and scene.objects['Mecanism']['manip_mode']==0: + hitObject = cont.sensors['MO'].hitObject + if hitObject is not None and hitObject.visible: + scene.objects['Nomenclature-'+str(scene.objects['Mecanism']['objects_dict'][hitObject.name][0])].setVisible(False,False) + scene.objects['Nomenclature-'+str(scene.objects['Mecanism']['objects_dict'][hitObject.name][0])+'-Hl'].setVisible(True,False) + scene.objects['Nomenclature-'+str(scene.objects['Mecanism']['objects_dict'][hitObject.name][0])+'-Ot2'].setVisible(True,False) + if cont.sensors['MO'].status == JUST_RELEASED: + for objet in scene.objects['Mecanism']['objects'] : + scene.objects['Nomenclature-'+str(scene.objects['Mecanism']['objects_dict'][objet][0])].setVisible(True,False) + scene.objects['Nomenclature-'+str(scene.objects['Mecanism']['objects_dict'][objet][0])+'-Hl'].setVisible(False,False) + scene.objects['Nomenclature-'+str(scene.objects['Mecanism']['objects_dict'][objet][0])+'-Ot2'].setVisible(False,False) + +############################################################################### +# Nomenclature +############################################################################### + +# Click sur la nomemclature +def nom_click(cont): + name=cont.owner.name[:-7] + obj = scene.objects[name] + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['Mecanism']['manip_mode']==0: + color_select = scene.objects['Colors']['color_current'] + + # Colorisation de la pièce par la nomenclaturep + if color_select != 0 and color_select != 8: + colors = scene.objects['Mecanism']['colors'] + obj.color = colors[color_select-1][1] + scene.objects[name+'-Hl'].color = colors[color_select-1][1] + scene.objects[obj['Object']].color = colors[color_select-1][1] + if scene.objects[obj['Object']].visible==False: + scene.objects[obj['Object']].setVisible(True,False) + scene.objects[obj['Object']].restorePhysics() + + # Couleur transparente -> disparition / apparition + if color_select == 8: + if scene.objects[obj['Object']].visible==True: + scene.objects[obj['Object']].setVisible(False,False) + scene.objects[obj['Object']].suspendPhysics (True) + else: + scene.objects[obj['Object']].setVisible(True,False) + scene.objects[obj['Object']].restorePhysics() + +# Highlight de la nomenclature +def nom_hl(cont): + name=cont.owner.name[:-7] + obj = scene.objects[name] + if cont.sensors['MO'].status == JUST_ACTIVATED and scene.objects['Mecanism']['manip_mode']==0: + obj.setVisible(False,False) + scene.objects[name+'-Hl'].setVisible(True,False) + scene.objects[name+'-Ot2'].setVisible(True,False) + if cont.sensors['MO'].status == JUST_RELEASED and scene.objects['Mecanism']['manip_mode']==0: + obj.setVisible(True,False) + scene.objects[name+'-Hl'].setVisible(False,False) + scene.objects[name+'-Ot2'].setVisible(False,False) + +############################################################################### +# Repères +############################################################################### + +# Click sur un repère +def rep_click(cont): + name=cont.owner.name[:-7] + obj = scene.objects[name] + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['Mecanism']['manip_mode']==0: + objects_dict = scene.objects['Mecanism']['objects_dict'] + if obj['enabled']: + for i in range (len (objects_dict[obj['Object']][3])): + scene.objects[objects_dict[obj['Object']][3][i]].setVisible(False,True) + obj.color = color_rep_disabled + obj['enabled']=False + else: + for i in range (len (objects_dict[obj['Object']][3])): + scene.objects[objects_dict[obj['Object']][3][i]].setVisible(True,True) + obj.color = color_rep_enabled + obj['enabled']=True + +# Highlight sur un repère +def rep_hl(cont): + name=cont.owner.name[:-7] + obj = scene.objects[name] + if cont.sensors['MO'].status == JUST_ACTIVATED and scene.objects['Mecanism']['manip_mode']==0: + obj.setVisible(False,False) + scene.objects[name+'-Hl'].setVisible(True,False) + if cont.sensors['MO'].status == JUST_RELEASED and scene.objects['Mecanism']['manip_mode']==0: + obj.setVisible(True,False) + scene.objects[name+'-Hl'].setVisible(False,False) diff --git a/cine_about.py b/cine_about.py new file mode 100644 index 0000000..11825f0 --- /dev/null +++ b/cine_about.py @@ -0,0 +1,128 @@ +import bge # Bibliothèque Blender Game Engine (UPBGE) +import webbrowser +import numpy as np + +############################################################################### +# cine_about.py +# @title: A propos du player 3D d'analyse de cinématique +# @project: Blender-EduTech +# @lang: fr +# @authors: Philippe Roy +# @copyright: Copyright (C) 2020-2022 Philippe Roy +# @license: GNU GPL +############################################################################### + +# UPBGE scene +scene = bge.logic.getCurrentScene() + +# Colors +color_link = [0.051, 0.270, 0.279,1] # Turquoise +# color_link = [0.024, 0.006, 0.8, 1] # Bleu +color_link_hl = [0.8, 0.005, 0.315, 1] # Magenta + +# UPBGE constants +JUST_ACTIVATED = bge.logic.KX_INPUT_JUST_ACTIVATED +JUST_RELEASED = bge.logic.KX_INPUT_JUST_RELEASED +ACTIVATE = bge.logic.KX_INPUT_ACTIVE +# JUST_DEACTIVATED = bge.logic.KX_SENSOR_JUST_DEACTIVATED + +## +# Ouverture +## + +def open(): + scene.active_camera = scene.objects["Camera-About"] + scene.objects['About_close'].color= color_link + scene.objects['About_screen-up'].color= color_link + scene.objects['About_screen-down'].color= color_link + scene.objects['About_screen']['Text']= "Taille écran : "+str(bge.render.getWindowWidth()) +" x "+str(bge.render.getWindowHeight()) + + scene.objects['About_link-git'].color= color_link + scene.objects['About_link-git']['Text'] = "Dépôt des sources" # Pas de ô dans Blender + scene.objects['About_link-gpl'].color= color_link + scene.objects['About_link-upbge'].color= color_link + + scene.objects['About'].setVisible(True,True) + +def close(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : + if scene.objects['About']['anim'] == True: + start = scene.objects['Mecanism']['anim_frame'] + end = 250 + layer = 0 + priority = 1 + blendin = 1.0 + mode = bge.logic.KX_ACTION_MODE_PLAY + layerWeight = 0.0 + ipoFlags = 0 + speed = 1.0 + for objet in scene.objects['Mecanism']['objects_anim'] : + scene.objects[objet].playAction(objet+'-Action', start, end, layer, priority, blendin, mode, layerWeight, ipoFlags, speed) + scene.objects['Mecanism']['anim'] = True + scene.objects['About']['anim'] == False + scene.active_camera = scene.objects["Camera"] + scene.objects['About'].setVisible(False,True) + +## +# Highlight +## + +def hl(cont): + if cont.sensors['MO'].status == JUST_ACTIVATED: + obj = cont.owner + name=obj.name[:-7] + scene.objects[name].color = color_link_hl + + if cont.sensors['MO'].status == JUST_RELEASED: + obj = cont.owner + name=obj.name[:-7] + scene.objects[name].color = color_link + +## +# Liens +## + +def link(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : + obj = cont.owner + name=obj.name[:-7] + link={ + 'About_link-git' : 'https://gitlab.com/blender-edutech/', + 'About_link-gpl' : 'https://www.gnu.org/licenses/gpl-3.0.html', + 'About_link-upbge' : 'https://www.upbge.org'} + webbrowser.open(link [name]) + +## +# Configuration de l'écran +## + +def get_near_pos(array,value): + array = np.asarray(array) + idx = (np.abs(array-value)).argmin() + return idx + +# Taille de l'écran + +def screen_up(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : + screen_width_mode=[640, 960, 1280, 1920] + screen_height_mode=[360, 540, 720,1080] + screen_mode_txt=["640x360", "960x540", "1280x720", "1920x1080"] + i = get_near_pos(screen_width_mode, bge.render.getWindowWidth()) + if i>=0 and i<3 : + screen_width=screen_width_mode[i+1] + screen_height=screen_height_mode[i+1] + scene.objects['About_screen']['Text']= "Taille écran : "+str(screen_width) +" x "+str(screen_height) + bge.render.setWindowSize(screen_width,screen_height) + +# Taille de l'écran - +def screen_down(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : + screen_width_mode=[640, 960, 1280, 1920] + screen_height_mode=[360, 540, 720,1080] + screen_mode_txt=["640x360", "960x540", "1280x720", "1920x1080"] + i = get_near_pos(screen_width_mode, bge.render.getWindowWidth()) + if i>0 and i<=3 : + screen_width=screen_width_mode[i-1] + screen_height=screen_height_mode[i-1] + scene.objects['About_screen']['Text']= "Taille écran : "+str(screen_width) +" x "+str(screen_height) + bge.render.setWindowSize(screen_width,screen_height) diff --git a/cine_config.xml b/cine_config.xml new file mode 100644 index 0000000..0dd1a39 --- /dev/null +++ b/cine_config.xml @@ -0,0 +1,6 @@ + + + 1280 + 720 + + \ No newline at end of file diff --git a/cine_doc.py b/cine_doc.py new file mode 100644 index 0000000..fc31dd9 --- /dev/null +++ b/cine_doc.py @@ -0,0 +1,68 @@ +import bge # Bibliothèque Blender Game Engine (UPBGE) + +############################################################################### +# cine_doc.py +# @title: Documentation du player 3D d'analyse de cinématique +# @project: Blender-EduTech +# @lang: fr +# @authors: Philippe Roy +# @copyright: Copyright (C) 2020-2022 Philippe Roy +# @license: GNU GPL +############################################################################### + +# UPBGE scene +scene = bge.logic.getCurrentScene() + +# Colors +color_link = [0.051, 0.270, 0.279,1] # Turquoise +# color_link = [0.024, 0.006, 0.8, 1] # Bleu +color_link_hl = [0.8, 0.005, 0.315, 1] # Magenta + +# UPBGE constants +JUST_ACTIVATED = bge.logic.KX_INPUT_JUST_ACTIVATED +JUST_RELEASED = bge.logic.KX_INPUT_JUST_RELEASED +ACTIVATE = bge.logic.KX_INPUT_ACTIVE +# JUST_DEACTIVATED = bge.logic.KX_SENSOR_JUST_DEACTIVATED + +## +# Ouverture +## + +def open(): + scene.active_camera = scene.objects["Camera-Doc"] + scene.objects['Doc_close'].color= color_link + scene.objects['Doc'].setVisible(True,True) + +def close(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : + if scene.objects['Doc']['anim'] == True: + start = scene.objects['Mecanism']['anim_frame'] + end = 250 + layer = 0 + priority = 1 + blendin = 1.0 + mode = bge.logic.KX_ACTION_MODE_PLAY + layerWeight = 0.0 + ipoFlags = 0 + speed = 1.0 + for objet in scene.objects['Mecanism']['objects_anim'] : + scene.objects[objet].playAction(objet+'-Action', start, end, layer, priority, blendin, mode, layerWeight, ipoFlags, speed) + scene.objects['Mecanism']['anim'] = True + scene.objects['Doc']['anim'] == False + scene.active_camera = scene.objects["Camera"] + scene.objects['Doc'].setVisible(False,True) + +## +# Highlight +## + +def hl(cont): + if cont.sensors['MO'].status == JUST_ACTIVATED: + obj = cont.owner + name=obj.name[:-7] + scene.objects[name].color = color_link_hl + + if cont.sensors['MO'].status == JUST_RELEASED: + obj = cont.owner + name=obj.name[:-7] + scene.objects[name].color = color_link diff --git a/hemomixer/cine.py b/hemomixer/cine.py new file mode 120000 index 0000000..202c7da --- /dev/null +++ b/hemomixer/cine.py @@ -0,0 +1 @@ +/home/phroy/Bureau/seriousgames/blender-edutech/git/kinematic-player/cine.py \ No newline at end of file diff --git a/hemomixer/cine_about.py b/hemomixer/cine_about.py new file mode 120000 index 0000000..df92645 --- /dev/null +++ b/hemomixer/cine_about.py @@ -0,0 +1 @@ +/home/phroy/Bureau/seriousgames/blender-edutech/git/kinematic-player/cine_about.py \ No newline at end of file diff --git a/hemomixer/cine_config.xml b/hemomixer/cine_config.xml new file mode 120000 index 0000000..ec48df5 --- /dev/null +++ b/hemomixer/cine_config.xml @@ -0,0 +1 @@ +/home/phroy/Bureau/seriousgames/blender-edutech/git/kinematic-player/cine_config.xml \ No newline at end of file diff --git a/hemomixer/cine_doc.py b/hemomixer/cine_doc.py new file mode 120000 index 0000000..e936682 --- /dev/null +++ b/hemomixer/cine_doc.py @@ -0,0 +1 @@ +/home/phroy/Bureau/seriousgames/blender-edutech/git/kinematic-player/cine_doc.py \ No newline at end of file diff --git a/hemomixer/hemomixer-11.blend b/hemomixer/hemomixer-11.blend new file mode 100644 index 0000000..212ff1e Binary files /dev/null and b/hemomixer/hemomixer-11.blend differ diff --git a/hemomixer/hemomixer.py b/hemomixer/hemomixer.py new file mode 100644 index 0000000..ad9e709 --- /dev/null +++ b/hemomixer/hemomixer.py @@ -0,0 +1,699 @@ +import bge # Bibliothèque Blender Game Engine (BGE) +import webbrowser +import math + +############################################################################### +# batoncolle.py +# @title: Commandes pour le player 3D de l'hémomixer (système de clampage) +# @project: Blender-EduTech +# @lang: fr +# @authors: Philippe Roy +# @copyright: Copyright (C) 2020-2022 Philippe Roy +# @license: GNU GPL +# +# Commandes déclenchées par UPBGE pour le modèle de l'hémomixer (système de clampage) +# +# Ce player 3D est un environnement léger et spécifique pour la colorisation des solides d'un mécanisme en mouvement. +# Il sert principalement pour l'apprentissage de la détection des classes d'équivalence d'un mécanisme afin de pouvoir faire sa modélisation cinématique. +# +############################################################################### + +# Récupérer la scène 3D +scene = bge.logic.getCurrentScene() +# print("Objets de la scene : ", scene.objects) + +# Objets 3D + +objets=['Bloc clampeur', 'Disque', 'Moteur', 'Réducteur', 'Tige clampeur', 'Axe 1', 'Ressort', 'Palonnier', 'Axe réducteur', 'Sabot', 'Support moteur', 'Support clampeur', + 'Maillon droite', 'Maillon gauche', 'Maillon axe 1', 'Maillon axe 2', 'Guide palonnier', 'Bague 2', 'Bague 1', 'Ecrou 1', 'Ecrou 2', 'Ecrou 3', 'Ecrou 4', 'Ecrou 5', 'Ecrou 6', + 'Goujon', 'Rondelle 1', 'Rondelle 4', 'Rondelle 2', 'Rondelle 3', 'Vis 5', 'Vis 1', 'Vis 2', 'Vis 3', 'Vis 4', 'Axe 2', 'Circlips 1', 'Circlips 2', 'Circlips 3'] + +objets_anim=['Disque', 'Ressort', 'Palonnier', 'Axe réducteur', 'Maillon gauche', 'Maillon axe 1'] + +objets_couleur=['VioletF', 'TurquoiseF', 'Couleur7', 'MagentaF', 'Couleur4', 'GrisF', 'Couleur6', 'VertF', 'MagentaF', 'Couleur5', 'Couleur2', 'Couleur1', 'RougeF', 'Couleur3', 'GrisF', 'GrisF', + 'Gris', 'GrisC', 'GrisC', 'Gris', 'Gris', 'Gris', 'Gris', 'Gris', 'Gris', 'GrisF', 'GrisC', 'GrisC', 'GrisC', 'GrisC', 'Gris', 'Gris', 'Gris', 'Gris', 'Gris', 'GrisF', 'Gris', 'Gris', 'Gris'] + +objets_rep=[] # Objet avec un repère +objets_rep_dict={} + +# Couleurs + +couleurs=[['Couleur1', [0.202, 0.114, 0.512,1]], + ['Couleur2', [0.051, 0.270, 0.279,1]], + ['Couleur3', [0.799, 0.031, 0.038,1]], + ['Couleur4', [0.799, 0.130, 0.063,1]], + ['Couleur5', [0.8, 0.619, 0.021,1]], + ['Couleur6', [0.246, 0.687, 0.078,1]], + ['Couleur7', [0.800, 0.005, 0.315,1]], + ['Couleur8', [0.75,0.751, 0.75,0]]] + +couleurs_dict={'Couleur1' : [0.202, 0.114, 0.512, 1], + 'Couleur2' : [0.051, 0.270, 0.279, 1], + 'Couleur3' : [0.799, 0.031, 0.038, 1], + 'Couleur4' : [0.799, 0.130, 0.063, 1], + 'Couleur5' : [0.8, 0.619, 0.021, 1], + 'Couleur6' : [0.246, 0.687, 0.078, 1], + 'Couleur7' : [0.800, 0.005, 0.315, 1], + 'Couleur8' : [0.75,0.75, 0.75, 0], + 'TurquoiseF' : [0.019,0.107, 0.105, 1], + 'MagentaF' : [0.212,0.003, 0.089, 1], + 'VertF' : [0.041,0.127, 0.014, 1], + 'VioletF' : [0.080,0.046, 0.307, 1], + 'RougeF' : [0.175,0.010, 0.012, 1], + 'Gris' : [0.258,0.275, 0.319, 1], + 'GrisF' : [0.087,0.093, 0.107, 1], + 'GrisC' : [0.501,0.534, 0.621, 1], + 'Blanc' : [0.8, 0.8, 0.8, 1]} + +couleur_cmd = [0.8, 0.8, 0.8, 1] # blanc +couleur_cmd_hl = [0.8, 0.619, 0.021, 1] # jaune +couleur_lien = [0.024, 0.006, 0.8, 1] # bleu +couleur_lien_hl = [0.8, 0.005, 0.315, 1] # bleu + +# Constantes + +JUST_ACTIVATED = bge.logic.KX_INPUT_JUST_ACTIVATED +JUST_RELEASED = bge.logic.KX_INPUT_JUST_RELEASED +ACTIVATE = bge.logic.KX_INPUT_ACTIVE +# JUST_DEACTIVATED = bge.logic.KX_SENSOR_JUST_DEACTIVATED + +############################################################################### +# Gestion du clavier +############################################################################### + +# Mode : Pan(1) avec Shift, Zoom (2) avec Ctrl, Orbit (0), Eclaté avec Shift +def mode(cont): + obj = cont.owner + keyboard = bge.logic.keyboard + + # Shift -> mode 1 : Pan (clic milieu) ou Eclaté (clic gauche) + if JUST_ACTIVATED in keyboard.inputs[bge.events.LEFTSHIFTKEY].queue: + obj['manip_mode']=1 + if JUST_ACTIVATED in keyboard.inputs[bge.events.RIGHTSHIFTKEY].queue: + obj['manip_mode']=1 + + # Ctrl -> mode 2 : Zoom (clic milieu) + if JUST_ACTIVATED in keyboard.inputs[bge.events.LEFTCTRLKEY].queue: + obj['manip_mode']=2 + if JUST_ACTIVATED in keyboard.inputs[bge.events.RIGHTCTRLKEY].queue: + obj['manip_mode']=2 + + # Pas de modificateur -> mode 0 : Orbit (clic milieu) + if JUST_RELEASED in keyboard.inputs[bge.events.LEFTSHIFTKEY].queue: + obj['manip_mode']=0 + if JUST_RELEASED in keyboard.inputs[bge.events.RIGHTSHIFTKEY].queue: + obj['manip_mode']=0 + if JUST_RELEASED in keyboard.inputs[bge.events.LEFTCTRLKEY].queue: + obj['manip_mode']=0 + if JUST_RELEASED in keyboard.inputs[bge.events.RIGHTCTRLKEY].queue: + obj['manip_mode']=0 + + # Touche Home -> Reset de la vue + if JUST_ACTIVATED in keyboard.inputs[bge.events.HOMEKEY].queue: + scene.objects['Camera'].worldPosition.x = scene.objects['Camera']['init_lx'] + scene.objects['Camera'].worldPosition.y = scene.objects['Camera']['init_ly'] + scene.objects['Camera'].worldPosition.z = scene.objects['Camera']['init_lz'] + applyRotationTo(scene.objects['Mecanisme'], 0, 0, 0) + for objet in objets : + scene.objects[objet].setVisible(True,False) + scene.objects[objet+"_Lines.GP"].setVisible(True,False) + + # Retour après éclatement + if scene.objects['Mecanisme']['eclate'] ==True: + scene.objects['Mecanisme']['eclate'] = False + ecla_val = scene.objects['Mecanisme']['ecla_val'] # Retour après éclatement avec la valeur d'éclatement + sensibilite=0.005 + for objet in objets : + ecla_x, ecla_y,ecla_z = 0,0,0 + if 'ecla_x' in scene.objects[objet]: + ecla_x = scene.objects[objet]['ecla_x'] + if 'ecla_y' in scene.objects[objet]: + ecla_y = scene.objects[objet]['ecla_y'] + if 'ecla_z' in scene.objects[objet]: + ecla_z = scene.objects[objet]['ecla_z'] + scene.objects[objet].applyMovement((-ecla_val*sensibilite*ecla_x, -ecla_val*sensibilite*ecla_y , -ecla_val*sensibilite*ecla_z), False) + scene.objects['Mecanisme']['ecla_val'] = 0.00 + if scene.objects['Mecanisme']['anim'] == False: # Play d'une frame + anim_play1frame() + + # Touche Space -> Play et Pause + if JUST_ACTIVATED in keyboard.inputs[bge.events.SPACEKEY].queue: + if scene.objects['Mecanisme']['anim'] == True: + anim_pause() + scene.objects['Pause'].setVisible(False,False) + scene.objects['Play'].setVisible(True,False) + else: + anim_play() + scene.objects['Play'].setVisible(False,False) + scene.objects['Pause'].setVisible(True,False) + + # Touche H -> Cacher l'objet + if JUST_ACTIVATED in keyboard.inputs[bge.events.HKEY].queue: + couleur_choix_num(8) + + # Touche de 1 à 8 -> Couleur de 1 à 8 + if JUST_ACTIVATED in keyboard.inputs[bge.events.ONEKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD1].queue: + couleur_choix_num(1) + if JUST_ACTIVATED in keyboard.inputs[bge.events.TWOKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD2].queue: + couleur_choix_num(2) + if JUST_ACTIVATED in keyboard.inputs[bge.events.THREEKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD3].queue: + couleur_choix_num(3) + if JUST_ACTIVATED in keyboard.inputs[bge.events.FOURKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD4].queue: + couleur_choix_num(4) + if JUST_ACTIVATED in keyboard.inputs[bge.events.FIVEKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD5].queue: + couleur_choix_num(5) + if JUST_ACTIVATED in keyboard.inputs[bge.events.SIXKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD6].queue: + couleur_choix_num(6) + if JUST_ACTIVATED in keyboard.inputs[bge.events.SEVENKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD7].queue: + couleur_choix_num(7) + if JUST_ACTIVATED in keyboard.inputs[bge.events.EIGHTKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD8].queue: + couleur_choix_num(8) + +############################################################################### +# Commandes +############################################################################### + +# Init +def cmd_init(): + scene.objects['Aide-cmd-Hl'].setVisible(False,False) + scene.objects['Pause-Hl'].setVisible(False,False) + scene.objects['Play-Hl'].setVisible(False,False) + scene.objects['Raz-couleurs-Hl'].setVisible(False,False) + scene.objects['Raz-vue-Hl'].setVisible(False,False) + for i in range (1, 9): + scene.objects['Couleur'+str(i)+"-Hl"].setVisible(False,True) + +# Le highlight des commandes +def cmd_hl(cont): + obj = cont.owner + + # Activation + if cont.sensors['MO'].status == JUST_ACTIVATED and scene.objects['Mecanisme']['manip_mode']==0: + if obj.name!="Play" and obj.name!="Pause" and obj.name!="Play-Hl" and obj.name!="Pause-Hl": + obj.setVisible(False,True) + scene.objects[obj.name+'-Hl'].setVisible(True,True) + # obj.color = couleur_cmd_hl + + # Play et pause + if obj.name=="Pause" or obj.name=="Play": + if scene.objects['Mecanisme']['anim'] == True: + scene.objects['Pause'].setVisible(False,False) + scene.objects['Pause-Hl'].setVisible(True,False) + else: + scene.objects['Play'].setVisible(False,False) + scene.objects['Play-Hl'].setVisible(True,False) + + # Désactivation + if cont.sensors['MO'].status == JUST_RELEASED and scene.objects['Mecanisme']['manip_mode']==0: + if obj.name!="Play" and obj.name!="Pause" and obj.name!="Play-Hl" and obj.name!="Pause-Hl": + scene.objects[obj.name+'-Hl'].setVisible(False,True) + obj.setVisible(True,True) + + # Play et pause + if obj.name=="Pause" or obj.name=="Play": + if scene.objects['Mecanisme']['anim'] == True: + scene.objects['Pause-Hl'].setVisible(False,False) + scene.objects['Pause'].setVisible(True,False) + else: + scene.objects['Play-Hl'].setVisible(False,False) + scene.objects['Play'].setVisible(True,False) + +############################################################################### +# Animation +############################################################################### + +# Initialisation de l'animation -> Play +def anim_init(cont): + start = 1 + end = 250 + layer = 0 + priority = 1 + blendin = 1.0 + mode = bge.logic.KX_ACTION_MODE_LOOP + layerWeight = 0.0 + ipoFlags = 0 + speed = 1.0 + for objet in objets_anim : + scene.objects[objet].playAction(objet+'-Action', start, end, layer, priority, blendin, mode, layerWeight, ipoFlags, speed) + scene.objects['Play'].setVisible(False,False) + scene.objects['Pause'].setVisible(True,False) + scene.objects['Mecanisme']['anim'] = True + +# Animation en pause (bas niveau) +def anim_pause(): + layer = 0 + for objet in objets_anim : + scene.objects['Mecanisme']['anim_frame'] = scene.objects[objet].getActionFrame(layer) + scene.objects[objet].stopAction(layer) + scene.objects['Mecanisme']['anim'] = False + +# Animation en pseudo-pause +# Play d'une frame pour remettre les pièces en place +def anim_play1frame(): + start = scene.objects['Mecanisme']['anim_frame'] + end = scene.objects['Mecanisme']['anim_frame']+1 + layer = 0 + priority = 1 + blendin = 1.0 + mode = bge.logic.KX_ACTION_MODE_PLAY + layerWeight = 0.0 + ipoFlags = 0 + speed = 1.0 + for objet in objets_anim : + scene.objects[objet].playAction(objet+'-Action', start, end, layer, priority, blendin, mode, layerWeight, ipoFlags, speed) + scene.objects['Mecanisme']['anim_frame'] = end + +# Reprise de l'animation (bas niveau) +def anim_play(): + start = scene.objects['Mecanisme']['anim_frame'] + end = 250 + layer = 0 + priority = 1 + blendin = 1.0 + mode = bge.logic.KX_ACTION_MODE_PLAY + layerWeight = 0.0 + ipoFlags = 0 + speed = 1.0 + for objet in objets_anim : + scene.objects[objet].playAction(objet+'-Action', start, end, layer, priority, blendin, mode, layerWeight, ipoFlags, speed) + scene.objects['Mecanisme']['anim'] = True + +# Pause et replay par les commandes +def anim_cmd(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['Mecanisme']['manip_mode']==0: + + # Pause + if scene.objects['Mecanisme']['anim'] == True: + anim_pause() + scene.objects['Pause'].setVisible(False,False) + scene.objects['Pause-Hl'].setVisible(False,False) + scene.objects['Play-Hl'].setVisible(True,False) + else: + # Play + anim_play() + scene.objects['Play'].setVisible(False,False) + scene.objects['Play-Hl'].setVisible(False,False) + scene.objects['Pause-Hl'].setVisible(True,False) + +# Play en continu +def anim_boucle(cont): + if scene.objects['Mecanisme']['anim'] == True and scene.objects[objets_anim[0]].isPlayingAction(0) == False: + # scene.objects['Mecanisme']['anim_frame']=1 + start = 1 + end = 250 + layer = 0 + priority = 1 + blendin = 1.0 + mode = bge.logic.KX_ACTION_MODE_LOOP + layerWeight = 0.0 + ipoFlags = 0 + speed = 1.0 + for objet in objets_anim : + scene.objects[objet].playAction(objet+'-Action', start, end, layer, priority, blendin, mode, layerWeight, ipoFlags, speed) + +############################################################################### +# Manipulation du mécanisme +############################################################################### + +# Mémorisation de la position et orientation initiales du modèle et de la caméra +def manip_init(cont): + for objet in objets : + scene.objects[objet]['init_lx']=scene.objects[objet].worldPosition.x + scene.objects[objet]['init_ly']=scene.objects[objet].worldPosition.y + scene.objects[objet]['init_lz']=scene.objects[objet].worldPosition.z + if 'init_rx' in scene.objects[objet]: + scene.objects[objet]['init_rx'] = scene.objects[objet].worldOrientation.to_euler().x + if 'init_ry' in scene.objects[objet]: + scene.objects[objet]['init_ry'] = scene.objects[objet].worldOrientation.to_euler().y + if 'init_rz' in scene.objects[objet]: + scene.objects[objet]['init_rz'] = scene.objects[objet].worldOrientation.to_euler().z + scene.objects['Camera']['init_lx']=scene.objects['Camera'].worldPosition.x + scene.objects['Camera']['init_ly']=scene.objects['Camera'].worldPosition.y + scene.objects['Camera']['init_lz']=scene.objects['Camera'].worldPosition.z + scene.objects['Mecanisme']['init_lx']=scene.objects['Mecanisme'].worldPosition.x + scene.objects['Mecanisme']['init_ly']=scene.objects['Mecanisme'].worldPosition.y + scene.objects['Mecanisme']['init_lz']=scene.objects['Mecanisme'].worldPosition.z + scene.objects['Mecanisme']['init_rx']=scene.objects['Mecanisme'].worldOrientation.to_euler().x + scene.objects['Mecanisme']['init_ry']=scene.objects['Mecanisme'].worldOrientation.to_euler().y + scene.objects['Mecanisme']['init_rz']=scene.objects['Mecanisme'].worldOrientation.to_euler().z + +# def applyMovemenTo(obj, lx,ly,lz,rx,ry,rz): +# lres=0.001 # resolution location +# rres=0.001 # resolution rotation +# while (obj.worldPosition.x-lx > lres) or (obj.worldPosition.y-ly > lres) or (obj.worldPosition.z-lz > lres) or (obj.worldOrientation.to_euler().x-rx > rres) or (obj.worldOrientation.to_euler().y-ry > rres) or (obj.worldOrientation.to_euler().z-rz > rres): +# if obj.worldPosition.x-lx > lres: +# obj. applyMovement(lres,0,0) +# if obj.worldPosition.y-ly > lres: +# obj. applyMovement(0,lres,0 ) +# if obj.worldPosition.z-lz > lres: +# obj. applyMovement(0,0,lres) +# if obj.worldOrientation.to_euler().x-rx > rres: +# obj.applyRotation(rres,0,0) +# if obj.worldOrientation.to_euler().y-ry > rres: +# obj.applyRotation(0,rres,0) +# if obj.worldOrientation.to_euler().z-ry > rres: +# obj.applyRotation(0,0,rres) + +# def applyTranslationTo(obj, lx,ly,lz): +# lres=0.001 # resolution location +# while (obj.worldPosition.x-lx > lres) or (obj.worldPosition.y-ly > lres) or (obj.worldPosition.z-lz > lres): +# if obj.worldPosition.x-lx > lres: +# obj. applyMovement(lres,0,0) +# if obj.worldPosition.y-ly > lres: +# obj. applyMovement(0,lres,0 ) +# if obj.worldPosition.z-lz > lres: +# obj. applyMovement(0,0,lres) + +# Atteindre une orientation (bas niveau) +def applyRotationTo(obj, rx=None, ry=None, rz=None): + rres=0.001 # resolution rotation + + # x + if rx is not None: + while (abs(rx-obj.worldOrientation.to_euler().x) > rres) : + if obj.worldOrientation.to_euler().x-rx > rres: + obj.applyRotation((-rres, 0, 0), True) + if rx-obj.worldOrientation.to_euler().x > rres: + obj.applyRotation((rres, 0, 0), True) + # print ("delta x ",rx-obj.worldOrientation.to_euler().x) + + # y + if ry is not None: + while (abs(ry-obj.worldOrientation.to_euler().y) > rres) : + if obj.worldOrientation.to_euler().y-ry > rres: + obj.applyRotation((0, -rres, 0), True) + if ry-obj.worldOrientation.to_euler().y > rres: + obj.applyRotation((0, rres, 0), True) + # print ("delta y ",ry-obj.worldOrientation.to_euler().y) + + # z + if rz is not None: + while (abs(rz-obj.worldOrientation.to_euler().z) > rres) : + if obj.worldOrientation.to_euler().z-rz > rres: + obj.applyRotation((0, 0, -rres), True) + if rz-obj.worldOrientation.to_euler().z > rres: + obj.applyRotation((0, 0, rres), True) + # print ("delta z ",rz-obj.worldOrientation.to_euler().z) + +# Reset de la manipulation de la vue +def manip_reset(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['Mecanisme']['manip_mode']==0: + scene.objects['Camera'].worldPosition.x = scene.objects['Camera']['init_lx'] + scene.objects['Camera'].worldPosition.y = scene.objects['Camera']['init_ly'] + scene.objects['Camera'].worldPosition.z = scene.objects['Camera']['init_lz'] + applyRotationTo(scene.objects['Mecanisme'], 0, 0, 0) + for objet in objets : + scene.objects[objet].setVisible(True,False) + scene.objects[objet+"_Lines.GP"].setVisible(True,False) + + # Retour après éclatement + if scene.objects['Mecanisme']['eclate'] ==True: + scene.objects['Mecanisme']['eclate'] = False + ecla_val = scene.objects['Mecanisme']['ecla_val'] # Retour après éclatement avec la valeur d'éclatement + sensibilite=0.005 + for objet in objets : + ecla_x, ecla_y,ecla_z = 0,0,0 + if 'ecla_x' in scene.objects[objet]: + ecla_x = scene.objects[objet]['ecla_x'] + if 'ecla_y' in scene.objects[objet]: + ecla_y = scene.objects[objet]['ecla_y'] + if 'ecla_z' in scene.objects[objet]: + ecla_z = scene.objects[objet]['ecla_z'] + scene.objects[objet].applyMovement((-ecla_val*sensibilite*ecla_x, -ecla_val*sensibilite*ecla_y , -ecla_val*sensibilite*ecla_z), False) + scene.objects['Mecanisme']['ecla_val'] = 0.00 + if scene.objects['Mecanisme']['anim'] == False: # Play d'une frame + anim_play1frame() + +# Position de départ pour la manipulation de la vue +def manip_start(cont): + obj = cont.owner + obj['click_x']=cont.sensors['ClickM'].position[0] + obj['click_y']=cont.sensors['ClickM'].position[1] + +# Cacher le cercle de la manipulation Orbit +def manip_stop(cont): + scene.objects['Orbit'].setVisible(False,False) + +# Manipulation du modèle ou de la caméra +def manip(cont): + obj = cont.owner + sensibilite_orbit=0.0005 + sensibilite_pan=0.005 + sensibilite_zoom=0.01 + delta_x=cont.sensors['DownM'].position[0]-obj['click_x'] + delta_y=cont.sensors['DownM'].position[1]-obj['click_y'] + + # Orbit (1280 * 720 px) + if obj['manip_mode']==0: + scene.objects['Orbit'].color=couleur_cmd + scene.objects['Orbit'].setVisible(True,False) + dist_orbit = math.sqrt(((1280/2)-obj['click_x'])**2+((720/2)-obj['click_y'])**2) + if dist_orbit<235 : # Orbit sur x et z + n=10 + pas_x=(delta_x*40*sensibilite_orbit)/n + pas_y=(((1280/2)-cont.sensors['DownM'].position[0])+((720/2)-cont.sensors['DownM'].position[1]))*0.005 + pas_z=(delta_y*40*sensibilite_orbit)/n + for i in range (n): + bge.render.drawLine([scene.objects['Orbit'].worldPosition.x+pas_x*i, scene.objects['Orbit'].worldPosition.y+abs(pas_y*math.sin((3.14*i)/n)), scene.objects['Orbit'].worldPosition.z-pas_z*i], + [scene.objects['Orbit'].worldPosition.x+pas_x*(i+1), scene.objects['Orbit'].worldPosition.y+abs(pas_y*math.sin((3.14*(i+1))/n)), scene.objects['Orbit'].worldPosition.z-pas_z*(i+1)], + [0.8, 0.619, 0.021]) + scene.objects['Mecanisme'].applyRotation((delta_y*sensibilite_orbit, 0, delta_x*sensibilite_orbit), True) + else: # Orbit sur y + scene.objects['Orbit'].color=couleur_cmd_hl + if abs(delta_x) >= abs(delta_y): + scene.objects['Mecanisme'].applyRotation((0, delta_x*sensibilite_orbit, 0), True) + else: + scene.objects['Mecanisme'].applyRotation((0, delta_y*sensibilite_orbit, 0), True) + # if obj['manip_mode']==0: + # scene.objects['Mecanisme'].applyRotation((delta_y*sensibilite_orbit, 0, delta_x*sensibilite_orbit), True) + + # Pan + if obj['manip_mode']==1: # Shift + scene.objects['Camera'].applyMovement((delta_x*-sensibilite_pan, delta_y*sensibilite_pan, 0), True) + + # Zoom + if obj['manip_mode']==2: # Ctrl + scene.objects['Camera'].applyMovement((0, 0, (delta_x+delta_y)*sensibilite_zoom), True) + +# Manipulation du modèle ou de la caméra +def manip_wheel(cont): + obj = cont.owner + sensibilite_wheel = 20 + if cont.sensors['WheelUp'].positive: + scene.objects['Camera'].applyMovement((0, 0, -sensibilite_wheel), True) + if cont.sensors['WheelDown'].positive: + scene.objects['Camera'].applyMovement((0, 0, sensibilite_wheel), True) + +############################################################################### +# Eclaté +############################################################################### + +# Position de départ pour l'éclatement de la vue +def eclate_start(cont): + if scene.objects['Mecanisme']['manip_mode']==1: + obj = cont.owner + obj['click_x']=cont.sensors['Click'].position[0] + obj['click_y']=cont.sensors['Click'].position[1] + +# Déplacement des composants en vue éclatée +def eclate(cont): + obj = cont.owner + sensibilite=0.005 + delta=(cont.sensors['Down'].position[0]-obj['click_x'])+(cont.sensors['Down'].position[1]-obj['click_y']) + if obj['manip_mode']==1: # Shift + scene.objects['Mecanisme']['eclate'] =True + scene.objects['Mecanisme']['ecla_val'] =scene.objects['Mecanisme']['ecla_val']+delta + + # Déplacement dans le repère du mécanisme + x_axis = scene.objects['Mecanisme'].orientation.col[0] + y_axis = scene.objects['Mecanisme'].orientation.col[1] + z_axis = scene.objects['Mecanisme'].orientation.col[2] + for objet in objets : + ecla_x, ecla_y,ecla_z = 0,0,0 + if 'ecla_x' in scene.objects[objet]: + ecla_x = scene.objects[objet]['ecla_x'] + if 'ecla_y' in scene.objects[objet]: + ecla_y = scene.objects[objet]['ecla_y'] + if 'ecla_z' in scene.objects[objet]: + ecla_z = scene.objects[objet]['ecla_z'] + scene.objects[objet].applyMovement((delta*sensibilite*ecla_x*x_axis[0], delta*sensibilite*ecla_x*x_axis[1] , delta*sensibilite*ecla_x*x_axis[2]), False) + scene.objects[objet].applyMovement((delta*sensibilite*ecla_y*y_axis[0], delta*sensibilite*ecla_y*y_axis[1] , delta*sensibilite*ecla_y*y_axis[2]), False) + scene.objects[objet].applyMovement((delta*sensibilite*ecla_z*z_axis[0], delta*sensibilite*ecla_z*z_axis[1] , delta*sensibilite*ecla_z*z_axis[2]), False) + +############################################################################### +# Couleur +############################################################################### + +# Initialisation des couleurs du mécanisme +def couleur_init(): + # print("Objets de la scene : ", scene.objects) + i=0 + for objet in objets : + scene.objects[objet].color = couleurs_dict[objets_couleur[i]] + scene.objects[objet].setVisible(True,False) + scene.objects[objet+"_Lines.GP"].setVisible(True,False) + scene.objects[objet+"-Nom"].color = couleurs_dict[objets_couleur[i]] + scene.objects[objet+"-Nom-Hl"].color = couleurs_dict[objets_couleur[i]] + scene.objects[objet+"-Nom-Hl"].setVisible(False,False) + i +=1 + +# Reset des couleurs du mécanisme +def couleur_reset(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['Mecanisme']['manip_mode']==0: + couleur_init() + +# Sélection couleur dans la palette avec son numéro de couleur (bas niveau) +def couleur_choix_num(num): + for i in range (1, 9): + scene.objects['Couleur'+str(i)].worldScale=[3, 3, 3] + scene.objects['Couleur'+str(i)+"-Hl"].worldScale=[3, 3, 3] + scene.objects['Couleur'+str(num)].worldScale=[4, 4, 4] + scene.objects['Couleur'+str(num)+'-Hl'].worldScale=[4, 4, 4] + scene.objects['Couleurs']['couleur_select']=num + +# Sélection couleur dans la palette +def couleur_choix(cont): + obj = cont.owner + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['Mecanisme']['manip_mode']==0: + hitObject = cont.sensors['MO'].hitObject + if hitObject is not None and "-Hl" not in hitObject .name: + couleur_choix_num(int(hitObject .name[7])) + +# Le highlight de 'couleur_choix' +def couleur_choix_hl(cont): + if cont.sensors['MO'].positive and scene.objects['Mecanisme']['manip_mode']==0: + hitObject = cont.sensors['MO'].hitObject + if hitObject is not None and "-Hl" not in hitObject .name: + hitObject.setVisible(False,True) + scene.objects[hitObject.name+'-Hl'].setVisible(True,True) + # obj.color = couleur_cmd_hl + if cont.sensors['MO'].status == JUST_RELEASED: + for i in range (1, 9): + scene.objects['Couleur'+str(i)].setVisible(True,True) + scene.objects['Couleur'+str(i)+"-Hl"].setVisible(False,True) + +# Colorisation de la pièce +def couleur_objet(cont): + if cont.sensors['Click'].positive and scene.objects['Mecanisme']['manip_mode']==0: + hitObject = cont.sensors['MO'].hitObject + if hitObject is not None and hitObject.visible: + couleur_select = scene.objects['Couleurs']['couleur_select'] + if couleur_select != 0 and couleur_select != 8: + hitObject.color = couleurs[couleur_select-1][1] + scene.objects[hitObject.name+"-Nom"].color = couleurs[couleur_select-1][1] + scene.objects[hitObject.name+"-Nom-Hl"].color = couleurs[couleur_select-1][1] + if couleur_select == 8: # Couleur transparente -> disparition + hitObject.setVisible(False,False) + scene.objects[hitObject.name+"_Lines.GP"].setVisible(False,False) + +# Le highlight de 'couleur_objet' +def couleur_objet_hl(cont): + if cont.sensors['MO'].status == JUST_ACTIVATED and scene.objects['Mecanisme']['manip_mode']==0: + hitObject = cont.sensors['MO'].hitObject + if hitObject is not None and hitObject.visible: + scene.objects[hitObject.name+"-Nom"].setVisible(False,False) + scene.objects[hitObject.name+"-Nom-Hl"].setVisible(True,False) + if cont.sensors['MO'].status == JUST_RELEASED: + for objet in objets : + scene.objects[objet+"-Nom"].setVisible(True,False) + scene.objects[objet+"-Nom-Hl"].setVisible(False,False) + +############################################################################### +# Nomenclature +############################################################################### + +# Click sur la nomeclature +def nom(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and scene.objects['Mecanisme']['manip_mode']==0: + hitObject = cont.sensors['MO'].hitObject + if hitObject is not None: + + # Afficher/cacher les repères de la pièce + if "-Nom-Rep" in hitObject.name: + obj=hitObject.name[:len(hitObject.name)-8] + if scene.objects[obj]['rep']==False: + scene.objects[obj]['rep']=True + hitObject.color=couleur_rep_actif + for rep in objets_rep_dict[obj]: + scene.objects[rep].setVisible(True,False) + else: + scene.objects[obj]['rep']=False + hitObject.color=couleur_rep_pasactif + for rep in objets_rep_dict[obj]: + scene.objects[rep].setVisible(False,False) + + # Colorisation de la pièce par la nomenclature + else: + couleur_select = scene.objects['Couleurs']['couleur_select'] + if couleur_select != 0 and couleur_select != 8: + hitObject.color = couleurs[couleur_select-1][1] + scene.objects[hitObject.name+"-Hl"].color = couleurs[couleur_select-1][1] + scene.objects[hitObject.name[0:len(hitObject.name)-4]].setVisible(True,False) + scene.objects[hitObject.name[0:len(hitObject.name)-4]].color = couleurs[couleur_select-1][1] + + if couleur_select == 8: # Couleur transparente -> disparition / apparition + obj=scene.objects[hitObject.name[0:len(hitObject.name)-4]] + obj_GP=scene.objects[hitObject.name[0:len(hitObject.name)-4]+"_Lines.GP"] + if obj.visible==True: + obj.setVisible(False,False) + obj_GP.setVisible(False,False) + else: + obj.setVisible(True,False) + obj_GP.setVisible(True,False) + # if couleur_select == 8: # Couleur transparente -> disparition + # scene.objects[hitObject.name[0:len(hitObject.name)-4]].setVisible(False,False) + +# Le highlight de la nomenclature +def nom_hl(cont): + if cont.sensors['MO'].status == JUST_ACTIVATED and scene.objects['Mecanisme']['manip_mode']==0: + hitObject = cont.sensors['MO'].hitObject + if hitObject is not None: + hitObject.setVisible(False,False) + scene.objects[hitObject.name+'-Hl'].setVisible(True,False) + # obj.color = couleur_cmd_hl + if cont.sensors['MO'].status == JUST_RELEASED and scene.objects['Mecanisme']['manip_mode']==0: + for objet in objets : + scene.objects[objet+"-Nom"].setVisible(True,False) + scene.objects[objet+"-Nom-Hl"].setVisible(False,False) + for objet in objets_rep : + scene.objects[objet+'-Nom-Rep'].setVisible(True,False) + scene.objects[objet+'-Nom-Rep-Hl'].setVisible(False,False) + +############################################################################### +# Aide +############################################################################### + +# Ouvrir la page d'aide +def aide(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : + # scene.replace('Scene-Aide') # Bug Eevee -> même scene mais camera différente + scene.active_camera=scene.objects['Aide-Camera'] + scene.objects['Apropos-Lien_projet'].color= couleur_lien + scene.objects['Apropos-Lien_blender'].color= couleur_lien + scene.objects['Apropos-Lien_upbge'].color= couleur_lien + +# Fermer la page d'aide +def aide_fermer(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : + # bge.logic.addScene('Scene') # Bug Eevee -> même scene mais camera différente + scene.active_camera=scene.objects['Camera'] + +# Aller sur les liens +def aide_apropos(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : + obj = cont.owner + if obj.name == "Apropos-Lien_projet" : + webbrowser.open('https://gitlab.com/blender-edutech') + if obj.name == "Apropos-Lien_blender" : + webbrowser.open('https://blender.org') + if obj.name == "Apropos-Lien_upbge" : + webbrowser.open('https://upbge.org') + +# Le highlight des liens +def aide_apropos_hl(cont): + if cont.sensors['MO'].status == JUST_ACTIVATED : + obj = cont.owner + obj.color = couleur_lien_hl + if cont.sensors['MO'].status == JUST_RELEASED : + obj = cont.owner + obj.color = couleur_lien diff --git a/img/screenshot-01.jpg b/img/screenshot-01.jpg new file mode 100644 index 0000000..869f67a Binary files /dev/null and b/img/screenshot-01.jpg differ diff --git a/pince_schrader/cine.py b/pince_schrader/cine.py new file mode 120000 index 0000000..202c7da --- /dev/null +++ b/pince_schrader/cine.py @@ -0,0 +1 @@ +/home/phroy/Bureau/seriousgames/blender-edutech/git/kinematic-player/cine.py \ No newline at end of file diff --git a/pince_schrader/cine_about.py b/pince_schrader/cine_about.py new file mode 120000 index 0000000..df92645 --- /dev/null +++ b/pince_schrader/cine_about.py @@ -0,0 +1 @@ +/home/phroy/Bureau/seriousgames/blender-edutech/git/kinematic-player/cine_about.py \ No newline at end of file diff --git a/pince_schrader/cine_config.xml b/pince_schrader/cine_config.xml new file mode 120000 index 0000000..ec48df5 --- /dev/null +++ b/pince_schrader/cine_config.xml @@ -0,0 +1 @@ +/home/phroy/Bureau/seriousgames/blender-edutech/git/kinematic-player/cine_config.xml \ No newline at end of file diff --git a/pince_schrader/cine_doc.py b/pince_schrader/cine_doc.py new file mode 120000 index 0000000..e936682 --- /dev/null +++ b/pince_schrader/cine_doc.py @@ -0,0 +1 @@ +/home/phroy/Bureau/seriousgames/blender-edutech/git/kinematic-player/cine_doc.py \ No newline at end of file diff --git a/pince_schrader/pince_schrader-05.blend b/pince_schrader/pince_schrader-05.blend new file mode 100644 index 0000000..fd97790 Binary files /dev/null and b/pince_schrader/pince_schrader-05.blend differ diff --git a/pince_schrader/schrader.py b/pince_schrader/schrader.py new file mode 100644 index 0000000..f5a9602 --- /dev/null +++ b/pince_schrader/schrader.py @@ -0,0 +1,666 @@ +import bge # Bibliothèque Blender Game Engine (BGE) +import webbrowser +import math + +############################################################################### +# serrbio.py +# @title: Commandes pour le player 3D de la pince schrader +# @project: Blender-EduTech +# @lang: fr +# @authors: Philippe Roy +# @copyright: Copyright (C) 2020-2022 Philippe Roy +# @license: GNU GPL +# +# Commandes déclenchées par UPBGE pour le modèle de la pince schrader +# +# Ce player 3D est un environnement léger et spécifique pour la colorisation des solides d'un mécanisme en mouvement. +# Il sert principalement pour l'apprentissage de la détection des classes d'équivalence d'un mécanisme afin de pouvoir faire sa modélisation cinématique. +# +############################################################################### + +# Récupérer la scène 3D +scene = bge.logic.getCurrentScene() +# print("Objets de la scene : ", scene.objects) + +# Objets 3D + +objets=['Axe biellette inf', 'Axe biellette sup', 'Axe doigt inf', 'Axe doigt sup', 'Axe piston', 'Biellette inf', 'Biellette sup', 'Bouchon', 'Circlips 1', 'Circlips 2', + 'Circlips 3', 'Circlips 4', 'Circlips 5', 'Corps', 'Doigt inf', 'Doigt sup', 'Joint bouchon', 'Joint piston', 'Piston'] +objets_anim=['Axe biellette inf', 'Axe biellette sup', 'Axe piston', 'Biellette inf', 'Biellette sup', 'Doigt inf', 'Doigt sup', 'Joint piston', 'Piston'] +objets_couleur=['MagentaF', 'MagentaF', 'VioletF', 'VioletF', 'VertF', 'Couleur5', 'Couleur5', 'TurquoiseF', 'Gris', 'Gris', 'Gris', 'Gris', 'Gris', + 'Couleur1', 'Couleur7', 'Couleur7', 'Couleur2', 'Couleur6', 'Vert'] + +# Couleurs + +couleurs=[['Couleur1', [0.202, 0.114, 0.512, 1]], + ['Couleur2', [0.051, 0.270, 0.279, 1]], + ['Couleur3', [0.799, 0.031, 0.038, 1]], + ['Couleur4', [0.799, 0.130, 0.063, 1]], + ['Couleur5', [0.8, 0.619, 0.021, 1]], + ['Couleur6', [0.246, 0.687, 0.078, 1]], + ['Couleur7', [0.800, 0.005, 0.315, 1]], + ['Couleur8', [0.75,0.75, 0.75, 0]]] + +couleurs_dict={'Couleur1' : [0.202, 0.114, 0.512, 1], + 'Couleur2' : [0.051, 0.270, 0.279, 1], + 'Couleur3' : [0.799, 0.031, 0.038, 1], + 'Couleur4' : [0.799, 0.130, 0.063, 1], + 'Couleur5' : [0.8, 0.619, 0.021, 1], + 'Couleur6' : [0.246, 0.687, 0.078, 1], + 'Couleur7' : [0.800, 0.005, 0.315, 1], + 'Couleur8' : [0.75,0.75, 0.75, 0], + 'TurquoiseF' : [0.019,0.107, 0.105, 1], + 'Vert' : [0.130,0.799, 0.036, 1], + 'VertF' : [0.041,0.127, 0.014, 1], + 'MagentaF' : [0.153,0.002, 0.091, 1], + 'Gris' : [0.258,0.275, 0.319, 1], + 'VioletF' : [0.100,0.058, 0.254, 1]} + +couleur_cmd = [0.8, 0.8, 0.8, 1] # blanc +couleur_cmd_hl = [0.8, 0.619, 0.021, 1] # jaune +couleur_lien = [0.024, 0.006, 0.8, 1] # bleu +couleur_lien_hl = [0.8, 0.005, 0.315, 1] # bleu + +# Constantes + +JUST_ACTIVATED = bge.logic.KX_INPUT_JUST_ACTIVATED +JUST_RELEASED = bge.logic.KX_INPUT_JUST_RELEASED +ACTIVATE = bge.logic.KX_INPUT_ACTIVE +# JUST_DEACTIVATED = bge.logic.KX_SENSOR_JUST_DEACTIVATED + +############################################################################### +# Gestion du clavier +############################################################################### + +# Mode : Pan(1) avec Shift, Zoom (2) avec Ctrl, Orbit (0), Eclaté avec Shift +def mode(cont): + obj = cont.owner + keyboard = bge.logic.keyboard + + # Shift -> mode 1 : Pan (clic milieu) ou Eclaté (clic gauche) + if JUST_ACTIVATED in keyboard.inputs[bge.events.LEFTSHIFTKEY].queue: + obj['manip_mode']=1 + if JUST_ACTIVATED in keyboard.inputs[bge.events.RIGHTSHIFTKEY].queue: + obj['manip_mode']=1 + + # Ctrl -> mode 2 : Zoom (clic milieu) + if JUST_ACTIVATED in keyboard.inputs[bge.events.LEFTCTRLKEY].queue: + obj['manip_mode']=2 + if JUST_ACTIVATED in keyboard.inputs[bge.events.RIGHTCTRLKEY].queue: + obj['manip_mode']=2 + + # Pas de modificateur -> mode 0 : Orbit (clic milieu) + if JUST_RELEASED in keyboard.inputs[bge.events.LEFTSHIFTKEY].queue: + obj['manip_mode']=0 + if JUST_RELEASED in keyboard.inputs[bge.events.RIGHTSHIFTKEY].queue: + obj['manip_mode']=0 + if JUST_RELEASED in keyboard.inputs[bge.events.LEFTCTRLKEY].queue: + obj['manip_mode']=0 + if JUST_RELEASED in keyboard.inputs[bge.events.RIGHTCTRLKEY].queue: + obj['manip_mode']=0 + + # Touche Home -> Reset de la vue + if JUST_ACTIVATED in keyboard.inputs[bge.events.HOMEKEY].queue: + scene.objects['Camera'].worldPosition.x = scene.objects['Camera']['init_lx'] + scene.objects['Camera'].worldPosition.y = scene.objects['Camera']['init_ly'] + scene.objects['Camera'].worldPosition.z = scene.objects['Camera']['init_lz'] + applyRotationTo(scene.objects['Mecanisme'], 0, 0, 0) + for objet in objets : + scene.objects[objet].setVisible(True,False) + scene.objects[objet+"_Lines.GP"].setVisible(True,False) + if scene.objects['Mecanisme']['eclate'] ==True: + scene.objects['Mecanisme']['eclate'] = False + for objet in objets : + scene.objects[objet].worldPosition.x =scene.objects[objet]['init_lx'] + scene.objects[objet].worldPosition.y = scene.objects[objet]['init_ly'] + scene.objects[objet].worldPosition.z = scene.objects[objet]['init_lz'] + if scene.objects['Mecanisme']['anim'] == False: # Play d'une frame + anim_play1frame() + + # Touche Space -> Play et Pause + if JUST_ACTIVATED in keyboard.inputs[bge.events.SPACEKEY].queue: + if scene.objects['Mecanisme']['anim'] == True: + anim_pause() + scene.objects['Pause'].setVisible(False,False) + scene.objects['Play'].setVisible(True,False) + else: + anim_play() + scene.objects['Play'].setVisible(False,False) + scene.objects['Pause'].setVisible(True,False) + + # Touche H -> Cacher l'objet + if JUST_ACTIVATED in keyboard.inputs[bge.events.HKEY].queue: + couleur_choix_num(8) + + # Touche de 1 à 8 -> Couleur de 1 à 8 + if JUST_ACTIVATED in keyboard.inputs[bge.events.ONEKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD1].queue: + couleur_choix_num(1) + if JUST_ACTIVATED in keyboard.inputs[bge.events.TWOKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD2].queue: + couleur_choix_num(2) + if JUST_ACTIVATED in keyboard.inputs[bge.events.THREEKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD3].queue: + couleur_choix_num(3) + if JUST_ACTIVATED in keyboard.inputs[bge.events.FOURKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD4].queue: + couleur_choix_num(4) + if JUST_ACTIVATED in keyboard.inputs[bge.events.FIVEKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD5].queue: + couleur_choix_num(5) + if JUST_ACTIVATED in keyboard.inputs[bge.events.SIXKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD6].queue: + couleur_choix_num(6) + if JUST_ACTIVATED in keyboard.inputs[bge.events.SEVENKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD7].queue: + couleur_choix_num(7) + if JUST_ACTIVATED in keyboard.inputs[bge.events.EIGHTKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD8].queue: + couleur_choix_num(8) + +############################################################################### +# Commandes +############################################################################### + +# Init +def cmd_init(): + scene.objects['Aide-cmd-Hl'].setVisible(False,False) + scene.objects['Pause-Hl'].setVisible(False,False) + scene.objects['Play-Hl'].setVisible(False,False) + scene.objects['Raz-couleurs-Hl'].setVisible(False,False) + scene.objects['Raz-vue-Hl'].setVisible(False,False) + scene.objects['Orbit'].setVisible(False,False) + for i in range (1, 9): + scene.objects['Couleur'+str(i)+"-Hl"].setVisible(False,False) + +# Le highlight des commandes +def cmd_hl(cont): + obj = cont.owner + + # Activation + if cont.sensors['MO'].status == JUST_ACTIVATED and scene.objects['Mecanisme']['manip_mode']==0: + if obj.name!="Play" and obj.name!="Pause" and obj.name!="Play-Hl" and obj.name!="Pause-Hl": + obj.setVisible(False,True) + scene.objects[obj.name+'-Hl'].setVisible(True,True) + # obj.color = couleur_cmd_hl + + # Play et pause + if obj.name=="Pause" or obj.name=="Play": + if scene.objects['Mecanisme']['anim'] == True: + scene.objects['Pause'].setVisible(False,False) + scene.objects['Pause-Hl'].setVisible(True,False) + else: + scene.objects['Play'].setVisible(False,False) + scene.objects['Play-Hl'].setVisible(True,False) + + # Désactivation + if cont.sensors['MO'].status == JUST_RELEASED and scene.objects['Mecanisme']['manip_mode']==0: + if obj.name!="Play" and obj.name!="Pause" and obj.name!="Play-Hl" and obj.name!="Pause-Hl": + scene.objects[obj.name+'-Hl'].setVisible(False,True) + obj.setVisible(True,True) + + # Play et pause + if obj.name=="Pause" or obj.name=="Play": + if scene.objects['Mecanisme']['anim'] == True: + scene.objects['Pause-Hl'].setVisible(False,False) + scene.objects['Pause'].setVisible(True,False) + else: + scene.objects['Play-Hl'].setVisible(False,False) + scene.objects['Play'].setVisible(True,False) + +############################################################################### +# Animation +############################################################################### + +# Initialisation de l'animation -> Play +def anim_init(cont): + start = 1 + end = 200 + layer = 0 + priority = 1 + blendin = 1.0 + mode = bge.logic.KX_ACTION_MODE_LOOP + layerWeight = 0.0 + ipoFlags = 0 + speed = 1.0 + for objet in objets_anim : + scene.objects[objet].playAction(objet+'-Action', start, end, layer, priority, blendin, mode, layerWeight, ipoFlags, speed) + scene.objects['Play'].setVisible(False,False) + scene.objects['Pause'].setVisible(True,False) + scene.objects['Mecanisme']['anim'] = True + +# Animation en pause (bas niveau) +def anim_pause(): + layer = 0 + for objet in objets_anim : + scene.objects['Mecanisme']['anim_frame'] = scene.objects[objet].getActionFrame(layer) + scene.objects[objet].stopAction(layer) + scene.objects['Mecanisme']['anim'] = False + +# Animation en pseudo-pause +# Play d'une frame pour remettre les pièces en place +def anim_play1frame(): + start = scene.objects['Mecanisme']['anim_frame'] + end = scene.objects['Mecanisme']['anim_frame']+1 + layer = 0 + priority = 1 + blendin = 1.0 + mode = bge.logic.KX_ACTION_MODE_PLAY + layerWeight = 0.0 + ipoFlags = 0 + speed = 1.0 + for objet in objets_anim : + scene.objects[objet].playAction(objet+'-Action', start, end, layer, priority, blendin, mode, layerWeight, ipoFlags, speed) + scene.objects['Mecanisme']['anim_frame'] = end + +# Reprise de l'animation (bas niveau) +def anim_play(): + start = scene.objects['Mecanisme']['anim_frame'] + end = 200 + layer = 0 + priority = 1 + blendin = 1.0 + mode = bge.logic.KX_ACTION_MODE_PLAY + layerWeight = 0.0 + ipoFlags = 0 + speed = 1.0 + for objet in objets_anim : + scene.objects[objet].playAction(objet+'-Action', start, end, layer, priority, blendin, mode, layerWeight, ipoFlags, speed) + scene.objects['Mecanisme']['anim'] = True + +# Pause et replay par les commandes +def anim_cmd(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['Mecanisme']['manip_mode']==0: + + # Pause + if scene.objects['Mecanisme']['anim'] == True: + anim_pause() + scene.objects['Pause'].setVisible(False,False) + scene.objects['Pause-Hl'].setVisible(False,False) + scene.objects['Play-Hl'].setVisible(True,False) + else: + # Play + anim_play() + scene.objects['Play'].setVisible(False,False) + scene.objects['Play-Hl'].setVisible(False,False) + scene.objects['Pause-Hl'].setVisible(True,False) + +# Play en continu +def anim_boucle(cont): + if scene.objects['Mecanisme']['anim'] == True and scene.objects['Piston'].isPlayingAction(0) == False: + start = 1 + end = 200 + layer = 0 + priority = 1 + blendin = 1.0 + mode = bge.logic.KX_ACTION_MODE_LOOP + layerWeight = 0.0 + ipoFlags = 0 + speed = 1.0 + for objet in objets_anim : + scene.objects[objet].playAction(objet+'-Action', start, end, layer, priority, blendin, mode, layerWeight, ipoFlags, speed) + +############################################################################### +# Manipulation du mécanisme +############################################################################### + +# Mémorisation de la position et orientation initiales du modèle et de la caméra +def manip_init(cont): + for objet in objets : + scene.objects[objet]['init_lx']=scene.objects[objet].worldPosition.x + scene.objects[objet]['init_ly']=scene.objects[objet].worldPosition.y + scene.objects[objet]['init_lz']=scene.objects[objet].worldPosition.z + if 'init_rx' in scene.objects[objet]: + scene.objects[objet]['init_rx'] = scene.objects[objet].worldOrientation.to_euler().x + if 'init_ry' in scene.objects[objet]: + scene.objects[objet]['init_ry'] = scene.objects[objet].worldOrientation.to_euler().y + if 'init_rz' in scene.objects[objet]: + scene.objects[objet]['init_rz'] = scene.objects[objet].worldOrientation.to_euler().z + scene.objects['Camera']['init_lx']=scene.objects['Camera'].worldPosition.x + scene.objects['Camera']['init_ly']=scene.objects['Camera'].worldPosition.y + scene.objects['Camera']['init_lz']=scene.objects['Camera'].worldPosition.z + scene.objects['Mecanisme']['init_lx']=scene.objects['Mecanisme'].worldPosition.x + scene.objects['Mecanisme']['init_ly']=scene.objects['Mecanisme'].worldPosition.y + scene.objects['Mecanisme']['init_lz']=scene.objects['Mecanisme'].worldPosition.z + scene.objects['Mecanisme']['init_rx']=scene.objects['Mecanisme'].worldOrientation.to_euler().x + scene.objects['Mecanisme']['init_ry']=scene.objects['Mecanisme'].worldOrientation.to_euler().y + scene.objects['Mecanisme']['init_rz']=scene.objects['Mecanisme'].worldOrientation.to_euler().z + +# def applyMovemenTo(obj, lx,ly,lz,rx,ry,rz): +# lres=0.001 # resolution location +# rres=0.001 # resolution rotation +# while (obj.worldPosition.x-lx > lres) or (obj.worldPosition.y-ly > lres) or (obj.worldPosition.z-lz > lres) or (obj.worldOrientation.to_euler().x-rx > rres) or (obj.worldOrientation.to_euler().y-ry > rres) or (obj.worldOrientation.to_euler().z-rz > rres): +# if obj.worldPosition.x-lx > lres: +# obj. applyMovement(lres,0,0) +# if obj.worldPosition.y-ly > lres: +# obj. applyMovement(0,lres,0 ) +# if obj.worldPosition.z-lz > lres: +# obj. applyMovement(0,0,lres) +# if obj.worldOrientation.to_euler().x-rx > rres: +# obj.applyRotation(rres,0,0) +# if obj.worldOrientation.to_euler().y-ry > rres: +# obj.applyRotation(0,rres,0) +# if obj.worldOrientation.to_euler().z-ry > rres: +# obj.applyRotation(0,0,rres) + +# def applyTranslationTo(obj, lx,ly,lz): +# lres=0.001 # resolution location +# while (obj.worldPosition.x-lx > lres) or (obj.worldPosition.y-ly > lres) or (obj.worldPosition.z-lz > lres): +# if obj.worldPosition.x-lx > lres: +# obj. applyMovement(lres,0,0) +# if obj.worldPosition.y-ly > lres: +# obj. applyMovement(0,lres,0 ) +# if obj.worldPosition.z-lz > lres: +# obj. applyMovement(0,0,lres) + +# Atteindre une orientation (bas niveau) +def applyRotationTo(obj, rx=None, ry=None, rz=None): + rres=0.001 # resolution rotation + + # x + if rx is not None: + while (abs(rx-obj.worldOrientation.to_euler().x) > rres) : + if obj.worldOrientation.to_euler().x-rx > rres: + obj.applyRotation((-rres, 0, 0), True) + if rx-obj.worldOrientation.to_euler().x > rres: + obj.applyRotation((rres, 0, 0), True) + # print ("delta x ",rx-obj.worldOrientation.to_euler().x) + + # y + if ry is not None: + while (abs(ry-obj.worldOrientation.to_euler().y) > rres) : + if obj.worldOrientation.to_euler().y-ry > rres: + obj.applyRotation((0, -rres, 0), True) + if ry-obj.worldOrientation.to_euler().y > rres: + obj.applyRotation((0, rres, 0), True) + # print ("delta y ",ry-obj.worldOrientation.to_euler().y) + + # z + if rz is not None: + while (abs(rz-obj.worldOrientation.to_euler().z) > rres) : + if obj.worldOrientation.to_euler().z-rz > rres: + obj.applyRotation((0, 0, -rres), True) + if rz-obj.worldOrientation.to_euler().z > rres: + obj.applyRotation((0, 0, rres), True) + # print ("delta z ",rz-obj.worldOrientation.to_euler().z) + +# Reset de la manipulation de la vue +def manip_reset(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['Mecanisme']['manip_mode']==0: + scene.objects['Camera'].worldPosition.x = scene.objects['Camera']['init_lx'] + scene.objects['Camera'].worldPosition.y = scene.objects['Camera']['init_ly'] + scene.objects['Camera'].worldPosition.z = scene.objects['Camera']['init_lz'] + applyRotationTo(scene.objects['Mecanisme'], 0, 0, 0) + for objet in objets : + scene.objects[objet].setVisible(True,False) + scene.objects[objet+"_Lines.GP"].setVisible(True,False) + if scene.objects['Mecanisme']['eclate'] ==True: + scene.objects['Mecanisme']['eclate'] = False + for objet in objets : + scene.objects[objet].worldPosition.x =scene.objects[objet]['init_lx'] + scene.objects[objet].worldPosition.y = scene.objects[objet]['init_ly'] + scene.objects[objet].worldPosition.z = scene.objects[objet]['init_lz'] + if scene.objects['Mecanisme']['anim'] == False: # Play d'une frame + anim_play1frame() + +# Position de départ pour la manipulation de la vue +def manip_start(cont): + obj = cont.owner + obj['click_x']=cont.sensors['ClickM'].position[0] + obj['click_y']=cont.sensors['ClickM'].position[1] + +# Cacher le cercle de la manipulation Orbit +def manip_stop(cont): + scene.objects['Orbit'].setVisible(False,False) + +# Manipulation du modèle ou de la caméra +def manip(cont): + obj = cont.owner + sensibilite_orbit=0.0005 + sensibilite_pan=0.005 + sensibilite_zoom=0.01 + delta_x=cont.sensors['DownM'].position[0]-obj['click_x'] + delta_y=cont.sensors['DownM'].position[1]-obj['click_y'] + + # Orbit (1280 * 720 px) + if obj['manip_mode']==0: + scene.objects['Orbit'].color=couleur_cmd + scene.objects['Orbit'].setVisible(True,False) + dist_orbit = math.sqrt(((1280/2)-obj['click_x'])**2+((720/2)-obj['click_y'])**2) + if dist_orbit<235 : # Orbit sur x et z + n=10 + pas_x=(delta_x*40*sensibilite_orbit)/n + pas_y=(((1280/2)-cont.sensors['DownM'].position[0])+((720/2)-cont.sensors['DownM'].position[1]))*0.005 + pas_z=(delta_y*40*sensibilite_orbit)/n + for i in range (n): + bge.render.drawLine([scene.objects['Orbit'].worldPosition.x+pas_x*i, scene.objects['Orbit'].worldPosition.y+abs(pas_y*math.sin((3.14*i)/n)), scene.objects['Orbit'].worldPosition.z-pas_z*i], + [scene.objects['Orbit'].worldPosition.x+pas_x*(i+1), scene.objects['Orbit'].worldPosition.y+abs(pas_y*math.sin((3.14*(i+1))/n)), scene.objects['Orbit'].worldPosition.z-pas_z*(i+1)], + [0.8, 0.619, 0.021]) + scene.objects['Mecanisme'].applyRotation((delta_y*sensibilite_orbit, 0, delta_x*sensibilite_orbit), True) + else: # Orbit sur y + scene.objects['Orbit'].color=couleur_cmd_hl + if abs(delta_x) >= abs(delta_y): + scene.objects['Mecanisme'].applyRotation((0, delta_x*sensibilite_orbit, 0), True) + else: + scene.objects['Mecanisme'].applyRotation((0, delta_y*sensibilite_orbit, 0), True) + + # Pan + if obj['manip_mode']==1: # Shift + scene.objects['Camera'].applyMovement((delta_x*-sensibilite_pan, delta_y*sensibilite_pan, 0), True) + + # Zoom + if obj['manip_mode']==2: # Ctrl + scene.objects['Camera'].applyMovement((0, 0, (delta_x+delta_y)*sensibilite_zoom), True) + +# Zoom avec la molette +def manip_wheel(cont): + obj = cont.owner + sensibilite_wheel = 20 + if cont.sensors['WheelUp'].positive: + scene.objects['Camera'].applyMovement((0, 0, -sensibilite_wheel), True) + if cont.sensors['WheelDown'].positive: + scene.objects['Camera'].applyMovement((0, 0, sensibilite_wheel), True) + +############################################################################### +# Eclaté +############################################################################### + +# Position de départ pour l'éclatement de la vue +def eclate_start(cont): + if scene.objects['Mecanisme']['manip_mode']==1: + obj = cont.owner + obj['click_x']=cont.sensors['Click'].position[0] + obj['click_y']=cont.sensors['Click'].position[1] + +# Déplacement des composants en vue éclatée +def eclate(cont): + obj = cont.owner + sensibilite=0.005 + delta=(cont.sensors['Down'].position[0]-obj['click_x'])+(cont.sensors['Down'].position[1]-obj['click_y']) + if obj['manip_mode']==1: # Shift + scene.objects['Mecanisme']['eclate'] =True + for objet in objets : + ecla_x, ecla_y,ecla_z = 0,0,0 + if 'ecla_x' in scene.objects[objet]: + ecla_x = scene.objects[objet]['ecla_x'] + if 'ecla_y' in scene.objects[objet]: + ecla_y = scene.objects[objet]['ecla_y'] + if 'ecla_z' in scene.objects[objet]: + ecla_z = scene.objects[objet]['ecla_z'] + + # Déplacement dans le repère du mécanisme + x_axis = scene.objects['Mecanisme'].orientation.col[0] + y_axis = scene.objects['Mecanisme'].orientation.col[1] + z_axis = scene.objects['Mecanisme'].orientation.col[2] + scene.objects[objet].applyMovement((delta*sensibilite*ecla_x*x_axis[0], delta*sensibilite*ecla_x*x_axis[1] , delta*sensibilite*ecla_x*x_axis[2]), False) + scene.objects[objet].applyMovement((delta*sensibilite*ecla_y*y_axis[0], delta*sensibilite*ecla_y*y_axis[1] , delta*sensibilite*ecla_y*y_axis[2]), False) + scene.objects[objet].applyMovement((delta*sensibilite*ecla_z*z_axis[0], delta*sensibilite*ecla_z*z_axis[1] , delta*sensibilite*ecla_z*z_axis[2]), False) + +############################################################################### +# Couleur +############################################################################### + +# Initialisation des couleurs du mécanisme +def couleur_init(): + i=0 + for objet in objets : + scene.objects[objet].color = couleurs_dict[objets_couleur[i]] + scene.objects[objet].setVisible(True,False) + scene.objects[objet+"_Lines.GP"].setVisible(True,False) + scene.objects[objet+"-Nom"].color = couleurs_dict[objets_couleur[i]] + scene.objects[objet+"-Nom-Hl"].color = couleurs_dict[objets_couleur[i]] + scene.objects[objet+"-Nom-Hl"].setVisible(False,False) + i +=1 + +# Reset des couleurs du mécanisme +def couleur_reset(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['Mecanisme']['manip_mode']==0: + couleur_init() + +# Sélection couleur dans la palette avec son numéro de couleur (bas niveau) +def couleur_choix_num(num): + for i in range (1, 9): + scene.objects['Couleur'+str(i)].worldScale=[3, 3, 3] + scene.objects['Couleur'+str(i)+"-Hl"].worldScale=[3, 3, 3] + scene.objects['Couleur'+str(num)].worldScale=[4, 4, 4] + scene.objects['Couleur'+str(num)+'-Hl'].worldScale=[4, 4, 4] + scene.objects['Couleurs']['couleur_select']=num + +# Sélection couleur dans la palette +def couleur_choix(cont): + obj = cont.owner + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['Mecanisme']['manip_mode']==0: + hitObject = cont.sensors['MO'].hitObject + if hitObject is not None and "-Hl" not in hitObject .name: + couleur_choix_num(int(hitObject .name[7])) + +# Le highlight de 'couleur_choix' +def couleur_choix_hl(cont): + if cont.sensors['MO'].positive and scene.objects['Mecanisme']['manip_mode']==0: + hitObject = cont.sensors['MO'].hitObject + if hitObject is not None and "-Hl" not in hitObject .name: + hitObject.setVisible(False,False) + scene.objects[hitObject.name+'-Hl'].setVisible(True,False) + if cont.sensors['MO'].status == JUST_RELEASED: + for i in range (1, 9): + scene.objects['Couleur'+str(i)].setVisible(True,False) + scene.objects['Couleur'+str(i)+"-Hl"].setVisible(False,False) + +# Colorisation de la pièce +def couleur_objet(cont): + if cont.sensors['Click'].positive and scene.objects['Mecanisme']['manip_mode']==0: + hitObject = cont.sensors['MO'].hitObject + if hitObject is not None and hitObject.visible: + couleur_select = scene.objects['Couleurs']['couleur_select'] + if couleur_select != 0 and couleur_select != 8: + hitObject.color = couleurs[couleur_select-1][1] + scene.objects[hitObject.name+"-Nom"].color = couleurs[couleur_select-1][1] + scene.objects[hitObject.name+"-Nom-Hl"].color = couleurs[couleur_select-1][1] + if couleur_select == 8: # Couleur transparente -> disparition + hitObject.setVisible(False,False) + scene.objects[hitObject.name+"_Lines.GP"].setVisible(False,False) + +# Le highlight de 'couleur_objet' +def couleur_objet_hl(cont): + if cont.sensors['MO'].status == JUST_ACTIVATED and scene.objects['Mecanisme']['manip_mode']==0: + hitObject = cont.sensors['MO'].hitObject + if hitObject is not None and hitObject.visible: + scene.objects[hitObject.name+"-Nom"].setVisible(False,False) + scene.objects[hitObject.name+"-Nom-Hl"].setVisible(True,False) + if cont.sensors['MO'].status == JUST_RELEASED: + for objet in objets : + scene.objects[objet+"-Nom"].setVisible(True,False) + scene.objects[objet+"-Nom-Hl"].setVisible(False,False) + +############################################################################### +# Nomenclature +############################################################################### + +# Click sur la nomeclature +def nom(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and scene.objects['Mecanisme']['manip_mode']==0: + hitObject = cont.sensors['MO'].hitObject + if hitObject is not None: + + # Afficher/cacher les repères de la pièce + if "-Nom-Rep" in hitObject.name: + obj=hitObject.name[:len(hitObject.name)-8] + print (scene.objects[obj]['rep']) + if scene.objects[obj]['rep']==False: + scene.objects[obj]['rep']=True + hitObject.color=couleur_rep_actif + for rep in objets_rep_dict[obj]: + scene.objects[rep].setVisible(True,False) + else: + scene.objects[obj]['rep']=False + hitObject.color=couleur_rep_pasactif + for rep in objets_rep_dict[obj]: + scene.objects[rep].setVisible(False,False) + + # Colorisation de la pièce par la nomenclature + else: + couleur_select = scene.objects['Couleurs']['couleur_select'] + if couleur_select != 0 and couleur_select != 8: + hitObject.color = couleurs[couleur_select-1][1] + scene.objects[hitObject.name+"-Hl"].color = couleurs[couleur_select-1][1] + scene.objects[hitObject.name[0:len(hitObject.name)-4]].setVisible(True,False) + scene.objects[hitObject.name[0:len(hitObject.name)-4]].color = couleurs[couleur_select-1][1] + + if couleur_select == 8: # Couleur transparente -> disparition / apparition + obj=scene.objects[hitObject.name[0:len(hitObject.name)-4]] + obj_GP=scene.objects[hitObject.name[0:len(hitObject.name)-4]+"_Lines.GP"] + if obj.visible==True: + obj.setVisible(False,False) + obj_GP.setVisible(False,False) + else: + obj.setVisible(True,False) + obj_GP.setVisible(True,False) + # if couleur_select == 8: # Couleur transparente -> disparition + # scene.objects[hitObject.name[0:len(hitObject.name)-4]].setVisible(False,False) + +# Le highlight de la nomenclature +def nom_hl(cont): + if cont.sensors['MO'].status == JUST_ACTIVATED and scene.objects['Mecanisme']['manip_mode']==0: + hitObject = cont.sensors['MO'].hitObject + if hitObject is not None: + hitObject.setVisible(False,False) + scene.objects[hitObject.name+'-Hl'].setVisible(True,False) + # obj.color = couleur_cmd_hl + if cont.sensors['MO'].status == JUST_RELEASED and scene.objects['Mecanisme']['manip_mode']==0: + for objet in objets : + scene.objects[objet+"-Nom"].setVisible(True,False) + scene.objects[objet+"-Nom-Hl"].setVisible(False,False) + # for objet in objets_rep : + # scene.objects[objet+'-Nom-Rep'].setVisible(True,False) + # scene.objects[objet+'-Nom-Rep-Hl'].setVisible(False,False) + +############################################################################### +# Aide +############################################################################### + +# Ouvrir la page d'aide +def aide(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : + # scene.replace('Scene-Aide') # Bug Eevee -> même scene mais camera différente + scene.active_camera=scene.objects['Aide-Camera'] + scene.objects['Apropos-Lien_projet'].color= couleur_lien + scene.objects['Apropos-Lien_blender'].color= couleur_lien + scene.objects['Apropos-Lien_upbge'].color= couleur_lien + +# Fermer la page d'aide +def aide_fermer(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : + # bge.logic.addScene('Scene') # Bug Eevee -> même scene mais camera différente + scene.active_camera=scene.objects['Camera'] + +# Aller sur les liens +def aide_apropos(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : + obj = cont.owner + if obj.name == "Apropos-Lien_projet" : + webbrowser.open('https://gitlab.com/blender-edutech') + if obj.name == "Apropos-Lien_blender" : + webbrowser.open('https://blender.org') + if obj.name == "Apropos-Lien_upbge" : + webbrowser.open('https://upbge.org') + +# Le highlight des liens +def aide_apropos_hl(cont): + if cont.sensors['MO'].status == JUST_ACTIVATED : + obj = cont.owner + obj.color = couleur_lien_hl + if cont.sensors['MO'].status == JUST_RELEASED : + obj = cont.owner + obj.color = couleur_lien diff --git a/serrure_biometrique/cine.py b/serrure_biometrique/cine.py new file mode 120000 index 0000000..202c7da --- /dev/null +++ b/serrure_biometrique/cine.py @@ -0,0 +1 @@ +/home/phroy/Bureau/seriousgames/blender-edutech/git/kinematic-player/cine.py \ No newline at end of file diff --git a/serrure_biometrique/cine_about.py b/serrure_biometrique/cine_about.py new file mode 120000 index 0000000..df92645 --- /dev/null +++ b/serrure_biometrique/cine_about.py @@ -0,0 +1 @@ +/home/phroy/Bureau/seriousgames/blender-edutech/git/kinematic-player/cine_about.py \ No newline at end of file diff --git a/serrure_biometrique/cine_config.xml b/serrure_biometrique/cine_config.xml new file mode 120000 index 0000000..ec48df5 --- /dev/null +++ b/serrure_biometrique/cine_config.xml @@ -0,0 +1 @@ +/home/phroy/Bureau/seriousgames/blender-edutech/git/kinematic-player/cine_config.xml \ No newline at end of file diff --git a/serrure_biometrique/cine_doc.py b/serrure_biometrique/cine_doc.py new file mode 120000 index 0000000..e936682 --- /dev/null +++ b/serrure_biometrique/cine_doc.py @@ -0,0 +1 @@ +/home/phroy/Bureau/seriousgames/blender-edutech/git/kinematic-player/cine_doc.py \ No newline at end of file diff --git a/serrure_biometrique/serrbio.py b/serrure_biometrique/serrbio.py new file mode 100644 index 0000000..29cbafe --- /dev/null +++ b/serrure_biometrique/serrbio.py @@ -0,0 +1,678 @@ +import bge # Bibliothèque Blender Game Engine (BGE) +import webbrowser +import math + +############################################################################### +# serrbio.py +# @title: Commandes pour le player 3D de la serrure biométrique +# @project: Blender-EduTech +# @lang: fr +# @authors: Philippe Roy +# @copyright: Copyright (C) 2020-2022 Philippe Roy +# @license: GNU GPL +# +# # Commandes déclenchées par UPBGE pour le modèle de la serrure biométrique +# +# Ce player 3D est un environnement léger et spécifique pour la colorisation des solides d'un mécanisme en mouvement. +# Il sert principalement pour l'apprentissage de la détection des classes d'équivalence d'un mécanisme afin de pouvoir faire sa modélisation cinématique. +# +############################################################################### + +# Récupérer la scène 3D +scene = bge.logic.getCurrentScene() +# print("Objets de la scene : ", scene.objects) + +# Objets 3D + +objets=['Carre', 'Coffre', 'Noix', 'Pene', 'Plaque', 'Poignee', 'Tetiere'] +objets_couleur=[2, 0, 4, 1, 6, 3, 5] # Couleur des objets par défaut + +objets_anim=['Carre', 'Noix', 'Pene', 'Plaque', 'Poignee'] # Objet animé + +objets_rep=['Coffre', 'Noix', 'Pene', 'Plaque', 'Poignee'] # Objet avec une repère +objets_rep_dict={'Coffre' : ['Repere O'], + 'Noix' : ['Repere A', 'Repere D'], + 'Pene' : ['Repere C', 'Repere E'], + 'Plaque' : ['Repere B'], + 'Poignee' : ['Repere F']} + +# Couleurs + +couleurs=[['Couleur1', [0.202, 0.114, 0.512,1]], + ['Couleur2', [0.051, 0.270, 0.279,1]], + ['Couleur3', [0.799, 0.031, 0.038,1]], + ['Couleur4', [0.799, 0.130, 0.063,1]], + ['Couleur5', [0.8, 0.619, 0.021,1]], + ['Couleur6', [0.246, 0.687, 0.078,1]], + ['Couleur7', [0.800, 0.005, 0.315,1]], + ['Couleur8', [0.75,0.751, 0.75,0]]] + +couleur_cmd = [0.8, 0.8, 0.8, 1] # blanc +couleur_cmd_hl = [0.8, 0.619, 0.021, 1] # jaune +couleur_lien = [0.024, 0.006, 0.8, 1] # bleu +couleur_lien_hl = [0.8, 0.005, 0.315, 1] # bleu + +couleur_rep_actif = [0.8, 0.8, 0.8, 1] # blanc +couleur_rep_pasactif = [0, 0, 0, 1] # noir + +# Constantes + +JUST_ACTIVATED = bge.logic.KX_INPUT_JUST_ACTIVATED +JUST_RELEASED = bge.logic.KX_INPUT_JUST_RELEASED +ACTIVATE = bge.logic.KX_INPUT_ACTIVE +# JUST_DEACTIVATED = bge.logic.KX_SENSOR_JUST_DEACTIVATED + +############################################################################### +# Gestion du clavier +############################################################################### + +# Mode : Pan(1) avec Shift, Zoom (2) avec Ctrl, Orbit (0), Eclaté avec Shift +def mode(cont): + obj = cont.owner + keyboard = bge.logic.keyboard + + # Shift -> mode 1 : Pan (clic milieu) ou Eclaté (clic gauche) + if JUST_ACTIVATED in keyboard.inputs[bge.events.LEFTSHIFTKEY].queue: + obj['manip_mode']=1 + if JUST_ACTIVATED in keyboard.inputs[bge.events.RIGHTSHIFTKEY].queue: + obj['manip_mode']=1 + + # Ctrl -> mode 2 : Zoom (clic milieu) + if JUST_ACTIVATED in keyboard.inputs[bge.events.LEFTCTRLKEY].queue: + obj['manip_mode']=2 + if JUST_ACTIVATED in keyboard.inputs[bge.events.RIGHTCTRLKEY].queue: + obj['manip_mode']=2 + + # Pas de modificateur -> mode 0 : Orbit (clic milieu) + if JUST_RELEASED in keyboard.inputs[bge.events.LEFTSHIFTKEY].queue: + obj['manip_mode']=0 + if JUST_RELEASED in keyboard.inputs[bge.events.RIGHTSHIFTKEY].queue: + obj['manip_mode']=0 + if JUST_RELEASED in keyboard.inputs[bge.events.LEFTCTRLKEY].queue: + obj['manip_mode']=0 + if JUST_RELEASED in keyboard.inputs[bge.events.RIGHTCTRLKEY].queue: + obj['manip_mode']=0 + + # Touche Home -> Reset de la vue + if JUST_ACTIVATED in keyboard.inputs[bge.events.HOMEKEY].queue: + scene.objects['Camera'].worldPosition.x = scene.objects['Camera']['init_lx'] + scene.objects['Camera'].worldPosition.y = scene.objects['Camera']['init_ly'] + scene.objects['Camera'].worldPosition.z = scene.objects['Camera']['init_lz'] + applyRotationTo(scene.objects['Mecanisme'], 0, 0, 0) + for objet in objets : + scene.objects[objet].setVisible(True,False) + scene.objects[objet+"_Lines.GP"].setVisible(True,False) + if scene.objects['Mecanisme']['eclate'] ==True: + scene.objects['Mecanisme']['eclate'] = False + for objet in objets : + scene.objects[objet].worldPosition.x =scene.objects[objet]['init_lx'] + scene.objects[objet].worldPosition.y = scene.objects[objet]['init_ly'] + scene.objects[objet].worldPosition.z = scene.objects[objet]['init_lz'] + if scene.objects['Mecanisme']['anim'] == False: # Play d'une frame + anim_play1frame() + + # Touche Space -> Play et Pause + if JUST_ACTIVATED in keyboard.inputs[bge.events.SPACEKEY].queue: + if scene.objects['Mecanisme']['anim'] == True: + anim_pause() + scene.objects['Pause'].setVisible(False,False) + scene.objects['Play'].setVisible(True,False) + else: + anim_play() + scene.objects['Play'].setVisible(False,False) + scene.objects['Pause'].setVisible(True,False) + + # Touche H -> Cacher l'objet + if JUST_ACTIVATED in keyboard.inputs[bge.events.HKEY].queue: + couleur_choix_num(8) + + # Touche de 1 à 8 -> Couleur de 1 à 8 + if JUST_ACTIVATED in keyboard.inputs[bge.events.ONEKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD1].queue: + couleur_choix_num(1) + if JUST_ACTIVATED in keyboard.inputs[bge.events.TWOKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD2].queue: + couleur_choix_num(2) + if JUST_ACTIVATED in keyboard.inputs[bge.events.THREEKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD3].queue: + couleur_choix_num(3) + if JUST_ACTIVATED in keyboard.inputs[bge.events.FOURKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD4].queue: + couleur_choix_num(4) + if JUST_ACTIVATED in keyboard.inputs[bge.events.FIVEKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD5].queue: + couleur_choix_num(5) + if JUST_ACTIVATED in keyboard.inputs[bge.events.SIXKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD6].queue: + couleur_choix_num(6) + if JUST_ACTIVATED in keyboard.inputs[bge.events.SEVENKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD7].queue: + couleur_choix_num(7) + if JUST_ACTIVATED in keyboard.inputs[bge.events.EIGHTKEY].queue or JUST_ACTIVATED in keyboard.inputs[bge.events.PAD8].queue: + couleur_choix_num(8) + +############################################################################### +# Commandes +############################################################################### + +# Init +def cmd_init(): + scene.objects['Aide-cmd-Hl'].setVisible(False,False) + scene.objects['Pause-Hl'].setVisible(False,False) + scene.objects['Play-Hl'].setVisible(False,False) + scene.objects['Raz-couleurs-Hl'].setVisible(False,False) + scene.objects['Raz-vue-Hl'].setVisible(False,False) + for i in range (1, 9): + scene.objects['Couleur'+str(i)+"-Hl"].setVisible(False,False) + for objet in objets_rep : + scene.objects[objet+'-Nom-Rep-Hl'].setVisible(False,False) + +# Le highlight des commandes +def cmd_hl(cont): + obj = cont.owner + + # Activation + if cont.sensors['MO'].status == JUST_ACTIVATED and scene.objects['Mecanisme']['manip_mode']==0: + if obj.name!="Play" and obj.name!="Pause" and obj.name!="Play-Hl" and obj.name!="Pause-Hl": + obj.setVisible(False,True) + scene.objects[obj.name+'-Hl'].setVisible(True,True) + # obj.color = couleur_cmd_hl + + # Play et pause + if obj.name=="Pause" or obj.name=="Play": + if scene.objects['Mecanisme']['anim'] == True: + scene.objects['Pause'].setVisible(False,False) + scene.objects['Pause-Hl'].setVisible(True,False) + else: + scene.objects['Play'].setVisible(False,False) + scene.objects['Play-Hl'].setVisible(True,False) + + # Désactivation + if cont.sensors['MO'].status == JUST_RELEASED and scene.objects['Mecanisme']['manip_mode']==0: + if obj.name!="Play" and obj.name!="Pause" and obj.name!="Play-Hl" and obj.name!="Pause-Hl": + scene.objects[obj.name+'-Hl'].setVisible(False,True) + obj.setVisible(True,True) + + # Play et pause + if obj.name=="Pause" or obj.name=="Play": + if scene.objects['Mecanisme']['anim'] == True: + scene.objects['Pause-Hl'].setVisible(False,False) + scene.objects['Pause'].setVisible(True,False) + else: + scene.objects['Play-Hl'].setVisible(False,False) + scene.objects['Play'].setVisible(True,False) + +############################################################################### +# Animation +############################################################################### + +# Initialisation de l'animation -> Play +def anim_init(cont): + start = 1 + end = 200 + layer = 0 + priority = 1 + blendin = 1.0 + mode = bge.logic.KX_ACTION_MODE_LOOP + layerWeight = 0.0 + ipoFlags = 0 + speed = 1.0 + for objet in objets_anim : + scene.objects[objet].playAction(objet+'-Action', start, end, layer, priority, blendin, mode, layerWeight, ipoFlags, speed) + scene.objects['Play'].setVisible(False,False) + scene.objects['Pause'].setVisible(True,False) + scene.objects['Mecanisme']['anim'] = True + +# Animation en pause (bas niveau) +def anim_pause(): + layer = 0 + for objet in objets_anim : + scene.objects['Mecanisme']['anim_frame'] = scene.objects[objet].getActionFrame(layer) + scene.objects[objet].stopAction(layer) + scene.objects['Mecanisme']['anim'] = False + +# Animation en pseudo-pause +# Play d'une frame pour remettre les pièces en place +def anim_play1frame(): + start = scene.objects['Mecanisme']['anim_frame'] + end = scene.objects['Mecanisme']['anim_frame']+1 + layer = 0 + priority = 1 + blendin = 1.0 + mode = bge.logic.KX_ACTION_MODE_PLAY + layerWeight = 0.0 + ipoFlags = 0 + speed = 1.0 + for objet in objets_anim : + scene.objects[objet].playAction(objet+'-Action', start, end, layer, priority, blendin, mode, layerWeight, ipoFlags, speed) + scene.objects['Mecanisme']['anim_frame'] = end + +# Reprise de l'animation (bas niveau) +def anim_play(): + start = scene.objects['Mecanisme']['anim_frame'] + end = 200 + layer = 0 + priority = 1 + blendin = 1.0 + mode = bge.logic.KX_ACTION_MODE_PLAY + layerWeight = 0.0 + ipoFlags = 0 + speed = 1.0 + for objet in objets_anim : + scene.objects[objet].playAction(objet+'-Action', start, end, layer, priority, blendin, mode, layerWeight, ipoFlags, speed) + scene.objects['Mecanisme']['anim'] = True + +# Pause et replay par les commandes +def anim_cmd(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['Mecanisme']['manip_mode']==0: + + # Pause + if scene.objects['Mecanisme']['anim'] == True: + anim_pause() + scene.objects['Pause'].setVisible(False,False) + scene.objects['Pause-Hl'].setVisible(False,False) + scene.objects['Play-Hl'].setVisible(True,False) + else: + # Play + anim_play() + scene.objects['Play'].setVisible(False,False) + scene.objects['Play-Hl'].setVisible(False,False) + scene.objects['Pause-Hl'].setVisible(True,False) + +# Play en continu +def anim_boucle(cont): + if scene.objects['Mecanisme']['anim'] == True and scene.objects['Carre'].isPlayingAction(0) == False: + # scene.objects['Mecanisme']['anim_frame']=1 + start = 1 + end = 200 + layer = 0 + priority = 1 + blendin = 1.0 + mode = bge.logic.KX_ACTION_MODE_LOOP + layerWeight = 0.0 + ipoFlags = 0 + speed = 1.0 + for objet in objets_anim : + scene.objects[objet].playAction(objet+'-Action', start, end, layer, priority, blendin, mode, layerWeight, ipoFlags, speed) + +############################################################################### +# Manipulation du mécanisme +############################################################################### + +# Initialisation de la vue 3D +def manip_init(cont): + + # Mémorisation de la position des composants + for objet in objets : + scene.objects[objet]['init_lx']=scene.objects[objet].worldPosition.x + scene.objects[objet]['init_ly']=scene.objects[objet].worldPosition.y + scene.objects[objet]['init_lz']=scene.objects[objet].worldPosition.z + if 'init_rx' in scene.objects[objet]: + scene.objects[objet]['init_rx'] = scene.objects[objet].worldOrientation.to_euler().x + if 'init_ry' in scene.objects[objet]: + scene.objects[objet]['init_ry'] = scene.objects[objet].worldOrientation.to_euler().y + if 'init_rz' in scene.objects[objet]: + scene.objects[objet]['init_rz'] = scene.objects[objet].worldOrientation.to_euler().z + + # Mémorisation de la position de la caméra + scene.objects['Camera']['init_lx']=scene.objects['Camera'].worldPosition.x + scene.objects['Camera']['init_ly']=scene.objects['Camera'].worldPosition.y + scene.objects['Camera']['init_lz']=scene.objects['Camera'].worldPosition.z + + # Mémorisation de la position du modèle + scene.objects['Mecanisme']['init_lx']=scene.objects['Mecanisme'].worldPosition.x + scene.objects['Mecanisme']['init_ly']=scene.objects['Mecanisme'].worldPosition.y + scene.objects['Mecanisme']['init_lz']=scene.objects['Mecanisme'].worldPosition.z + scene.objects['Mecanisme']['init_rx']=scene.objects['Mecanisme'].worldOrientation.to_euler().x + scene.objects['Mecanisme']['init_ry']=scene.objects['Mecanisme'].worldOrientation.to_euler().y + scene.objects['Mecanisme']['init_rz']=scene.objects['Mecanisme'].worldOrientation.to_euler().z + + # Cacher les repères + for objet in objets_rep : + scene.objects[objet]['rep']=False + scene.objects[objet+"-Nom-Rep"].color=couleur_rep_pasactif + for rep in objets_rep_dict[objet]: + scene.objects[rep].setVisible(False,False) + +# def applyMovemenTo(obj, lx,ly,lz,rx,ry,rz): +# lres=0.001 # resolution location +# rres=0.001 # resolution rotation +# while (obj.worldPosition.x-lx > lres) or (obj.worldPosition.y-ly > lres) or (obj.worldPosition.z-lz > lres) or (obj.worldOrientation.to_euler().x-rx > rres) or (obj.worldOrientation.to_euler().y-ry > rres) or (obj.worldOrientation.to_euler().z-rz > rres): +# if obj.worldPosition.x-lx > lres: +# obj. applyMovement(lres,0,0) +# if obj.worldPosition.y-ly > lres: +# obj. applyMovement(0,lres,0 ) +# if obj.worldPosition.z-lz > lres: +# obj. applyMovement(0,0,lres) +# if obj.worldOrientation.to_euler().x-rx > rres: +# obj.applyRotation(rres,0,0) +# if obj.worldOrientation.to_euler().y-ry > rres: +# obj.applyRotation(0,rres,0) +# if obj.worldOrientation.to_euler().z-ry > rres: +# obj.applyRotation(0,0,rres) + +# def applyTranslationTo(obj, lx,ly,lz): +# lres=0.001 # resolution location +# while (obj.worldPosition.x-lx > lres) or (obj.worldPosition.y-ly > lres) or (obj.worldPosition.z-lz > lres): +# if obj.worldPosition.x-lx > lres: +# obj. applyMovement(lres,0,0) +# if obj.worldPosition.y-ly > lres: +# obj. applyMovement(0,lres,0 ) +# if obj.worldPosition.z-lz > lres: +# obj. applyMovement(0,0,lres) + +# Atteindre une orientation (bas niveau) +def applyRotationTo(obj, rx=None, ry=None, rz=None): + rres=0.001 # resolution rotation + + # x + if rx is not None: + while (abs(rx-obj.worldOrientation.to_euler().x) > rres) : + if obj.worldOrientation.to_euler().x-rx > rres: + obj.applyRotation((-rres, 0, 0), True) + if rx-obj.worldOrientation.to_euler().x > rres: + obj.applyRotation((rres, 0, 0), True) + # print ("delta x ",rx-obj.worldOrientation.to_euler().x) + + # y + if ry is not None: + while (abs(ry-obj.worldOrientation.to_euler().y) > rres) : + if obj.worldOrientation.to_euler().y-ry > rres: + obj.applyRotation((0, -rres, 0), True) + if ry-obj.worldOrientation.to_euler().y > rres: + obj.applyRotation((0, rres, 0), True) + # print ("delta y ",ry-obj.worldOrientation.to_euler().y) + + # z + if rz is not None: + while (abs(rz-obj.worldOrientation.to_euler().z) > rres) : + if obj.worldOrientation.to_euler().z-rz > rres: + obj.applyRotation((0, 0, -rres), True) + if rz-obj.worldOrientation.to_euler().z > rres: + obj.applyRotation((0, 0, rres), True) + # print ("delta z ",rz-obj.worldOrientation.to_euler().z) + +# Reset de la manipulation de la vue +def manip_reset(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['Mecanisme']['manip_mode']==0: + scene.objects['Camera'].worldPosition.x = scene.objects['Camera']['init_lx'] + scene.objects['Camera'].worldPosition.y = scene.objects['Camera']['init_ly'] + scene.objects['Camera'].worldPosition.z = scene.objects['Camera']['init_lz'] + applyRotationTo(scene.objects['Mecanisme'], 0, 0, 0) + for objet in objets : + scene.objects[objet].setVisible(True,False) + scene.objects[objet+"_Lines.GP"].setVisible(True,False) + if scene.objects['Mecanisme']['eclate'] ==True: + scene.objects['Mecanisme']['eclate'] = False + for objet in objets : + scene.objects[objet].worldPosition.x =scene.objects[objet]['init_lx'] + scene.objects[objet].worldPosition.y = scene.objects[objet]['init_ly'] + scene.objects[objet].worldPosition.z = scene.objects[objet]['init_lz'] + if scene.objects['Mecanisme']['anim'] == False: # Play d'une frame + anim_play1frame() + +# Position de départ pour la manipulation de la vue +def manip_start(cont): + obj = cont.owner + obj['click_x']=cont.sensors['ClickM'].position[0] + obj['click_y']=cont.sensors['ClickM'].position[1] + +# Cacher le cercle de la manipulation Orbit +def manip_stop(cont): + scene.objects['Orbit'].setVisible(False,False) + +# Manipulation du modèle ou de la caméra +def manip(cont): + obj = cont.owner + sensibilite_orbit=0.0005 + sensibilite_pan=0.005 + sensibilite_zoom=0.01 + delta_x=cont.sensors['DownM'].position[0]-obj['click_x'] + delta_y=cont.sensors['DownM'].position[1]-obj['click_y'] + + # Orbit (1280 * 720 px) + if obj['manip_mode']==0: + scene.objects['Orbit'].color=couleur_cmd + scene.objects['Orbit'].setVisible(True,False) + dist_orbit = math.sqrt(((1280/2)-obj['click_x'])**2+((720/2)-obj['click_y'])**2) + if dist_orbit<235 : # Orbit sur x et z + n=10 + pas_x=(delta_x*40*sensibilite_orbit)/n + pas_y=(((1280/2)-cont.sensors['DownM'].position[0])+((720/2)-cont.sensors['DownM'].position[1]))*0.005 + pas_z=(delta_y*40*sensibilite_orbit)/n + for i in range (n): + bge.render.drawLine([scene.objects['Orbit'].worldPosition.x+pas_x*i, scene.objects['Orbit'].worldPosition.y+abs(pas_y*math.sin((3.14*i)/n)), scene.objects['Orbit'].worldPosition.z-pas_z*i], + [scene.objects['Orbit'].worldPosition.x+pas_x*(i+1), scene.objects['Orbit'].worldPosition.y+abs(pas_y*math.sin((3.14*(i+1))/n)), scene.objects['Orbit'].worldPosition.z-pas_z*(i+1)], + [0.8, 0.619, 0.021]) + scene.objects['Mecanisme'].applyRotation((delta_y*sensibilite_orbit, 0, delta_x*sensibilite_orbit), True) + else: # Orbit sur y + scene.objects['Orbit'].color=couleur_cmd_hl + if abs(delta_x) >= abs(delta_y): + scene.objects['Mecanisme'].applyRotation((0, delta_x*sensibilite_orbit, 0), True) + else: + scene.objects['Mecanisme'].applyRotation((0, delta_y*sensibilite_orbit, 0), True) + # if obj['manip_mode']==0: + # scene.objects['Mecanisme'].applyRotation((delta_y*sensibilite_orbit, 0, delta_x*sensibilite_orbit), True) + + # Pan + if obj['manip_mode']==1: # Shift + scene.objects['Camera'].applyMovement((delta_x*-sensibilite_pan, delta_y*sensibilite_pan, 0), True) + + # Zoom + if obj['manip_mode']==2: # Ctrl + scene.objects['Camera'].applyMovement((0, 0, (delta_x+delta_y)*sensibilite_zoom), True) + +# Manipulation du modèle ou de la caméra +def manip_wheel(cont): + obj = cont.owner + sensibilite_wheel = 20 + if cont.sensors['WheelUp'].positive: + scene.objects['Camera'].applyMovement((0, 0, -sensibilite_wheel), True) + if cont.sensors['WheelDown'].positive: + scene.objects['Camera'].applyMovement((0, 0, sensibilite_wheel), True) + +############################################################################### +# Eclaté +############################################################################### + +# Position de départ pour l'éclatement de la vue +def eclate_start(cont): + if scene.objects['Mecanisme']['manip_mode']==1: + obj = cont.owner + obj['click_x']=cont.sensors['Click'].position[0] + obj['click_y']=cont.sensors['Click'].position[1] + +# Déplacement des composants en vue éclatée +def eclate(cont): + obj = cont.owner + sensibilite=0.005 + delta=(cont.sensors['Down'].position[0]-obj['click_x'])+(cont.sensors['Down'].position[1]-obj['click_y']) + if obj['manip_mode']==1: # Shift + scene.objects['Mecanisme']['eclate'] =True + for objet in objets : + ecla_x, ecla_y,ecla_z = 0,0,0 + if 'ecla_x' in scene.objects[objet]: + ecla_x = scene.objects[objet]['ecla_x'] + if 'ecla_y' in scene.objects[objet]: + ecla_y = scene.objects[objet]['ecla_y'] + if 'ecla_z' in scene.objects[objet]: + ecla_z = scene.objects[objet]['ecla_z'] + + # Déplacement dans le repère du mécanisme + x_axis = scene.objects['Mecanisme'].orientation.col[0] + y_axis = scene.objects['Mecanisme'].orientation.col[1] + z_axis = scene.objects['Mecanisme'].orientation.col[2] + scene.objects[objet].applyMovement((delta*sensibilite*ecla_x*x_axis[0], delta*sensibilite*ecla_x*x_axis[1] , delta*sensibilite*ecla_x*x_axis[2]), False) + scene.objects[objet].applyMovement((delta*sensibilite*ecla_y*y_axis[0], delta*sensibilite*ecla_y*y_axis[1] , delta*sensibilite*ecla_y*y_axis[2]), False) + scene.objects[objet].applyMovement((delta*sensibilite*ecla_z*z_axis[0], delta*sensibilite*ecla_z*z_axis[1] , delta*sensibilite*ecla_z*z_axis[2]), False) + +############################################################################### +# Couleur +############################################################################### + +# Initialisation des couleurs du mécanisme +def couleur_init(): + i=0 + for objet in objets : + scene.objects[objet].color = couleurs[objets_couleur[i]][1] + scene.objects[objet].setVisible(True,False) + scene.objects[objet+"_Lines.GP"].setVisible(True,False) + scene.objects[objet+"-Nom"].color = couleurs[objets_couleur[i]][1] + scene.objects[objet+"-Nom-Hl"].color = couleurs[objets_couleur[i]][1] + scene.objects[objet+"-Nom-Hl"].setVisible(False,False) + i +=1 + +# Reset des couleurs du mécanisme +def couleur_reset(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['Mecanisme']['manip_mode']==0: + couleur_init() + +# Sélection couleur dans la palette avec son numéro de couleur (bas niveau) +def couleur_choix_num(num): + for i in range (1, 9): + scene.objects['Couleur'+str(i)].worldScale=[3, 3, 3] + scene.objects['Couleur'+str(i)+"-Hl"].worldScale=[3, 3, 3] + scene.objects['Couleur'+str(num)].worldScale=[4, 4, 4] + scene.objects['Couleur'+str(num)+'-Hl'].worldScale=[4, 4, 4] + scene.objects['Couleurs']['couleur_select']=num + +# Sélection couleur dans la palette +def couleur_choix(cont): + obj = cont.owner + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['Mecanisme']['manip_mode']==0: + hitObject = cont.sensors['MO'].hitObject + if hitObject is not None and "-Hl" not in hitObject .name: + couleur_choix_num(int(hitObject .name[7])) + +# Le highlight de 'couleur_choix' +def couleur_choix_hl(cont): + if cont.sensors['MO'].positive and scene.objects['Mecanisme']['manip_mode']==0: + hitObject = cont.sensors['MO'].hitObject + if hitObject is not None and "-Hl" not in hitObject .name: + hitObject.setVisible(False,False) + scene.objects[hitObject.name+'-Hl'].setVisible(True,False) + # obj.color = couleur_cmd_hl + if cont.sensors['MO'].status == JUST_RELEASED: + for i in range (1, 9): + scene.objects['Couleur'+str(i)].setVisible(True,False) + scene.objects['Couleur'+str(i)+"-Hl"].setVisible(False,False) + +# Colorisation de la pièce +def couleur_objet(cont): + if cont.sensors['Click'].positive and scene.objects['Mecanisme']['manip_mode']==0: + hitObject = cont.sensors['MO'].hitObject + if hitObject is not None and hitObject.visible: + couleur_select = scene.objects['Couleurs']['couleur_select'] + if couleur_select != 0 and couleur_select != 8: + hitObject.color = couleurs[couleur_select-1][1] + scene.objects[hitObject.name+"-Nom"].color = couleurs[couleur_select-1][1] + scene.objects[hitObject.name+"-Nom-Hl"].color = couleurs[couleur_select-1][1] + if couleur_select == 8: # Couleur transparente -> disparition / apparition + hitObject.setVisible(False,False) + scene.objects[hitObject.name+"_Lines.GP"].setVisible(False,False) + +# Le highlight de 'couleur_objet' +def couleur_objet_hl(cont): + if cont.sensors['MO'].status == JUST_ACTIVATED and scene.objects['Mecanisme']['manip_mode']==0: + hitObject = cont.sensors['MO'].hitObject + if hitObject is not None and hitObject.visible: + scene.objects[hitObject.name+"-Nom"].setVisible(False,False) + scene.objects[hitObject.name+"-Nom-Hl"].setVisible(True,False) + if cont.sensors['MO'].status == JUST_RELEASED: + for objet in objets : + scene.objects[objet+"-Nom"].setVisible(True,False) + scene.objects[objet+"-Nom-Hl"].setVisible(False,False) + +############################################################################### +# Nomenclature +############################################################################### + +# Click sur la nomeclature +def nom(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and scene.objects['Mecanisme']['manip_mode']==0: + hitObject = cont.sensors['MO'].hitObject + if hitObject is not None: + + # Afficher/cacher les repères de la pièce + if "-Nom-Rep" in hitObject.name: + obj=hitObject.name[:len(hitObject.name)-8] + print (scene.objects[obj]['rep']) + if scene.objects[obj]['rep']==False: + scene.objects[obj]['rep']=True + hitObject.color=couleur_rep_actif + for rep in objets_rep_dict[obj]: + scene.objects[rep].setVisible(True,False) + else: + scene.objects[obj]['rep']=False + hitObject.color=couleur_rep_pasactif + for rep in objets_rep_dict[obj]: + scene.objects[rep].setVisible(False,False) + + # Colorisation de la pièce par la nomenclature + else: + couleur_select = scene.objects['Couleurs']['couleur_select'] + if couleur_select != 0 and couleur_select != 8: + hitObject.color = couleurs[couleur_select-1][1] + scene.objects[hitObject.name+"-Hl"].color = couleurs[couleur_select-1][1] + scene.objects[hitObject.name[0:len(hitObject.name)-4]].setVisible(True,False) + scene.objects[hitObject.name[0:len(hitObject.name)-4]].color = couleurs[couleur_select-1][1] + + if couleur_select == 8: # Couleur transparente -> disparition / apparition + obj=scene.objects[hitObject.name[0:len(hitObject.name)-4]] + obj_GP=scene.objects[hitObject.name[0:len(hitObject.name)-4]+"_Lines.GP"] + if obj.visible==True: + obj.setVisible(False,False) + obj_GP.setVisible(False,False) + else: + obj.setVisible(True,False) + obj_GP.setVisible(True,False) + # if couleur_select == 8: # Couleur transparente -> disparition + # scene.objects[hitObject.name[0:len(hitObject.name)-4]].setVisible(False,False) + +# Le highlight de la nomenclature +def nom_hl(cont): + if cont.sensors['MO'].status == JUST_ACTIVATED and scene.objects['Mecanisme']['manip_mode']==0: + hitObject = cont.sensors['MO'].hitObject + if hitObject is not None: + hitObject.setVisible(False,False) + scene.objects[hitObject.name+'-Hl'].setVisible(True,False) + # obj.color = couleur_cmd_hl + if cont.sensors['MO'].status == JUST_RELEASED and scene.objects['Mecanisme']['manip_mode']==0: + for objet in objets : + scene.objects[objet+"-Nom"].setVisible(True,False) + scene.objects[objet+"-Nom-Hl"].setVisible(False,False) + for objet in objets_rep : + scene.objects[objet+'-Nom-Rep'].setVisible(True,False) + scene.objects[objet+'-Nom-Rep-Hl'].setVisible(False,False) + +############################################################################### +# Aide +############################################################################### + +# Ouvrir la page d'aide +def aide(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : + # scene.replace('Scene-Aide') # Bug Eevee -> même scene mais camera différente + scene.active_camera=scene.objects['Aide-Camera'] + scene.objects['Apropos-Lien_projet'].color= couleur_lien + scene.objects['Apropos-Lien_blender'].color= couleur_lien + scene.objects['Apropos-Lien_upbge'].color= couleur_lien + +# Fermer la page d'aide +def aide_fermer(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : + # bge.logic.addScene('Scene') # Bug Eevee -> même scene mais camera différente + scene.active_camera=scene.objects['Camera'] + +# Aller sur les liens +def aide_apropos(cont): + if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive : + obj = cont.owner + if obj.name == "Apropos-Lien_projet" : + webbrowser.open('https://gitlab.com/blender-edutech') + if obj.name == "Apropos-Lien_blender" : + webbrowser.open('https://blender.org') + if obj.name == "Apropos-Lien_upbge" : + webbrowser.open('https://upbge.org') + +# Le highlight des liens +def aide_apropos_hl(cont): + if cont.sensors['MO'].status == JUST_ACTIVATED : + obj = cont.owner + obj.color = couleur_lien_hl + if cont.sensors['MO'].status == JUST_RELEASED : + obj = cont.owner + obj.color = couleur_lien diff --git a/serrure_biometrique/serrure_biometrique-36.blend b/serrure_biometrique/serrure_biometrique-36.blend new file mode 100644 index 0000000..efcd4a7 Binary files /dev/null and b/serrure_biometrique/serrure_biometrique-36.blend differ