From c8b756aeb5be64ac8f4fed69cf2aae93f32356bc Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Tue, 8 Aug 2023 23:16:44 +0200 Subject: [PATCH 001/134] Initial commit --- LICENSE | 339 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 2 + 2 files changed, 341 insertions(+) create mode 100644 LICENSE create mode 100644 README.md diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d159169 --- /dev/null +++ b/LICENSE @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE 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. + + 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 +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + 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 2 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, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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. diff --git a/README.md b/README.md new file mode 100644 index 0000000..1d02365 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# step2gmsh +Generates MFEM compatible meshes from step files. From e79d2071ab0b1a91369cdf5b8cfa9664271d3a4b Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Tue, 8 Aug 2023 23:29:06 +0200 Subject: [PATCH 002/134] Initial commit --- .github/workflows/builds-and-tests.yml | 35 + .gitignore | 2 + src/__init__.py | 0 src/mesher.py | 119 + test/test_gmshWrapper.py | 89 + testData/empty_coax/empty_coax.FCStd | Bin 0 -> 5014 bytes testData/empty_coax/empty_coax.msh | 927 ++ testData/empty_coax/empty_coax.step | 178 + testData/five_wires/five_wires.FCStd | Bin 0 -> 21398 bytes testData/five_wires/five_wires.msh | 9950 +++++++++++++++++ testData/five_wires/five_wires.step | 1022 ++ .../partially_filled_coax.FCStd | Bin 0 -> 6080 bytes .../partially_filled_coax.msh | 1020 ++ .../partially_filled_coax.step | 256 + .../three_wires_ribbon.FCStd | Bin 0 -> 16510 bytes .../three_wires_ribbon.step | 635 ++ testData/two_wires_coax/two_wires_coax.FCStd | Bin 0 -> 5952 bytes testData/two_wires_coax/two_wires_coax.msh | 4167 +++++++ testData/two_wires_coax/two_wires_coax.step | 248 + 19 files changed, 18648 insertions(+) create mode 100644 .github/workflows/builds-and-tests.yml create mode 100644 .gitignore create mode 100644 src/__init__.py create mode 100644 src/mesher.py create mode 100644 test/test_gmshWrapper.py create mode 100644 testData/empty_coax/empty_coax.FCStd create mode 100644 testData/empty_coax/empty_coax.msh create mode 100644 testData/empty_coax/empty_coax.step create mode 100644 testData/five_wires/five_wires.FCStd create mode 100644 testData/five_wires/five_wires.msh create mode 100644 testData/five_wires/five_wires.step create mode 100644 testData/partially_filled_coax/partially_filled_coax.FCStd create mode 100644 testData/partially_filled_coax/partially_filled_coax.msh create mode 100644 testData/partially_filled_coax/partially_filled_coax.step create mode 100644 testData/three_wires_ribbon/three_wires_ribbon.FCStd create mode 100644 testData/three_wires_ribbon/three_wires_ribbon.step create mode 100644 testData/two_wires_coax/two_wires_coax.FCStd create mode 100644 testData/two_wires_coax/two_wires_coax.msh create mode 100644 testData/two_wires_coax/two_wires_coax.step diff --git a/.github/workflows/builds-and-tests.yml b/.github/workflows/builds-and-tests.yml new file mode 100644 index 0000000..0aad79d --- /dev/null +++ b/.github/workflows/builds-and-tests.yml @@ -0,0 +1,35 @@ +name: "Tests" + +permissions: + actions: write + +on: + push: + branches: + - master + pull_request: + workflow_dispatch: + +jobs: + builds-and-tests: + strategy: + matrix: + os: [windows-latest] + + name: ${{ matrix.os }}-${{ matrix.target }} + + runs-on: ${{ matrix.os }} + + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.11.0 + with: + access_token: ${{ github.token }} + + # Checkout + - name: checkout (Windows) + uses: actions/checkout@v3 + with: + path: ${{ env.PULMTLN_TOP_DIR }} + + \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1ee5835 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.FCStd1 +*.pyc \ No newline at end of file diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/mesher.py b/src/mesher.py new file mode 100644 index 0000000..4932b66 --- /dev/null +++ b/src/mesher.py @@ -0,0 +1,119 @@ +import gmsh +import os +import sys +from collections import defaultdict + +DEFAULT_MESHING_OPTIONS = { + "Mesh.MeshSizeFromCurvature": 25, + "Mesh.ElementOrder": 3, + "Mesh.ScalingFactor": 1e-3, + "General.DrawBoundingBoxes": 1, + "Mesh.SurfaceFaces": 1, + "Mesh.MeshSizeMax": 1 +} + +class StepShapes: + def __init__(self, shapes): + gmsh.model.occ.synchronize() + + self.allShapes = shapes + + self.openRegion = self.get_surfaces(shapes, "OpenRegion_") + self.pecs = self.get_surfaces(shapes, "Conductor_") + self.dielectrics = self.get_surfaces(shapes, "Dielectric_") + + @staticmethod + def getNumberFromEntityName(entity_name: str, label: str): + ini = entity_name.rindex(label) + len(label) + num = int(entity_name[ini:]) + return num + + @staticmethod + def get_surfaces(shapes, label: str): + surfaces = dict() + for s in shapes: + entity_name = gmsh.model.get_entity_name(*s) + if s[0] != 2 or label not in entity_name: + continue + num = StepShapes.getNumberFromEntityName(entity_name, label) + surfaces[num] = s + + return surfaces + +def meshFromStep( + folder: str, + case_name: str, + meshing_options=DEFAULT_MESHING_OPTIONS): + + gmsh.initialize() + gmsh.model.add(case_name) + + # Importing from FreeCAD generated steps. STEP default units are mm. + stepShapes = StepShapes( + gmsh.model.occ.importShapes( + folder + case_name + '/' + case_name + '.step', + highestDimOnly=False + ) + ) + + # --- Geometry manipulation --- + # Creates global domain. + if len(stepShapes.openRegion) != 0: + region = stepShapes.openRegion[0] + isOpenProblem = True + else: + region = stepShapes.pecs[0] + isOpenProblem = False + + for num, surf in stepShapes.pecs.items(): + if num == 0 and isOpenProblem == False: + continue + for _, dielectric_surf in stepShapes.dielectrics.items(): + gmsh.model.occ.cut([dielectric_surf], [surf], removeTool=False) + gmsh.model.occ.cut([region], [surf], removeTool=False) + + for _, surf in stepShapes.dielectrics.items(): + gmsh.model.occ.cut([region], [surf], removeTool=False) + + gmsh.model.occ.synchronize() + + # Prepares PEC boundaries and removes surfaces. + pec_bdrs = dict() + for num, surf in stepShapes.pecs.items(): + pec_bdrs[num] = gmsh.model.getBoundary([surf]) + if num != 0: + gmsh.model.occ.remove([surf]) + elif num == 0 and isOpenProblem: + gmsh.model.occ.remove([surf]) + + gmsh.model.occ.synchronize() + + # --- Physical groups --- + # Boundaries. + for num, bdrs in pec_bdrs.items(): + name = "Conductor_" + str(num) + for bdr in bdrs: + if bdr[1] > 0: + gmsh.model.addPhysicalGroup(1, [bdr[1]], name=name) + + # Domains. + gmsh.model.addPhysicalGroup(2, [region[1]], name='Vacuum') + + for num, surf in stepShapes.dielectrics.items(): + name = "Dielectric_" + str(num) + gmsh.model.addPhysicalGroup(2, [surf[1]], name=name) + + # Meshing. + for [opt, val] in meshing_options.items(): + gmsh.option.setNumber(opt, val) + + gmsh.model.mesh.generate(2) + gmsh.option.setNumber("Mesh.MshFileVersion", 2.2) + + # Exporting + gmsh.write(case_name + '.msh') + + if '-nopopup' not in sys.argv: + gmsh.fltk.run() + + gmsh.finalize() diff --git a/test/test_gmshWrapper.py b/test/test_gmshWrapper.py new file mode 100644 index 0000000..46efbc6 --- /dev/null +++ b/test/test_gmshWrapper.py @@ -0,0 +1,89 @@ +from src.mesher import * + +import os +import gmsh + +dir_path = os.path.dirname(os.path.realpath(__file__)) + '/' +testdata_path = dir_path + '/../testData/' + + +def test_getNumberFromEntityName(): + assert (StepShapes.getNumberFromEntityName( + 'Shapes/Conductor_1', + 'Conductor_') == 1 + ) + + assert (StepShapes.getNumberFromEntityName( + 'Shapes/solid_wire_002/Conductor_002/Conductor_002', + 'Conductor_') == 2 + ) + + +def test_partially_filled_coax(): + meshFromStep(testdata_path, 'partially_filled_coax') + + +def test_empty_coax(): + meshFromStep(testdata_path, 'empty_coax') + + +def test_two_wires_coax(): + meshFromStep(testdata_path, 'two_wires_coax') + + +def test_five_wires(): + meshFromStep(testdata_path, 'five_wires') + +def test_three_wires_ribbon(): + meshFromStep(testdata_path, 'three_wires_ribbon') + +def test_stepShapes_for_partially_filled_coax(): + case_name = 'partially_filled_coax' + + gmsh.initialize() + gmsh.model.add(case_name) + stepShapes = StepShapes( + gmsh.model.occ.importShapes( + testdata_path + case_name + '/' + case_name + '.step' + ) + ) + + gmsh.finalize() + + assert (len(stepShapes.pecs) == 2) + assert (len(stepShapes.dielectrics) == 1) + + +def test_stepShapes_for_five_wires(): + case_name = 'five_wires' + + gmsh.initialize() + gmsh.model.add(case_name) + stepShapes = StepShapes( + gmsh.model.occ.importShapes( + testdata_path + case_name + '/' + case_name + '.step' + ) + ) + + gmsh.finalize() + + assert (len(stepShapes.pecs) == 6) + assert (len(stepShapes.dielectrics) == 5) + +def test_stepShapes_for_three_wires_ribbon(): + case_name = 'three_wires_ribbon' + + gmsh.initialize() + gmsh.model.add(case_name) + stepShapes = StepShapes( + gmsh.model.occ.importShapes( + testdata_path + case_name + '/' + case_name + '.step' + ) + ) + + gmsh.finalize() + + assert (len(stepShapes.openRegion) == 1) + assert (len(stepShapes.pecs) == 3) + assert (len(stepShapes.dielectrics) == 3) + diff --git a/testData/empty_coax/empty_coax.FCStd b/testData/empty_coax/empty_coax.FCStd new file mode 100644 index 0000000000000000000000000000000000000000..7901d5f82a7979009e08a2cb98fcf89cc766bb58 GIT binary patch literal 5014 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 JjDNM!e*g&_dXNAB literal 0 HcmV?d00001 diff --git a/testData/empty_coax/empty_coax.msh b/testData/empty_coax/empty_coax.msh new file mode 100644 index 0000000..a273dcd --- /dev/null +++ b/testData/empty_coax/empty_coax.msh @@ -0,0 +1,927 @@ +$MeshFormat +2.2 0 8 +$EndMeshFormat +$PhysicalNames +3 +1 1 "Conductor_0" +1 2 "Conductor_1" +2 3 "Vacuum" +$EndPhysicalNames +$Nodes +720 +1 0.05 3.0616169978685e-18 0 +2 0.025 1.53080849893425e-18 0 +3 0.04903926402016152 0.009754516100806397 0 +4 0.04619397662556435 0.01913417161825445 0 +5 0.04157348061512729 0.02777851165098007 0 +6 0.03535533905932743 0.03535533905932732 0 +7 0.02777851165098018 0.04157348061512721 0 +8 0.01913417161825459 0.04619397662556429 0 +9 0.009754516100806533 0.0490392640201615 0 +10 1.332266618417062e-16 0.05 0 +11 -0.00975451610080626 0.04903926402016155 0 +12 -0.0191341716182543 0.04619397662556442 0 +13 -0.02777851165097992 0.0415734806151274 0 +14 -0.03535533905932722 0.03535533905932754 0 +15 -0.04157348061512713 0.02777851165098031 0 +16 -0.04619397662556423 0.01913417161825474 0 +17 -0.04903926402016147 0.009754516100806689 0 +18 -0.05 2.917194011737841e-16 0 +19 -0.04903926402016159 -0.009754516100806073 0 +20 -0.04619397662556445 -0.01913417161825422 0 +21 -0.04157348061512741 -0.0277785116509799 0 +22 -0.03535533905932758 -0.03535533905932717 0 +23 -0.02777851165098033 -0.04157348061512712 0 +24 -0.01913417161825472 -0.04619397662556424 0 +25 -0.009754516100806602 -0.04903926402016148 0 +26 -1.837586145958244e-16 -0.05 0 +27 0.009754516100806245 -0.04903926402016155 0 +28 0.01913417161825438 -0.04619397662556438 0 +29 0.02777851165098003 -0.04157348061512733 0 +30 0.03535533905932727 -0.03535533905932748 0 +31 0.04157348061512721 -0.02777851165098018 0 +32 0.04619397662556431 -0.01913417161825456 0 +33 0.04903926402016152 -0.009754516100806432 0 +34 0.04989294616193018 0.00327015646150715 0 +35 0.04957224306869053 0.006526309611002567 0 +36 0.04829629131445342 0.01294095225512601 0 +37 0.04734650647475529 0.01607197326515805 0 +38 0.04484363707663444 0.02211443451095003 0 +39 0.04330127018922196 0.02499999999999996 0 +40 0.0396676670145618 0.03043807145043599 0 +41 0.03759199037394892 0.0329672907550034 0 +42 0.03296729075500351 0.03759199037394882 0 +43 0.03043807145043609 0.03966766701456171 0 +44 0.02500000000000008 0.04330127018922189 0 +45 0.02211443451095015 0.04484363707663437 0 +46 0.01607197326515819 0.04734650647475525 0 +47 0.01294095225512615 0.04829629131445339 0 +48 0.006526309611002705 0.04957224306869051 0 +49 0.003270156461507283 0.04989294616193017 0 +50 -0.003270156461507017 0.04989294616193019 0 +51 -0.006526309611002441 0.04957224306869054 0 +52 -0.01294095225512587 0.04829629131445346 0 +53 -0.01607197326515791 0.04734650647475534 0 +54 -0.02211443451094989 0.04484363707663451 0 +55 -0.02499999999999982 0.04330127018922204 0 +56 -0.03043807145043584 0.0396676670145619 0 +57 -0.03296729075500326 0.03759199037394903 0 +58 -0.03759199037394872 0.03296729075500362 0 +59 -0.03966766701456162 0.03043807145043621 0 +60 -0.04330127018922181 0.02500000000000021 0 +61 -0.04484363707663431 0.02211443451095028 0 +62 -0.0473465064747552 0.01607197326515834 0 +63 -0.04829629131445334 0.01294095225512631 0 +64 -0.04957224306869049 0.006526309611002862 0 +65 -0.04989294616193016 0.003270156461507441 0 +66 -0.0498929461619302 -0.003270156461506836 0 +67 -0.04957224306869056 -0.006526309611002238 0 +68 -0.0482962913144535 -0.01294095225512572 0 +69 -0.04734650647475538 -0.01607197326515779 0 +70 -0.04484363707663454 -0.02211443451094982 0 +71 -0.04330127018922206 -0.02499999999999978 0 +72 -0.03966766701456192 -0.03043807145043582 0 +73 -0.03759199037394904 -0.03296729075500324 0 +74 -0.03296729075500365 -0.03759199037394868 0 +75 -0.03043807145043625 -0.03966766701456158 0 +76 -0.02500000000000021 -0.04330127018922181 0 +77 -0.02211443451095026 -0.04484363707663432 0 +78 -0.0160719732651583 -0.04734650647475521 0 +79 -0.01294095225512625 -0.04829629131445336 0 +80 -0.006526309611002755 -0.0495722430686905 0 +81 -0.003270156461507311 -0.04989294616193016 0 +82 0.003270156461506988 -0.04989294616193019 0 +83 0.006526309611002433 -0.04957224306869054 0 +84 0.01294095225512589 -0.04829629131445345 0 +85 0.01607197326515795 -0.04734650647475533 0 +86 0.02211443451094997 -0.04484363707663447 0 +87 0.02499999999999993 -0.04330127018922197 0 +88 0.03043807145043593 -0.03966766701456184 0 +89 0.03296729075500332 -0.03759199037394897 0 +90 0.03759199037394879 -0.03296729075500354 0 +91 0.0396676670145617 -0.03043807145043611 0 +92 0.0433012701892219 -0.02500000000000006 0 +93 0.04484363707663439 -0.0221144345109501 0 +94 0.04734650647475526 -0.01607197326515813 0 +95 0.04829629131445341 -0.01294095225512608 0 +96 0.04957224306869052 -0.006526309611002581 0 +97 0.04989294616193018 -0.003270156461507137 0 +98 0.02309698831278218 0.009567085809127227 0 +99 0.01767766952966372 0.01767766952966366 0 +100 0.009567085809127296 0.02309698831278215 0 +101 6.661333092085312e-17 0.025 0 +102 -0.009567085809127152 0.02309698831278221 0 +103 -0.01767766952966361 0.01767766952966377 0 +104 -0.02309698831278212 0.009567085809127369 0 +105 -0.025 1.45859700586892e-16 0 +106 -0.02309698831278223 -0.009567085809127109 0 +107 -0.01767766952966379 -0.01767766952966358 0 +108 -0.00956708580912736 -0.02309698831278212 0 +109 -9.187930729791219e-17 -0.025 0 +110 0.00956708580912719 -0.02309698831278219 0 +111 0.01767766952966364 -0.01767766952966374 0 +112 0.02309698831278216 -0.00956708580912728 0 +113 0.02478612153434526 0.003263154805501284 0 +114 0.02414814565722671 0.006470476127563006 0 +115 0.02165063509461098 0.01249999999999998 0 +116 0.0198338335072809 0.01521903572521799 0 +117 0.01521903572521805 0.01983383350728085 0 +118 0.01250000000000004 0.02165063509461095 0 +119 0.006470476127563077 0.02414814565722669 0 +120 0.003263154805501353 0.02478612153434525 0 +121 -0.003263154805501214 0.02478612153434527 0 +122 -0.006470476127562937 0.02414814565722673 0 +123 -0.01249999999999991 0.02165063509461102 0 +124 -0.01521903572521793 0.01983383350728095 0 +125 -0.01983383350728081 0.01521903572521811 0 +126 -0.02165063509461091 0.0125000000000001 0 +127 -0.02414814565722667 0.006470476127563153 0 +128 -0.02478612153434524 0.003263154805501431 0 +129 -0.02478612153434528 -0.003263154805501141 0 +130 -0.02414814565722674 -0.00647047612756287 0 +131 -0.02165063509461104 -0.01249999999999987 0 +132 -0.01983383350728098 -0.01521903572521789 0 +133 -0.01521903572521813 -0.01983383350728079 0 +134 -0.0125000000000001 -0.02165063509461091 0 +135 -0.006470476127563123 -0.02414814565722668 0 +136 -0.003263154805501378 -0.02478612153434525 0 +137 0.003263154805501216 -0.02478612153434527 0 +138 0.006470476127562966 -0.02414814565722672 0 +139 0.01249999999999995 -0.021650635094611 0 +140 0.01521903572521796 -0.01983383350728092 0 +141 0.01983383350728085 -0.01521903572521806 0 +142 0.02165063509461095 -0.01250000000000003 0 +143 0.0241481456572267 -0.006470476127563038 0 +144 0.02478612153434526 -0.003263154805501291 0 +145 -0.006431599369392833 0.03233383350728088 0 +146 -0.01831564540678211 0.02741130046272805 0 +147 -0.02741130046272789 0.01831564540678236 0 +148 -0.03233383350728091 -0.006431599369392763 0 +149 0.01831564540678217 -0.02741130046272803 0 +150 0.027411300462728 0.0183156454067822 0 +151 0.01831564540678228 0.02741130046272795 0 +152 0.006431599369393024 0.03233383350728084 0 +153 0.03233383350728087 0.006431599369392933 0 +154 -0.03233383350728083 0.00643159936939313 0 +155 -0.02741130046272811 -0.01831564540678208 0 +156 0.006431599369392854 -0.0323338335072809 0 +157 0.03233383350728088 -0.006431599369392972 0 +158 -0.01831564540678239 -0.0274113004627279 0 +159 0.02741130046272796 -0.01831564540678231 0 +160 -0.006431599369393096 -0.03233383350728087 0 +161 -0.01504998197803413 0.03633387060484105 0 +162 -0.03982210386496066 2.300311566427255e-16 0 +163 0.03672650292738495 0.01521261561105799 0 +164 1.148530488943751e-16 0.03975248031261722 0 +165 0.01517531431908017 0.03663644964239775 0 +166 -0.03672650292738485 0.01521261561105821 0 +167 0.02804032459764715 0.02804032459764706 0 +168 -0.02780874062833906 0.0278087406283393 0 +169 0.02828155789900945 -0.02828155789900961 0 +170 -0.02815847968402886 -0.02815847968402854 0 +171 0.03999616274581921 -1.506089576004129e-17 0 +172 0.01523925939104216 -0.03679082670237579 0 +173 -0.03663644964239788 -0.01517531431907988 0 +174 0.03651037504341575 -0.01512309251031104 0 +175 -0.01523925939104244 -0.03679082670237567 0 +176 -1.372058074318922e-16 -0.03999616274581921 0 +177 -0.04098491186550157 -0.008152405846013303 0 +178 -0.00815240584601371 -0.04098491186550146 0 +179 0.03474533056313009 -0.02321608764972815 0 +180 -0.008152405846013412 0.04098491186550158 0 +181 -0.02321608764972798 0.03474533056313027 0 +182 -0.04098491186550149 0.008152405846013771 0 +183 0.02321608764972802 -0.03474533056313022 0 +184 0.04098491186550154 0.008152405846013526 0 +185 0.04098491186550151 -0.008152405846013584 0 +186 -0.0347453305631303 -0.0232160876497279 0 +187 0.02321608764972816 0.03474533056313012 0 +188 0.008152405846013417 -0.04098491186550155 0 +189 -0.03474533056313007 0.02321608764972828 0 +190 0.008152405846013648 0.04098491186550152 0 +191 -0.02321608764972829 -0.03474533056313003 0 +192 0.03474533056313019 0.02321608764972806 0 +193 -0.03482992362650743 0.004287732912928831 0 +194 -0.03732601374573405 0.00214386645646453 0 +195 -0.03732601374573408 -0.002143866456464101 0 +196 -0.03482992362650749 -0.004287732912928431 0 +197 -0.03233383350728088 -0.002143866456464132 0 +198 -0.03233383350728086 0.002143866456464499 0 +199 -0.03482992362650745 1.995521292959497e-16 0 +200 -0.009304393572273265 0.03366717920646761 0 +201 -0.0121771877751537 0.03500052490565433 0 +202 -0.01613853645428346 0.03335968055747005 0 +203 -0.01722709093053279 0.03038549051009905 0 +204 -0.01435429672765236 0.02905214481091233 0 +205 -0.01039294804852259 0.0306929891590966 0 +206 -0.01326574225140303 0.03202633485828334 0 +207 0.02163761623752459 -0.02770138627482189 0 +208 0.02495958706826702 -0.02799147208691575 0 +209 0.02799147208691562 -0.02495958706826717 0 +210 0.02770138627482179 -0.02163761623752474 0 +211 0.02437941544407937 -0.02134753042543088 0 +212 0.02134753042543077 -0.02437941544407946 0 +213 0.02466950125617319 -0.02466950125617331 0 +214 0.03044432532295723 -0.01725146110795855 0 +215 0.0334773501831865 -0.0161872768091348 0 +216 0.0351181945313708 -0.01222592813000502 0 +217 0.03372601401932584 -0.009328763749698996 0 +218 0.03069298915909657 -0.01039294804852275 0 +219 0.02905214481091227 -0.01435429672765253 0 +220 0.03208516967114153 -0.01329011242882877 0 +221 0.01726886837754824 0.03048635018928455 0 +222 0.0162220913483142 0.03356139991584115 0 +223 0.01226074266918445 0.03520224426402545 0 +224 0.009346171019288738 0.03376803888565315 0 +225 0.01039294804852278 0.03069298915909654 0 +226 0.01435429672765253 0.02905214481091225 0 +227 0.01330751969841849 0.03212719453746885 0 +228 -0.004287732912928777 -0.03488794325346032 0 +229 -0.002143866456464457 -0.03744205299963976 0 +230 0.002143866456464193 -0.03744205299963978 0 +231 0.004287732912928523 -0.03488794325346033 0 +232 0.002143866456464204 -0.0323338335072809 0 +233 -0.002143866456464446 -0.03233383350728088 0 +234 -1.265975335153094e-16 -0.03488794325346033 0 +235 -0.02148001048063443 0.0275437805179318 0 +236 -0.02464437555448674 0.02767626057313555 0 +237 -0.02767626057313534 0.02464437555448698 0 +238 -0.02754378051793161 0.02148001048063467 0 +239 -0.0243794154440793 0.02134753042543093 0 +240 -0.02134753042543071 0.02437941544407949 0 +241 -0.02451189549928302 0.02451189549928324 0 +242 0.03379805664731556 0.009358604783281287 0 +243 0.03526227978735026 0.01228561019716964 0 +244 0.03362143543916597 0.0162469588762994 0 +245 0.03051636795094698 0.0172813021415408 0 +246 0.02905214481091229 0.01435429672765245 0 +247 0.03069298915909658 0.01039294804852269 0 +248 0.03215721229913127 0.01331995346241104 0 +249 0.009367486043275955 -0.03381949790564586 0 +250 0.01230337271715906 -0.03530516230401083 0 +251 0.01626472139628883 -0.03366431795582654 0 +252 0.0172901834015355 -0.03053780920927729 0 +253 0.0143542967276524 -0.02905214481091233 0 +254 0.01039294804852262 -0.03069298915909661 0 +255 0.01332883472240572 -0.03217865355746157 0 +256 -0.02766036020316169 -0.02159659016586423 0 +257 -0.02790941994359528 -0.02487753492494639 0 +258 -0.02487753492494671 -0.027909419943595 0 +259 -0.02159659016586455 -0.02766036020316145 0 +260 -0.02134753042543096 -0.02437941544407929 0 +261 -0.02437941544407954 -0.02134753042543069 0 +262 -0.02462847518451312 -0.02462847518451283 0 +263 -0.03051636795094688 0.01728130214154098 0 +264 -0.03362143543916587 0.01624695887629959 0 +265 -0.03526227978735017 0.01228561019716985 0 +266 -0.03379805664731551 0.009358604783281493 0 +267 -0.03069298915909652 0.01039294804852288 0 +268 -0.02905214481091221 0.01435429672765262 0 +269 -0.03215721229913119 0.01331995346241123 0 +270 -0.03376803888565323 -0.009346171019288469 0 +271 -0.03520224426402555 -0.01226074266918417 0 +272 -0.03356139991584128 -0.01622209134831395 0 +273 -0.0304863501892847 -0.01726886837754802 0 +274 -0.02905214481091237 -0.01435429672765231 0 +275 -0.03069298915909664 -0.01039294804852253 0 +276 -0.03212719453746896 -0.01330751969841824 0 +277 0.03488794325346032 -0.004287732912928654 0 +278 0.03744205299963977 -0.002143866456464335 0 +279 0.03744205299963976 0.0021438664564643 0 +280 0.03488794325346032 0.004287732912928616 0 +281 0.03233383350728087 0.002143866456464298 0 +282 0.03233383350728088 -0.002143866456464336 0 +283 0.03488794325346032 -1.789042059579722e-17 0 +284 -0.01729018340153574 -0.03053780920927716 0 +285 -0.01626472139628909 -0.03366431795582641 0 +286 -0.01230337271715932 -0.03530516230401073 0 +287 -0.00936748604327621 -0.03381949790564581 0 +288 -0.01039294804852286 -0.03069298915909655 0 +289 -0.01435429672765263 -0.02905214481091222 0 +290 -0.01332883472240598 -0.03217865355746148 0 +291 0.004287732912928721 0.0348067157757263 0 +292 0.002143866456464418 0.03727959804417176 0 +293 -0.002143866456464201 0.03727959804417178 0 +294 -0.004287732912928517 0.03480671577572633 0 +295 -0.002143866456464215 0.03233383350728086 0 +296 0.002143866456464403 0.03233383350728086 0 +297 1.009494669715352e-16 0.0348067157757263 0 +298 0.02762097517436772 0.02155720513707049 0 +299 0.02783064988600743 0.02479876486735877 0 +300 0.02479876486735886 0.02783064988600736 0 +301 0.02155720513707057 0.02762097517436765 0 +302 0.02134753042543086 0.02437941544407937 0 +303 0.02437941544407943 0.02134753042543079 0 +304 0.02458909015571914 0.02458909015571907 0 +305 0.02453509236276409 -0.01248327234167895 0 +306 0.02597319641274603 -0.01539945887423063 0 +307 0.02925488510911464 -0.007476761515971075 0 +308 0.02617593671094839 -0.008521923662549178 0 +309 0.02761404076093032 -0.01143811019510085 0 +310 0.008521923662549079 -0.02617593671094843 0 +311 0.007476761515970968 -0.02925488510911466 0 +312 0.01539945887423051 -0.02597319641274608 0 +313 0.01248327234167885 -0.02453509236276414 0 +314 0.01143811019510074 -0.02761404076093038 0 +315 0.02416675681837319 -0.01810298678107612 0 +316 0.02092221317401841 -0.01789032815536993 0 +317 0.01789032815536981 -0.0209222131740185 0 +318 0.01810298678107599 -0.02416675681837327 0 +319 0.02113487179972459 -0.02113487179972469 0 +320 -0.02744461116909361 0.002143866456464473 0 +321 -0.02988922233818722 0.004287732912928802 0 +322 -0.02988922233818727 -0.00428773291292846 0 +323 -0.02744461116909364 -0.002143866456464158 0 +324 -0.02988922233818724 1.699896606344472e-16 0 +325 -0.007476761515971183 -0.02925488510911462 0 +326 -0.008521923662549271 -0.02617593671094837 0 +327 -0.01248327234167904 -0.02453509236276405 0 +328 -0.01539945887423072 -0.02597319641274597 0 +329 -0.01143811019510095 -0.0276140407609303 0 +330 -0.002143866456464426 -0.02744461116909363 0 +331 -0.00428773291292876 -0.02988922233818725 0 +332 0.004287732912928539 -0.02988922233818727 0 +333 0.002143866456464224 -0.02744461116909364 0 +334 -1.10472316129293e-16 -0.02988922233818726 0 +335 0.02744461116909363 -0.002143866456464323 0 +336 0.02988922233818725 -0.004287732912928647 0 +337 0.02988922233818725 0.004287732912928622 0 +338 0.02744461116909362 0.002143866456464312 0 +339 0.02988922233818725 -1.175721043140733e-17 0 +340 -0.02597319641274615 -0.01539945887423042 0 +341 -0.02453509236276418 -0.01248327234167877 0 +342 -0.02617593671094846 -0.008521923662548992 0 +343 -0.02925488510911468 -0.007476761515970878 0 +344 -0.02761404076093042 -0.01143811019510065 0 +345 -0.01539945887423046 0.02597319641274611 0 +346 -0.01248327234167881 0.02453509236276416 0 +347 -0.008521923662549046 0.02617593671094843 0 +348 -0.00747676151597094 0.02925488510911465 0 +349 -0.0114381101951007 0.02761404076093038 0 +350 -0.01810298678107619 -0.02416675681837313 0 +351 -0.01789032815536999 -0.02092221317401836 0 +352 -0.02092221317401856 -0.01789032815536975 0 +353 -0.02416675681837333 -0.01810298678107591 0 +354 -0.02113487179972477 -0.02113487179972452 0 +355 -0.02416675681837313 0.01810298678107617 0 +356 -0.02092221317401837 0.01789032815536996 0 +357 -0.01789032815536978 0.02092221317401853 0 +358 -0.01810298678107594 0.02416675681837329 0 +359 -0.02113487179972454 0.02113487179972473 0 +360 0.007476761515971114 0.02925488510911461 0 +361 0.008521923662549204 0.02617593671094838 0 +362 0.01248327234167896 0.02453509236276408 0 +363 0.01539945887423062 0.02597319641274601 0 +364 0.01143811019510087 0.02761404076093031 0 +365 0.02617593671094841 0.008521923662549127 0 +366 0.02925488510911464 0.007476761515971031 0 +367 0.02597319641274606 0.01539945887423055 0 +368 0.02453509236276412 0.01248327234167889 0 +369 0.02761404076093034 0.01143811019510079 0 +370 0.002143866456464385 0.02744461116909361 0 +371 0.004287732912928705 0.02988922233818723 0 +372 -0.004287732912928533 0.02988922233818725 0 +373 -0.002143866456464234 0.02744461116909363 0 +374 8.481927583698841e-17 0.02988922233818724 0 +375 -0.02925488510911459 0.00747676151597121 0 +376 -0.02617593671094836 0.008521923662549289 0 +377 -0.02453509236276404 0.01248327234167903 0 +378 -0.02597319641274597 0.0153994588742307 0 +379 -0.02761404076093028 0.01143811019510095 0 +380 0.01810298678107609 0.02416675681837318 0 +381 0.0178903281553699 0.02092221317401842 0 +382 0.02092221317401848 0.01789032815536984 0 +383 0.02416675681837324 0.01810298678107602 0 +384 0.02113487179972467 0.02113487179972461 0 +385 0.03515200289392821 -0.03130892192279437 0 +386 0.03494866672852915 -0.02726250478626126 0 +387 0.03259073967508988 -0.02490457773282197 0 +388 0.03043614878704966 -0.02659306781591579 0 +389 0.03063948495244873 -0.0306394849524489 0 +390 0.032997412005888 -0.03299741200588819 0 +391 0.03279407584048893 -0.02895099486935508 0 +392 0.04032574578571331 -0.002717468615337871 0 +393 0.04065532882560741 -0.005434937230675726 0 +394 0.04398994124366767 -0.005434937230675721 0 +395 0.04699497062183384 -0.002717468615337859 0 +396 0.04666538758193974 -2.97922058810143e-18 0 +397 0.04333077516387947 -9.020058174071358e-18 0 +398 0.04366035820377357 -0.002717468615337865 0 +399 -0.0402097065318076 0.002717468615338076 0 +400 -0.04059730919865454 0.005434937230675924 0 +401 -0.04398994124366766 0.005434937230675944 0 +402 -0.04699497062183383 0.002717468615338118 0 +403 -0.04660736795498688 2.711566529967646e-16 0 +404 -0.04321473590997377 2.505939048197451e-16 0 +405 -0.04360233857682071 0.002717468615338097 0 +406 -0.02049481029541219 0.0423777612714197 0 +407 -0.02185544897257008 0.03856154591727499 0 +408 -0.02049405242583003 0.0352748439103672 0 +409 -0.01777201720193208 0.03580435725760412 0 +410 -0.01641137852477419 0.03962057261174883 0 +411 -0.01777277507151425 0.04290727461865663 0 +412 -0.01913341374867213 0.0390910592645119 0 +413 -0.04699497062183386 -0.002717468615337573 0 +414 -0.04398994124366772 -0.005434937230675438 0 +415 -0.0405973091986546 -0.005434937230675459 0 +416 -0.04020970653180762 -0.002717468615337615 0 +417 -0.04360233857682074 -0.002717468615337594 0 +418 -0.03130892192279448 -0.03515200289392812 0 +419 -0.02726250478626139 -0.03494866672852907 0 +420 -0.02486355166116181 -0.03254971360342953 0 +421 -0.02651101567259534 -0.03035409664372904 0 +422 -0.03055743280912844 -0.03055743280912809 0 +423 -0.03295638593422801 -0.03295638593422762 0 +424 -0.02890996879769491 -0.03275304976882858 0 +425 -0.01547358302750772 -0.04445762170554331 0 +426 -0.01181299443676071 -0.04272126678552239 0 +427 -0.01051469036102329 -0.03958688347779286 0 +428 -0.01287697487603287 -0.03818885509008427 0 +429 -0.01653756346677987 -0.03992521001010519 0 +430 -0.01783586754251729 -0.04305959331783472 0 +431 -0.01417527895177029 -0.04132323839781378 0 +432 -0.002717468615337995 -0.0403257457857133 0 +433 -0.005434937230675852 -0.04065532882560738 0 +434 -0.005434937230675868 -0.04398994124366764 0 +435 -0.002717468615338026 -0.04699497062183382 0 +436 -1.68241012207847e-16 -0.04666538758193974 0 +437 -1.527234098198696e-16 -0.04333077516387947 0 +438 -0.00271746861533801 -0.04366035820377356 0 +439 -0.04445762170554332 0.01547358302750775 0 +440 -0.0427212667855224 0.01181299443676076 0 +441 -0.03956544221946261 0.01050580910102859 0 +442 -0.03814597257342373 0.0128592123560434 0 +443 -0.03988232749344464 0.01651980094679039 0 +444 -0.04303815205950444 0.01782698628252256 0 +445 -0.04130179713948352 0.01416639769177557 0 +446 0.002717468615337959 0.04016329083024532 0 +447 0.005434937230675803 0.04057410134787342 0 +448 0.00543493723067581 0.04398994124366768 0 +449 0.002717468615337972 0.04699497062183384 0 +450 1.271021241925959e-16 0.04658416010420575 0 +451 1.209775865434855e-16 0.04316832020841148 0 +452 0.002717468615337964 0.04357913072603958 0 +453 -0.01275078993402722 0.03788421769172789 0 +454 -0.01045159789002032 0.03943456477861473 0 +455 -0.01181299443676037 0.04272126678552252 0 +456 -0.01547358302750734 0.04445762170554347 0 +457 -0.01411218648076728 0.04117091969863568 0 +458 0.03592202688332054 -0.01782075755678341 0 +459 0.03533367872322531 -0.02051842260325578 0 +460 0.03856154591727483 -0.02185544897257029 0 +461 0.04237776127141957 -0.02049481029541243 0 +462 0.0429661094315148 -0.01779714524894006 0 +463 0.03973824223746527 -0.01646011887962555 0 +464 0.03914989407737005 -0.01915778392609791 0 +465 0.01547358302750761 0.04445762170554337 0 +466 0.01181299443676063 0.04272126678552244 0 +467 0.01049337533703582 0.03953542445780026 0 +468 0.01283434482805799 0.03808593705009901 0 +469 0.01649493341880497 0.03982229197011993 0 +470 0.01781455251852978 0.04300813429784212 0 +471 0.0141539639277828 0.04127177937782119 0 +472 0.03130892192279433 0.03515200289392826 0 +473 0.02726250478626125 0.03494866672852918 0 +474 0.02482416663236782 0.03251032857463577 0 +475 0.02643224561500749 0.03027532658614141 0 +476 0.03047866275154057 0.03047866275154048 0 +477 0.032917000905434 0.0329170009054339 0 +478 0.02887058376890091 0.03271366474003483 0 +479 0.01785557209596283 0.03600607661597521 0 +480 0.02053582987284549 0.03537570358955267 0 +481 0.02185544897257031 0.03856154591727484 0 +482 0.02049481029541245 0.04237776127141957 0 +483 0.01917519119568764 0.03919191894369738 0 +484 0.01287697487603258 -0.03818885509008438 0 +485 0.010514690361023 -0.03958688347779297 0 +486 0.0118129944367604 -0.0427212667855225 0 +487 0.01547358302750739 -0.04445762170554344 0 +488 0.01783586754251697 -0.04305959331783486 0 +489 0.01653756346677957 -0.03992521001010532 0 +490 0.01417527895176999 -0.04132323839781391 0 +491 0.02659306781591564 -0.03043614878704981 0 +492 0.02490457773282183 -0.03259073967509001 0 +493 0.0272625047862611 -0.0349486667285293 0 +494 0.03130892192279418 -0.03515200289392839 0 +495 0.02895099486935491 -0.03279407584048909 0 +496 0.03814597257342382 0.01285921235604317 0 +497 0.03956544221946268 0.01050580910102835 0 +498 0.04272126678552248 0.0118129944367605 0 +499 0.04445762170554342 0.01547358302750748 0 +500 0.04303815205950456 0.0178269862825223 0 +501 0.03988232749344475 0.01651980094679014 0 +502 0.04130179713948362 0.01416639769177532 0 +503 0.04237776127141964 0.02049481029541232 0 +504 0.03856154591727491 0.02185544897257019 0 +505 0.03540572135121511 0.02054826363683804 0 +506 0.03606611213930003 0.01788043962394802 0 +507 0.03922193670535983 0.01918762495968017 0 +508 -0.03035409664372934 -0.026511015672595 0 +509 -0.03254971360342981 -0.02486355166116145 0 +510 -0.03494866672852939 -0.02726250478626099 0 +511 -0.03515200289392849 -0.03130892192279408 0 +512 -0.0327530497688289 -0.02890996879769454 0 +513 -0.03808593705009911 -0.01283434482805769 0 +514 -0.03953542445780034 -0.0104933753370355 0 +515 -0.04272126678552253 -0.01181299443676027 0 +516 -0.04445762170554349 -0.01547358302750724 0 +517 -0.04300813429784226 -0.01781455251852944 0 +518 -0.03982229197012007 -0.01649493341880466 0 +519 -0.04127177937782129 -0.01415396392778246 0 +520 0.04445762170554338 -0.01547358302750757 0 +521 0.04272126678552245 -0.01181299443676058 0 +522 0.03949339959147292 -0.01047596806744607 0 +523 0.03800188731744435 -0.01279953028887856 0 +524 0.04122975451149387 -0.01413655665819306 0 +525 -0.03606611213929992 0.01788043962394823 0 +526 -0.035405721351215 0.02054826363683825 0 +527 -0.03856154591727479 0.02185544897257043 0 +528 -0.04237776127141951 0.02049481029541259 0 +529 -0.03922193670535971 0.0191876249596804 0 +530 -0.04237776127141973 -0.02049481029541211 0 +531 -0.03856154591727502 -0.02185544897257001 0 +532 -0.03537570358955282 -0.02053582987284523 0 +533 -0.03600607661597535 -0.01785557209596256 0 +534 -0.03919191894369754 -0.01917519119568734 0 +535 0.002717468615337683 -0.04699497062183385 0 +536 0.005434937230675551 -0.0439899412436677 0 +537 0.005434937230675566 -0.04065532882560744 0 +538 0.002717468615337715 -0.04032574578571332 0 +539 0.002717468615337699 -0.04366035820377358 0 +540 -0.002717468615337715 0.04699497062183386 0 +541 -0.005434937230675565 0.04398994124366772 0 +542 -0.005434937230675571 0.04057410134787346 0 +543 -0.002717468615337728 0.04016329083024534 0 +544 -0.002717468615337722 0.04357913072603961 0 +545 -0.03515200289392817 0.03130892192279444 0 +546 -0.03494866672852912 0.02726250478626136 0 +547 -0.03243313391819973 0.02474697197593195 0 +548 -0.03012093727326939 0.02627785630213562 0 +549 -0.03032427343866845 0.0303242734386687 0 +550 -0.03283980624899784 0.03283980624899813 0 +551 -0.03263647008359878 0.02879338911246503 0 +552 -0.01789820214393772 -0.03610899465596045 0 +553 -0.02055714489683301 -0.03542716260954525 0 +554 -0.02185544897257043 -0.03856154591727477 0 +555 -0.02049481029541258 -0.0423777612714195 0 +556 -0.01919650621967514 -0.03924337796368997 0 +557 0.02049481029541226 -0.04237776127141966 0 +558 0.02185544897257014 -0.03856154591727494 0 +559 0.02055714489683273 -0.03542716260954541 0 +560 0.01789820214393745 -0.0361089946559606 0 +561 0.01919650621967485 -0.03924337796369012 0 +562 0.04699497062183385 0.002717468615337844 0 +563 0.04398994124366769 0.005434937230675685 0 +564 0.04065532882560743 0.00543493723067568 0 +565 0.04032574578571332 0.002717468615337832 0 +566 0.04366035820377358 0.002717468615337838 0 +567 0.0302753265861415 0.0264322456150074 0 +568 0.03251032857463585 0.02482416663236773 0 +569 0.03494866672852927 0.02726250478626115 0 +570 0.03515200289392835 0.03130892192279423 0 +571 0.03271366474003493 0.02887058376890081 0 +572 -0.02627785630213537 0.03012093727326962 0 +573 -0.02474697197593167 0.03243313391819994 0 +574 -0.02726250478626106 0.03494866672852935 0 +575 -0.03130892192279414 0.03515200289392845 0 +576 -0.02879338911246475 0.03263647008359903 0 +577 -0.04635447996860825 -0.009220479349208483 0 +578 -0.04366969591705491 -0.008686442597610894 0 +579 -0.0468167003653741 -0.005982957306174125 0 +580 0.03929743059779484 -0.02625770365056284 0 +581 0.03702138058046246 -0.02473689565014549 0 +582 0.03733499598388019 -0.02887381661838927 0 +583 0.04366969591705484 -0.008686442597611197 0 +584 0.04635447996860818 -0.009220479349208817 0 +585 0.04681670036537407 -0.005982957306174434 0 +586 -0.0262577036505626 0.03929743059779502 0 +587 -0.02473689565014529 0.03702138058046264 0 +588 -0.02344350738689256 0.04096341260966227 0 +589 -0.02625770365056298 -0.03929743059779475 0 +590 -0.02473689565014563 -0.03702138058046239 0 +591 -0.0288738166183894 -0.03733499598388009 0 +592 -0.04554256988490349 -0.0123884437887656 0 +593 -0.04635447996860814 0.009220479349209049 0 +594 -0.04366969591705482 0.008686442597611409 0 +595 -0.04554256988490334 0.01238844378876614 0 +596 -0.009220479349208973 -0.04635447996860814 0 +597 -0.00868644259761134 -0.0436696959170548 0 +598 -0.01238844378876608 -0.04554256988490334 0 +599 -0.005982957306174591 -0.04681670036537403 0 +600 -0.04681670036537404 0.005982957306174691 0 +601 -0.008686442597611029 0.04366969591705491 0 +602 -0.009220479349208645 0.04635447996860823 0 +603 -0.01238844378876573 0.04554256988490346 0 +604 -0.03702138058046267 -0.02473689565014524 0 +605 -0.03929743059779504 -0.02625770365056257 0 +606 -0.03733499598388042 -0.02887381661838899 0 +607 0.04554256988490338 -0.01238844378876593 0 +608 0.04366969591705488 0.008686442597611151 0 +609 0.0463544799686082 0.009220479349208773 0 +610 0.04554256988490341 0.01238844378876586 0 +611 0.009220479349208903 0.04635447996860817 0 +612 0.008686442597611276 0.04366969591705484 0 +613 0.012388443788766 0.04554256988490338 0 +614 0.02473689565014535 -0.03702138058046259 0 +615 0.02625770365056269 -0.03929743059779496 0 +616 0.02887381661838909 -0.03733499598388034 0 +617 0.03929743059779493 0.02625770365056273 0 +618 0.03702138058046256 0.0247368956501454 0 +619 0.04096341260966219 0.02344350738689268 0 +620 0.005982957306174545 0.04681670036537407 0 +621 -0.03702138058046242 0.02473689565014562 0 +622 -0.03929743059779478 0.02625770365056296 0 +623 -0.04096341260966206 0.02344350738689292 0 +624 -0.0409634126096623 -0.0234435073868925 0 +625 0.009220479349208636 -0.04635447996860822 0 +626 0.008686442597611027 -0.04366969591705489 0 +627 0.005982957306174279 -0.04681670036537409 0 +628 0.02625770365056284 0.03929743059779484 0 +629 0.0247368956501455 0.03702138058046248 0 +630 0.02887381661838925 0.03733499598388022 0 +631 0.01238844378876575 -0.04554256988490345 0 +632 0.02344350738689264 -0.04096341260966221 0 +633 0.02344350738689279 0.04096341260966212 0 +634 -0.00598295730617429 0.0468167003653741 0 +635 0.04096341260966213 -0.02344350738689277 0 +636 -0.02887381661838902 0.0373349959838804 0 +637 -0.02344350738689292 -0.04096341260966205 0 +638 0.04681670036537407 0.005982957306174414 0 +639 0.0373349959838803 0.02887381661838914 0 +640 -0.03733499598388013 0.02887381661838937 0 +641 0.02708936689961761 -0.005388410100819099 0 +642 0.02296525635487325 -0.0153448937106668 0 +643 -0.01534489371066665 0.02296525635487334 0 +644 -0.005388410100819198 -0.0270893668996176 0 +645 0.005388410100819013 -0.02708936689961763 0 +646 0.00538841010081915 0.0270893668996176 0 +647 -0.02708936689961764 -0.005388410100818924 0 +648 -0.005388410100818994 0.02708936689961763 0 +649 -0.01534489371066687 -0.0229652563548732 0 +650 0.02296525635487329 0.01534489371066673 0 +651 -0.02708936689961758 0.005388410100819236 0 +652 -0.02296525635487338 -0.01534489371066661 0 +653 0.02708936689961761 0.005388410100819074 0 +654 -0.0229652563548732 0.01534489371066686 0 +655 0.01534489371066679 0.02296525635487325 0 +656 0.01534489371066669 -0.02296525635487331 0 +657 -0.007005201528266359 0.03521752629335444 0 +658 -0.007578803687139886 0.03810121907942801 0 +659 -0.009877995731146789 0.03655087199254117 0 +660 -0.01994912615443074 0.02985597716286213 0 +661 -0.02158260690207936 0.0323006538629962 0 +662 -0.02311349122828305 0.02998845721806587 0 +663 -0.01886057167818141 0.03283016721023313 0 +664 -0.02985597716286196 0.019949126154431 0 +665 -0.03230065386299601 0.02158260690207964 0 +666 -0.03296104465108094 0.01891478288918961 0 +667 -0.004861335071802044 0.03769040856179989 0 +668 0.007005201528266565 0.0352175262933544 0 +669 0.007578803687140106 0.03810121907942796 0 +670 0.004861335071802262 0.03769040856179987 0 +671 0.03230065386299613 0.02158260690207944 0 +672 0.02985597716286207 0.01994912615443083 0 +673 0.03296104465108105 0.01891478288918942 0 +674 -0.02998845721806567 0.02311349122828331 0 +675 0.01994912615443091 0.029855977162862 0 +676 0.02158260690207953 0.03230065386299606 0 +677 0.01890234912519687 0.03293102688941861 0 +678 0.03521752629335443 0.007005201528266464 0 +679 0.03810121907942798 0.007578803687139995 0 +680 0.03668174943338913 0.009932206942154815 0 +681 0.03006565187450178 0.02319068588471911 0 +682 0.02319068588471919 0.03006565187450171 0 +683 -0.03810121907942802 -0.00757880368713979 0 +684 -0.03521752629335446 -0.007005201528266276 0 +685 -0.03771361641258104 -0.004861335071801944 0 +686 0.00991977317816228 0.0366517316717267 0 +687 -0.03521752629335438 0.007005201528266677 0 +688 -0.03810121907942794 0.007578803687140223 0 +689 -0.03771361641258099 0.004861335071802375 0 +690 -0.03668174943338906 0.009932206942155037 0 +691 -0.02985597716286217 -0.01994912615443069 0 +692 -0.03230065386299623 -0.02158260690207929 0 +693 -0.03010503690329575 -0.02323007091351284 0 +694 0.01994912615443078 -0.0298559771628621 0 +695 0.0215826069020794 -0.03230065386299616 0 +696 0.0232710969851732 -0.03014606297495595 0 +697 0.01892366414918411 -0.03298248590941134 0 +698 0.03777163603953387 0.004861335071802149 0 +699 -0.03665173167172679 -0.00991977317816198 0 +700 -0.03293102688941876 -0.01890234912519662 0 +701 -0.01994912615443102 -0.02985597716286194 0 +702 -0.02158260690207965 -0.03230065386299598 0 +703 -0.01892366414918437 -0.0329824859094112 0 +704 0.007005201528266375 -0.03521752629335445 0 +705 0.007578803687139896 -0.038101219079428 0 +706 0.009941088202149475 -0.03670319069171941 0 +707 0.004861335071802045 -0.03777163603953389 0 +708 0.03521752629335442 -0.007005201528266509 0 +709 0.03810121907942796 -0.007578803687140045 0 +710 0.03777163603953387 -0.004861335071802189 0 +711 0.03230065386299605 -0.02158260690207954 0 +712 0.029855977162862 -0.01994912615443092 0 +713 0.03014606297495584 -0.02327109698517336 0 +714 -0.02323007091351318 -0.03010503690329549 0 +715 0.03288900202309127 -0.01888494185560716 0 +716 0.03660970680539938 -0.009902365908572531 0 +717 -0.007578803687140171 -0.03810121907942793 0 +718 -0.007005201528266634 -0.0352175262933544 0 +719 -0.009941088202149749 -0.03670319069171934 0 +720 -0.004861335071802314 -0.03777163603953385 0 +$EndNodes +$Elements +192 +1 26 2 1 1 1 3 34 35 +2 26 2 1 1 3 4 36 37 +3 26 2 1 1 4 5 38 39 +4 26 2 1 1 5 6 40 41 +5 26 2 1 1 6 7 42 43 +6 26 2 1 1 7 8 44 45 +7 26 2 1 1 8 9 46 47 +8 26 2 1 1 9 10 48 49 +9 26 2 1 1 10 11 50 51 +10 26 2 1 1 11 12 52 53 +11 26 2 1 1 12 13 54 55 +12 26 2 1 1 13 14 56 57 +13 26 2 1 1 14 15 58 59 +14 26 2 1 1 15 16 60 61 +15 26 2 1 1 16 17 62 63 +16 26 2 1 1 17 18 64 65 +17 26 2 1 1 18 19 66 67 +18 26 2 1 1 19 20 68 69 +19 26 2 1 1 20 21 70 71 +20 26 2 1 1 21 22 72 73 +21 26 2 1 1 22 23 74 75 +22 26 2 1 1 23 24 76 77 +23 26 2 1 1 24 25 78 79 +24 26 2 1 1 25 26 80 81 +25 26 2 1 1 26 27 82 83 +26 26 2 1 1 27 28 84 85 +27 26 2 1 1 28 29 86 87 +28 26 2 1 1 29 30 88 89 +29 26 2 1 1 30 31 90 91 +30 26 2 1 1 31 32 92 93 +31 26 2 1 1 32 33 94 95 +32 26 2 1 1 33 1 96 97 +33 26 2 2 2 2 98 113 114 +34 26 2 2 2 98 99 115 116 +35 26 2 2 2 99 100 117 118 +36 26 2 2 2 100 101 119 120 +37 26 2 2 2 101 102 121 122 +38 26 2 2 2 102 103 123 124 +39 26 2 2 2 103 104 125 126 +40 26 2 2 2 104 105 127 128 +41 26 2 2 2 105 106 129 130 +42 26 2 2 2 106 107 131 132 +43 26 2 2 2 107 108 133 134 +44 26 2 2 2 108 109 135 136 +45 26 2 2 2 109 110 137 138 +46 26 2 2 2 110 111 139 140 +47 26 2 2 2 111 112 141 142 +48 26 2 2 2 112 2 143 144 +49 21 2 3 1 154 162 148 193 194 195 196 197 198 199 +50 21 2 3 1 145 161 146 200 201 202 203 204 205 206 +51 21 2 3 1 149 169 159 207 208 209 210 211 212 213 +52 21 2 3 1 159 174 157 214 215 216 217 218 219 220 +53 21 2 3 1 151 165 152 221 222 223 224 225 226 227 +54 21 2 3 1 160 176 156 228 229 230 231 232 233 234 +55 21 2 3 1 146 168 147 235 236 237 238 239 240 241 +56 21 2 3 1 153 163 150 242 243 244 245 246 247 248 +57 21 2 3 1 156 172 149 249 250 251 252 253 254 255 +58 21 2 3 1 155 170 158 256 257 258 259 260 261 262 +59 21 2 3 1 147 166 154 263 264 265 266 267 268 269 +60 21 2 3 1 148 173 155 270 271 272 273 274 275 276 +61 21 2 3 1 157 171 153 277 278 279 280 281 282 283 +62 21 2 3 1 158 175 160 284 285 286 287 288 289 290 +63 21 2 3 1 152 164 145 291 292 293 294 295 296 297 +64 21 2 3 1 150 167 151 298 299 300 301 302 303 304 +65 21 2 3 1 112 159 157 305 306 219 218 307 308 309 +66 21 2 3 1 110 156 149 310 311 254 253 312 313 314 +67 21 2 3 1 149 159 111 212 211 315 316 317 318 319 +68 21 2 3 1 105 154 148 320 321 198 197 322 323 324 +69 21 2 3 1 158 160 108 289 288 325 326 327 328 329 +70 21 2 3 1 109 160 156 330 331 233 232 332 333 334 +71 21 2 3 1 2 157 153 335 336 282 281 337 338 339 +72 21 2 3 1 148 155 106 275 274 340 341 342 343 344 +73 21 2 3 1 145 146 102 205 204 345 346 347 348 349 +74 21 2 3 1 155 158 107 261 260 350 351 352 353 354 +75 21 2 3 1 146 147 103 240 239 355 356 357 358 359 +76 21 2 3 1 151 152 100 226 225 360 361 362 363 364 +77 21 2 3 1 98 153 150 365 366 247 246 367 368 369 +78 21 2 3 1 101 152 145 370 371 296 295 372 373 374 +79 21 2 3 1 147 154 104 268 267 375 376 377 378 379 +80 21 2 3 1 150 151 99 303 302 380 381 382 383 384 +81 21 2 3 1 30 179 169 385 386 387 388 389 390 391 +82 21 2 3 1 171 185 1 392 393 394 395 396 397 398 +83 21 2 3 1 162 182 18 399 400 401 402 403 404 405 +84 21 2 3 1 12 181 161 406 407 408 409 410 411 412 +85 21 2 3 1 18 177 162 413 414 415 416 404 403 417 +86 21 2 3 1 22 191 170 418 419 420 421 422 423 424 +87 21 2 3 1 24 178 175 425 426 427 428 429 430 431 +88 21 2 3 1 176 178 26 432 433 434 435 436 437 438 +89 21 2 3 1 16 182 166 439 440 441 442 443 444 445 +90 21 2 3 1 164 190 10 446 447 448 449 450 451 452 +91 21 2 3 1 161 180 12 453 454 455 456 411 410 457 +92 21 2 3 1 174 179 32 458 459 460 461 462 463 464 +93 21 2 3 1 8 190 165 465 466 467 468 469 470 471 +94 21 2 3 1 6 187 167 472 473 474 475 476 477 478 +95 21 2 3 1 165 187 8 479 480 481 482 470 469 483 +96 21 2 3 1 172 188 28 484 485 486 487 488 489 490 +97 21 2 3 1 169 183 30 491 492 493 494 390 389 495 +98 21 2 3 1 163 184 4 496 497 498 499 500 501 502 +99 21 2 3 1 4 192 163 503 504 505 506 501 500 507 +100 21 2 3 1 170 186 22 508 509 510 511 423 422 512 +101 21 2 3 1 173 177 20 513 514 515 516 517 518 519 +102 21 2 3 1 32 185 174 520 521 522 523 463 462 524 +103 21 2 3 1 166 189 16 525 526 527 528 444 443 529 +104 21 2 3 1 20 186 173 530 531 532 533 518 517 534 +105 21 2 3 1 26 188 176 535 536 537 538 437 436 539 +106 21 2 3 1 10 180 164 540 541 542 543 451 450 544 +107 21 2 3 1 14 189 168 545 546 547 548 549 550 551 +108 21 2 3 1 175 191 24 552 553 554 555 430 429 556 +109 21 2 3 1 28 183 172 557 558 559 560 489 488 561 +110 21 2 3 1 1 184 171 562 563 564 565 397 396 566 +111 21 2 3 1 167 192 6 567 568 569 570 477 476 571 +112 21 2 3 1 168 181 14 572 573 574 575 550 549 576 +113 21 2 3 1 19 177 18 577 578 414 413 66 67 579 +114 21 2 3 1 31 179 30 580 581 386 385 90 91 582 +115 21 2 3 1 1 185 33 395 394 583 584 96 97 585 +116 21 2 3 1 13 181 12 586 587 407 406 54 55 588 +117 21 2 3 1 23 191 22 589 590 419 418 74 75 591 +118 21 2 3 1 20 177 19 516 515 578 577 68 69 592 +119 21 2 3 1 17 182 16 593 594 440 439 62 63 595 +120 21 2 3 1 25 178 24 596 597 426 425 78 79 598 +121 21 2 3 1 26 178 25 435 434 597 596 80 81 599 +122 21 2 3 1 18 182 17 402 401 594 593 64 65 600 +123 21 2 3 1 12 180 11 456 455 601 602 52 53 603 +124 21 2 3 1 22 186 21 511 510 604 605 72 73 606 +125 21 2 3 1 33 185 32 584 583 521 520 94 95 607 +126 21 2 3 1 4 184 3 499 498 608 609 36 37 610 +127 21 2 3 1 9 190 8 611 612 466 465 46 47 613 +128 21 2 3 1 30 183 29 494 493 614 615 88 89 616 +129 21 2 3 1 5 192 4 617 618 504 503 38 39 619 +130 21 2 3 1 10 190 9 449 448 612 611 48 49 620 +131 21 2 3 1 16 189 15 528 527 621 622 60 61 623 +132 21 2 3 1 21 186 20 605 604 531 530 70 71 624 +133 21 2 3 1 27 188 26 625 626 536 535 82 83 627 +134 21 2 3 1 7 187 6 628 629 473 472 42 43 630 +135 21 2 3 1 28 188 27 487 486 626 625 84 85 631 +136 21 2 3 1 29 183 28 615 614 558 557 86 87 632 +137 21 2 3 1 8 187 7 482 481 629 628 44 45 633 +138 21 2 3 1 11 180 10 602 601 541 540 50 51 634 +139 21 2 3 1 32 179 31 461 460 581 580 92 93 635 +140 21 2 3 1 14 181 13 575 574 587 586 56 57 636 +141 21 2 3 1 24 191 23 555 554 590 589 76 77 637 +142 21 2 3 1 3 184 1 609 608 563 562 34 35 638 +143 21 2 3 1 6 192 5 570 569 618 617 40 41 639 +144 21 2 3 1 15 189 14 622 621 546 545 58 59 640 +145 21 2 3 1 112 157 2 308 307 336 335 144 143 641 +146 21 2 3 1 111 159 112 316 315 306 305 142 141 642 +147 21 2 3 1 102 146 103 346 345 358 357 124 123 643 +148 21 2 3 1 108 160 109 326 325 331 330 136 135 644 +149 21 2 3 1 109 156 110 333 332 311 310 138 137 645 +150 21 2 3 1 100 152 101 361 360 371 370 120 119 646 +151 21 2 3 1 105 148 106 323 322 343 342 130 129 647 +152 21 2 3 1 101 145 102 373 372 348 347 122 121 648 +153 21 2 3 1 107 158 108 351 350 328 327 134 133 649 +154 21 2 3 1 98 150 99 368 367 383 382 116 115 650 +155 21 2 3 1 104 154 105 376 375 321 320 128 127 651 +156 21 2 3 1 106 155 107 341 340 353 352 132 131 652 +157 21 2 3 1 2 153 98 338 337 366 365 114 113 653 +158 21 2 3 1 103 147 104 356 355 378 377 126 125 654 +159 21 2 3 1 99 151 100 381 380 363 362 118 117 655 +160 21 2 3 1 110 149 111 313 312 318 317 140 139 656 +161 21 2 3 1 145 180 161 657 658 454 453 201 200 659 +162 21 2 3 1 146 181 168 660 661 573 572 236 235 662 +163 21 2 3 1 161 181 146 409 408 661 660 203 202 663 +164 21 2 3 1 147 189 166 664 665 526 525 264 263 666 +165 21 2 3 1 164 180 145 543 542 658 657 294 293 667 +166 21 2 3 1 152 190 164 668 669 447 446 292 291 670 +167 21 2 3 1 163 192 150 506 505 671 672 245 244 673 +168 21 2 3 1 168 189 147 548 547 665 664 238 237 674 +169 21 2 3 1 151 187 165 675 676 480 479 222 221 677 +170 21 2 3 1 153 184 163 678 679 497 496 243 242 680 +171 21 2 3 1 150 192 167 672 671 568 567 299 298 681 +172 21 2 3 1 167 187 151 475 474 676 675 301 300 682 +173 21 2 3 1 162 177 148 416 415 683 684 196 195 685 +174 21 2 3 1 165 190 152 468 467 669 668 224 223 686 +175 21 2 3 1 154 182 162 687 688 400 399 194 193 689 +176 21 2 3 1 166 182 154 442 441 688 687 266 265 690 +177 21 2 3 1 155 186 170 691 692 509 508 257 256 693 +178 21 2 3 1 149 183 169 694 695 492 491 208 207 696 +179 21 2 3 1 172 183 149 560 559 695 694 252 251 697 +180 21 2 3 1 171 184 153 565 564 679 678 280 279 698 +181 21 2 3 1 148 177 173 684 683 514 513 271 270 699 +182 21 2 3 1 173 186 155 533 532 692 691 273 272 700 +183 21 2 3 1 158 191 175 701 702 553 552 285 284 703 +184 21 2 3 1 156 188 172 704 705 485 484 250 249 706 +185 21 2 3 1 176 188 156 538 537 705 704 231 230 707 +186 21 2 3 1 157 185 171 708 709 393 392 278 277 710 +187 21 2 3 1 169 179 159 388 387 711 712 210 209 713 +188 21 2 3 1 170 191 158 421 420 702 701 259 258 714 +189 21 2 3 1 159 179 174 712 711 459 458 215 214 715 +190 21 2 3 1 174 185 157 523 522 709 708 217 216 716 +191 21 2 3 1 175 178 160 428 427 717 718 287 286 719 +192 21 2 3 1 160 178 176 718 717 433 432 229 228 720 +$EndElements diff --git a/testData/empty_coax/empty_coax.step b/testData/empty_coax/empty_coax.step new file mode 100644 index 0000000..eec4544 --- /dev/null +++ b/testData/empty_coax/empty_coax.step @@ -0,0 +1,178 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); +FILE_NAME('Open CASCADE Shape Model','2023-06-22T17:28:23',(''),(''), + 'Open CASCADE STEP processor 7.6','FreeCAD','Unknown'); +FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }')); +ENDSEC; +DATA; +#1 = APPLICATION_PROTOCOL_DEFINITION('international standard', + 'automotive_design',2000,#2); +#2 = APPLICATION_CONTEXT( + 'core data for automotive mechanical design processes'); +#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10); +#4 = PRODUCT_DEFINITION_SHAPE('','',#5); +#5 = PRODUCT_DEFINITION('design','',#6,#9); +#6 = PRODUCT_DEFINITION_FORMATION('','',#7); +#7 = PRODUCT('Unnamed','Unnamed','',(#8)); +#8 = PRODUCT_CONTEXT('',#2,'mechanical'); +#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#10 = SHAPE_REPRESENTATION('',(#11,#15,#19),#23); +#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14); +#12 = CARTESIAN_POINT('',(0.,0.,0.)); +#13 = DIRECTION('',(0.,0.,1.)); +#14 = DIRECTION('',(1.,0.,-0.)); +#15 = AXIS2_PLACEMENT_3D('',#16,#17,#18); +#16 = CARTESIAN_POINT('',(0.,0.,0.)); +#17 = DIRECTION('',(0.,-0.,1.)); +#18 = DIRECTION('',(1.,6.123233995737E-17,0.)); +#19 = AXIS2_PLACEMENT_3D('',#20,#21,#22); +#20 = CARTESIAN_POINT('',(0.,0.,0.)); +#21 = DIRECTION('',(0.,-0.,1.)); +#22 = DIRECTION('',(1.,6.123233995737E-17,0.)); +#23 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#27)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#24,#25,#26)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#24 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#25 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#26 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#27 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#24, + 'distance_accuracy_value','confusion accuracy'); +#28 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); +#29 = SHAPE_DEFINITION_REPRESENTATION(#30,#36); +#30 = PRODUCT_DEFINITION_SHAPE('','',#31); +#31 = PRODUCT_DEFINITION('design','',#32,#35); +#32 = PRODUCT_DEFINITION_FORMATION('','',#33); +#33 = PRODUCT('Conductor_0','Conductor_0','',(#34)); +#34 = PRODUCT_CONTEXT('',#2,'mechanical'); +#35 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#36 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#37),#64); +#37 = SHELL_BASED_SURFACE_MODEL('',(#38)); +#38 = OPEN_SHELL('',(#39)); +#39 = ADVANCED_FACE('',(#40),#53,.T.); +#40 = FACE_BOUND('',#41,.T.); +#41 = EDGE_LOOP('',(#42)); +#42 = ORIENTED_EDGE('',*,*,#43,.T.); +#43 = EDGE_CURVE('',#44,#44,#46,.T.); +#44 = VERTEX_POINT('',#45); +#45 = CARTESIAN_POINT('',(50.,0.,0.)); +#46 = SURFACE_CURVE('',#47,(#52),.PCURVE_S1.); +#47 = CIRCLE('',#48,50.); +#48 = AXIS2_PLACEMENT_3D('',#49,#50,#51); +#49 = CARTESIAN_POINT('',(0.,0.,0.)); +#50 = DIRECTION('',(0.,0.,1.)); +#51 = DIRECTION('',(1.,0.,-0.)); +#52 = PCURVE('',#53,#58); +#53 = PLANE('',#54); +#54 = AXIS2_PLACEMENT_3D('',#55,#56,#57); +#55 = CARTESIAN_POINT('',(-3.500646739301E-15,-2.041077998579E-15,0.)); +#56 = DIRECTION('',(0.,0.,1.)); +#57 = DIRECTION('',(1.,0.,-0.)); +#58 = DEFINITIONAL_REPRESENTATION('',(#59),#63); +#59 = CIRCLE('',#60,50.); +#60 = AXIS2_PLACEMENT_2D('',#61,#62); +#61 = CARTESIAN_POINT('',(3.500646739301E-15,2.041077998579E-15)); +#62 = DIRECTION('',(1.,0.)); +#63 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#64 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#68)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#65,#66,#67)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#65 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#66 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#67 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#68 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#65, + 'distance_accuracy_value','confusion accuracy'); +#69 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#70,#72); +#70 = ( REPRESENTATION_RELATIONSHIP('','',#36,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#71) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#71 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); +#72 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#73); +#73 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('11','Conductor_0','',#5,#31,$); +#74 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#33)); +#75 = SHAPE_DEFINITION_REPRESENTATION(#76,#82); +#76 = PRODUCT_DEFINITION_SHAPE('','',#77); +#77 = PRODUCT_DEFINITION('design','',#78,#81); +#78 = PRODUCT_DEFINITION_FORMATION('','',#79); +#79 = PRODUCT('Conductor_1','Conductor_1','',(#80)); +#80 = PRODUCT_CONTEXT('',#2,'mechanical'); +#81 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#82 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#83),#110); +#83 = SHELL_BASED_SURFACE_MODEL('',(#84)); +#84 = OPEN_SHELL('',(#85)); +#85 = ADVANCED_FACE('',(#86),#99,.T.); +#86 = FACE_BOUND('',#87,.T.); +#87 = EDGE_LOOP('',(#88)); +#88 = ORIENTED_EDGE('',*,*,#89,.T.); +#89 = EDGE_CURVE('',#90,#90,#92,.T.); +#90 = VERTEX_POINT('',#91); +#91 = CARTESIAN_POINT('',(25.,0.,0.)); +#92 = SURFACE_CURVE('',#93,(#98),.PCURVE_S1.); +#93 = CIRCLE('',#94,25.); +#94 = AXIS2_PLACEMENT_3D('',#95,#96,#97); +#95 = CARTESIAN_POINT('',(0.,0.,0.)); +#96 = DIRECTION('',(0.,0.,1.)); +#97 = DIRECTION('',(1.,0.,-0.)); +#98 = PCURVE('',#99,#104); +#99 = PLANE('',#100); +#100 = AXIS2_PLACEMENT_3D('',#101,#102,#103); +#101 = CARTESIAN_POINT('',(-1.75032336965E-15,-1.020538999289E-15,0.)); +#102 = DIRECTION('',(0.,0.,1.)); +#103 = DIRECTION('',(1.,0.,-0.)); +#104 = DEFINITIONAL_REPRESENTATION('',(#105),#109); +#105 = CIRCLE('',#106,25.); +#106 = AXIS2_PLACEMENT_2D('',#107,#108); +#107 = CARTESIAN_POINT('',(1.75032336965E-15,1.020538999289E-15)); +#108 = DIRECTION('',(1.,0.)); +#109 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#110 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#114)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#111,#112,#113)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#111 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#112 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#113 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#114 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#111, + 'distance_accuracy_value','confusion accuracy'); +#115 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#116,#118); +#116 = ( REPRESENTATION_RELATIONSHIP('','',#82,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#117) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#117 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); +#118 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#119 + ); +#119 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('12','Conductor_1','',#5,#77,$); +#120 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#79)); +#121 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#122) + ,#64); +#122 = STYLED_ITEM('color',(#123),#39); +#123 = PRESENTATION_STYLE_ASSIGNMENT((#124,#130)); +#124 = SURFACE_STYLE_USAGE(.BOTH.,#125); +#125 = SURFACE_SIDE_STYLE('',(#126)); +#126 = SURFACE_STYLE_FILL_AREA(#127); +#127 = FILL_AREA_STYLE('',(#128)); +#128 = FILL_AREA_STYLE_COLOUR('',#129); +#129 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); +#130 = CURVE_STYLE('',#131,POSITIVE_LENGTH_MEASURE(0.1),#132); +#131 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#132 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, + 9.803921802644E-02); +#133 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#134) + ,#110); +#134 = STYLED_ITEM('color',(#135),#85); +#135 = PRESENTATION_STYLE_ASSIGNMENT((#136,#141)); +#136 = SURFACE_STYLE_USAGE(.BOTH.,#137); +#137 = SURFACE_SIDE_STYLE('',(#138)); +#138 = SURFACE_STYLE_FILL_AREA(#139); +#139 = FILL_AREA_STYLE('',(#140)); +#140 = FILL_AREA_STYLE_COLOUR('',#129); +#141 = CURVE_STYLE('',#142,POSITIVE_LENGTH_MEASURE(0.1),#132); +#142 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +ENDSEC; +END-ISO-10303-21; diff --git a/testData/five_wires/five_wires.FCStd b/testData/five_wires/five_wires.FCStd new file mode 100644 index 0000000000000000000000000000000000000000..01205bcef4b72c096b0b59a9d6286f8452d9c76c GIT binary patch literal 21398 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 literal 0 HcmV?d00001 diff --git a/testData/partially_filled_coax/partially_filled_coax.msh b/testData/partially_filled_coax/partially_filled_coax.msh new file mode 100644 index 0000000..e2b418b --- /dev/null +++ b/testData/partially_filled_coax/partially_filled_coax.msh @@ -0,0 +1,1020 @@ +$MeshFormat +2.2 0 8 +$EndMeshFormat +$PhysicalNames +4 +1 1 "Conductor_0" +1 2 "Conductor_1" +2 3 "Vacuum" +2 4 "Dielectric_1" +$EndPhysicalNames +$Nodes +798 +1 0.025 0 0 +2 0.035 0 0 +3 0.05 0 0 +4 0.02377641290737884 0.007725424859373692 0 +5 0.02022542485937368 0.01469463130731184 0 +6 0.01469463130731181 0.0202254248593737 0 +7 0.007725424859373656 0.02377641290737885 0 +8 -4.842927816585408e-17 0.025 0 +9 -0.007725424859373747 0.02377641290737882 0 +10 -0.0146946313073119 0.02022542485937363 0 +11 -0.02022542485937374 0.01469463130731175 0 +12 -0.02377641290737887 0.007725424859373605 0 +13 -0.025 -9.685855633170815e-17 0 +14 -0.02377641290737881 -0.007725424859373788 0 +15 -0.02022542485937363 -0.01469463130731191 0 +16 -0.01469463130731174 -0.02022542485937374 0 +17 -0.007725424859373583 -0.02377641290737887 0 +18 1.064300286356817e-16 -0.025 0 +19 0.007725424859373786 -0.02377641290737881 0 +20 0.01469463130731188 -0.02022542485937365 0 +21 0.02022542485937371 -0.0146946313073118 0 +22 0.02377641290737885 -0.007725424859373649 0 +23 0.02486304738420683 0.002613211581691339 0 +24 0.02445369001834514 0.005197792270443988 0 +25 0.02283863644106502 0.01016841607689502 0 +26 0.02165063509461096 0.01250000000000001 0 +27 0.01857862063693485 0.01672826515897147 0 +28 0.01672826515897145 0.01857862063693487 0 +29 0.01249999999999998 0.02165063509461098 0 +30 0.01016841607689498 0.02283863644106503 0 +31 0.005197792270443949 0.02445369001834515 0 +32 0.002613211581691297 0.02486304738420684 0 +33 -0.002613211581691388 0.02486304738420683 0 +34 -0.005197792270444038 0.02445369001834513 0 +35 -0.01016841607689507 0.02283863644106499 0 +36 -0.01250000000000007 0.02165063509461092 0 +37 -0.01672826515897153 0.01857862063693479 0 +38 -0.01857862063693492 0.01672826515897139 0 +39 -0.02165063509461101 0.01249999999999992 0 +40 -0.02283863644106505 0.01016841607689493 0 +41 -0.02445369001834516 0.005197792270443895 0 +42 -0.02486304738420685 0.002613211581691244 0 +43 -0.02486304738420682 -0.002613211581691437 0 +44 -0.02445369001834512 -0.005197792270444084 0 +45 -0.02283863644106498 -0.0101684160768951 0 +46 -0.02165063509461092 -0.01250000000000008 0 +47 -0.01857862063693479 -0.01672826515897153 0 +48 -0.01672826515897138 -0.01857862063693493 0 +49 -0.01249999999999992 -0.02165063509461101 0 +50 -0.01016841607689492 -0.02283863644106506 0 +51 -0.005197792270443887 -0.02445369001834516 0 +52 -0.002613211581691246 -0.02486304738420685 0 +53 0.002613211581691435 -0.02486304738420682 0 +54 0.005197792270444073 -0.02445369001834512 0 +55 0.0101684160768951 -0.02283863644106498 0 +56 0.01250000000000008 -0.02165063509461092 0 +57 0.01672826515897149 -0.01857862063693482 0 +58 0.01857862063693489 -0.01672826515897142 0 +59 0.02165063509461098 -0.01249999999999997 0 +60 0.02283863644106503 -0.01016841607689498 0 +61 0.02445369001834515 -0.005197792270443953 0 +62 0.02486304738420683 -0.002613211581691313 0 +63 0.03328697807033037 0.01081559480312317 0 +64 0.02831559480312315 0.02057248383023658 0 +65 0.02057248383023654 0.02831559480312318 0 +66 0.01081559480312312 0.03328697807033039 0 +67 -6.78009894321957e-17 0.035 0 +68 -0.01081559480312325 0.03328697807033035 0 +69 -0.02057248383023666 0.02831559480312309 0 +70 -0.02831559480312324 0.02057248383023645 0 +71 -0.03328697807033042 0.01081559480312305 0 +72 -0.035 -1.356019788643914e-16 0 +73 -0.03328697807033033 -0.0108155948031233 0 +74 -0.02831559480312308 -0.02057248383023667 0 +75 -0.02057248383023644 -0.02831559480312325 0 +76 -0.01081559480312302 -0.03328697807033042 0 +77 1.490020400899544e-16 -0.035 0 +78 0.0108155948031233 -0.03328697807033033 0 +79 0.02057248383023663 -0.02831559480312311 0 +80 0.02831559480312319 -0.02057248383023652 0 +81 0.03328697807033039 -0.01081559480312311 0 +82 0.03480826633788956 0.003658496214367875 0 +83 0.0342351660256832 0.007276909178621583 0 +84 0.03197409101749103 0.01423578250765302 0 +85 0.03031088913245535 0.01750000000000002 0 +86 0.02601006889170879 0.02341957122256006 0 +87 0.02341957122256002 0.02601006889170882 0 +88 0.01749999999999997 0.03031088913245537 0 +89 0.01423578250765297 0.03197409101749105 0 +90 0.007276909178621528 0.03423516602568321 0 +91 0.003658496214367817 0.03480826633788957 0 +92 -0.003658496214367944 0.03480826633788955 0 +93 -0.007276909178621653 0.03423516602568318 0 +94 -0.0142357825076531 0.03197409101749099 0 +95 -0.0175000000000001 0.03031088913245529 0 +96 -0.02341957122256013 0.02601006889170871 0 +97 -0.02601006889170889 0.02341957122255994 0 +98 -0.03031088913245542 0.01749999999999989 0 +99 -0.03197409101749107 0.0142357825076529 0 +100 -0.03423516602568322 0.007276909178621453 0 +101 -0.03480826633788957 0.003658496214367742 0 +102 -0.03480826633788955 -0.003658496214368011 0 +103 -0.03423516602568317 -0.007276909178621719 0 +104 -0.03197409101749098 -0.01423578250765314 0 +105 -0.03031088913245529 -0.01750000000000011 0 +106 -0.02601006889170871 -0.02341957122256014 0 +107 -0.02341957122255993 -0.0260100688917089 0 +108 -0.01749999999999988 -0.03031088913245542 0 +109 -0.01423578250765289 -0.03197409101749108 0 +110 -0.007276909178621441 -0.03423516602568323 0 +111 -0.003658496214367743 -0.03480826633788957 0 +112 0.00365849621436801 -0.03480826633788955 0 +113 0.007276909178621702 -0.03423516602568317 0 +114 0.01423578250765313 -0.03197409101749098 0 +115 0.01750000000000011 -0.03031088913245529 0 +116 0.0234195712225601 -0.02601006889170875 0 +117 0.02601006889170884 -0.02341957122255999 0 +118 0.03031088913245537 -0.01749999999999996 0 +119 0.03197409101749105 -0.01423578250765298 0 +120 0.03423516602568321 -0.007276909178621534 0 +121 0.03480826633788957 -0.003658496214367839 0 +122 0.04814586436738997 0.01348983855785121 0 +123 0.04272097022732443 0.02597919750177168 0 +124 0.0341276571609327 0.03654179821390621 0 +125 0.02300325188655761 0.04439426092011876 0 +126 0.0101728006526317 0.04895420438411614 0 +127 -0.003412120668233555 0.04988343845952696 0 +128 -0.01674398060854931 0.04711304610594103 0 +129 -0.02883401610574336 0.04084849465052211 0 +130 -0.03878556453522099 0.03155439721630265 0 +131 -0.04586056507527264 0.01992005449231209 0 +132 -0.04953429730181653 0.006808332454812355 0 +133 -0.04953429730181654 -0.006808332454812343 0 +134 -0.04586056507527265 -0.01992005449231208 0 +135 -0.03878556453522099 -0.03155439721630263 0 +136 -0.02883401610574336 -0.0408484946505221 0 +137 -0.01674398060854932 -0.04711304610594102 0 +138 -0.003412120668233523 -0.04988343845952697 0 +139 0.01017280065263166 -0.04895420438411616 0 +140 0.02300325188655762 -0.04439426092011876 0 +141 0.03412765716093268 -0.03654179821390623 0 +142 0.04272097022732443 -0.02597919750177168 0 +143 0.04814586436738996 -0.01348983855785122 0 +144 0.04979284212657657 0.004546743115442346 0 +145 0.04917308508168711 0.009055810485492786 0 +146 0.04671969185803355 0.01781208557947084 0 +147 0.04490638526818481 0.02198673605029529 0 +148 0.04018155577274891 0.02975638714093948 0 +149 0.03730918429238428 0.03328700598487203 0 +150 0.03066333751418581 0.03949379359457793 0 +151 0.02694493179577877 0.04211853096347058 0 +152 0.01887095978763073 0.04630212604939026 0 +153 0.01458229697274126 0.04782631717996673 0 +154 0.005679009302523745 0.04967644163325156 0 +155 0.001138159892805283 0.04998704424206746 0 +156 -0.007934127322812566 0.04936648279577348 0 +157 -0.01239038929964499 0.04844046090824532 0 +158 -0.02095882602083321 0.04539523776596445 0 +159 -0.02500000000000001 0.04330127018922193 0 +160 -0.0324291044731378 0.03805723562044824 0 +161 -0.03575547506774498 0.0349506223503941 0 +162 -0.04149426459995125 0.02789670240923167 0 +163 -0.04385913012012971 0.02400784674029578 0 +164 -0.04748198494501596 0.01566719839924412 0 +165 -0.04870995413367395 0.01128451896606054 0 +166 -0.04994818368233638 0.0022757299566482 0 +167 -0.04994818368233638 -0.002275729956648165 0 +168 -0.04870995413367395 -0.01128451896606055 0 +169 -0.04748198494501596 -0.01566719839924413 0 +170 -0.04385913012012971 -0.02400784674029579 0 +171 -0.04149426459995125 -0.02789670240923168 0 +172 -0.03575547506774496 -0.0349506223503941 0 +173 -0.03242910447313779 -0.03805723562044825 0 +174 -0.02500000000000002 -0.04330127018922192 0 +175 -0.02095882602083324 -0.04539523776596443 0 +176 -0.01239038929964498 -0.04844046090824532 0 +177 -0.007934127322812524 -0.04936648279577349 0 +178 0.001138159892805293 -0.04998704424206746 0 +179 0.005679009302523733 -0.04967644163325156 0 +180 0.01458229697274125 -0.04782631717996674 0 +181 0.01887095978763075 -0.04630212604939025 0 +182 0.02694493179577877 -0.04211853096347058 0 +183 0.0306633375141858 -0.03949379359457795 0 +184 0.03730918429238426 -0.03328700598487204 0 +185 0.04018155577274891 -0.02975638714093947 0 +186 0.0449063852681848 -0.02198673605029531 0 +187 0.04671969185803354 -0.01781208557947088 0 +188 0.0491730850816871 -0.00905581048549281 0 +189 0.04979284212657656 -0.004546743115442387 0 +190 -0.0190721837040917 0.03729412970191382 0 +191 -0.01907218370409146 -0.03729412970191388 0 +192 0.04157197759647066 -0.006323973929748046 0 +193 0.04150283502715513 0.00623485162858018 0 +194 -0.02947084511674433 -0.02968080868736735 0 +195 -0.02947084511674447 0.02968080868736709 0 +196 -0.006731994228608731 0.04113861936153437 0 +197 -0.006731994228608484 -0.04113861936153435 0 +198 -0.03655482114705325 -0.01936301426746955 0 +199 -0.03655482114705333 0.01936301426746931 0 +200 0.005377364689082973 -0.0408775197717258 0 +201 0.005377364689082807 0.04087751977172582 0 +202 0.02917198046883245 -0.029366079685109 0 +203 0.02917198046883236 0.02936607968510906 0 +204 -0.04036506661239687 -0.007852509818702327 0 +205 -0.04083232292637089 0.006467204613843838 0 +206 0.01875721209727116 -0.03681310151609239 0 +207 0.01875721209727099 0.03681310151609247 0 +208 0.03929050675464234 -0.01634148167667973 0 +209 0.03928345139042648 0.01633238756431567 0 +210 0.03820464030782708 0.02710815822955081 0 +211 0.03368831038832972 0.02823711895732994 0 +212 0.02888651858026262 0.02643488106681824 0 +213 0.02860105669169289 0.0235036824485274 0 +214 0.03311738661119024 0.02237472172074828 0 +215 0.03791917841925734 0.02417695961125998 0 +216 0.03340284849975997 0.0253059203390391 0 +217 0.02860105669169294 -0.02350368244852735 0 +218 0.0288865185802627 -0.02643488106681818 0 +219 0.03368831038832978 -0.02823711895732989 0 +220 0.03820464030782711 -0.02710815822955079 0 +221 0.03791917841925735 -0.02417695961125996 0 +222 0.03311738661119027 -0.02237472172074824 0 +223 0.03340284849976002 -0.02530592033903907 0 +224 -0.04052081871705488 -0.003079271674520272 0 +225 -0.04067657082171289 0.001693966469661783 0 +226 -0.04373298105151944 0.002042025590958445 0 +227 -0.04663363917666799 -0.002383153431926948 0 +228 -0.04647788707200998 -0.007156391576109004 0 +229 -0.04342147684220343 -0.007504450697405666 0 +230 -0.04357722894686143 -0.00273121255322361 0 +231 0.04157748240309707 -0.02276662556007436 0 +232 0.04043399457886971 -0.01955405361837704 0 +233 0.03563220277080263 -0.01775181572786532 0 +234 0.03197389878696291 -0.01916214977905092 0 +235 0.03677569059502998 -0.02096438766956264 0 +236 0.03197154699889092 0.01915911840826294 0 +237 0.03562749919465871 0.01774575298628931 0 +238 0.0404292910027258 0.01954799087680101 0 +239 0.04157513061502511 0.02276359418928635 0 +240 0.03677333880695802 0.02096135629877464 0 +241 0.02900417547304546 0.0366322326479683 0 +242 0.02388069378515822 0.03672266708203038 0 +243 0.02222880155445811 0.03433076090576467 0 +244 0.02570039101164523 0.03184842029543686 0 +245 0.03082387269953247 0.03175798586137478 0 +246 0.03247576493023259 0.03414989203764049 0 +247 0.02735228324234534 0.03424032647170257 0 +248 0.02570039101164535 -0.0318484202954368 0 +249 0.02222880155445825 -0.03433076090576459 0 +250 0.02388069378515833 -0.03672266708203033 0 +251 0.0290041754730455 -0.03663223264796828 0 +252 0.0324757649302326 -0.03414989203764048 0 +253 0.03082387269953253 -0.03175798586137474 0 +254 0.02735228324234543 -0.03424032647170253 0 +255 -0.04373298105151944 0.006580913894166677 0 +256 -0.04663363917666798 0.006694623174489516 0 +257 -0.04690956343034788 0.002155734871281292 0 +258 0.01303427113417816 -0.0449071700947749 0 +259 0.01589574161572466 -0.04086013580543364 0 +260 0.01429726296120843 -0.03816790760130353 0 +261 0.009837313825145704 -0.03952271368651466 0 +262 0.006975843343599204 -0.04356974797585591 0 +263 0.008574321998115433 -0.04626197617998604 0 +264 0.01143579247966193 -0.04221494189064477 0 +265 0.009837313825145532 0.03952271368651471 0 +266 0.01429726296120826 0.03816790760130358 0 +267 0.01589574161572456 0.04086013580543369 0 +268 0.01303427113417813 0.04490717009477491 0 +269 0.008574321998115402 0.04626197617998604 0 +270 0.006975843343599104 0.04356974797585593 0 +271 0.01143579247966183 0.0422149418906448 0 +272 0.02158790529012873 0.04186720778544332 0 +273 0.02017255869369986 0.0393401546507679 0 +274 0.02545516046907852 0.03947514202471367 0 +275 0.02017255869369998 -0.03934015465076784 0 +276 0.0215879052901288 -0.0418672077854433 0 +277 0.02545516046907858 -0.03947514202471363 0 +278 -0.04418448435897206 0.01543577119948934 0 +279 -0.04250840364267148 0.01095148790666659 0 +280 -0.0394064889999317 0.01076580783171899 0 +281 -0.03798065507349252 0.01506441104959415 0 +282 -0.0396567357897931 0.0195486943424169 0 +283 -0.04275865043253287 0.0197343744173645 0 +284 -0.04108256971623229 0.01525009112454175 0 +285 -0.03782490296883446 -0.01552617945121381 0 +286 -0.03909498479061567 -0.01168934463495807 0 +287 -0.04219689943335547 -0.01187502470990558 0 +288 -0.04402873225431406 -0.01589753960110883 0 +289 -0.04275865043253285 -0.01973437441736457 0 +290 -0.03965673578979306 -0.01954869434241706 0 +291 -0.04092681761157425 -0.01571185952616131 0 +292 0.01740348961921439 -0.04364718158181646 0 +293 0.01740348961921433 0.04364718158181648 0 +294 -0.04567475400168693 0.01113964065971617 0 +295 -0.04551900189702892 -0.01160140906133567 0 +296 -0.02253840417497596 0.03475635603039824 0 +297 -0.02600462464586022 0.03221858235888267 0 +298 -0.02650472468790854 0.02922573739261909 0 +299 -0.0235386042590726 0.02877066609787109 0 +300 -0.02007238378818834 0.03130843976938667 0 +301 -0.01957228374614002 0.03430128473565024 0 +302 -0.02303850421702427 0.03176351106413466 0 +303 -0.0235386042590724 -0.02877066609787128 0 +304 -0.02650472468790837 -0.02922573739261931 0 +305 -0.02600462464586004 -0.03221858235888286 0 +306 -0.02253840417497575 -0.03475635603039837 0 +307 -0.01957228374613978 -0.03430128473565033 0 +308 -0.02007238378818811 -0.0313084397693868 0 +309 -0.02303850421702408 -0.03176351106413483 0 +310 -0.009454394611618408 0.03590419183406503 0 +311 -0.008093194420113569 0.03852140559779969 0 +312 -0.01084539072043638 0.03985712280832752 0 +313 -0.01495878721226404 0.03857562625512067 0 +314 -0.01631998740376888 0.035958412491386 0 +315 -0.01356779110344606 0.03462269528085817 0 +316 -0.01220659091194122 0.03723990904459284 0 +317 -0.0149587872122638 -0.0385756262551207 0 +318 -0.01084539072043614 -0.03985712280832753 0 +319 -0.008093194420113329 -0.03852140559779971 0 +320 -0.009454394611618174 -0.03590419183406507 0 +321 -0.01356779110344583 -0.03462269528085824 0 +322 -0.01631998740376865 -0.03595841249138607 0 +323 -0.01220659091194099 -0.03723990904459289 0 +324 0.04154893007336549 -0.002137698743638638 0 +325 0.04152588255026032 0.002048576442470771 0 +326 0.03933522335143676 0.004156567752386786 0 +327 0.03716761167571838 0.002078283876193393 0 +328 0.03719065919882356 -0.002107991309916015 0 +329 0.03938131839764711 -0.00421598261983203 0 +330 0.03935827087454193 -2.970743372262156e-05 0 +331 -0.03183217046018076 0.0262415438807345 0 +332 -0.03419349580361705 0.0228022790741019 0 +333 -0.0338084123657433 0.01976617078839169 0 +334 -0.03106200358443327 0.02016932730931407 0 +335 -0.02870067824099699 0.02360859211594666 0 +336 -0.02908576167887073 0.02664470040165688 0 +337 -0.03144708702230702 0.02320543559502429 0 +338 -0.03106200358443314 -0.02016932730931429 0 +339 -0.0338084123657432 -0.01976617078839192 0 +340 -0.03419349580361695 -0.02280227907410215 0 +341 -0.03183217046018064 -0.02624154388073474 0 +342 -0.02908576167887058 -0.02664470040165712 0 +343 -0.02870067824099683 -0.0236085921159469 0 +344 -0.03144708702230689 -0.02320543559502452 0 +345 -0.0004822922157946911 -0.04688146556359324 0 +346 0.002447536236644141 -0.04387949266765952 0 +347 0.001340911716519155 -0.04096455296832865 0 +348 -0.002695541256044664 -0.0410515861649315 0 +349 -0.005625369708483497 -0.04405355906086523 0 +350 -0.00451874518835851 -0.04696849876019609 0 +351 -0.001588916735919677 -0.04396652586426237 0 +352 -0.002695541256044885 0.04105158616493152 0 +353 0.00134091171651896 0.04096455296832867 0 +354 0.00244753623664402 0.04387949266765954 0 +355 -0.000482292215794768 0.04688146556359325 0 +356 -0.004518745188358614 0.04696849876019609 0 +357 -0.005625369708483672 0.04405355906086524 0 +358 -0.001588916735919827 0.04396652586426238 0 +359 0.003584909792722032 -0.03891834651448386 0 +360 0.001792454896361091 -0.03695917325724193 0 +361 -0.002243998076202729 -0.03704620645384478 0 +362 -0.004487996152405607 -0.03909241290768957 0 +363 -0.0004515431798417868 -0.03900537971108672 0 +364 0.00179245489636089 0.03695917325724194 0 +365 0.003584909792721849 0.03891834651448388 0 +366 -0.004487996152405843 0.03909241290768958 0 +367 -0.002243998076202955 0.03704620645384479 0 +368 -0.000451543179841998 0.03900537971108672 0 +369 -0.03564634091768584 -0.009827899808316311 0 +370 -0.03800570376504136 -0.008840204813509318 0 +371 -0.03546554012147895 -0.0165138744460208 0 +372 -0.03437625909590464 -0.01366473462457205 0 +373 -0.03673562194326015 -0.01267703962976506 0 +374 -0.0383172079743574 0.007916668010270241 0 +375 -0.0358020930223439 0.009366131406696643 0 +376 -0.03437625909590472 0.0136647346245718 0 +377 -0.03546554012147903 0.01651387444602055 0 +378 -0.03689137404791822 0.0122152712281454 0 +379 -0.03694410764212364 0.002155734871281189 0 +380 -0.03888821528424726 0.004311469742562513 0 +381 -0.03857671107493125 -0.005235006545801596 0 +382 -0.03678835553746563 -0.002617503272900866 0 +383 -0.03873246317958926 -0.0004617684016195416 0 +384 0.01936230267492617 0.03398059927843604 0 +385 0.01996739325258136 0.03114809704077961 0 +386 0.02343898270976848 0.0286657564304518 0 +387 0.02630548158930042 0.02901591805778043 0 +388 0.02283389213211329 0.03149825866810823 0 +389 0.01996739325258147 -0.03114809704077954 0 +390 0.01936230267492631 -0.03398059927843596 0 +391 0.02630548158930051 -0.02901591805778037 0 +392 0.02343898270976857 -0.02866575643045174 0 +393 0.02283389213211341 -0.03149825866810817 0 +394 0.01346280056783907 0.03446235255225109 0 +395 0.01611000633255503 0.03563772703417178 0 +396 0.007190108060429577 0.03834733920459402 0 +397 0.009002851431776347 0.0358171586374622 0 +398 0.0116500571964923 0.03699253311938289 0 +399 0.01611000633255521 -0.0356377270341717 0 +400 0.01346280056783925 -0.03446235255225101 0 +401 0.009002851431776523 -0.03581715863746215 0 +402 0.007190108060429749 -0.03834733920459397 0 +403 0.01165005719649248 -0.03699253311938284 0 +404 0.03555424017798851 0.03080315760364019 0 +405 0.03555424017798854 -0.03080315760364017 0 +406 0.03528580251036241 0.01265452572352067 0 +407 0.03728462695039444 0.01449345664391817 0 +408 0.03385614384679096 0.0160227233573229 0 +409 0.03728933052653836 -0.01449951938549419 0 +410 0.03528815429843438 -0.01265755709430865 0 +411 0.03385849563486293 -0.01602575472811089 0 +412 -0.03804198340583177 0.02749060290002487 0 +413 -0.03729840227644255 0.02342680858374709 0 +414 -0.03257575158956998 0.03030533819701228 0 +415 -0.03568065806239548 0.03092986770665746 0 +416 -0.03493707693300627 0.02686607339037969 0 +417 -0.0372984022764425 -0.02342680858374724 0 +418 -0.03804198340583174 -0.02749060290002494 0 +419 -0.03568065806239544 -0.03092986770665754 0 +420 -0.03257575158956989 -0.03030533819701244 0 +421 -0.0349370769330062 -0.02686607339037984 0 +422 0.004064844628137334 -0.04684700188234827 0 +423 0.004064844628137278 0.04684700188234828 0 +424 -0.04063607195571143 0.02375585447233225 0 +425 -0.0406360719557114 -0.02375585447233234 0 +426 -0.01340665181523571 -0.04512157052447213 0 +427 -0.0100693230219221 -0.04313009494300325 0 +428 -0.01829611600557741 -0.0405671018365896 0 +429 -0.01752004830706337 -0.0438400739712653 0 +430 -0.01418271951374975 -0.04184859838979642 0 +431 -0.01006932302192226 0.04313009494300325 0 +432 -0.01340665181523578 0.04512157052447214 0 +433 -0.01752004830706344 0.04384007397126529 0 +434 -0.01829611600557757 0.04056710183658955 0 +435 -0.01418271951374991 0.0418485983897964 0 +436 -0.02904629244274373 0.03712593266280377 0 +437 -0.0292585687797441 0.03340337067508543 0 +438 -0.02232612783797558 0.03847891801811658 0 +439 -0.02558007197185947 0.03966370633431934 0 +440 -0.02579234830885984 0.03594114434660101 0 +441 -0.02925856877974401 -0.0334033706750856 0 +442 -0.02904629244274369 -0.03712593266280385 0 +443 -0.02558007197185939 -0.03966370633431936 0 +444 -0.02232612783797542 -0.03847891801811663 0 +445 -0.02579234830885972 -0.03594114434660111 0 +446 0.04716761167571838 0.002078283876193393 0 +447 0.04433522335143676 0.004156567752386786 0 +448 0.04438131839764711 -0.004215982619832031 0 +449 0.04719065919882356 -0.002107991309916016 0 +450 0.04435827087454193 -2.970743372262223e-05 0 +451 -0.00901883695035533 -0.04631518768851771 0 +452 -0.009018836950355429 0.04631518768851772 0 +453 -0.03255180821920908 0.03422955555273647 0 +454 -0.03255180821920902 -0.03422955555273657 0 +455 0.04376327318677709 -0.008712595472449104 0 +456 0.04595456877708353 -0.01110121701515016 0 +457 0.04684596826824478 -0.006642175843561082 0 +458 0.04593152125397836 0.01107150958142753 0 +459 0.04371717814056675 0.008653180605003858 0 +460 0.0468229207451396 0.006612468409838437 0 +461 0.04223758904941431 0.01538487122882752 0 +462 0.04519172670840214 0.01443735489333937 0 +463 0.04363650950554827 0.01871040306469393 0 +464 0.04519407849647409 -0.01444038626412739 0 +465 0.04224229262555822 -0.01539093397040356 0 +466 0.04363886129362023 -0.01871343443548197 0 +467 -0.02167700324164158 -0.04199687921903341 0 +468 -0.02167700324164164 0.04199687921903339 0 +469 -0.0169359887372483 0.0331930366172867 0 +470 -0.01693598873724808 -0.03319303661728679 0 +471 0.03876421604154688 0.007761766020094509 0 +472 0.03602559705593863 0.00928868041160884 0 +473 0.0368487557969093 0.005723419007189877 0 +474 0.03604864457904382 -0.00931838784533142 0 +475 0.03881031108775724 -0.007821180887539735 0 +476 0.03687180332001448 -0.005753126440912473 0 +477 -0.02630016174367099 -0.02637014960054546 0 +478 -0.02630016174367116 0.02637014960054525 0 +479 -0.005889133207199443 0.03672735057503569 0 +480 -0.005889133207199223 -0.03672735057503571 0 +481 -0.03294660043233316 -0.01703293225837426 0 +482 -0.03294660043233329 0.01703293225837403 0 +483 0.005437590027357561 -0.03664031737843284 0 +484 0.005437590027357384 0.03664031737843286 0 +485 0.02620054019436713 -0.02626523993312592 0 +486 0.02620054019436706 0.02626523993312597 0 +487 -0.03646949965865654 -0.006262638403897352 0 +488 -0.03662525176331456 0.005800870002277679 0 +489 0.0168309982016413 0.03303269388867962 0 +490 0.01683099820164147 -0.03303269388867955 0 +491 0.04005099703525179 -0.0130023124277025 0 +492 0.04081148731586122 -0.009663143178725273 0 +493 0.0380498208071478 -0.01116035013651696 0 +494 0.04076304048157892 0.009600696940492013 0 +495 0.0400232459360027 0.01296654225240384 0 +496 0.03802442149597066 0.01112761133200634 0 +497 0.04300278290616765 -0.01205176472142633 0 +498 0.04297738359499053 0.01201902591691569 0 +499 0.02643264019898761 -0.01346810287871362 0 +500 0.02930080737564505 0.004640791977248593 0 +501 0.004640791977248707 -0.02930080737564503 0 +502 -0.02097706203261962 -0.02097706203261979 0 +503 -0.02097706203261978 0.02097706203261963 0 +504 -0.02930080737564504 -0.004640791977248705 0 +505 -0.02921757015845996 0.004653975457306514 0 +506 0.01345491939865571 -0.02634940298180244 0 +507 -0.02627990252116526 0.01339689759245197 0 +508 0.02086214324299751 -0.02085380351238706 0 +509 0.01346810287871364 0.0264326401989876 0 +510 -0.01340851161059851 0.02637304893087233 0 +511 0.0291424807800407 -0.004615715508015278 0 +512 0.02634940298180248 0.01345491939865564 0 +513 -0.004595437829372185 0.02921862379864065 0 +514 0.02085380351238709 0.02086214324299748 0 +515 -0.0262898117136872 -0.0133953281305405 0 +516 0.004621114811333881 0.02913269702087351 0 +517 -0.004653975457306499 -0.02921757015845996 0 +518 -0.01339689759245196 -0.02627990252116527 0 +519 -0.01818449309035727 0.02766807951237283 0 +520 -0.01579650235047789 0.02702056422162258 0 +521 -0.01254420600810675 0.02867769197735833 0 +522 -0.011679900405615 0.03098233502384434 0 +523 -0.01504809803941724 0.02955267636027287 0 +524 -0.008742209145206226 0.03193085997976712 0 +525 -0.006668823487289205 0.03057474188920389 0 +526 -0.00306362521958148 0.03114574919909377 0 +527 -0.001531812609790774 0.03307287459954689 0 +528 -0.00517694774078726 0.03275401872073779 0 +529 0.001540371603777915 0.03304423234029117 0 +530 0.003080743207555898 0.03108846468058234 0 +531 0.006685941475263626 0.03051745737069247 0 +532 0.008750768139193371 0.03190221772051143 0 +533 0.005185506734774407 0.0327253764614821 0 +534 -0.02586941721295542 0.02070734323103084 0 +535 -0.0234232396227876 0.02084220263182524 0 +536 -0.02084220263182541 0.02342323962278745 0 +537 -0.02070734323103103 0.02586941721295527 0 +538 -0.0234689007156296 0.02346890071562943 0 +539 -0.03195825450543523 -0.008757327194498435 0 +540 -0.03062953094054013 -0.006699059585873571 0 +541 -0.03120053825043003 -0.003093861318165849 0 +542 -0.03310026912521501 -0.001546930659082992 0 +543 -0.03278141324640592 -0.005192065790079478 0 +544 0.01169976416165329 0.0310021987798828 0 +545 0.01258393352018346 0.0287174194894352 0 +546 0.0158362298625546 0.02706029173369946 0 +547 0.01820435684639557 0.02768794326841132 0 +548 0.01506796179545552 0.02957254011631134 0 +549 -0.03307252338615332 0.001551325152435414 0 +550 -0.03114504677230664 0.003102650304870964 0 +551 -0.03057403946241678 0.006707848572578692 0 +552 -0.03193050876637359 0.00876172168785087 0 +553 -0.03275366750734425 0.005196460283431902 0 +554 -0.02070734323103083 -0.02586941721295543 0 +555 -0.02084220263182522 -0.02342323962278761 0 +556 -0.02342323962278744 -0.02084220263182542 0 +557 -0.02586941721295526 -0.02070734323103104 0 +558 -0.02346890071562942 -0.02346890071562961 0 +559 0.0310021987798828 -0.01169976416165328 0 +560 0.02871741948943521 -0.01258393352018345 0 +561 0.02706029173369947 -0.01583622986255458 0 +562 0.02768794326841133 -0.01820435684639555 0 +563 0.02957254011631134 -0.01506796179545551 0 +564 0.02066625705762006 0.02583111094974794 0 +565 0.02076003028500358 0.02334662709637271 0 +566 0.02334106727596578 0.02076559010541051 0 +567 0.02582833103954446 0.02066903696782355 0 +568 0.02342781454221864 0.02343059445242212 0 +569 0.03195825450543526 0.00875732719449831 0 +570 0.03062953094054015 0.006699059585873452 0 +571 0.03120053825043003 0.003093861318165728 0 +572 0.03310026912521501 0.001546930659082865 0 +573 0.03278141324640593 0.00519206579007935 0 +574 0.008757327194498435 -0.03195825450543523 0 +575 0.006699059585873572 -0.03062953094054013 0 +576 0.003093861318165854 -0.03120053825043002 0 +577 0.001546930659083002 -0.03310026912521501 0 +578 0.005192065790079472 -0.03278141324640592 0 +579 0.02766019752934959 0.01819996235304293 0 +580 0.02700480025557603 0.01582744087584928 0 +581 0.02866192801131178 0.01257514453347815 0 +582 0.03097445304082107 0.01169536966830066 0 +583 0.02954479437724962 0.01506356730210289 0 +584 -0.01167602906623266 -0.03095128622060871 0 +585 -0.01253646332934231 -0.02861559437088699 0 +586 -0.01578875967171345 -0.02695846661515126 0 +587 -0.01818062175097494 -0.02763703070913726 0 +588 -0.01504422670003491 -0.02952162755703726 0 +589 -0.0015513251524354 -0.03307252338615332 0 +590 -0.003102650304870949 -0.03114504677230664 0 +591 -0.006707848572578671 -0.03057403946241678 0 +592 -0.008761721687850844 -0.0319305087663736 0 +593 -0.005196460283431894 -0.03275366750734426 0 +594 -0.0309512862206087 0.01167602906623269 0 +595 -0.02861559437088698 0.01253646332934233 0 +596 -0.02695846661515126 0.01578875967171347 0 +597 -0.02763703070913725 0.01818062175097496 0 +598 -0.02952162755703725 0.01504422670003492 0 +599 -0.02764033377331112 -0.01818009859700461 0 +600 -0.02696507274349916 -0.01578771336377256 0 +601 -0.02862220049923491 -0.01253541702140144 0 +602 -0.03095458928478262 -0.01167550591226237 0 +603 -0.02952493062121115 -0.01504370354606458 0 +604 0.02583111094974797 -0.02066625705762003 0 +605 0.02334662709637274 -0.02076003028500355 0 +606 0.02076559010541055 -0.02334106727596575 0 +607 0.02066903696782359 -0.02582833103954443 0 +608 0.02343059445242215 -0.0234278145422186 0 +609 0.0330474935933469 -0.001538571836005092 0 +610 0.0310949871866938 -0.003077143672010185 0 +611 0.03052397987680393 -0.006682341939717887 0 +612 0.03190547897356716 -0.008748968371420498 0 +613 0.03272863771453782 -0.005183706967001549 0 +614 0.01819996235304299 -0.02766019752934955 0 +615 0.01582744087584935 -0.027004800255576 0 +616 0.01257514453347824 -0.02866192801131173 0 +617 0.01169536966830077 -0.03097445304082103 0 +618 0.01506356730210298 -0.02954479437724957 0 +619 -0.01426592474174077 0.02227463288320653 0 +620 -0.01383721817616964 0.02432384090703943 0 +621 -0.01593136175127226 0.02457438663145476 0 +622 -0.01845421189194603 0.02277572433203719 0 +623 -0.01888291845751715 0.0207265163082043 0 +624 -0.01678877488241453 0.02047597058378896 0 +625 -0.0163600683168434 0.02252517860762186 0 +626 0.01051910685625372 0.02733265913961624 0 +627 0.0075701108337938 0.02823267808024487 0 +628 0.005655884827347139 0.02734726898304195 0 +629 0.006690654843360398 0.0255618409452104 0 +630 0.009639650865820314 0.02466182200458177 0 +631 0.01155387687226698 0.02554723110178468 0 +632 0.008604880849807057 0.02644725004241332 0 +633 -0.02224688714414482 -0.0142615302483881 0 +634 -0.02426834942891601 -0.0138284291894643 0 +635 -0.02451889515333134 -0.01592257276456693 0 +636 -0.02274797859297548 -0.01844981739859336 0 +637 -0.02072651630820429 -0.01888291845751717 0 +638 -0.02047597058378896 -0.01678877488241454 0 +639 -0.02249743286856015 -0.01635567382349073 0 +640 0.001540371603777928 0.0263775656736245 0 +641 0.003080743207555905 0.02775513134724901 0 +642 0.001548930597765192 0.02916133928012922 0 +643 -0.001523253615803496 0.02918998153938494 0 +644 -0.003063625219581473 0.02781241586576044 0 +645 -0.001531812609790761 0.02640620793288022 0 +646 8.558993987216017e-06 0.02778377360650472 0 +647 -0.02640585671948665 0.00155132515243544 0 +648 -0.0278117134389733 0.003102650304870977 0 +649 -0.02924531589752165 0.001555719645788108 0 +650 -0.02927306163658334 -0.001542536165730298 0 +651 -0.02786720491709669 -0.003093861318165836 0 +652 -0.02643360245854835 -0.001546930659082966 0 +653 -0.02783945917803499 4.394493352570878e-06 0 +654 0.02043766432058165 -0.01674768870900355 0 +655 0.02064990378178958 -0.01880074611069531 0 +656 0.02271897556166088 -0.01839190330116258 0 +657 0.02457580788032425 -0.0159300030899381 0 +658 0.02436356841911631 -0.01387694568824635 0 +659 0.02229449663924501 -0.01428578849777907 0 +660 0.02250673610045294 -0.01633884589947083 0 +661 0.02831700591103086 0.007578834451050939 0 +662 0.02733320444641667 0.01051687692485329 0 +663 0.02549173962366126 0.01154508788556165 0 +664 0.02463407626552005 0.009635256372467675 0 +665 0.02561787773013424 0.006697213898665326 0 +666 0.02745934255288964 0.005669002937956959 0 +667 0.02647554108827545 0.008607045411759308 0 +668 -0.02274467552880161 0.01845034055256374 0 +669 -0.02451228902498344 0.01592361907250786 0 +670 -0.02426174330056809 0.01382947549740523 0 +671 -0.02224358407997092 0.01426205340235849 0 +672 -0.02047597058378909 0.01678877488241438 0 +673 -0.02072651630820443 0.018882918457517 0 +674 -0.02249412980438626 0.01635619697746112 0 +675 -0.001551325152435429 -0.02640585671948665 0 +676 -0.003102650304870964 -0.0278117134389733 0 +677 -0.001555719645788098 -0.02924531589752165 0 +678 0.001542536165730304 -0.02927306163658334 0 +679 0.00309386131816584 -0.02786720491709669 0 +680 0.001546930659082973 -0.02643360245854834 0 +681 -4.394493352562286e-06 -0.027839459178035 0 +682 0.02638082692668023 -0.001538571836005092 0 +683 0.02776165385336047 -0.003077143672010185 0 +684 0.02919525631190881 -0.001530213012927321 0 +685 0.02924803184377693 0.001555289482160636 0 +686 0.0278672049170967 0.003093861318165728 0 +687 0.02643360245854835 0.001546930659082865 0 +688 0.02781442938522858 8.35882307777221e-06 0 +689 -0.01845034055256373 -0.02274467552880162 0 +690 -0.01592361907250785 -0.02451228902498345 0 +691 -0.01382947549740522 -0.0242617433005681 0 +692 -0.01426205340235848 -0.02224358407997092 0 +693 -0.01678877488241437 -0.0204759705837891 0 +694 -0.018882918457517 -0.02072651630820444 0 +695 -0.0163561969774611 -0.02249412980438627 0 +696 0.01674768870900357 0.02043766432058162 0 +697 0.01880074611069533 0.02064990378178955 0 +698 0.01839190330116261 0.02271897556166086 0 +699 0.01593000308993812 0.02457580788032423 0 +700 0.01387694568824636 0.0243635684191163 0 +701 0.01428578849777909 0.022294496639245 0 +702 0.01633884589947085 0.02250673610045292 0 +703 -0.006682095849373227 0.0255904832044661 0 +704 -0.005638766839372706 0.02740455350155338 0 +705 -0.007533129089780958 0.02827009884271788 0 +706 -0.01047082035018973 0.0273215738867951 0 +707 -0.01151414936019025 0.02550750358970783 0 +708 -0.009619787109782001 0.02464195824854332 0 +709 -0.00857645809978148 0.0264560285456306 0 +710 -0.02461090944530767 0.009615915770399728 0 +711 -0.02544540598323647 0.01150640668142585 0 +712 -0.02725912506693016 0.01048259021407015 0 +713 -0.02823834761269506 0.007568282835688334 0 +714 -0.02740385107476626 0.005677791924662211 0 +715 -0.02559013199107256 0.006701608392017907 0 +716 -0.02642462852900137 0.008592099303044028 0 +717 0.007578834451051043 -0.02831700591103083 0 +718 0.01051687692485338 -0.02733320444641663 0 +719 0.01154508788556174 -0.02549173962366123 0 +720 0.009635256372467762 -0.02463407626552002 0 +721 0.006697213898665427 -0.02561787773013421 0 +722 0.005669002937957066 -0.02745934255288962 0 +723 0.008607045411759402 -0.02647554108827542 0 +724 0.02733592039267198 -0.01051730708848084 0 +725 0.02823920058635634 -0.00756651129824806 0 +726 0.02735379148915342 -0.005652285291801401 0 +727 0.02556510219826614 -0.006688855075587525 0 +728 0.02466182200458177 -0.009639650865820306 0 +729 0.02554723110178469 -0.01155387687226696 0 +730 0.02645051129546905 -0.008603081082034182 0 +731 0.02451753649199735 0.01592399401343625 0 +732 0.02268567000219222 0.01839306862821686 0 +733 0.02064434396138262 0.01880630593110227 0 +734 0.02043488441037815 0.01675046861920705 0 +735 0.02226675090018328 0.01428139400442644 0 +736 0.02430807694099288 0.01386815670154104 0 +737 0.02247621045118775 0.01633723131632165 0 +738 -0.009615915770399708 -0.02461090944530767 0 +739 -0.01150640668142583 -0.02544540598323647 0 +740 -0.01048259021407014 -0.02725912506693017 0 +741 -0.007568282835688318 -0.02823834761269506 0 +742 -0.005677791924662193 -0.02740385107476626 0 +743 -0.006701608392017888 -0.02559013199107257 0 +744 -0.008592099303044011 -0.02642462852900136 0 +745 -0.02829714215499242 -0.007558970695012638 0 +746 -0.02729347693433981 -0.01047714941277657 0 +747 -0.0254520121115844 -0.01150536037348493 0 +748 -0.0246142125094816 -0.009615392616429359 0 +749 -0.02561787773013421 -0.006697213898665427 0 +750 -0.02745934255288963 -0.005669002937957066 0 +751 -0.02645567733223701 -0.008587181655720998 0 +752 0.01592399401343631 -0.02451753649199731 0 +753 0.01839306862821692 -0.02268567000219219 0 +754 0.01880630593110231 -0.02064434396138259 0 +755 0.01675046861920709 -0.02043488441037812 0 +756 0.01428139400442649 -0.02226675090018325 0 +757 0.0138681567015411 -0.02430807694099284 0 +758 0.0163372313163217 -0.02247621045118772 0 +759 0.02364063724488787 -0.01204550631853619 0 +760 0.004150598609794739 -0.02620584825939899 0 +761 0.02620584825939901 0.00415059860979464 0 +762 -0.01876131594284193 -0.01876131594284208 0 +763 -0.02617810252033732 0.004154993103147217 0 +764 -0.02620584825939899 -0.004150598609794742 0 +765 0.01872300967963463 -0.0187202297694311 0 +766 -0.01876131594284208 0.01876131594284193 0 +767 -0.01202564256249788 0.02362077348884941 0 +768 -0.0235930277497877 -0.01202124806914522 0 +769 0.00414403955448971 0.02614981147447516 0 +770 -0.004135480560502537 0.02617845373373087 0 +771 0.02615307272753089 -0.004142239786716848 0 +772 -0.02358972468561378 0.01202177122311561 0 +773 0.01872022976943113 0.0187230096796346 0 +774 -0.004154993103147209 -0.02617810252033732 0 +775 0.0120455063185362 0.02364063724488787 0 +776 -0.01202177122311559 -0.02358972468561378 0 +777 0.02361289150582615 0.01204111182518355 0 +778 0.01204111182518363 -0.02361289150582611 0 +779 -0.01831935249115165 0.02522190192220501 0 +780 0.009634937497723543 0.02961743843006383 0 +781 -0.03117279251136834 4.394493352557667e-06 0 +782 -0.0251941561831433 -0.01831495799779899 0 +783 8.558993987209578e-06 0.03111710693983805 0 +784 0.02964572947592596 0.009637102059675799 0 +785 0.0252034594150361 -0.01829813007377907 0 +786 -0.009606514747697982 0.02962621693328111 0 +787 -0.01831548115176933 -0.02519085311896944 0 +788 -0.009622155950960488 -0.02959481691665188 0 +789 0.01829813007377909 0.02520345941503608 0 +790 -4.394493352548297e-06 -0.03117279251136833 0 +791 0.0251729337657709 0.0182965154906299 0 +792 -0.02959481691665188 0.00962215595096051 0 +793 -0.02519085311896943 0.01831548115176935 0 +794 -0.02962586571988752 -0.009617238303637499 0 +795 0.03114776271856191 8.358823077771988e-06 0 +796 0.009637102059675906 -0.02964572947592593 0 +797 0.02962069968311957 -0.009633137729950668 0 +798 0.01829651549062995 -0.02517293376577086 0 +$EndNodes +$Elements +206 +1 26 2 2 2 1 4 23 24 +2 26 2 2 2 4 5 25 26 +3 26 2 2 2 5 6 27 28 +4 26 2 2 2 6 7 29 30 +5 26 2 2 2 7 8 31 32 +6 26 2 2 2 8 9 33 34 +7 26 2 2 2 9 10 35 36 +8 26 2 2 2 10 11 37 38 +9 26 2 2 2 11 12 39 40 +10 26 2 2 2 12 13 41 42 +11 26 2 2 2 13 14 43 44 +12 26 2 2 2 14 15 45 46 +13 26 2 2 2 15 16 47 48 +14 26 2 2 2 16 17 49 50 +15 26 2 2 2 17 18 51 52 +16 26 2 2 2 18 19 53 54 +17 26 2 2 2 19 20 55 56 +18 26 2 2 2 20 21 57 58 +19 26 2 2 2 21 22 59 60 +20 26 2 2 2 22 1 61 62 +21 26 2 1 4 3 122 144 145 +22 26 2 1 4 122 123 146 147 +23 26 2 1 4 123 124 148 149 +24 26 2 1 4 124 125 150 151 +25 26 2 1 4 125 126 152 153 +26 26 2 1 4 126 127 154 155 +27 26 2 1 4 127 128 156 157 +28 26 2 1 4 128 129 158 159 +29 26 2 1 4 129 130 160 161 +30 26 2 1 4 130 131 162 163 +31 26 2 1 4 131 132 164 165 +32 26 2 1 4 132 133 166 167 +33 26 2 1 4 133 134 168 169 +34 26 2 1 4 134 135 170 171 +35 26 2 1 4 135 136 172 173 +36 26 2 1 4 136 137 174 175 +37 26 2 1 4 137 138 176 177 +38 26 2 1 4 138 139 178 179 +39 26 2 1 4 139 140 180 181 +40 26 2 1 4 140 141 182 183 +41 26 2 1 4 141 142 184 185 +42 26 2 1 4 142 143 186 187 +43 26 2 1 4 143 3 188 189 +44 21 2 3 1 123 203 64 210 211 212 213 214 215 216 +45 21 2 3 1 80 202 142 217 218 219 220 221 222 223 +46 21 2 3 1 204 205 133 224 225 226 227 228 229 230 +47 21 2 3 1 142 208 80 231 232 233 234 222 221 235 +48 21 2 3 1 64 209 123 236 237 238 239 215 214 240 +49 21 2 3 1 124 207 203 241 242 243 244 245 246 247 +50 21 2 3 1 202 206 141 248 249 250 251 252 253 254 +51 21 2 3 1 133 205 132 227 226 255 256 166 167 257 +52 21 2 3 1 139 206 200 258 259 260 261 262 263 264 +53 21 2 3 1 201 207 126 265 266 267 268 269 270 271 +54 21 2 3 1 125 207 124 272 273 242 241 150 151 274 +55 21 2 3 1 141 206 140 251 250 275 276 182 183 277 +56 21 2 3 1 131 205 199 278 279 280 281 282 283 284 +57 21 2 3 1 198 204 134 285 286 287 288 289 290 291 +58 21 2 3 1 140 206 139 276 275 259 258 180 181 292 +59 21 2 3 1 126 207 125 268 267 273 272 152 153 293 +60 21 2 3 1 132 205 131 256 255 279 278 164 165 294 +61 21 2 3 1 134 204 133 288 287 229 228 168 169 295 +62 21 2 3 1 190 195 69 296 297 298 299 300 301 302 +63 21 2 3 1 75 194 191 303 304 305 306 307 308 309 +64 21 2 3 1 68 196 190 310 311 312 313 314 315 316 +65 21 2 3 1 191 197 76 317 318 319 320 321 322 323 +66 21 2 3 1 192 193 2 324 325 326 327 328 329 330 +67 21 2 3 1 195 199 70 331 332 333 334 335 336 337 +68 21 2 3 1 74 198 194 338 339 340 341 342 343 344 +69 21 2 3 1 138 200 197 345 346 347 348 349 350 351 +70 21 2 3 1 196 201 127 352 353 354 355 356 357 358 +71 21 2 3 1 197 200 77 348 347 359 360 361 362 363 +72 21 2 3 1 67 201 196 364 365 353 352 366 367 368 +73 21 2 3 1 73 204 198 369 370 286 285 371 372 373 +74 21 2 3 1 199 205 71 281 280 374 375 376 377 378 +75 21 2 3 1 72 205 204 379 380 225 224 381 382 383 +76 21 2 3 1 203 207 65 244 243 384 385 386 387 388 +77 21 2 3 1 79 206 202 389 390 249 248 391 392 393 +78 21 2 3 1 66 207 201 394 395 266 265 396 397 398 +79 21 2 3 1 200 206 78 261 260 399 400 401 402 403 +80 21 2 3 1 124 203 123 246 245 211 210 148 149 404 +81 21 2 3 1 142 202 141 220 219 253 252 184 185 405 +82 21 2 3 1 63 209 64 406 407 237 236 85 84 408 +83 21 2 3 1 80 208 81 234 233 409 410 119 118 411 +84 21 2 3 1 130 199 195 412 413 332 331 414 415 416 +85 21 2 3 1 194 198 135 341 340 417 418 419 420 421 +86 21 2 3 1 139 200 138 263 262 346 345 178 179 422 +87 21 2 3 1 127 201 126 355 354 270 269 154 155 423 +88 21 2 3 1 131 199 130 283 282 413 412 162 163 424 +89 21 2 3 1 135 198 134 418 417 290 289 170 171 425 +90 21 2 3 1 137 197 191 426 427 318 317 428 429 430 +91 21 2 3 1 190 196 128 313 312 431 432 433 434 435 +92 21 2 3 1 129 195 190 436 437 297 296 438 439 440 +93 21 2 3 1 191 194 136 306 305 441 442 443 444 445 +94 21 2 3 1 3 193 192 446 447 325 324 448 449 450 +95 21 2 3 1 138 197 137 350 349 427 426 176 177 451 +96 21 2 3 1 128 196 127 432 431 357 356 156 157 452 +97 21 2 3 1 130 195 129 415 414 437 436 160 161 453 +98 21 2 3 1 136 194 135 442 441 420 419 172 173 454 +99 21 2 3 1 3 192 143 449 448 455 456 188 189 457 +100 21 2 3 1 122 193 3 458 459 447 446 144 145 460 +101 21 2 3 1 123 209 122 239 238 461 462 146 147 463 +102 21 2 3 1 143 208 142 464 465 232 231 186 187 466 +103 21 2 3 1 137 191 136 429 428 444 443 174 175 467 +104 21 2 3 1 129 190 128 439 438 434 433 158 159 468 +105 21 2 3 1 68 190 69 315 314 301 300 95 94 469 +106 21 2 3 1 75 191 76 308 307 322 321 109 108 470 +107 21 2 3 1 2 193 63 327 326 471 472 83 82 473 +108 21 2 3 1 81 192 2 474 475 329 328 121 120 476 +109 21 2 3 1 74 194 75 343 342 304 303 107 106 477 +110 21 2 3 1 69 195 70 299 298 336 335 97 96 478 +111 21 2 3 1 67 196 68 367 366 311 310 93 92 479 +112 21 2 3 1 76 197 77 320 319 362 361 111 110 480 +113 21 2 3 1 73 198 74 372 371 339 338 105 104 481 +114 21 2 3 1 70 199 71 334 333 377 376 99 98 482 +115 21 2 3 1 77 200 78 360 359 402 401 113 112 483 +116 21 2 3 1 66 201 67 397 396 365 364 91 90 484 +117 21 2 3 1 79 202 80 392 391 218 217 117 116 485 +118 21 2 3 1 64 203 65 213 212 387 386 87 86 486 +119 21 2 3 1 72 204 73 382 381 370 369 103 102 487 +120 21 2 3 1 71 205 72 375 374 380 379 101 100 488 +121 21 2 3 1 65 207 66 385 384 395 394 89 88 489 +122 21 2 3 1 78 206 79 400 399 390 389 115 114 490 +123 21 2 3 1 81 208 192 410 409 491 492 475 474 493 +124 21 2 3 1 193 209 63 494 495 407 406 472 471 496 +125 21 2 3 1 192 208 143 492 491 465 464 456 455 497 +126 21 2 3 1 122 209 193 462 461 495 494 459 458 498 +127 21 2 4 3 69 510 68 519 520 521 522 94 95 523 +128 21 2 4 3 68 513 67 524 525 526 527 92 93 528 +129 21 2 4 3 67 516 66 529 530 531 532 90 91 533 +130 21 2 4 3 70 503 69 534 535 536 537 96 97 538 +131 21 2 4 3 73 504 72 539 540 541 542 102 103 543 +132 21 2 4 3 66 509 65 544 545 546 547 88 89 548 +133 21 2 4 3 72 505 71 549 550 551 552 100 101 553 +134 21 2 4 3 75 502 74 554 555 556 557 106 107 558 +135 21 2 4 3 81 499 80 559 560 561 562 118 119 563 +136 21 2 4 3 65 514 64 564 565 566 567 86 87 568 +137 21 2 4 3 63 500 2 569 570 571 572 82 83 573 +138 21 2 4 3 78 501 77 574 575 576 577 112 113 578 +139 21 2 4 3 64 512 63 579 580 581 582 84 85 583 +140 21 2 4 3 76 518 75 584 585 586 587 108 109 588 +141 21 2 4 3 77 517 76 589 590 591 592 110 111 593 +142 21 2 4 3 71 507 70 594 595 596 597 98 99 598 +143 21 2 4 3 74 515 73 599 600 601 602 104 105 603 +144 21 2 4 3 80 508 79 604 605 606 607 116 117 608 +145 21 2 4 3 2 511 81 609 610 611 612 120 121 613 +146 21 2 4 3 79 506 78 614 615 616 617 114 115 618 +147 21 2 4 3 10 510 503 619 620 621 622 623 624 625 +148 21 2 4 3 509 516 7 626 627 628 629 630 631 632 +149 21 2 4 3 15 515 502 633 634 635 636 637 638 639 +150 21 2 4 3 8 516 513 640 641 642 643 644 645 646 +151 21 2 4 3 13 505 504 647 648 649 650 651 652 653 +152 21 2 4 3 21 508 499 654 655 656 657 658 659 660 +153 21 2 4 3 500 512 4 661 662 663 664 665 666 667 +154 21 2 4 3 503 507 11 668 669 670 671 672 673 674 +155 21 2 4 3 18 517 501 675 676 677 678 679 680 681 +156 21 2 4 3 1 511 500 682 683 684 685 686 687 688 +157 21 2 4 3 502 518 16 689 690 691 692 693 694 695 +158 21 2 4 3 6 514 509 696 697 698 699 700 701 702 +159 21 2 4 3 9 513 510 703 704 705 706 707 708 709 +160 21 2 4 3 12 507 505 710 711 712 713 714 715 716 +161 21 2 4 3 501 506 19 717 718 719 720 721 722 723 +162 21 2 4 3 499 511 22 724 725 726 727 728 729 730 +163 21 2 4 3 512 514 5 731 732 733 734 735 736 737 +164 21 2 4 3 17 518 517 738 739 740 741 742 743 744 +165 21 2 4 3 504 515 14 745 746 747 748 749 750 751 +166 21 2 4 3 506 508 20 752 753 754 755 756 757 758 +167 21 2 4 3 21 499 22 659 658 729 728 60 59 759 +168 21 2 4 3 18 501 19 680 679 722 721 54 53 760 +169 21 2 4 3 1 500 4 687 686 666 665 24 23 761 +170 21 2 4 3 15 502 16 638 637 694 693 48 47 762 +171 21 2 4 3 12 505 13 715 714 648 647 42 41 763 +172 21 2 4 3 13 504 14 652 651 750 749 44 43 764 +173 21 2 4 3 20 508 21 755 754 655 654 58 57 765 +174 21 2 4 3 10 503 11 624 623 673 672 38 37 766 +175 21 2 4 3 9 510 10 708 707 620 619 36 35 767 +176 21 2 4 3 14 515 15 748 747 634 633 46 45 768 +177 21 2 4 3 7 516 8 629 628 641 640 32 31 769 +178 21 2 4 3 8 513 9 645 644 704 703 34 33 770 +179 21 2 4 3 22 511 1 727 726 683 682 62 61 771 +180 21 2 4 3 11 507 12 671 670 711 710 40 39 772 +181 21 2 4 3 5 514 6 734 733 697 696 28 27 773 +182 21 2 4 3 17 517 18 743 742 676 675 52 51 774 +183 21 2 4 3 6 509 7 701 700 631 630 30 29 775 +184 21 2 4 3 16 518 17 692 691 739 738 50 49 776 +185 21 2 4 3 4 512 5 664 663 736 735 26 25 777 +186 21 2 4 3 19 506 20 720 719 757 756 56 55 778 +187 21 2 4 3 503 510 69 622 621 520 519 537 536 779 +188 21 2 4 3 66 516 509 532 531 627 626 545 544 780 +189 21 2 4 3 504 505 72 650 649 550 549 542 541 781 +190 21 2 4 3 502 515 74 636 635 600 599 557 556 782 +191 21 2 4 3 513 516 67 643 642 530 529 527 526 783 +192 21 2 4 3 63 512 500 582 581 662 661 570 569 784 +193 21 2 4 3 499 508 80 657 656 605 604 562 561 785 +194 21 2 4 3 510 513 68 706 705 525 524 522 521 786 +195 21 2 4 3 75 518 502 587 586 690 689 555 554 787 +196 21 2 4 3 517 518 76 741 740 585 584 592 591 788 +197 21 2 4 3 509 514 65 699 698 565 564 547 546 789 +198 21 2 4 3 501 517 77 678 677 590 589 577 576 790 +199 21 2 4 3 64 514 512 567 566 732 731 580 579 791 +200 21 2 4 3 505 507 71 713 712 595 594 552 551 792 +201 21 2 4 3 70 507 503 597 596 669 668 535 534 793 +202 21 2 4 3 73 515 504 602 601 746 745 540 539 794 +203 21 2 4 3 500 511 2 685 684 610 609 572 571 795 +204 21 2 4 3 78 506 501 617 616 718 717 575 574 796 +205 21 2 4 3 81 511 499 612 611 725 724 560 559 797 +206 21 2 4 3 79 508 506 607 606 753 752 615 614 798 +$EndElements diff --git a/testData/partially_filled_coax/partially_filled_coax.step b/testData/partially_filled_coax/partially_filled_coax.step new file mode 100644 index 0000000..ed5bdeb --- /dev/null +++ b/testData/partially_filled_coax/partially_filled_coax.step @@ -0,0 +1,256 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); +FILE_NAME('Open CASCADE Shape Model','2023-07-05T13:03:47',(''),(''), + 'Open CASCADE STEP processor 7.6','FreeCAD','Unknown'); +FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }')); +ENDSEC; +DATA; +#1 = APPLICATION_PROTOCOL_DEFINITION('international standard', + 'automotive_design',2000,#2); +#2 = APPLICATION_CONTEXT( + 'core data for automotive mechanical design processes'); +#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10); +#4 = PRODUCT_DEFINITION_SHAPE('','',#5); +#5 = PRODUCT_DEFINITION('design','',#6,#9); +#6 = PRODUCT_DEFINITION_FORMATION('','',#7); +#7 = PRODUCT('partially_filled_coax','partially_filled_coax','',(#8)); +#8 = PRODUCT_CONTEXT('',#2,'mechanical'); +#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#10 = SHAPE_REPRESENTATION('',(#11,#15,#19,#23),#27); +#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14); +#12 = CARTESIAN_POINT('',(0.,0.,0.)); +#13 = DIRECTION('',(0.,0.,1.)); +#14 = DIRECTION('',(1.,0.,-0.)); +#15 = AXIS2_PLACEMENT_3D('',#16,#17,#18); +#16 = CARTESIAN_POINT('',(0.,0.,0.)); +#17 = DIRECTION('',(0.,0.,1.)); +#18 = DIRECTION('',(1.,0.,0.)); +#19 = AXIS2_PLACEMENT_3D('',#20,#21,#22); +#20 = CARTESIAN_POINT('',(0.,0.,0.)); +#21 = DIRECTION('',(0.,0.,1.)); +#22 = DIRECTION('',(1.,0.,0.)); +#23 = AXIS2_PLACEMENT_3D('',#24,#25,#26); +#24 = CARTESIAN_POINT('',(0.,0.,0.)); +#25 = DIRECTION('',(0.,0.,1.)); +#26 = DIRECTION('',(1.,0.,0.)); +#27 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#31)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#28,#29,#30)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#28 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#29 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#30 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#31 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#28, + 'distance_accuracy_value','confusion accuracy'); +#32 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); +#33 = SHAPE_DEFINITION_REPRESENTATION(#34,#40); +#34 = PRODUCT_DEFINITION_SHAPE('','',#35); +#35 = PRODUCT_DEFINITION('design','',#36,#39); +#36 = PRODUCT_DEFINITION_FORMATION('','',#37); +#37 = PRODUCT('Conductor_0','Conductor_0','',(#38)); +#38 = PRODUCT_CONTEXT('',#2,'mechanical'); +#39 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#40 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#41),#68); +#41 = SHELL_BASED_SURFACE_MODEL('',(#42)); +#42 = OPEN_SHELL('',(#43)); +#43 = ADVANCED_FACE('',(#44),#57,.T.); +#44 = FACE_BOUND('',#45,.T.); +#45 = EDGE_LOOP('',(#46)); +#46 = ORIENTED_EDGE('',*,*,#47,.T.); +#47 = EDGE_CURVE('',#48,#48,#50,.T.); +#48 = VERTEX_POINT('',#49); +#49 = CARTESIAN_POINT('',(50.,0.,0.)); +#50 = SURFACE_CURVE('',#51,(#56),.PCURVE_S1.); +#51 = CIRCLE('',#52,50.); +#52 = AXIS2_PLACEMENT_3D('',#53,#54,#55); +#53 = CARTESIAN_POINT('',(0.,0.,0.)); +#54 = DIRECTION('',(0.,0.,1.)); +#55 = DIRECTION('',(1.,0.,-0.)); +#56 = PCURVE('',#57,#62); +#57 = PLANE('',#58); +#58 = AXIS2_PLACEMENT_3D('',#59,#60,#61); +#59 = CARTESIAN_POINT('',(-3.5E-15,-2.04E-15,0.)); +#60 = DIRECTION('',(0.,0.,1.)); +#61 = DIRECTION('',(1.,0.,-0.)); +#62 = DEFINITIONAL_REPRESENTATION('',(#63),#67); +#63 = CIRCLE('',#64,50.); +#64 = AXIS2_PLACEMENT_2D('',#65,#66); +#65 = CARTESIAN_POINT('',(3.5E-15,2.04E-15)); +#66 = DIRECTION('',(1.,0.)); +#67 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#68 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#72)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#69,#70,#71)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#69 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#70 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#71 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#72 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#69, + 'distance_accuracy_value','confusion accuracy'); +#73 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#74,#76); +#74 = ( REPRESENTATION_RELATIONSHIP('','',#40,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#75) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#75 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); +#76 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#77); +#77 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('1','Conductor_0','',#5,#35,$); +#78 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#37)); +#79 = SHAPE_DEFINITION_REPRESENTATION(#80,#86); +#80 = PRODUCT_DEFINITION_SHAPE('','',#81); +#81 = PRODUCT_DEFINITION('design','',#82,#85); +#82 = PRODUCT_DEFINITION_FORMATION('','',#83); +#83 = PRODUCT('Conductor_1','Conductor_1','',(#84)); +#84 = PRODUCT_CONTEXT('',#2,'mechanical'); +#85 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#86 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#87),#114); +#87 = SHELL_BASED_SURFACE_MODEL('',(#88)); +#88 = OPEN_SHELL('',(#89)); +#89 = ADVANCED_FACE('',(#90),#103,.T.); +#90 = FACE_BOUND('',#91,.T.); +#91 = EDGE_LOOP('',(#92)); +#92 = ORIENTED_EDGE('',*,*,#93,.T.); +#93 = EDGE_CURVE('',#94,#94,#96,.T.); +#94 = VERTEX_POINT('',#95); +#95 = CARTESIAN_POINT('',(25.,0.,0.)); +#96 = SURFACE_CURVE('',#97,(#102),.PCURVE_S1.); +#97 = CIRCLE('',#98,25.); +#98 = AXIS2_PLACEMENT_3D('',#99,#100,#101); +#99 = CARTESIAN_POINT('',(0.,0.,0.)); +#100 = DIRECTION('',(0.,0.,1.)); +#101 = DIRECTION('',(1.,0.,-0.)); +#102 = PCURVE('',#103,#108); +#103 = PLANE('',#104); +#104 = AXIS2_PLACEMENT_3D('',#105,#106,#107); +#105 = CARTESIAN_POINT('',(-1.75E-15,-1.02E-15,0.)); +#106 = DIRECTION('',(0.,0.,1.)); +#107 = DIRECTION('',(1.,0.,-0.)); +#108 = DEFINITIONAL_REPRESENTATION('',(#109),#113); +#109 = CIRCLE('',#110,25.); +#110 = AXIS2_PLACEMENT_2D('',#111,#112); +#111 = CARTESIAN_POINT('',(1.75E-15,1.02E-15)); +#112 = DIRECTION('',(1.,0.)); +#113 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#114 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#118)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#115,#116,#117)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#115 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#116 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#117 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#118 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#115, + 'distance_accuracy_value','confusion accuracy'); +#119 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#120,#122); +#120 = ( REPRESENTATION_RELATIONSHIP('','',#86,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#121) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#121 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); +#122 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#123 + ); +#123 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('2','Conductor_1','',#5,#81,$); +#124 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#83)); +#125 = SHAPE_DEFINITION_REPRESENTATION(#126,#132); +#126 = PRODUCT_DEFINITION_SHAPE('','',#127); +#127 = PRODUCT_DEFINITION('design','',#128,#131); +#128 = PRODUCT_DEFINITION_FORMATION('','',#129); +#129 = PRODUCT('Dielectric_1','Dielectric_1','',(#130)); +#130 = PRODUCT_CONTEXT('',#2,'mechanical'); +#131 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#132 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#133),#160); +#133 = SHELL_BASED_SURFACE_MODEL('',(#134)); +#134 = OPEN_SHELL('',(#135)); +#135 = ADVANCED_FACE('',(#136),#149,.T.); +#136 = FACE_BOUND('',#137,.T.); +#137 = EDGE_LOOP('',(#138)); +#138 = ORIENTED_EDGE('',*,*,#139,.T.); +#139 = EDGE_CURVE('',#140,#140,#142,.T.); +#140 = VERTEX_POINT('',#141); +#141 = CARTESIAN_POINT('',(35.,0.,0.)); +#142 = SURFACE_CURVE('',#143,(#148),.PCURVE_S1.); +#143 = CIRCLE('',#144,35.); +#144 = AXIS2_PLACEMENT_3D('',#145,#146,#147); +#145 = CARTESIAN_POINT('',(0.,0.,0.)); +#146 = DIRECTION('',(0.,0.,1.)); +#147 = DIRECTION('',(1.,0.,-0.)); +#148 = PCURVE('',#149,#154); +#149 = PLANE('',#150); +#150 = AXIS2_PLACEMENT_3D('',#151,#152,#153); +#151 = CARTESIAN_POINT('',(-1.250230978322E-15,1.071707357638E-15,0.)); +#152 = DIRECTION('',(0.,0.,1.)); +#153 = DIRECTION('',(1.,0.,-0.)); +#154 = DEFINITIONAL_REPRESENTATION('',(#155),#159); +#155 = CIRCLE('',#156,35.); +#156 = AXIS2_PLACEMENT_2D('',#157,#158); +#157 = CARTESIAN_POINT('',(1.250230978322E-15,-1.071707357638E-15)); +#158 = DIRECTION('',(1.,0.)); +#159 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#160 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#164)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#161,#162,#163)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#161 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#162 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#163 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#164 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#161, + 'distance_accuracy_value','confusion accuracy'); +#165 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#166,#168); +#166 = ( REPRESENTATION_RELATIONSHIP('','',#132,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#167) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#167 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); +#168 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#169 + ); +#169 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('3','Dielectric_1','',#5,#127,$); +#170 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#129)); +#171 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#172) + ,#114); +#172 = STYLED_ITEM('color',(#173),#89); +#173 = PRESENTATION_STYLE_ASSIGNMENT((#174,#180)); +#174 = SURFACE_STYLE_USAGE(.BOTH.,#175); +#175 = SURFACE_SIDE_STYLE('',(#176)); +#176 = SURFACE_STYLE_FILL_AREA(#177); +#177 = FILL_AREA_STYLE('',(#178)); +#178 = FILL_AREA_STYLE_COLOUR('',#179); +#179 = COLOUR_RGB('',1.,0.333333345507,0.); +#180 = CURVE_STYLE('',#181,POSITIVE_LENGTH_MEASURE(0.1),#182); +#181 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#182 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, + 9.803921802644E-02); +#183 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#184) + ,#160); +#184 = STYLED_ITEM('color',(#185),#135); +#185 = PRESENTATION_STYLE_ASSIGNMENT((#186,#194)); +#186 = SURFACE_STYLE_USAGE(.BOTH.,#187); +#187 = SURFACE_SIDE_STYLE('',(#188,#192)); +#188 = SURFACE_STYLE_FILL_AREA(#189); +#189 = FILL_AREA_STYLE('',(#190)); +#190 = FILL_AREA_STYLE_COLOUR('',#191); +#191 = DRAUGHTING_PRE_DEFINED_COLOUR('red'); +#192 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#191,( + #193)); +#193 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#194 = CURVE_STYLE('',#195,POSITIVE_LENGTH_MEASURE(0.1),#182); +#195 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#196 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#197) + ,#68); +#197 = STYLED_ITEM('color',(#198),#43); +#198 = PRESENTATION_STYLE_ASSIGNMENT((#199,#207)); +#199 = SURFACE_STYLE_USAGE(.BOTH.,#200); +#200 = SURFACE_SIDE_STYLE('',(#201,#205)); +#201 = SURFACE_STYLE_FILL_AREA(#202); +#202 = FILL_AREA_STYLE('',(#203)); +#203 = FILL_AREA_STYLE_COLOUR('',#204); +#204 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); +#205 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#204,( + #206)); +#206 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#207 = CURVE_STYLE('',#208,POSITIVE_LENGTH_MEASURE(0.1),#182); +#208 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +ENDSEC; +END-ISO-10303-21; diff --git a/testData/three_wires_ribbon/three_wires_ribbon.FCStd b/testData/three_wires_ribbon/three_wires_ribbon.FCStd new file mode 100644 index 0000000000000000000000000000000000000000..3f75d808ab8f4033f9ca697e9f070004051f1119 GIT binary patch literal 16510 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 literal 0 HcmV?d00001 diff --git a/testData/three_wires_ribbon/three_wires_ribbon.step b/testData/three_wires_ribbon/three_wires_ribbon.step new file mode 100644 index 0000000..d906e70 --- /dev/null +++ b/testData/three_wires_ribbon/three_wires_ribbon.step @@ -0,0 +1,635 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); +FILE_NAME('Open CASCADE Shape Model','2023-07-24T17:16:36',(''),(''), + 'Open CASCADE STEP processor 7.6','FreeCAD','Unknown'); +FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }')); +ENDSEC; +DATA; +#1 = APPLICATION_PROTOCOL_DEFINITION('international standard', + 'automotive_design',2000,#2); +#2 = APPLICATION_CONTEXT( + 'core data for automotive mechanical design processes'); +#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10); +#4 = PRODUCT_DEFINITION_SHAPE('','',#5); +#5 = PRODUCT_DEFINITION('design','',#6,#9); +#6 = PRODUCT_DEFINITION_FORMATION('','',#7); +#7 = PRODUCT('Domain_0','Domain_0','',(#8)); +#8 = PRODUCT_CONTEXT('',#2,'mechanical'); +#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#10 = SHAPE_REPRESENTATION('',(#11,#15,#19,#23,#27),#31); +#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14); +#12 = CARTESIAN_POINT('',(0.,0.,0.)); +#13 = DIRECTION('',(0.,0.,1.)); +#14 = DIRECTION('',(1.,0.,-0.)); +#15 = AXIS2_PLACEMENT_3D('',#16,#17,#18); +#16 = CARTESIAN_POINT('',(0.,0.,0.)); +#17 = DIRECTION('',(0.,0.,1.)); +#18 = DIRECTION('',(1.,0.,0.)); +#19 = AXIS2_PLACEMENT_3D('',#20,#21,#22); +#20 = CARTESIAN_POINT('',(0.,0.,0.)); +#21 = DIRECTION('',(0.,0.,1.)); +#22 = DIRECTION('',(1.,0.,0.)); +#23 = AXIS2_PLACEMENT_3D('',#24,#25,#26); +#24 = CARTESIAN_POINT('',(0.,0.,0.)); +#25 = DIRECTION('',(0.,0.,1.)); +#26 = DIRECTION('',(1.,0.,0.)); +#27 = AXIS2_PLACEMENT_3D('',#28,#29,#30); +#28 = CARTESIAN_POINT('',(1.27,0.,0.)); +#29 = DIRECTION('',(0.,0.,1.)); +#30 = DIRECTION('',(1.,0.,0.)); +#31 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#35)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#32,#33,#34)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#32 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#33 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#34 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#35 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#32, + 'distance_accuracy_value','confusion accuracy'); +#36 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); +#37 = SHAPE_DEFINITION_REPRESENTATION(#38,#44); +#38 = PRODUCT_DEFINITION_SHAPE('','',#39); +#39 = PRODUCT_DEFINITION('design','',#40,#43); +#40 = PRODUCT_DEFINITION_FORMATION('','',#41); +#41 = PRODUCT('solid_wire_000','solid_wire_000','',(#42)); +#42 = PRODUCT_CONTEXT('',#2,'mechanical'); +#43 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#44 = SHAPE_REPRESENTATION('',(#11,#45,#49),#53); +#45 = AXIS2_PLACEMENT_3D('',#46,#47,#48); +#46 = CARTESIAN_POINT('',(0.,0.,0.)); +#47 = DIRECTION('',(0.,0.,1.)); +#48 = DIRECTION('',(1.,0.,0.)); +#49 = AXIS2_PLACEMENT_3D('',#50,#51,#52); +#50 = CARTESIAN_POINT('',(0.,0.,0.)); +#51 = DIRECTION('',(0.,0.,1.)); +#52 = DIRECTION('',(1.,0.,0.)); +#53 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#57)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#54,#55,#56)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#54 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#55 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#56 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#57 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#54, + 'distance_accuracy_value','confusion accuracy'); +#58 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#59,#61); +#59 = ( REPRESENTATION_RELATIONSHIP('','',#44,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#60) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#60 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); +#61 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#62); +#62 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('3','solid_wire_000','',#5,#39,$); +#63 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#41)); +#64 = SHAPE_DEFINITION_REPRESENTATION(#65,#71); +#65 = PRODUCT_DEFINITION_SHAPE('','',#66); +#66 = PRODUCT_DEFINITION('design','',#67,#70); +#67 = PRODUCT_DEFINITION_FORMATION('','',#68); +#68 = PRODUCT('Conductor_0','Conductor_0','',(#69)); +#69 = PRODUCT_CONTEXT('',#2,'mechanical'); +#70 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#71 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#72),#99); +#72 = SHELL_BASED_SURFACE_MODEL('',(#73)); +#73 = OPEN_SHELL('',(#74)); +#74 = ADVANCED_FACE('',(#75),#88,.T.); +#75 = FACE_BOUND('',#76,.T.); +#76 = EDGE_LOOP('',(#77)); +#77 = ORIENTED_EDGE('',*,*,#78,.T.); +#78 = EDGE_CURVE('',#79,#79,#81,.T.); +#79 = VERTEX_POINT('',#80); +#80 = CARTESIAN_POINT('',(0.1905,0.,0.)); +#81 = SURFACE_CURVE('',#82,(#87),.PCURVE_S1.); +#82 = CIRCLE('',#83,0.1905); +#83 = AXIS2_PLACEMENT_3D('',#84,#85,#86); +#84 = CARTESIAN_POINT('',(0.,0.,0.)); +#85 = DIRECTION('',(0.,0.,1.)); +#86 = DIRECTION('',(1.,0.,-0.)); +#87 = PCURVE('',#88,#93); +#88 = PLANE('',#89); +#89 = AXIS2_PLACEMENT_3D('',#90,#91,#92); +#90 = CARTESIAN_POINT('',(-1.E-17,-0.,0.)); +#91 = DIRECTION('',(0.,0.,1.)); +#92 = DIRECTION('',(1.,0.,-0.)); +#93 = DEFINITIONAL_REPRESENTATION('',(#94),#98); +#94 = CIRCLE('',#95,0.1905); +#95 = AXIS2_PLACEMENT_2D('',#96,#97); +#96 = CARTESIAN_POINT('',(1.E-17,0.)); +#97 = DIRECTION('',(1.,0.)); +#98 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#99 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#103)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#100,#101,#102)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#100 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#101 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#102 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#103 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#100, + 'distance_accuracy_value','confusion accuracy'); +#104 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#105,#107); +#105 = ( REPRESENTATION_RELATIONSHIP('','',#71,#44) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#106) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#106 = ITEM_DEFINED_TRANSFORMATION('','',#11,#45); +#107 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#108 + ); +#108 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('1','Conductor_0','',#39,#66,$); +#109 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#68)); +#110 = SHAPE_DEFINITION_REPRESENTATION(#111,#117); +#111 = PRODUCT_DEFINITION_SHAPE('','',#112); +#112 = PRODUCT_DEFINITION('design','',#113,#116); +#113 = PRODUCT_DEFINITION_FORMATION('','',#114); +#114 = PRODUCT('Dielectric_0','Dielectric_0','',(#115)); +#115 = PRODUCT_CONTEXT('',#2,'mechanical'); +#116 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#117 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#118),#145); +#118 = SHELL_BASED_SURFACE_MODEL('',(#119)); +#119 = OPEN_SHELL('',(#120)); +#120 = ADVANCED_FACE('',(#121),#134,.T.); +#121 = FACE_BOUND('',#122,.T.); +#122 = EDGE_LOOP('',(#123)); +#123 = ORIENTED_EDGE('',*,*,#124,.T.); +#124 = EDGE_CURVE('',#125,#125,#127,.T.); +#125 = VERTEX_POINT('',#126); +#126 = CARTESIAN_POINT('',(0.4445,0.,0.)); +#127 = SURFACE_CURVE('',#128,(#133),.PCURVE_S1.); +#128 = CIRCLE('',#129,0.4445); +#129 = AXIS2_PLACEMENT_3D('',#130,#131,#132); +#130 = CARTESIAN_POINT('',(0.,0.,0.)); +#131 = DIRECTION('',(0.,0.,1.)); +#132 = DIRECTION('',(1.,0.,-0.)); +#133 = PCURVE('',#134,#139); +#134 = PLANE('',#135); +#135 = AXIS2_PLACEMENT_3D('',#136,#137,#138); +#136 = CARTESIAN_POINT('',(-1.E-17,1.E-17,0.)); +#137 = DIRECTION('',(0.,0.,1.)); +#138 = DIRECTION('',(1.,0.,-0.)); +#139 = DEFINITIONAL_REPRESENTATION('',(#140),#144); +#140 = CIRCLE('',#141,0.4445); +#141 = AXIS2_PLACEMENT_2D('',#142,#143); +#142 = CARTESIAN_POINT('',(1.E-17,-1.E-17)); +#143 = DIRECTION('',(1.,0.)); +#144 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#145 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#149)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#146,#147,#148)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#146 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#147 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#148 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#149 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#146, + 'distance_accuracy_value','confusion accuracy'); +#150 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#151,#153); +#151 = ( REPRESENTATION_RELATIONSHIP('','',#117,#44) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#152) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#152 = ITEM_DEFINED_TRANSFORMATION('','',#11,#49); +#153 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#154 + ); +#154 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('2','Dielectric_0','',#39,#112,$); +#155 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#114)); +#156 = SHAPE_DEFINITION_REPRESENTATION(#157,#163); +#157 = PRODUCT_DEFINITION_SHAPE('','',#158); +#158 = PRODUCT_DEFINITION('design','',#159,#162); +#159 = PRODUCT_DEFINITION_FORMATION('','',#160); +#160 = PRODUCT('solid_wire_001','solid_wire_001','',(#161)); +#161 = PRODUCT_CONTEXT('',#2,'mechanical'); +#162 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#163 = SHAPE_REPRESENTATION('',(#11,#164,#168),#172); +#164 = AXIS2_PLACEMENT_3D('',#165,#166,#167); +#165 = CARTESIAN_POINT('',(1.27,0.,0.)); +#166 = DIRECTION('',(0.,0.,1.)); +#167 = DIRECTION('',(1.,0.,0.)); +#168 = AXIS2_PLACEMENT_3D('',#169,#170,#171); +#169 = CARTESIAN_POINT('',(1.27,0.,0.)); +#170 = DIRECTION('',(0.,0.,1.)); +#171 = DIRECTION('',(1.,0.,0.)); +#172 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#176)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#173,#174,#175)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#173 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#174 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#175 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#176 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#173, + 'distance_accuracy_value','confusion accuracy'); +#177 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#178,#180); +#178 = ( REPRESENTATION_RELATIONSHIP('','',#163,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#179) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#179 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); +#180 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#181 + ); +#181 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('6','solid_wire_001','',#5,#158,$ + ); +#182 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#160)); +#183 = SHAPE_DEFINITION_REPRESENTATION(#184,#190); +#184 = PRODUCT_DEFINITION_SHAPE('','',#185); +#185 = PRODUCT_DEFINITION('design','',#186,#189); +#186 = PRODUCT_DEFINITION_FORMATION('','',#187); +#187 = PRODUCT('Conductor_001','Conductor_001','',(#188)); +#188 = PRODUCT_CONTEXT('',#2,'mechanical'); +#189 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#190 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#191),#218); +#191 = SHELL_BASED_SURFACE_MODEL('',(#192)); +#192 = OPEN_SHELL('',(#193)); +#193 = ADVANCED_FACE('',(#194),#207,.T.); +#194 = FACE_BOUND('',#195,.T.); +#195 = EDGE_LOOP('',(#196)); +#196 = ORIENTED_EDGE('',*,*,#197,.T.); +#197 = EDGE_CURVE('',#198,#198,#200,.T.); +#198 = VERTEX_POINT('',#199); +#199 = CARTESIAN_POINT('',(0.1905,0.,0.)); +#200 = SURFACE_CURVE('',#201,(#206),.PCURVE_S1.); +#201 = CIRCLE('',#202,0.1905); +#202 = AXIS2_PLACEMENT_3D('',#203,#204,#205); +#203 = CARTESIAN_POINT('',(0.,0.,0.)); +#204 = DIRECTION('',(0.,0.,1.)); +#205 = DIRECTION('',(1.,0.,-0.)); +#206 = PCURVE('',#207,#212); +#207 = PLANE('',#208); +#208 = AXIS2_PLACEMENT_3D('',#209,#210,#211); +#209 = CARTESIAN_POINT('',(-1.E-17,-0.,0.)); +#210 = DIRECTION('',(0.,0.,1.)); +#211 = DIRECTION('',(1.,0.,-0.)); +#212 = DEFINITIONAL_REPRESENTATION('',(#213),#217); +#213 = CIRCLE('',#214,0.1905); +#214 = AXIS2_PLACEMENT_2D('',#215,#216); +#215 = CARTESIAN_POINT('',(1.E-17,0.)); +#216 = DIRECTION('',(1.,0.)); +#217 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#218 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#222)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#219,#220,#221)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#219 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#220 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#221 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#222 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#219, + 'distance_accuracy_value','confusion accuracy'); +#223 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#224,#226); +#224 = ( REPRESENTATION_RELATIONSHIP('','',#190,#163) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#225) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#225 = ITEM_DEFINED_TRANSFORMATION('','',#11,#164); +#226 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#227 + ); +#227 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('4','Conductor_001','',#158,#185,$ + ); +#228 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#187)); +#229 = SHAPE_DEFINITION_REPRESENTATION(#230,#236); +#230 = PRODUCT_DEFINITION_SHAPE('','',#231); +#231 = PRODUCT_DEFINITION('design','',#232,#235); +#232 = PRODUCT_DEFINITION_FORMATION('','',#233); +#233 = PRODUCT('Dielectric_001','Dielectric_001','',(#234)); +#234 = PRODUCT_CONTEXT('',#2,'mechanical'); +#235 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#236 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#237),#264); +#237 = SHELL_BASED_SURFACE_MODEL('',(#238)); +#238 = OPEN_SHELL('',(#239)); +#239 = ADVANCED_FACE('',(#240),#253,.T.); +#240 = FACE_BOUND('',#241,.T.); +#241 = EDGE_LOOP('',(#242)); +#242 = ORIENTED_EDGE('',*,*,#243,.T.); +#243 = EDGE_CURVE('',#244,#244,#246,.T.); +#244 = VERTEX_POINT('',#245); +#245 = CARTESIAN_POINT('',(0.4445,0.,0.)); +#246 = SURFACE_CURVE('',#247,(#252),.PCURVE_S1.); +#247 = CIRCLE('',#248,0.4445); +#248 = AXIS2_PLACEMENT_3D('',#249,#250,#251); +#249 = CARTESIAN_POINT('',(0.,0.,0.)); +#250 = DIRECTION('',(0.,0.,1.)); +#251 = DIRECTION('',(1.,0.,-0.)); +#252 = PCURVE('',#253,#258); +#253 = PLANE('',#254); +#254 = AXIS2_PLACEMENT_3D('',#255,#256,#257); +#255 = CARTESIAN_POINT('',(-1.E-17,1.E-17,0.)); +#256 = DIRECTION('',(0.,0.,1.)); +#257 = DIRECTION('',(1.,0.,-0.)); +#258 = DEFINITIONAL_REPRESENTATION('',(#259),#263); +#259 = CIRCLE('',#260,0.4445); +#260 = AXIS2_PLACEMENT_2D('',#261,#262); +#261 = CARTESIAN_POINT('',(1.E-17,-1.E-17)); +#262 = DIRECTION('',(1.,0.)); +#263 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#264 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#268)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#265,#266,#267)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#265 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#266 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#267 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#268 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#265, + 'distance_accuracy_value','confusion accuracy'); +#269 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#270,#272); +#270 = ( REPRESENTATION_RELATIONSHIP('','',#236,#163) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#271) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#271 = ITEM_DEFINED_TRANSFORMATION('','',#11,#168); +#272 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#273 + ); +#273 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('5','Dielectric_001','',#158,#231, + $); +#274 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#233)); +#275 = SHAPE_DEFINITION_REPRESENTATION(#276,#282); +#276 = PRODUCT_DEFINITION_SHAPE('','',#277); +#277 = PRODUCT_DEFINITION('design','',#278,#281); +#278 = PRODUCT_DEFINITION_FORMATION('','',#279); +#279 = PRODUCT('solid_wire_002','solid_wire_002','',(#280)); +#280 = PRODUCT_CONTEXT('',#2,'mechanical'); +#281 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#282 = SHAPE_REPRESENTATION('',(#11,#283,#287),#291); +#283 = AXIS2_PLACEMENT_3D('',#284,#285,#286); +#284 = CARTESIAN_POINT('',(2.54,0.,0.)); +#285 = DIRECTION('',(0.,0.,1.)); +#286 = DIRECTION('',(1.,0.,0.)); +#287 = AXIS2_PLACEMENT_3D('',#288,#289,#290); +#288 = CARTESIAN_POINT('',(2.54,0.,0.)); +#289 = DIRECTION('',(0.,0.,1.)); +#290 = DIRECTION('',(1.,0.,0.)); +#291 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#295)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#292,#293,#294)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#292 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#293 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#294 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#295 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#292, + 'distance_accuracy_value','confusion accuracy'); +#296 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#297,#299); +#297 = ( REPRESENTATION_RELATIONSHIP('','',#282,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#298) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#298 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); +#299 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#300 + ); +#300 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('9','solid_wire_002','',#5,#277,$ + ); +#301 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#279)); +#302 = SHAPE_DEFINITION_REPRESENTATION(#303,#309); +#303 = PRODUCT_DEFINITION_SHAPE('','',#304); +#304 = PRODUCT_DEFINITION('design','',#305,#308); +#305 = PRODUCT_DEFINITION_FORMATION('','',#306); +#306 = PRODUCT('Conductor_002','Conductor_002','',(#307)); +#307 = PRODUCT_CONTEXT('',#2,'mechanical'); +#308 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#309 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#310),#337); +#310 = SHELL_BASED_SURFACE_MODEL('',(#311)); +#311 = OPEN_SHELL('',(#312)); +#312 = ADVANCED_FACE('',(#313),#326,.T.); +#313 = FACE_BOUND('',#314,.T.); +#314 = EDGE_LOOP('',(#315)); +#315 = ORIENTED_EDGE('',*,*,#316,.T.); +#316 = EDGE_CURVE('',#317,#317,#319,.T.); +#317 = VERTEX_POINT('',#318); +#318 = CARTESIAN_POINT('',(0.1905,0.,0.)); +#319 = SURFACE_CURVE('',#320,(#325),.PCURVE_S1.); +#320 = CIRCLE('',#321,0.1905); +#321 = AXIS2_PLACEMENT_3D('',#322,#323,#324); +#322 = CARTESIAN_POINT('',(0.,0.,0.)); +#323 = DIRECTION('',(0.,0.,1.)); +#324 = DIRECTION('',(1.,0.,-0.)); +#325 = PCURVE('',#326,#331); +#326 = PLANE('',#327); +#327 = AXIS2_PLACEMENT_3D('',#328,#329,#330); +#328 = CARTESIAN_POINT('',(-1.E-17,-0.,0.)); +#329 = DIRECTION('',(0.,0.,1.)); +#330 = DIRECTION('',(1.,0.,-0.)); +#331 = DEFINITIONAL_REPRESENTATION('',(#332),#336); +#332 = CIRCLE('',#333,0.1905); +#333 = AXIS2_PLACEMENT_2D('',#334,#335); +#334 = CARTESIAN_POINT('',(1.E-17,0.)); +#335 = DIRECTION('',(1.,0.)); +#336 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#337 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#341)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#338,#339,#340)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#338 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#339 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#340 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#341 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#338, + 'distance_accuracy_value','confusion accuracy'); +#342 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#343,#345); +#343 = ( REPRESENTATION_RELATIONSHIP('','',#309,#282) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#344) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#344 = ITEM_DEFINED_TRANSFORMATION('','',#11,#283); +#345 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#346 + ); +#346 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('7','Conductor_002','',#277,#304,$ + ); +#347 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#306)); +#348 = SHAPE_DEFINITION_REPRESENTATION(#349,#355); +#349 = PRODUCT_DEFINITION_SHAPE('','',#350); +#350 = PRODUCT_DEFINITION('design','',#351,#354); +#351 = PRODUCT_DEFINITION_FORMATION('','',#352); +#352 = PRODUCT('Dielectric_002','Dielectric_002','',(#353)); +#353 = PRODUCT_CONTEXT('',#2,'mechanical'); +#354 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#355 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#356),#383); +#356 = SHELL_BASED_SURFACE_MODEL('',(#357)); +#357 = OPEN_SHELL('',(#358)); +#358 = ADVANCED_FACE('',(#359),#372,.T.); +#359 = FACE_BOUND('',#360,.T.); +#360 = EDGE_LOOP('',(#361)); +#361 = ORIENTED_EDGE('',*,*,#362,.T.); +#362 = EDGE_CURVE('',#363,#363,#365,.T.); +#363 = VERTEX_POINT('',#364); +#364 = CARTESIAN_POINT('',(0.4445,0.,0.)); +#365 = SURFACE_CURVE('',#366,(#371),.PCURVE_S1.); +#366 = CIRCLE('',#367,0.4445); +#367 = AXIS2_PLACEMENT_3D('',#368,#369,#370); +#368 = CARTESIAN_POINT('',(0.,0.,0.)); +#369 = DIRECTION('',(0.,0.,1.)); +#370 = DIRECTION('',(1.,0.,-0.)); +#371 = PCURVE('',#372,#377); +#372 = PLANE('',#373); +#373 = AXIS2_PLACEMENT_3D('',#374,#375,#376); +#374 = CARTESIAN_POINT('',(-1.E-17,1.E-17,0.)); +#375 = DIRECTION('',(0.,0.,1.)); +#376 = DIRECTION('',(1.,0.,-0.)); +#377 = DEFINITIONAL_REPRESENTATION('',(#378),#382); +#378 = CIRCLE('',#379,0.4445); +#379 = AXIS2_PLACEMENT_2D('',#380,#381); +#380 = CARTESIAN_POINT('',(1.E-17,-1.E-17)); +#381 = DIRECTION('',(1.,0.)); +#382 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#383 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#387)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#384,#385,#386)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#384 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#385 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#386 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#387 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#384, + 'distance_accuracy_value','confusion accuracy'); +#388 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#389,#391); +#389 = ( REPRESENTATION_RELATIONSHIP('','',#355,#282) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#390) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#390 = ITEM_DEFINED_TRANSFORMATION('','',#11,#287); +#391 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#392 + ); +#392 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('8','Dielectric_002','',#277,#350, + $); +#393 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#352)); +#394 = SHAPE_DEFINITION_REPRESENTATION(#395,#401); +#395 = PRODUCT_DEFINITION_SHAPE('','',#396); +#396 = PRODUCT_DEFINITION('design','',#397,#400); +#397 = PRODUCT_DEFINITION_FORMATION('','',#398); +#398 = PRODUCT('OpenRegion_0','OpenRegion_0','',(#399)); +#399 = PRODUCT_CONTEXT('',#2,'mechanical'); +#400 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#401 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#402),#429); +#402 = SHELL_BASED_SURFACE_MODEL('',(#403)); +#403 = OPEN_SHELL('',(#404)); +#404 = ADVANCED_FACE('',(#405),#418,.T.); +#405 = FACE_BOUND('',#406,.T.); +#406 = EDGE_LOOP('',(#407)); +#407 = ORIENTED_EDGE('',*,*,#408,.T.); +#408 = EDGE_CURVE('',#409,#409,#411,.T.); +#409 = VERTEX_POINT('',#410); +#410 = CARTESIAN_POINT('',(5.,0.,0.)); +#411 = SURFACE_CURVE('',#412,(#417),.PCURVE_S1.); +#412 = CIRCLE('',#413,5.); +#413 = AXIS2_PLACEMENT_3D('',#414,#415,#416); +#414 = CARTESIAN_POINT('',(0.,0.,0.)); +#415 = DIRECTION('',(0.,0.,1.)); +#416 = DIRECTION('',(1.,0.,-0.)); +#417 = PCURVE('',#418,#423); +#418 = PLANE('',#419); +#419 = AXIS2_PLACEMENT_3D('',#420,#421,#422); +#420 = CARTESIAN_POINT('',(-2.7E-16,7.E-17,0.)); +#421 = DIRECTION('',(0.,0.,1.)); +#422 = DIRECTION('',(1.,0.,-0.)); +#423 = DEFINITIONAL_REPRESENTATION('',(#424),#428); +#424 = CIRCLE('',#425,5.); +#425 = AXIS2_PLACEMENT_2D('',#426,#427); +#426 = CARTESIAN_POINT('',(2.7E-16,-7.E-17)); +#427 = DIRECTION('',(1.,0.)); +#428 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#429 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#433)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#430,#431,#432)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#430 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#431 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#432 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#433 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#430, + 'distance_accuracy_value','confusion accuracy'); +#434 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#435,#437); +#435 = ( REPRESENTATION_RELATIONSHIP('','',#401,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#436) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#436 = ITEM_DEFINED_TRANSFORMATION('','',#11,#27); +#437 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#438 + ); +#438 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('10','OpenRegion_0','',#5,#396,$); +#439 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#398)); +#440 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#441) + ,#383); +#441 = STYLED_ITEM('color',(#442),#358); +#442 = PRESENTATION_STYLE_ASSIGNMENT((#443,#451)); +#443 = SURFACE_STYLE_USAGE(.BOTH.,#444); +#444 = SURFACE_SIDE_STYLE('',(#445,#449)); +#445 = SURFACE_STYLE_FILL_AREA(#446); +#446 = FILL_AREA_STYLE('',(#447)); +#447 = FILL_AREA_STYLE_COLOUR('',#448); +#448 = DRAUGHTING_PRE_DEFINED_COLOUR('red'); +#449 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#448,( + #450)); +#450 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#451 = CURVE_STYLE('',#452,POSITIVE_LENGTH_MEASURE(0.1),#453); +#452 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#453 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, + 9.803921802644E-02); +#454 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#455) + ,#99); +#455 = STYLED_ITEM('color',(#456),#74); +#456 = PRESENTATION_STYLE_ASSIGNMENT((#457,#463)); +#457 = SURFACE_STYLE_USAGE(.BOTH.,#458); +#458 = SURFACE_SIDE_STYLE('',(#459)); +#459 = SURFACE_STYLE_FILL_AREA(#460); +#460 = FILL_AREA_STYLE('',(#461)); +#461 = FILL_AREA_STYLE_COLOUR('',#462); +#462 = COLOUR_RGB('',1.,0.333333345507,0.); +#463 = CURVE_STYLE('',#464,POSITIVE_LENGTH_MEASURE(0.1),#453); +#464 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#465 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#466) + ,#264); +#466 = STYLED_ITEM('color',(#467),#239); +#467 = PRESENTATION_STYLE_ASSIGNMENT((#468,#475)); +#468 = SURFACE_STYLE_USAGE(.BOTH.,#469); +#469 = SURFACE_SIDE_STYLE('',(#470,#473)); +#470 = SURFACE_STYLE_FILL_AREA(#471); +#471 = FILL_AREA_STYLE('',(#472)); +#472 = FILL_AREA_STYLE_COLOUR('',#448); +#473 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#448,( + #474)); +#474 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#475 = CURVE_STYLE('',#476,POSITIVE_LENGTH_MEASURE(0.1),#453); +#476 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#477 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#478) + ,#429); +#478 = STYLED_ITEM('color',(#479),#404); +#479 = PRESENTATION_STYLE_ASSIGNMENT((#480,#486)); +#480 = SURFACE_STYLE_USAGE(.BOTH.,#481); +#481 = SURFACE_SIDE_STYLE('',(#482)); +#482 = SURFACE_STYLE_FILL_AREA(#483); +#483 = FILL_AREA_STYLE('',(#484)); +#484 = FILL_AREA_STYLE_COLOUR('',#485); +#485 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); +#486 = CURVE_STYLE('',#487,POSITIVE_LENGTH_MEASURE(0.1),#453); +#487 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#488 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#489) + ,#218); +#489 = STYLED_ITEM('color',(#490),#193); +#490 = PRESENTATION_STYLE_ASSIGNMENT((#491,#496)); +#491 = SURFACE_STYLE_USAGE(.BOTH.,#492); +#492 = SURFACE_SIDE_STYLE('',(#493)); +#493 = SURFACE_STYLE_FILL_AREA(#494); +#494 = FILL_AREA_STYLE('',(#495)); +#495 = FILL_AREA_STYLE_COLOUR('',#462); +#496 = CURVE_STYLE('',#497,POSITIVE_LENGTH_MEASURE(0.1),#453); +#497 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#498 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#499) + ,#337); +#499 = STYLED_ITEM('color',(#500),#312); +#500 = PRESENTATION_STYLE_ASSIGNMENT((#501,#506)); +#501 = SURFACE_STYLE_USAGE(.BOTH.,#502); +#502 = SURFACE_SIDE_STYLE('',(#503)); +#503 = SURFACE_STYLE_FILL_AREA(#504); +#504 = FILL_AREA_STYLE('',(#505)); +#505 = FILL_AREA_STYLE_COLOUR('',#462); +#506 = CURVE_STYLE('',#507,POSITIVE_LENGTH_MEASURE(0.1),#453); +#507 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#508 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#509) + ,#145); +#509 = STYLED_ITEM('color',(#510),#120); +#510 = PRESENTATION_STYLE_ASSIGNMENT((#511,#518)); +#511 = SURFACE_STYLE_USAGE(.BOTH.,#512); +#512 = SURFACE_SIDE_STYLE('',(#513,#516)); +#513 = SURFACE_STYLE_FILL_AREA(#514); +#514 = FILL_AREA_STYLE('',(#515)); +#515 = FILL_AREA_STYLE_COLOUR('',#448); +#516 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#448,( + #517)); +#517 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#518 = CURVE_STYLE('',#519,POSITIVE_LENGTH_MEASURE(0.1),#453); +#519 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +ENDSEC; +END-ISO-10303-21; diff --git a/testData/two_wires_coax/two_wires_coax.FCStd b/testData/two_wires_coax/two_wires_coax.FCStd new file mode 100644 index 0000000000000000000000000000000000000000..4e82b12aa2a364706aac67f151e6c155454acef0 GIT binary patch literal 5952 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 Date: Wed, 9 Aug 2023 15:18:27 +0200 Subject: [PATCH 003/134] Fixes test organization --- .gitignore | 4 +++- README.md | 3 ++- src/mesher.py | 6 +++--- test/{test_gmshWrapper.py => test_mesher.py} | 7 ++++++- 4 files changed, 14 insertions(+), 6 deletions(-) rename test/{test_gmshWrapper.py => test_mesher.py} (98%) diff --git a/.gitignore b/.gitignore index 1ee5835..044e2db 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ *.FCStd1 -*.pyc \ No newline at end of file +*.pyc +.vscode/settings.json +*.msh diff --git a/README.md b/README.md index 1d02365..2c636fb 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ # step2gmsh -Generates MFEM compatible meshes from step files. + +Generates MFEM compatible meshes from step files generated with FreeCAD. diff --git a/src/mesher.py b/src/mesher.py index 4932b66..ca85112 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -1,5 +1,4 @@ import gmsh -import os import sys from collections import defaultdict @@ -43,7 +42,8 @@ def get_surfaces(shapes, label: str): def meshFromStep( folder: str, case_name: str, - meshing_options=DEFAULT_MESHING_OPTIONS): + meshing_options=DEFAULT_MESHING_OPTIONS, + runGUI: bool = False): gmsh.initialize() gmsh.model.add(case_name) @@ -113,7 +113,7 @@ def meshFromStep( # Exporting gmsh.write(case_name + '.msh') - if '-nopopup' not in sys.argv: + if runGUI: gmsh.fltk.run() gmsh.finalize() diff --git a/test/test_gmshWrapper.py b/test/test_mesher.py similarity index 98% rename from test/test_gmshWrapper.py rename to test/test_mesher.py index 46efbc6..b970fdd 100644 --- a/test/test_gmshWrapper.py +++ b/test/test_mesher.py @@ -1,3 +1,6 @@ +import sys + +sys.path.insert(0,'.') from src.mesher import * import os @@ -34,9 +37,11 @@ def test_two_wires_coax(): def test_five_wires(): meshFromStep(testdata_path, 'five_wires') + def test_three_wires_ribbon(): meshFromStep(testdata_path, 'three_wires_ribbon') + def test_stepShapes_for_partially_filled_coax(): case_name = 'partially_filled_coax' @@ -70,6 +75,7 @@ def test_stepShapes_for_five_wires(): assert (len(stepShapes.pecs) == 6) assert (len(stepShapes.dielectrics) == 5) + def test_stepShapes_for_three_wires_ribbon(): case_name = 'three_wires_ribbon' @@ -86,4 +92,3 @@ def test_stepShapes_for_three_wires_ribbon(): assert (len(stepShapes.openRegion) == 1) assert (len(stepShapes.pecs) == 3) assert (len(stepShapes.dielectrics) == 3) - From e515185e569ebfc534b18cddbd7672349c869add Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Wed, 9 Aug 2023 15:20:48 +0200 Subject: [PATCH 004/134] Minor --- .github/workflows/tests.yml | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/workflows/tests.yml diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..af19086 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,36 @@ +name: "Tests" + +permissions: + actions: write + +on: + push: + branches: + - master + - dev + pull_request: + workflow_dispatch: + +jobs: + builds-and-tests: + strategy: + matrix: + os: [windows-latest] + + name: ${{ matrix.os }}-${{ matrix.target }} + + runs-on: ${{ matrix.os }} + + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.11.0 + with: + access_token: ${{ github.token }} + + # Checkout + - name: checkout (Windows) + uses: actions/checkout@v3 + with: + path: ${{ env.PULMTLN_TOP_DIR }} + + \ No newline at end of file From f99b4c4157396817d768d104b4ab95c781993da4 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Wed, 9 Aug 2023 15:46:45 +0200 Subject: [PATCH 005/134] token --- .github/workflows/tests.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index af19086..2375628 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -17,7 +17,7 @@ jobs: matrix: os: [windows-latest] - name: ${{ matrix.os }}-${{ matrix.target }} + name: ${{ matrix.os }} runs-on: ${{ matrix.os }} @@ -31,6 +31,7 @@ jobs: - name: checkout (Windows) uses: actions/checkout@v3 with: - path: ${{ env.PULMTLN_TOP_DIR }} + path: lmdiazangulo/step2gmsh + token: ${{ secrets.step2gmsh }} \ No newline at end of file From 719790d2f6fc5c588aeb2dd917b32435f7ed4523 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Wed, 9 Aug 2023 15:49:01 +0200 Subject: [PATCH 006/134] token --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 2375628..c5b9e52 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -32,6 +32,6 @@ jobs: uses: actions/checkout@v3 with: path: lmdiazangulo/step2gmsh - token: ${{ secrets.step2gmsh }} + token: ${{ secrets.STEP2GMSH }} \ No newline at end of file From 68c5e291e74bfe1a04d810ffe064cf7db4af2ee4 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Wed, 9 Aug 2023 16:03:41 +0200 Subject: [PATCH 007/134] Testing keys --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c5b9e52..8543073 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -32,6 +32,6 @@ jobs: uses: actions/checkout@v3 with: path: lmdiazangulo/step2gmsh - token: ${{ secrets.STEP2GMSH }} + token: ${{ secrets.STEP2GMSH_SSH_KEY }} \ No newline at end of file From 57217f0bc005123569b0c59a4a88d0fc38f48f1b Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Wed, 9 Aug 2023 16:08:07 +0200 Subject: [PATCH 008/134] Retrying --- .github/workflows/tests.yml | 2 +- step2gmsh_ssh | 7 +++++++ step2gmsh_ssh.pub | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 step2gmsh_ssh create mode 100644 step2gmsh_ssh.pub diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 8543073..2931615 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -32,6 +32,6 @@ jobs: uses: actions/checkout@v3 with: path: lmdiazangulo/step2gmsh - token: ${{ secrets.STEP2GMSH_SSH_KEY }} + ssh-key: ${{ secrets.STEP2GMSH_SSH_KEY }} \ No newline at end of file diff --git a/step2gmsh_ssh b/step2gmsh_ssh new file mode 100644 index 0000000..3e8774c --- /dev/null +++ b/step2gmsh_ssh @@ -0,0 +1,7 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW +QyNTUxOQAAACAdQ9eDFYSBY9DeWE3FW1nD1rMNIyiYkjKvjlTkXSaqDAAAAJCfEtRpnxLU +aQAAAAtzc2gtZWQyNTUxOQAAACAdQ9eDFYSBY9DeWE3FW1nD1rMNIyiYkjKvjlTkXSaqDA +AAAED1H3JwWRJW6M+YwJS+9mNodNbEKHW4fBOJV94R1DO4OR1D14MVhIFj0N5YTcVbWcPW +sw0jKJiSMq+OVORdJqoMAAAABmxtQHQxNQECAwQFBgc= +-----END OPENSSH PRIVATE KEY----- diff --git a/step2gmsh_ssh.pub b/step2gmsh_ssh.pub new file mode 100644 index 0000000..f04d75b --- /dev/null +++ b/step2gmsh_ssh.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB1D14MVhIFj0N5YTcVbWcPWsw0jKJiSMq+OVORdJqoM lm@t15 From c720fcc585fab2dda389ed537cbe2deed556de76 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Wed, 9 Aug 2023 16:44:09 +0200 Subject: [PATCH 009/134] Adding tests to CI --- .github/workflows/tests.yml | 17 +++++++++++++---- requirements.txt | 1 + test/__init__.py | 0 3 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 requirements.txt create mode 100644 test/__init__.py diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 2931615..50ddd80 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -26,12 +26,21 @@ jobs: uses: styfle/cancel-workflow-action@0.11.0 with: access_token: ${{ github.token }} + + - name: Setup python + uses: actions/setup-python@v4 + with: + python-version: '3.x' + + - name: Installing dependencies + run: python3 -m pip install -r requirements.txt - # Checkout - - name: checkout (Windows) + - name: Checkout uses: actions/checkout@v3 with: path: lmdiazangulo/step2gmsh ssh-key: ${{ secrets.STEP2GMSH_SSH_KEY }} - - \ No newline at end of file + + - name: Run tests + run: python -m pytest step2gmsh/test/test_*.py + \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..0ee48d9 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +gmsh >= 4.11 \ No newline at end of file diff --git a/test/__init__.py b/test/__init__.py new file mode 100644 index 0000000..e69de29 From 520a94384159161bbc25bb7cefd30b497587da62 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Wed, 9 Aug 2023 16:47:38 +0200 Subject: [PATCH 010/134] Changing order --- .github/workflows/tests.yml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 50ddd80..b3af744 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -11,6 +11,9 @@ on: pull_request: workflow_dispatch: +env: + STEP2GMSH_TOP_DIR: step2gmsh + jobs: builds-and-tests: strategy: @@ -32,15 +35,15 @@ jobs: with: python-version: '3.x' - - name: Installing dependencies - run: python3 -m pip install -r requirements.txt - - name: Checkout uses: actions/checkout@v3 with: - path: lmdiazangulo/step2gmsh + path: lmdiazangulo/${{ env.STEP2GMSH_TOP_DIR }} ssh-key: ${{ secrets.STEP2GMSH_SSH_KEY }} + + - name: Installing dependencies + run: python3 -m pip install -r ${{env.STEP2GMSH_TOP_DIR}}/requirements.txt - name: Run tests - run: python -m pytest step2gmsh/test/test_*.py + run: python -m pytest ${{env.STEP2GMSH_TOP_DIR}}/test/test_*.py \ No newline at end of file From c3079780522a657ddfbc60a46cea35b66959d3c5 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Wed, 9 Aug 2023 16:53:06 +0200 Subject: [PATCH 011/134] Fixing --- .github/workflows/tests.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index b3af744..c40cf08 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -38,7 +38,6 @@ jobs: - name: Checkout uses: actions/checkout@v3 with: - path: lmdiazangulo/${{ env.STEP2GMSH_TOP_DIR }} ssh-key: ${{ secrets.STEP2GMSH_SSH_KEY }} - name: Installing dependencies From e55cdbe4fe2cd4834213e0ddb013a2fd4ebdcb4a Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Wed, 9 Aug 2023 16:55:02 +0200 Subject: [PATCH 012/134] Minor --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c40cf08..994ceef 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -38,7 +38,7 @@ jobs: - name: Checkout uses: actions/checkout@v3 with: - ssh-key: ${{ secrets.STEP2GMSH_SSH_KEY }} + ssh-key: ${{secrets.STEP2GMSH_SSH_KEY}} - name: Installing dependencies run: python3 -m pip install -r ${{env.STEP2GMSH_TOP_DIR}}/requirements.txt From 784b44be6cafe498064e9194086b26a98c0fcd09 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Wed, 9 Aug 2023 17:00:52 +0200 Subject: [PATCH 013/134] minor2 --- .github/workflows/tests.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 994ceef..6ac84dd 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -41,7 +41,8 @@ jobs: ssh-key: ${{secrets.STEP2GMSH_SSH_KEY}} - name: Installing dependencies - run: python3 -m pip install -r ${{env.STEP2GMSH_TOP_DIR}}/requirements.txt + run: ls + #run: python3 -m pip install -r ${{env.STEP2GMSH_TOP_DIR}}/requirements.txt - name: Run tests run: python -m pytest ${{env.STEP2GMSH_TOP_DIR}}/test/test_*.py From 9d702cf4c795d5d840467c150b756e0a0cc93e99 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Wed, 9 Aug 2023 17:02:31 +0200 Subject: [PATCH 014/134] Minor3 --- .github/workflows/tests.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 6ac84dd..fae0606 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -41,9 +41,8 @@ jobs: ssh-key: ${{secrets.STEP2GMSH_SSH_KEY}} - name: Installing dependencies - run: ls - #run: python3 -m pip install -r ${{env.STEP2GMSH_TOP_DIR}}/requirements.txt + run: python3 -m pip install -r requirements.txt - name: Run tests - run: python -m pytest ${{env.STEP2GMSH_TOP_DIR}}/test/test_*.py + run: python -m pytest test/test_*.py \ No newline at end of file From 2a93f0ca267bacefa20b491ebb278de4fdf96832 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Wed, 9 Aug 2023 17:04:11 +0200 Subject: [PATCH 015/134] Fixing requirements --- .github/workflows/tests.yml | 2 +- requirements.txt | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index fae0606..7f9875b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -44,5 +44,5 @@ jobs: run: python3 -m pip install -r requirements.txt - name: Run tests - run: python -m pytest test/test_*.py + run: python3 -m pytest test/test_*.py \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 0ee48d9..6854cf9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,2 @@ -gmsh >= 4.11 \ No newline at end of file +gmsh >= 4.11 +pytest >= 7.3 \ No newline at end of file From f6df7828890d2261e407514e392cb8ea3f7f8a65 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Wed, 9 Aug 2023 17:18:41 +0200 Subject: [PATCH 016/134] Fix test discovery --- .github/workflows/tests.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 7f9875b..05cdcd0 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -34,6 +34,7 @@ jobs: uses: actions/setup-python@v4 with: python-version: '3.x' + cache: pip - name: Checkout uses: actions/checkout@v3 @@ -44,5 +45,5 @@ jobs: run: python3 -m pip install -r requirements.txt - name: Run tests - run: python3 -m pytest test/test_*.py + run: python3 -m pytest test/ \ No newline at end of file From 3a2c0fec5da25a1e7f8046990ae51c8e122195ff Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Wed, 9 Aug 2023 17:19:36 +0200 Subject: [PATCH 017/134] Cache fix --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 05cdcd0..3729543 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -34,7 +34,7 @@ jobs: uses: actions/setup-python@v4 with: python-version: '3.x' - cache: pip + cache: 'pip' - name: Checkout uses: actions/checkout@v3 From d57a60d3699d27daf64edd48facd4a7770b715c2 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Wed, 9 Aug 2023 17:20:32 +0200 Subject: [PATCH 018/134] minor --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 3729543..aa3647c 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -34,7 +34,7 @@ jobs: uses: actions/setup-python@v4 with: python-version: '3.x' - cache: 'pip' + #cache: 'pip' - name: Checkout uses: actions/checkout@v3 From 4b2084433c8f05bf3a4dc840930e20743f599cbc Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Wed, 9 Aug 2023 17:23:01 +0200 Subject: [PATCH 019/134] Testing cache --- .github/workflows/tests.yml | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index aa3647c..229a2e6 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -29,20 +29,18 @@ jobs: uses: styfle/cancel-workflow-action@0.11.0 with: access_token: ${{ github.token }} - - - name: Setup python - uses: actions/setup-python@v4 - with: - python-version: '3.x' - #cache: 'pip' - + - name: Checkout uses: actions/checkout@v3 with: ssh-key: ${{secrets.STEP2GMSH_SSH_KEY}} - - - name: Installing dependencies - run: python3 -m pip install -r requirements.txt + + - name: Setup python + uses: actions/setup-python@v4 + with: + python-version: '3.x' + cache: 'pip' + - run: pip install -r requirements.txt - name: Run tests run: python3 -m pytest test/ From 6c3592324bd06900bd440641146b2f905cddafd4 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Wed, 9 Aug 2023 17:25:09 +0200 Subject: [PATCH 020/134] cache --- .github/workflows/tests.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 229a2e6..f89422f 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -40,7 +40,9 @@ jobs: with: python-version: '3.x' cache: 'pip' - - run: pip install -r requirements.txt + + - name: Install requirements + run: pip install -r requirements.txt - name: Run tests run: python3 -m pytest test/ From 92ce0b5af55499e258f6125a103dfa667e1370a9 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Wed, 9 Aug 2023 09:28:41 -0600 Subject: [PATCH 021/134] Adds Github action for testing * Initial commit * Fixes test organization * Minor * token * token * Testing keys * Retrying * Adding tests to CI * Changing order * Fixing * Minor * minor2 * Minor3 * Fixing requirements * Fix test discovery * Cache fix * minor * Testing cache * cache --- .github/workflows/builds-and-tests.yml | 35 + .github/workflows/tests.yml | 49 + .gitignore | 4 + README.md | 3 +- requirements.txt | 2 + src/__init__.py | 0 src/mesher.py | 119 + step2gmsh_ssh | 7 + step2gmsh_ssh.pub | 1 + test/__init__.py | 0 test/test_mesher.py | 94 + testData/empty_coax/empty_coax.FCStd | Bin 0 -> 5014 bytes testData/empty_coax/empty_coax.msh | 927 ++ testData/empty_coax/empty_coax.step | 178 + testData/five_wires/five_wires.FCStd | Bin 0 -> 21398 bytes testData/five_wires/five_wires.msh | 9950 +++++++++++++++++ testData/five_wires/five_wires.step | 1022 ++ .../partially_filled_coax.FCStd | Bin 0 -> 6080 bytes .../partially_filled_coax.msh | 1020 ++ .../partially_filled_coax.step | 256 + .../three_wires_ribbon.FCStd | Bin 0 -> 16510 bytes .../three_wires_ribbon.step | 635 ++ testData/two_wires_coax/two_wires_coax.FCStd | Bin 0 -> 5952 bytes testData/two_wires_coax/two_wires_coax.msh | 4167 +++++++ testData/two_wires_coax/two_wires_coax.step | 248 + 25 files changed, 18716 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/builds-and-tests.yml create mode 100644 .github/workflows/tests.yml create mode 100644 .gitignore create mode 100644 requirements.txt create mode 100644 src/__init__.py create mode 100644 src/mesher.py create mode 100644 step2gmsh_ssh create mode 100644 step2gmsh_ssh.pub create mode 100644 test/__init__.py create mode 100644 test/test_mesher.py create mode 100644 testData/empty_coax/empty_coax.FCStd create mode 100644 testData/empty_coax/empty_coax.msh create mode 100644 testData/empty_coax/empty_coax.step create mode 100644 testData/five_wires/five_wires.FCStd create mode 100644 testData/five_wires/five_wires.msh create mode 100644 testData/five_wires/five_wires.step create mode 100644 testData/partially_filled_coax/partially_filled_coax.FCStd create mode 100644 testData/partially_filled_coax/partially_filled_coax.msh create mode 100644 testData/partially_filled_coax/partially_filled_coax.step create mode 100644 testData/three_wires_ribbon/three_wires_ribbon.FCStd create mode 100644 testData/three_wires_ribbon/three_wires_ribbon.step create mode 100644 testData/two_wires_coax/two_wires_coax.FCStd create mode 100644 testData/two_wires_coax/two_wires_coax.msh create mode 100644 testData/two_wires_coax/two_wires_coax.step diff --git a/.github/workflows/builds-and-tests.yml b/.github/workflows/builds-and-tests.yml new file mode 100644 index 0000000..0aad79d --- /dev/null +++ b/.github/workflows/builds-and-tests.yml @@ -0,0 +1,35 @@ +name: "Tests" + +permissions: + actions: write + +on: + push: + branches: + - master + pull_request: + workflow_dispatch: + +jobs: + builds-and-tests: + strategy: + matrix: + os: [windows-latest] + + name: ${{ matrix.os }}-${{ matrix.target }} + + runs-on: ${{ matrix.os }} + + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.11.0 + with: + access_token: ${{ github.token }} + + # Checkout + - name: checkout (Windows) + uses: actions/checkout@v3 + with: + path: ${{ env.PULMTLN_TOP_DIR }} + + \ No newline at end of file diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..f89422f --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,49 @@ +name: "Tests" + +permissions: + actions: write + +on: + push: + branches: + - master + - dev + pull_request: + workflow_dispatch: + +env: + STEP2GMSH_TOP_DIR: step2gmsh + +jobs: + builds-and-tests: + strategy: + matrix: + os: [windows-latest] + + name: ${{ matrix.os }} + + runs-on: ${{ matrix.os }} + + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.11.0 + with: + access_token: ${{ github.token }} + + - name: Checkout + uses: actions/checkout@v3 + with: + ssh-key: ${{secrets.STEP2GMSH_SSH_KEY}} + + - name: Setup python + uses: actions/setup-python@v4 + with: + python-version: '3.x' + cache: 'pip' + + - name: Install requirements + run: pip install -r requirements.txt + + - name: Run tests + run: python3 -m pytest test/ + \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..044e2db --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.FCStd1 +*.pyc +.vscode/settings.json +*.msh diff --git a/README.md b/README.md index 1d02365..2c636fb 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ # step2gmsh -Generates MFEM compatible meshes from step files. + +Generates MFEM compatible meshes from step files generated with FreeCAD. diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..6854cf9 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +gmsh >= 4.11 +pytest >= 7.3 \ No newline at end of file diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/mesher.py b/src/mesher.py new file mode 100644 index 0000000..ca85112 --- /dev/null +++ b/src/mesher.py @@ -0,0 +1,119 @@ +import gmsh +import sys +from collections import defaultdict + +DEFAULT_MESHING_OPTIONS = { + "Mesh.MeshSizeFromCurvature": 25, + "Mesh.ElementOrder": 3, + "Mesh.ScalingFactor": 1e-3, + "General.DrawBoundingBoxes": 1, + "Mesh.SurfaceFaces": 1, + "Mesh.MeshSizeMax": 1 +} + +class StepShapes: + def __init__(self, shapes): + gmsh.model.occ.synchronize() + + self.allShapes = shapes + + self.openRegion = self.get_surfaces(shapes, "OpenRegion_") + self.pecs = self.get_surfaces(shapes, "Conductor_") + self.dielectrics = self.get_surfaces(shapes, "Dielectric_") + + @staticmethod + def getNumberFromEntityName(entity_name: str, label: str): + ini = entity_name.rindex(label) + len(label) + num = int(entity_name[ini:]) + return num + + @staticmethod + def get_surfaces(shapes, label: str): + surfaces = dict() + for s in shapes: + entity_name = gmsh.model.get_entity_name(*s) + if s[0] != 2 or label not in entity_name: + continue + num = StepShapes.getNumberFromEntityName(entity_name, label) + surfaces[num] = s + + return surfaces + +def meshFromStep( + folder: str, + case_name: str, + meshing_options=DEFAULT_MESHING_OPTIONS, + runGUI: bool = False): + + gmsh.initialize() + gmsh.model.add(case_name) + + # Importing from FreeCAD generated steps. STEP default units are mm. + stepShapes = StepShapes( + gmsh.model.occ.importShapes( + folder + case_name + '/' + case_name + '.step', + highestDimOnly=False + ) + ) + + # --- Geometry manipulation --- + # Creates global domain. + if len(stepShapes.openRegion) != 0: + region = stepShapes.openRegion[0] + isOpenProblem = True + else: + region = stepShapes.pecs[0] + isOpenProblem = False + + for num, surf in stepShapes.pecs.items(): + if num == 0 and isOpenProblem == False: + continue + for _, dielectric_surf in stepShapes.dielectrics.items(): + gmsh.model.occ.cut([dielectric_surf], [surf], removeTool=False) + gmsh.model.occ.cut([region], [surf], removeTool=False) + + for _, surf in stepShapes.dielectrics.items(): + gmsh.model.occ.cut([region], [surf], removeTool=False) + + gmsh.model.occ.synchronize() + + # Prepares PEC boundaries and removes surfaces. + pec_bdrs = dict() + for num, surf in stepShapes.pecs.items(): + pec_bdrs[num] = gmsh.model.getBoundary([surf]) + if num != 0: + gmsh.model.occ.remove([surf]) + elif num == 0 and isOpenProblem: + gmsh.model.occ.remove([surf]) + + gmsh.model.occ.synchronize() + + # --- Physical groups --- + # Boundaries. + for num, bdrs in pec_bdrs.items(): + name = "Conductor_" + str(num) + for bdr in bdrs: + if bdr[1] > 0: + gmsh.model.addPhysicalGroup(1, [bdr[1]], name=name) + + # Domains. + gmsh.model.addPhysicalGroup(2, [region[1]], name='Vacuum') + + for num, surf in stepShapes.dielectrics.items(): + name = "Dielectric_" + str(num) + gmsh.model.addPhysicalGroup(2, [surf[1]], name=name) + + # Meshing. + for [opt, val] in meshing_options.items(): + gmsh.option.setNumber(opt, val) + + gmsh.model.mesh.generate(2) + gmsh.option.setNumber("Mesh.MshFileVersion", 2.2) + + # Exporting + gmsh.write(case_name + '.msh') + + if runGUI: + gmsh.fltk.run() + + gmsh.finalize() diff --git a/step2gmsh_ssh b/step2gmsh_ssh new file mode 100644 index 0000000..3e8774c --- /dev/null +++ b/step2gmsh_ssh @@ -0,0 +1,7 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW +QyNTUxOQAAACAdQ9eDFYSBY9DeWE3FW1nD1rMNIyiYkjKvjlTkXSaqDAAAAJCfEtRpnxLU +aQAAAAtzc2gtZWQyNTUxOQAAACAdQ9eDFYSBY9DeWE3FW1nD1rMNIyiYkjKvjlTkXSaqDA +AAAED1H3JwWRJW6M+YwJS+9mNodNbEKHW4fBOJV94R1DO4OR1D14MVhIFj0N5YTcVbWcPW +sw0jKJiSMq+OVORdJqoMAAAABmxtQHQxNQECAwQFBgc= +-----END OPENSSH PRIVATE KEY----- diff --git a/step2gmsh_ssh.pub b/step2gmsh_ssh.pub new file mode 100644 index 0000000..f04d75b --- /dev/null +++ b/step2gmsh_ssh.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB1D14MVhIFj0N5YTcVbWcPWsw0jKJiSMq+OVORdJqoM lm@t15 diff --git a/test/__init__.py b/test/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/test/test_mesher.py b/test/test_mesher.py new file mode 100644 index 0000000..b970fdd --- /dev/null +++ b/test/test_mesher.py @@ -0,0 +1,94 @@ +import sys + +sys.path.insert(0,'.') +from src.mesher import * + +import os +import gmsh + +dir_path = os.path.dirname(os.path.realpath(__file__)) + '/' +testdata_path = dir_path + '/../testData/' + + +def test_getNumberFromEntityName(): + assert (StepShapes.getNumberFromEntityName( + 'Shapes/Conductor_1', + 'Conductor_') == 1 + ) + + assert (StepShapes.getNumberFromEntityName( + 'Shapes/solid_wire_002/Conductor_002/Conductor_002', + 'Conductor_') == 2 + ) + + +def test_partially_filled_coax(): + meshFromStep(testdata_path, 'partially_filled_coax') + + +def test_empty_coax(): + meshFromStep(testdata_path, 'empty_coax') + + +def test_two_wires_coax(): + meshFromStep(testdata_path, 'two_wires_coax') + + +def test_five_wires(): + meshFromStep(testdata_path, 'five_wires') + + +def test_three_wires_ribbon(): + meshFromStep(testdata_path, 'three_wires_ribbon') + + +def test_stepShapes_for_partially_filled_coax(): + case_name = 'partially_filled_coax' + + gmsh.initialize() + gmsh.model.add(case_name) + stepShapes = StepShapes( + gmsh.model.occ.importShapes( + testdata_path + case_name + '/' + case_name + '.step' + ) + ) + + gmsh.finalize() + + assert (len(stepShapes.pecs) == 2) + assert (len(stepShapes.dielectrics) == 1) + + +def test_stepShapes_for_five_wires(): + case_name = 'five_wires' + + gmsh.initialize() + gmsh.model.add(case_name) + stepShapes = StepShapes( + gmsh.model.occ.importShapes( + testdata_path + case_name + '/' + case_name + '.step' + ) + ) + + gmsh.finalize() + + assert (len(stepShapes.pecs) == 6) + assert (len(stepShapes.dielectrics) == 5) + + +def test_stepShapes_for_three_wires_ribbon(): + case_name = 'three_wires_ribbon' + + gmsh.initialize() + gmsh.model.add(case_name) + stepShapes = StepShapes( + gmsh.model.occ.importShapes( + testdata_path + case_name + '/' + case_name + '.step' + ) + ) + + gmsh.finalize() + + assert (len(stepShapes.openRegion) == 1) + assert (len(stepShapes.pecs) == 3) + assert (len(stepShapes.dielectrics) == 3) diff --git a/testData/empty_coax/empty_coax.FCStd b/testData/empty_coax/empty_coax.FCStd new file mode 100644 index 0000000000000000000000000000000000000000..7901d5f82a7979009e08a2cb98fcf89cc766bb58 GIT binary patch literal 5014 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 JjDNM!e*g&_dXNAB literal 0 HcmV?d00001 diff --git a/testData/empty_coax/empty_coax.msh b/testData/empty_coax/empty_coax.msh new file mode 100644 index 0000000..a273dcd --- /dev/null +++ b/testData/empty_coax/empty_coax.msh @@ -0,0 +1,927 @@ +$MeshFormat +2.2 0 8 +$EndMeshFormat +$PhysicalNames +3 +1 1 "Conductor_0" +1 2 "Conductor_1" +2 3 "Vacuum" +$EndPhysicalNames +$Nodes +720 +1 0.05 3.0616169978685e-18 0 +2 0.025 1.53080849893425e-18 0 +3 0.04903926402016152 0.009754516100806397 0 +4 0.04619397662556435 0.01913417161825445 0 +5 0.04157348061512729 0.02777851165098007 0 +6 0.03535533905932743 0.03535533905932732 0 +7 0.02777851165098018 0.04157348061512721 0 +8 0.01913417161825459 0.04619397662556429 0 +9 0.009754516100806533 0.0490392640201615 0 +10 1.332266618417062e-16 0.05 0 +11 -0.00975451610080626 0.04903926402016155 0 +12 -0.0191341716182543 0.04619397662556442 0 +13 -0.02777851165097992 0.0415734806151274 0 +14 -0.03535533905932722 0.03535533905932754 0 +15 -0.04157348061512713 0.02777851165098031 0 +16 -0.04619397662556423 0.01913417161825474 0 +17 -0.04903926402016147 0.009754516100806689 0 +18 -0.05 2.917194011737841e-16 0 +19 -0.04903926402016159 -0.009754516100806073 0 +20 -0.04619397662556445 -0.01913417161825422 0 +21 -0.04157348061512741 -0.0277785116509799 0 +22 -0.03535533905932758 -0.03535533905932717 0 +23 -0.02777851165098033 -0.04157348061512712 0 +24 -0.01913417161825472 -0.04619397662556424 0 +25 -0.009754516100806602 -0.04903926402016148 0 +26 -1.837586145958244e-16 -0.05 0 +27 0.009754516100806245 -0.04903926402016155 0 +28 0.01913417161825438 -0.04619397662556438 0 +29 0.02777851165098003 -0.04157348061512733 0 +30 0.03535533905932727 -0.03535533905932748 0 +31 0.04157348061512721 -0.02777851165098018 0 +32 0.04619397662556431 -0.01913417161825456 0 +33 0.04903926402016152 -0.009754516100806432 0 +34 0.04989294616193018 0.00327015646150715 0 +35 0.04957224306869053 0.006526309611002567 0 +36 0.04829629131445342 0.01294095225512601 0 +37 0.04734650647475529 0.01607197326515805 0 +38 0.04484363707663444 0.02211443451095003 0 +39 0.04330127018922196 0.02499999999999996 0 +40 0.0396676670145618 0.03043807145043599 0 +41 0.03759199037394892 0.0329672907550034 0 +42 0.03296729075500351 0.03759199037394882 0 +43 0.03043807145043609 0.03966766701456171 0 +44 0.02500000000000008 0.04330127018922189 0 +45 0.02211443451095015 0.04484363707663437 0 +46 0.01607197326515819 0.04734650647475525 0 +47 0.01294095225512615 0.04829629131445339 0 +48 0.006526309611002705 0.04957224306869051 0 +49 0.003270156461507283 0.04989294616193017 0 +50 -0.003270156461507017 0.04989294616193019 0 +51 -0.006526309611002441 0.04957224306869054 0 +52 -0.01294095225512587 0.04829629131445346 0 +53 -0.01607197326515791 0.04734650647475534 0 +54 -0.02211443451094989 0.04484363707663451 0 +55 -0.02499999999999982 0.04330127018922204 0 +56 -0.03043807145043584 0.0396676670145619 0 +57 -0.03296729075500326 0.03759199037394903 0 +58 -0.03759199037394872 0.03296729075500362 0 +59 -0.03966766701456162 0.03043807145043621 0 +60 -0.04330127018922181 0.02500000000000021 0 +61 -0.04484363707663431 0.02211443451095028 0 +62 -0.0473465064747552 0.01607197326515834 0 +63 -0.04829629131445334 0.01294095225512631 0 +64 -0.04957224306869049 0.006526309611002862 0 +65 -0.04989294616193016 0.003270156461507441 0 +66 -0.0498929461619302 -0.003270156461506836 0 +67 -0.04957224306869056 -0.006526309611002238 0 +68 -0.0482962913144535 -0.01294095225512572 0 +69 -0.04734650647475538 -0.01607197326515779 0 +70 -0.04484363707663454 -0.02211443451094982 0 +71 -0.04330127018922206 -0.02499999999999978 0 +72 -0.03966766701456192 -0.03043807145043582 0 +73 -0.03759199037394904 -0.03296729075500324 0 +74 -0.03296729075500365 -0.03759199037394868 0 +75 -0.03043807145043625 -0.03966766701456158 0 +76 -0.02500000000000021 -0.04330127018922181 0 +77 -0.02211443451095026 -0.04484363707663432 0 +78 -0.0160719732651583 -0.04734650647475521 0 +79 -0.01294095225512625 -0.04829629131445336 0 +80 -0.006526309611002755 -0.0495722430686905 0 +81 -0.003270156461507311 -0.04989294616193016 0 +82 0.003270156461506988 -0.04989294616193019 0 +83 0.006526309611002433 -0.04957224306869054 0 +84 0.01294095225512589 -0.04829629131445345 0 +85 0.01607197326515795 -0.04734650647475533 0 +86 0.02211443451094997 -0.04484363707663447 0 +87 0.02499999999999993 -0.04330127018922197 0 +88 0.03043807145043593 -0.03966766701456184 0 +89 0.03296729075500332 -0.03759199037394897 0 +90 0.03759199037394879 -0.03296729075500354 0 +91 0.0396676670145617 -0.03043807145043611 0 +92 0.0433012701892219 -0.02500000000000006 0 +93 0.04484363707663439 -0.0221144345109501 0 +94 0.04734650647475526 -0.01607197326515813 0 +95 0.04829629131445341 -0.01294095225512608 0 +96 0.04957224306869052 -0.006526309611002581 0 +97 0.04989294616193018 -0.003270156461507137 0 +98 0.02309698831278218 0.009567085809127227 0 +99 0.01767766952966372 0.01767766952966366 0 +100 0.009567085809127296 0.02309698831278215 0 +101 6.661333092085312e-17 0.025 0 +102 -0.009567085809127152 0.02309698831278221 0 +103 -0.01767766952966361 0.01767766952966377 0 +104 -0.02309698831278212 0.009567085809127369 0 +105 -0.025 1.45859700586892e-16 0 +106 -0.02309698831278223 -0.009567085809127109 0 +107 -0.01767766952966379 -0.01767766952966358 0 +108 -0.00956708580912736 -0.02309698831278212 0 +109 -9.187930729791219e-17 -0.025 0 +110 0.00956708580912719 -0.02309698831278219 0 +111 0.01767766952966364 -0.01767766952966374 0 +112 0.02309698831278216 -0.00956708580912728 0 +113 0.02478612153434526 0.003263154805501284 0 +114 0.02414814565722671 0.006470476127563006 0 +115 0.02165063509461098 0.01249999999999998 0 +116 0.0198338335072809 0.01521903572521799 0 +117 0.01521903572521805 0.01983383350728085 0 +118 0.01250000000000004 0.02165063509461095 0 +119 0.006470476127563077 0.02414814565722669 0 +120 0.003263154805501353 0.02478612153434525 0 +121 -0.003263154805501214 0.02478612153434527 0 +122 -0.006470476127562937 0.02414814565722673 0 +123 -0.01249999999999991 0.02165063509461102 0 +124 -0.01521903572521793 0.01983383350728095 0 +125 -0.01983383350728081 0.01521903572521811 0 +126 -0.02165063509461091 0.0125000000000001 0 +127 -0.02414814565722667 0.006470476127563153 0 +128 -0.02478612153434524 0.003263154805501431 0 +129 -0.02478612153434528 -0.003263154805501141 0 +130 -0.02414814565722674 -0.00647047612756287 0 +131 -0.02165063509461104 -0.01249999999999987 0 +132 -0.01983383350728098 -0.01521903572521789 0 +133 -0.01521903572521813 -0.01983383350728079 0 +134 -0.0125000000000001 -0.02165063509461091 0 +135 -0.006470476127563123 -0.02414814565722668 0 +136 -0.003263154805501378 -0.02478612153434525 0 +137 0.003263154805501216 -0.02478612153434527 0 +138 0.006470476127562966 -0.02414814565722672 0 +139 0.01249999999999995 -0.021650635094611 0 +140 0.01521903572521796 -0.01983383350728092 0 +141 0.01983383350728085 -0.01521903572521806 0 +142 0.02165063509461095 -0.01250000000000003 0 +143 0.0241481456572267 -0.006470476127563038 0 +144 0.02478612153434526 -0.003263154805501291 0 +145 -0.006431599369392833 0.03233383350728088 0 +146 -0.01831564540678211 0.02741130046272805 0 +147 -0.02741130046272789 0.01831564540678236 0 +148 -0.03233383350728091 -0.006431599369392763 0 +149 0.01831564540678217 -0.02741130046272803 0 +150 0.027411300462728 0.0183156454067822 0 +151 0.01831564540678228 0.02741130046272795 0 +152 0.006431599369393024 0.03233383350728084 0 +153 0.03233383350728087 0.006431599369392933 0 +154 -0.03233383350728083 0.00643159936939313 0 +155 -0.02741130046272811 -0.01831564540678208 0 +156 0.006431599369392854 -0.0323338335072809 0 +157 0.03233383350728088 -0.006431599369392972 0 +158 -0.01831564540678239 -0.0274113004627279 0 +159 0.02741130046272796 -0.01831564540678231 0 +160 -0.006431599369393096 -0.03233383350728087 0 +161 -0.01504998197803413 0.03633387060484105 0 +162 -0.03982210386496066 2.300311566427255e-16 0 +163 0.03672650292738495 0.01521261561105799 0 +164 1.148530488943751e-16 0.03975248031261722 0 +165 0.01517531431908017 0.03663644964239775 0 +166 -0.03672650292738485 0.01521261561105821 0 +167 0.02804032459764715 0.02804032459764706 0 +168 -0.02780874062833906 0.0278087406283393 0 +169 0.02828155789900945 -0.02828155789900961 0 +170 -0.02815847968402886 -0.02815847968402854 0 +171 0.03999616274581921 -1.506089576004129e-17 0 +172 0.01523925939104216 -0.03679082670237579 0 +173 -0.03663644964239788 -0.01517531431907988 0 +174 0.03651037504341575 -0.01512309251031104 0 +175 -0.01523925939104244 -0.03679082670237567 0 +176 -1.372058074318922e-16 -0.03999616274581921 0 +177 -0.04098491186550157 -0.008152405846013303 0 +178 -0.00815240584601371 -0.04098491186550146 0 +179 0.03474533056313009 -0.02321608764972815 0 +180 -0.008152405846013412 0.04098491186550158 0 +181 -0.02321608764972798 0.03474533056313027 0 +182 -0.04098491186550149 0.008152405846013771 0 +183 0.02321608764972802 -0.03474533056313022 0 +184 0.04098491186550154 0.008152405846013526 0 +185 0.04098491186550151 -0.008152405846013584 0 +186 -0.0347453305631303 -0.0232160876497279 0 +187 0.02321608764972816 0.03474533056313012 0 +188 0.008152405846013417 -0.04098491186550155 0 +189 -0.03474533056313007 0.02321608764972828 0 +190 0.008152405846013648 0.04098491186550152 0 +191 -0.02321608764972829 -0.03474533056313003 0 +192 0.03474533056313019 0.02321608764972806 0 +193 -0.03482992362650743 0.004287732912928831 0 +194 -0.03732601374573405 0.00214386645646453 0 +195 -0.03732601374573408 -0.002143866456464101 0 +196 -0.03482992362650749 -0.004287732912928431 0 +197 -0.03233383350728088 -0.002143866456464132 0 +198 -0.03233383350728086 0.002143866456464499 0 +199 -0.03482992362650745 1.995521292959497e-16 0 +200 -0.009304393572273265 0.03366717920646761 0 +201 -0.0121771877751537 0.03500052490565433 0 +202 -0.01613853645428346 0.03335968055747005 0 +203 -0.01722709093053279 0.03038549051009905 0 +204 -0.01435429672765236 0.02905214481091233 0 +205 -0.01039294804852259 0.0306929891590966 0 +206 -0.01326574225140303 0.03202633485828334 0 +207 0.02163761623752459 -0.02770138627482189 0 +208 0.02495958706826702 -0.02799147208691575 0 +209 0.02799147208691562 -0.02495958706826717 0 +210 0.02770138627482179 -0.02163761623752474 0 +211 0.02437941544407937 -0.02134753042543088 0 +212 0.02134753042543077 -0.02437941544407946 0 +213 0.02466950125617319 -0.02466950125617331 0 +214 0.03044432532295723 -0.01725146110795855 0 +215 0.0334773501831865 -0.0161872768091348 0 +216 0.0351181945313708 -0.01222592813000502 0 +217 0.03372601401932584 -0.009328763749698996 0 +218 0.03069298915909657 -0.01039294804852275 0 +219 0.02905214481091227 -0.01435429672765253 0 +220 0.03208516967114153 -0.01329011242882877 0 +221 0.01726886837754824 0.03048635018928455 0 +222 0.0162220913483142 0.03356139991584115 0 +223 0.01226074266918445 0.03520224426402545 0 +224 0.009346171019288738 0.03376803888565315 0 +225 0.01039294804852278 0.03069298915909654 0 +226 0.01435429672765253 0.02905214481091225 0 +227 0.01330751969841849 0.03212719453746885 0 +228 -0.004287732912928777 -0.03488794325346032 0 +229 -0.002143866456464457 -0.03744205299963976 0 +230 0.002143866456464193 -0.03744205299963978 0 +231 0.004287732912928523 -0.03488794325346033 0 +232 0.002143866456464204 -0.0323338335072809 0 +233 -0.002143866456464446 -0.03233383350728088 0 +234 -1.265975335153094e-16 -0.03488794325346033 0 +235 -0.02148001048063443 0.0275437805179318 0 +236 -0.02464437555448674 0.02767626057313555 0 +237 -0.02767626057313534 0.02464437555448698 0 +238 -0.02754378051793161 0.02148001048063467 0 +239 -0.0243794154440793 0.02134753042543093 0 +240 -0.02134753042543071 0.02437941544407949 0 +241 -0.02451189549928302 0.02451189549928324 0 +242 0.03379805664731556 0.009358604783281287 0 +243 0.03526227978735026 0.01228561019716964 0 +244 0.03362143543916597 0.0162469588762994 0 +245 0.03051636795094698 0.0172813021415408 0 +246 0.02905214481091229 0.01435429672765245 0 +247 0.03069298915909658 0.01039294804852269 0 +248 0.03215721229913127 0.01331995346241104 0 +249 0.009367486043275955 -0.03381949790564586 0 +250 0.01230337271715906 -0.03530516230401083 0 +251 0.01626472139628883 -0.03366431795582654 0 +252 0.0172901834015355 -0.03053780920927729 0 +253 0.0143542967276524 -0.02905214481091233 0 +254 0.01039294804852262 -0.03069298915909661 0 +255 0.01332883472240572 -0.03217865355746157 0 +256 -0.02766036020316169 -0.02159659016586423 0 +257 -0.02790941994359528 -0.02487753492494639 0 +258 -0.02487753492494671 -0.027909419943595 0 +259 -0.02159659016586455 -0.02766036020316145 0 +260 -0.02134753042543096 -0.02437941544407929 0 +261 -0.02437941544407954 -0.02134753042543069 0 +262 -0.02462847518451312 -0.02462847518451283 0 +263 -0.03051636795094688 0.01728130214154098 0 +264 -0.03362143543916587 0.01624695887629959 0 +265 -0.03526227978735017 0.01228561019716985 0 +266 -0.03379805664731551 0.009358604783281493 0 +267 -0.03069298915909652 0.01039294804852288 0 +268 -0.02905214481091221 0.01435429672765262 0 +269 -0.03215721229913119 0.01331995346241123 0 +270 -0.03376803888565323 -0.009346171019288469 0 +271 -0.03520224426402555 -0.01226074266918417 0 +272 -0.03356139991584128 -0.01622209134831395 0 +273 -0.0304863501892847 -0.01726886837754802 0 +274 -0.02905214481091237 -0.01435429672765231 0 +275 -0.03069298915909664 -0.01039294804852253 0 +276 -0.03212719453746896 -0.01330751969841824 0 +277 0.03488794325346032 -0.004287732912928654 0 +278 0.03744205299963977 -0.002143866456464335 0 +279 0.03744205299963976 0.0021438664564643 0 +280 0.03488794325346032 0.004287732912928616 0 +281 0.03233383350728087 0.002143866456464298 0 +282 0.03233383350728088 -0.002143866456464336 0 +283 0.03488794325346032 -1.789042059579722e-17 0 +284 -0.01729018340153574 -0.03053780920927716 0 +285 -0.01626472139628909 -0.03366431795582641 0 +286 -0.01230337271715932 -0.03530516230401073 0 +287 -0.00936748604327621 -0.03381949790564581 0 +288 -0.01039294804852286 -0.03069298915909655 0 +289 -0.01435429672765263 -0.02905214481091222 0 +290 -0.01332883472240598 -0.03217865355746148 0 +291 0.004287732912928721 0.0348067157757263 0 +292 0.002143866456464418 0.03727959804417176 0 +293 -0.002143866456464201 0.03727959804417178 0 +294 -0.004287732912928517 0.03480671577572633 0 +295 -0.002143866456464215 0.03233383350728086 0 +296 0.002143866456464403 0.03233383350728086 0 +297 1.009494669715352e-16 0.0348067157757263 0 +298 0.02762097517436772 0.02155720513707049 0 +299 0.02783064988600743 0.02479876486735877 0 +300 0.02479876486735886 0.02783064988600736 0 +301 0.02155720513707057 0.02762097517436765 0 +302 0.02134753042543086 0.02437941544407937 0 +303 0.02437941544407943 0.02134753042543079 0 +304 0.02458909015571914 0.02458909015571907 0 +305 0.02453509236276409 -0.01248327234167895 0 +306 0.02597319641274603 -0.01539945887423063 0 +307 0.02925488510911464 -0.007476761515971075 0 +308 0.02617593671094839 -0.008521923662549178 0 +309 0.02761404076093032 -0.01143811019510085 0 +310 0.008521923662549079 -0.02617593671094843 0 +311 0.007476761515970968 -0.02925488510911466 0 +312 0.01539945887423051 -0.02597319641274608 0 +313 0.01248327234167885 -0.02453509236276414 0 +314 0.01143811019510074 -0.02761404076093038 0 +315 0.02416675681837319 -0.01810298678107612 0 +316 0.02092221317401841 -0.01789032815536993 0 +317 0.01789032815536981 -0.0209222131740185 0 +318 0.01810298678107599 -0.02416675681837327 0 +319 0.02113487179972459 -0.02113487179972469 0 +320 -0.02744461116909361 0.002143866456464473 0 +321 -0.02988922233818722 0.004287732912928802 0 +322 -0.02988922233818727 -0.00428773291292846 0 +323 -0.02744461116909364 -0.002143866456464158 0 +324 -0.02988922233818724 1.699896606344472e-16 0 +325 -0.007476761515971183 -0.02925488510911462 0 +326 -0.008521923662549271 -0.02617593671094837 0 +327 -0.01248327234167904 -0.02453509236276405 0 +328 -0.01539945887423072 -0.02597319641274597 0 +329 -0.01143811019510095 -0.0276140407609303 0 +330 -0.002143866456464426 -0.02744461116909363 0 +331 -0.00428773291292876 -0.02988922233818725 0 +332 0.004287732912928539 -0.02988922233818727 0 +333 0.002143866456464224 -0.02744461116909364 0 +334 -1.10472316129293e-16 -0.02988922233818726 0 +335 0.02744461116909363 -0.002143866456464323 0 +336 0.02988922233818725 -0.004287732912928647 0 +337 0.02988922233818725 0.004287732912928622 0 +338 0.02744461116909362 0.002143866456464312 0 +339 0.02988922233818725 -1.175721043140733e-17 0 +340 -0.02597319641274615 -0.01539945887423042 0 +341 -0.02453509236276418 -0.01248327234167877 0 +342 -0.02617593671094846 -0.008521923662548992 0 +343 -0.02925488510911468 -0.007476761515970878 0 +344 -0.02761404076093042 -0.01143811019510065 0 +345 -0.01539945887423046 0.02597319641274611 0 +346 -0.01248327234167881 0.02453509236276416 0 +347 -0.008521923662549046 0.02617593671094843 0 +348 -0.00747676151597094 0.02925488510911465 0 +349 -0.0114381101951007 0.02761404076093038 0 +350 -0.01810298678107619 -0.02416675681837313 0 +351 -0.01789032815536999 -0.02092221317401836 0 +352 -0.02092221317401856 -0.01789032815536975 0 +353 -0.02416675681837333 -0.01810298678107591 0 +354 -0.02113487179972477 -0.02113487179972452 0 +355 -0.02416675681837313 0.01810298678107617 0 +356 -0.02092221317401837 0.01789032815536996 0 +357 -0.01789032815536978 0.02092221317401853 0 +358 -0.01810298678107594 0.02416675681837329 0 +359 -0.02113487179972454 0.02113487179972473 0 +360 0.007476761515971114 0.02925488510911461 0 +361 0.008521923662549204 0.02617593671094838 0 +362 0.01248327234167896 0.02453509236276408 0 +363 0.01539945887423062 0.02597319641274601 0 +364 0.01143811019510087 0.02761404076093031 0 +365 0.02617593671094841 0.008521923662549127 0 +366 0.02925488510911464 0.007476761515971031 0 +367 0.02597319641274606 0.01539945887423055 0 +368 0.02453509236276412 0.01248327234167889 0 +369 0.02761404076093034 0.01143811019510079 0 +370 0.002143866456464385 0.02744461116909361 0 +371 0.004287732912928705 0.02988922233818723 0 +372 -0.004287732912928533 0.02988922233818725 0 +373 -0.002143866456464234 0.02744461116909363 0 +374 8.481927583698841e-17 0.02988922233818724 0 +375 -0.02925488510911459 0.00747676151597121 0 +376 -0.02617593671094836 0.008521923662549289 0 +377 -0.02453509236276404 0.01248327234167903 0 +378 -0.02597319641274597 0.0153994588742307 0 +379 -0.02761404076093028 0.01143811019510095 0 +380 0.01810298678107609 0.02416675681837318 0 +381 0.0178903281553699 0.02092221317401842 0 +382 0.02092221317401848 0.01789032815536984 0 +383 0.02416675681837324 0.01810298678107602 0 +384 0.02113487179972467 0.02113487179972461 0 +385 0.03515200289392821 -0.03130892192279437 0 +386 0.03494866672852915 -0.02726250478626126 0 +387 0.03259073967508988 -0.02490457773282197 0 +388 0.03043614878704966 -0.02659306781591579 0 +389 0.03063948495244873 -0.0306394849524489 0 +390 0.032997412005888 -0.03299741200588819 0 +391 0.03279407584048893 -0.02895099486935508 0 +392 0.04032574578571331 -0.002717468615337871 0 +393 0.04065532882560741 -0.005434937230675726 0 +394 0.04398994124366767 -0.005434937230675721 0 +395 0.04699497062183384 -0.002717468615337859 0 +396 0.04666538758193974 -2.97922058810143e-18 0 +397 0.04333077516387947 -9.020058174071358e-18 0 +398 0.04366035820377357 -0.002717468615337865 0 +399 -0.0402097065318076 0.002717468615338076 0 +400 -0.04059730919865454 0.005434937230675924 0 +401 -0.04398994124366766 0.005434937230675944 0 +402 -0.04699497062183383 0.002717468615338118 0 +403 -0.04660736795498688 2.711566529967646e-16 0 +404 -0.04321473590997377 2.505939048197451e-16 0 +405 -0.04360233857682071 0.002717468615338097 0 +406 -0.02049481029541219 0.0423777612714197 0 +407 -0.02185544897257008 0.03856154591727499 0 +408 -0.02049405242583003 0.0352748439103672 0 +409 -0.01777201720193208 0.03580435725760412 0 +410 -0.01641137852477419 0.03962057261174883 0 +411 -0.01777277507151425 0.04290727461865663 0 +412 -0.01913341374867213 0.0390910592645119 0 +413 -0.04699497062183386 -0.002717468615337573 0 +414 -0.04398994124366772 -0.005434937230675438 0 +415 -0.0405973091986546 -0.005434937230675459 0 +416 -0.04020970653180762 -0.002717468615337615 0 +417 -0.04360233857682074 -0.002717468615337594 0 +418 -0.03130892192279448 -0.03515200289392812 0 +419 -0.02726250478626139 -0.03494866672852907 0 +420 -0.02486355166116181 -0.03254971360342953 0 +421 -0.02651101567259534 -0.03035409664372904 0 +422 -0.03055743280912844 -0.03055743280912809 0 +423 -0.03295638593422801 -0.03295638593422762 0 +424 -0.02890996879769491 -0.03275304976882858 0 +425 -0.01547358302750772 -0.04445762170554331 0 +426 -0.01181299443676071 -0.04272126678552239 0 +427 -0.01051469036102329 -0.03958688347779286 0 +428 -0.01287697487603287 -0.03818885509008427 0 +429 -0.01653756346677987 -0.03992521001010519 0 +430 -0.01783586754251729 -0.04305959331783472 0 +431 -0.01417527895177029 -0.04132323839781378 0 +432 -0.002717468615337995 -0.0403257457857133 0 +433 -0.005434937230675852 -0.04065532882560738 0 +434 -0.005434937230675868 -0.04398994124366764 0 +435 -0.002717468615338026 -0.04699497062183382 0 +436 -1.68241012207847e-16 -0.04666538758193974 0 +437 -1.527234098198696e-16 -0.04333077516387947 0 +438 -0.00271746861533801 -0.04366035820377356 0 +439 -0.04445762170554332 0.01547358302750775 0 +440 -0.0427212667855224 0.01181299443676076 0 +441 -0.03956544221946261 0.01050580910102859 0 +442 -0.03814597257342373 0.0128592123560434 0 +443 -0.03988232749344464 0.01651980094679039 0 +444 -0.04303815205950444 0.01782698628252256 0 +445 -0.04130179713948352 0.01416639769177557 0 +446 0.002717468615337959 0.04016329083024532 0 +447 0.005434937230675803 0.04057410134787342 0 +448 0.00543493723067581 0.04398994124366768 0 +449 0.002717468615337972 0.04699497062183384 0 +450 1.271021241925959e-16 0.04658416010420575 0 +451 1.209775865434855e-16 0.04316832020841148 0 +452 0.002717468615337964 0.04357913072603958 0 +453 -0.01275078993402722 0.03788421769172789 0 +454 -0.01045159789002032 0.03943456477861473 0 +455 -0.01181299443676037 0.04272126678552252 0 +456 -0.01547358302750734 0.04445762170554347 0 +457 -0.01411218648076728 0.04117091969863568 0 +458 0.03592202688332054 -0.01782075755678341 0 +459 0.03533367872322531 -0.02051842260325578 0 +460 0.03856154591727483 -0.02185544897257029 0 +461 0.04237776127141957 -0.02049481029541243 0 +462 0.0429661094315148 -0.01779714524894006 0 +463 0.03973824223746527 -0.01646011887962555 0 +464 0.03914989407737005 -0.01915778392609791 0 +465 0.01547358302750761 0.04445762170554337 0 +466 0.01181299443676063 0.04272126678552244 0 +467 0.01049337533703582 0.03953542445780026 0 +468 0.01283434482805799 0.03808593705009901 0 +469 0.01649493341880497 0.03982229197011993 0 +470 0.01781455251852978 0.04300813429784212 0 +471 0.0141539639277828 0.04127177937782119 0 +472 0.03130892192279433 0.03515200289392826 0 +473 0.02726250478626125 0.03494866672852918 0 +474 0.02482416663236782 0.03251032857463577 0 +475 0.02643224561500749 0.03027532658614141 0 +476 0.03047866275154057 0.03047866275154048 0 +477 0.032917000905434 0.0329170009054339 0 +478 0.02887058376890091 0.03271366474003483 0 +479 0.01785557209596283 0.03600607661597521 0 +480 0.02053582987284549 0.03537570358955267 0 +481 0.02185544897257031 0.03856154591727484 0 +482 0.02049481029541245 0.04237776127141957 0 +483 0.01917519119568764 0.03919191894369738 0 +484 0.01287697487603258 -0.03818885509008438 0 +485 0.010514690361023 -0.03958688347779297 0 +486 0.0118129944367604 -0.0427212667855225 0 +487 0.01547358302750739 -0.04445762170554344 0 +488 0.01783586754251697 -0.04305959331783486 0 +489 0.01653756346677957 -0.03992521001010532 0 +490 0.01417527895176999 -0.04132323839781391 0 +491 0.02659306781591564 -0.03043614878704981 0 +492 0.02490457773282183 -0.03259073967509001 0 +493 0.0272625047862611 -0.0349486667285293 0 +494 0.03130892192279418 -0.03515200289392839 0 +495 0.02895099486935491 -0.03279407584048909 0 +496 0.03814597257342382 0.01285921235604317 0 +497 0.03956544221946268 0.01050580910102835 0 +498 0.04272126678552248 0.0118129944367605 0 +499 0.04445762170554342 0.01547358302750748 0 +500 0.04303815205950456 0.0178269862825223 0 +501 0.03988232749344475 0.01651980094679014 0 +502 0.04130179713948362 0.01416639769177532 0 +503 0.04237776127141964 0.02049481029541232 0 +504 0.03856154591727491 0.02185544897257019 0 +505 0.03540572135121511 0.02054826363683804 0 +506 0.03606611213930003 0.01788043962394802 0 +507 0.03922193670535983 0.01918762495968017 0 +508 -0.03035409664372934 -0.026511015672595 0 +509 -0.03254971360342981 -0.02486355166116145 0 +510 -0.03494866672852939 -0.02726250478626099 0 +511 -0.03515200289392849 -0.03130892192279408 0 +512 -0.0327530497688289 -0.02890996879769454 0 +513 -0.03808593705009911 -0.01283434482805769 0 +514 -0.03953542445780034 -0.0104933753370355 0 +515 -0.04272126678552253 -0.01181299443676027 0 +516 -0.04445762170554349 -0.01547358302750724 0 +517 -0.04300813429784226 -0.01781455251852944 0 +518 -0.03982229197012007 -0.01649493341880466 0 +519 -0.04127177937782129 -0.01415396392778246 0 +520 0.04445762170554338 -0.01547358302750757 0 +521 0.04272126678552245 -0.01181299443676058 0 +522 0.03949339959147292 -0.01047596806744607 0 +523 0.03800188731744435 -0.01279953028887856 0 +524 0.04122975451149387 -0.01413655665819306 0 +525 -0.03606611213929992 0.01788043962394823 0 +526 -0.035405721351215 0.02054826363683825 0 +527 -0.03856154591727479 0.02185544897257043 0 +528 -0.04237776127141951 0.02049481029541259 0 +529 -0.03922193670535971 0.0191876249596804 0 +530 -0.04237776127141973 -0.02049481029541211 0 +531 -0.03856154591727502 -0.02185544897257001 0 +532 -0.03537570358955282 -0.02053582987284523 0 +533 -0.03600607661597535 -0.01785557209596256 0 +534 -0.03919191894369754 -0.01917519119568734 0 +535 0.002717468615337683 -0.04699497062183385 0 +536 0.005434937230675551 -0.0439899412436677 0 +537 0.005434937230675566 -0.04065532882560744 0 +538 0.002717468615337715 -0.04032574578571332 0 +539 0.002717468615337699 -0.04366035820377358 0 +540 -0.002717468615337715 0.04699497062183386 0 +541 -0.005434937230675565 0.04398994124366772 0 +542 -0.005434937230675571 0.04057410134787346 0 +543 -0.002717468615337728 0.04016329083024534 0 +544 -0.002717468615337722 0.04357913072603961 0 +545 -0.03515200289392817 0.03130892192279444 0 +546 -0.03494866672852912 0.02726250478626136 0 +547 -0.03243313391819973 0.02474697197593195 0 +548 -0.03012093727326939 0.02627785630213562 0 +549 -0.03032427343866845 0.0303242734386687 0 +550 -0.03283980624899784 0.03283980624899813 0 +551 -0.03263647008359878 0.02879338911246503 0 +552 -0.01789820214393772 -0.03610899465596045 0 +553 -0.02055714489683301 -0.03542716260954525 0 +554 -0.02185544897257043 -0.03856154591727477 0 +555 -0.02049481029541258 -0.0423777612714195 0 +556 -0.01919650621967514 -0.03924337796368997 0 +557 0.02049481029541226 -0.04237776127141966 0 +558 0.02185544897257014 -0.03856154591727494 0 +559 0.02055714489683273 -0.03542716260954541 0 +560 0.01789820214393745 -0.0361089946559606 0 +561 0.01919650621967485 -0.03924337796369012 0 +562 0.04699497062183385 0.002717468615337844 0 +563 0.04398994124366769 0.005434937230675685 0 +564 0.04065532882560743 0.00543493723067568 0 +565 0.04032574578571332 0.002717468615337832 0 +566 0.04366035820377358 0.002717468615337838 0 +567 0.0302753265861415 0.0264322456150074 0 +568 0.03251032857463585 0.02482416663236773 0 +569 0.03494866672852927 0.02726250478626115 0 +570 0.03515200289392835 0.03130892192279423 0 +571 0.03271366474003493 0.02887058376890081 0 +572 -0.02627785630213537 0.03012093727326962 0 +573 -0.02474697197593167 0.03243313391819994 0 +574 -0.02726250478626106 0.03494866672852935 0 +575 -0.03130892192279414 0.03515200289392845 0 +576 -0.02879338911246475 0.03263647008359903 0 +577 -0.04635447996860825 -0.009220479349208483 0 +578 -0.04366969591705491 -0.008686442597610894 0 +579 -0.0468167003653741 -0.005982957306174125 0 +580 0.03929743059779484 -0.02625770365056284 0 +581 0.03702138058046246 -0.02473689565014549 0 +582 0.03733499598388019 -0.02887381661838927 0 +583 0.04366969591705484 -0.008686442597611197 0 +584 0.04635447996860818 -0.009220479349208817 0 +585 0.04681670036537407 -0.005982957306174434 0 +586 -0.0262577036505626 0.03929743059779502 0 +587 -0.02473689565014529 0.03702138058046264 0 +588 -0.02344350738689256 0.04096341260966227 0 +589 -0.02625770365056298 -0.03929743059779475 0 +590 -0.02473689565014563 -0.03702138058046239 0 +591 -0.0288738166183894 -0.03733499598388009 0 +592 -0.04554256988490349 -0.0123884437887656 0 +593 -0.04635447996860814 0.009220479349209049 0 +594 -0.04366969591705482 0.008686442597611409 0 +595 -0.04554256988490334 0.01238844378876614 0 +596 -0.009220479349208973 -0.04635447996860814 0 +597 -0.00868644259761134 -0.0436696959170548 0 +598 -0.01238844378876608 -0.04554256988490334 0 +599 -0.005982957306174591 -0.04681670036537403 0 +600 -0.04681670036537404 0.005982957306174691 0 +601 -0.008686442597611029 0.04366969591705491 0 +602 -0.009220479349208645 0.04635447996860823 0 +603 -0.01238844378876573 0.04554256988490346 0 +604 -0.03702138058046267 -0.02473689565014524 0 +605 -0.03929743059779504 -0.02625770365056257 0 +606 -0.03733499598388042 -0.02887381661838899 0 +607 0.04554256988490338 -0.01238844378876593 0 +608 0.04366969591705488 0.008686442597611151 0 +609 0.0463544799686082 0.009220479349208773 0 +610 0.04554256988490341 0.01238844378876586 0 +611 0.009220479349208903 0.04635447996860817 0 +612 0.008686442597611276 0.04366969591705484 0 +613 0.012388443788766 0.04554256988490338 0 +614 0.02473689565014535 -0.03702138058046259 0 +615 0.02625770365056269 -0.03929743059779496 0 +616 0.02887381661838909 -0.03733499598388034 0 +617 0.03929743059779493 0.02625770365056273 0 +618 0.03702138058046256 0.0247368956501454 0 +619 0.04096341260966219 0.02344350738689268 0 +620 0.005982957306174545 0.04681670036537407 0 +621 -0.03702138058046242 0.02473689565014562 0 +622 -0.03929743059779478 0.02625770365056296 0 +623 -0.04096341260966206 0.02344350738689292 0 +624 -0.0409634126096623 -0.0234435073868925 0 +625 0.009220479349208636 -0.04635447996860822 0 +626 0.008686442597611027 -0.04366969591705489 0 +627 0.005982957306174279 -0.04681670036537409 0 +628 0.02625770365056284 0.03929743059779484 0 +629 0.0247368956501455 0.03702138058046248 0 +630 0.02887381661838925 0.03733499598388022 0 +631 0.01238844378876575 -0.04554256988490345 0 +632 0.02344350738689264 -0.04096341260966221 0 +633 0.02344350738689279 0.04096341260966212 0 +634 -0.00598295730617429 0.0468167003653741 0 +635 0.04096341260966213 -0.02344350738689277 0 +636 -0.02887381661838902 0.0373349959838804 0 +637 -0.02344350738689292 -0.04096341260966205 0 +638 0.04681670036537407 0.005982957306174414 0 +639 0.0373349959838803 0.02887381661838914 0 +640 -0.03733499598388013 0.02887381661838937 0 +641 0.02708936689961761 -0.005388410100819099 0 +642 0.02296525635487325 -0.0153448937106668 0 +643 -0.01534489371066665 0.02296525635487334 0 +644 -0.005388410100819198 -0.0270893668996176 0 +645 0.005388410100819013 -0.02708936689961763 0 +646 0.00538841010081915 0.0270893668996176 0 +647 -0.02708936689961764 -0.005388410100818924 0 +648 -0.005388410100818994 0.02708936689961763 0 +649 -0.01534489371066687 -0.0229652563548732 0 +650 0.02296525635487329 0.01534489371066673 0 +651 -0.02708936689961758 0.005388410100819236 0 +652 -0.02296525635487338 -0.01534489371066661 0 +653 0.02708936689961761 0.005388410100819074 0 +654 -0.0229652563548732 0.01534489371066686 0 +655 0.01534489371066679 0.02296525635487325 0 +656 0.01534489371066669 -0.02296525635487331 0 +657 -0.007005201528266359 0.03521752629335444 0 +658 -0.007578803687139886 0.03810121907942801 0 +659 -0.009877995731146789 0.03655087199254117 0 +660 -0.01994912615443074 0.02985597716286213 0 +661 -0.02158260690207936 0.0323006538629962 0 +662 -0.02311349122828305 0.02998845721806587 0 +663 -0.01886057167818141 0.03283016721023313 0 +664 -0.02985597716286196 0.019949126154431 0 +665 -0.03230065386299601 0.02158260690207964 0 +666 -0.03296104465108094 0.01891478288918961 0 +667 -0.004861335071802044 0.03769040856179989 0 +668 0.007005201528266565 0.0352175262933544 0 +669 0.007578803687140106 0.03810121907942796 0 +670 0.004861335071802262 0.03769040856179987 0 +671 0.03230065386299613 0.02158260690207944 0 +672 0.02985597716286207 0.01994912615443083 0 +673 0.03296104465108105 0.01891478288918942 0 +674 -0.02998845721806567 0.02311349122828331 0 +675 0.01994912615443091 0.029855977162862 0 +676 0.02158260690207953 0.03230065386299606 0 +677 0.01890234912519687 0.03293102688941861 0 +678 0.03521752629335443 0.007005201528266464 0 +679 0.03810121907942798 0.007578803687139995 0 +680 0.03668174943338913 0.009932206942154815 0 +681 0.03006565187450178 0.02319068588471911 0 +682 0.02319068588471919 0.03006565187450171 0 +683 -0.03810121907942802 -0.00757880368713979 0 +684 -0.03521752629335446 -0.007005201528266276 0 +685 -0.03771361641258104 -0.004861335071801944 0 +686 0.00991977317816228 0.0366517316717267 0 +687 -0.03521752629335438 0.007005201528266677 0 +688 -0.03810121907942794 0.007578803687140223 0 +689 -0.03771361641258099 0.004861335071802375 0 +690 -0.03668174943338906 0.009932206942155037 0 +691 -0.02985597716286217 -0.01994912615443069 0 +692 -0.03230065386299623 -0.02158260690207929 0 +693 -0.03010503690329575 -0.02323007091351284 0 +694 0.01994912615443078 -0.0298559771628621 0 +695 0.0215826069020794 -0.03230065386299616 0 +696 0.0232710969851732 -0.03014606297495595 0 +697 0.01892366414918411 -0.03298248590941134 0 +698 0.03777163603953387 0.004861335071802149 0 +699 -0.03665173167172679 -0.00991977317816198 0 +700 -0.03293102688941876 -0.01890234912519662 0 +701 -0.01994912615443102 -0.02985597716286194 0 +702 -0.02158260690207965 -0.03230065386299598 0 +703 -0.01892366414918437 -0.0329824859094112 0 +704 0.007005201528266375 -0.03521752629335445 0 +705 0.007578803687139896 -0.038101219079428 0 +706 0.009941088202149475 -0.03670319069171941 0 +707 0.004861335071802045 -0.03777163603953389 0 +708 0.03521752629335442 -0.007005201528266509 0 +709 0.03810121907942796 -0.007578803687140045 0 +710 0.03777163603953387 -0.004861335071802189 0 +711 0.03230065386299605 -0.02158260690207954 0 +712 0.029855977162862 -0.01994912615443092 0 +713 0.03014606297495584 -0.02327109698517336 0 +714 -0.02323007091351318 -0.03010503690329549 0 +715 0.03288900202309127 -0.01888494185560716 0 +716 0.03660970680539938 -0.009902365908572531 0 +717 -0.007578803687140171 -0.03810121907942793 0 +718 -0.007005201528266634 -0.0352175262933544 0 +719 -0.009941088202149749 -0.03670319069171934 0 +720 -0.004861335071802314 -0.03777163603953385 0 +$EndNodes +$Elements +192 +1 26 2 1 1 1 3 34 35 +2 26 2 1 1 3 4 36 37 +3 26 2 1 1 4 5 38 39 +4 26 2 1 1 5 6 40 41 +5 26 2 1 1 6 7 42 43 +6 26 2 1 1 7 8 44 45 +7 26 2 1 1 8 9 46 47 +8 26 2 1 1 9 10 48 49 +9 26 2 1 1 10 11 50 51 +10 26 2 1 1 11 12 52 53 +11 26 2 1 1 12 13 54 55 +12 26 2 1 1 13 14 56 57 +13 26 2 1 1 14 15 58 59 +14 26 2 1 1 15 16 60 61 +15 26 2 1 1 16 17 62 63 +16 26 2 1 1 17 18 64 65 +17 26 2 1 1 18 19 66 67 +18 26 2 1 1 19 20 68 69 +19 26 2 1 1 20 21 70 71 +20 26 2 1 1 21 22 72 73 +21 26 2 1 1 22 23 74 75 +22 26 2 1 1 23 24 76 77 +23 26 2 1 1 24 25 78 79 +24 26 2 1 1 25 26 80 81 +25 26 2 1 1 26 27 82 83 +26 26 2 1 1 27 28 84 85 +27 26 2 1 1 28 29 86 87 +28 26 2 1 1 29 30 88 89 +29 26 2 1 1 30 31 90 91 +30 26 2 1 1 31 32 92 93 +31 26 2 1 1 32 33 94 95 +32 26 2 1 1 33 1 96 97 +33 26 2 2 2 2 98 113 114 +34 26 2 2 2 98 99 115 116 +35 26 2 2 2 99 100 117 118 +36 26 2 2 2 100 101 119 120 +37 26 2 2 2 101 102 121 122 +38 26 2 2 2 102 103 123 124 +39 26 2 2 2 103 104 125 126 +40 26 2 2 2 104 105 127 128 +41 26 2 2 2 105 106 129 130 +42 26 2 2 2 106 107 131 132 +43 26 2 2 2 107 108 133 134 +44 26 2 2 2 108 109 135 136 +45 26 2 2 2 109 110 137 138 +46 26 2 2 2 110 111 139 140 +47 26 2 2 2 111 112 141 142 +48 26 2 2 2 112 2 143 144 +49 21 2 3 1 154 162 148 193 194 195 196 197 198 199 +50 21 2 3 1 145 161 146 200 201 202 203 204 205 206 +51 21 2 3 1 149 169 159 207 208 209 210 211 212 213 +52 21 2 3 1 159 174 157 214 215 216 217 218 219 220 +53 21 2 3 1 151 165 152 221 222 223 224 225 226 227 +54 21 2 3 1 160 176 156 228 229 230 231 232 233 234 +55 21 2 3 1 146 168 147 235 236 237 238 239 240 241 +56 21 2 3 1 153 163 150 242 243 244 245 246 247 248 +57 21 2 3 1 156 172 149 249 250 251 252 253 254 255 +58 21 2 3 1 155 170 158 256 257 258 259 260 261 262 +59 21 2 3 1 147 166 154 263 264 265 266 267 268 269 +60 21 2 3 1 148 173 155 270 271 272 273 274 275 276 +61 21 2 3 1 157 171 153 277 278 279 280 281 282 283 +62 21 2 3 1 158 175 160 284 285 286 287 288 289 290 +63 21 2 3 1 152 164 145 291 292 293 294 295 296 297 +64 21 2 3 1 150 167 151 298 299 300 301 302 303 304 +65 21 2 3 1 112 159 157 305 306 219 218 307 308 309 +66 21 2 3 1 110 156 149 310 311 254 253 312 313 314 +67 21 2 3 1 149 159 111 212 211 315 316 317 318 319 +68 21 2 3 1 105 154 148 320 321 198 197 322 323 324 +69 21 2 3 1 158 160 108 289 288 325 326 327 328 329 +70 21 2 3 1 109 160 156 330 331 233 232 332 333 334 +71 21 2 3 1 2 157 153 335 336 282 281 337 338 339 +72 21 2 3 1 148 155 106 275 274 340 341 342 343 344 +73 21 2 3 1 145 146 102 205 204 345 346 347 348 349 +74 21 2 3 1 155 158 107 261 260 350 351 352 353 354 +75 21 2 3 1 146 147 103 240 239 355 356 357 358 359 +76 21 2 3 1 151 152 100 226 225 360 361 362 363 364 +77 21 2 3 1 98 153 150 365 366 247 246 367 368 369 +78 21 2 3 1 101 152 145 370 371 296 295 372 373 374 +79 21 2 3 1 147 154 104 268 267 375 376 377 378 379 +80 21 2 3 1 150 151 99 303 302 380 381 382 383 384 +81 21 2 3 1 30 179 169 385 386 387 388 389 390 391 +82 21 2 3 1 171 185 1 392 393 394 395 396 397 398 +83 21 2 3 1 162 182 18 399 400 401 402 403 404 405 +84 21 2 3 1 12 181 161 406 407 408 409 410 411 412 +85 21 2 3 1 18 177 162 413 414 415 416 404 403 417 +86 21 2 3 1 22 191 170 418 419 420 421 422 423 424 +87 21 2 3 1 24 178 175 425 426 427 428 429 430 431 +88 21 2 3 1 176 178 26 432 433 434 435 436 437 438 +89 21 2 3 1 16 182 166 439 440 441 442 443 444 445 +90 21 2 3 1 164 190 10 446 447 448 449 450 451 452 +91 21 2 3 1 161 180 12 453 454 455 456 411 410 457 +92 21 2 3 1 174 179 32 458 459 460 461 462 463 464 +93 21 2 3 1 8 190 165 465 466 467 468 469 470 471 +94 21 2 3 1 6 187 167 472 473 474 475 476 477 478 +95 21 2 3 1 165 187 8 479 480 481 482 470 469 483 +96 21 2 3 1 172 188 28 484 485 486 487 488 489 490 +97 21 2 3 1 169 183 30 491 492 493 494 390 389 495 +98 21 2 3 1 163 184 4 496 497 498 499 500 501 502 +99 21 2 3 1 4 192 163 503 504 505 506 501 500 507 +100 21 2 3 1 170 186 22 508 509 510 511 423 422 512 +101 21 2 3 1 173 177 20 513 514 515 516 517 518 519 +102 21 2 3 1 32 185 174 520 521 522 523 463 462 524 +103 21 2 3 1 166 189 16 525 526 527 528 444 443 529 +104 21 2 3 1 20 186 173 530 531 532 533 518 517 534 +105 21 2 3 1 26 188 176 535 536 537 538 437 436 539 +106 21 2 3 1 10 180 164 540 541 542 543 451 450 544 +107 21 2 3 1 14 189 168 545 546 547 548 549 550 551 +108 21 2 3 1 175 191 24 552 553 554 555 430 429 556 +109 21 2 3 1 28 183 172 557 558 559 560 489 488 561 +110 21 2 3 1 1 184 171 562 563 564 565 397 396 566 +111 21 2 3 1 167 192 6 567 568 569 570 477 476 571 +112 21 2 3 1 168 181 14 572 573 574 575 550 549 576 +113 21 2 3 1 19 177 18 577 578 414 413 66 67 579 +114 21 2 3 1 31 179 30 580 581 386 385 90 91 582 +115 21 2 3 1 1 185 33 395 394 583 584 96 97 585 +116 21 2 3 1 13 181 12 586 587 407 406 54 55 588 +117 21 2 3 1 23 191 22 589 590 419 418 74 75 591 +118 21 2 3 1 20 177 19 516 515 578 577 68 69 592 +119 21 2 3 1 17 182 16 593 594 440 439 62 63 595 +120 21 2 3 1 25 178 24 596 597 426 425 78 79 598 +121 21 2 3 1 26 178 25 435 434 597 596 80 81 599 +122 21 2 3 1 18 182 17 402 401 594 593 64 65 600 +123 21 2 3 1 12 180 11 456 455 601 602 52 53 603 +124 21 2 3 1 22 186 21 511 510 604 605 72 73 606 +125 21 2 3 1 33 185 32 584 583 521 520 94 95 607 +126 21 2 3 1 4 184 3 499 498 608 609 36 37 610 +127 21 2 3 1 9 190 8 611 612 466 465 46 47 613 +128 21 2 3 1 30 183 29 494 493 614 615 88 89 616 +129 21 2 3 1 5 192 4 617 618 504 503 38 39 619 +130 21 2 3 1 10 190 9 449 448 612 611 48 49 620 +131 21 2 3 1 16 189 15 528 527 621 622 60 61 623 +132 21 2 3 1 21 186 20 605 604 531 530 70 71 624 +133 21 2 3 1 27 188 26 625 626 536 535 82 83 627 +134 21 2 3 1 7 187 6 628 629 473 472 42 43 630 +135 21 2 3 1 28 188 27 487 486 626 625 84 85 631 +136 21 2 3 1 29 183 28 615 614 558 557 86 87 632 +137 21 2 3 1 8 187 7 482 481 629 628 44 45 633 +138 21 2 3 1 11 180 10 602 601 541 540 50 51 634 +139 21 2 3 1 32 179 31 461 460 581 580 92 93 635 +140 21 2 3 1 14 181 13 575 574 587 586 56 57 636 +141 21 2 3 1 24 191 23 555 554 590 589 76 77 637 +142 21 2 3 1 3 184 1 609 608 563 562 34 35 638 +143 21 2 3 1 6 192 5 570 569 618 617 40 41 639 +144 21 2 3 1 15 189 14 622 621 546 545 58 59 640 +145 21 2 3 1 112 157 2 308 307 336 335 144 143 641 +146 21 2 3 1 111 159 112 316 315 306 305 142 141 642 +147 21 2 3 1 102 146 103 346 345 358 357 124 123 643 +148 21 2 3 1 108 160 109 326 325 331 330 136 135 644 +149 21 2 3 1 109 156 110 333 332 311 310 138 137 645 +150 21 2 3 1 100 152 101 361 360 371 370 120 119 646 +151 21 2 3 1 105 148 106 323 322 343 342 130 129 647 +152 21 2 3 1 101 145 102 373 372 348 347 122 121 648 +153 21 2 3 1 107 158 108 351 350 328 327 134 133 649 +154 21 2 3 1 98 150 99 368 367 383 382 116 115 650 +155 21 2 3 1 104 154 105 376 375 321 320 128 127 651 +156 21 2 3 1 106 155 107 341 340 353 352 132 131 652 +157 21 2 3 1 2 153 98 338 337 366 365 114 113 653 +158 21 2 3 1 103 147 104 356 355 378 377 126 125 654 +159 21 2 3 1 99 151 100 381 380 363 362 118 117 655 +160 21 2 3 1 110 149 111 313 312 318 317 140 139 656 +161 21 2 3 1 145 180 161 657 658 454 453 201 200 659 +162 21 2 3 1 146 181 168 660 661 573 572 236 235 662 +163 21 2 3 1 161 181 146 409 408 661 660 203 202 663 +164 21 2 3 1 147 189 166 664 665 526 525 264 263 666 +165 21 2 3 1 164 180 145 543 542 658 657 294 293 667 +166 21 2 3 1 152 190 164 668 669 447 446 292 291 670 +167 21 2 3 1 163 192 150 506 505 671 672 245 244 673 +168 21 2 3 1 168 189 147 548 547 665 664 238 237 674 +169 21 2 3 1 151 187 165 675 676 480 479 222 221 677 +170 21 2 3 1 153 184 163 678 679 497 496 243 242 680 +171 21 2 3 1 150 192 167 672 671 568 567 299 298 681 +172 21 2 3 1 167 187 151 475 474 676 675 301 300 682 +173 21 2 3 1 162 177 148 416 415 683 684 196 195 685 +174 21 2 3 1 165 190 152 468 467 669 668 224 223 686 +175 21 2 3 1 154 182 162 687 688 400 399 194 193 689 +176 21 2 3 1 166 182 154 442 441 688 687 266 265 690 +177 21 2 3 1 155 186 170 691 692 509 508 257 256 693 +178 21 2 3 1 149 183 169 694 695 492 491 208 207 696 +179 21 2 3 1 172 183 149 560 559 695 694 252 251 697 +180 21 2 3 1 171 184 153 565 564 679 678 280 279 698 +181 21 2 3 1 148 177 173 684 683 514 513 271 270 699 +182 21 2 3 1 173 186 155 533 532 692 691 273 272 700 +183 21 2 3 1 158 191 175 701 702 553 552 285 284 703 +184 21 2 3 1 156 188 172 704 705 485 484 250 249 706 +185 21 2 3 1 176 188 156 538 537 705 704 231 230 707 +186 21 2 3 1 157 185 171 708 709 393 392 278 277 710 +187 21 2 3 1 169 179 159 388 387 711 712 210 209 713 +188 21 2 3 1 170 191 158 421 420 702 701 259 258 714 +189 21 2 3 1 159 179 174 712 711 459 458 215 214 715 +190 21 2 3 1 174 185 157 523 522 709 708 217 216 716 +191 21 2 3 1 175 178 160 428 427 717 718 287 286 719 +192 21 2 3 1 160 178 176 718 717 433 432 229 228 720 +$EndElements diff --git a/testData/empty_coax/empty_coax.step b/testData/empty_coax/empty_coax.step new file mode 100644 index 0000000..eec4544 --- /dev/null +++ b/testData/empty_coax/empty_coax.step @@ -0,0 +1,178 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); +FILE_NAME('Open CASCADE Shape Model','2023-06-22T17:28:23',(''),(''), + 'Open CASCADE STEP processor 7.6','FreeCAD','Unknown'); +FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }')); +ENDSEC; +DATA; +#1 = APPLICATION_PROTOCOL_DEFINITION('international standard', + 'automotive_design',2000,#2); +#2 = APPLICATION_CONTEXT( + 'core data for automotive mechanical design processes'); +#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10); +#4 = PRODUCT_DEFINITION_SHAPE('','',#5); +#5 = PRODUCT_DEFINITION('design','',#6,#9); +#6 = PRODUCT_DEFINITION_FORMATION('','',#7); +#7 = PRODUCT('Unnamed','Unnamed','',(#8)); +#8 = PRODUCT_CONTEXT('',#2,'mechanical'); +#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#10 = SHAPE_REPRESENTATION('',(#11,#15,#19),#23); +#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14); +#12 = CARTESIAN_POINT('',(0.,0.,0.)); +#13 = DIRECTION('',(0.,0.,1.)); +#14 = DIRECTION('',(1.,0.,-0.)); +#15 = AXIS2_PLACEMENT_3D('',#16,#17,#18); +#16 = CARTESIAN_POINT('',(0.,0.,0.)); +#17 = DIRECTION('',(0.,-0.,1.)); +#18 = DIRECTION('',(1.,6.123233995737E-17,0.)); +#19 = AXIS2_PLACEMENT_3D('',#20,#21,#22); +#20 = CARTESIAN_POINT('',(0.,0.,0.)); +#21 = DIRECTION('',(0.,-0.,1.)); +#22 = DIRECTION('',(1.,6.123233995737E-17,0.)); +#23 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#27)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#24,#25,#26)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#24 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#25 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#26 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#27 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#24, + 'distance_accuracy_value','confusion accuracy'); +#28 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); +#29 = SHAPE_DEFINITION_REPRESENTATION(#30,#36); +#30 = PRODUCT_DEFINITION_SHAPE('','',#31); +#31 = PRODUCT_DEFINITION('design','',#32,#35); +#32 = PRODUCT_DEFINITION_FORMATION('','',#33); +#33 = PRODUCT('Conductor_0','Conductor_0','',(#34)); +#34 = PRODUCT_CONTEXT('',#2,'mechanical'); +#35 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#36 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#37),#64); +#37 = SHELL_BASED_SURFACE_MODEL('',(#38)); +#38 = OPEN_SHELL('',(#39)); +#39 = ADVANCED_FACE('',(#40),#53,.T.); +#40 = FACE_BOUND('',#41,.T.); +#41 = EDGE_LOOP('',(#42)); +#42 = ORIENTED_EDGE('',*,*,#43,.T.); +#43 = EDGE_CURVE('',#44,#44,#46,.T.); +#44 = VERTEX_POINT('',#45); +#45 = CARTESIAN_POINT('',(50.,0.,0.)); +#46 = SURFACE_CURVE('',#47,(#52),.PCURVE_S1.); +#47 = CIRCLE('',#48,50.); +#48 = AXIS2_PLACEMENT_3D('',#49,#50,#51); +#49 = CARTESIAN_POINT('',(0.,0.,0.)); +#50 = DIRECTION('',(0.,0.,1.)); +#51 = DIRECTION('',(1.,0.,-0.)); +#52 = PCURVE('',#53,#58); +#53 = PLANE('',#54); +#54 = AXIS2_PLACEMENT_3D('',#55,#56,#57); +#55 = CARTESIAN_POINT('',(-3.500646739301E-15,-2.041077998579E-15,0.)); +#56 = DIRECTION('',(0.,0.,1.)); +#57 = DIRECTION('',(1.,0.,-0.)); +#58 = DEFINITIONAL_REPRESENTATION('',(#59),#63); +#59 = CIRCLE('',#60,50.); +#60 = AXIS2_PLACEMENT_2D('',#61,#62); +#61 = CARTESIAN_POINT('',(3.500646739301E-15,2.041077998579E-15)); +#62 = DIRECTION('',(1.,0.)); +#63 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#64 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#68)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#65,#66,#67)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#65 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#66 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#67 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#68 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#65, + 'distance_accuracy_value','confusion accuracy'); +#69 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#70,#72); +#70 = ( REPRESENTATION_RELATIONSHIP('','',#36,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#71) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#71 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); +#72 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#73); +#73 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('11','Conductor_0','',#5,#31,$); +#74 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#33)); +#75 = SHAPE_DEFINITION_REPRESENTATION(#76,#82); +#76 = PRODUCT_DEFINITION_SHAPE('','',#77); +#77 = PRODUCT_DEFINITION('design','',#78,#81); +#78 = PRODUCT_DEFINITION_FORMATION('','',#79); +#79 = PRODUCT('Conductor_1','Conductor_1','',(#80)); +#80 = PRODUCT_CONTEXT('',#2,'mechanical'); +#81 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#82 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#83),#110); +#83 = SHELL_BASED_SURFACE_MODEL('',(#84)); +#84 = OPEN_SHELL('',(#85)); +#85 = ADVANCED_FACE('',(#86),#99,.T.); +#86 = FACE_BOUND('',#87,.T.); +#87 = EDGE_LOOP('',(#88)); +#88 = ORIENTED_EDGE('',*,*,#89,.T.); +#89 = EDGE_CURVE('',#90,#90,#92,.T.); +#90 = VERTEX_POINT('',#91); +#91 = CARTESIAN_POINT('',(25.,0.,0.)); +#92 = SURFACE_CURVE('',#93,(#98),.PCURVE_S1.); +#93 = CIRCLE('',#94,25.); +#94 = AXIS2_PLACEMENT_3D('',#95,#96,#97); +#95 = CARTESIAN_POINT('',(0.,0.,0.)); +#96 = DIRECTION('',(0.,0.,1.)); +#97 = DIRECTION('',(1.,0.,-0.)); +#98 = PCURVE('',#99,#104); +#99 = PLANE('',#100); +#100 = AXIS2_PLACEMENT_3D('',#101,#102,#103); +#101 = CARTESIAN_POINT('',(-1.75032336965E-15,-1.020538999289E-15,0.)); +#102 = DIRECTION('',(0.,0.,1.)); +#103 = DIRECTION('',(1.,0.,-0.)); +#104 = DEFINITIONAL_REPRESENTATION('',(#105),#109); +#105 = CIRCLE('',#106,25.); +#106 = AXIS2_PLACEMENT_2D('',#107,#108); +#107 = CARTESIAN_POINT('',(1.75032336965E-15,1.020538999289E-15)); +#108 = DIRECTION('',(1.,0.)); +#109 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#110 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#114)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#111,#112,#113)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#111 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#112 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#113 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#114 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#111, + 'distance_accuracy_value','confusion accuracy'); +#115 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#116,#118); +#116 = ( REPRESENTATION_RELATIONSHIP('','',#82,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#117) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#117 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); +#118 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#119 + ); +#119 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('12','Conductor_1','',#5,#77,$); +#120 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#79)); +#121 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#122) + ,#64); +#122 = STYLED_ITEM('color',(#123),#39); +#123 = PRESENTATION_STYLE_ASSIGNMENT((#124,#130)); +#124 = SURFACE_STYLE_USAGE(.BOTH.,#125); +#125 = SURFACE_SIDE_STYLE('',(#126)); +#126 = SURFACE_STYLE_FILL_AREA(#127); +#127 = FILL_AREA_STYLE('',(#128)); +#128 = FILL_AREA_STYLE_COLOUR('',#129); +#129 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); +#130 = CURVE_STYLE('',#131,POSITIVE_LENGTH_MEASURE(0.1),#132); +#131 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#132 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, + 9.803921802644E-02); +#133 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#134) + ,#110); +#134 = STYLED_ITEM('color',(#135),#85); +#135 = PRESENTATION_STYLE_ASSIGNMENT((#136,#141)); +#136 = SURFACE_STYLE_USAGE(.BOTH.,#137); +#137 = SURFACE_SIDE_STYLE('',(#138)); +#138 = SURFACE_STYLE_FILL_AREA(#139); +#139 = FILL_AREA_STYLE('',(#140)); +#140 = FILL_AREA_STYLE_COLOUR('',#129); +#141 = CURVE_STYLE('',#142,POSITIVE_LENGTH_MEASURE(0.1),#132); +#142 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +ENDSEC; +END-ISO-10303-21; diff --git a/testData/five_wires/five_wires.FCStd b/testData/five_wires/five_wires.FCStd new file mode 100644 index 0000000000000000000000000000000000000000..01205bcef4b72c096b0b59a9d6286f8452d9c76c GIT binary patch literal 21398 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 literal 0 HcmV?d00001 diff --git a/testData/partially_filled_coax/partially_filled_coax.msh b/testData/partially_filled_coax/partially_filled_coax.msh new file mode 100644 index 0000000..e2b418b --- /dev/null +++ b/testData/partially_filled_coax/partially_filled_coax.msh @@ -0,0 +1,1020 @@ +$MeshFormat +2.2 0 8 +$EndMeshFormat +$PhysicalNames +4 +1 1 "Conductor_0" +1 2 "Conductor_1" +2 3 "Vacuum" +2 4 "Dielectric_1" +$EndPhysicalNames +$Nodes +798 +1 0.025 0 0 +2 0.035 0 0 +3 0.05 0 0 +4 0.02377641290737884 0.007725424859373692 0 +5 0.02022542485937368 0.01469463130731184 0 +6 0.01469463130731181 0.0202254248593737 0 +7 0.007725424859373656 0.02377641290737885 0 +8 -4.842927816585408e-17 0.025 0 +9 -0.007725424859373747 0.02377641290737882 0 +10 -0.0146946313073119 0.02022542485937363 0 +11 -0.02022542485937374 0.01469463130731175 0 +12 -0.02377641290737887 0.007725424859373605 0 +13 -0.025 -9.685855633170815e-17 0 +14 -0.02377641290737881 -0.007725424859373788 0 +15 -0.02022542485937363 -0.01469463130731191 0 +16 -0.01469463130731174 -0.02022542485937374 0 +17 -0.007725424859373583 -0.02377641290737887 0 +18 1.064300286356817e-16 -0.025 0 +19 0.007725424859373786 -0.02377641290737881 0 +20 0.01469463130731188 -0.02022542485937365 0 +21 0.02022542485937371 -0.0146946313073118 0 +22 0.02377641290737885 -0.007725424859373649 0 +23 0.02486304738420683 0.002613211581691339 0 +24 0.02445369001834514 0.005197792270443988 0 +25 0.02283863644106502 0.01016841607689502 0 +26 0.02165063509461096 0.01250000000000001 0 +27 0.01857862063693485 0.01672826515897147 0 +28 0.01672826515897145 0.01857862063693487 0 +29 0.01249999999999998 0.02165063509461098 0 +30 0.01016841607689498 0.02283863644106503 0 +31 0.005197792270443949 0.02445369001834515 0 +32 0.002613211581691297 0.02486304738420684 0 +33 -0.002613211581691388 0.02486304738420683 0 +34 -0.005197792270444038 0.02445369001834513 0 +35 -0.01016841607689507 0.02283863644106499 0 +36 -0.01250000000000007 0.02165063509461092 0 +37 -0.01672826515897153 0.01857862063693479 0 +38 -0.01857862063693492 0.01672826515897139 0 +39 -0.02165063509461101 0.01249999999999992 0 +40 -0.02283863644106505 0.01016841607689493 0 +41 -0.02445369001834516 0.005197792270443895 0 +42 -0.02486304738420685 0.002613211581691244 0 +43 -0.02486304738420682 -0.002613211581691437 0 +44 -0.02445369001834512 -0.005197792270444084 0 +45 -0.02283863644106498 -0.0101684160768951 0 +46 -0.02165063509461092 -0.01250000000000008 0 +47 -0.01857862063693479 -0.01672826515897153 0 +48 -0.01672826515897138 -0.01857862063693493 0 +49 -0.01249999999999992 -0.02165063509461101 0 +50 -0.01016841607689492 -0.02283863644106506 0 +51 -0.005197792270443887 -0.02445369001834516 0 +52 -0.002613211581691246 -0.02486304738420685 0 +53 0.002613211581691435 -0.02486304738420682 0 +54 0.005197792270444073 -0.02445369001834512 0 +55 0.0101684160768951 -0.02283863644106498 0 +56 0.01250000000000008 -0.02165063509461092 0 +57 0.01672826515897149 -0.01857862063693482 0 +58 0.01857862063693489 -0.01672826515897142 0 +59 0.02165063509461098 -0.01249999999999997 0 +60 0.02283863644106503 -0.01016841607689498 0 +61 0.02445369001834515 -0.005197792270443953 0 +62 0.02486304738420683 -0.002613211581691313 0 +63 0.03328697807033037 0.01081559480312317 0 +64 0.02831559480312315 0.02057248383023658 0 +65 0.02057248383023654 0.02831559480312318 0 +66 0.01081559480312312 0.03328697807033039 0 +67 -6.78009894321957e-17 0.035 0 +68 -0.01081559480312325 0.03328697807033035 0 +69 -0.02057248383023666 0.02831559480312309 0 +70 -0.02831559480312324 0.02057248383023645 0 +71 -0.03328697807033042 0.01081559480312305 0 +72 -0.035 -1.356019788643914e-16 0 +73 -0.03328697807033033 -0.0108155948031233 0 +74 -0.02831559480312308 -0.02057248383023667 0 +75 -0.02057248383023644 -0.02831559480312325 0 +76 -0.01081559480312302 -0.03328697807033042 0 +77 1.490020400899544e-16 -0.035 0 +78 0.0108155948031233 -0.03328697807033033 0 +79 0.02057248383023663 -0.02831559480312311 0 +80 0.02831559480312319 -0.02057248383023652 0 +81 0.03328697807033039 -0.01081559480312311 0 +82 0.03480826633788956 0.003658496214367875 0 +83 0.0342351660256832 0.007276909178621583 0 +84 0.03197409101749103 0.01423578250765302 0 +85 0.03031088913245535 0.01750000000000002 0 +86 0.02601006889170879 0.02341957122256006 0 +87 0.02341957122256002 0.02601006889170882 0 +88 0.01749999999999997 0.03031088913245537 0 +89 0.01423578250765297 0.03197409101749105 0 +90 0.007276909178621528 0.03423516602568321 0 +91 0.003658496214367817 0.03480826633788957 0 +92 -0.003658496214367944 0.03480826633788955 0 +93 -0.007276909178621653 0.03423516602568318 0 +94 -0.0142357825076531 0.03197409101749099 0 +95 -0.0175000000000001 0.03031088913245529 0 +96 -0.02341957122256013 0.02601006889170871 0 +97 -0.02601006889170889 0.02341957122255994 0 +98 -0.03031088913245542 0.01749999999999989 0 +99 -0.03197409101749107 0.0142357825076529 0 +100 -0.03423516602568322 0.007276909178621453 0 +101 -0.03480826633788957 0.003658496214367742 0 +102 -0.03480826633788955 -0.003658496214368011 0 +103 -0.03423516602568317 -0.007276909178621719 0 +104 -0.03197409101749098 -0.01423578250765314 0 +105 -0.03031088913245529 -0.01750000000000011 0 +106 -0.02601006889170871 -0.02341957122256014 0 +107 -0.02341957122255993 -0.0260100688917089 0 +108 -0.01749999999999988 -0.03031088913245542 0 +109 -0.01423578250765289 -0.03197409101749108 0 +110 -0.007276909178621441 -0.03423516602568323 0 +111 -0.003658496214367743 -0.03480826633788957 0 +112 0.00365849621436801 -0.03480826633788955 0 +113 0.007276909178621702 -0.03423516602568317 0 +114 0.01423578250765313 -0.03197409101749098 0 +115 0.01750000000000011 -0.03031088913245529 0 +116 0.0234195712225601 -0.02601006889170875 0 +117 0.02601006889170884 -0.02341957122255999 0 +118 0.03031088913245537 -0.01749999999999996 0 +119 0.03197409101749105 -0.01423578250765298 0 +120 0.03423516602568321 -0.007276909178621534 0 +121 0.03480826633788957 -0.003658496214367839 0 +122 0.04814586436738997 0.01348983855785121 0 +123 0.04272097022732443 0.02597919750177168 0 +124 0.0341276571609327 0.03654179821390621 0 +125 0.02300325188655761 0.04439426092011876 0 +126 0.0101728006526317 0.04895420438411614 0 +127 -0.003412120668233555 0.04988343845952696 0 +128 -0.01674398060854931 0.04711304610594103 0 +129 -0.02883401610574336 0.04084849465052211 0 +130 -0.03878556453522099 0.03155439721630265 0 +131 -0.04586056507527264 0.01992005449231209 0 +132 -0.04953429730181653 0.006808332454812355 0 +133 -0.04953429730181654 -0.006808332454812343 0 +134 -0.04586056507527265 -0.01992005449231208 0 +135 -0.03878556453522099 -0.03155439721630263 0 +136 -0.02883401610574336 -0.0408484946505221 0 +137 -0.01674398060854932 -0.04711304610594102 0 +138 -0.003412120668233523 -0.04988343845952697 0 +139 0.01017280065263166 -0.04895420438411616 0 +140 0.02300325188655762 -0.04439426092011876 0 +141 0.03412765716093268 -0.03654179821390623 0 +142 0.04272097022732443 -0.02597919750177168 0 +143 0.04814586436738996 -0.01348983855785122 0 +144 0.04979284212657657 0.004546743115442346 0 +145 0.04917308508168711 0.009055810485492786 0 +146 0.04671969185803355 0.01781208557947084 0 +147 0.04490638526818481 0.02198673605029529 0 +148 0.04018155577274891 0.02975638714093948 0 +149 0.03730918429238428 0.03328700598487203 0 +150 0.03066333751418581 0.03949379359457793 0 +151 0.02694493179577877 0.04211853096347058 0 +152 0.01887095978763073 0.04630212604939026 0 +153 0.01458229697274126 0.04782631717996673 0 +154 0.005679009302523745 0.04967644163325156 0 +155 0.001138159892805283 0.04998704424206746 0 +156 -0.007934127322812566 0.04936648279577348 0 +157 -0.01239038929964499 0.04844046090824532 0 +158 -0.02095882602083321 0.04539523776596445 0 +159 -0.02500000000000001 0.04330127018922193 0 +160 -0.0324291044731378 0.03805723562044824 0 +161 -0.03575547506774498 0.0349506223503941 0 +162 -0.04149426459995125 0.02789670240923167 0 +163 -0.04385913012012971 0.02400784674029578 0 +164 -0.04748198494501596 0.01566719839924412 0 +165 -0.04870995413367395 0.01128451896606054 0 +166 -0.04994818368233638 0.0022757299566482 0 +167 -0.04994818368233638 -0.002275729956648165 0 +168 -0.04870995413367395 -0.01128451896606055 0 +169 -0.04748198494501596 -0.01566719839924413 0 +170 -0.04385913012012971 -0.02400784674029579 0 +171 -0.04149426459995125 -0.02789670240923168 0 +172 -0.03575547506774496 -0.0349506223503941 0 +173 -0.03242910447313779 -0.03805723562044825 0 +174 -0.02500000000000002 -0.04330127018922192 0 +175 -0.02095882602083324 -0.04539523776596443 0 +176 -0.01239038929964498 -0.04844046090824532 0 +177 -0.007934127322812524 -0.04936648279577349 0 +178 0.001138159892805293 -0.04998704424206746 0 +179 0.005679009302523733 -0.04967644163325156 0 +180 0.01458229697274125 -0.04782631717996674 0 +181 0.01887095978763075 -0.04630212604939025 0 +182 0.02694493179577877 -0.04211853096347058 0 +183 0.0306633375141858 -0.03949379359457795 0 +184 0.03730918429238426 -0.03328700598487204 0 +185 0.04018155577274891 -0.02975638714093947 0 +186 0.0449063852681848 -0.02198673605029531 0 +187 0.04671969185803354 -0.01781208557947088 0 +188 0.0491730850816871 -0.00905581048549281 0 +189 0.04979284212657656 -0.004546743115442387 0 +190 -0.0190721837040917 0.03729412970191382 0 +191 -0.01907218370409146 -0.03729412970191388 0 +192 0.04157197759647066 -0.006323973929748046 0 +193 0.04150283502715513 0.00623485162858018 0 +194 -0.02947084511674433 -0.02968080868736735 0 +195 -0.02947084511674447 0.02968080868736709 0 +196 -0.006731994228608731 0.04113861936153437 0 +197 -0.006731994228608484 -0.04113861936153435 0 +198 -0.03655482114705325 -0.01936301426746955 0 +199 -0.03655482114705333 0.01936301426746931 0 +200 0.005377364689082973 -0.0408775197717258 0 +201 0.005377364689082807 0.04087751977172582 0 +202 0.02917198046883245 -0.029366079685109 0 +203 0.02917198046883236 0.02936607968510906 0 +204 -0.04036506661239687 -0.007852509818702327 0 +205 -0.04083232292637089 0.006467204613843838 0 +206 0.01875721209727116 -0.03681310151609239 0 +207 0.01875721209727099 0.03681310151609247 0 +208 0.03929050675464234 -0.01634148167667973 0 +209 0.03928345139042648 0.01633238756431567 0 +210 0.03820464030782708 0.02710815822955081 0 +211 0.03368831038832972 0.02823711895732994 0 +212 0.02888651858026262 0.02643488106681824 0 +213 0.02860105669169289 0.0235036824485274 0 +214 0.03311738661119024 0.02237472172074828 0 +215 0.03791917841925734 0.02417695961125998 0 +216 0.03340284849975997 0.0253059203390391 0 +217 0.02860105669169294 -0.02350368244852735 0 +218 0.0288865185802627 -0.02643488106681818 0 +219 0.03368831038832978 -0.02823711895732989 0 +220 0.03820464030782711 -0.02710815822955079 0 +221 0.03791917841925735 -0.02417695961125996 0 +222 0.03311738661119027 -0.02237472172074824 0 +223 0.03340284849976002 -0.02530592033903907 0 +224 -0.04052081871705488 -0.003079271674520272 0 +225 -0.04067657082171289 0.001693966469661783 0 +226 -0.04373298105151944 0.002042025590958445 0 +227 -0.04663363917666799 -0.002383153431926948 0 +228 -0.04647788707200998 -0.007156391576109004 0 +229 -0.04342147684220343 -0.007504450697405666 0 +230 -0.04357722894686143 -0.00273121255322361 0 +231 0.04157748240309707 -0.02276662556007436 0 +232 0.04043399457886971 -0.01955405361837704 0 +233 0.03563220277080263 -0.01775181572786532 0 +234 0.03197389878696291 -0.01916214977905092 0 +235 0.03677569059502998 -0.02096438766956264 0 +236 0.03197154699889092 0.01915911840826294 0 +237 0.03562749919465871 0.01774575298628931 0 +238 0.0404292910027258 0.01954799087680101 0 +239 0.04157513061502511 0.02276359418928635 0 +240 0.03677333880695802 0.02096135629877464 0 +241 0.02900417547304546 0.0366322326479683 0 +242 0.02388069378515822 0.03672266708203038 0 +243 0.02222880155445811 0.03433076090576467 0 +244 0.02570039101164523 0.03184842029543686 0 +245 0.03082387269953247 0.03175798586137478 0 +246 0.03247576493023259 0.03414989203764049 0 +247 0.02735228324234534 0.03424032647170257 0 +248 0.02570039101164535 -0.0318484202954368 0 +249 0.02222880155445825 -0.03433076090576459 0 +250 0.02388069378515833 -0.03672266708203033 0 +251 0.0290041754730455 -0.03663223264796828 0 +252 0.0324757649302326 -0.03414989203764048 0 +253 0.03082387269953253 -0.03175798586137474 0 +254 0.02735228324234543 -0.03424032647170253 0 +255 -0.04373298105151944 0.006580913894166677 0 +256 -0.04663363917666798 0.006694623174489516 0 +257 -0.04690956343034788 0.002155734871281292 0 +258 0.01303427113417816 -0.0449071700947749 0 +259 0.01589574161572466 -0.04086013580543364 0 +260 0.01429726296120843 -0.03816790760130353 0 +261 0.009837313825145704 -0.03952271368651466 0 +262 0.006975843343599204 -0.04356974797585591 0 +263 0.008574321998115433 -0.04626197617998604 0 +264 0.01143579247966193 -0.04221494189064477 0 +265 0.009837313825145532 0.03952271368651471 0 +266 0.01429726296120826 0.03816790760130358 0 +267 0.01589574161572456 0.04086013580543369 0 +268 0.01303427113417813 0.04490717009477491 0 +269 0.008574321998115402 0.04626197617998604 0 +270 0.006975843343599104 0.04356974797585593 0 +271 0.01143579247966183 0.0422149418906448 0 +272 0.02158790529012873 0.04186720778544332 0 +273 0.02017255869369986 0.0393401546507679 0 +274 0.02545516046907852 0.03947514202471367 0 +275 0.02017255869369998 -0.03934015465076784 0 +276 0.0215879052901288 -0.0418672077854433 0 +277 0.02545516046907858 -0.03947514202471363 0 +278 -0.04418448435897206 0.01543577119948934 0 +279 -0.04250840364267148 0.01095148790666659 0 +280 -0.0394064889999317 0.01076580783171899 0 +281 -0.03798065507349252 0.01506441104959415 0 +282 -0.0396567357897931 0.0195486943424169 0 +283 -0.04275865043253287 0.0197343744173645 0 +284 -0.04108256971623229 0.01525009112454175 0 +285 -0.03782490296883446 -0.01552617945121381 0 +286 -0.03909498479061567 -0.01168934463495807 0 +287 -0.04219689943335547 -0.01187502470990558 0 +288 -0.04402873225431406 -0.01589753960110883 0 +289 -0.04275865043253285 -0.01973437441736457 0 +290 -0.03965673578979306 -0.01954869434241706 0 +291 -0.04092681761157425 -0.01571185952616131 0 +292 0.01740348961921439 -0.04364718158181646 0 +293 0.01740348961921433 0.04364718158181648 0 +294 -0.04567475400168693 0.01113964065971617 0 +295 -0.04551900189702892 -0.01160140906133567 0 +296 -0.02253840417497596 0.03475635603039824 0 +297 -0.02600462464586022 0.03221858235888267 0 +298 -0.02650472468790854 0.02922573739261909 0 +299 -0.0235386042590726 0.02877066609787109 0 +300 -0.02007238378818834 0.03130843976938667 0 +301 -0.01957228374614002 0.03430128473565024 0 +302 -0.02303850421702427 0.03176351106413466 0 +303 -0.0235386042590724 -0.02877066609787128 0 +304 -0.02650472468790837 -0.02922573739261931 0 +305 -0.02600462464586004 -0.03221858235888286 0 +306 -0.02253840417497575 -0.03475635603039837 0 +307 -0.01957228374613978 -0.03430128473565033 0 +308 -0.02007238378818811 -0.0313084397693868 0 +309 -0.02303850421702408 -0.03176351106413483 0 +310 -0.009454394611618408 0.03590419183406503 0 +311 -0.008093194420113569 0.03852140559779969 0 +312 -0.01084539072043638 0.03985712280832752 0 +313 -0.01495878721226404 0.03857562625512067 0 +314 -0.01631998740376888 0.035958412491386 0 +315 -0.01356779110344606 0.03462269528085817 0 +316 -0.01220659091194122 0.03723990904459284 0 +317 -0.0149587872122638 -0.0385756262551207 0 +318 -0.01084539072043614 -0.03985712280832753 0 +319 -0.008093194420113329 -0.03852140559779971 0 +320 -0.009454394611618174 -0.03590419183406507 0 +321 -0.01356779110344583 -0.03462269528085824 0 +322 -0.01631998740376865 -0.03595841249138607 0 +323 -0.01220659091194099 -0.03723990904459289 0 +324 0.04154893007336549 -0.002137698743638638 0 +325 0.04152588255026032 0.002048576442470771 0 +326 0.03933522335143676 0.004156567752386786 0 +327 0.03716761167571838 0.002078283876193393 0 +328 0.03719065919882356 -0.002107991309916015 0 +329 0.03938131839764711 -0.00421598261983203 0 +330 0.03935827087454193 -2.970743372262156e-05 0 +331 -0.03183217046018076 0.0262415438807345 0 +332 -0.03419349580361705 0.0228022790741019 0 +333 -0.0338084123657433 0.01976617078839169 0 +334 -0.03106200358443327 0.02016932730931407 0 +335 -0.02870067824099699 0.02360859211594666 0 +336 -0.02908576167887073 0.02664470040165688 0 +337 -0.03144708702230702 0.02320543559502429 0 +338 -0.03106200358443314 -0.02016932730931429 0 +339 -0.0338084123657432 -0.01976617078839192 0 +340 -0.03419349580361695 -0.02280227907410215 0 +341 -0.03183217046018064 -0.02624154388073474 0 +342 -0.02908576167887058 -0.02664470040165712 0 +343 -0.02870067824099683 -0.0236085921159469 0 +344 -0.03144708702230689 -0.02320543559502452 0 +345 -0.0004822922157946911 -0.04688146556359324 0 +346 0.002447536236644141 -0.04387949266765952 0 +347 0.001340911716519155 -0.04096455296832865 0 +348 -0.002695541256044664 -0.0410515861649315 0 +349 -0.005625369708483497 -0.04405355906086523 0 +350 -0.00451874518835851 -0.04696849876019609 0 +351 -0.001588916735919677 -0.04396652586426237 0 +352 -0.002695541256044885 0.04105158616493152 0 +353 0.00134091171651896 0.04096455296832867 0 +354 0.00244753623664402 0.04387949266765954 0 +355 -0.000482292215794768 0.04688146556359325 0 +356 -0.004518745188358614 0.04696849876019609 0 +357 -0.005625369708483672 0.04405355906086524 0 +358 -0.001588916735919827 0.04396652586426238 0 +359 0.003584909792722032 -0.03891834651448386 0 +360 0.001792454896361091 -0.03695917325724193 0 +361 -0.002243998076202729 -0.03704620645384478 0 +362 -0.004487996152405607 -0.03909241290768957 0 +363 -0.0004515431798417868 -0.03900537971108672 0 +364 0.00179245489636089 0.03695917325724194 0 +365 0.003584909792721849 0.03891834651448388 0 +366 -0.004487996152405843 0.03909241290768958 0 +367 -0.002243998076202955 0.03704620645384479 0 +368 -0.000451543179841998 0.03900537971108672 0 +369 -0.03564634091768584 -0.009827899808316311 0 +370 -0.03800570376504136 -0.008840204813509318 0 +371 -0.03546554012147895 -0.0165138744460208 0 +372 -0.03437625909590464 -0.01366473462457205 0 +373 -0.03673562194326015 -0.01267703962976506 0 +374 -0.0383172079743574 0.007916668010270241 0 +375 -0.0358020930223439 0.009366131406696643 0 +376 -0.03437625909590472 0.0136647346245718 0 +377 -0.03546554012147903 0.01651387444602055 0 +378 -0.03689137404791822 0.0122152712281454 0 +379 -0.03694410764212364 0.002155734871281189 0 +380 -0.03888821528424726 0.004311469742562513 0 +381 -0.03857671107493125 -0.005235006545801596 0 +382 -0.03678835553746563 -0.002617503272900866 0 +383 -0.03873246317958926 -0.0004617684016195416 0 +384 0.01936230267492617 0.03398059927843604 0 +385 0.01996739325258136 0.03114809704077961 0 +386 0.02343898270976848 0.0286657564304518 0 +387 0.02630548158930042 0.02901591805778043 0 +388 0.02283389213211329 0.03149825866810823 0 +389 0.01996739325258147 -0.03114809704077954 0 +390 0.01936230267492631 -0.03398059927843596 0 +391 0.02630548158930051 -0.02901591805778037 0 +392 0.02343898270976857 -0.02866575643045174 0 +393 0.02283389213211341 -0.03149825866810817 0 +394 0.01346280056783907 0.03446235255225109 0 +395 0.01611000633255503 0.03563772703417178 0 +396 0.007190108060429577 0.03834733920459402 0 +397 0.009002851431776347 0.0358171586374622 0 +398 0.0116500571964923 0.03699253311938289 0 +399 0.01611000633255521 -0.0356377270341717 0 +400 0.01346280056783925 -0.03446235255225101 0 +401 0.009002851431776523 -0.03581715863746215 0 +402 0.007190108060429749 -0.03834733920459397 0 +403 0.01165005719649248 -0.03699253311938284 0 +404 0.03555424017798851 0.03080315760364019 0 +405 0.03555424017798854 -0.03080315760364017 0 +406 0.03528580251036241 0.01265452572352067 0 +407 0.03728462695039444 0.01449345664391817 0 +408 0.03385614384679096 0.0160227233573229 0 +409 0.03728933052653836 -0.01449951938549419 0 +410 0.03528815429843438 -0.01265755709430865 0 +411 0.03385849563486293 -0.01602575472811089 0 +412 -0.03804198340583177 0.02749060290002487 0 +413 -0.03729840227644255 0.02342680858374709 0 +414 -0.03257575158956998 0.03030533819701228 0 +415 -0.03568065806239548 0.03092986770665746 0 +416 -0.03493707693300627 0.02686607339037969 0 +417 -0.0372984022764425 -0.02342680858374724 0 +418 -0.03804198340583174 -0.02749060290002494 0 +419 -0.03568065806239544 -0.03092986770665754 0 +420 -0.03257575158956989 -0.03030533819701244 0 +421 -0.0349370769330062 -0.02686607339037984 0 +422 0.004064844628137334 -0.04684700188234827 0 +423 0.004064844628137278 0.04684700188234828 0 +424 -0.04063607195571143 0.02375585447233225 0 +425 -0.0406360719557114 -0.02375585447233234 0 +426 -0.01340665181523571 -0.04512157052447213 0 +427 -0.0100693230219221 -0.04313009494300325 0 +428 -0.01829611600557741 -0.0405671018365896 0 +429 -0.01752004830706337 -0.0438400739712653 0 +430 -0.01418271951374975 -0.04184859838979642 0 +431 -0.01006932302192226 0.04313009494300325 0 +432 -0.01340665181523578 0.04512157052447214 0 +433 -0.01752004830706344 0.04384007397126529 0 +434 -0.01829611600557757 0.04056710183658955 0 +435 -0.01418271951374991 0.0418485983897964 0 +436 -0.02904629244274373 0.03712593266280377 0 +437 -0.0292585687797441 0.03340337067508543 0 +438 -0.02232612783797558 0.03847891801811658 0 +439 -0.02558007197185947 0.03966370633431934 0 +440 -0.02579234830885984 0.03594114434660101 0 +441 -0.02925856877974401 -0.0334033706750856 0 +442 -0.02904629244274369 -0.03712593266280385 0 +443 -0.02558007197185939 -0.03966370633431936 0 +444 -0.02232612783797542 -0.03847891801811663 0 +445 -0.02579234830885972 -0.03594114434660111 0 +446 0.04716761167571838 0.002078283876193393 0 +447 0.04433522335143676 0.004156567752386786 0 +448 0.04438131839764711 -0.004215982619832031 0 +449 0.04719065919882356 -0.002107991309916016 0 +450 0.04435827087454193 -2.970743372262223e-05 0 +451 -0.00901883695035533 -0.04631518768851771 0 +452 -0.009018836950355429 0.04631518768851772 0 +453 -0.03255180821920908 0.03422955555273647 0 +454 -0.03255180821920902 -0.03422955555273657 0 +455 0.04376327318677709 -0.008712595472449104 0 +456 0.04595456877708353 -0.01110121701515016 0 +457 0.04684596826824478 -0.006642175843561082 0 +458 0.04593152125397836 0.01107150958142753 0 +459 0.04371717814056675 0.008653180605003858 0 +460 0.0468229207451396 0.006612468409838437 0 +461 0.04223758904941431 0.01538487122882752 0 +462 0.04519172670840214 0.01443735489333937 0 +463 0.04363650950554827 0.01871040306469393 0 +464 0.04519407849647409 -0.01444038626412739 0 +465 0.04224229262555822 -0.01539093397040356 0 +466 0.04363886129362023 -0.01871343443548197 0 +467 -0.02167700324164158 -0.04199687921903341 0 +468 -0.02167700324164164 0.04199687921903339 0 +469 -0.0169359887372483 0.0331930366172867 0 +470 -0.01693598873724808 -0.03319303661728679 0 +471 0.03876421604154688 0.007761766020094509 0 +472 0.03602559705593863 0.00928868041160884 0 +473 0.0368487557969093 0.005723419007189877 0 +474 0.03604864457904382 -0.00931838784533142 0 +475 0.03881031108775724 -0.007821180887539735 0 +476 0.03687180332001448 -0.005753126440912473 0 +477 -0.02630016174367099 -0.02637014960054546 0 +478 -0.02630016174367116 0.02637014960054525 0 +479 -0.005889133207199443 0.03672735057503569 0 +480 -0.005889133207199223 -0.03672735057503571 0 +481 -0.03294660043233316 -0.01703293225837426 0 +482 -0.03294660043233329 0.01703293225837403 0 +483 0.005437590027357561 -0.03664031737843284 0 +484 0.005437590027357384 0.03664031737843286 0 +485 0.02620054019436713 -0.02626523993312592 0 +486 0.02620054019436706 0.02626523993312597 0 +487 -0.03646949965865654 -0.006262638403897352 0 +488 -0.03662525176331456 0.005800870002277679 0 +489 0.0168309982016413 0.03303269388867962 0 +490 0.01683099820164147 -0.03303269388867955 0 +491 0.04005099703525179 -0.0130023124277025 0 +492 0.04081148731586122 -0.009663143178725273 0 +493 0.0380498208071478 -0.01116035013651696 0 +494 0.04076304048157892 0.009600696940492013 0 +495 0.0400232459360027 0.01296654225240384 0 +496 0.03802442149597066 0.01112761133200634 0 +497 0.04300278290616765 -0.01205176472142633 0 +498 0.04297738359499053 0.01201902591691569 0 +499 0.02643264019898761 -0.01346810287871362 0 +500 0.02930080737564505 0.004640791977248593 0 +501 0.004640791977248707 -0.02930080737564503 0 +502 -0.02097706203261962 -0.02097706203261979 0 +503 -0.02097706203261978 0.02097706203261963 0 +504 -0.02930080737564504 -0.004640791977248705 0 +505 -0.02921757015845996 0.004653975457306514 0 +506 0.01345491939865571 -0.02634940298180244 0 +507 -0.02627990252116526 0.01339689759245197 0 +508 0.02086214324299751 -0.02085380351238706 0 +509 0.01346810287871364 0.0264326401989876 0 +510 -0.01340851161059851 0.02637304893087233 0 +511 0.0291424807800407 -0.004615715508015278 0 +512 0.02634940298180248 0.01345491939865564 0 +513 -0.004595437829372185 0.02921862379864065 0 +514 0.02085380351238709 0.02086214324299748 0 +515 -0.0262898117136872 -0.0133953281305405 0 +516 0.004621114811333881 0.02913269702087351 0 +517 -0.004653975457306499 -0.02921757015845996 0 +518 -0.01339689759245196 -0.02627990252116527 0 +519 -0.01818449309035727 0.02766807951237283 0 +520 -0.01579650235047789 0.02702056422162258 0 +521 -0.01254420600810675 0.02867769197735833 0 +522 -0.011679900405615 0.03098233502384434 0 +523 -0.01504809803941724 0.02955267636027287 0 +524 -0.008742209145206226 0.03193085997976712 0 +525 -0.006668823487289205 0.03057474188920389 0 +526 -0.00306362521958148 0.03114574919909377 0 +527 -0.001531812609790774 0.03307287459954689 0 +528 -0.00517694774078726 0.03275401872073779 0 +529 0.001540371603777915 0.03304423234029117 0 +530 0.003080743207555898 0.03108846468058234 0 +531 0.006685941475263626 0.03051745737069247 0 +532 0.008750768139193371 0.03190221772051143 0 +533 0.005185506734774407 0.0327253764614821 0 +534 -0.02586941721295542 0.02070734323103084 0 +535 -0.0234232396227876 0.02084220263182524 0 +536 -0.02084220263182541 0.02342323962278745 0 +537 -0.02070734323103103 0.02586941721295527 0 +538 -0.0234689007156296 0.02346890071562943 0 +539 -0.03195825450543523 -0.008757327194498435 0 +540 -0.03062953094054013 -0.006699059585873571 0 +541 -0.03120053825043003 -0.003093861318165849 0 +542 -0.03310026912521501 -0.001546930659082992 0 +543 -0.03278141324640592 -0.005192065790079478 0 +544 0.01169976416165329 0.0310021987798828 0 +545 0.01258393352018346 0.0287174194894352 0 +546 0.0158362298625546 0.02706029173369946 0 +547 0.01820435684639557 0.02768794326841132 0 +548 0.01506796179545552 0.02957254011631134 0 +549 -0.03307252338615332 0.001551325152435414 0 +550 -0.03114504677230664 0.003102650304870964 0 +551 -0.03057403946241678 0.006707848572578692 0 +552 -0.03193050876637359 0.00876172168785087 0 +553 -0.03275366750734425 0.005196460283431902 0 +554 -0.02070734323103083 -0.02586941721295543 0 +555 -0.02084220263182522 -0.02342323962278761 0 +556 -0.02342323962278744 -0.02084220263182542 0 +557 -0.02586941721295526 -0.02070734323103104 0 +558 -0.02346890071562942 -0.02346890071562961 0 +559 0.0310021987798828 -0.01169976416165328 0 +560 0.02871741948943521 -0.01258393352018345 0 +561 0.02706029173369947 -0.01583622986255458 0 +562 0.02768794326841133 -0.01820435684639555 0 +563 0.02957254011631134 -0.01506796179545551 0 +564 0.02066625705762006 0.02583111094974794 0 +565 0.02076003028500358 0.02334662709637271 0 +566 0.02334106727596578 0.02076559010541051 0 +567 0.02582833103954446 0.02066903696782355 0 +568 0.02342781454221864 0.02343059445242212 0 +569 0.03195825450543526 0.00875732719449831 0 +570 0.03062953094054015 0.006699059585873452 0 +571 0.03120053825043003 0.003093861318165728 0 +572 0.03310026912521501 0.001546930659082865 0 +573 0.03278141324640593 0.00519206579007935 0 +574 0.008757327194498435 -0.03195825450543523 0 +575 0.006699059585873572 -0.03062953094054013 0 +576 0.003093861318165854 -0.03120053825043002 0 +577 0.001546930659083002 -0.03310026912521501 0 +578 0.005192065790079472 -0.03278141324640592 0 +579 0.02766019752934959 0.01819996235304293 0 +580 0.02700480025557603 0.01582744087584928 0 +581 0.02866192801131178 0.01257514453347815 0 +582 0.03097445304082107 0.01169536966830066 0 +583 0.02954479437724962 0.01506356730210289 0 +584 -0.01167602906623266 -0.03095128622060871 0 +585 -0.01253646332934231 -0.02861559437088699 0 +586 -0.01578875967171345 -0.02695846661515126 0 +587 -0.01818062175097494 -0.02763703070913726 0 +588 -0.01504422670003491 -0.02952162755703726 0 +589 -0.0015513251524354 -0.03307252338615332 0 +590 -0.003102650304870949 -0.03114504677230664 0 +591 -0.006707848572578671 -0.03057403946241678 0 +592 -0.008761721687850844 -0.0319305087663736 0 +593 -0.005196460283431894 -0.03275366750734426 0 +594 -0.0309512862206087 0.01167602906623269 0 +595 -0.02861559437088698 0.01253646332934233 0 +596 -0.02695846661515126 0.01578875967171347 0 +597 -0.02763703070913725 0.01818062175097496 0 +598 -0.02952162755703725 0.01504422670003492 0 +599 -0.02764033377331112 -0.01818009859700461 0 +600 -0.02696507274349916 -0.01578771336377256 0 +601 -0.02862220049923491 -0.01253541702140144 0 +602 -0.03095458928478262 -0.01167550591226237 0 +603 -0.02952493062121115 -0.01504370354606458 0 +604 0.02583111094974797 -0.02066625705762003 0 +605 0.02334662709637274 -0.02076003028500355 0 +606 0.02076559010541055 -0.02334106727596575 0 +607 0.02066903696782359 -0.02582833103954443 0 +608 0.02343059445242215 -0.0234278145422186 0 +609 0.0330474935933469 -0.001538571836005092 0 +610 0.0310949871866938 -0.003077143672010185 0 +611 0.03052397987680393 -0.006682341939717887 0 +612 0.03190547897356716 -0.008748968371420498 0 +613 0.03272863771453782 -0.005183706967001549 0 +614 0.01819996235304299 -0.02766019752934955 0 +615 0.01582744087584935 -0.027004800255576 0 +616 0.01257514453347824 -0.02866192801131173 0 +617 0.01169536966830077 -0.03097445304082103 0 +618 0.01506356730210298 -0.02954479437724957 0 +619 -0.01426592474174077 0.02227463288320653 0 +620 -0.01383721817616964 0.02432384090703943 0 +621 -0.01593136175127226 0.02457438663145476 0 +622 -0.01845421189194603 0.02277572433203719 0 +623 -0.01888291845751715 0.0207265163082043 0 +624 -0.01678877488241453 0.02047597058378896 0 +625 -0.0163600683168434 0.02252517860762186 0 +626 0.01051910685625372 0.02733265913961624 0 +627 0.0075701108337938 0.02823267808024487 0 +628 0.005655884827347139 0.02734726898304195 0 +629 0.006690654843360398 0.0255618409452104 0 +630 0.009639650865820314 0.02466182200458177 0 +631 0.01155387687226698 0.02554723110178468 0 +632 0.008604880849807057 0.02644725004241332 0 +633 -0.02224688714414482 -0.0142615302483881 0 +634 -0.02426834942891601 -0.0138284291894643 0 +635 -0.02451889515333134 -0.01592257276456693 0 +636 -0.02274797859297548 -0.01844981739859336 0 +637 -0.02072651630820429 -0.01888291845751717 0 +638 -0.02047597058378896 -0.01678877488241454 0 +639 -0.02249743286856015 -0.01635567382349073 0 +640 0.001540371603777928 0.0263775656736245 0 +641 0.003080743207555905 0.02775513134724901 0 +642 0.001548930597765192 0.02916133928012922 0 +643 -0.001523253615803496 0.02918998153938494 0 +644 -0.003063625219581473 0.02781241586576044 0 +645 -0.001531812609790761 0.02640620793288022 0 +646 8.558993987216017e-06 0.02778377360650472 0 +647 -0.02640585671948665 0.00155132515243544 0 +648 -0.0278117134389733 0.003102650304870977 0 +649 -0.02924531589752165 0.001555719645788108 0 +650 -0.02927306163658334 -0.001542536165730298 0 +651 -0.02786720491709669 -0.003093861318165836 0 +652 -0.02643360245854835 -0.001546930659082966 0 +653 -0.02783945917803499 4.394493352570878e-06 0 +654 0.02043766432058165 -0.01674768870900355 0 +655 0.02064990378178958 -0.01880074611069531 0 +656 0.02271897556166088 -0.01839190330116258 0 +657 0.02457580788032425 -0.0159300030899381 0 +658 0.02436356841911631 -0.01387694568824635 0 +659 0.02229449663924501 -0.01428578849777907 0 +660 0.02250673610045294 -0.01633884589947083 0 +661 0.02831700591103086 0.007578834451050939 0 +662 0.02733320444641667 0.01051687692485329 0 +663 0.02549173962366126 0.01154508788556165 0 +664 0.02463407626552005 0.009635256372467675 0 +665 0.02561787773013424 0.006697213898665326 0 +666 0.02745934255288964 0.005669002937956959 0 +667 0.02647554108827545 0.008607045411759308 0 +668 -0.02274467552880161 0.01845034055256374 0 +669 -0.02451228902498344 0.01592361907250786 0 +670 -0.02426174330056809 0.01382947549740523 0 +671 -0.02224358407997092 0.01426205340235849 0 +672 -0.02047597058378909 0.01678877488241438 0 +673 -0.02072651630820443 0.018882918457517 0 +674 -0.02249412980438626 0.01635619697746112 0 +675 -0.001551325152435429 -0.02640585671948665 0 +676 -0.003102650304870964 -0.0278117134389733 0 +677 -0.001555719645788098 -0.02924531589752165 0 +678 0.001542536165730304 -0.02927306163658334 0 +679 0.00309386131816584 -0.02786720491709669 0 +680 0.001546930659082973 -0.02643360245854834 0 +681 -4.394493352562286e-06 -0.027839459178035 0 +682 0.02638082692668023 -0.001538571836005092 0 +683 0.02776165385336047 -0.003077143672010185 0 +684 0.02919525631190881 -0.001530213012927321 0 +685 0.02924803184377693 0.001555289482160636 0 +686 0.0278672049170967 0.003093861318165728 0 +687 0.02643360245854835 0.001546930659082865 0 +688 0.02781442938522858 8.35882307777221e-06 0 +689 -0.01845034055256373 -0.02274467552880162 0 +690 -0.01592361907250785 -0.02451228902498345 0 +691 -0.01382947549740522 -0.0242617433005681 0 +692 -0.01426205340235848 -0.02224358407997092 0 +693 -0.01678877488241437 -0.0204759705837891 0 +694 -0.018882918457517 -0.02072651630820444 0 +695 -0.0163561969774611 -0.02249412980438627 0 +696 0.01674768870900357 0.02043766432058162 0 +697 0.01880074611069533 0.02064990378178955 0 +698 0.01839190330116261 0.02271897556166086 0 +699 0.01593000308993812 0.02457580788032423 0 +700 0.01387694568824636 0.0243635684191163 0 +701 0.01428578849777909 0.022294496639245 0 +702 0.01633884589947085 0.02250673610045292 0 +703 -0.006682095849373227 0.0255904832044661 0 +704 -0.005638766839372706 0.02740455350155338 0 +705 -0.007533129089780958 0.02827009884271788 0 +706 -0.01047082035018973 0.0273215738867951 0 +707 -0.01151414936019025 0.02550750358970783 0 +708 -0.009619787109782001 0.02464195824854332 0 +709 -0.00857645809978148 0.0264560285456306 0 +710 -0.02461090944530767 0.009615915770399728 0 +711 -0.02544540598323647 0.01150640668142585 0 +712 -0.02725912506693016 0.01048259021407015 0 +713 -0.02823834761269506 0.007568282835688334 0 +714 -0.02740385107476626 0.005677791924662211 0 +715 -0.02559013199107256 0.006701608392017907 0 +716 -0.02642462852900137 0.008592099303044028 0 +717 0.007578834451051043 -0.02831700591103083 0 +718 0.01051687692485338 -0.02733320444641663 0 +719 0.01154508788556174 -0.02549173962366123 0 +720 0.009635256372467762 -0.02463407626552002 0 +721 0.006697213898665427 -0.02561787773013421 0 +722 0.005669002937957066 -0.02745934255288962 0 +723 0.008607045411759402 -0.02647554108827542 0 +724 0.02733592039267198 -0.01051730708848084 0 +725 0.02823920058635634 -0.00756651129824806 0 +726 0.02735379148915342 -0.005652285291801401 0 +727 0.02556510219826614 -0.006688855075587525 0 +728 0.02466182200458177 -0.009639650865820306 0 +729 0.02554723110178469 -0.01155387687226696 0 +730 0.02645051129546905 -0.008603081082034182 0 +731 0.02451753649199735 0.01592399401343625 0 +732 0.02268567000219222 0.01839306862821686 0 +733 0.02064434396138262 0.01880630593110227 0 +734 0.02043488441037815 0.01675046861920705 0 +735 0.02226675090018328 0.01428139400442644 0 +736 0.02430807694099288 0.01386815670154104 0 +737 0.02247621045118775 0.01633723131632165 0 +738 -0.009615915770399708 -0.02461090944530767 0 +739 -0.01150640668142583 -0.02544540598323647 0 +740 -0.01048259021407014 -0.02725912506693017 0 +741 -0.007568282835688318 -0.02823834761269506 0 +742 -0.005677791924662193 -0.02740385107476626 0 +743 -0.006701608392017888 -0.02559013199107257 0 +744 -0.008592099303044011 -0.02642462852900136 0 +745 -0.02829714215499242 -0.007558970695012638 0 +746 -0.02729347693433981 -0.01047714941277657 0 +747 -0.0254520121115844 -0.01150536037348493 0 +748 -0.0246142125094816 -0.009615392616429359 0 +749 -0.02561787773013421 -0.006697213898665427 0 +750 -0.02745934255288963 -0.005669002937957066 0 +751 -0.02645567733223701 -0.008587181655720998 0 +752 0.01592399401343631 -0.02451753649199731 0 +753 0.01839306862821692 -0.02268567000219219 0 +754 0.01880630593110231 -0.02064434396138259 0 +755 0.01675046861920709 -0.02043488441037812 0 +756 0.01428139400442649 -0.02226675090018325 0 +757 0.0138681567015411 -0.02430807694099284 0 +758 0.0163372313163217 -0.02247621045118772 0 +759 0.02364063724488787 -0.01204550631853619 0 +760 0.004150598609794739 -0.02620584825939899 0 +761 0.02620584825939901 0.00415059860979464 0 +762 -0.01876131594284193 -0.01876131594284208 0 +763 -0.02617810252033732 0.004154993103147217 0 +764 -0.02620584825939899 -0.004150598609794742 0 +765 0.01872300967963463 -0.0187202297694311 0 +766 -0.01876131594284208 0.01876131594284193 0 +767 -0.01202564256249788 0.02362077348884941 0 +768 -0.0235930277497877 -0.01202124806914522 0 +769 0.00414403955448971 0.02614981147447516 0 +770 -0.004135480560502537 0.02617845373373087 0 +771 0.02615307272753089 -0.004142239786716848 0 +772 -0.02358972468561378 0.01202177122311561 0 +773 0.01872022976943113 0.0187230096796346 0 +774 -0.004154993103147209 -0.02617810252033732 0 +775 0.0120455063185362 0.02364063724488787 0 +776 -0.01202177122311559 -0.02358972468561378 0 +777 0.02361289150582615 0.01204111182518355 0 +778 0.01204111182518363 -0.02361289150582611 0 +779 -0.01831935249115165 0.02522190192220501 0 +780 0.009634937497723543 0.02961743843006383 0 +781 -0.03117279251136834 4.394493352557667e-06 0 +782 -0.0251941561831433 -0.01831495799779899 0 +783 8.558993987209578e-06 0.03111710693983805 0 +784 0.02964572947592596 0.009637102059675799 0 +785 0.0252034594150361 -0.01829813007377907 0 +786 -0.009606514747697982 0.02962621693328111 0 +787 -0.01831548115176933 -0.02519085311896944 0 +788 -0.009622155950960488 -0.02959481691665188 0 +789 0.01829813007377909 0.02520345941503608 0 +790 -4.394493352548297e-06 -0.03117279251136833 0 +791 0.0251729337657709 0.0182965154906299 0 +792 -0.02959481691665188 0.00962215595096051 0 +793 -0.02519085311896943 0.01831548115176935 0 +794 -0.02962586571988752 -0.009617238303637499 0 +795 0.03114776271856191 8.358823077771988e-06 0 +796 0.009637102059675906 -0.02964572947592593 0 +797 0.02962069968311957 -0.009633137729950668 0 +798 0.01829651549062995 -0.02517293376577086 0 +$EndNodes +$Elements +206 +1 26 2 2 2 1 4 23 24 +2 26 2 2 2 4 5 25 26 +3 26 2 2 2 5 6 27 28 +4 26 2 2 2 6 7 29 30 +5 26 2 2 2 7 8 31 32 +6 26 2 2 2 8 9 33 34 +7 26 2 2 2 9 10 35 36 +8 26 2 2 2 10 11 37 38 +9 26 2 2 2 11 12 39 40 +10 26 2 2 2 12 13 41 42 +11 26 2 2 2 13 14 43 44 +12 26 2 2 2 14 15 45 46 +13 26 2 2 2 15 16 47 48 +14 26 2 2 2 16 17 49 50 +15 26 2 2 2 17 18 51 52 +16 26 2 2 2 18 19 53 54 +17 26 2 2 2 19 20 55 56 +18 26 2 2 2 20 21 57 58 +19 26 2 2 2 21 22 59 60 +20 26 2 2 2 22 1 61 62 +21 26 2 1 4 3 122 144 145 +22 26 2 1 4 122 123 146 147 +23 26 2 1 4 123 124 148 149 +24 26 2 1 4 124 125 150 151 +25 26 2 1 4 125 126 152 153 +26 26 2 1 4 126 127 154 155 +27 26 2 1 4 127 128 156 157 +28 26 2 1 4 128 129 158 159 +29 26 2 1 4 129 130 160 161 +30 26 2 1 4 130 131 162 163 +31 26 2 1 4 131 132 164 165 +32 26 2 1 4 132 133 166 167 +33 26 2 1 4 133 134 168 169 +34 26 2 1 4 134 135 170 171 +35 26 2 1 4 135 136 172 173 +36 26 2 1 4 136 137 174 175 +37 26 2 1 4 137 138 176 177 +38 26 2 1 4 138 139 178 179 +39 26 2 1 4 139 140 180 181 +40 26 2 1 4 140 141 182 183 +41 26 2 1 4 141 142 184 185 +42 26 2 1 4 142 143 186 187 +43 26 2 1 4 143 3 188 189 +44 21 2 3 1 123 203 64 210 211 212 213 214 215 216 +45 21 2 3 1 80 202 142 217 218 219 220 221 222 223 +46 21 2 3 1 204 205 133 224 225 226 227 228 229 230 +47 21 2 3 1 142 208 80 231 232 233 234 222 221 235 +48 21 2 3 1 64 209 123 236 237 238 239 215 214 240 +49 21 2 3 1 124 207 203 241 242 243 244 245 246 247 +50 21 2 3 1 202 206 141 248 249 250 251 252 253 254 +51 21 2 3 1 133 205 132 227 226 255 256 166 167 257 +52 21 2 3 1 139 206 200 258 259 260 261 262 263 264 +53 21 2 3 1 201 207 126 265 266 267 268 269 270 271 +54 21 2 3 1 125 207 124 272 273 242 241 150 151 274 +55 21 2 3 1 141 206 140 251 250 275 276 182 183 277 +56 21 2 3 1 131 205 199 278 279 280 281 282 283 284 +57 21 2 3 1 198 204 134 285 286 287 288 289 290 291 +58 21 2 3 1 140 206 139 276 275 259 258 180 181 292 +59 21 2 3 1 126 207 125 268 267 273 272 152 153 293 +60 21 2 3 1 132 205 131 256 255 279 278 164 165 294 +61 21 2 3 1 134 204 133 288 287 229 228 168 169 295 +62 21 2 3 1 190 195 69 296 297 298 299 300 301 302 +63 21 2 3 1 75 194 191 303 304 305 306 307 308 309 +64 21 2 3 1 68 196 190 310 311 312 313 314 315 316 +65 21 2 3 1 191 197 76 317 318 319 320 321 322 323 +66 21 2 3 1 192 193 2 324 325 326 327 328 329 330 +67 21 2 3 1 195 199 70 331 332 333 334 335 336 337 +68 21 2 3 1 74 198 194 338 339 340 341 342 343 344 +69 21 2 3 1 138 200 197 345 346 347 348 349 350 351 +70 21 2 3 1 196 201 127 352 353 354 355 356 357 358 +71 21 2 3 1 197 200 77 348 347 359 360 361 362 363 +72 21 2 3 1 67 201 196 364 365 353 352 366 367 368 +73 21 2 3 1 73 204 198 369 370 286 285 371 372 373 +74 21 2 3 1 199 205 71 281 280 374 375 376 377 378 +75 21 2 3 1 72 205 204 379 380 225 224 381 382 383 +76 21 2 3 1 203 207 65 244 243 384 385 386 387 388 +77 21 2 3 1 79 206 202 389 390 249 248 391 392 393 +78 21 2 3 1 66 207 201 394 395 266 265 396 397 398 +79 21 2 3 1 200 206 78 261 260 399 400 401 402 403 +80 21 2 3 1 124 203 123 246 245 211 210 148 149 404 +81 21 2 3 1 142 202 141 220 219 253 252 184 185 405 +82 21 2 3 1 63 209 64 406 407 237 236 85 84 408 +83 21 2 3 1 80 208 81 234 233 409 410 119 118 411 +84 21 2 3 1 130 199 195 412 413 332 331 414 415 416 +85 21 2 3 1 194 198 135 341 340 417 418 419 420 421 +86 21 2 3 1 139 200 138 263 262 346 345 178 179 422 +87 21 2 3 1 127 201 126 355 354 270 269 154 155 423 +88 21 2 3 1 131 199 130 283 282 413 412 162 163 424 +89 21 2 3 1 135 198 134 418 417 290 289 170 171 425 +90 21 2 3 1 137 197 191 426 427 318 317 428 429 430 +91 21 2 3 1 190 196 128 313 312 431 432 433 434 435 +92 21 2 3 1 129 195 190 436 437 297 296 438 439 440 +93 21 2 3 1 191 194 136 306 305 441 442 443 444 445 +94 21 2 3 1 3 193 192 446 447 325 324 448 449 450 +95 21 2 3 1 138 197 137 350 349 427 426 176 177 451 +96 21 2 3 1 128 196 127 432 431 357 356 156 157 452 +97 21 2 3 1 130 195 129 415 414 437 436 160 161 453 +98 21 2 3 1 136 194 135 442 441 420 419 172 173 454 +99 21 2 3 1 3 192 143 449 448 455 456 188 189 457 +100 21 2 3 1 122 193 3 458 459 447 446 144 145 460 +101 21 2 3 1 123 209 122 239 238 461 462 146 147 463 +102 21 2 3 1 143 208 142 464 465 232 231 186 187 466 +103 21 2 3 1 137 191 136 429 428 444 443 174 175 467 +104 21 2 3 1 129 190 128 439 438 434 433 158 159 468 +105 21 2 3 1 68 190 69 315 314 301 300 95 94 469 +106 21 2 3 1 75 191 76 308 307 322 321 109 108 470 +107 21 2 3 1 2 193 63 327 326 471 472 83 82 473 +108 21 2 3 1 81 192 2 474 475 329 328 121 120 476 +109 21 2 3 1 74 194 75 343 342 304 303 107 106 477 +110 21 2 3 1 69 195 70 299 298 336 335 97 96 478 +111 21 2 3 1 67 196 68 367 366 311 310 93 92 479 +112 21 2 3 1 76 197 77 320 319 362 361 111 110 480 +113 21 2 3 1 73 198 74 372 371 339 338 105 104 481 +114 21 2 3 1 70 199 71 334 333 377 376 99 98 482 +115 21 2 3 1 77 200 78 360 359 402 401 113 112 483 +116 21 2 3 1 66 201 67 397 396 365 364 91 90 484 +117 21 2 3 1 79 202 80 392 391 218 217 117 116 485 +118 21 2 3 1 64 203 65 213 212 387 386 87 86 486 +119 21 2 3 1 72 204 73 382 381 370 369 103 102 487 +120 21 2 3 1 71 205 72 375 374 380 379 101 100 488 +121 21 2 3 1 65 207 66 385 384 395 394 89 88 489 +122 21 2 3 1 78 206 79 400 399 390 389 115 114 490 +123 21 2 3 1 81 208 192 410 409 491 492 475 474 493 +124 21 2 3 1 193 209 63 494 495 407 406 472 471 496 +125 21 2 3 1 192 208 143 492 491 465 464 456 455 497 +126 21 2 3 1 122 209 193 462 461 495 494 459 458 498 +127 21 2 4 3 69 510 68 519 520 521 522 94 95 523 +128 21 2 4 3 68 513 67 524 525 526 527 92 93 528 +129 21 2 4 3 67 516 66 529 530 531 532 90 91 533 +130 21 2 4 3 70 503 69 534 535 536 537 96 97 538 +131 21 2 4 3 73 504 72 539 540 541 542 102 103 543 +132 21 2 4 3 66 509 65 544 545 546 547 88 89 548 +133 21 2 4 3 72 505 71 549 550 551 552 100 101 553 +134 21 2 4 3 75 502 74 554 555 556 557 106 107 558 +135 21 2 4 3 81 499 80 559 560 561 562 118 119 563 +136 21 2 4 3 65 514 64 564 565 566 567 86 87 568 +137 21 2 4 3 63 500 2 569 570 571 572 82 83 573 +138 21 2 4 3 78 501 77 574 575 576 577 112 113 578 +139 21 2 4 3 64 512 63 579 580 581 582 84 85 583 +140 21 2 4 3 76 518 75 584 585 586 587 108 109 588 +141 21 2 4 3 77 517 76 589 590 591 592 110 111 593 +142 21 2 4 3 71 507 70 594 595 596 597 98 99 598 +143 21 2 4 3 74 515 73 599 600 601 602 104 105 603 +144 21 2 4 3 80 508 79 604 605 606 607 116 117 608 +145 21 2 4 3 2 511 81 609 610 611 612 120 121 613 +146 21 2 4 3 79 506 78 614 615 616 617 114 115 618 +147 21 2 4 3 10 510 503 619 620 621 622 623 624 625 +148 21 2 4 3 509 516 7 626 627 628 629 630 631 632 +149 21 2 4 3 15 515 502 633 634 635 636 637 638 639 +150 21 2 4 3 8 516 513 640 641 642 643 644 645 646 +151 21 2 4 3 13 505 504 647 648 649 650 651 652 653 +152 21 2 4 3 21 508 499 654 655 656 657 658 659 660 +153 21 2 4 3 500 512 4 661 662 663 664 665 666 667 +154 21 2 4 3 503 507 11 668 669 670 671 672 673 674 +155 21 2 4 3 18 517 501 675 676 677 678 679 680 681 +156 21 2 4 3 1 511 500 682 683 684 685 686 687 688 +157 21 2 4 3 502 518 16 689 690 691 692 693 694 695 +158 21 2 4 3 6 514 509 696 697 698 699 700 701 702 +159 21 2 4 3 9 513 510 703 704 705 706 707 708 709 +160 21 2 4 3 12 507 505 710 711 712 713 714 715 716 +161 21 2 4 3 501 506 19 717 718 719 720 721 722 723 +162 21 2 4 3 499 511 22 724 725 726 727 728 729 730 +163 21 2 4 3 512 514 5 731 732 733 734 735 736 737 +164 21 2 4 3 17 518 517 738 739 740 741 742 743 744 +165 21 2 4 3 504 515 14 745 746 747 748 749 750 751 +166 21 2 4 3 506 508 20 752 753 754 755 756 757 758 +167 21 2 4 3 21 499 22 659 658 729 728 60 59 759 +168 21 2 4 3 18 501 19 680 679 722 721 54 53 760 +169 21 2 4 3 1 500 4 687 686 666 665 24 23 761 +170 21 2 4 3 15 502 16 638 637 694 693 48 47 762 +171 21 2 4 3 12 505 13 715 714 648 647 42 41 763 +172 21 2 4 3 13 504 14 652 651 750 749 44 43 764 +173 21 2 4 3 20 508 21 755 754 655 654 58 57 765 +174 21 2 4 3 10 503 11 624 623 673 672 38 37 766 +175 21 2 4 3 9 510 10 708 707 620 619 36 35 767 +176 21 2 4 3 14 515 15 748 747 634 633 46 45 768 +177 21 2 4 3 7 516 8 629 628 641 640 32 31 769 +178 21 2 4 3 8 513 9 645 644 704 703 34 33 770 +179 21 2 4 3 22 511 1 727 726 683 682 62 61 771 +180 21 2 4 3 11 507 12 671 670 711 710 40 39 772 +181 21 2 4 3 5 514 6 734 733 697 696 28 27 773 +182 21 2 4 3 17 517 18 743 742 676 675 52 51 774 +183 21 2 4 3 6 509 7 701 700 631 630 30 29 775 +184 21 2 4 3 16 518 17 692 691 739 738 50 49 776 +185 21 2 4 3 4 512 5 664 663 736 735 26 25 777 +186 21 2 4 3 19 506 20 720 719 757 756 56 55 778 +187 21 2 4 3 503 510 69 622 621 520 519 537 536 779 +188 21 2 4 3 66 516 509 532 531 627 626 545 544 780 +189 21 2 4 3 504 505 72 650 649 550 549 542 541 781 +190 21 2 4 3 502 515 74 636 635 600 599 557 556 782 +191 21 2 4 3 513 516 67 643 642 530 529 527 526 783 +192 21 2 4 3 63 512 500 582 581 662 661 570 569 784 +193 21 2 4 3 499 508 80 657 656 605 604 562 561 785 +194 21 2 4 3 510 513 68 706 705 525 524 522 521 786 +195 21 2 4 3 75 518 502 587 586 690 689 555 554 787 +196 21 2 4 3 517 518 76 741 740 585 584 592 591 788 +197 21 2 4 3 509 514 65 699 698 565 564 547 546 789 +198 21 2 4 3 501 517 77 678 677 590 589 577 576 790 +199 21 2 4 3 64 514 512 567 566 732 731 580 579 791 +200 21 2 4 3 505 507 71 713 712 595 594 552 551 792 +201 21 2 4 3 70 507 503 597 596 669 668 535 534 793 +202 21 2 4 3 73 515 504 602 601 746 745 540 539 794 +203 21 2 4 3 500 511 2 685 684 610 609 572 571 795 +204 21 2 4 3 78 506 501 617 616 718 717 575 574 796 +205 21 2 4 3 81 511 499 612 611 725 724 560 559 797 +206 21 2 4 3 79 508 506 607 606 753 752 615 614 798 +$EndElements diff --git a/testData/partially_filled_coax/partially_filled_coax.step b/testData/partially_filled_coax/partially_filled_coax.step new file mode 100644 index 0000000..ed5bdeb --- /dev/null +++ b/testData/partially_filled_coax/partially_filled_coax.step @@ -0,0 +1,256 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); +FILE_NAME('Open CASCADE Shape Model','2023-07-05T13:03:47',(''),(''), + 'Open CASCADE STEP processor 7.6','FreeCAD','Unknown'); +FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }')); +ENDSEC; +DATA; +#1 = APPLICATION_PROTOCOL_DEFINITION('international standard', + 'automotive_design',2000,#2); +#2 = APPLICATION_CONTEXT( + 'core data for automotive mechanical design processes'); +#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10); +#4 = PRODUCT_DEFINITION_SHAPE('','',#5); +#5 = PRODUCT_DEFINITION('design','',#6,#9); +#6 = PRODUCT_DEFINITION_FORMATION('','',#7); +#7 = PRODUCT('partially_filled_coax','partially_filled_coax','',(#8)); +#8 = PRODUCT_CONTEXT('',#2,'mechanical'); +#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#10 = SHAPE_REPRESENTATION('',(#11,#15,#19,#23),#27); +#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14); +#12 = CARTESIAN_POINT('',(0.,0.,0.)); +#13 = DIRECTION('',(0.,0.,1.)); +#14 = DIRECTION('',(1.,0.,-0.)); +#15 = AXIS2_PLACEMENT_3D('',#16,#17,#18); +#16 = CARTESIAN_POINT('',(0.,0.,0.)); +#17 = DIRECTION('',(0.,0.,1.)); +#18 = DIRECTION('',(1.,0.,0.)); +#19 = AXIS2_PLACEMENT_3D('',#20,#21,#22); +#20 = CARTESIAN_POINT('',(0.,0.,0.)); +#21 = DIRECTION('',(0.,0.,1.)); +#22 = DIRECTION('',(1.,0.,0.)); +#23 = AXIS2_PLACEMENT_3D('',#24,#25,#26); +#24 = CARTESIAN_POINT('',(0.,0.,0.)); +#25 = DIRECTION('',(0.,0.,1.)); +#26 = DIRECTION('',(1.,0.,0.)); +#27 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#31)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#28,#29,#30)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#28 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#29 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#30 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#31 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#28, + 'distance_accuracy_value','confusion accuracy'); +#32 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); +#33 = SHAPE_DEFINITION_REPRESENTATION(#34,#40); +#34 = PRODUCT_DEFINITION_SHAPE('','',#35); +#35 = PRODUCT_DEFINITION('design','',#36,#39); +#36 = PRODUCT_DEFINITION_FORMATION('','',#37); +#37 = PRODUCT('Conductor_0','Conductor_0','',(#38)); +#38 = PRODUCT_CONTEXT('',#2,'mechanical'); +#39 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#40 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#41),#68); +#41 = SHELL_BASED_SURFACE_MODEL('',(#42)); +#42 = OPEN_SHELL('',(#43)); +#43 = ADVANCED_FACE('',(#44),#57,.T.); +#44 = FACE_BOUND('',#45,.T.); +#45 = EDGE_LOOP('',(#46)); +#46 = ORIENTED_EDGE('',*,*,#47,.T.); +#47 = EDGE_CURVE('',#48,#48,#50,.T.); +#48 = VERTEX_POINT('',#49); +#49 = CARTESIAN_POINT('',(50.,0.,0.)); +#50 = SURFACE_CURVE('',#51,(#56),.PCURVE_S1.); +#51 = CIRCLE('',#52,50.); +#52 = AXIS2_PLACEMENT_3D('',#53,#54,#55); +#53 = CARTESIAN_POINT('',(0.,0.,0.)); +#54 = DIRECTION('',(0.,0.,1.)); +#55 = DIRECTION('',(1.,0.,-0.)); +#56 = PCURVE('',#57,#62); +#57 = PLANE('',#58); +#58 = AXIS2_PLACEMENT_3D('',#59,#60,#61); +#59 = CARTESIAN_POINT('',(-3.5E-15,-2.04E-15,0.)); +#60 = DIRECTION('',(0.,0.,1.)); +#61 = DIRECTION('',(1.,0.,-0.)); +#62 = DEFINITIONAL_REPRESENTATION('',(#63),#67); +#63 = CIRCLE('',#64,50.); +#64 = AXIS2_PLACEMENT_2D('',#65,#66); +#65 = CARTESIAN_POINT('',(3.5E-15,2.04E-15)); +#66 = DIRECTION('',(1.,0.)); +#67 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#68 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#72)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#69,#70,#71)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#69 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#70 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#71 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#72 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#69, + 'distance_accuracy_value','confusion accuracy'); +#73 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#74,#76); +#74 = ( REPRESENTATION_RELATIONSHIP('','',#40,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#75) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#75 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); +#76 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#77); +#77 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('1','Conductor_0','',#5,#35,$); +#78 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#37)); +#79 = SHAPE_DEFINITION_REPRESENTATION(#80,#86); +#80 = PRODUCT_DEFINITION_SHAPE('','',#81); +#81 = PRODUCT_DEFINITION('design','',#82,#85); +#82 = PRODUCT_DEFINITION_FORMATION('','',#83); +#83 = PRODUCT('Conductor_1','Conductor_1','',(#84)); +#84 = PRODUCT_CONTEXT('',#2,'mechanical'); +#85 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#86 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#87),#114); +#87 = SHELL_BASED_SURFACE_MODEL('',(#88)); +#88 = OPEN_SHELL('',(#89)); +#89 = ADVANCED_FACE('',(#90),#103,.T.); +#90 = FACE_BOUND('',#91,.T.); +#91 = EDGE_LOOP('',(#92)); +#92 = ORIENTED_EDGE('',*,*,#93,.T.); +#93 = EDGE_CURVE('',#94,#94,#96,.T.); +#94 = VERTEX_POINT('',#95); +#95 = CARTESIAN_POINT('',(25.,0.,0.)); +#96 = SURFACE_CURVE('',#97,(#102),.PCURVE_S1.); +#97 = CIRCLE('',#98,25.); +#98 = AXIS2_PLACEMENT_3D('',#99,#100,#101); +#99 = CARTESIAN_POINT('',(0.,0.,0.)); +#100 = DIRECTION('',(0.,0.,1.)); +#101 = DIRECTION('',(1.,0.,-0.)); +#102 = PCURVE('',#103,#108); +#103 = PLANE('',#104); +#104 = AXIS2_PLACEMENT_3D('',#105,#106,#107); +#105 = CARTESIAN_POINT('',(-1.75E-15,-1.02E-15,0.)); +#106 = DIRECTION('',(0.,0.,1.)); +#107 = DIRECTION('',(1.,0.,-0.)); +#108 = DEFINITIONAL_REPRESENTATION('',(#109),#113); +#109 = CIRCLE('',#110,25.); +#110 = AXIS2_PLACEMENT_2D('',#111,#112); +#111 = CARTESIAN_POINT('',(1.75E-15,1.02E-15)); +#112 = DIRECTION('',(1.,0.)); +#113 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#114 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#118)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#115,#116,#117)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#115 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#116 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#117 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#118 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#115, + 'distance_accuracy_value','confusion accuracy'); +#119 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#120,#122); +#120 = ( REPRESENTATION_RELATIONSHIP('','',#86,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#121) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#121 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); +#122 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#123 + ); +#123 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('2','Conductor_1','',#5,#81,$); +#124 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#83)); +#125 = SHAPE_DEFINITION_REPRESENTATION(#126,#132); +#126 = PRODUCT_DEFINITION_SHAPE('','',#127); +#127 = PRODUCT_DEFINITION('design','',#128,#131); +#128 = PRODUCT_DEFINITION_FORMATION('','',#129); +#129 = PRODUCT('Dielectric_1','Dielectric_1','',(#130)); +#130 = PRODUCT_CONTEXT('',#2,'mechanical'); +#131 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#132 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#133),#160); +#133 = SHELL_BASED_SURFACE_MODEL('',(#134)); +#134 = OPEN_SHELL('',(#135)); +#135 = ADVANCED_FACE('',(#136),#149,.T.); +#136 = FACE_BOUND('',#137,.T.); +#137 = EDGE_LOOP('',(#138)); +#138 = ORIENTED_EDGE('',*,*,#139,.T.); +#139 = EDGE_CURVE('',#140,#140,#142,.T.); +#140 = VERTEX_POINT('',#141); +#141 = CARTESIAN_POINT('',(35.,0.,0.)); +#142 = SURFACE_CURVE('',#143,(#148),.PCURVE_S1.); +#143 = CIRCLE('',#144,35.); +#144 = AXIS2_PLACEMENT_3D('',#145,#146,#147); +#145 = CARTESIAN_POINT('',(0.,0.,0.)); +#146 = DIRECTION('',(0.,0.,1.)); +#147 = DIRECTION('',(1.,0.,-0.)); +#148 = PCURVE('',#149,#154); +#149 = PLANE('',#150); +#150 = AXIS2_PLACEMENT_3D('',#151,#152,#153); +#151 = CARTESIAN_POINT('',(-1.250230978322E-15,1.071707357638E-15,0.)); +#152 = DIRECTION('',(0.,0.,1.)); +#153 = DIRECTION('',(1.,0.,-0.)); +#154 = DEFINITIONAL_REPRESENTATION('',(#155),#159); +#155 = CIRCLE('',#156,35.); +#156 = AXIS2_PLACEMENT_2D('',#157,#158); +#157 = CARTESIAN_POINT('',(1.250230978322E-15,-1.071707357638E-15)); +#158 = DIRECTION('',(1.,0.)); +#159 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#160 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#164)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#161,#162,#163)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#161 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#162 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#163 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#164 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#161, + 'distance_accuracy_value','confusion accuracy'); +#165 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#166,#168); +#166 = ( REPRESENTATION_RELATIONSHIP('','',#132,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#167) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#167 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); +#168 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#169 + ); +#169 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('3','Dielectric_1','',#5,#127,$); +#170 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#129)); +#171 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#172) + ,#114); +#172 = STYLED_ITEM('color',(#173),#89); +#173 = PRESENTATION_STYLE_ASSIGNMENT((#174,#180)); +#174 = SURFACE_STYLE_USAGE(.BOTH.,#175); +#175 = SURFACE_SIDE_STYLE('',(#176)); +#176 = SURFACE_STYLE_FILL_AREA(#177); +#177 = FILL_AREA_STYLE('',(#178)); +#178 = FILL_AREA_STYLE_COLOUR('',#179); +#179 = COLOUR_RGB('',1.,0.333333345507,0.); +#180 = CURVE_STYLE('',#181,POSITIVE_LENGTH_MEASURE(0.1),#182); +#181 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#182 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, + 9.803921802644E-02); +#183 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#184) + ,#160); +#184 = STYLED_ITEM('color',(#185),#135); +#185 = PRESENTATION_STYLE_ASSIGNMENT((#186,#194)); +#186 = SURFACE_STYLE_USAGE(.BOTH.,#187); +#187 = SURFACE_SIDE_STYLE('',(#188,#192)); +#188 = SURFACE_STYLE_FILL_AREA(#189); +#189 = FILL_AREA_STYLE('',(#190)); +#190 = FILL_AREA_STYLE_COLOUR('',#191); +#191 = DRAUGHTING_PRE_DEFINED_COLOUR('red'); +#192 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#191,( + #193)); +#193 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#194 = CURVE_STYLE('',#195,POSITIVE_LENGTH_MEASURE(0.1),#182); +#195 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#196 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#197) + ,#68); +#197 = STYLED_ITEM('color',(#198),#43); +#198 = PRESENTATION_STYLE_ASSIGNMENT((#199,#207)); +#199 = SURFACE_STYLE_USAGE(.BOTH.,#200); +#200 = SURFACE_SIDE_STYLE('',(#201,#205)); +#201 = SURFACE_STYLE_FILL_AREA(#202); +#202 = FILL_AREA_STYLE('',(#203)); +#203 = FILL_AREA_STYLE_COLOUR('',#204); +#204 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); +#205 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#204,( + #206)); +#206 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#207 = CURVE_STYLE('',#208,POSITIVE_LENGTH_MEASURE(0.1),#182); +#208 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +ENDSEC; +END-ISO-10303-21; diff --git a/testData/three_wires_ribbon/three_wires_ribbon.FCStd b/testData/three_wires_ribbon/three_wires_ribbon.FCStd new file mode 100644 index 0000000000000000000000000000000000000000..3f75d808ab8f4033f9ca697e9f070004051f1119 GIT binary patch literal 16510 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 literal 0 HcmV?d00001 diff --git a/testData/three_wires_ribbon/three_wires_ribbon.step b/testData/three_wires_ribbon/three_wires_ribbon.step new file mode 100644 index 0000000..d906e70 --- /dev/null +++ b/testData/three_wires_ribbon/three_wires_ribbon.step @@ -0,0 +1,635 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); +FILE_NAME('Open CASCADE Shape Model','2023-07-24T17:16:36',(''),(''), + 'Open CASCADE STEP processor 7.6','FreeCAD','Unknown'); +FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }')); +ENDSEC; +DATA; +#1 = APPLICATION_PROTOCOL_DEFINITION('international standard', + 'automotive_design',2000,#2); +#2 = APPLICATION_CONTEXT( + 'core data for automotive mechanical design processes'); +#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10); +#4 = PRODUCT_DEFINITION_SHAPE('','',#5); +#5 = PRODUCT_DEFINITION('design','',#6,#9); +#6 = PRODUCT_DEFINITION_FORMATION('','',#7); +#7 = PRODUCT('Domain_0','Domain_0','',(#8)); +#8 = PRODUCT_CONTEXT('',#2,'mechanical'); +#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#10 = SHAPE_REPRESENTATION('',(#11,#15,#19,#23,#27),#31); +#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14); +#12 = CARTESIAN_POINT('',(0.,0.,0.)); +#13 = DIRECTION('',(0.,0.,1.)); +#14 = DIRECTION('',(1.,0.,-0.)); +#15 = AXIS2_PLACEMENT_3D('',#16,#17,#18); +#16 = CARTESIAN_POINT('',(0.,0.,0.)); +#17 = DIRECTION('',(0.,0.,1.)); +#18 = DIRECTION('',(1.,0.,0.)); +#19 = AXIS2_PLACEMENT_3D('',#20,#21,#22); +#20 = CARTESIAN_POINT('',(0.,0.,0.)); +#21 = DIRECTION('',(0.,0.,1.)); +#22 = DIRECTION('',(1.,0.,0.)); +#23 = AXIS2_PLACEMENT_3D('',#24,#25,#26); +#24 = CARTESIAN_POINT('',(0.,0.,0.)); +#25 = DIRECTION('',(0.,0.,1.)); +#26 = DIRECTION('',(1.,0.,0.)); +#27 = AXIS2_PLACEMENT_3D('',#28,#29,#30); +#28 = CARTESIAN_POINT('',(1.27,0.,0.)); +#29 = DIRECTION('',(0.,0.,1.)); +#30 = DIRECTION('',(1.,0.,0.)); +#31 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#35)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#32,#33,#34)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#32 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#33 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#34 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#35 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#32, + 'distance_accuracy_value','confusion accuracy'); +#36 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); +#37 = SHAPE_DEFINITION_REPRESENTATION(#38,#44); +#38 = PRODUCT_DEFINITION_SHAPE('','',#39); +#39 = PRODUCT_DEFINITION('design','',#40,#43); +#40 = PRODUCT_DEFINITION_FORMATION('','',#41); +#41 = PRODUCT('solid_wire_000','solid_wire_000','',(#42)); +#42 = PRODUCT_CONTEXT('',#2,'mechanical'); +#43 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#44 = SHAPE_REPRESENTATION('',(#11,#45,#49),#53); +#45 = AXIS2_PLACEMENT_3D('',#46,#47,#48); +#46 = CARTESIAN_POINT('',(0.,0.,0.)); +#47 = DIRECTION('',(0.,0.,1.)); +#48 = DIRECTION('',(1.,0.,0.)); +#49 = AXIS2_PLACEMENT_3D('',#50,#51,#52); +#50 = CARTESIAN_POINT('',(0.,0.,0.)); +#51 = DIRECTION('',(0.,0.,1.)); +#52 = DIRECTION('',(1.,0.,0.)); +#53 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#57)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#54,#55,#56)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#54 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#55 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#56 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#57 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#54, + 'distance_accuracy_value','confusion accuracy'); +#58 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#59,#61); +#59 = ( REPRESENTATION_RELATIONSHIP('','',#44,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#60) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#60 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); +#61 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#62); +#62 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('3','solid_wire_000','',#5,#39,$); +#63 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#41)); +#64 = SHAPE_DEFINITION_REPRESENTATION(#65,#71); +#65 = PRODUCT_DEFINITION_SHAPE('','',#66); +#66 = PRODUCT_DEFINITION('design','',#67,#70); +#67 = PRODUCT_DEFINITION_FORMATION('','',#68); +#68 = PRODUCT('Conductor_0','Conductor_0','',(#69)); +#69 = PRODUCT_CONTEXT('',#2,'mechanical'); +#70 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#71 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#72),#99); +#72 = SHELL_BASED_SURFACE_MODEL('',(#73)); +#73 = OPEN_SHELL('',(#74)); +#74 = ADVANCED_FACE('',(#75),#88,.T.); +#75 = FACE_BOUND('',#76,.T.); +#76 = EDGE_LOOP('',(#77)); +#77 = ORIENTED_EDGE('',*,*,#78,.T.); +#78 = EDGE_CURVE('',#79,#79,#81,.T.); +#79 = VERTEX_POINT('',#80); +#80 = CARTESIAN_POINT('',(0.1905,0.,0.)); +#81 = SURFACE_CURVE('',#82,(#87),.PCURVE_S1.); +#82 = CIRCLE('',#83,0.1905); +#83 = AXIS2_PLACEMENT_3D('',#84,#85,#86); +#84 = CARTESIAN_POINT('',(0.,0.,0.)); +#85 = DIRECTION('',(0.,0.,1.)); +#86 = DIRECTION('',(1.,0.,-0.)); +#87 = PCURVE('',#88,#93); +#88 = PLANE('',#89); +#89 = AXIS2_PLACEMENT_3D('',#90,#91,#92); +#90 = CARTESIAN_POINT('',(-1.E-17,-0.,0.)); +#91 = DIRECTION('',(0.,0.,1.)); +#92 = DIRECTION('',(1.,0.,-0.)); +#93 = DEFINITIONAL_REPRESENTATION('',(#94),#98); +#94 = CIRCLE('',#95,0.1905); +#95 = AXIS2_PLACEMENT_2D('',#96,#97); +#96 = CARTESIAN_POINT('',(1.E-17,0.)); +#97 = DIRECTION('',(1.,0.)); +#98 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#99 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#103)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#100,#101,#102)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#100 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#101 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#102 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#103 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#100, + 'distance_accuracy_value','confusion accuracy'); +#104 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#105,#107); +#105 = ( REPRESENTATION_RELATIONSHIP('','',#71,#44) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#106) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#106 = ITEM_DEFINED_TRANSFORMATION('','',#11,#45); +#107 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#108 + ); +#108 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('1','Conductor_0','',#39,#66,$); +#109 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#68)); +#110 = SHAPE_DEFINITION_REPRESENTATION(#111,#117); +#111 = PRODUCT_DEFINITION_SHAPE('','',#112); +#112 = PRODUCT_DEFINITION('design','',#113,#116); +#113 = PRODUCT_DEFINITION_FORMATION('','',#114); +#114 = PRODUCT('Dielectric_0','Dielectric_0','',(#115)); +#115 = PRODUCT_CONTEXT('',#2,'mechanical'); +#116 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#117 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#118),#145); +#118 = SHELL_BASED_SURFACE_MODEL('',(#119)); +#119 = OPEN_SHELL('',(#120)); +#120 = ADVANCED_FACE('',(#121),#134,.T.); +#121 = FACE_BOUND('',#122,.T.); +#122 = EDGE_LOOP('',(#123)); +#123 = ORIENTED_EDGE('',*,*,#124,.T.); +#124 = EDGE_CURVE('',#125,#125,#127,.T.); +#125 = VERTEX_POINT('',#126); +#126 = CARTESIAN_POINT('',(0.4445,0.,0.)); +#127 = SURFACE_CURVE('',#128,(#133),.PCURVE_S1.); +#128 = CIRCLE('',#129,0.4445); +#129 = AXIS2_PLACEMENT_3D('',#130,#131,#132); +#130 = CARTESIAN_POINT('',(0.,0.,0.)); +#131 = DIRECTION('',(0.,0.,1.)); +#132 = DIRECTION('',(1.,0.,-0.)); +#133 = PCURVE('',#134,#139); +#134 = PLANE('',#135); +#135 = AXIS2_PLACEMENT_3D('',#136,#137,#138); +#136 = CARTESIAN_POINT('',(-1.E-17,1.E-17,0.)); +#137 = DIRECTION('',(0.,0.,1.)); +#138 = DIRECTION('',(1.,0.,-0.)); +#139 = DEFINITIONAL_REPRESENTATION('',(#140),#144); +#140 = CIRCLE('',#141,0.4445); +#141 = AXIS2_PLACEMENT_2D('',#142,#143); +#142 = CARTESIAN_POINT('',(1.E-17,-1.E-17)); +#143 = DIRECTION('',(1.,0.)); +#144 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#145 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#149)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#146,#147,#148)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#146 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#147 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#148 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#149 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#146, + 'distance_accuracy_value','confusion accuracy'); +#150 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#151,#153); +#151 = ( REPRESENTATION_RELATIONSHIP('','',#117,#44) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#152) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#152 = ITEM_DEFINED_TRANSFORMATION('','',#11,#49); +#153 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#154 + ); +#154 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('2','Dielectric_0','',#39,#112,$); +#155 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#114)); +#156 = SHAPE_DEFINITION_REPRESENTATION(#157,#163); +#157 = PRODUCT_DEFINITION_SHAPE('','',#158); +#158 = PRODUCT_DEFINITION('design','',#159,#162); +#159 = PRODUCT_DEFINITION_FORMATION('','',#160); +#160 = PRODUCT('solid_wire_001','solid_wire_001','',(#161)); +#161 = PRODUCT_CONTEXT('',#2,'mechanical'); +#162 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#163 = SHAPE_REPRESENTATION('',(#11,#164,#168),#172); +#164 = AXIS2_PLACEMENT_3D('',#165,#166,#167); +#165 = CARTESIAN_POINT('',(1.27,0.,0.)); +#166 = DIRECTION('',(0.,0.,1.)); +#167 = DIRECTION('',(1.,0.,0.)); +#168 = AXIS2_PLACEMENT_3D('',#169,#170,#171); +#169 = CARTESIAN_POINT('',(1.27,0.,0.)); +#170 = DIRECTION('',(0.,0.,1.)); +#171 = DIRECTION('',(1.,0.,0.)); +#172 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#176)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#173,#174,#175)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#173 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#174 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#175 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#176 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#173, + 'distance_accuracy_value','confusion accuracy'); +#177 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#178,#180); +#178 = ( REPRESENTATION_RELATIONSHIP('','',#163,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#179) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#179 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); +#180 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#181 + ); +#181 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('6','solid_wire_001','',#5,#158,$ + ); +#182 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#160)); +#183 = SHAPE_DEFINITION_REPRESENTATION(#184,#190); +#184 = PRODUCT_DEFINITION_SHAPE('','',#185); +#185 = PRODUCT_DEFINITION('design','',#186,#189); +#186 = PRODUCT_DEFINITION_FORMATION('','',#187); +#187 = PRODUCT('Conductor_001','Conductor_001','',(#188)); +#188 = PRODUCT_CONTEXT('',#2,'mechanical'); +#189 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#190 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#191),#218); +#191 = SHELL_BASED_SURFACE_MODEL('',(#192)); +#192 = OPEN_SHELL('',(#193)); +#193 = ADVANCED_FACE('',(#194),#207,.T.); +#194 = FACE_BOUND('',#195,.T.); +#195 = EDGE_LOOP('',(#196)); +#196 = ORIENTED_EDGE('',*,*,#197,.T.); +#197 = EDGE_CURVE('',#198,#198,#200,.T.); +#198 = VERTEX_POINT('',#199); +#199 = CARTESIAN_POINT('',(0.1905,0.,0.)); +#200 = SURFACE_CURVE('',#201,(#206),.PCURVE_S1.); +#201 = CIRCLE('',#202,0.1905); +#202 = AXIS2_PLACEMENT_3D('',#203,#204,#205); +#203 = CARTESIAN_POINT('',(0.,0.,0.)); +#204 = DIRECTION('',(0.,0.,1.)); +#205 = DIRECTION('',(1.,0.,-0.)); +#206 = PCURVE('',#207,#212); +#207 = PLANE('',#208); +#208 = AXIS2_PLACEMENT_3D('',#209,#210,#211); +#209 = CARTESIAN_POINT('',(-1.E-17,-0.,0.)); +#210 = DIRECTION('',(0.,0.,1.)); +#211 = DIRECTION('',(1.,0.,-0.)); +#212 = DEFINITIONAL_REPRESENTATION('',(#213),#217); +#213 = CIRCLE('',#214,0.1905); +#214 = AXIS2_PLACEMENT_2D('',#215,#216); +#215 = CARTESIAN_POINT('',(1.E-17,0.)); +#216 = DIRECTION('',(1.,0.)); +#217 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#218 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#222)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#219,#220,#221)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#219 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#220 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#221 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#222 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#219, + 'distance_accuracy_value','confusion accuracy'); +#223 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#224,#226); +#224 = ( REPRESENTATION_RELATIONSHIP('','',#190,#163) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#225) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#225 = ITEM_DEFINED_TRANSFORMATION('','',#11,#164); +#226 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#227 + ); +#227 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('4','Conductor_001','',#158,#185,$ + ); +#228 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#187)); +#229 = SHAPE_DEFINITION_REPRESENTATION(#230,#236); +#230 = PRODUCT_DEFINITION_SHAPE('','',#231); +#231 = PRODUCT_DEFINITION('design','',#232,#235); +#232 = PRODUCT_DEFINITION_FORMATION('','',#233); +#233 = PRODUCT('Dielectric_001','Dielectric_001','',(#234)); +#234 = PRODUCT_CONTEXT('',#2,'mechanical'); +#235 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#236 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#237),#264); +#237 = SHELL_BASED_SURFACE_MODEL('',(#238)); +#238 = OPEN_SHELL('',(#239)); +#239 = ADVANCED_FACE('',(#240),#253,.T.); +#240 = FACE_BOUND('',#241,.T.); +#241 = EDGE_LOOP('',(#242)); +#242 = ORIENTED_EDGE('',*,*,#243,.T.); +#243 = EDGE_CURVE('',#244,#244,#246,.T.); +#244 = VERTEX_POINT('',#245); +#245 = CARTESIAN_POINT('',(0.4445,0.,0.)); +#246 = SURFACE_CURVE('',#247,(#252),.PCURVE_S1.); +#247 = CIRCLE('',#248,0.4445); +#248 = AXIS2_PLACEMENT_3D('',#249,#250,#251); +#249 = CARTESIAN_POINT('',(0.,0.,0.)); +#250 = DIRECTION('',(0.,0.,1.)); +#251 = DIRECTION('',(1.,0.,-0.)); +#252 = PCURVE('',#253,#258); +#253 = PLANE('',#254); +#254 = AXIS2_PLACEMENT_3D('',#255,#256,#257); +#255 = CARTESIAN_POINT('',(-1.E-17,1.E-17,0.)); +#256 = DIRECTION('',(0.,0.,1.)); +#257 = DIRECTION('',(1.,0.,-0.)); +#258 = DEFINITIONAL_REPRESENTATION('',(#259),#263); +#259 = CIRCLE('',#260,0.4445); +#260 = AXIS2_PLACEMENT_2D('',#261,#262); +#261 = CARTESIAN_POINT('',(1.E-17,-1.E-17)); +#262 = DIRECTION('',(1.,0.)); +#263 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#264 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#268)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#265,#266,#267)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#265 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#266 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#267 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#268 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#265, + 'distance_accuracy_value','confusion accuracy'); +#269 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#270,#272); +#270 = ( REPRESENTATION_RELATIONSHIP('','',#236,#163) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#271) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#271 = ITEM_DEFINED_TRANSFORMATION('','',#11,#168); +#272 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#273 + ); +#273 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('5','Dielectric_001','',#158,#231, + $); +#274 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#233)); +#275 = SHAPE_DEFINITION_REPRESENTATION(#276,#282); +#276 = PRODUCT_DEFINITION_SHAPE('','',#277); +#277 = PRODUCT_DEFINITION('design','',#278,#281); +#278 = PRODUCT_DEFINITION_FORMATION('','',#279); +#279 = PRODUCT('solid_wire_002','solid_wire_002','',(#280)); +#280 = PRODUCT_CONTEXT('',#2,'mechanical'); +#281 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#282 = SHAPE_REPRESENTATION('',(#11,#283,#287),#291); +#283 = AXIS2_PLACEMENT_3D('',#284,#285,#286); +#284 = CARTESIAN_POINT('',(2.54,0.,0.)); +#285 = DIRECTION('',(0.,0.,1.)); +#286 = DIRECTION('',(1.,0.,0.)); +#287 = AXIS2_PLACEMENT_3D('',#288,#289,#290); +#288 = CARTESIAN_POINT('',(2.54,0.,0.)); +#289 = DIRECTION('',(0.,0.,1.)); +#290 = DIRECTION('',(1.,0.,0.)); +#291 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#295)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#292,#293,#294)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#292 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#293 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#294 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#295 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#292, + 'distance_accuracy_value','confusion accuracy'); +#296 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#297,#299); +#297 = ( REPRESENTATION_RELATIONSHIP('','',#282,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#298) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#298 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); +#299 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#300 + ); +#300 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('9','solid_wire_002','',#5,#277,$ + ); +#301 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#279)); +#302 = SHAPE_DEFINITION_REPRESENTATION(#303,#309); +#303 = PRODUCT_DEFINITION_SHAPE('','',#304); +#304 = PRODUCT_DEFINITION('design','',#305,#308); +#305 = PRODUCT_DEFINITION_FORMATION('','',#306); +#306 = PRODUCT('Conductor_002','Conductor_002','',(#307)); +#307 = PRODUCT_CONTEXT('',#2,'mechanical'); +#308 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#309 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#310),#337); +#310 = SHELL_BASED_SURFACE_MODEL('',(#311)); +#311 = OPEN_SHELL('',(#312)); +#312 = ADVANCED_FACE('',(#313),#326,.T.); +#313 = FACE_BOUND('',#314,.T.); +#314 = EDGE_LOOP('',(#315)); +#315 = ORIENTED_EDGE('',*,*,#316,.T.); +#316 = EDGE_CURVE('',#317,#317,#319,.T.); +#317 = VERTEX_POINT('',#318); +#318 = CARTESIAN_POINT('',(0.1905,0.,0.)); +#319 = SURFACE_CURVE('',#320,(#325),.PCURVE_S1.); +#320 = CIRCLE('',#321,0.1905); +#321 = AXIS2_PLACEMENT_3D('',#322,#323,#324); +#322 = CARTESIAN_POINT('',(0.,0.,0.)); +#323 = DIRECTION('',(0.,0.,1.)); +#324 = DIRECTION('',(1.,0.,-0.)); +#325 = PCURVE('',#326,#331); +#326 = PLANE('',#327); +#327 = AXIS2_PLACEMENT_3D('',#328,#329,#330); +#328 = CARTESIAN_POINT('',(-1.E-17,-0.,0.)); +#329 = DIRECTION('',(0.,0.,1.)); +#330 = DIRECTION('',(1.,0.,-0.)); +#331 = DEFINITIONAL_REPRESENTATION('',(#332),#336); +#332 = CIRCLE('',#333,0.1905); +#333 = AXIS2_PLACEMENT_2D('',#334,#335); +#334 = CARTESIAN_POINT('',(1.E-17,0.)); +#335 = DIRECTION('',(1.,0.)); +#336 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#337 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#341)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#338,#339,#340)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#338 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#339 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#340 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#341 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#338, + 'distance_accuracy_value','confusion accuracy'); +#342 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#343,#345); +#343 = ( REPRESENTATION_RELATIONSHIP('','',#309,#282) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#344) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#344 = ITEM_DEFINED_TRANSFORMATION('','',#11,#283); +#345 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#346 + ); +#346 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('7','Conductor_002','',#277,#304,$ + ); +#347 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#306)); +#348 = SHAPE_DEFINITION_REPRESENTATION(#349,#355); +#349 = PRODUCT_DEFINITION_SHAPE('','',#350); +#350 = PRODUCT_DEFINITION('design','',#351,#354); +#351 = PRODUCT_DEFINITION_FORMATION('','',#352); +#352 = PRODUCT('Dielectric_002','Dielectric_002','',(#353)); +#353 = PRODUCT_CONTEXT('',#2,'mechanical'); +#354 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#355 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#356),#383); +#356 = SHELL_BASED_SURFACE_MODEL('',(#357)); +#357 = OPEN_SHELL('',(#358)); +#358 = ADVANCED_FACE('',(#359),#372,.T.); +#359 = FACE_BOUND('',#360,.T.); +#360 = EDGE_LOOP('',(#361)); +#361 = ORIENTED_EDGE('',*,*,#362,.T.); +#362 = EDGE_CURVE('',#363,#363,#365,.T.); +#363 = VERTEX_POINT('',#364); +#364 = CARTESIAN_POINT('',(0.4445,0.,0.)); +#365 = SURFACE_CURVE('',#366,(#371),.PCURVE_S1.); +#366 = CIRCLE('',#367,0.4445); +#367 = AXIS2_PLACEMENT_3D('',#368,#369,#370); +#368 = CARTESIAN_POINT('',(0.,0.,0.)); +#369 = DIRECTION('',(0.,0.,1.)); +#370 = DIRECTION('',(1.,0.,-0.)); +#371 = PCURVE('',#372,#377); +#372 = PLANE('',#373); +#373 = AXIS2_PLACEMENT_3D('',#374,#375,#376); +#374 = CARTESIAN_POINT('',(-1.E-17,1.E-17,0.)); +#375 = DIRECTION('',(0.,0.,1.)); +#376 = DIRECTION('',(1.,0.,-0.)); +#377 = DEFINITIONAL_REPRESENTATION('',(#378),#382); +#378 = CIRCLE('',#379,0.4445); +#379 = AXIS2_PLACEMENT_2D('',#380,#381); +#380 = CARTESIAN_POINT('',(1.E-17,-1.E-17)); +#381 = DIRECTION('',(1.,0.)); +#382 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#383 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#387)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#384,#385,#386)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#384 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#385 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#386 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#387 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#384, + 'distance_accuracy_value','confusion accuracy'); +#388 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#389,#391); +#389 = ( REPRESENTATION_RELATIONSHIP('','',#355,#282) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#390) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#390 = ITEM_DEFINED_TRANSFORMATION('','',#11,#287); +#391 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#392 + ); +#392 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('8','Dielectric_002','',#277,#350, + $); +#393 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#352)); +#394 = SHAPE_DEFINITION_REPRESENTATION(#395,#401); +#395 = PRODUCT_DEFINITION_SHAPE('','',#396); +#396 = PRODUCT_DEFINITION('design','',#397,#400); +#397 = PRODUCT_DEFINITION_FORMATION('','',#398); +#398 = PRODUCT('OpenRegion_0','OpenRegion_0','',(#399)); +#399 = PRODUCT_CONTEXT('',#2,'mechanical'); +#400 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#401 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#402),#429); +#402 = SHELL_BASED_SURFACE_MODEL('',(#403)); +#403 = OPEN_SHELL('',(#404)); +#404 = ADVANCED_FACE('',(#405),#418,.T.); +#405 = FACE_BOUND('',#406,.T.); +#406 = EDGE_LOOP('',(#407)); +#407 = ORIENTED_EDGE('',*,*,#408,.T.); +#408 = EDGE_CURVE('',#409,#409,#411,.T.); +#409 = VERTEX_POINT('',#410); +#410 = CARTESIAN_POINT('',(5.,0.,0.)); +#411 = SURFACE_CURVE('',#412,(#417),.PCURVE_S1.); +#412 = CIRCLE('',#413,5.); +#413 = AXIS2_PLACEMENT_3D('',#414,#415,#416); +#414 = CARTESIAN_POINT('',(0.,0.,0.)); +#415 = DIRECTION('',(0.,0.,1.)); +#416 = DIRECTION('',(1.,0.,-0.)); +#417 = PCURVE('',#418,#423); +#418 = PLANE('',#419); +#419 = AXIS2_PLACEMENT_3D('',#420,#421,#422); +#420 = CARTESIAN_POINT('',(-2.7E-16,7.E-17,0.)); +#421 = DIRECTION('',(0.,0.,1.)); +#422 = DIRECTION('',(1.,0.,-0.)); +#423 = DEFINITIONAL_REPRESENTATION('',(#424),#428); +#424 = CIRCLE('',#425,5.); +#425 = AXIS2_PLACEMENT_2D('',#426,#427); +#426 = CARTESIAN_POINT('',(2.7E-16,-7.E-17)); +#427 = DIRECTION('',(1.,0.)); +#428 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#429 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#433)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#430,#431,#432)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#430 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#431 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#432 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#433 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#430, + 'distance_accuracy_value','confusion accuracy'); +#434 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#435,#437); +#435 = ( REPRESENTATION_RELATIONSHIP('','',#401,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#436) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#436 = ITEM_DEFINED_TRANSFORMATION('','',#11,#27); +#437 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#438 + ); +#438 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('10','OpenRegion_0','',#5,#396,$); +#439 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#398)); +#440 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#441) + ,#383); +#441 = STYLED_ITEM('color',(#442),#358); +#442 = PRESENTATION_STYLE_ASSIGNMENT((#443,#451)); +#443 = SURFACE_STYLE_USAGE(.BOTH.,#444); +#444 = SURFACE_SIDE_STYLE('',(#445,#449)); +#445 = SURFACE_STYLE_FILL_AREA(#446); +#446 = FILL_AREA_STYLE('',(#447)); +#447 = FILL_AREA_STYLE_COLOUR('',#448); +#448 = DRAUGHTING_PRE_DEFINED_COLOUR('red'); +#449 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#448,( + #450)); +#450 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#451 = CURVE_STYLE('',#452,POSITIVE_LENGTH_MEASURE(0.1),#453); +#452 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#453 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, + 9.803921802644E-02); +#454 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#455) + ,#99); +#455 = STYLED_ITEM('color',(#456),#74); +#456 = PRESENTATION_STYLE_ASSIGNMENT((#457,#463)); +#457 = SURFACE_STYLE_USAGE(.BOTH.,#458); +#458 = SURFACE_SIDE_STYLE('',(#459)); +#459 = SURFACE_STYLE_FILL_AREA(#460); +#460 = FILL_AREA_STYLE('',(#461)); +#461 = FILL_AREA_STYLE_COLOUR('',#462); +#462 = COLOUR_RGB('',1.,0.333333345507,0.); +#463 = CURVE_STYLE('',#464,POSITIVE_LENGTH_MEASURE(0.1),#453); +#464 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#465 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#466) + ,#264); +#466 = STYLED_ITEM('color',(#467),#239); +#467 = PRESENTATION_STYLE_ASSIGNMENT((#468,#475)); +#468 = SURFACE_STYLE_USAGE(.BOTH.,#469); +#469 = SURFACE_SIDE_STYLE('',(#470,#473)); +#470 = SURFACE_STYLE_FILL_AREA(#471); +#471 = FILL_AREA_STYLE('',(#472)); +#472 = FILL_AREA_STYLE_COLOUR('',#448); +#473 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#448,( + #474)); +#474 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#475 = CURVE_STYLE('',#476,POSITIVE_LENGTH_MEASURE(0.1),#453); +#476 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#477 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#478) + ,#429); +#478 = STYLED_ITEM('color',(#479),#404); +#479 = PRESENTATION_STYLE_ASSIGNMENT((#480,#486)); +#480 = SURFACE_STYLE_USAGE(.BOTH.,#481); +#481 = SURFACE_SIDE_STYLE('',(#482)); +#482 = SURFACE_STYLE_FILL_AREA(#483); +#483 = FILL_AREA_STYLE('',(#484)); +#484 = FILL_AREA_STYLE_COLOUR('',#485); +#485 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); +#486 = CURVE_STYLE('',#487,POSITIVE_LENGTH_MEASURE(0.1),#453); +#487 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#488 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#489) + ,#218); +#489 = STYLED_ITEM('color',(#490),#193); +#490 = PRESENTATION_STYLE_ASSIGNMENT((#491,#496)); +#491 = SURFACE_STYLE_USAGE(.BOTH.,#492); +#492 = SURFACE_SIDE_STYLE('',(#493)); +#493 = SURFACE_STYLE_FILL_AREA(#494); +#494 = FILL_AREA_STYLE('',(#495)); +#495 = FILL_AREA_STYLE_COLOUR('',#462); +#496 = CURVE_STYLE('',#497,POSITIVE_LENGTH_MEASURE(0.1),#453); +#497 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#498 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#499) + ,#337); +#499 = STYLED_ITEM('color',(#500),#312); +#500 = PRESENTATION_STYLE_ASSIGNMENT((#501,#506)); +#501 = SURFACE_STYLE_USAGE(.BOTH.,#502); +#502 = SURFACE_SIDE_STYLE('',(#503)); +#503 = SURFACE_STYLE_FILL_AREA(#504); +#504 = FILL_AREA_STYLE('',(#505)); +#505 = FILL_AREA_STYLE_COLOUR('',#462); +#506 = CURVE_STYLE('',#507,POSITIVE_LENGTH_MEASURE(0.1),#453); +#507 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#508 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#509) + ,#145); +#509 = STYLED_ITEM('color',(#510),#120); +#510 = PRESENTATION_STYLE_ASSIGNMENT((#511,#518)); +#511 = SURFACE_STYLE_USAGE(.BOTH.,#512); +#512 = SURFACE_SIDE_STYLE('',(#513,#516)); +#513 = SURFACE_STYLE_FILL_AREA(#514); +#514 = FILL_AREA_STYLE('',(#515)); +#515 = FILL_AREA_STYLE_COLOUR('',#448); +#516 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#448,( + #517)); +#517 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#518 = CURVE_STYLE('',#519,POSITIVE_LENGTH_MEASURE(0.1),#453); +#519 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +ENDSEC; +END-ISO-10303-21; diff --git a/testData/two_wires_coax/two_wires_coax.FCStd b/testData/two_wires_coax/two_wires_coax.FCStd new file mode 100644 index 0000000000000000000000000000000000000000..4e82b12aa2a364706aac67f151e6c155454acef0 GIT binary patch literal 5952 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 Date: Wed, 9 Aug 2023 17:31:18 +0200 Subject: [PATCH 022/134] Minor for status badge --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 2c636fb..8774758 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ # step2gmsh Generates MFEM compatible meshes from step files generated with FreeCAD. + +[![Tests](https://github.com/lmdiazangulo/step2gmsh/actions/workflows/tests.yml/badge.svg)](https://github.com/lmdiazangulo/step2gmsh/actions/workflows/tests.yml) \ No newline at end of file From b14b7294c11f135c6f95a69b5bc090842ee0061b Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Wed, 9 Aug 2023 17:38:36 +0200 Subject: [PATCH 023/134] Removes unused workflow --- .github/workflows/builds-and-tests.yml | 35 -------------------------- 1 file changed, 35 deletions(-) delete mode 100644 .github/workflows/builds-and-tests.yml diff --git a/.github/workflows/builds-and-tests.yml b/.github/workflows/builds-and-tests.yml deleted file mode 100644 index 0aad79d..0000000 --- a/.github/workflows/builds-and-tests.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: "Tests" - -permissions: - actions: write - -on: - push: - branches: - - master - pull_request: - workflow_dispatch: - -jobs: - builds-and-tests: - strategy: - matrix: - os: [windows-latest] - - name: ${{ matrix.os }}-${{ matrix.target }} - - runs-on: ${{ matrix.os }} - - steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.11.0 - with: - access_token: ${{ github.token }} - - # Checkout - - name: checkout (Windows) - uses: actions/checkout@v3 - with: - path: ${{ env.PULMTLN_TOP_DIR }} - - \ No newline at end of file From 788177effaca5e2e78cb59c6411880d99b37ce19 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Wed, 9 Aug 2023 20:02:18 +0200 Subject: [PATCH 024/134] MInor --- step2gmsh_ssh | 7 ------- step2gmsh_ssh.pub | 1 - 2 files changed, 8 deletions(-) delete mode 100644 step2gmsh_ssh delete mode 100644 step2gmsh_ssh.pub diff --git a/step2gmsh_ssh b/step2gmsh_ssh deleted file mode 100644 index 3e8774c..0000000 --- a/step2gmsh_ssh +++ /dev/null @@ -1,7 +0,0 @@ ------BEGIN OPENSSH PRIVATE KEY----- -b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW -QyNTUxOQAAACAdQ9eDFYSBY9DeWE3FW1nD1rMNIyiYkjKvjlTkXSaqDAAAAJCfEtRpnxLU -aQAAAAtzc2gtZWQyNTUxOQAAACAdQ9eDFYSBY9DeWE3FW1nD1rMNIyiYkjKvjlTkXSaqDA -AAAED1H3JwWRJW6M+YwJS+9mNodNbEKHW4fBOJV94R1DO4OR1D14MVhIFj0N5YTcVbWcPW -sw0jKJiSMq+OVORdJqoMAAAABmxtQHQxNQECAwQFBgc= ------END OPENSSH PRIVATE KEY----- diff --git a/step2gmsh_ssh.pub b/step2gmsh_ssh.pub deleted file mode 100644 index f04d75b..0000000 --- a/step2gmsh_ssh.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB1D14MVhIFj0N5YTcVbWcPWsw0jKJiSMq+OVORdJqoM lm@t15 From e35aa3611802b9d9b29a1b5335b8b085ed726c0d Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Fri, 11 Aug 2023 17:38:54 +0200 Subject: [PATCH 025/134] [WIP] Adding open boundary meshing. --- .github/workflows/tests.yml | 4 +-- src/mesher.py | 69 +++++++++++++++++++++++-------------- test/test_mesher.py | 14 ++++---- 3 files changed, 52 insertions(+), 35 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f89422f..b30c408 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -7,9 +7,9 @@ on: push: branches: - master - - dev pull_request: - workflow_dispatch: + branches: + - master env: STEP2GMSH_TOP_DIR: step2gmsh diff --git a/src/mesher.py b/src/mesher.py index ca85112..a04ad5e 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -6,20 +6,24 @@ "Mesh.MeshSizeFromCurvature": 25, "Mesh.ElementOrder": 3, "Mesh.ScalingFactor": 1e-3, - "General.DrawBoundingBoxes": 1, "Mesh.SurfaceFaces": 1, - "Mesh.MeshSizeMax": 1 + "Mesh.MeshSizeMax": 1, + "General.DrawBoundingBoxes": 1, } -class StepShapes: + +class ShapesClassification: def __init__(self, shapes): gmsh.model.occ.synchronize() self.allShapes = shapes - self.openRegion = self.get_surfaces(shapes, "OpenRegion_") self.pecs = self.get_surfaces(shapes, "Conductor_") self.dielectrics = self.get_surfaces(shapes, "Dielectric_") + self.open = self.get_surfaces(shapes, "OpenRegion_") + + if len(self.open > 1): + raise ValueError("Only one open region is allowed.") @staticmethod def getNumberFromEntityName(entity_name: str, label: str): @@ -34,11 +38,20 @@ def get_surfaces(shapes, label: str): entity_name = gmsh.model.get_entity_name(*s) if s[0] != 2 or label not in entity_name: continue - num = StepShapes.getNumberFromEntityName(entity_name, label) + num = ShapesClassification.getNumberFromEntityName( + entity_name, label) surfaces[num] = s return surfaces + +def extractBoundaries(shapes: dict): + shape_boundaries = dict() + for num, surf in shapes.items(): + shape_boundaries[num] = gmsh.model.getBoundary([surf]) + return shape_boundaries + + def meshFromStep( folder: str, case_name: str, @@ -48,58 +61,62 @@ def meshFromStep( gmsh.initialize() gmsh.model.add(case_name) - # Importing from FreeCAD generated steps. STEP default units are mm. - stepShapes = StepShapes( + # Importing from FreeCAD generated steps. + # STEP default units are mm. + allShapes = ShapesClassification( gmsh.model.occ.importShapes( folder + case_name + '/' + case_name + '.step', highestDimOnly=False ) ) - + # --- Geometry manipulation --- # Creates global domain. - if len(stepShapes.openRegion) != 0: - region = stepShapes.openRegion[0] + if len(allShapes.open) != 0: isOpenProblem = True + globalDomain = allShapes.open[0] else: - region = stepShapes.pecs[0] isOpenProblem = False + globalDomain = allShapes.pecs[0] - for num, surf in stepShapes.pecs.items(): + for num, surf in allShapes.pecs.items(): if num == 0 and isOpenProblem == False: continue - for _, dielectric_surf in stepShapes.dielectrics.items(): - gmsh.model.occ.cut([dielectric_surf], [surf], removeTool=False) - gmsh.model.occ.cut([region], [surf], removeTool=False) + for _, dielectric_surf in allShapes.dielectrics.items(): + gmsh.model.occ.cut([dielectric_surf], [surf], removeTool=False) + gmsh.model.occ.cut([globalDomain], [surf], removeTool=False) + + for _, surf in allShapes.dielectrics.items(): + gmsh.model.occ.cut([globalDomain], [surf], removeTool=False) - for _, surf in stepShapes.dielectrics.items(): - gmsh.model.occ.cut([region], [surf], removeTool=False) - gmsh.model.occ.synchronize() - # Prepares PEC boundaries and removes surfaces. - pec_bdrs = dict() - for num, surf in stepShapes.pecs.items(): - pec_bdrs[num] = gmsh.model.getBoundary([surf]) + pec_bdrs = extractBoundaries(allShapes.pecs) + open_bdrs = extractBoundaries(allShapes.open) + + for num, surf in allShapes.pecs.items(): if num != 0: gmsh.model.occ.remove([surf]) elif num == 0 and isOpenProblem: gmsh.model.occ.remove([surf]) - + gmsh.model.occ.synchronize() # --- Physical groups --- - # Boundaries. + # Adds boundaries. for num, bdrs in pec_bdrs.items(): name = "Conductor_" + str(num) for bdr in bdrs: if bdr[1] > 0: gmsh.model.addPhysicalGroup(1, [bdr[1]], name=name) + + if len(open_bdrs) > 0: + gmsh.model.addPhysicalGroup(1, open_bdrs) # Domains. - gmsh.model.addPhysicalGroup(2, [region[1]], name='Vacuum') + gmsh.model.addPhysicalGroup(2, [globalDomain[1]], name='Vacuum') - for num, surf in stepShapes.dielectrics.items(): + for num, surf in allShapes.dielectrics.items(): name = "Dielectric_" + str(num) gmsh.model.addPhysicalGroup(2, [surf[1]], name=name) diff --git a/test/test_mesher.py b/test/test_mesher.py index b970fdd..cad0d41 100644 --- a/test/test_mesher.py +++ b/test/test_mesher.py @@ -11,12 +11,12 @@ def test_getNumberFromEntityName(): - assert (StepShapes.getNumberFromEntityName( + assert (ShapesClassification.getNumberFromEntityName( 'Shapes/Conductor_1', 'Conductor_') == 1 ) - assert (StepShapes.getNumberFromEntityName( + assert (ShapesClassification.getNumberFromEntityName( 'Shapes/solid_wire_002/Conductor_002/Conductor_002', 'Conductor_') == 2 ) @@ -39,7 +39,7 @@ def test_five_wires(): def test_three_wires_ribbon(): - meshFromStep(testdata_path, 'three_wires_ribbon') + meshFromStep(testdata_path, 'three_wires_ribbon', runGUI=True) def test_stepShapes_for_partially_filled_coax(): @@ -47,7 +47,7 @@ def test_stepShapes_for_partially_filled_coax(): gmsh.initialize() gmsh.model.add(case_name) - stepShapes = StepShapes( + stepShapes = ShapesClassification( gmsh.model.occ.importShapes( testdata_path + case_name + '/' + case_name + '.step' ) @@ -64,7 +64,7 @@ def test_stepShapes_for_five_wires(): gmsh.initialize() gmsh.model.add(case_name) - stepShapes = StepShapes( + stepShapes = ShapesClassification( gmsh.model.occ.importShapes( testdata_path + case_name + '/' + case_name + '.step' ) @@ -81,7 +81,7 @@ def test_stepShapes_for_three_wires_ribbon(): gmsh.initialize() gmsh.model.add(case_name) - stepShapes = StepShapes( + stepShapes = ShapesClassification( gmsh.model.occ.importShapes( testdata_path + case_name + '/' + case_name + '.step' ) @@ -89,6 +89,6 @@ def test_stepShapes_for_three_wires_ribbon(): gmsh.finalize() - assert (len(stepShapes.openRegion) == 1) + assert (len(stepShapes.open) == 1) assert (len(stepShapes.pecs) == 3) assert (len(stepShapes.dielectrics) == 3) From 445a73bd905da7e3f0040dcab2e281558bfb704c Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Sat, 12 Aug 2023 22:36:28 +0200 Subject: [PATCH 026/134] MInor --- src/mesher.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mesher.py b/src/mesher.py index a04ad5e..7e28c03 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -22,7 +22,7 @@ def __init__(self, shapes): self.dielectrics = self.get_surfaces(shapes, "Dielectric_") self.open = self.get_surfaces(shapes, "OpenRegion_") - if len(self.open > 1): + if len(self.open) > 1: raise ValueError("Only one open region is allowed.") @staticmethod From 4172148ec00c6fc727dee12cab2498ccf5400815 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Sat, 12 Aug 2023 22:58:59 +0200 Subject: [PATCH 027/134] Minor --- src/mesher.py | 4 +++- test/test_mesher.py | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/mesher.py b/src/mesher.py index 7e28c03..efaa2b9 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -111,7 +111,9 @@ def meshFromStep( gmsh.model.addPhysicalGroup(1, [bdr[1]], name=name) if len(open_bdrs) > 0: - gmsh.model.addPhysicalGroup(1, open_bdrs) + for bdr in open_bdrs[0]: + if bdr[1] > 0: # Orientation of the boundary must be positive. + gmsh.model.addPhysicalGroup(1, [bdr[1]], name="OpenRegion_0") # Domains. gmsh.model.addPhysicalGroup(2, [globalDomain[1]], name='Vacuum') diff --git a/test/test_mesher.py b/test/test_mesher.py index cad0d41..1d9b70f 100644 --- a/test/test_mesher.py +++ b/test/test_mesher.py @@ -39,7 +39,7 @@ def test_five_wires(): def test_three_wires_ribbon(): - meshFromStep(testdata_path, 'three_wires_ribbon', runGUI=True) + meshFromStep(testdata_path, 'three_wires_ribbon') def test_stepShapes_for_partially_filled_coax(): From 8cbb706ecdb2a29de28a9a92571b5f3ae4eff198 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Sat, 12 Aug 2023 15:03:35 -0600 Subject: [PATCH 028/134] Dev (#3) * Minor * token * token * Testing keys * Retrying * Adding tests to CI * Changing order * Fixing * Minor * minor2 * Minor3 * Fixing requirements * Fix test discovery * Cache fix * minor * Testing cache * cache * MInor * Minor --- src/mesher.py | 6 ++++-- step2gmsh_ssh | 7 +++++++ step2gmsh_ssh.pub | 1 + test/test_mesher.py | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 step2gmsh_ssh create mode 100644 step2gmsh_ssh.pub diff --git a/src/mesher.py b/src/mesher.py index a04ad5e..efaa2b9 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -22,7 +22,7 @@ def __init__(self, shapes): self.dielectrics = self.get_surfaces(shapes, "Dielectric_") self.open = self.get_surfaces(shapes, "OpenRegion_") - if len(self.open > 1): + if len(self.open) > 1: raise ValueError("Only one open region is allowed.") @staticmethod @@ -111,7 +111,9 @@ def meshFromStep( gmsh.model.addPhysicalGroup(1, [bdr[1]], name=name) if len(open_bdrs) > 0: - gmsh.model.addPhysicalGroup(1, open_bdrs) + for bdr in open_bdrs[0]: + if bdr[1] > 0: # Orientation of the boundary must be positive. + gmsh.model.addPhysicalGroup(1, [bdr[1]], name="OpenRegion_0") # Domains. gmsh.model.addPhysicalGroup(2, [globalDomain[1]], name='Vacuum') diff --git a/step2gmsh_ssh b/step2gmsh_ssh new file mode 100644 index 0000000..3e8774c --- /dev/null +++ b/step2gmsh_ssh @@ -0,0 +1,7 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW +QyNTUxOQAAACAdQ9eDFYSBY9DeWE3FW1nD1rMNIyiYkjKvjlTkXSaqDAAAAJCfEtRpnxLU +aQAAAAtzc2gtZWQyNTUxOQAAACAdQ9eDFYSBY9DeWE3FW1nD1rMNIyiYkjKvjlTkXSaqDA +AAAED1H3JwWRJW6M+YwJS+9mNodNbEKHW4fBOJV94R1DO4OR1D14MVhIFj0N5YTcVbWcPW +sw0jKJiSMq+OVORdJqoMAAAABmxtQHQxNQECAwQFBgc= +-----END OPENSSH PRIVATE KEY----- diff --git a/step2gmsh_ssh.pub b/step2gmsh_ssh.pub new file mode 100644 index 0000000..f04d75b --- /dev/null +++ b/step2gmsh_ssh.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB1D14MVhIFj0N5YTcVbWcPWsw0jKJiSMq+OVORdJqoM lm@t15 diff --git a/test/test_mesher.py b/test/test_mesher.py index cad0d41..1d9b70f 100644 --- a/test/test_mesher.py +++ b/test/test_mesher.py @@ -39,7 +39,7 @@ def test_five_wires(): def test_three_wires_ribbon(): - meshFromStep(testdata_path, 'three_wires_ribbon', runGUI=True) + meshFromStep(testdata_path, 'three_wires_ribbon') def test_stepShapes_for_partially_filled_coax(): From 75ed7c3fed7d48d7695885ee0eee6212895e10f7 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Tue, 29 Aug 2023 01:23:54 +0200 Subject: [PATCH 029/134] Removes entities not in physical groups --- src/mesher.py | 20 +- .../three_wires_ribbon.step | 1192 +++++++++-------- 2 files changed, 677 insertions(+), 535 deletions(-) diff --git a/src/mesher.py b/src/mesher.py index efaa2b9..6b45d3a 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -3,11 +3,11 @@ from collections import defaultdict DEFAULT_MESHING_OPTIONS = { - "Mesh.MeshSizeFromCurvature": 25, + "Mesh.MeshSizeFromCurvature": 35, "Mesh.ElementOrder": 3, "Mesh.ScalingFactor": 1e-3, "Mesh.SurfaceFaces": 1, - "Mesh.MeshSizeMax": 1, + "Mesh.MeshSizeMax": 10, "General.DrawBoundingBoxes": 1, } @@ -122,6 +122,18 @@ def meshFromStep( name = "Dielectric_" + str(num) gmsh.model.addPhysicalGroup(2, [surf[1]], name=name) + # Removes entities which are not at least in one physical group. + allEnts = gmsh.model.get_entities() + + entsInPG = [] + for pG in gmsh.model.get_physical_groups(): + ents = gmsh.model.getEntitiesForPhysicalGroup(pG[0], pG[1]) + for ent in ents: + entsInPG.append((pG[0], ent)) + + entsNotInPG = [x for x in allEnts if x not in entsInPG] + gmsh.model.remove_entities(entsNotInPG) + # Meshing. for [opt, val] in meshing_options.items(): gmsh.option.setNumber(opt, val) @@ -129,8 +141,8 @@ def meshFromStep( gmsh.model.mesh.generate(2) gmsh.option.setNumber("Mesh.MshFileVersion", 2.2) - # Exporting - gmsh.write(case_name + '.msh') + # # Exporting + # gmsh.write(case_name + '.msh') if runGUI: gmsh.fltk.run() diff --git a/testData/three_wires_ribbon/three_wires_ribbon.step b/testData/three_wires_ribbon/three_wires_ribbon.step index d906e70..7d6d20b 100644 --- a/testData/three_wires_ribbon/three_wires_ribbon.step +++ b/testData/three_wires_ribbon/three_wires_ribbon.step @@ -1,7 +1,7 @@ ISO-10303-21; HEADER; FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); -FILE_NAME('Open CASCADE Shape Model','2023-07-24T17:16:36',(''),(''), +FILE_NAME('Open CASCADE Shape Model','2023-08-29T00:29:01',(''),(''), 'Open CASCADE STEP processor 7.6','FreeCAD','Unknown'); FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }')); ENDSEC; @@ -14,10 +14,10 @@ DATA; #4 = PRODUCT_DEFINITION_SHAPE('','',#5); #5 = PRODUCT_DEFINITION('design','',#6,#9); #6 = PRODUCT_DEFINITION_FORMATION('','',#7); -#7 = PRODUCT('Domain_0','Domain_0','',(#8)); +#7 = PRODUCT('three_wires_ribbon','three_wires_ribbon','',(#8)); #8 = PRODUCT_CONTEXT('',#2,'mechanical'); #9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#10 = SHAPE_REPRESENTATION('',(#11,#15,#19,#23,#27),#31); +#10 = SHAPE_REPRESENTATION('',(#11,#15,#19,#23,#27,#31),#35); #11 = AXIS2_PLACEMENT_3D('',#12,#13,#14); #12 = CARTESIAN_POINT('',(0.,0.,0.)); #13 = DIRECTION('',(0.,0.,1.)); @@ -35,601 +35,731 @@ DATA; #25 = DIRECTION('',(0.,0.,1.)); #26 = DIRECTION('',(1.,0.,0.)); #27 = AXIS2_PLACEMENT_3D('',#28,#29,#30); -#28 = CARTESIAN_POINT('',(1.27,0.,0.)); +#28 = CARTESIAN_POINT('',(0.,0.,0.)); #29 = DIRECTION('',(0.,0.,1.)); #30 = DIRECTION('',(1.,0.,0.)); -#31 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#35)) GLOBAL_UNIT_ASSIGNED_CONTEXT( -(#32,#33,#34)) REPRESENTATION_CONTEXT('Context #1', +#31 = AXIS2_PLACEMENT_3D('',#32,#33,#34); +#32 = CARTESIAN_POINT('',(1.27,1.E-16,0.)); +#33 = DIRECTION('',(0.,0.,1.)); +#34 = DIRECTION('',(1.,0.,0.)); +#35 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#39)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#36,#37,#38)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#32 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#33 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#34 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#35 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#32, +#36 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#37 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#38 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#39 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#36, 'distance_accuracy_value','confusion accuracy'); -#36 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); -#37 = SHAPE_DEFINITION_REPRESENTATION(#38,#44); -#38 = PRODUCT_DEFINITION_SHAPE('','',#39); -#39 = PRODUCT_DEFINITION('design','',#40,#43); -#40 = PRODUCT_DEFINITION_FORMATION('','',#41); -#41 = PRODUCT('solid_wire_000','solid_wire_000','',(#42)); -#42 = PRODUCT_CONTEXT('',#2,'mechanical'); -#43 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#44 = SHAPE_REPRESENTATION('',(#11,#45,#49),#53); -#45 = AXIS2_PLACEMENT_3D('',#46,#47,#48); -#46 = CARTESIAN_POINT('',(0.,0.,0.)); -#47 = DIRECTION('',(0.,0.,1.)); -#48 = DIRECTION('',(1.,0.,0.)); +#40 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); +#41 = SHAPE_DEFINITION_REPRESENTATION(#42,#48); +#42 = PRODUCT_DEFINITION_SHAPE('','',#43); +#43 = PRODUCT_DEFINITION('design','',#44,#47); +#44 = PRODUCT_DEFINITION_FORMATION('','',#45); +#45 = PRODUCT('Domain_0','Domain_0','',(#46)); +#46 = PRODUCT_CONTEXT('',#2,'mechanical'); +#47 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#48 = SHAPE_REPRESENTATION('',(#11,#49,#53,#57,#61),#65); #49 = AXIS2_PLACEMENT_3D('',#50,#51,#52); #50 = CARTESIAN_POINT('',(0.,0.,0.)); #51 = DIRECTION('',(0.,0.,1.)); #52 = DIRECTION('',(1.,0.,0.)); -#53 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#57)) GLOBAL_UNIT_ASSIGNED_CONTEXT( -(#54,#55,#56)) REPRESENTATION_CONTEXT('Context #1', +#53 = AXIS2_PLACEMENT_3D('',#54,#55,#56); +#54 = CARTESIAN_POINT('',(0.,0.,0.)); +#55 = DIRECTION('',(0.,0.,1.)); +#56 = DIRECTION('',(1.,0.,0.)); +#57 = AXIS2_PLACEMENT_3D('',#58,#59,#60); +#58 = CARTESIAN_POINT('',(0.,0.,0.)); +#59 = DIRECTION('',(0.,0.,1.)); +#60 = DIRECTION('',(1.,0.,0.)); +#61 = AXIS2_PLACEMENT_3D('',#62,#63,#64); +#62 = CARTESIAN_POINT('',(1.27,1.E-16,0.)); +#63 = DIRECTION('',(0.,0.,1.)); +#64 = DIRECTION('',(1.,0.,0.)); +#65 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#69)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#66,#67,#68)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#54 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#55 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#56 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#57 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#54, +#66 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#67 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#68 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#69 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#66, 'distance_accuracy_value','confusion accuracy'); -#58 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#59,#61); -#59 = ( REPRESENTATION_RELATIONSHIP('','',#44,#10) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#60) +#70 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#71,#73); +#71 = ( REPRESENTATION_RELATIONSHIP('','',#48,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#72) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#60 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); -#61 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#62); -#62 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('3','solid_wire_000','',#5,#39,$); -#63 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#41)); -#64 = SHAPE_DEFINITION_REPRESENTATION(#65,#71); -#65 = PRODUCT_DEFINITION_SHAPE('','',#66); -#66 = PRODUCT_DEFINITION('design','',#67,#70); -#67 = PRODUCT_DEFINITION_FORMATION('','',#68); -#68 = PRODUCT('Conductor_0','Conductor_0','',(#69)); -#69 = PRODUCT_CONTEXT('',#2,'mechanical'); -#70 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#71 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#72),#99); -#72 = SHELL_BASED_SURFACE_MODEL('',(#73)); -#73 = OPEN_SHELL('',(#74)); -#74 = ADVANCED_FACE('',(#75),#88,.T.); -#75 = FACE_BOUND('',#76,.T.); -#76 = EDGE_LOOP('',(#77)); -#77 = ORIENTED_EDGE('',*,*,#78,.T.); -#78 = EDGE_CURVE('',#79,#79,#81,.T.); -#79 = VERTEX_POINT('',#80); -#80 = CARTESIAN_POINT('',(0.1905,0.,0.)); -#81 = SURFACE_CURVE('',#82,(#87),.PCURVE_S1.); -#82 = CIRCLE('',#83,0.1905); -#83 = AXIS2_PLACEMENT_3D('',#84,#85,#86); -#84 = CARTESIAN_POINT('',(0.,0.,0.)); -#85 = DIRECTION('',(0.,0.,1.)); -#86 = DIRECTION('',(1.,0.,-0.)); -#87 = PCURVE('',#88,#93); -#88 = PLANE('',#89); -#89 = AXIS2_PLACEMENT_3D('',#90,#91,#92); -#90 = CARTESIAN_POINT('',(-1.E-17,-0.,0.)); -#91 = DIRECTION('',(0.,0.,1.)); -#92 = DIRECTION('',(1.,0.,-0.)); -#93 = DEFINITIONAL_REPRESENTATION('',(#94),#98); -#94 = CIRCLE('',#95,0.1905); -#95 = AXIS2_PLACEMENT_2D('',#96,#97); -#96 = CARTESIAN_POINT('',(1.E-17,0.)); -#97 = DIRECTION('',(1.,0.)); -#98 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) -PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' - ) ); -#99 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#103)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#100,#101,#102)) REPRESENTATION_CONTEXT('Context #1', +#72 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); +#73 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#74); +#74 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('11','Domain_0','',#5,#43,$); +#75 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#45)); +#76 = SHAPE_DEFINITION_REPRESENTATION(#77,#83); +#77 = PRODUCT_DEFINITION_SHAPE('','',#78); +#78 = PRODUCT_DEFINITION('design','',#79,#82); +#79 = PRODUCT_DEFINITION_FORMATION('','',#80); +#80 = PRODUCT('solid_wire_000','solid_wire_000','',(#81)); +#81 = PRODUCT_CONTEXT('',#2,'mechanical'); +#82 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#83 = SHAPE_REPRESENTATION('',(#11,#84,#88),#92); +#84 = AXIS2_PLACEMENT_3D('',#85,#86,#87); +#85 = CARTESIAN_POINT('',(0.,0.,0.)); +#86 = DIRECTION('',(0.,0.,1.)); +#87 = DIRECTION('',(1.,0.,0.)); +#88 = AXIS2_PLACEMENT_3D('',#89,#90,#91); +#89 = CARTESIAN_POINT('',(0.,0.,0.)); +#90 = DIRECTION('',(0.,0.,1.)); +#91 = DIRECTION('',(1.,0.,0.)); +#92 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#96)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#93,#94,#95)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#100 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#101 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#102 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#103 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#100, +#93 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#94 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#95 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#96 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#93, 'distance_accuracy_value','confusion accuracy'); -#104 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#105,#107); -#105 = ( REPRESENTATION_RELATIONSHIP('','',#71,#44) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#106) +#97 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#98,#100); +#98 = ( REPRESENTATION_RELATIONSHIP('','',#83,#48) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#99) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#106 = ITEM_DEFINED_TRANSFORMATION('','',#11,#45); -#107 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#108 +#99 = ITEM_DEFINED_TRANSFORMATION('','',#11,#49); +#100 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#101 ); -#108 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('1','Conductor_0','',#39,#66,$); -#109 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#68)); -#110 = SHAPE_DEFINITION_REPRESENTATION(#111,#117); -#111 = PRODUCT_DEFINITION_SHAPE('','',#112); -#112 = PRODUCT_DEFINITION('design','',#113,#116); -#113 = PRODUCT_DEFINITION_FORMATION('','',#114); -#114 = PRODUCT('Dielectric_0','Dielectric_0','',(#115)); -#115 = PRODUCT_CONTEXT('',#2,'mechanical'); -#116 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#117 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#118),#145); -#118 = SHELL_BASED_SURFACE_MODEL('',(#119)); -#119 = OPEN_SHELL('',(#120)); -#120 = ADVANCED_FACE('',(#121),#134,.T.); -#121 = FACE_BOUND('',#122,.T.); -#122 = EDGE_LOOP('',(#123)); -#123 = ORIENTED_EDGE('',*,*,#124,.T.); -#124 = EDGE_CURVE('',#125,#125,#127,.T.); -#125 = VERTEX_POINT('',#126); -#126 = CARTESIAN_POINT('',(0.4445,0.,0.)); -#127 = SURFACE_CURVE('',#128,(#133),.PCURVE_S1.); -#128 = CIRCLE('',#129,0.4445); -#129 = AXIS2_PLACEMENT_3D('',#130,#131,#132); -#130 = CARTESIAN_POINT('',(0.,0.,0.)); -#131 = DIRECTION('',(0.,0.,1.)); -#132 = DIRECTION('',(1.,0.,-0.)); -#133 = PCURVE('',#134,#139); -#134 = PLANE('',#135); -#135 = AXIS2_PLACEMENT_3D('',#136,#137,#138); -#136 = CARTESIAN_POINT('',(-1.E-17,1.E-17,0.)); -#137 = DIRECTION('',(0.,0.,1.)); -#138 = DIRECTION('',(1.,0.,-0.)); -#139 = DEFINITIONAL_REPRESENTATION('',(#140),#144); -#140 = CIRCLE('',#141,0.4445); -#141 = AXIS2_PLACEMENT_2D('',#142,#143); -#142 = CARTESIAN_POINT('',(1.E-17,-1.E-17)); -#143 = DIRECTION('',(1.,0.)); -#144 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +#101 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('3','solid_wire_000','',#43,#78,$ + ); +#102 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#80)); +#103 = SHAPE_DEFINITION_REPRESENTATION(#104,#110); +#104 = PRODUCT_DEFINITION_SHAPE('','',#105); +#105 = PRODUCT_DEFINITION('design','',#106,#109); +#106 = PRODUCT_DEFINITION_FORMATION('','',#107); +#107 = PRODUCT('Conductor_0','Conductor_0','',(#108)); +#108 = PRODUCT_CONTEXT('',#2,'mechanical'); +#109 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#110 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#111),#138); +#111 = SHELL_BASED_SURFACE_MODEL('',(#112)); +#112 = OPEN_SHELL('',(#113)); +#113 = ADVANCED_FACE('',(#114),#127,.T.); +#114 = FACE_BOUND('',#115,.T.); +#115 = EDGE_LOOP('',(#116)); +#116 = ORIENTED_EDGE('',*,*,#117,.T.); +#117 = EDGE_CURVE('',#118,#118,#120,.T.); +#118 = VERTEX_POINT('',#119); +#119 = CARTESIAN_POINT('',(0.1905,0.,0.)); +#120 = SURFACE_CURVE('',#121,(#126),.PCURVE_S1.); +#121 = CIRCLE('',#122,0.1905); +#122 = AXIS2_PLACEMENT_3D('',#123,#124,#125); +#123 = CARTESIAN_POINT('',(0.,0.,0.)); +#124 = DIRECTION('',(0.,0.,1.)); +#125 = DIRECTION('',(1.,0.,-0.)); +#126 = PCURVE('',#127,#132); +#127 = PLANE('',#128); +#128 = AXIS2_PLACEMENT_3D('',#129,#130,#131); +#129 = CARTESIAN_POINT('',(-7.009925220121E-18,-7.665819544648E-19,0.)); +#130 = DIRECTION('',(0.,0.,1.)); +#131 = DIRECTION('',(1.,0.,-0.)); +#132 = DEFINITIONAL_REPRESENTATION('',(#133),#137); +#133 = CIRCLE('',#134,0.1905); +#134 = AXIS2_PLACEMENT_2D('',#135,#136); +#135 = CARTESIAN_POINT('',(7.009925220121E-18,7.665819544648E-19)); +#136 = DIRECTION('',(1.,0.)); +#137 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' ) ); -#145 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#149)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#146,#147,#148)) REPRESENTATION_CONTEXT('Context #1', +#138 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#142)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#139,#140,#141)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#146 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#147 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#148 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#149 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#146, +#139 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#140 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#141 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#142 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#139, 'distance_accuracy_value','confusion accuracy'); -#150 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#151,#153); -#151 = ( REPRESENTATION_RELATIONSHIP('','',#117,#44) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#152) +#143 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#144,#146); +#144 = ( REPRESENTATION_RELATIONSHIP('','',#110,#83) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#145) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#152 = ITEM_DEFINED_TRANSFORMATION('','',#11,#49); -#153 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#154 +#145 = ITEM_DEFINED_TRANSFORMATION('','',#11,#84); +#146 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#147 ); -#154 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('2','Dielectric_0','',#39,#112,$); -#155 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#114)); -#156 = SHAPE_DEFINITION_REPRESENTATION(#157,#163); -#157 = PRODUCT_DEFINITION_SHAPE('','',#158); -#158 = PRODUCT_DEFINITION('design','',#159,#162); -#159 = PRODUCT_DEFINITION_FORMATION('','',#160); -#160 = PRODUCT('solid_wire_001','solid_wire_001','',(#161)); -#161 = PRODUCT_CONTEXT('',#2,'mechanical'); -#162 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#163 = SHAPE_REPRESENTATION('',(#11,#164,#168),#172); -#164 = AXIS2_PLACEMENT_3D('',#165,#166,#167); -#165 = CARTESIAN_POINT('',(1.27,0.,0.)); -#166 = DIRECTION('',(0.,0.,1.)); -#167 = DIRECTION('',(1.,0.,0.)); +#147 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('1','Conductor_0','',#78,#105,$); +#148 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#107)); +#149 = SHAPE_DEFINITION_REPRESENTATION(#150,#156); +#150 = PRODUCT_DEFINITION_SHAPE('','',#151); +#151 = PRODUCT_DEFINITION('design','',#152,#155); +#152 = PRODUCT_DEFINITION_FORMATION('','',#153); +#153 = PRODUCT('Dielectric_0','Dielectric_0','',(#154)); +#154 = PRODUCT_CONTEXT('',#2,'mechanical'); +#155 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#156 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#157),#184); +#157 = SHELL_BASED_SURFACE_MODEL('',(#158)); +#158 = OPEN_SHELL('',(#159)); +#159 = ADVANCED_FACE('',(#160),#173,.T.); +#160 = FACE_BOUND('',#161,.T.); +#161 = EDGE_LOOP('',(#162)); +#162 = ORIENTED_EDGE('',*,*,#163,.T.); +#163 = EDGE_CURVE('',#164,#164,#166,.T.); +#164 = VERTEX_POINT('',#165); +#165 = CARTESIAN_POINT('',(0.4445,0.,0.)); +#166 = SURFACE_CURVE('',#167,(#172),.PCURVE_S1.); +#167 = CIRCLE('',#168,0.4445); #168 = AXIS2_PLACEMENT_3D('',#169,#170,#171); -#169 = CARTESIAN_POINT('',(1.27,0.,0.)); +#169 = CARTESIAN_POINT('',(0.,0.,0.)); #170 = DIRECTION('',(0.,0.,1.)); -#171 = DIRECTION('',(1.,0.,0.)); -#172 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#176)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#173,#174,#175)) REPRESENTATION_CONTEXT('Context #1', +#171 = DIRECTION('',(1.,0.,-0.)); +#172 = PCURVE('',#173,#178); +#173 = PLANE('',#174); +#174 = AXIS2_PLACEMENT_3D('',#175,#176,#177); +#175 = CARTESIAN_POINT('',(-1.201701466306E-17,5.888845918762E-18,0.)); +#176 = DIRECTION('',(0.,0.,1.)); +#177 = DIRECTION('',(1.,0.,-0.)); +#178 = DEFINITIONAL_REPRESENTATION('',(#179),#183); +#179 = CIRCLE('',#180,0.4445); +#180 = AXIS2_PLACEMENT_2D('',#181,#182); +#181 = CARTESIAN_POINT('',(1.201701466306E-17,-5.888845918762E-18)); +#182 = DIRECTION('',(1.,0.)); +#183 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#184 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#188)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#185,#186,#187)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#173 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#174 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#175 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#176 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#173, +#185 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#186 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#187 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#188 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#185, 'distance_accuracy_value','confusion accuracy'); -#177 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#178,#180); -#178 = ( REPRESENTATION_RELATIONSHIP('','',#163,#10) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#179) +#189 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#190,#192); +#190 = ( REPRESENTATION_RELATIONSHIP('','',#156,#83) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#191) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#179 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); -#180 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#181 +#191 = ITEM_DEFINED_TRANSFORMATION('','',#11,#88); +#192 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#193 ); -#181 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('6','solid_wire_001','',#5,#158,$ +#193 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('2','Dielectric_0','',#78,#151,$); +#194 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#153)); +#195 = SHAPE_DEFINITION_REPRESENTATION(#196,#202); +#196 = PRODUCT_DEFINITION_SHAPE('','',#197); +#197 = PRODUCT_DEFINITION('design','',#198,#201); +#198 = PRODUCT_DEFINITION_FORMATION('','',#199); +#199 = PRODUCT('solid_wire_001','solid_wire_001','',(#200)); +#200 = PRODUCT_CONTEXT('',#2,'mechanical'); +#201 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#202 = SHAPE_REPRESENTATION('',(#11,#203,#207),#211); +#203 = AXIS2_PLACEMENT_3D('',#204,#205,#206); +#204 = CARTESIAN_POINT('',(1.27,0.,0.)); +#205 = DIRECTION('',(0.,0.,1.)); +#206 = DIRECTION('',(1.,0.,0.)); +#207 = AXIS2_PLACEMENT_3D('',#208,#209,#210); +#208 = CARTESIAN_POINT('',(1.27,0.,0.)); +#209 = DIRECTION('',(0.,0.,1.)); +#210 = DIRECTION('',(1.,0.,0.)); +#211 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#215)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#212,#213,#214)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#212 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#213 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#214 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#215 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#212, + 'distance_accuracy_value','confusion accuracy'); +#216 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#217,#219); +#217 = ( REPRESENTATION_RELATIONSHIP('','',#202,#48) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#218) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#218 = ITEM_DEFINED_TRANSFORMATION('','',#11,#53); +#219 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#220 ); -#182 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#160)); -#183 = SHAPE_DEFINITION_REPRESENTATION(#184,#190); -#184 = PRODUCT_DEFINITION_SHAPE('','',#185); -#185 = PRODUCT_DEFINITION('design','',#186,#189); -#186 = PRODUCT_DEFINITION_FORMATION('','',#187); -#187 = PRODUCT('Conductor_001','Conductor_001','',(#188)); -#188 = PRODUCT_CONTEXT('',#2,'mechanical'); -#189 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#190 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#191),#218); -#191 = SHELL_BASED_SURFACE_MODEL('',(#192)); -#192 = OPEN_SHELL('',(#193)); -#193 = ADVANCED_FACE('',(#194),#207,.T.); -#194 = FACE_BOUND('',#195,.T.); -#195 = EDGE_LOOP('',(#196)); -#196 = ORIENTED_EDGE('',*,*,#197,.T.); -#197 = EDGE_CURVE('',#198,#198,#200,.T.); -#198 = VERTEX_POINT('',#199); -#199 = CARTESIAN_POINT('',(0.1905,0.,0.)); -#200 = SURFACE_CURVE('',#201,(#206),.PCURVE_S1.); -#201 = CIRCLE('',#202,0.1905); -#202 = AXIS2_PLACEMENT_3D('',#203,#204,#205); -#203 = CARTESIAN_POINT('',(0.,0.,0.)); -#204 = DIRECTION('',(0.,0.,1.)); -#205 = DIRECTION('',(1.,0.,-0.)); -#206 = PCURVE('',#207,#212); -#207 = PLANE('',#208); -#208 = AXIS2_PLACEMENT_3D('',#209,#210,#211); -#209 = CARTESIAN_POINT('',(-1.E-17,-0.,0.)); -#210 = DIRECTION('',(0.,0.,1.)); -#211 = DIRECTION('',(1.,0.,-0.)); -#212 = DEFINITIONAL_REPRESENTATION('',(#213),#217); -#213 = CIRCLE('',#214,0.1905); -#214 = AXIS2_PLACEMENT_2D('',#215,#216); -#215 = CARTESIAN_POINT('',(1.E-17,0.)); -#216 = DIRECTION('',(1.,0.)); -#217 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +#220 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('6','solid_wire_001','',#43,#197,$ + ); +#221 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#199)); +#222 = SHAPE_DEFINITION_REPRESENTATION(#223,#229); +#223 = PRODUCT_DEFINITION_SHAPE('','',#224); +#224 = PRODUCT_DEFINITION('design','',#225,#228); +#225 = PRODUCT_DEFINITION_FORMATION('','',#226); +#226 = PRODUCT('Conductor_001','Conductor_001','',(#227)); +#227 = PRODUCT_CONTEXT('',#2,'mechanical'); +#228 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#229 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#230),#257); +#230 = SHELL_BASED_SURFACE_MODEL('',(#231)); +#231 = OPEN_SHELL('',(#232)); +#232 = ADVANCED_FACE('',(#233),#246,.T.); +#233 = FACE_BOUND('',#234,.T.); +#234 = EDGE_LOOP('',(#235)); +#235 = ORIENTED_EDGE('',*,*,#236,.T.); +#236 = EDGE_CURVE('',#237,#237,#239,.T.); +#237 = VERTEX_POINT('',#238); +#238 = CARTESIAN_POINT('',(0.1905,0.,0.)); +#239 = SURFACE_CURVE('',#240,(#245),.PCURVE_S1.); +#240 = CIRCLE('',#241,0.1905); +#241 = AXIS2_PLACEMENT_3D('',#242,#243,#244); +#242 = CARTESIAN_POINT('',(0.,0.,0.)); +#243 = DIRECTION('',(0.,0.,1.)); +#244 = DIRECTION('',(1.,0.,-0.)); +#245 = PCURVE('',#246,#251); +#246 = PLANE('',#247); +#247 = AXIS2_PLACEMENT_3D('',#248,#249,#250); +#248 = CARTESIAN_POINT('',(-7.009925220121E-18,-7.665819544648E-19,0.)); +#249 = DIRECTION('',(0.,0.,1.)); +#250 = DIRECTION('',(1.,0.,-0.)); +#251 = DEFINITIONAL_REPRESENTATION('',(#252),#256); +#252 = CIRCLE('',#253,0.1905); +#253 = AXIS2_PLACEMENT_2D('',#254,#255); +#254 = CARTESIAN_POINT('',(7.009925220121E-18,7.665819544648E-19)); +#255 = DIRECTION('',(1.,0.)); +#256 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' ) ); -#218 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#222)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#219,#220,#221)) REPRESENTATION_CONTEXT('Context #1', +#257 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#261)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#258,#259,#260)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#219 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#220 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#221 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#222 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#219, +#258 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#259 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#260 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#261 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#258, 'distance_accuracy_value','confusion accuracy'); -#223 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#224,#226); -#224 = ( REPRESENTATION_RELATIONSHIP('','',#190,#163) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#225) +#262 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#263,#265); +#263 = ( REPRESENTATION_RELATIONSHIP('','',#229,#202) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#264) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#225 = ITEM_DEFINED_TRANSFORMATION('','',#11,#164); -#226 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#227 +#264 = ITEM_DEFINED_TRANSFORMATION('','',#11,#203); +#265 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#266 ); -#227 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('4','Conductor_001','',#158,#185,$ +#266 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('4','Conductor_001','',#197,#224,$ ); -#228 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#187)); -#229 = SHAPE_DEFINITION_REPRESENTATION(#230,#236); -#230 = PRODUCT_DEFINITION_SHAPE('','',#231); -#231 = PRODUCT_DEFINITION('design','',#232,#235); -#232 = PRODUCT_DEFINITION_FORMATION('','',#233); -#233 = PRODUCT('Dielectric_001','Dielectric_001','',(#234)); -#234 = PRODUCT_CONTEXT('',#2,'mechanical'); -#235 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#236 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#237),#264); -#237 = SHELL_BASED_SURFACE_MODEL('',(#238)); -#238 = OPEN_SHELL('',(#239)); -#239 = ADVANCED_FACE('',(#240),#253,.T.); -#240 = FACE_BOUND('',#241,.T.); -#241 = EDGE_LOOP('',(#242)); -#242 = ORIENTED_EDGE('',*,*,#243,.T.); -#243 = EDGE_CURVE('',#244,#244,#246,.T.); -#244 = VERTEX_POINT('',#245); -#245 = CARTESIAN_POINT('',(0.4445,0.,0.)); -#246 = SURFACE_CURVE('',#247,(#252),.PCURVE_S1.); -#247 = CIRCLE('',#248,0.4445); -#248 = AXIS2_PLACEMENT_3D('',#249,#250,#251); -#249 = CARTESIAN_POINT('',(0.,0.,0.)); -#250 = DIRECTION('',(0.,0.,1.)); -#251 = DIRECTION('',(1.,0.,-0.)); -#252 = PCURVE('',#253,#258); -#253 = PLANE('',#254); -#254 = AXIS2_PLACEMENT_3D('',#255,#256,#257); -#255 = CARTESIAN_POINT('',(-1.E-17,1.E-17,0.)); -#256 = DIRECTION('',(0.,0.,1.)); -#257 = DIRECTION('',(1.,0.,-0.)); -#258 = DEFINITIONAL_REPRESENTATION('',(#259),#263); -#259 = CIRCLE('',#260,0.4445); -#260 = AXIS2_PLACEMENT_2D('',#261,#262); -#261 = CARTESIAN_POINT('',(1.E-17,-1.E-17)); -#262 = DIRECTION('',(1.,0.)); -#263 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +#267 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#226)); +#268 = SHAPE_DEFINITION_REPRESENTATION(#269,#275); +#269 = PRODUCT_DEFINITION_SHAPE('','',#270); +#270 = PRODUCT_DEFINITION('design','',#271,#274); +#271 = PRODUCT_DEFINITION_FORMATION('','',#272); +#272 = PRODUCT('Dielectric_001','Dielectric_001','',(#273)); +#273 = PRODUCT_CONTEXT('',#2,'mechanical'); +#274 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#275 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#276),#303); +#276 = SHELL_BASED_SURFACE_MODEL('',(#277)); +#277 = OPEN_SHELL('',(#278)); +#278 = ADVANCED_FACE('',(#279),#292,.T.); +#279 = FACE_BOUND('',#280,.T.); +#280 = EDGE_LOOP('',(#281)); +#281 = ORIENTED_EDGE('',*,*,#282,.T.); +#282 = EDGE_CURVE('',#283,#283,#285,.T.); +#283 = VERTEX_POINT('',#284); +#284 = CARTESIAN_POINT('',(0.4445,0.,0.)); +#285 = SURFACE_CURVE('',#286,(#291),.PCURVE_S1.); +#286 = CIRCLE('',#287,0.4445); +#287 = AXIS2_PLACEMENT_3D('',#288,#289,#290); +#288 = CARTESIAN_POINT('',(0.,0.,0.)); +#289 = DIRECTION('',(0.,0.,1.)); +#290 = DIRECTION('',(1.,0.,-0.)); +#291 = PCURVE('',#292,#297); +#292 = PLANE('',#293); +#293 = AXIS2_PLACEMENT_3D('',#294,#295,#296); +#294 = CARTESIAN_POINT('',(-1.201701466306E-17,5.888845918762E-18,0.)); +#295 = DIRECTION('',(0.,0.,1.)); +#296 = DIRECTION('',(1.,0.,-0.)); +#297 = DEFINITIONAL_REPRESENTATION('',(#298),#302); +#298 = CIRCLE('',#299,0.4445); +#299 = AXIS2_PLACEMENT_2D('',#300,#301); +#300 = CARTESIAN_POINT('',(1.201701466306E-17,-5.888845918762E-18)); +#301 = DIRECTION('',(1.,0.)); +#302 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' ) ); -#264 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#268)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#265,#266,#267)) REPRESENTATION_CONTEXT('Context #1', +#303 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#307)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#304,#305,#306)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#265 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#266 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#267 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#268 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#265, +#304 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#305 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#306 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#307 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#304, 'distance_accuracy_value','confusion accuracy'); -#269 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#270,#272); -#270 = ( REPRESENTATION_RELATIONSHIP('','',#236,#163) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#271) +#308 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#309,#311); +#309 = ( REPRESENTATION_RELATIONSHIP('','',#275,#202) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#310) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#271 = ITEM_DEFINED_TRANSFORMATION('','',#11,#168); -#272 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#273 +#310 = ITEM_DEFINED_TRANSFORMATION('','',#11,#207); +#311 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#312 ); -#273 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('5','Dielectric_001','',#158,#231, +#312 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('5','Dielectric_001','',#197,#270, $); -#274 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#233)); -#275 = SHAPE_DEFINITION_REPRESENTATION(#276,#282); -#276 = PRODUCT_DEFINITION_SHAPE('','',#277); -#277 = PRODUCT_DEFINITION('design','',#278,#281); -#278 = PRODUCT_DEFINITION_FORMATION('','',#279); -#279 = PRODUCT('solid_wire_002','solid_wire_002','',(#280)); -#280 = PRODUCT_CONTEXT('',#2,'mechanical'); -#281 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#282 = SHAPE_REPRESENTATION('',(#11,#283,#287),#291); -#283 = AXIS2_PLACEMENT_3D('',#284,#285,#286); -#284 = CARTESIAN_POINT('',(2.54,0.,0.)); -#285 = DIRECTION('',(0.,0.,1.)); -#286 = DIRECTION('',(1.,0.,0.)); -#287 = AXIS2_PLACEMENT_3D('',#288,#289,#290); -#288 = CARTESIAN_POINT('',(2.54,0.,0.)); -#289 = DIRECTION('',(0.,0.,1.)); -#290 = DIRECTION('',(1.,0.,0.)); -#291 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#295)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#292,#293,#294)) REPRESENTATION_CONTEXT('Context #1', +#313 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#272)); +#314 = SHAPE_DEFINITION_REPRESENTATION(#315,#321); +#315 = PRODUCT_DEFINITION_SHAPE('','',#316); +#316 = PRODUCT_DEFINITION('design','',#317,#320); +#317 = PRODUCT_DEFINITION_FORMATION('','',#318); +#318 = PRODUCT('solid_wire_002','solid_wire_002','',(#319)); +#319 = PRODUCT_CONTEXT('',#2,'mechanical'); +#320 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#321 = SHAPE_REPRESENTATION('',(#11,#322,#326),#330); +#322 = AXIS2_PLACEMENT_3D('',#323,#324,#325); +#323 = CARTESIAN_POINT('',(2.54,0.,0.)); +#324 = DIRECTION('',(0.,0.,1.)); +#325 = DIRECTION('',(1.,0.,0.)); +#326 = AXIS2_PLACEMENT_3D('',#327,#328,#329); +#327 = CARTESIAN_POINT('',(2.54,0.,0.)); +#328 = DIRECTION('',(0.,0.,1.)); +#329 = DIRECTION('',(1.,0.,0.)); +#330 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#334)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#331,#332,#333)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#292 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#293 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#294 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#295 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#292, +#331 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#332 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#333 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#334 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#331, 'distance_accuracy_value','confusion accuracy'); -#296 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#297,#299); -#297 = ( REPRESENTATION_RELATIONSHIP('','',#282,#10) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#298) +#335 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#336,#338); +#336 = ( REPRESENTATION_RELATIONSHIP('','',#321,#48) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#337) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#298 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); -#299 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#300 +#337 = ITEM_DEFINED_TRANSFORMATION('','',#11,#57); +#338 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#339 ); -#300 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('9','solid_wire_002','',#5,#277,$ +#339 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('9','solid_wire_002','',#43,#316,$ ); -#301 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#279)); -#302 = SHAPE_DEFINITION_REPRESENTATION(#303,#309); -#303 = PRODUCT_DEFINITION_SHAPE('','',#304); -#304 = PRODUCT_DEFINITION('design','',#305,#308); -#305 = PRODUCT_DEFINITION_FORMATION('','',#306); -#306 = PRODUCT('Conductor_002','Conductor_002','',(#307)); -#307 = PRODUCT_CONTEXT('',#2,'mechanical'); -#308 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#309 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#310),#337); -#310 = SHELL_BASED_SURFACE_MODEL('',(#311)); -#311 = OPEN_SHELL('',(#312)); -#312 = ADVANCED_FACE('',(#313),#326,.T.); -#313 = FACE_BOUND('',#314,.T.); -#314 = EDGE_LOOP('',(#315)); -#315 = ORIENTED_EDGE('',*,*,#316,.T.); -#316 = EDGE_CURVE('',#317,#317,#319,.T.); -#317 = VERTEX_POINT('',#318); -#318 = CARTESIAN_POINT('',(0.1905,0.,0.)); -#319 = SURFACE_CURVE('',#320,(#325),.PCURVE_S1.); -#320 = CIRCLE('',#321,0.1905); -#321 = AXIS2_PLACEMENT_3D('',#322,#323,#324); -#322 = CARTESIAN_POINT('',(0.,0.,0.)); -#323 = DIRECTION('',(0.,0.,1.)); -#324 = DIRECTION('',(1.,0.,-0.)); -#325 = PCURVE('',#326,#331); -#326 = PLANE('',#327); -#327 = AXIS2_PLACEMENT_3D('',#328,#329,#330); -#328 = CARTESIAN_POINT('',(-1.E-17,-0.,0.)); -#329 = DIRECTION('',(0.,0.,1.)); -#330 = DIRECTION('',(1.,0.,-0.)); -#331 = DEFINITIONAL_REPRESENTATION('',(#332),#336); -#332 = CIRCLE('',#333,0.1905); -#333 = AXIS2_PLACEMENT_2D('',#334,#335); -#334 = CARTESIAN_POINT('',(1.E-17,0.)); -#335 = DIRECTION('',(1.,0.)); -#336 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +#340 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#318)); +#341 = SHAPE_DEFINITION_REPRESENTATION(#342,#348); +#342 = PRODUCT_DEFINITION_SHAPE('','',#343); +#343 = PRODUCT_DEFINITION('design','',#344,#347); +#344 = PRODUCT_DEFINITION_FORMATION('','',#345); +#345 = PRODUCT('Conductor_002','Conductor_002','',(#346)); +#346 = PRODUCT_CONTEXT('',#2,'mechanical'); +#347 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#348 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#349),#376); +#349 = SHELL_BASED_SURFACE_MODEL('',(#350)); +#350 = OPEN_SHELL('',(#351)); +#351 = ADVANCED_FACE('',(#352),#365,.T.); +#352 = FACE_BOUND('',#353,.T.); +#353 = EDGE_LOOP('',(#354)); +#354 = ORIENTED_EDGE('',*,*,#355,.T.); +#355 = EDGE_CURVE('',#356,#356,#358,.T.); +#356 = VERTEX_POINT('',#357); +#357 = CARTESIAN_POINT('',(0.1905,0.,0.)); +#358 = SURFACE_CURVE('',#359,(#364),.PCURVE_S1.); +#359 = CIRCLE('',#360,0.1905); +#360 = AXIS2_PLACEMENT_3D('',#361,#362,#363); +#361 = CARTESIAN_POINT('',(0.,0.,0.)); +#362 = DIRECTION('',(0.,0.,1.)); +#363 = DIRECTION('',(1.,0.,-0.)); +#364 = PCURVE('',#365,#370); +#365 = PLANE('',#366); +#366 = AXIS2_PLACEMENT_3D('',#367,#368,#369); +#367 = CARTESIAN_POINT('',(-7.009925220121E-18,-7.665819544648E-19,0.)); +#368 = DIRECTION('',(0.,0.,1.)); +#369 = DIRECTION('',(1.,0.,-0.)); +#370 = DEFINITIONAL_REPRESENTATION('',(#371),#375); +#371 = CIRCLE('',#372,0.1905); +#372 = AXIS2_PLACEMENT_2D('',#373,#374); +#373 = CARTESIAN_POINT('',(7.009925220121E-18,7.665819544648E-19)); +#374 = DIRECTION('',(1.,0.)); +#375 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' ) ); -#337 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#341)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#338,#339,#340)) REPRESENTATION_CONTEXT('Context #1', +#376 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#380)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#377,#378,#379)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#338 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#339 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#340 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#341 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#338, +#377 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#378 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#379 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#380 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#377, 'distance_accuracy_value','confusion accuracy'); -#342 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#343,#345); -#343 = ( REPRESENTATION_RELATIONSHIP('','',#309,#282) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#344) +#381 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#382,#384); +#382 = ( REPRESENTATION_RELATIONSHIP('','',#348,#321) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#383) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#344 = ITEM_DEFINED_TRANSFORMATION('','',#11,#283); -#345 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#346 +#383 = ITEM_DEFINED_TRANSFORMATION('','',#11,#322); +#384 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#385 ); -#346 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('7','Conductor_002','',#277,#304,$ +#385 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('7','Conductor_002','',#316,#343,$ ); -#347 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#306)); -#348 = SHAPE_DEFINITION_REPRESENTATION(#349,#355); -#349 = PRODUCT_DEFINITION_SHAPE('','',#350); -#350 = PRODUCT_DEFINITION('design','',#351,#354); -#351 = PRODUCT_DEFINITION_FORMATION('','',#352); -#352 = PRODUCT('Dielectric_002','Dielectric_002','',(#353)); -#353 = PRODUCT_CONTEXT('',#2,'mechanical'); -#354 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#355 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#356),#383); -#356 = SHELL_BASED_SURFACE_MODEL('',(#357)); -#357 = OPEN_SHELL('',(#358)); -#358 = ADVANCED_FACE('',(#359),#372,.T.); -#359 = FACE_BOUND('',#360,.T.); -#360 = EDGE_LOOP('',(#361)); -#361 = ORIENTED_EDGE('',*,*,#362,.T.); -#362 = EDGE_CURVE('',#363,#363,#365,.T.); -#363 = VERTEX_POINT('',#364); -#364 = CARTESIAN_POINT('',(0.4445,0.,0.)); -#365 = SURFACE_CURVE('',#366,(#371),.PCURVE_S1.); -#366 = CIRCLE('',#367,0.4445); -#367 = AXIS2_PLACEMENT_3D('',#368,#369,#370); -#368 = CARTESIAN_POINT('',(0.,0.,0.)); -#369 = DIRECTION('',(0.,0.,1.)); -#370 = DIRECTION('',(1.,0.,-0.)); -#371 = PCURVE('',#372,#377); -#372 = PLANE('',#373); -#373 = AXIS2_PLACEMENT_3D('',#374,#375,#376); -#374 = CARTESIAN_POINT('',(-1.E-17,1.E-17,0.)); -#375 = DIRECTION('',(0.,0.,1.)); -#376 = DIRECTION('',(1.,0.,-0.)); -#377 = DEFINITIONAL_REPRESENTATION('',(#378),#382); -#378 = CIRCLE('',#379,0.4445); -#379 = AXIS2_PLACEMENT_2D('',#380,#381); -#380 = CARTESIAN_POINT('',(1.E-17,-1.E-17)); -#381 = DIRECTION('',(1.,0.)); -#382 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +#386 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#345)); +#387 = SHAPE_DEFINITION_REPRESENTATION(#388,#394); +#388 = PRODUCT_DEFINITION_SHAPE('','',#389); +#389 = PRODUCT_DEFINITION('design','',#390,#393); +#390 = PRODUCT_DEFINITION_FORMATION('','',#391); +#391 = PRODUCT('Dielectric_002','Dielectric_002','',(#392)); +#392 = PRODUCT_CONTEXT('',#2,'mechanical'); +#393 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#394 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#395),#422); +#395 = SHELL_BASED_SURFACE_MODEL('',(#396)); +#396 = OPEN_SHELL('',(#397)); +#397 = ADVANCED_FACE('',(#398),#411,.T.); +#398 = FACE_BOUND('',#399,.T.); +#399 = EDGE_LOOP('',(#400)); +#400 = ORIENTED_EDGE('',*,*,#401,.T.); +#401 = EDGE_CURVE('',#402,#402,#404,.T.); +#402 = VERTEX_POINT('',#403); +#403 = CARTESIAN_POINT('',(0.4445,0.,0.)); +#404 = SURFACE_CURVE('',#405,(#410),.PCURVE_S1.); +#405 = CIRCLE('',#406,0.4445); +#406 = AXIS2_PLACEMENT_3D('',#407,#408,#409); +#407 = CARTESIAN_POINT('',(0.,0.,0.)); +#408 = DIRECTION('',(0.,0.,1.)); +#409 = DIRECTION('',(1.,0.,-0.)); +#410 = PCURVE('',#411,#416); +#411 = PLANE('',#412); +#412 = AXIS2_PLACEMENT_3D('',#413,#414,#415); +#413 = CARTESIAN_POINT('',(-1.201701466306E-17,5.888845918762E-18,0.)); +#414 = DIRECTION('',(0.,0.,1.)); +#415 = DIRECTION('',(1.,0.,-0.)); +#416 = DEFINITIONAL_REPRESENTATION('',(#417),#421); +#417 = CIRCLE('',#418,0.4445); +#418 = AXIS2_PLACEMENT_2D('',#419,#420); +#419 = CARTESIAN_POINT('',(1.201701466306E-17,-5.888845918762E-18)); +#420 = DIRECTION('',(1.,0.)); +#421 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' ) ); -#383 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#387)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#384,#385,#386)) REPRESENTATION_CONTEXT('Context #1', +#422 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#426)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#423,#424,#425)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#384 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#385 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#386 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#387 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#384, +#423 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#424 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#425 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#426 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#423, 'distance_accuracy_value','confusion accuracy'); -#388 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#389,#391); -#389 = ( REPRESENTATION_RELATIONSHIP('','',#355,#282) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#390) +#427 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#428,#430); +#428 = ( REPRESENTATION_RELATIONSHIP('','',#394,#321) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#429) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#390 = ITEM_DEFINED_TRANSFORMATION('','',#11,#287); -#391 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#392 +#429 = ITEM_DEFINED_TRANSFORMATION('','',#11,#326); +#430 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#431 ); -#392 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('8','Dielectric_002','',#277,#350, +#431 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('8','Dielectric_002','',#316,#389, $); -#393 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#352)); -#394 = SHAPE_DEFINITION_REPRESENTATION(#395,#401); -#395 = PRODUCT_DEFINITION_SHAPE('','',#396); -#396 = PRODUCT_DEFINITION('design','',#397,#400); -#397 = PRODUCT_DEFINITION_FORMATION('','',#398); -#398 = PRODUCT('OpenRegion_0','OpenRegion_0','',(#399)); -#399 = PRODUCT_CONTEXT('',#2,'mechanical'); -#400 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#401 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#402),#429); -#402 = SHELL_BASED_SURFACE_MODEL('',(#403)); -#403 = OPEN_SHELL('',(#404)); -#404 = ADVANCED_FACE('',(#405),#418,.T.); -#405 = FACE_BOUND('',#406,.T.); -#406 = EDGE_LOOP('',(#407)); -#407 = ORIENTED_EDGE('',*,*,#408,.T.); -#408 = EDGE_CURVE('',#409,#409,#411,.T.); -#409 = VERTEX_POINT('',#410); -#410 = CARTESIAN_POINT('',(5.,0.,0.)); -#411 = SURFACE_CURVE('',#412,(#417),.PCURVE_S1.); -#412 = CIRCLE('',#413,5.); -#413 = AXIS2_PLACEMENT_3D('',#414,#415,#416); -#414 = CARTESIAN_POINT('',(0.,0.,0.)); -#415 = DIRECTION('',(0.,0.,1.)); -#416 = DIRECTION('',(1.,0.,-0.)); -#417 = PCURVE('',#418,#423); -#418 = PLANE('',#419); -#419 = AXIS2_PLACEMENT_3D('',#420,#421,#422); -#420 = CARTESIAN_POINT('',(-2.7E-16,7.E-17,0.)); -#421 = DIRECTION('',(0.,0.,1.)); -#422 = DIRECTION('',(1.,0.,-0.)); -#423 = DEFINITIONAL_REPRESENTATION('',(#424),#428); -#424 = CIRCLE('',#425,5.); -#425 = AXIS2_PLACEMENT_2D('',#426,#427); -#426 = CARTESIAN_POINT('',(2.7E-16,-7.E-17)); -#427 = DIRECTION('',(1.,0.)); -#428 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +#432 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#391)); +#433 = SHAPE_DEFINITION_REPRESENTATION(#434,#440); +#434 = PRODUCT_DEFINITION_SHAPE('','',#435); +#435 = PRODUCT_DEFINITION('design','',#436,#439); +#436 = PRODUCT_DEFINITION_FORMATION('','',#437); +#437 = PRODUCT('OpenRegion_0','OpenRegion_0','',(#438)); +#438 = PRODUCT_CONTEXT('',#2,'mechanical'); +#439 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#440 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#441),#468); +#441 = SHELL_BASED_SURFACE_MODEL('',(#442)); +#442 = OPEN_SHELL('',(#443)); +#443 = ADVANCED_FACE('',(#444),#457,.T.); +#444 = FACE_BOUND('',#445,.T.); +#445 = EDGE_LOOP('',(#446)); +#446 = ORIENTED_EDGE('',*,*,#447,.T.); +#447 = EDGE_CURVE('',#448,#448,#450,.T.); +#448 = VERTEX_POINT('',#449); +#449 = CARTESIAN_POINT('',(50.,0.,0.)); +#450 = SURFACE_CURVE('',#451,(#456),.PCURVE_S1.); +#451 = CIRCLE('',#452,50.); +#452 = AXIS2_PLACEMENT_3D('',#453,#454,#455); +#453 = CARTESIAN_POINT('',(0.,0.,0.)); +#454 = DIRECTION('',(0.,0.,1.)); +#455 = DIRECTION('',(1.,0.,-0.)); +#456 = PCURVE('',#457,#462); +#457 = PLANE('',#458); +#458 = AXIS2_PLACEMENT_3D('',#459,#460,#461); +#459 = CARTESIAN_POINT('',(-3.500646739301E-15,-2.041077998579E-15,0.)); +#460 = DIRECTION('',(0.,0.,1.)); +#461 = DIRECTION('',(1.,0.,-0.)); +#462 = DEFINITIONAL_REPRESENTATION('',(#463),#467); +#463 = CIRCLE('',#464,50.); +#464 = AXIS2_PLACEMENT_2D('',#465,#466); +#465 = CARTESIAN_POINT('',(3.500646739301E-15,2.041077998579E-15)); +#466 = DIRECTION('',(1.,0.)); +#467 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#468 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#472)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#469,#470,#471)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#469 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#470 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#471 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#472 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#469, + 'distance_accuracy_value','confusion accuracy'); +#473 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#474,#476); +#474 = ( REPRESENTATION_RELATIONSHIP('','',#440,#48) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#475) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#475 = ITEM_DEFINED_TRANSFORMATION('','',#11,#61); +#476 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#477 + ); +#477 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('10','OpenRegion_0','',#43,#435,$ + ); +#478 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#437)); +#479 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#480,#482); +#480 = ( REPRESENTATION_RELATIONSHIP('','',#83,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#481) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#481 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); +#482 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#483 + ); +#483 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('12','solid_wire_000','',#5,#78,$ + ); +#484 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#485,#487); +#485 = ( REPRESENTATION_RELATIONSHIP('','',#202,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#486) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#486 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); +#487 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#488 + ); +#488 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('13','solid_wire_001','',#5,#197,$ + ); +#489 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#490,#492); +#490 = ( REPRESENTATION_RELATIONSHIP('','',#321,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#491) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#491 = ITEM_DEFINED_TRANSFORMATION('','',#11,#27); +#492 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#493 + ); +#493 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('14','solid_wire_002','',#5,#316,$ + ); +#494 = SHAPE_DEFINITION_REPRESENTATION(#495,#501); +#495 = PRODUCT_DEFINITION_SHAPE('','',#496); +#496 = PRODUCT_DEFINITION('design','',#497,#500); +#497 = PRODUCT_DEFINITION_FORMATION('','',#498); +#498 = PRODUCT('OpenRegion_0','OpenRegion_0','',(#499)); +#499 = PRODUCT_CONTEXT('',#2,'mechanical'); +#500 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#501 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#502),#529); +#502 = SHELL_BASED_SURFACE_MODEL('',(#503)); +#503 = OPEN_SHELL('',(#504)); +#504 = ADVANCED_FACE('',(#505),#518,.T.); +#505 = FACE_BOUND('',#506,.T.); +#506 = EDGE_LOOP('',(#507)); +#507 = ORIENTED_EDGE('',*,*,#508,.T.); +#508 = EDGE_CURVE('',#509,#509,#511,.T.); +#509 = VERTEX_POINT('',#510); +#510 = CARTESIAN_POINT('',(50.,0.,0.)); +#511 = SURFACE_CURVE('',#512,(#517),.PCURVE_S1.); +#512 = CIRCLE('',#513,50.); +#513 = AXIS2_PLACEMENT_3D('',#514,#515,#516); +#514 = CARTESIAN_POINT('',(0.,0.,0.)); +#515 = DIRECTION('',(0.,0.,1.)); +#516 = DIRECTION('',(1.,0.,0.)); +#517 = PCURVE('',#518,#523); +#518 = PLANE('',#519); +#519 = AXIS2_PLACEMENT_3D('',#520,#521,#522); +#520 = CARTESIAN_POINT('',(-3.500646739301E-15,-2.041077998579E-15,0.)); +#521 = DIRECTION('',(0.,0.,1.)); +#522 = DIRECTION('',(1.,0.,0.)); +#523 = DEFINITIONAL_REPRESENTATION('',(#524),#528); +#524 = CIRCLE('',#525,50.); +#525 = AXIS2_PLACEMENT_2D('',#526,#527); +#526 = CARTESIAN_POINT('',(3.500646739301E-15,2.041077998579E-15)); +#527 = DIRECTION('',(1.,0.)); +#528 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' ) ); -#429 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#433)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#430,#431,#432)) REPRESENTATION_CONTEXT('Context #1', +#529 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#533)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#530,#531,#532)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#430 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#431 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#432 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#433 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#430, +#530 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#531 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#532 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#533 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#530, 'distance_accuracy_value','confusion accuracy'); -#434 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#435,#437); -#435 = ( REPRESENTATION_RELATIONSHIP('','',#401,#10) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#436) +#534 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#535,#537); +#535 = ( REPRESENTATION_RELATIONSHIP('','',#501,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#536) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#436 = ITEM_DEFINED_TRANSFORMATION('','',#11,#27); -#437 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#438 +#536 = ITEM_DEFINED_TRANSFORMATION('','',#11,#31); +#537 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#538 ); -#438 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('10','OpenRegion_0','',#5,#396,$); -#439 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#398)); -#440 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#441) - ,#383); -#441 = STYLED_ITEM('color',(#442),#358); -#442 = PRESENTATION_STYLE_ASSIGNMENT((#443,#451)); -#443 = SURFACE_STYLE_USAGE(.BOTH.,#444); -#444 = SURFACE_SIDE_STYLE('',(#445,#449)); -#445 = SURFACE_STYLE_FILL_AREA(#446); -#446 = FILL_AREA_STYLE('',(#447)); -#447 = FILL_AREA_STYLE_COLOUR('',#448); -#448 = DRAUGHTING_PRE_DEFINED_COLOUR('red'); -#449 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#448,( - #450)); -#450 = SURFACE_STYLE_TRANSPARENT(0.899999976158); -#451 = CURVE_STYLE('',#452,POSITIVE_LENGTH_MEASURE(0.1),#453); -#452 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#453 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, +#538 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('15','OpenRegion_0','',#5,#496,$); +#539 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#498)); +#540 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#541) + ,#257); +#541 = STYLED_ITEM('color',(#542),#232); +#542 = PRESENTATION_STYLE_ASSIGNMENT((#543,#549)); +#543 = SURFACE_STYLE_USAGE(.BOTH.,#544); +#544 = SURFACE_SIDE_STYLE('',(#545)); +#545 = SURFACE_STYLE_FILL_AREA(#546); +#546 = FILL_AREA_STYLE('',(#547)); +#547 = FILL_AREA_STYLE_COLOUR('',#548); +#548 = COLOUR_RGB('',1.,0.333333345507,0.); +#549 = CURVE_STYLE('',#550,POSITIVE_LENGTH_MEASURE(0.1),#551); +#550 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#551 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, 9.803921802644E-02); -#454 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#455) - ,#99); -#455 = STYLED_ITEM('color',(#456),#74); -#456 = PRESENTATION_STYLE_ASSIGNMENT((#457,#463)); -#457 = SURFACE_STYLE_USAGE(.BOTH.,#458); -#458 = SURFACE_SIDE_STYLE('',(#459)); -#459 = SURFACE_STYLE_FILL_AREA(#460); -#460 = FILL_AREA_STYLE('',(#461)); -#461 = FILL_AREA_STYLE_COLOUR('',#462); -#462 = COLOUR_RGB('',1.,0.333333345507,0.); -#463 = CURVE_STYLE('',#464,POSITIVE_LENGTH_MEASURE(0.1),#453); -#464 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#465 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#466) - ,#264); -#466 = STYLED_ITEM('color',(#467),#239); -#467 = PRESENTATION_STYLE_ASSIGNMENT((#468,#475)); -#468 = SURFACE_STYLE_USAGE(.BOTH.,#469); -#469 = SURFACE_SIDE_STYLE('',(#470,#473)); -#470 = SURFACE_STYLE_FILL_AREA(#471); -#471 = FILL_AREA_STYLE('',(#472)); -#472 = FILL_AREA_STYLE_COLOUR('',#448); -#473 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#448,( - #474)); -#474 = SURFACE_STYLE_TRANSPARENT(0.899999976158); -#475 = CURVE_STYLE('',#476,POSITIVE_LENGTH_MEASURE(0.1),#453); -#476 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#477 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#478) - ,#429); -#478 = STYLED_ITEM('color',(#479),#404); -#479 = PRESENTATION_STYLE_ASSIGNMENT((#480,#486)); -#480 = SURFACE_STYLE_USAGE(.BOTH.,#481); -#481 = SURFACE_SIDE_STYLE('',(#482)); -#482 = SURFACE_STYLE_FILL_AREA(#483); -#483 = FILL_AREA_STYLE('',(#484)); -#484 = FILL_AREA_STYLE_COLOUR('',#485); -#485 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); -#486 = CURVE_STYLE('',#487,POSITIVE_LENGTH_MEASURE(0.1),#453); -#487 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#488 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#489) - ,#218); -#489 = STYLED_ITEM('color',(#490),#193); -#490 = PRESENTATION_STYLE_ASSIGNMENT((#491,#496)); -#491 = SURFACE_STYLE_USAGE(.BOTH.,#492); -#492 = SURFACE_SIDE_STYLE('',(#493)); -#493 = SURFACE_STYLE_FILL_AREA(#494); -#494 = FILL_AREA_STYLE('',(#495)); -#495 = FILL_AREA_STYLE_COLOUR('',#462); -#496 = CURVE_STYLE('',#497,POSITIVE_LENGTH_MEASURE(0.1),#453); -#497 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#498 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#499) - ,#337); -#499 = STYLED_ITEM('color',(#500),#312); -#500 = PRESENTATION_STYLE_ASSIGNMENT((#501,#506)); -#501 = SURFACE_STYLE_USAGE(.BOTH.,#502); -#502 = SURFACE_SIDE_STYLE('',(#503)); -#503 = SURFACE_STYLE_FILL_AREA(#504); -#504 = FILL_AREA_STYLE('',(#505)); -#505 = FILL_AREA_STYLE_COLOUR('',#462); -#506 = CURVE_STYLE('',#507,POSITIVE_LENGTH_MEASURE(0.1),#453); -#507 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#508 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#509) - ,#145); -#509 = STYLED_ITEM('color',(#510),#120); -#510 = PRESENTATION_STYLE_ASSIGNMENT((#511,#518)); -#511 = SURFACE_STYLE_USAGE(.BOTH.,#512); -#512 = SURFACE_SIDE_STYLE('',(#513,#516)); -#513 = SURFACE_STYLE_FILL_AREA(#514); -#514 = FILL_AREA_STYLE('',(#515)); -#515 = FILL_AREA_STYLE_COLOUR('',#448); -#516 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#448,( - #517)); -#517 = SURFACE_STYLE_TRANSPARENT(0.899999976158); -#518 = CURVE_STYLE('',#519,POSITIVE_LENGTH_MEASURE(0.1),#453); -#519 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#552 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#553) + ,#303); +#553 = STYLED_ITEM('color',(#554),#278); +#554 = PRESENTATION_STYLE_ASSIGNMENT((#555,#563)); +#555 = SURFACE_STYLE_USAGE(.BOTH.,#556); +#556 = SURFACE_SIDE_STYLE('',(#557,#561)); +#557 = SURFACE_STYLE_FILL_AREA(#558); +#558 = FILL_AREA_STYLE('',(#559)); +#559 = FILL_AREA_STYLE_COLOUR('',#560); +#560 = DRAUGHTING_PRE_DEFINED_COLOUR('red'); +#561 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#560,( + #562)); +#562 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#563 = CURVE_STYLE('',#564,POSITIVE_LENGTH_MEASURE(0.1),#551); +#564 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#565 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#566) + ,#468); +#566 = STYLED_ITEM('color',(#567),#443); +#567 = PRESENTATION_STYLE_ASSIGNMENT((#568,#574)); +#568 = SURFACE_STYLE_USAGE(.BOTH.,#569); +#569 = SURFACE_SIDE_STYLE('',(#570)); +#570 = SURFACE_STYLE_FILL_AREA(#571); +#571 = FILL_AREA_STYLE('',(#572)); +#572 = FILL_AREA_STYLE_COLOUR('',#573); +#573 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); +#574 = CURVE_STYLE('',#575,POSITIVE_LENGTH_MEASURE(0.1),#551); +#575 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#576 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#577) + ,#184); +#577 = STYLED_ITEM('color',(#578),#159); +#578 = PRESENTATION_STYLE_ASSIGNMENT((#579,#586)); +#579 = SURFACE_STYLE_USAGE(.BOTH.,#580); +#580 = SURFACE_SIDE_STYLE('',(#581,#584)); +#581 = SURFACE_STYLE_FILL_AREA(#582); +#582 = FILL_AREA_STYLE('',(#583)); +#583 = FILL_AREA_STYLE_COLOUR('',#560); +#584 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#560,( + #585)); +#585 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#586 = CURVE_STYLE('',#587,POSITIVE_LENGTH_MEASURE(0.1),#551); +#587 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#588 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#589) + ,#422); +#589 = STYLED_ITEM('color',(#590),#397); +#590 = PRESENTATION_STYLE_ASSIGNMENT((#591,#598)); +#591 = SURFACE_STYLE_USAGE(.BOTH.,#592); +#592 = SURFACE_SIDE_STYLE('',(#593,#596)); +#593 = SURFACE_STYLE_FILL_AREA(#594); +#594 = FILL_AREA_STYLE('',(#595)); +#595 = FILL_AREA_STYLE_COLOUR('',#560); +#596 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#560,( + #597)); +#597 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#598 = CURVE_STYLE('',#599,POSITIVE_LENGTH_MEASURE(0.1),#551); +#599 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#600 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#601) + ,#138); +#601 = STYLED_ITEM('color',(#602),#113); +#602 = PRESENTATION_STYLE_ASSIGNMENT((#603,#608)); +#603 = SURFACE_STYLE_USAGE(.BOTH.,#604); +#604 = SURFACE_SIDE_STYLE('',(#605)); +#605 = SURFACE_STYLE_FILL_AREA(#606); +#606 = FILL_AREA_STYLE('',(#607)); +#607 = FILL_AREA_STYLE_COLOUR('',#548); +#608 = CURVE_STYLE('',#609,POSITIVE_LENGTH_MEASURE(0.1),#551); +#609 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#610 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#611) + ,#376); +#611 = STYLED_ITEM('color',(#612),#351); +#612 = PRESENTATION_STYLE_ASSIGNMENT((#613,#618)); +#613 = SURFACE_STYLE_USAGE(.BOTH.,#614); +#614 = SURFACE_SIDE_STYLE('',(#615)); +#615 = SURFACE_STYLE_FILL_AREA(#616); +#616 = FILL_AREA_STYLE('',(#617)); +#617 = FILL_AREA_STYLE_COLOUR('',#548); +#618 = CURVE_STYLE('',#619,POSITIVE_LENGTH_MEASURE(0.1),#551); +#619 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); ENDSEC; END-ISO-10303-21; From b4d7354081e9763759d5e7be3bd88274d6f38c83 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Tue, 29 Aug 2023 01:34:43 +0200 Subject: [PATCH 030/134] Removes size max from default options --- src/mesher.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mesher.py b/src/mesher.py index 6b45d3a..95d4052 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -7,7 +7,7 @@ "Mesh.ElementOrder": 3, "Mesh.ScalingFactor": 1e-3, "Mesh.SurfaceFaces": 1, - "Mesh.MeshSizeMax": 10, + # "Mesh.MeshSizeMax": 10, "General.DrawBoundingBoxes": 1, } @@ -141,8 +141,8 @@ def meshFromStep( gmsh.model.mesh.generate(2) gmsh.option.setNumber("Mesh.MshFileVersion", 2.2) - # # Exporting - # gmsh.write(case_name + '.msh') + # Exporting + gmsh.write(case_name + '.msh') if runGUI: gmsh.fltk.run() From 23a609fe47fc2d2abf24f752caf83d2c224f5664 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Tue, 29 Aug 2023 01:55:47 +0200 Subject: [PATCH 031/134] Enlarges boundary for open problem --- src/mesher.py | 2 +- .../three_wires_ribbon.step | 189 +++++++++--------- 2 files changed, 96 insertions(+), 95 deletions(-) diff --git a/src/mesher.py b/src/mesher.py index 95d4052..753efd3 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -3,7 +3,7 @@ from collections import defaultdict DEFAULT_MESHING_OPTIONS = { - "Mesh.MeshSizeFromCurvature": 35, + "Mesh.MeshSizeFromCurvature": 40, "Mesh.ElementOrder": 3, "Mesh.ScalingFactor": 1e-3, "Mesh.SurfaceFaces": 1, diff --git a/testData/three_wires_ribbon/three_wires_ribbon.step b/testData/three_wires_ribbon/three_wires_ribbon.step index 7d6d20b..67e2fab 100644 --- a/testData/three_wires_ribbon/three_wires_ribbon.step +++ b/testData/three_wires_ribbon/three_wires_ribbon.step @@ -1,7 +1,7 @@ ISO-10303-21; HEADER; FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); -FILE_NAME('Open CASCADE Shape Model','2023-08-29T00:29:01',(''),(''), +FILE_NAME('Open CASCADE Shape Model','2023-08-29T01:38:25',(''),(''), 'Open CASCADE STEP processor 7.6','FreeCAD','Unknown'); FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }')); ENDSEC; @@ -91,7 +91,7 @@ REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#72) SHAPE_REPRESENTATION_RELATIONSHIP() ); #72 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); #73 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#74); -#74 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('11','Domain_0','',#5,#43,$); +#74 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('26','Domain_0','',#5,#43,$); #75 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#45)); #76 = SHAPE_DEFINITION_REPRESENTATION(#77,#83); #77 = PRODUCT_DEFINITION_SHAPE('','',#78); @@ -125,7 +125,7 @@ SHAPE_REPRESENTATION_RELATIONSHIP() ); #99 = ITEM_DEFINED_TRANSFORMATION('','',#11,#49); #100 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#101 ); -#101 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('3','solid_wire_000','',#43,#78,$ +#101 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('18','solid_wire_000','',#43,#78,$ ); #102 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#80)); #103 = SHAPE_DEFINITION_REPRESENTATION(#104,#110); @@ -181,7 +181,7 @@ SHAPE_REPRESENTATION_RELATIONSHIP() ); #145 = ITEM_DEFINED_TRANSFORMATION('','',#11,#84); #146 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#147 ); -#147 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('1','Conductor_0','',#78,#105,$); +#147 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('16','Conductor_0','',#78,#105,$); #148 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#107)); #149 = SHAPE_DEFINITION_REPRESENTATION(#150,#156); #150 = PRODUCT_DEFINITION_SHAPE('','',#151); @@ -236,7 +236,8 @@ SHAPE_REPRESENTATION_RELATIONSHIP() ); #191 = ITEM_DEFINED_TRANSFORMATION('','',#11,#88); #192 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#193 ); -#193 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('2','Dielectric_0','',#78,#151,$); +#193 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('17','Dielectric_0','',#78,#151,$ + ); #194 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#153)); #195 = SHAPE_DEFINITION_REPRESENTATION(#196,#202); #196 = PRODUCT_DEFINITION_SHAPE('','',#197); @@ -270,8 +271,8 @@ SHAPE_REPRESENTATION_RELATIONSHIP() ); #218 = ITEM_DEFINED_TRANSFORMATION('','',#11,#53); #219 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#220 ); -#220 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('6','solid_wire_001','',#43,#197,$ - ); +#220 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('21','solid_wire_001','',#43,#197, + $); #221 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#199)); #222 = SHAPE_DEFINITION_REPRESENTATION(#223,#229); #223 = PRODUCT_DEFINITION_SHAPE('','',#224); @@ -326,8 +327,8 @@ SHAPE_REPRESENTATION_RELATIONSHIP() ); #264 = ITEM_DEFINED_TRANSFORMATION('','',#11,#203); #265 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#266 ); -#266 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('4','Conductor_001','',#197,#224,$ - ); +#266 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('19','Conductor_001','',#197,#224, + $); #267 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#226)); #268 = SHAPE_DEFINITION_REPRESENTATION(#269,#275); #269 = PRODUCT_DEFINITION_SHAPE('','',#270); @@ -382,8 +383,8 @@ SHAPE_REPRESENTATION_RELATIONSHIP() ); #310 = ITEM_DEFINED_TRANSFORMATION('','',#11,#207); #311 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#312 ); -#312 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('5','Dielectric_001','',#197,#270, - $); +#312 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('20','Dielectric_001','',#197,#270 + ,$); #313 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#272)); #314 = SHAPE_DEFINITION_REPRESENTATION(#315,#321); #315 = PRODUCT_DEFINITION_SHAPE('','',#316); @@ -417,8 +418,8 @@ SHAPE_REPRESENTATION_RELATIONSHIP() ); #337 = ITEM_DEFINED_TRANSFORMATION('','',#11,#57); #338 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#339 ); -#339 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('9','solid_wire_002','',#43,#316,$ - ); +#339 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('24','solid_wire_002','',#43,#316, + $); #340 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#318)); #341 = SHAPE_DEFINITION_REPRESENTATION(#342,#348); #342 = PRODUCT_DEFINITION_SHAPE('','',#343); @@ -473,8 +474,8 @@ SHAPE_REPRESENTATION_RELATIONSHIP() ); #383 = ITEM_DEFINED_TRANSFORMATION('','',#11,#322); #384 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#385 ); -#385 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('7','Conductor_002','',#316,#343,$ - ); +#385 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('22','Conductor_002','',#316,#343, + $); #386 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#345)); #387 = SHAPE_DEFINITION_REPRESENTATION(#388,#394); #388 = PRODUCT_DEFINITION_SHAPE('','',#389); @@ -529,8 +530,8 @@ SHAPE_REPRESENTATION_RELATIONSHIP() ); #429 = ITEM_DEFINED_TRANSFORMATION('','',#11,#326); #430 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#431 ); -#431 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('8','Dielectric_002','',#316,#389, - $); +#431 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('23','Dielectric_002','',#316,#389 + ,$); #432 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#391)); #433 = SHAPE_DEFINITION_REPRESENTATION(#434,#440); #434 = PRODUCT_DEFINITION_SHAPE('','',#435); @@ -548,9 +549,9 @@ SHAPE_REPRESENTATION_RELATIONSHIP() ); #446 = ORIENTED_EDGE('',*,*,#447,.T.); #447 = EDGE_CURVE('',#448,#448,#450,.T.); #448 = VERTEX_POINT('',#449); -#449 = CARTESIAN_POINT('',(50.,0.,0.)); +#449 = CARTESIAN_POINT('',(200.,0.,0.)); #450 = SURFACE_CURVE('',#451,(#456),.PCURVE_S1.); -#451 = CIRCLE('',#452,50.); +#451 = CIRCLE('',#452,200.); #452 = AXIS2_PLACEMENT_3D('',#453,#454,#455); #453 = CARTESIAN_POINT('',(0.,0.,0.)); #454 = DIRECTION('',(0.,0.,1.)); @@ -558,13 +559,13 @@ SHAPE_REPRESENTATION_RELATIONSHIP() ); #456 = PCURVE('',#457,#462); #457 = PLANE('',#458); #458 = AXIS2_PLACEMENT_3D('',#459,#460,#461); -#459 = CARTESIAN_POINT('',(-3.500646739301E-15,-2.041077998579E-15,0.)); +#459 = CARTESIAN_POINT('',(-1.40025869572E-14,-8.164311994316E-15,0.)); #460 = DIRECTION('',(0.,0.,1.)); #461 = DIRECTION('',(1.,0.,-0.)); #462 = DEFINITIONAL_REPRESENTATION('',(#463),#467); -#463 = CIRCLE('',#464,50.); +#463 = CIRCLE('',#464,200.); #464 = AXIS2_PLACEMENT_2D('',#465,#466); -#465 = CARTESIAN_POINT('',(3.500646739301E-15,2.041077998579E-15)); +#465 = CARTESIAN_POINT('',(1.40025869572E-14,8.164311994316E-15)); #466 = DIRECTION('',(1.,0.)); #467 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' @@ -585,7 +586,7 @@ SHAPE_REPRESENTATION_RELATIONSHIP() ); #475 = ITEM_DEFINED_TRANSFORMATION('','',#11,#61); #476 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#477 ); -#477 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('10','OpenRegion_0','',#43,#435,$ +#477 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('25','OpenRegion_0','',#43,#435,$ ); #478 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#437)); #479 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#480,#482); @@ -595,7 +596,7 @@ SHAPE_REPRESENTATION_RELATIONSHIP() ); #481 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); #482 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#483 ); -#483 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('12','solid_wire_000','',#5,#78,$ +#483 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('27','solid_wire_000','',#5,#78,$ ); #484 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#485,#487); #485 = ( REPRESENTATION_RELATIONSHIP('','',#202,#10) @@ -604,7 +605,7 @@ SHAPE_REPRESENTATION_RELATIONSHIP() ); #486 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); #487 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#488 ); -#488 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('13','solid_wire_001','',#5,#197,$ +#488 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('28','solid_wire_001','',#5,#197,$ ); #489 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#490,#492); #490 = ( REPRESENTATION_RELATIONSHIP('','',#321,#10) @@ -613,7 +614,7 @@ SHAPE_REPRESENTATION_RELATIONSHIP() ); #491 = ITEM_DEFINED_TRANSFORMATION('','',#11,#27); #492 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#493 ); -#493 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('14','solid_wire_002','',#5,#316,$ +#493 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('29','solid_wire_002','',#5,#316,$ ); #494 = SHAPE_DEFINITION_REPRESENTATION(#495,#501); #495 = PRODUCT_DEFINITION_SHAPE('','',#496); @@ -631,9 +632,9 @@ SHAPE_REPRESENTATION_RELATIONSHIP() ); #507 = ORIENTED_EDGE('',*,*,#508,.T.); #508 = EDGE_CURVE('',#509,#509,#511,.T.); #509 = VERTEX_POINT('',#510); -#510 = CARTESIAN_POINT('',(50.,0.,0.)); +#510 = CARTESIAN_POINT('',(200.,0.,0.)); #511 = SURFACE_CURVE('',#512,(#517),.PCURVE_S1.); -#512 = CIRCLE('',#513,50.); +#512 = CIRCLE('',#513,200.); #513 = AXIS2_PLACEMENT_3D('',#514,#515,#516); #514 = CARTESIAN_POINT('',(0.,0.,0.)); #515 = DIRECTION('',(0.,0.,1.)); @@ -641,13 +642,13 @@ SHAPE_REPRESENTATION_RELATIONSHIP() ); #517 = PCURVE('',#518,#523); #518 = PLANE('',#519); #519 = AXIS2_PLACEMENT_3D('',#520,#521,#522); -#520 = CARTESIAN_POINT('',(-3.500646739301E-15,-2.041077998579E-15,0.)); +#520 = CARTESIAN_POINT('',(-1.40025869572E-14,-8.164311994316E-15,0.)); #521 = DIRECTION('',(0.,0.,1.)); #522 = DIRECTION('',(1.,0.,0.)); #523 = DEFINITIONAL_REPRESENTATION('',(#524),#528); -#524 = CIRCLE('',#525,50.); +#524 = CIRCLE('',#525,200.); #525 = AXIS2_PLACEMENT_2D('',#526,#527); -#526 = CARTESIAN_POINT('',(3.500646739301E-15,2.041077998579E-15)); +#526 = CARTESIAN_POINT('',(1.40025869572E-14,8.164311994316E-15)); #527 = DIRECTION('',(1.,0.)); #528 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' @@ -668,11 +669,11 @@ SHAPE_REPRESENTATION_RELATIONSHIP() ); #536 = ITEM_DEFINED_TRANSFORMATION('','',#11,#31); #537 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#538 ); -#538 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('15','OpenRegion_0','',#5,#496,$); +#538 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('30','OpenRegion_0','',#5,#496,$); #539 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#498)); #540 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#541) - ,#257); -#541 = STYLED_ITEM('color',(#542),#232); + ,#376); +#541 = STYLED_ITEM('color',(#542),#351); #542 = PRESENTATION_STYLE_ASSIGNMENT((#543,#549)); #543 = SURFACE_STYLE_USAGE(.BOTH.,#544); #544 = SURFACE_SIDE_STYLE('',(#545)); @@ -685,74 +686,74 @@ SHAPE_REPRESENTATION_RELATIONSHIP() ); #551 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, 9.803921802644E-02); #552 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#553) - ,#303); -#553 = STYLED_ITEM('color',(#554),#278); -#554 = PRESENTATION_STYLE_ASSIGNMENT((#555,#563)); + ,#138); +#553 = STYLED_ITEM('color',(#554),#113); +#554 = PRESENTATION_STYLE_ASSIGNMENT((#555,#560)); #555 = SURFACE_STYLE_USAGE(.BOTH.,#556); -#556 = SURFACE_SIDE_STYLE('',(#557,#561)); +#556 = SURFACE_SIDE_STYLE('',(#557)); #557 = SURFACE_STYLE_FILL_AREA(#558); #558 = FILL_AREA_STYLE('',(#559)); -#559 = FILL_AREA_STYLE_COLOUR('',#560); -#560 = DRAUGHTING_PRE_DEFINED_COLOUR('red'); -#561 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#560,( - #562)); -#562 = SURFACE_STYLE_TRANSPARENT(0.899999976158); -#563 = CURVE_STYLE('',#564,POSITIVE_LENGTH_MEASURE(0.1),#551); -#564 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#565 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#566) +#559 = FILL_AREA_STYLE_COLOUR('',#548); +#560 = CURVE_STYLE('',#561,POSITIVE_LENGTH_MEASURE(0.1),#551); +#561 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#562 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#563) + ,#303); +#563 = STYLED_ITEM('color',(#564),#278); +#564 = PRESENTATION_STYLE_ASSIGNMENT((#565,#573)); +#565 = SURFACE_STYLE_USAGE(.BOTH.,#566); +#566 = SURFACE_SIDE_STYLE('',(#567,#571)); +#567 = SURFACE_STYLE_FILL_AREA(#568); +#568 = FILL_AREA_STYLE('',(#569)); +#569 = FILL_AREA_STYLE_COLOUR('',#570); +#570 = DRAUGHTING_PRE_DEFINED_COLOUR('red'); +#571 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#570,( + #572)); +#572 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#573 = CURVE_STYLE('',#574,POSITIVE_LENGTH_MEASURE(0.1),#551); +#574 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#575 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#576) ,#468); -#566 = STYLED_ITEM('color',(#567),#443); -#567 = PRESENTATION_STYLE_ASSIGNMENT((#568,#574)); -#568 = SURFACE_STYLE_USAGE(.BOTH.,#569); -#569 = SURFACE_SIDE_STYLE('',(#570)); -#570 = SURFACE_STYLE_FILL_AREA(#571); -#571 = FILL_AREA_STYLE('',(#572)); -#572 = FILL_AREA_STYLE_COLOUR('',#573); -#573 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); -#574 = CURVE_STYLE('',#575,POSITIVE_LENGTH_MEASURE(0.1),#551); -#575 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#576 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#577) - ,#184); -#577 = STYLED_ITEM('color',(#578),#159); -#578 = PRESENTATION_STYLE_ASSIGNMENT((#579,#586)); -#579 = SURFACE_STYLE_USAGE(.BOTH.,#580); -#580 = SURFACE_SIDE_STYLE('',(#581,#584)); -#581 = SURFACE_STYLE_FILL_AREA(#582); -#582 = FILL_AREA_STYLE('',(#583)); -#583 = FILL_AREA_STYLE_COLOUR('',#560); -#584 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#560,( - #585)); -#585 = SURFACE_STYLE_TRANSPARENT(0.899999976158); -#586 = CURVE_STYLE('',#587,POSITIVE_LENGTH_MEASURE(0.1),#551); -#587 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#588 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#589) +#576 = STYLED_ITEM('color',(#577),#443); +#577 = PRESENTATION_STYLE_ASSIGNMENT((#578,#584)); +#578 = SURFACE_STYLE_USAGE(.BOTH.,#579); +#579 = SURFACE_SIDE_STYLE('',(#580)); +#580 = SURFACE_STYLE_FILL_AREA(#581); +#581 = FILL_AREA_STYLE('',(#582)); +#582 = FILL_AREA_STYLE_COLOUR('',#583); +#583 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); +#584 = CURVE_STYLE('',#585,POSITIVE_LENGTH_MEASURE(0.1),#551); +#585 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#586 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#587) ,#422); -#589 = STYLED_ITEM('color',(#590),#397); -#590 = PRESENTATION_STYLE_ASSIGNMENT((#591,#598)); -#591 = SURFACE_STYLE_USAGE(.BOTH.,#592); -#592 = SURFACE_SIDE_STYLE('',(#593,#596)); -#593 = SURFACE_STYLE_FILL_AREA(#594); -#594 = FILL_AREA_STYLE('',(#595)); -#595 = FILL_AREA_STYLE_COLOUR('',#560); -#596 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#560,( - #597)); -#597 = SURFACE_STYLE_TRANSPARENT(0.899999976158); -#598 = CURVE_STYLE('',#599,POSITIVE_LENGTH_MEASURE(0.1),#551); -#599 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#600 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#601) - ,#138); -#601 = STYLED_ITEM('color',(#602),#113); -#602 = PRESENTATION_STYLE_ASSIGNMENT((#603,#608)); -#603 = SURFACE_STYLE_USAGE(.BOTH.,#604); -#604 = SURFACE_SIDE_STYLE('',(#605)); -#605 = SURFACE_STYLE_FILL_AREA(#606); -#606 = FILL_AREA_STYLE('',(#607)); -#607 = FILL_AREA_STYLE_COLOUR('',#548); +#587 = STYLED_ITEM('color',(#588),#397); +#588 = PRESENTATION_STYLE_ASSIGNMENT((#589,#596)); +#589 = SURFACE_STYLE_USAGE(.BOTH.,#590); +#590 = SURFACE_SIDE_STYLE('',(#591,#594)); +#591 = SURFACE_STYLE_FILL_AREA(#592); +#592 = FILL_AREA_STYLE('',(#593)); +#593 = FILL_AREA_STYLE_COLOUR('',#570); +#594 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#570,( + #595)); +#595 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#596 = CURVE_STYLE('',#597,POSITIVE_LENGTH_MEASURE(0.1),#551); +#597 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#598 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#599) + ,#184); +#599 = STYLED_ITEM('color',(#600),#159); +#600 = PRESENTATION_STYLE_ASSIGNMENT((#601,#608)); +#601 = SURFACE_STYLE_USAGE(.BOTH.,#602); +#602 = SURFACE_SIDE_STYLE('',(#603,#606)); +#603 = SURFACE_STYLE_FILL_AREA(#604); +#604 = FILL_AREA_STYLE('',(#605)); +#605 = FILL_AREA_STYLE_COLOUR('',#570); +#606 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#570,( + #607)); +#607 = SURFACE_STYLE_TRANSPARENT(0.899999976158); #608 = CURVE_STYLE('',#609,POSITIVE_LENGTH_MEASURE(0.1),#551); #609 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); #610 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#611) - ,#376); -#611 = STYLED_ITEM('color',(#612),#351); + ,#257); +#611 = STYLED_ITEM('color',(#612),#232); #612 = PRESENTATION_STYLE_ASSIGNMENT((#613,#618)); #613 = SURFACE_STYLE_USAGE(.BOTH.,#614); #614 = SURFACE_SIDE_STYLE('',(#615)); From 05f04a46160bc49bd9e2783beab851648c192744 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Thu, 7 Sep 2023 19:18:17 +0200 Subject: [PATCH 032/134] [WIP] Implementing subdomains --- src/mesher.py | 111 ++++++---- test/test_mesher.py | 14 +- testData/nested_coax/nested_coax.FCStd | Bin 0 -> 11344 bytes testData/nested_coax/nested_coax.step | 272 +++++++++++++++++++++++++ 4 files changed, 352 insertions(+), 45 deletions(-) create mode 100644 testData/nested_coax/nested_coax.FCStd create mode 100644 testData/nested_coax/nested_coax.step diff --git a/src/mesher.py b/src/mesher.py index 753efd3..a22d0d3 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -11,6 +11,7 @@ "General.DrawBoundingBoxes": 1, } +RUN_GUI=True class ShapesClassification: def __init__(self, shapes): @@ -40,23 +41,58 @@ def get_surfaces(shapes, label: str): continue num = ShapesClassification.getNumberFromEntityName( entity_name, label) - surfaces[num] = s + surfaces[num] = [s] return surfaces + def isOpenProblem(self): + return len(self.open) != 0 + + def buildGlobalDomain(self): + if self.isOpenProblem(): + dom = self.open[0] + else: + dom = self.pecs[0] + + surfsToRemove = [] + for num, surf in self.pecs.items(): + if num == 0 and self.isOpenProblem() == False: + continue + surfsToRemove.extend(surf) + + for _, surf in self.dielectrics.items(): + surfsToRemove.extend(surf) + + dom = gmsh.model.occ.cut(dom, surfsToRemove, removeTool=False)[0] + + gmsh.model.occ.synchronize() + + return dom + + def removeConductorsFromDielectrics(self): + for num, diel in self.dielectrics.items(): + pec_surfs = [] + for _, pec_surf in self.dielectrics.items(): + if num == 0 and self.isOpenProblem() == False: + continue + pec_surfs.extend(pec_surf) + self.dielectrics[num] = gmsh.model.occ.cut(diel, pec_surfs, removeTool=False)[0] + + gmsh.model.occ.synchronize() + def extractBoundaries(shapes: dict): shape_boundaries = dict() - for num, surf in shapes.items(): - shape_boundaries[num] = gmsh.model.getBoundary([surf]) + for num, bdrs in shapes.items(): + shape_boundaries[num] = gmsh.model.getBoundary(bdrs) + return shape_boundaries def meshFromStep( folder: str, case_name: str, - meshing_options=DEFAULT_MESHING_OPTIONS, - runGUI: bool = False): + meshing_options=DEFAULT_MESHING_OPTIONS): gmsh.initialize() gmsh.model.add(case_name) @@ -71,34 +107,28 @@ def meshFromStep( ) # --- Geometry manipulation --- - # Creates global domain. - if len(allShapes.open) != 0: - isOpenProblem = True - globalDomain = allShapes.open[0] - else: - isOpenProblem = False - globalDomain = allShapes.pecs[0] - - for num, surf in allShapes.pecs.items(): - if num == 0 and isOpenProblem == False: - continue - for _, dielectric_surf in allShapes.dielectrics.items(): - gmsh.model.occ.cut([dielectric_surf], [surf], removeTool=False) - gmsh.model.occ.cut([globalDomain], [surf], removeTool=False) - - for _, surf in allShapes.dielectrics.items(): - gmsh.model.occ.cut([globalDomain], [surf], removeTool=False) - - gmsh.model.occ.synchronize() + allShapes.removeConductorsFromDielectrics() + # Extract boundaries removing boundaries repeated in other domains. pec_bdrs = extractBoundaries(allShapes.pecs) - open_bdrs = extractBoundaries(allShapes.open) + + for num, bdrs in pec_bdrs.items(): + if num == 0: + continue + for bdr in bdrs: + if (bdr[0], -bdr[1]) in pec_bdrs[0]: + pec_bdrs[0].remove((bdr[0], -bdr[1])) + for num, bdrs in pec_bdrs.items(): + for bdr in bdrs: + if bdr[1] < 0: + pec_bdrs[num].append((bdr[0], -bdr[1])) + pec_bdrs[num].remove(bdr) - for num, surf in allShapes.pecs.items(): + for num, surfs in allShapes.pecs.items(): if num != 0: - gmsh.model.occ.remove([surf]) - elif num == 0 and isOpenProblem: - gmsh.model.occ.remove([surf]) + gmsh.model.occ.remove(surfs) + elif num == 0 and allShapes.isOpenProblem(): + gmsh.model.occ.remove(surfs) gmsh.model.occ.synchronize() @@ -109,27 +139,28 @@ def meshFromStep( for bdr in bdrs: if bdr[1] > 0: gmsh.model.addPhysicalGroup(1, [bdr[1]], name=name) - - if len(open_bdrs) > 0: - for bdr in open_bdrs[0]: - if bdr[1] > 0: # Orientation of the boundary must be positive. - gmsh.model.addPhysicalGroup(1, [bdr[1]], name="OpenRegion_0") + + for bdr in extractBoundaries(allShapes.open): + if bdr[1] > 0: # Positive orientations mean that is the most external region. + gmsh.model.addPhysicalGroup(1, [bdr[1]], name="OpenRegion_0") # Domains. - gmsh.model.addPhysicalGroup(2, [globalDomain[1]], name='Vacuum') + for surf in allShapes.buildGlobalDomain(): + gmsh.model.addPhysicalGroup(2, [surf[1]], name='Vacuum') - for num, surf in allShapes.dielectrics.items(): + for num, surfs in allShapes.dielectrics.items(): name = "Dielectric_" + str(num) - gmsh.model.addPhysicalGroup(2, [surf[1]], name=name) + tags = [x[1] for x in surfs] + gmsh.model.addPhysicalGroup(2, tags, name=name) # Removes entities which are not at least in one physical group. allEnts = gmsh.model.get_entities() - + entsInPG = [] for pG in gmsh.model.get_physical_groups(): ents = gmsh.model.getEntitiesForPhysicalGroup(pG[0], pG[1]) for ent in ents: - entsInPG.append((pG[0], ent)) + entsInPG.append((pG[0], ent)) entsNotInPG = [x for x in allEnts if x not in entsInPG] gmsh.model.remove_entities(entsNotInPG) @@ -144,7 +175,7 @@ def meshFromStep( # Exporting gmsh.write(case_name + '.msh') - if runGUI: + if RUN_GUI: # for debugging only. gmsh.fltk.run() gmsh.finalize() diff --git a/test/test_mesher.py b/test/test_mesher.py index 1d9b70f..ed5a0da 100644 --- a/test/test_mesher.py +++ b/test/test_mesher.py @@ -1,10 +1,10 @@ -import sys - -sys.path.insert(0,'.') +import gmsh +import os from src.mesher import * +import sys + +sys.path.insert(0, '.') -import os -import gmsh dir_path = os.path.dirname(os.path.realpath(__file__)) + '/' testdata_path = dir_path + '/../testData/' @@ -42,6 +42,10 @@ def test_three_wires_ribbon(): meshFromStep(testdata_path, 'three_wires_ribbon') +def test_nested_coax(): + meshFromStep(testdata_path, 'nested_coax') + + def test_stepShapes_for_partially_filled_coax(): case_name = 'partially_filled_coax' diff --git a/testData/nested_coax/nested_coax.FCStd b/testData/nested_coax/nested_coax.FCStd new file mode 100644 index 0000000000000000000000000000000000000000..adc9abda16b9a4a5a20f835d9bfa948de684d1c0 GIT binary patch literal 11344 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

w2hg@mOCHZh#OBsHV~7kq(?Ea zz0MC33AwX~^bM~RQS_3r8!6_cs{2jzLJ{draV2;l$lbJ|{CUSr zu@Z(-B4NV9%&wvm6h(S}3C%anD+vVYlv&ZCiW!?GrM3zmN`hqcG72o~TQg#a#U4+E z?+e#TYI{1Wdhiu4H}f8$evc3k3$lBkqOqqZe*XE4kFAxJJJ3?x*}>V>+yW59Zawyt z?EaSfPDo)%{+j;l_gCtmVC(dc`J%3_rf;4gNLg9gzhQpewyHSWI=TI^$lpM(yvBDB z|GChwfLY>C+E~pkOiZrawnp&(o0Wc7_k{g-^3eV&?>|s~_U^epw*P^7zl``@-Y@FE zaqs^l?>|s~Cy)LAB<~mXznAwPsK1lP@qd!{i~8To`x6BLi3Rx2kH0;gtv^Ox;IEfI zr!Fe;zmv~*M*hJ80Cj;RPZ!K@`y|iN=i34QMlGMp<-gEBHV2-w&$I4-v%ODM^Iz;A z$@g>ic@X<=)*Rzc>>si0bM|=*`END{^H1y_q2zP+d7kxeHWB+T>DF`j&n5Kh0mXlf zy1)&J-`mA=@_7&YH~F-S`0S$mJNDNl{I5|LDF4Jh>uk^A=RNJ;@Y^T&w+{Cl{j=uZ z*RB7HX4b!hf3=W*jk>_Szl#0~{b!?pb-I6zxMyGQLjPygMo;vgD}>{Jt{U`&{_geP p!oRB?_^awC8V2@P72rJmFv0);_fK=s08*}&mg1rkr2lG;{}1bd`)&XL literal 0 HcmV?d00001 diff --git a/testData/nested_coax/nested_coax.step b/testData/nested_coax/nested_coax.step new file mode 100644 index 0000000..574b366 --- /dev/null +++ b/testData/nested_coax/nested_coax.step @@ -0,0 +1,272 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); +FILE_NAME('Open CASCADE Shape Model','2023-08-30T17:57:10',(''),(''), + 'Open CASCADE STEP processor 7.6','FreeCAD','Unknown'); +FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }')); +ENDSEC; +DATA; +#1 = APPLICATION_PROTOCOL_DEFINITION('international standard', + 'automotive_design',2000,#2); +#2 = APPLICATION_CONTEXT( + 'core data for automotive mechanical design processes'); +#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10); +#4 = PRODUCT_DEFINITION_SHAPE('','',#5); +#5 = PRODUCT_DEFINITION('design','',#6,#9); +#6 = PRODUCT_DEFINITION_FORMATION('','',#7); +#7 = PRODUCT('nested_coax','nested_coax','',(#8)); +#8 = PRODUCT_CONTEXT('',#2,'mechanical'); +#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#10 = SHAPE_REPRESENTATION('',(#11,#15,#19,#23),#27); +#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14); +#12 = CARTESIAN_POINT('',(0.,0.,0.)); +#13 = DIRECTION('',(0.,0.,1.)); +#14 = DIRECTION('',(1.,0.,-0.)); +#15 = AXIS2_PLACEMENT_3D('',#16,#17,#18); +#16 = CARTESIAN_POINT('',(0.,0.,0.)); +#17 = DIRECTION('',(0.,0.,1.)); +#18 = DIRECTION('',(1.,0.,0.)); +#19 = AXIS2_PLACEMENT_3D('',#20,#21,#22); +#20 = CARTESIAN_POINT('',(0.,0.,0.)); +#21 = DIRECTION('',(0.,-0.,1.)); +#22 = DIRECTION('',(1.,6.123233995737E-17,0.)); +#23 = AXIS2_PLACEMENT_3D('',#24,#25,#26); +#24 = CARTESIAN_POINT('',(0.,0.,0.)); +#25 = DIRECTION('',(0.,-0.,1.)); +#26 = DIRECTION('',(1.,6.123233995737E-17,0.)); +#27 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#31)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#28,#29,#30)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#28 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#29 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#30 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#31 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#28, + 'distance_accuracy_value','confusion accuracy'); +#32 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); +#33 = SHAPE_DEFINITION_REPRESENTATION(#34,#40); +#34 = PRODUCT_DEFINITION_SHAPE('','',#35); +#35 = PRODUCT_DEFINITION('design','',#36,#39); +#36 = PRODUCT_DEFINITION_FORMATION('','',#37); +#37 = PRODUCT('Conductor_1','Conductor_1','',(#38)); +#38 = PRODUCT_CONTEXT('',#2,'mechanical'); +#39 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#40 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#41),#87); +#41 = SHELL_BASED_SURFACE_MODEL('',(#42)); +#42 = OPEN_SHELL('',(#43)); +#43 = ADVANCED_FACE('',(#44,#68),#57,.T.); +#44 = FACE_BOUND('',#45,.T.); +#45 = EDGE_LOOP('',(#46)); +#46 = ORIENTED_EDGE('',*,*,#47,.T.); +#47 = EDGE_CURVE('',#48,#48,#50,.T.); +#48 = VERTEX_POINT('',#49); +#49 = CARTESIAN_POINT('',(2.8,1.714505518806E-16,0.)); +#50 = SURFACE_CURVE('',#51,(#56),.PCURVE_S1.); +#51 = CIRCLE('',#52,2.8); +#52 = AXIS2_PLACEMENT_3D('',#53,#54,#55); +#53 = CARTESIAN_POINT('',(0.,0.,0.)); +#54 = DIRECTION('',(0.,-0.,1.)); +#55 = DIRECTION('',(1.,6.123233995737E-17,0.)); +#56 = PCURVE('',#57,#62); +#57 = PLANE('',#58); +#58 = AXIS2_PLACEMENT_3D('',#59,#60,#61); +#59 = CARTESIAN_POINT('',(-2.441857379535E-16,1.29885370033E-16,0.)); +#60 = DIRECTION('',(0.,0.,1.)); +#61 = DIRECTION('',(1.,6.123233995737E-17,0.)); +#62 = DEFINITIONAL_REPRESENTATION('',(#63),#67); +#63 = CIRCLE('',#64,2.8); +#64 = AXIS2_PLACEMENT_2D('',#65,#66); +#65 = CARTESIAN_POINT('',(2.441857379535E-16,-1.29885370033E-16)); +#66 = DIRECTION('',(1.,0.)); +#67 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#68 = FACE_BOUND('',#69,.T.); +#69 = EDGE_LOOP('',(#70)); +#70 = ORIENTED_EDGE('',*,*,#71,.F.); +#71 = EDGE_CURVE('',#72,#72,#74,.T.); +#72 = VERTEX_POINT('',#73); +#73 = CARTESIAN_POINT('',(2.4,1.469576158977E-16,0.)); +#74 = SURFACE_CURVE('',#75,(#80),.PCURVE_S1.); +#75 = CIRCLE('',#76,2.4); +#76 = AXIS2_PLACEMENT_3D('',#77,#78,#79); +#77 = CARTESIAN_POINT('',(0.,0.,0.)); +#78 = DIRECTION('',(0.,-0.,1.)); +#79 = DIRECTION('',(1.,6.123233995737E-17,0.)); +#80 = PCURVE('',#57,#81); +#81 = DEFINITIONAL_REPRESENTATION('',(#82),#86); +#82 = CIRCLE('',#83,2.4); +#83 = AXIS2_PLACEMENT_2D('',#84,#85); +#84 = CARTESIAN_POINT('',(2.441857379535E-16,-1.29885370033E-16)); +#85 = DIRECTION('',(1.,0.)); +#86 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#87 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#91)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#88,#89,#90)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#88 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#89 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#90 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#91 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#88, + 'distance_accuracy_value','confusion accuracy'); +#92 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#93,#95); +#93 = ( REPRESENTATION_RELATIONSHIP('','',#40,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#94) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#94 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); +#95 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#96); +#96 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('1','Conductor_1','',#5,#35,$); +#97 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#37)); +#98 = SHAPE_DEFINITION_REPRESENTATION(#99,#105); +#99 = PRODUCT_DEFINITION_SHAPE('','',#100); +#100 = PRODUCT_DEFINITION('design','',#101,#104); +#101 = PRODUCT_DEFINITION_FORMATION('','',#102); +#102 = PRODUCT('Conductor_0','Conductor_0','',(#103)); +#103 = PRODUCT_CONTEXT('',#2,'mechanical'); +#104 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#105 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#106),#133); +#106 = SHELL_BASED_SURFACE_MODEL('',(#107)); +#107 = OPEN_SHELL('',(#108)); +#108 = ADVANCED_FACE('',(#109),#122,.T.); +#109 = FACE_BOUND('',#110,.T.); +#110 = EDGE_LOOP('',(#111)); +#111 = ORIENTED_EDGE('',*,*,#112,.T.); +#112 = EDGE_CURVE('',#113,#113,#115,.T.); +#113 = VERTEX_POINT('',#114); +#114 = CARTESIAN_POINT('',(4.,0.,0.)); +#115 = SURFACE_CURVE('',#116,(#121),.PCURVE_S1.); +#116 = CIRCLE('',#117,4.); +#117 = AXIS2_PLACEMENT_3D('',#118,#119,#120); +#118 = CARTESIAN_POINT('',(0.,0.,0.)); +#119 = DIRECTION('',(0.,0.,1.)); +#120 = DIRECTION('',(1.,0.,-0.)); +#121 = PCURVE('',#122,#127); +#122 = PLANE('',#123); +#123 = AXIS2_PLACEMENT_3D('',#124,#125,#126); +#124 = CARTESIAN_POINT('',(-2.563950248511E-16,7.643776681114E-18,0.)); +#125 = DIRECTION('',(0.,0.,1.)); +#126 = DIRECTION('',(1.,0.,-0.)); +#127 = DEFINITIONAL_REPRESENTATION('',(#128),#132); +#128 = CIRCLE('',#129,4.); +#129 = AXIS2_PLACEMENT_2D('',#130,#131); +#130 = CARTESIAN_POINT('',(2.563950248511E-16,-7.643776681114E-18)); +#131 = DIRECTION('',(1.,0.)); +#132 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#133 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#137)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#134,#135,#136)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#134 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#135 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#136 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#137 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#134, + 'distance_accuracy_value','confusion accuracy'); +#138 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#139,#141); +#139 = ( REPRESENTATION_RELATIONSHIP('','',#105,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#140) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#140 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); +#141 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#142 + ); +#142 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('2','Conductor_0','',#5,#100,$); +#143 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#102)); +#144 = SHAPE_DEFINITION_REPRESENTATION(#145,#151); +#145 = PRODUCT_DEFINITION_SHAPE('','',#146); +#146 = PRODUCT_DEFINITION('design','',#147,#150); +#147 = PRODUCT_DEFINITION_FORMATION('','',#148); +#148 = PRODUCT('Conductor_2','Conductor_2','',(#149)); +#149 = PRODUCT_CONTEXT('',#2,'mechanical'); +#150 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#151 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#152),#179); +#152 = SHELL_BASED_SURFACE_MODEL('',(#153)); +#153 = OPEN_SHELL('',(#154)); +#154 = ADVANCED_FACE('',(#155),#168,.T.); +#155 = FACE_BOUND('',#156,.T.); +#156 = EDGE_LOOP('',(#157)); +#157 = ORIENTED_EDGE('',*,*,#158,.T.); +#158 = EDGE_CURVE('',#159,#159,#161,.T.); +#159 = VERTEX_POINT('',#160); +#160 = CARTESIAN_POINT('',(1.,0.,0.)); +#161 = SURFACE_CURVE('',#162,(#167),.PCURVE_S1.); +#162 = CIRCLE('',#163,1.); +#163 = AXIS2_PLACEMENT_3D('',#164,#165,#166); +#164 = CARTESIAN_POINT('',(0.,0.,0.)); +#165 = DIRECTION('',(0.,0.,1.)); +#166 = DIRECTION('',(1.,0.,-0.)); +#167 = PCURVE('',#168,#173); +#168 = PLANE('',#169); +#169 = AXIS2_PLACEMENT_3D('',#170,#171,#172); +#170 = CARTESIAN_POINT('',(-6.409875621279E-17,1.910944170279E-18,0.)); +#171 = DIRECTION('',(0.,0.,1.)); +#172 = DIRECTION('',(1.,0.,-0.)); +#173 = DEFINITIONAL_REPRESENTATION('',(#174),#178); +#174 = CIRCLE('',#175,1.); +#175 = AXIS2_PLACEMENT_2D('',#176,#177); +#176 = CARTESIAN_POINT('',(6.409875621279E-17,-1.910944170279E-18)); +#177 = DIRECTION('',(1.,0.)); +#178 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#179 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#183)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#180,#181,#182)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#180 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#181 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#182 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#183 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#180, + 'distance_accuracy_value','confusion accuracy'); +#184 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#185,#187); +#185 = ( REPRESENTATION_RELATIONSHIP('','',#151,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#186) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#186 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); +#187 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#188 + ); +#188 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('3','Conductor_2','',#5,#146,$); +#189 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#148)); +#190 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#191) + ,#133); +#191 = STYLED_ITEM('color',(#192),#108); +#192 = PRESENTATION_STYLE_ASSIGNMENT((#193,#201)); +#193 = SURFACE_STYLE_USAGE(.BOTH.,#194); +#194 = SURFACE_SIDE_STYLE('',(#195,#199)); +#195 = SURFACE_STYLE_FILL_AREA(#196); +#196 = FILL_AREA_STYLE('',(#197)); +#197 = FILL_AREA_STYLE_COLOUR('',#198); +#198 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); +#199 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#198,( + #200)); +#200 = SURFACE_STYLE_TRANSPARENT(0.949999988079); +#201 = CURVE_STYLE('',#202,POSITIVE_LENGTH_MEASURE(0.1),#203); +#202 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#203 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, + 9.803921802644E-02); +#204 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#205) + ,#179); +#205 = STYLED_ITEM('color',(#206),#154); +#206 = PRESENTATION_STYLE_ASSIGNMENT((#207,#212)); +#207 = SURFACE_STYLE_USAGE(.BOTH.,#208); +#208 = SURFACE_SIDE_STYLE('',(#209)); +#209 = SURFACE_STYLE_FILL_AREA(#210); +#210 = FILL_AREA_STYLE('',(#211)); +#211 = FILL_AREA_STYLE_COLOUR('',#198); +#212 = CURVE_STYLE('',#213,POSITIVE_LENGTH_MEASURE(0.1),#203); +#213 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#214 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#215) + ,#87); +#215 = STYLED_ITEM('color',(#216),#43); +#216 = PRESENTATION_STYLE_ASSIGNMENT((#217,#222)); +#217 = SURFACE_STYLE_USAGE(.BOTH.,#218); +#218 = SURFACE_SIDE_STYLE('',(#219)); +#219 = SURFACE_STYLE_FILL_AREA(#220); +#220 = FILL_AREA_STYLE('',(#221)); +#221 = FILL_AREA_STYLE_COLOUR('',#198); +#222 = CURVE_STYLE('',#223,POSITIVE_LENGTH_MEASURE(0.1),#203); +#223 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +ENDSEC; +END-ISO-10303-21; From 41695bbb63a5880c633695d7a1ce5d47481a0c01 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Fri, 8 Sep 2023 11:37:22 +0200 Subject: [PATCH 033/134] Improving tests to check correct number of entities --- src/mesher.py | 78 ++++++++++++++++++++++++++------------------- test/test_mesher.py | 46 +++++++++++++++++++++++--- 2 files changed, 88 insertions(+), 36 deletions(-) diff --git a/src/mesher.py b/src/mesher.py index a22d0d3..7751099 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -3,12 +3,13 @@ from collections import defaultdict DEFAULT_MESHING_OPTIONS = { + "Mesh.MshFileVersion": 2.2, "Mesh.MeshSizeFromCurvature": 40, "Mesh.ElementOrder": 3, "Mesh.ScalingFactor": 1e-3, "Mesh.SurfaceFaces": 1, # "Mesh.MeshSizeMax": 10, - "General.DrawBoundingBoxes": 1, + "General.DrawBoundingBoxes": 1 } RUN_GUI=True @@ -48,7 +49,7 @@ def get_surfaces(shapes, label: str): def isOpenProblem(self): return len(self.open) != 0 - def buildGlobalDomain(self): + def buildVacuumDomain(self): if self.isOpenProblem(): dom = self.open[0] else: @@ -64,7 +65,6 @@ def buildGlobalDomain(self): surfsToRemove.extend(surf) dom = gmsh.model.occ.cut(dom, surfsToRemove, removeTool=False)[0] - gmsh.model.occ.synchronize() return dom @@ -81,6 +81,12 @@ def removeConductorsFromDielectrics(self): gmsh.model.occ.synchronize() +def getPhysicalGrupWithName(name: str): + pGs = gmsh.model.getPhysicalGroups() + for pG in pGs: + if gmsh.model.getPhysicalName(*pG) == name: + return pG + def extractBoundaries(shapes: dict): shape_boundaries = dict() for num, bdrs in shapes.items(): @@ -88,13 +94,10 @@ def extractBoundaries(shapes: dict): return shape_boundaries - def meshFromStep( folder: str, case_name: str, meshing_options=DEFAULT_MESHING_OPTIONS): - - gmsh.initialize() gmsh.model.add(case_name) # Importing from FreeCAD generated steps. @@ -107,45 +110,49 @@ def meshFromStep( ) # --- Geometry manipulation --- + vacuumDomain = allShapes.buildVacuumDomain() allShapes.removeConductorsFromDielectrics() # Extract boundaries removing boundaries repeated in other domains. pec_bdrs = extractBoundaries(allShapes.pecs) - - for num, bdrs in pec_bdrs.items(): - if num == 0: - continue - for bdr in bdrs: - if (bdr[0], -bdr[1]) in pec_bdrs[0]: - pec_bdrs[0].remove((bdr[0], -bdr[1])) - for num, bdrs in pec_bdrs.items(): - for bdr in bdrs: - if bdr[1] < 0: - pec_bdrs[num].append((bdr[0], -bdr[1])) - pec_bdrs[num].remove(bdr) - for num, surfs in allShapes.pecs.items(): - if num != 0: - gmsh.model.occ.remove(surfs) - elif num == 0 and allShapes.isOpenProblem(): - gmsh.model.occ.remove(surfs) - - gmsh.model.occ.synchronize() + # Removes interior boundaries + # for num, bdrs in pec_bdrs.items(): + # if num == 0: + # continue + # for bdr in bdrs: + # invertedBdr = (bdr[0], -bdr[1]) + # for num2, bdrs2 in pec_bdrs.items(): + # if invertedBdr in bdrs2: + # pec_bdrs[num2].remove(invertedBdr) + + # for num, bdrs in pec_bdrs.items(): + # for bdr in bdrs: + # if bdr[1] < 0: + # pec_bdrs[num].append((bdr[0], -bdr[1])) + # pec_bdrs[num].remove(bdr) + + # for num, surfs in allShapes.pecs.items(): + # if num != 0: + # gmsh.model.occ.remove(surfs) + # elif num == 0 and allShapes.isOpenProblem(): + # gmsh.model.occ.remove(surfs) + + # gmsh.model.occ.synchronize() # --- Physical groups --- # Adds boundaries. for num, bdrs in pec_bdrs.items(): name = "Conductor_" + str(num) - for bdr in bdrs: - if bdr[1] > 0: - gmsh.model.addPhysicalGroup(1, [bdr[1]], name=name) + tags = [x[1] for x in bdrs] + gmsh.model.addPhysicalGroup(1, tags, name=name) for bdr in extractBoundaries(allShapes.open): if bdr[1] > 0: # Positive orientations mean that is the most external region. gmsh.model.addPhysicalGroup(1, [bdr[1]], name="OpenRegion_0") # Domains. - for surf in allShapes.buildGlobalDomain(): + for surf in vacuumDomain: gmsh.model.addPhysicalGroup(2, [surf[1]], name='Vacuum') for num, surfs in allShapes.dielectrics.items(): @@ -170,11 +177,18 @@ def meshFromStep( gmsh.option.setNumber(opt, val) gmsh.model.mesh.generate(2) - gmsh.option.setNumber("Mesh.MshFileVersion", 2.2) + - # Exporting - gmsh.write(case_name + '.msh') +def runStepToGmsh( + folder: str, + case_name: str, + meshing_options=DEFAULT_MESHING_OPTIONS): + gmsh.initialize() + + meshFromStep(folder, case_name, meshing_options) + + gmsh.write(case_name + '.msh') if RUN_GUI: # for debugging only. gmsh.fltk.run() diff --git a/test/test_mesher.py b/test/test_mesher.py index ed5a0da..33eedf3 100644 --- a/test/test_mesher.py +++ b/test/test_mesher.py @@ -23,27 +23,65 @@ def test_getNumberFromEntityName(): def test_partially_filled_coax(): - meshFromStep(testdata_path, 'partially_filled_coax') + runStepToGmsh(testdata_path, 'partially_filled_coax') def test_empty_coax(): + runStepToGmsh(testdata_path, 'empty_coax') + + +def test_meshFromStep_with_empty_coax(): + gmsh.initialize() + meshFromStep(testdata_path, 'empty_coax') + pGs = gmsh.model.getPhysicalGroups() + pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] + + assert(len(pGs) == 3) + assert('Conductor_0' in pGNames) + assert('Conductor_1' in pGNames) + assert('Vacuum' in pGNames) + + # gmsh.fltk.run() # for debugging only. + gmsh.finalize() + def test_two_wires_coax(): + runStepToGmsh(testdata_path, 'two_wires_coax') + + +def test_meshFromStep_with_two_wires_coax(): + gmsh.initialize() + meshFromStep(testdata_path, 'two_wires_coax') + pGs = gmsh.model.getPhysicalGroups() + assert(len(pGs) == 4) + + pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] + assert('Conductor_0' in pGNames) + assert('Conductor_1' in pGNames) + assert('Conductor_2' in pGNames) + assert('Vacuum' in pGNames) + + c0pG = getPhysicalGrupWithName('Conductor_0') + c0ents = gmsh.model.getEntitiesForPhysicalGroup(*c0pG) + assert(len(c0ents) == 1) + + gmsh.fltk.run() # for debugging only. + gmsh.finalize() def test_five_wires(): - meshFromStep(testdata_path, 'five_wires') + runStepToGmsh(testdata_path, 'five_wires') def test_three_wires_ribbon(): - meshFromStep(testdata_path, 'three_wires_ribbon') + runStepToGmsh(testdata_path, 'three_wires_ribbon') def test_nested_coax(): - meshFromStep(testdata_path, 'nested_coax') + runStepToGmsh(testdata_path, 'nested_coax') def test_stepShapes_for_partially_filled_coax(): From 6a0b53a8147ffdf3c3e654d3a5564222085069b8 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Fri, 8 Sep 2023 15:59:22 +0200 Subject: [PATCH 034/134] Debugging --- src/mesher.py | 39 +++++-------------- test/test_mesher.py | 95 ++++++++++++++++++++++++++++++++++++++------- 2 files changed, 91 insertions(+), 43 deletions(-) diff --git a/src/mesher.py b/src/mesher.py index 7751099..cd1d1f1 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -64,7 +64,8 @@ def buildVacuumDomain(self): for _, surf in self.dielectrics.items(): surfsToRemove.extend(surf) - dom = gmsh.model.occ.cut(dom, surfsToRemove, removeTool=False)[0] + dom = gmsh.model.occ.cut( + dom, surfsToRemove, removeObject=False, removeTool=False)[0] gmsh.model.occ.synchronize() return dom @@ -72,13 +73,13 @@ def buildVacuumDomain(self): def removeConductorsFromDielectrics(self): for num, diel in self.dielectrics.items(): pec_surfs = [] - for _, pec_surf in self.dielectrics.items(): - if num == 0 and self.isOpenProblem() == False: + for num2, pec_surf in self.pecs.items(): + if num2 == 0 and not self.isOpenProblem(): continue pec_surfs.extend(pec_surf) self.dielectrics[num] = gmsh.model.occ.cut(diel, pec_surfs, removeTool=False)[0] - gmsh.model.occ.synchronize() + gmsh.model.occ.synchronize() def getPhysicalGrupWithName(name: str): @@ -110,35 +111,13 @@ def meshFromStep( ) # --- Geometry manipulation --- - vacuumDomain = allShapes.buildVacuumDomain() + # -- Domains allShapes.removeConductorsFromDielectrics() + vacuumDomain = allShapes.buildVacuumDomain() - # Extract boundaries removing boundaries repeated in other domains. + # -- Boundaries pec_bdrs = extractBoundaries(allShapes.pecs) - - # Removes interior boundaries - # for num, bdrs in pec_bdrs.items(): - # if num == 0: - # continue - # for bdr in bdrs: - # invertedBdr = (bdr[0], -bdr[1]) - # for num2, bdrs2 in pec_bdrs.items(): - # if invertedBdr in bdrs2: - # pec_bdrs[num2].remove(invertedBdr) - - # for num, bdrs in pec_bdrs.items(): - # for bdr in bdrs: - # if bdr[1] < 0: - # pec_bdrs[num].append((bdr[0], -bdr[1])) - # pec_bdrs[num].remove(bdr) - - # for num, surfs in allShapes.pecs.items(): - # if num != 0: - # gmsh.model.occ.remove(surfs) - # elif num == 0 and allShapes.isOpenProblem(): - # gmsh.model.occ.remove(surfs) - - # gmsh.model.occ.synchronize() + gmsh.model.occ.synchronize() # --- Physical groups --- # Adds boundaries. diff --git a/test/test_mesher.py b/test/test_mesher.py index 33eedf3..89a7922 100644 --- a/test/test_mesher.py +++ b/test/test_mesher.py @@ -9,6 +9,12 @@ dir_path = os.path.dirname(os.path.realpath(__file__)) + '/' testdata_path = dir_path + '/../testData/' +def countEntitiesInPhysicalGroupWithName(name: str): + return len( + gmsh.model.getEntitiesForPhysicalGroup( + *getPhysicalGrupWithName(name) + ) + ) def test_getNumberFromEntityName(): assert (ShapesClassification.getNumberFromEntityName( @@ -26,6 +32,28 @@ def test_partially_filled_coax(): runStepToGmsh(testdata_path, 'partially_filled_coax') +def test_meshFromStep_with_partially_filled_coax(): + gmsh.initialize() + + meshFromStep(testdata_path, 'partially_filled_coax') + + pGs = gmsh.model.getPhysicalGroups() + assert (len(pGs) == 4) + + pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] + assert ('Conductor_0' in pGNames) + assert ('Conductor_1' in pGNames) + assert ('Dielectric_1' in pGNames) + assert ('Vacuum' in pGNames) + + c0pG = getPhysicalGrupWithName('Conductor_0') + c0ents = gmsh.model.getEntitiesForPhysicalGroup(*c0pG) + assert (len(c0ents) == 1) + + # gmsh.fltk.run() # for debugging only. + gmsh.finalize() + + def test_empty_coax(): runStepToGmsh(testdata_path, 'empty_coax') @@ -38,11 +66,11 @@ def test_meshFromStep_with_empty_coax(): pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] - assert(len(pGs) == 3) - assert('Conductor_0' in pGNames) - assert('Conductor_1' in pGNames) - assert('Vacuum' in pGNames) - + assert (len(pGs) == 3) + assert ('Conductor_0' in pGNames) + assert ('Conductor_1' in pGNames) + assert ('Vacuum' in pGNames) + # gmsh.fltk.run() # for debugging only. gmsh.finalize() @@ -57,25 +85,66 @@ def test_meshFromStep_with_two_wires_coax(): meshFromStep(testdata_path, 'two_wires_coax') pGs = gmsh.model.getPhysicalGroups() - assert(len(pGs) == 4) + assert (len(pGs) == 4) pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] - assert('Conductor_0' in pGNames) - assert('Conductor_1' in pGNames) - assert('Conductor_2' in pGNames) - assert('Vacuum' in pGNames) + assert ('Conductor_0' in pGNames) + assert ('Conductor_1' in pGNames) + assert ('Conductor_2' in pGNames) + assert ('Vacuum' in pGNames) c0pG = getPhysicalGrupWithName('Conductor_0') c0ents = gmsh.model.getEntitiesForPhysicalGroup(*c0pG) - assert(len(c0ents) == 1) - - gmsh.fltk.run() # for debugging only. + assert (len(c0ents) == 1) + + # gmsh.fltk.run() # for debugging only. gmsh.finalize() + def test_five_wires(): runStepToGmsh(testdata_path, 'five_wires') +def test_meshFromStep_with_five_wires(): + gmsh.initialize() + + meshFromStep(testdata_path, 'five_wires') + + pGs = gmsh.model.getPhysicalGroups() + pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] + + assert (len(pGs) == 12) + assert ('Conductor_0' in pGNames) + assert ('Conductor_1' in pGNames) + assert ('Conductor_2' in pGNames) + assert ('Conductor_3' in pGNames) + assert ('Conductor_4' in pGNames) + assert ('Conductor_5' in pGNames) + assert ('Dielectric_1' in pGNames) + assert ('Dielectric_2' in pGNames) + assert ('Dielectric_3' in pGNames) + assert ('Dielectric_4' in pGNames) + assert ('Dielectric_5' in pGNames) + assert ('Vacuum' in pGNames) + + assert(countEntitiesInPhysicalGroupWithName('Conductor_0') == 1) + assert(countEntitiesInPhysicalGroupWithName('Conductor_1') == 1) + assert(countEntitiesInPhysicalGroupWithName('Conductor_2') == 1) + assert(countEntitiesInPhysicalGroupWithName('Conductor_3') == 1) + assert(countEntitiesInPhysicalGroupWithName('Conductor_4') == 1) + assert(countEntitiesInPhysicalGroupWithName('Conductor_5') == 1) + + assert(countEntitiesInPhysicalGroupWithName('Dielectric_1') == 1) + assert(countEntitiesInPhysicalGroupWithName('Dielectric_2') == 1) + assert(countEntitiesInPhysicalGroupWithName('Dielectric_3') == 1) + assert(countEntitiesInPhysicalGroupWithName('Dielectric_4') == 1) + assert(countEntitiesInPhysicalGroupWithName('Dielectric_5') == 1) + + assert(countEntitiesInPhysicalGroupWithName('Vacuum') == 1) + + # gmsh.fltk.run() # for debugging only. + gmsh.finalize() + def test_three_wires_ribbon(): runStepToGmsh(testdata_path, 'three_wires_ribbon') From f904a4bd473a522f6d2f1bc92645a7e0d5b15c9b Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Fri, 8 Sep 2023 16:10:00 +0200 Subject: [PATCH 035/134] All test pass --- src/mesher.py | 9 +++++---- test/test_mesher.py | 35 +++++++++++++++++++---------------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/src/mesher.py b/src/mesher.py index cd1d1f1..2fda0cf 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -12,7 +12,7 @@ "General.DrawBoundingBoxes": 1 } -RUN_GUI=True +RUN_GUI=False class ShapesClassification: def __init__(self, shapes): @@ -126,9 +126,10 @@ def meshFromStep( tags = [x[1] for x in bdrs] gmsh.model.addPhysicalGroup(1, tags, name=name) - for bdr in extractBoundaries(allShapes.open): - if bdr[1] > 0: # Positive orientations mean that is the most external region. - gmsh.model.addPhysicalGroup(1, [bdr[1]], name="OpenRegion_0") + for num, bdrs in extractBoundaries(allShapes.open).items(): + name = "OpenRegion_" + str(num) + tags = [x[1] for x in bdrs if x[1] > 0] + gmsh.model.addPhysicalGroup(1, tags, name=name) # Domains. for surf in vacuumDomain: diff --git a/test/test_mesher.py b/test/test_mesher.py index 89a7922..e0d722c 100644 --- a/test/test_mesher.py +++ b/test/test_mesher.py @@ -9,6 +9,7 @@ dir_path = os.path.dirname(os.path.realpath(__file__)) + '/' testdata_path = dir_path + '/../testData/' + def countEntitiesInPhysicalGroupWithName(name: str): return len( gmsh.model.getEntitiesForPhysicalGroup( @@ -16,6 +17,7 @@ def countEntitiesInPhysicalGroupWithName(name: str): ) ) + def test_getNumberFromEntityName(): assert (ShapesClassification.getNumberFromEntityName( 'Shapes/Conductor_1', @@ -112,7 +114,7 @@ def test_meshFromStep_with_five_wires(): pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] - + assert (len(pGs) == 12) assert ('Conductor_0' in pGNames) assert ('Conductor_1' in pGNames) @@ -127,24 +129,25 @@ def test_meshFromStep_with_five_wires(): assert ('Dielectric_5' in pGNames) assert ('Vacuum' in pGNames) - assert(countEntitiesInPhysicalGroupWithName('Conductor_0') == 1) - assert(countEntitiesInPhysicalGroupWithName('Conductor_1') == 1) - assert(countEntitiesInPhysicalGroupWithName('Conductor_2') == 1) - assert(countEntitiesInPhysicalGroupWithName('Conductor_3') == 1) - assert(countEntitiesInPhysicalGroupWithName('Conductor_4') == 1) - assert(countEntitiesInPhysicalGroupWithName('Conductor_5') == 1) - - assert(countEntitiesInPhysicalGroupWithName('Dielectric_1') == 1) - assert(countEntitiesInPhysicalGroupWithName('Dielectric_2') == 1) - assert(countEntitiesInPhysicalGroupWithName('Dielectric_3') == 1) - assert(countEntitiesInPhysicalGroupWithName('Dielectric_4') == 1) - assert(countEntitiesInPhysicalGroupWithName('Dielectric_5') == 1) - - assert(countEntitiesInPhysicalGroupWithName('Vacuum') == 1) - + assert (countEntitiesInPhysicalGroupWithName('Conductor_0') == 1) + assert (countEntitiesInPhysicalGroupWithName('Conductor_1') == 1) + assert (countEntitiesInPhysicalGroupWithName('Conductor_2') == 1) + assert (countEntitiesInPhysicalGroupWithName('Conductor_3') == 1) + assert (countEntitiesInPhysicalGroupWithName('Conductor_4') == 1) + assert (countEntitiesInPhysicalGroupWithName('Conductor_5') == 1) + + assert (countEntitiesInPhysicalGroupWithName('Dielectric_1') == 1) + assert (countEntitiesInPhysicalGroupWithName('Dielectric_2') == 1) + assert (countEntitiesInPhysicalGroupWithName('Dielectric_3') == 1) + assert (countEntitiesInPhysicalGroupWithName('Dielectric_4') == 1) + assert (countEntitiesInPhysicalGroupWithName('Dielectric_5') == 1) + + assert (countEntitiesInPhysicalGroupWithName('Vacuum') == 1) + # gmsh.fltk.run() # for debugging only. gmsh.finalize() + def test_three_wires_ribbon(): runStepToGmsh(testdata_path, 'three_wires_ribbon') From cee6c8e270bd90812725bfe95579123f18c56c41 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Fri, 8 Sep 2023 16:16:50 +0200 Subject: [PATCH 036/134] Fixes issue with vacuum domain --- src/mesher.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/mesher.py b/src/mesher.py index 2fda0cf..b8527b4 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -132,8 +132,7 @@ def meshFromStep( gmsh.model.addPhysicalGroup(1, tags, name=name) # Domains. - for surf in vacuumDomain: - gmsh.model.addPhysicalGroup(2, [surf[1]], name='Vacuum') + gmsh.model.addPhysicalGroup(2, [x[1] for x in vacuumDomain], name='Vacuum') for num, surfs in allShapes.dielectrics.items(): name = "Dielectric_" + str(num) From bb0572b0a1480562bf8b83f26531b684397d7332 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Tue, 19 Sep 2023 18:34:11 +0200 Subject: [PATCH 037/134] Adds two wires open case --- step2gmsh_ssh | 7 - step2gmsh_ssh.pub | 1 - test/test_mesher.py | 4 + testData/two_wires_open/two_wires_open.FCStd | Bin 0 -> 5861 bytes testData/two_wires_open/two_wires_open.step | 252 +++++++++++++++++++ 5 files changed, 256 insertions(+), 8 deletions(-) delete mode 100644 step2gmsh_ssh delete mode 100644 step2gmsh_ssh.pub create mode 100644 testData/two_wires_open/two_wires_open.FCStd create mode 100644 testData/two_wires_open/two_wires_open.step diff --git a/step2gmsh_ssh b/step2gmsh_ssh deleted file mode 100644 index 3e8774c..0000000 --- a/step2gmsh_ssh +++ /dev/null @@ -1,7 +0,0 @@ ------BEGIN OPENSSH PRIVATE KEY----- -b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW -QyNTUxOQAAACAdQ9eDFYSBY9DeWE3FW1nD1rMNIyiYkjKvjlTkXSaqDAAAAJCfEtRpnxLU -aQAAAAtzc2gtZWQyNTUxOQAAACAdQ9eDFYSBY9DeWE3FW1nD1rMNIyiYkjKvjlTkXSaqDA -AAAED1H3JwWRJW6M+YwJS+9mNodNbEKHW4fBOJV94R1DO4OR1D14MVhIFj0N5YTcVbWcPW -sw0jKJiSMq+OVORdJqoMAAAABmxtQHQxNQECAwQFBgc= ------END OPENSSH PRIVATE KEY----- diff --git a/step2gmsh_ssh.pub b/step2gmsh_ssh.pub deleted file mode 100644 index f04d75b..0000000 --- a/step2gmsh_ssh.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB1D14MVhIFj0N5YTcVbWcPWsw0jKJiSMq+OVORdJqoM lm@t15 diff --git a/test/test_mesher.py b/test/test_mesher.py index e0d722c..45fd1ba 100644 --- a/test/test_mesher.py +++ b/test/test_mesher.py @@ -81,6 +81,10 @@ def test_two_wires_coax(): runStepToGmsh(testdata_path, 'two_wires_coax') +def test_two_wires_open(): + runStepToGmsh(testdata_path, 'two_wires_open') + + def test_meshFromStep_with_two_wires_coax(): gmsh.initialize() diff --git a/testData/two_wires_open/two_wires_open.FCStd b/testData/two_wires_open/two_wires_open.FCStd new file mode 100644 index 0000000000000000000000000000000000000000..90457aa044fab4b70795d522878ce5d0522d0619 GIT binary patch literal 5861 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 MCIgja{A+Oj1s@f!0RR91 literal 0 HcmV?d00001 diff --git a/testData/two_wires_open/two_wires_open.step b/testData/two_wires_open/two_wires_open.step new file mode 100644 index 0000000..b65a83d --- /dev/null +++ b/testData/two_wires_open/two_wires_open.step @@ -0,0 +1,252 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); +FILE_NAME('Open CASCADE Shape Model','2023-09-19T18:30:37',(''),(''), + 'Open CASCADE STEP processor 7.6','FreeCAD','Unknown'); +FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }')); +ENDSEC; +DATA; +#1 = APPLICATION_PROTOCOL_DEFINITION('international standard', + 'automotive_design',2000,#2); +#2 = APPLICATION_CONTEXT( + 'core data for automotive mechanical design processes'); +#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10); +#4 = PRODUCT_DEFINITION_SHAPE('','',#5); +#5 = PRODUCT_DEFINITION('design','',#6,#9); +#6 = PRODUCT_DEFINITION_FORMATION('','',#7); +#7 = PRODUCT('two_wires_coax','two_wires_coax','',(#8)); +#8 = PRODUCT_CONTEXT('',#2,'mechanical'); +#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#10 = SHAPE_REPRESENTATION('',(#11,#15,#19,#23),#27); +#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14); +#12 = CARTESIAN_POINT('',(0.,0.,0.)); +#13 = DIRECTION('',(0.,0.,1.)); +#14 = DIRECTION('',(1.,0.,-0.)); +#15 = AXIS2_PLACEMENT_3D('',#16,#17,#18); +#16 = CARTESIAN_POINT('',(0.,0.,0.)); +#17 = DIRECTION('',(0.,0.,1.)); +#18 = DIRECTION('',(1.,0.,0.)); +#19 = AXIS2_PLACEMENT_3D('',#20,#21,#22); +#20 = CARTESIAN_POINT('',(-25.,0.,0.)); +#21 = DIRECTION('',(0.,0.,1.)); +#22 = DIRECTION('',(1.,0.,0.)); +#23 = AXIS2_PLACEMENT_3D('',#24,#25,#26); +#24 = CARTESIAN_POINT('',(25.,0.,0.)); +#25 = DIRECTION('',(0.,0.,1.)); +#26 = DIRECTION('',(1.,0.,0.)); +#27 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#31)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#28,#29,#30)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#28 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#29 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#30 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#31 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#28, + 'distance_accuracy_value','confusion accuracy'); +#32 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); +#33 = SHAPE_DEFINITION_REPRESENTATION(#34,#40); +#34 = PRODUCT_DEFINITION_SHAPE('','',#35); +#35 = PRODUCT_DEFINITION('design','',#36,#39); +#36 = PRODUCT_DEFINITION_FORMATION('','',#37); +#37 = PRODUCT('OpenRegion_0','OpenRegion_0','',(#38)); +#38 = PRODUCT_CONTEXT('',#2,'mechanical'); +#39 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#40 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#41),#68); +#41 = SHELL_BASED_SURFACE_MODEL('',(#42)); +#42 = OPEN_SHELL('',(#43)); +#43 = ADVANCED_FACE('',(#44),#57,.T.); +#44 = FACE_BOUND('',#45,.T.); +#45 = EDGE_LOOP('',(#46)); +#46 = ORIENTED_EDGE('',*,*,#47,.T.); +#47 = EDGE_CURVE('',#48,#48,#50,.T.); +#48 = VERTEX_POINT('',#49); +#49 = CARTESIAN_POINT('',(500.,0.,0.)); +#50 = SURFACE_CURVE('',#51,(#56),.PCURVE_S1.); +#51 = CIRCLE('',#52,500.); +#52 = AXIS2_PLACEMENT_3D('',#53,#54,#55); +#53 = CARTESIAN_POINT('',(0.,0.,0.)); +#54 = DIRECTION('',(0.,0.,1.)); +#55 = DIRECTION('',(1.,0.,-0.)); +#56 = PCURVE('',#57,#62); +#57 = PLANE('',#58); +#58 = AXIS2_PLACEMENT_3D('',#59,#60,#61); +#59 = CARTESIAN_POINT('',(-2.240413913153E-14,1.993359145737E-15,0.)); +#60 = DIRECTION('',(0.,0.,1.)); +#61 = DIRECTION('',(1.,0.,-0.)); +#62 = DEFINITIONAL_REPRESENTATION('',(#63),#67); +#63 = CIRCLE('',#64,500.); +#64 = AXIS2_PLACEMENT_2D('',#65,#66); +#65 = CARTESIAN_POINT('',(2.240413913153E-14,-1.993359145737E-15)); +#66 = DIRECTION('',(1.,0.)); +#67 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#68 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#72)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#69,#70,#71)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#69 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#70 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#71 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#72 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#69, + 'distance_accuracy_value','confusion accuracy'); +#73 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#74,#76); +#74 = ( REPRESENTATION_RELATIONSHIP('','',#40,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#75) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#75 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); +#76 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#77); +#77 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('1','OpenRegion_0','',#5,#35,$); +#78 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#37)); +#79 = SHAPE_DEFINITION_REPRESENTATION(#80,#86); +#80 = PRODUCT_DEFINITION_SHAPE('','',#81); +#81 = PRODUCT_DEFINITION('design','',#82,#85); +#82 = PRODUCT_DEFINITION_FORMATION('','',#83); +#83 = PRODUCT('Conductor_1','Conductor_1','',(#84)); +#84 = PRODUCT_CONTEXT('',#2,'mechanical'); +#85 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#86 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#87),#114); +#87 = SHELL_BASED_SURFACE_MODEL('',(#88)); +#88 = OPEN_SHELL('',(#89)); +#89 = ADVANCED_FACE('',(#90),#103,.T.); +#90 = FACE_BOUND('',#91,.T.); +#91 = EDGE_LOOP('',(#92)); +#92 = ORIENTED_EDGE('',*,*,#93,.T.); +#93 = EDGE_CURVE('',#94,#94,#96,.T.); +#94 = VERTEX_POINT('',#95); +#95 = CARTESIAN_POINT('',(2.,0.,0.)); +#96 = SURFACE_CURVE('',#97,(#102),.PCURVE_S1.); +#97 = CIRCLE('',#98,2.); +#98 = AXIS2_PLACEMENT_3D('',#99,#100,#101); +#99 = CARTESIAN_POINT('',(0.,0.,0.)); +#100 = DIRECTION('',(0.,0.,1.)); +#101 = DIRECTION('',(1.,0.,0.)); +#102 = PCURVE('',#103,#108); +#103 = PLANE('',#104); +#104 = AXIS2_PLACEMENT_3D('',#105,#106,#107); +#105 = CARTESIAN_POINT('',(-1.3E-16,0.,0.)); +#106 = DIRECTION('',(0.,0.,1.)); +#107 = DIRECTION('',(1.,0.,0.)); +#108 = DEFINITIONAL_REPRESENTATION('',(#109),#113); +#109 = CIRCLE('',#110,2.); +#110 = AXIS2_PLACEMENT_2D('',#111,#112); +#111 = CARTESIAN_POINT('',(1.3E-16,0.)); +#112 = DIRECTION('',(1.,0.)); +#113 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#114 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#118)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#115,#116,#117)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#115 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#116 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#117 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#118 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#115, + 'distance_accuracy_value','confusion accuracy'); +#119 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#120,#122); +#120 = ( REPRESENTATION_RELATIONSHIP('','',#86,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#121) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#121 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); +#122 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#123 + ); +#123 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('2','Conductor_1','',#5,#81,$); +#124 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#83)); +#125 = SHAPE_DEFINITION_REPRESENTATION(#126,#132); +#126 = PRODUCT_DEFINITION_SHAPE('','',#127); +#127 = PRODUCT_DEFINITION('design','',#128,#131); +#128 = PRODUCT_DEFINITION_FORMATION('','',#129); +#129 = PRODUCT('Conductor_2','Conductor_2','',(#130)); +#130 = PRODUCT_CONTEXT('',#2,'mechanical'); +#131 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#132 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#133),#160); +#133 = SHELL_BASED_SURFACE_MODEL('',(#134)); +#134 = OPEN_SHELL('',(#135)); +#135 = ADVANCED_FACE('',(#136),#149,.T.); +#136 = FACE_BOUND('',#137,.T.); +#137 = EDGE_LOOP('',(#138)); +#138 = ORIENTED_EDGE('',*,*,#139,.T.); +#139 = EDGE_CURVE('',#140,#140,#142,.T.); +#140 = VERTEX_POINT('',#141); +#141 = CARTESIAN_POINT('',(2.,0.,0.)); +#142 = SURFACE_CURVE('',#143,(#148),.PCURVE_S1.); +#143 = CIRCLE('',#144,2.); +#144 = AXIS2_PLACEMENT_3D('',#145,#146,#147); +#145 = CARTESIAN_POINT('',(0.,0.,0.)); +#146 = DIRECTION('',(0.,0.,1.)); +#147 = DIRECTION('',(1.,0.,0.)); +#148 = PCURVE('',#149,#154); +#149 = PLANE('',#150); +#150 = AXIS2_PLACEMENT_3D('',#151,#152,#153); +#151 = CARTESIAN_POINT('',(-1.281975124256E-16,3.821888340557E-18,0.)); +#152 = DIRECTION('',(0.,0.,1.)); +#153 = DIRECTION('',(1.,0.,0.)); +#154 = DEFINITIONAL_REPRESENTATION('',(#155),#159); +#155 = CIRCLE('',#156,2.); +#156 = AXIS2_PLACEMENT_2D('',#157,#158); +#157 = CARTESIAN_POINT('',(1.281975124256E-16,-3.821888340557E-18)); +#158 = DIRECTION('',(1.,0.)); +#159 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#160 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#164)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#161,#162,#163)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#161 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#162 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#163 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#164 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#161, + 'distance_accuracy_value','confusion accuracy'); +#165 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#166,#168); +#166 = ( REPRESENTATION_RELATIONSHIP('','',#132,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#167) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#167 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); +#168 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#169 + ); +#169 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('3','Conductor_2','',#5,#127,$); +#170 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#129)); +#171 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#172) + ,#160); +#172 = STYLED_ITEM('color',(#173),#135); +#173 = PRESENTATION_STYLE_ASSIGNMENT((#174,#180)); +#174 = SURFACE_STYLE_USAGE(.BOTH.,#175); +#175 = SURFACE_SIDE_STYLE('',(#176)); +#176 = SURFACE_STYLE_FILL_AREA(#177); +#177 = FILL_AREA_STYLE('',(#178)); +#178 = FILL_AREA_STYLE_COLOUR('',#179); +#179 = COLOUR_RGB('',1.,0.666666687201,0.); +#180 = CURVE_STYLE('',#181,POSITIVE_LENGTH_MEASURE(0.1),#182); +#181 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#182 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, + 9.803921802644E-02); +#183 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#184) + ,#114); +#184 = STYLED_ITEM('color',(#185),#89); +#185 = PRESENTATION_STYLE_ASSIGNMENT((#186,#191)); +#186 = SURFACE_STYLE_USAGE(.BOTH.,#187); +#187 = SURFACE_SIDE_STYLE('',(#188)); +#188 = SURFACE_STYLE_FILL_AREA(#189); +#189 = FILL_AREA_STYLE('',(#190)); +#190 = FILL_AREA_STYLE_COLOUR('',#179); +#191 = CURVE_STYLE('',#192,POSITIVE_LENGTH_MEASURE(0.1),#182); +#192 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#193 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#194) + ,#68); +#194 = STYLED_ITEM('color',(#195),#43); +#195 = PRESENTATION_STYLE_ASSIGNMENT((#196,#204)); +#196 = SURFACE_STYLE_USAGE(.BOTH.,#197); +#197 = SURFACE_SIDE_STYLE('',(#198,#202)); +#198 = SURFACE_STYLE_FILL_AREA(#199); +#199 = FILL_AREA_STYLE('',(#200)); +#200 = FILL_AREA_STYLE_COLOUR('',#201); +#201 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); +#202 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#201,( + #203)); +#203 = SURFACE_STYLE_TRANSPARENT(0.990000009537); +#204 = CURVE_STYLE('',#205,POSITIVE_LENGTH_MEASURE(0.1),#182); +#205 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +ENDSEC; +END-ISO-10303-21; From 205960c1c366d292652e8e30c1c93b67a22b4143 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Mon, 25 Sep 2023 20:38:16 +0200 Subject: [PATCH 038/134] Adds semi-open problem meshing capability. --- src/mesher.py | 85 +- test/test_mesher.py | 8 +- testData/agrawal1981/agrawal1981.FCStd | Bin 0 -> 15674 bytes testData/agrawal1981/agrawal1981.step | 784 +++++++++++ .../three_wires_ribbon.FCStd | Bin 16510 -> 15501 bytes .../three_wires_ribbon.step | 1194 ++++++++--------- 6 files changed, 1387 insertions(+), 684 deletions(-) create mode 100644 testData/agrawal1981/agrawal1981.FCStd create mode 100644 testData/agrawal1981/agrawal1981.step diff --git a/src/mesher.py b/src/mesher.py index b8527b4..6dae757 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -1,15 +1,23 @@ import gmsh import sys from collections import defaultdict +from itertools import chain DEFAULT_MESHING_OPTIONS = { + "Mesh.MshFileVersion": 2.2, "Mesh.MeshSizeFromCurvature": 40, "Mesh.ElementOrder": 3, "Mesh.ScalingFactor": 1e-3, "Mesh.SurfaceFaces": 1, - # "Mesh.MeshSizeMax": 10, - "General.DrawBoundingBoxes": 1 + "Mesh.MeshSizeMax": 50, + + "General.DrawBoundingBoxes": 1, + + "Geometry.SurfaceType": 2, # Diplay surfaces as solids rather than dashed lines. + # "Geometry.OCCBoundsUseStl": 1, + # "Geometry.OCCSewFaces": 1, + # "Geometry.Tolerance": 1e-3, } RUN_GUI=False @@ -20,44 +28,43 @@ def __init__(self, shapes): self.allShapes = shapes - self.pecs = self.get_surfaces(shapes, "Conductor_") - self.dielectrics = self.get_surfaces(shapes, "Dielectric_") - self.open = self.get_surfaces(shapes, "OpenRegion_") + self.pecs = self.get_surfaces_with_label(shapes, "Conductor_") + self.dielectrics = self.get_surfaces_with_label(shapes, "Dielectric_") + self.open = self.get_surfaces_with_label(shapes, "OpenRegion_") if len(self.open) > 1: raise ValueError("Only one open region is allowed.") @staticmethod - def getNumberFromEntityName(entity_name: str, label: str): + def getNumberFromName(entity_name: str, label: str): ini = entity_name.rindex(label) + len(label) num = int(entity_name[ini:]) return num @staticmethod - def get_surfaces(shapes, label: str): + def get_surfaces_with_label(entity_tags, label: str): surfaces = dict() - for s in shapes: - entity_name = gmsh.model.get_entity_name(*s) - if s[0] != 2 or label not in entity_name: + for s in entity_tags: + name = gmsh.model.get_entity_name(*s) + if s[0] != 2 or label not in name: continue - num = ShapesClassification.getNumberFromEntityName( - entity_name, label) + num = ShapesClassification.getNumberFromName(name, label) surfaces[num] = [s] return surfaces - def isOpenProblem(self): + def isOpenOrSemiOpenProblem(self): return len(self.open) != 0 def buildVacuumDomain(self): - if self.isOpenProblem(): + if self.isOpenOrSemiOpenProblem(): dom = self.open[0] else: dom = self.pecs[0] surfsToRemove = [] for num, surf in self.pecs.items(): - if num == 0 and self.isOpenProblem() == False: + if num == 0 and self.isOpenOrSemiOpenProblem() == False: continue surfsToRemove.extend(surf) @@ -74,13 +81,30 @@ def removeConductorsFromDielectrics(self): for num, diel in self.dielectrics.items(): pec_surfs = [] for num2, pec_surf in self.pecs.items(): - if num2 == 0 and not self.isOpenProblem(): + if num2 == 0 and not self.isOpenOrSemiOpenProblem(): continue pec_surfs.extend(pec_surf) self.dielectrics[num] = gmsh.model.occ.cut(diel, pec_surfs, removeTool=False)[0] gmsh.model.occ.synchronize() + def ensureDielectricsDoNotOverlap(self): + for n1, diel1 in self.dielectrics.items(): + others = list( + chain( + *[x[1] for x in self.dielectrics.items() if x[0] != n1] + ) + ) + + if len(others) == 0: + continue + + self.dielectrics[n1] = gmsh.model.occ.cut( + self.dielectrics[n1], others, removeObject=True, removeTool=False)[0] + + gmsh.model.occ.synchronize() + + def getPhysicalGrupWithName(name: str): pGs = gmsh.model.getPhysicalGroups() @@ -90,8 +114,9 @@ def getPhysicalGrupWithName(name: str): def extractBoundaries(shapes: dict): shape_boundaries = dict() - for num, bdrs in shapes.items(): - shape_boundaries[num] = gmsh.model.getBoundary(bdrs) + for num, surfs in shapes.items(): + bdrs = gmsh.model.getBoundary(surfs) + shape_boundaries[num] = bdrs return shape_boundaries @@ -112,12 +137,32 @@ def meshFromStep( # --- Geometry manipulation --- # -- Domains + allShapes.ensureDielectricsDoNotOverlap() allShapes.removeConductorsFromDielectrics() vacuumDomain = allShapes.buildVacuumDomain() # -- Boundaries pec_bdrs = extractBoundaries(allShapes.pecs) - gmsh.model.occ.synchronize() + open_bdrs = extractBoundaries(allShapes.open) + + if len(open_bdrs) > 1: + raise ValueError("Invalid number of open boundaries.") + + # In semi-open problems, conductors can intersect the open region. + # Conductors have priority over the open boundary. + if len(open_bdrs) == 1: + for num, pec_bdr in pec_bdrs.items(): + overlapping = gmsh.model.occ.intersect( + open_bdrs[0], pec_bdr, removeObject=False, removeTool=False)[0] + if len(overlapping) > 0: + pec_bdrs[num] = overlapping + gmsh.model.occ.synchronize() + + toRemove = [x for bdrs in pec_bdrs.values() for x in bdrs] + newOpenBdr = gmsh.model.occ.cut(open_bdrs[0], toRemove, removeObject=False, removeTool=False)[0] + open_bdrs[0] = newOpenBdr + gmsh.model.occ.synchronize() + # --- Physical groups --- # Adds boundaries. @@ -126,7 +171,7 @@ def meshFromStep( tags = [x[1] for x in bdrs] gmsh.model.addPhysicalGroup(1, tags, name=name) - for num, bdrs in extractBoundaries(allShapes.open).items(): + for num, bdrs in open_bdrs.items(): name = "OpenRegion_" + str(num) tags = [x[1] for x in bdrs if x[1] > 0] gmsh.model.addPhysicalGroup(1, tags, name=name) diff --git a/test/test_mesher.py b/test/test_mesher.py index 45fd1ba..f6960ee 100644 --- a/test/test_mesher.py +++ b/test/test_mesher.py @@ -19,12 +19,12 @@ def countEntitiesInPhysicalGroupWithName(name: str): def test_getNumberFromEntityName(): - assert (ShapesClassification.getNumberFromEntityName( + assert (ShapesClassification.getNumberFromName( 'Shapes/Conductor_1', 'Conductor_') == 1 ) - assert (ShapesClassification.getNumberFromEntityName( + assert (ShapesClassification.getNumberFromName( 'Shapes/solid_wire_002/Conductor_002/Conductor_002', 'Conductor_') == 2 ) @@ -160,6 +160,10 @@ def test_nested_coax(): runStepToGmsh(testdata_path, 'nested_coax') +def test_agrawal1981(): + runStepToGmsh(testdata_path, 'agrawal1981') + + def test_stepShapes_for_partially_filled_coax(): case_name = 'partially_filled_coax' diff --git a/testData/agrawal1981/agrawal1981.FCStd b/testData/agrawal1981/agrawal1981.FCStd new file mode 100644 index 0000000000000000000000000000000000000000..e062ba85970cd5b5569768e4357108775105f42d GIT binary patch literal 15674 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 T000jlWUZ&i&ntlUXRP}_nScbi literal 0 HcmV?d00001 diff --git a/testData/agrawal1981/agrawal1981.step b/testData/agrawal1981/agrawal1981.step new file mode 100644 index 0000000..11bbb86 --- /dev/null +++ b/testData/agrawal1981/agrawal1981.step @@ -0,0 +1,784 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); +FILE_NAME('Open CASCADE Shape Model','2023-09-25T20:18:40',(''),(''), + 'Open CASCADE STEP processor 7.6','FreeCAD','Unknown'); +FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }')); +ENDSEC; +DATA; +#1 = APPLICATION_PROTOCOL_DEFINITION('international standard', + 'automotive_design',2000,#2); +#2 = APPLICATION_CONTEXT( + 'core data for automotive mechanical design processes'); +#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10); +#4 = PRODUCT_DEFINITION_SHAPE('','',#5); +#5 = PRODUCT_DEFINITION('design','',#6,#9); +#6 = PRODUCT_DEFINITION_FORMATION('','',#7); +#7 = PRODUCT('agrawal1981','agrawal1981','',(#8)); +#8 = PRODUCT_CONTEXT('',#2,'mechanical'); +#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#10 = SHAPE_REPRESENTATION('',(#11,#15,#19,#23,#27,#31),#35); +#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14); +#12 = CARTESIAN_POINT('',(0.,0.,0.)); +#13 = DIRECTION('',(0.,0.,1.)); +#14 = DIRECTION('',(1.,0.,-0.)); +#15 = AXIS2_PLACEMENT_3D('',#16,#17,#18); +#16 = CARTESIAN_POINT('',(-600.,0.,0.)); +#17 = DIRECTION('',(0.,0.,1.)); +#18 = DIRECTION('',(1.,0.,0.)); +#19 = AXIS2_PLACEMENT_3D('',#20,#21,#22); +#20 = CARTESIAN_POINT('',(0.,0.,0.)); +#21 = DIRECTION('',(0.,0.,1.)); +#22 = DIRECTION('',(1.,0.,0.)); +#23 = AXIS2_PLACEMENT_3D('',#24,#25,#26); +#24 = CARTESIAN_POINT('',(0.,0.,0.)); +#25 = DIRECTION('',(0.,0.,1.)); +#26 = DIRECTION('',(1.,0.,0.)); +#27 = AXIS2_PLACEMENT_3D('',#28,#29,#30); +#28 = CARTESIAN_POINT('',(0.,0.,0.)); +#29 = DIRECTION('',(0.,0.,1.)); +#30 = DIRECTION('',(1.,0.,0.)); +#31 = AXIS2_PLACEMENT_3D('',#32,#33,#34); +#32 = CARTESIAN_POINT('',(0.,0.,0.)); +#33 = DIRECTION('',(0.,0.,1.)); +#34 = DIRECTION('',(1.,0.,0.)); +#35 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#39)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#36,#37,#38)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#36 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#37 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#38 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#39 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#36, + 'distance_accuracy_value','confusion accuracy'); +#40 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); +#41 = SHAPE_DEFINITION_REPRESENTATION(#42,#48); +#42 = PRODUCT_DEFINITION_SHAPE('','',#43); +#43 = PRODUCT_DEFINITION('design','',#44,#47); +#44 = PRODUCT_DEFINITION_FORMATION('','',#45); +#45 = PRODUCT('Conductor_0','Conductor_0','',(#46)); +#46 = PRODUCT_CONTEXT('',#2,'mechanical'); +#47 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#48 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#49),#123); +#49 = SHELL_BASED_SURFACE_MODEL('',(#50)); +#50 = OPEN_SHELL('',(#51)); +#51 = ADVANCED_FACE('',(#52),#66,.T.); +#52 = FACE_BOUND('',#53,.T.); +#53 = EDGE_LOOP('',(#54,#77,#93,#109)); +#54 = ORIENTED_EDGE('',*,*,#55,.T.); +#55 = EDGE_CURVE('',#56,#58,#60,.T.); +#56 = VERTEX_POINT('',#57); +#57 = CARTESIAN_POINT('',(0.,0.,0.)); +#58 = VERTEX_POINT('',#59); +#59 = CARTESIAN_POINT('',(1.2E+03,0.,0.)); +#60 = SURFACE_CURVE('',#61,(#65),.PCURVE_S1.); +#61 = LINE('',#62,#63); +#62 = CARTESIAN_POINT('',(0.,0.,0.)); +#63 = VECTOR('',#64,1.); +#64 = DIRECTION('',(1.,0.,0.)); +#65 = PCURVE('',#66,#71); +#66 = PLANE('',#67); +#67 = AXIS2_PLACEMENT_3D('',#68,#69,#70); +#68 = CARTESIAN_POINT('',(600.,-300.,0.)); +#69 = DIRECTION('',(-0.,-0.,-1.)); +#70 = DIRECTION('',(-1.,0.,0.)); +#71 = DEFINITIONAL_REPRESENTATION('',(#72),#76); +#72 = LINE('',#73,#74); +#73 = CARTESIAN_POINT('',(600.,300.)); +#74 = VECTOR('',#75,1.); +#75 = DIRECTION('',(-1.,0.)); +#76 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#77 = ORIENTED_EDGE('',*,*,#78,.T.); +#78 = EDGE_CURVE('',#58,#79,#81,.T.); +#79 = VERTEX_POINT('',#80); +#80 = CARTESIAN_POINT('',(1.2E+03,-600.,0.)); +#81 = SURFACE_CURVE('',#82,(#86),.PCURVE_S1.); +#82 = LINE('',#83,#84); +#83 = CARTESIAN_POINT('',(1.2E+03,0.,0.)); +#84 = VECTOR('',#85,1.); +#85 = DIRECTION('',(0.,-1.,0.)); +#86 = PCURVE('',#66,#87); +#87 = DEFINITIONAL_REPRESENTATION('',(#88),#92); +#88 = LINE('',#89,#90); +#89 = CARTESIAN_POINT('',(-600.,300.)); +#90 = VECTOR('',#91,1.); +#91 = DIRECTION('',(0.,-1.)); +#92 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#93 = ORIENTED_EDGE('',*,*,#94,.T.); +#94 = EDGE_CURVE('',#79,#95,#97,.T.); +#95 = VERTEX_POINT('',#96); +#96 = CARTESIAN_POINT('',(0.,-600.,0.)); +#97 = SURFACE_CURVE('',#98,(#102),.PCURVE_S1.); +#98 = LINE('',#99,#100); +#99 = CARTESIAN_POINT('',(1.2E+03,-600.,0.)); +#100 = VECTOR('',#101,1.); +#101 = DIRECTION('',(-1.,0.,0.)); +#102 = PCURVE('',#66,#103); +#103 = DEFINITIONAL_REPRESENTATION('',(#104),#108); +#104 = LINE('',#105,#106); +#105 = CARTESIAN_POINT('',(-600.,-300.)); +#106 = VECTOR('',#107,1.); +#107 = DIRECTION('',(1.,0.)); +#108 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#109 = ORIENTED_EDGE('',*,*,#110,.T.); +#110 = EDGE_CURVE('',#95,#56,#111,.T.); +#111 = SURFACE_CURVE('',#112,(#116),.PCURVE_S1.); +#112 = LINE('',#113,#114); +#113 = CARTESIAN_POINT('',(0.,-600.,0.)); +#114 = VECTOR('',#115,1.); +#115 = DIRECTION('',(0.,1.,0.)); +#116 = PCURVE('',#66,#117); +#117 = DEFINITIONAL_REPRESENTATION('',(#118),#122); +#118 = LINE('',#119,#120); +#119 = CARTESIAN_POINT('',(600.,-300.)); +#120 = VECTOR('',#121,1.); +#121 = DIRECTION('',(0.,1.)); +#122 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#123 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#127)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#124,#125,#126)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#124 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#125 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#126 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#127 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#124, + 'distance_accuracy_value','confusion accuracy'); +#128 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#129,#131); +#129 = ( REPRESENTATION_RELATIONSHIP('','',#48,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#130) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#130 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); +#131 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#132 + ); +#132 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('69','Conductor_0','',#5,#43,$); +#133 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#45)); +#134 = SHAPE_DEFINITION_REPRESENTATION(#135,#141); +#135 = PRODUCT_DEFINITION_SHAPE('','',#136); +#136 = PRODUCT_DEFINITION('design','',#137,#140); +#137 = PRODUCT_DEFINITION_FORMATION('','',#138); +#138 = PRODUCT('OpenRegion_0','OpenRegion_0','',(#139)); +#139 = PRODUCT_CONTEXT('',#2,'mechanical'); +#140 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#141 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#142),#185); +#142 = SHELL_BASED_SURFACE_MODEL('',(#143)); +#143 = OPEN_SHELL('',(#144)); +#144 = ADVANCED_FACE('',(#145),#159,.T.); +#145 = FACE_BOUND('',#146,.T.); +#146 = EDGE_LOOP('',(#147,#170)); +#147 = ORIENTED_EDGE('',*,*,#148,.T.); +#148 = EDGE_CURVE('',#149,#151,#153,.T.); +#149 = VERTEX_POINT('',#150); +#150 = CARTESIAN_POINT('',(-600.,0.,0.)); +#151 = VERTEX_POINT('',#152); +#152 = CARTESIAN_POINT('',(600.,0.,0.)); +#153 = SURFACE_CURVE('',#154,(#158),.PCURVE_S1.); +#154 = LINE('',#155,#156); +#155 = CARTESIAN_POINT('',(-600.,0.,0.)); +#156 = VECTOR('',#157,1.); +#157 = DIRECTION('',(1.,0.,0.)); +#158 = PCURVE('',#159,#164); +#159 = PLANE('',#160); +#160 = AXIS2_PLACEMENT_3D('',#161,#162,#163); +#161 = CARTESIAN_POINT('',(-9.335057971469E-14,1.284729590293E-14,0.)); +#162 = DIRECTION('',(0.,0.,1.)); +#163 = DIRECTION('',(1.,0.,0.)); +#164 = DEFINITIONAL_REPRESENTATION('',(#165),#169); +#165 = LINE('',#166,#167); +#166 = CARTESIAN_POINT('',(-600.,-1.284729590293E-14)); +#167 = VECTOR('',#168,1.); +#168 = DIRECTION('',(1.,0.)); +#169 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#170 = ORIENTED_EDGE('',*,*,#171,.T.); +#171 = EDGE_CURVE('',#151,#149,#172,.T.); +#172 = SURFACE_CURVE('',#173,(#178),.PCURVE_S1.); +#173 = CIRCLE('',#174,600.); +#174 = AXIS2_PLACEMENT_3D('',#175,#176,#177); +#175 = CARTESIAN_POINT('',(0.,0.,0.)); +#176 = DIRECTION('',(0.,0.,1.)); +#177 = DIRECTION('',(1.,0.,0.)); +#178 = PCURVE('',#159,#179); +#179 = DEFINITIONAL_REPRESENTATION('',(#180),#184); +#180 = CIRCLE('',#181,600.); +#181 = AXIS2_PLACEMENT_2D('',#182,#183); +#182 = CARTESIAN_POINT('',(9.335057971469E-14,-1.284729590293E-14)); +#183 = DIRECTION('',(1.,0.)); +#184 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#185 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#189)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#186,#187,#188)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#186 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#187 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#188 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#189 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#186, + 'distance_accuracy_value','confusion accuracy'); +#190 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#191,#193); +#191 = ( REPRESENTATION_RELATIONSHIP('','',#141,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#192) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#192 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); +#193 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#194 + ); +#194 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('70','OpenRegion_0','',#5,#136,$); +#195 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#138)); +#196 = SHAPE_DEFINITION_REPRESENTATION(#197,#203); +#197 = PRODUCT_DEFINITION_SHAPE('','',#198); +#198 = PRODUCT_DEFINITION('design','',#199,#202); +#199 = PRODUCT_DEFINITION_FORMATION('','',#200); +#200 = PRODUCT('solid_wire_003','solid_wire_003','',(#201)); +#201 = PRODUCT_CONTEXT('',#2,'mechanical'); +#202 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#203 = SHAPE_REPRESENTATION('',(#11,#204,#208),#212); +#204 = AXIS2_PLACEMENT_3D('',#205,#206,#207); +#205 = CARTESIAN_POINT('',(3.048,79.248,0.)); +#206 = DIRECTION('',(0.,0.,1.)); +#207 = DIRECTION('',(1.,0.,0.)); +#208 = AXIS2_PLACEMENT_3D('',#209,#210,#211); +#209 = CARTESIAN_POINT('',(3.048,79.248,0.)); +#210 = DIRECTION('',(0.,0.,1.)); +#211 = DIRECTION('',(1.,0.,0.)); +#212 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#216)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#213,#214,#215)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#213 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#214 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#215 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#216 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#213, + 'distance_accuracy_value','confusion accuracy'); +#217 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#218,#220); +#218 = ( REPRESENTATION_RELATIONSHIP('','',#203,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#219) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#219 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); +#220 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#221 + ); +#221 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('73','solid_wire_003','',#5,#198,$ + ); +#222 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#200)); +#223 = SHAPE_DEFINITION_REPRESENTATION(#224,#230); +#224 = PRODUCT_DEFINITION_SHAPE('','',#225); +#225 = PRODUCT_DEFINITION('design','',#226,#229); +#226 = PRODUCT_DEFINITION_FORMATION('','',#227); +#227 = PRODUCT('Conductor_003','Conductor_003','',(#228)); +#228 = PRODUCT_CONTEXT('',#2,'mechanical'); +#229 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#230 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#231),#258); +#231 = SHELL_BASED_SURFACE_MODEL('',(#232)); +#232 = OPEN_SHELL('',(#233)); +#233 = ADVANCED_FACE('',(#234),#247,.T.); +#234 = FACE_BOUND('',#235,.T.); +#235 = EDGE_LOOP('',(#236)); +#236 = ORIENTED_EDGE('',*,*,#237,.T.); +#237 = EDGE_CURVE('',#238,#238,#240,.T.); +#238 = VERTEX_POINT('',#239); +#239 = CARTESIAN_POINT('',(2.1463,0.,0.)); +#240 = SURFACE_CURVE('',#241,(#246),.PCURVE_S1.); +#241 = CIRCLE('',#242,2.1463); +#242 = AXIS2_PLACEMENT_3D('',#243,#244,#245); +#243 = CARTESIAN_POINT('',(0.,0.,0.)); +#244 = DIRECTION('',(0.,0.,1.)); +#245 = DIRECTION('',(1.,0.,-0.)); +#246 = PCURVE('',#247,#252); +#247 = PLANE('',#248); +#248 = AXIS2_PLACEMENT_3D('',#249,#250,#251); +#249 = CARTESIAN_POINT('',(-1.194590806742E-16,-7.975927050832E-18,0.)); +#250 = DIRECTION('',(0.,0.,1.)); +#251 = DIRECTION('',(1.,0.,-0.)); +#252 = DEFINITIONAL_REPRESENTATION('',(#253),#257); +#253 = CIRCLE('',#254,2.1463); +#254 = AXIS2_PLACEMENT_2D('',#255,#256); +#255 = CARTESIAN_POINT('',(1.194590806742E-16,7.975927050832E-18)); +#256 = DIRECTION('',(1.,0.)); +#257 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#258 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#262)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#259,#260,#261)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#259 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#260 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#261 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#262 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#259, + 'distance_accuracy_value','confusion accuracy'); +#263 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#264,#266); +#264 = ( REPRESENTATION_RELATIONSHIP('','',#230,#203) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#265) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#265 = ITEM_DEFINED_TRANSFORMATION('','',#11,#204); +#266 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#267 + ); +#267 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('71','Conductor_003','',#198,#225, + $); +#268 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#227)); +#269 = SHAPE_DEFINITION_REPRESENTATION(#270,#276); +#270 = PRODUCT_DEFINITION_SHAPE('','',#271); +#271 = PRODUCT_DEFINITION('design','',#272,#275); +#272 = PRODUCT_DEFINITION_FORMATION('','',#273); +#273 = PRODUCT('Dielectric_003','Dielectric_003','',(#274)); +#274 = PRODUCT_CONTEXT('',#2,'mechanical'); +#275 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#276 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#277),#304); +#277 = SHELL_BASED_SURFACE_MODEL('',(#278)); +#278 = OPEN_SHELL('',(#279)); +#279 = ADVANCED_FACE('',(#280),#293,.T.); +#280 = FACE_BOUND('',#281,.T.); +#281 = EDGE_LOOP('',(#282)); +#282 = ORIENTED_EDGE('',*,*,#283,.T.); +#283 = EDGE_CURVE('',#284,#284,#286,.T.); +#284 = VERTEX_POINT('',#285); +#285 = CARTESIAN_POINT('',(3.048,0.,0.)); +#286 = SURFACE_CURVE('',#287,(#292),.PCURVE_S1.); +#287 = CIRCLE('',#288,3.048); +#288 = AXIS2_PLACEMENT_3D('',#289,#290,#291); +#289 = CARTESIAN_POINT('',(0.,0.,0.)); +#290 = DIRECTION('',(0.,0.,1.)); +#291 = DIRECTION('',(1.,0.,-0.)); +#292 = PCURVE('',#293,#298); +#293 = PLANE('',#294); +#294 = AXIS2_PLACEMENT_3D('',#295,#296,#297); +#295 = CARTESIAN_POINT('',(-1.121588035219E-16,-1.226531127144E-17,0.)); +#296 = DIRECTION('',(0.,0.,1.)); +#297 = DIRECTION('',(1.,0.,-0.)); +#298 = DEFINITIONAL_REPRESENTATION('',(#299),#303); +#299 = CIRCLE('',#300,3.048); +#300 = AXIS2_PLACEMENT_2D('',#301,#302); +#301 = CARTESIAN_POINT('',(1.121588035219E-16,1.226531127144E-17)); +#302 = DIRECTION('',(1.,0.)); +#303 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#304 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#308)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#305,#306,#307)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#305 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#306 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#307 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#308 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#305, + 'distance_accuracy_value','confusion accuracy'); +#309 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#310,#312); +#310 = ( REPRESENTATION_RELATIONSHIP('','',#276,#203) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#311) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#311 = ITEM_DEFINED_TRANSFORMATION('','',#11,#208); +#312 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#313 + ); +#313 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('72','Dielectric_003','',#198,#271 + ,$); +#314 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#273)); +#315 = SHAPE_DEFINITION_REPRESENTATION(#316,#322); +#316 = PRODUCT_DEFINITION_SHAPE('','',#317); +#317 = PRODUCT_DEFINITION('design','',#318,#321); +#318 = PRODUCT_DEFINITION_FORMATION('','',#319); +#319 = PRODUCT('solid_wire_002','solid_wire_002','',(#320)); +#320 = PRODUCT_CONTEXT('',#2,'mechanical'); +#321 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#322 = SHAPE_REPRESENTATION('',(#11,#323,#327),#331); +#323 = AXIS2_PLACEMENT_3D('',#324,#325,#326); +#324 = CARTESIAN_POINT('',(-3.048,79.25,0.)); +#325 = DIRECTION('',(0.,0.,1.)); +#326 = DIRECTION('',(1.,0.,0.)); +#327 = AXIS2_PLACEMENT_3D('',#328,#329,#330); +#328 = CARTESIAN_POINT('',(-3.048,79.248,0.)); +#329 = DIRECTION('',(0.,0.,1.)); +#330 = DIRECTION('',(1.,0.,0.)); +#331 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#335)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#332,#333,#334)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#332 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#333 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#334 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#335 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#332, + 'distance_accuracy_value','confusion accuracy'); +#336 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#337,#339); +#337 = ( REPRESENTATION_RELATIONSHIP('','',#322,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#338) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#338 = ITEM_DEFINED_TRANSFORMATION('','',#11,#27); +#339 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#340 + ); +#340 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('76','solid_wire_002','',#5,#317,$ + ); +#341 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#319)); +#342 = SHAPE_DEFINITION_REPRESENTATION(#343,#349); +#343 = PRODUCT_DEFINITION_SHAPE('','',#344); +#344 = PRODUCT_DEFINITION('design','',#345,#348); +#345 = PRODUCT_DEFINITION_FORMATION('','',#346); +#346 = PRODUCT('Conductor_002','Conductor_002','',(#347)); +#347 = PRODUCT_CONTEXT('',#2,'mechanical'); +#348 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#349 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#350),#377); +#350 = SHELL_BASED_SURFACE_MODEL('',(#351)); +#351 = OPEN_SHELL('',(#352)); +#352 = ADVANCED_FACE('',(#353),#366,.T.); +#353 = FACE_BOUND('',#354,.T.); +#354 = EDGE_LOOP('',(#355)); +#355 = ORIENTED_EDGE('',*,*,#356,.T.); +#356 = EDGE_CURVE('',#357,#357,#359,.T.); +#357 = VERTEX_POINT('',#358); +#358 = CARTESIAN_POINT('',(2.1463,0.,0.)); +#359 = SURFACE_CURVE('',#360,(#365),.PCURVE_S1.); +#360 = CIRCLE('',#361,2.1463); +#361 = AXIS2_PLACEMENT_3D('',#362,#363,#364); +#362 = CARTESIAN_POINT('',(0.,0.,0.)); +#363 = DIRECTION('',(0.,0.,1.)); +#364 = DIRECTION('',(1.,0.,-0.)); +#365 = PCURVE('',#366,#371); +#366 = PLANE('',#367); +#367 = AXIS2_PLACEMENT_3D('',#368,#369,#370); +#368 = CARTESIAN_POINT('',(-1.194590806742E-16,-7.975927050832E-18,0.)); +#369 = DIRECTION('',(0.,0.,1.)); +#370 = DIRECTION('',(1.,0.,-0.)); +#371 = DEFINITIONAL_REPRESENTATION('',(#372),#376); +#372 = CIRCLE('',#373,2.1463); +#373 = AXIS2_PLACEMENT_2D('',#374,#375); +#374 = CARTESIAN_POINT('',(1.194590806742E-16,7.975927050832E-18)); +#375 = DIRECTION('',(1.,0.)); +#376 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#377 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#381)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#378,#379,#380)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#378 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#379 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#380 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#381 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#378, + 'distance_accuracy_value','confusion accuracy'); +#382 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#383,#385); +#383 = ( REPRESENTATION_RELATIONSHIP('','',#349,#322) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#384) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#384 = ITEM_DEFINED_TRANSFORMATION('','',#11,#323); +#385 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#386 + ); +#386 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('74','Conductor_002','',#317,#344, + $); +#387 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#346)); +#388 = SHAPE_DEFINITION_REPRESENTATION(#389,#395); +#389 = PRODUCT_DEFINITION_SHAPE('','',#390); +#390 = PRODUCT_DEFINITION('design','',#391,#394); +#391 = PRODUCT_DEFINITION_FORMATION('','',#392); +#392 = PRODUCT('Dielectric_002','Dielectric_002','',(#393)); +#393 = PRODUCT_CONTEXT('',#2,'mechanical'); +#394 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#395 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#396),#423); +#396 = SHELL_BASED_SURFACE_MODEL('',(#397)); +#397 = OPEN_SHELL('',(#398)); +#398 = ADVANCED_FACE('',(#399),#412,.T.); +#399 = FACE_BOUND('',#400,.T.); +#400 = EDGE_LOOP('',(#401)); +#401 = ORIENTED_EDGE('',*,*,#402,.T.); +#402 = EDGE_CURVE('',#403,#403,#405,.T.); +#403 = VERTEX_POINT('',#404); +#404 = CARTESIAN_POINT('',(3.048,0.,0.)); +#405 = SURFACE_CURVE('',#406,(#411),.PCURVE_S1.); +#406 = CIRCLE('',#407,3.048); +#407 = AXIS2_PLACEMENT_3D('',#408,#409,#410); +#408 = CARTESIAN_POINT('',(0.,0.,0.)); +#409 = DIRECTION('',(0.,0.,1.)); +#410 = DIRECTION('',(1.,0.,-0.)); +#411 = PCURVE('',#412,#417); +#412 = PLANE('',#413); +#413 = AXIS2_PLACEMENT_3D('',#414,#415,#416); +#414 = CARTESIAN_POINT('',(-1.121588035219E-16,-1.226531127144E-17,0.)); +#415 = DIRECTION('',(0.,0.,1.)); +#416 = DIRECTION('',(1.,0.,-0.)); +#417 = DEFINITIONAL_REPRESENTATION('',(#418),#422); +#418 = CIRCLE('',#419,3.048); +#419 = AXIS2_PLACEMENT_2D('',#420,#421); +#420 = CARTESIAN_POINT('',(1.121588035219E-16,1.226531127144E-17)); +#421 = DIRECTION('',(1.,0.)); +#422 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#423 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#427)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#424,#425,#426)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#424 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#425 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#426 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#427 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#424, + 'distance_accuracy_value','confusion accuracy'); +#428 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#429,#431); +#429 = ( REPRESENTATION_RELATIONSHIP('','',#395,#322) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#430) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#430 = ITEM_DEFINED_TRANSFORMATION('','',#11,#327); +#431 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#432 + ); +#432 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('75','Dielectric_002','',#317,#390 + ,$); +#433 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#392)); +#434 = SHAPE_DEFINITION_REPRESENTATION(#435,#441); +#435 = PRODUCT_DEFINITION_SHAPE('','',#436); +#436 = PRODUCT_DEFINITION('design','',#437,#440); +#437 = PRODUCT_DEFINITION_FORMATION('','',#438); +#438 = PRODUCT('solid_wire_001','solid_wire_001','',(#439)); +#439 = PRODUCT_CONTEXT('',#2,'mechanical'); +#440 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#441 = SHAPE_REPRESENTATION('',(#11,#442,#446),#450); +#442 = AXIS2_PLACEMENT_3D('',#443,#444,#445); +#443 = CARTESIAN_POINT('',(0.,84.527,0.)); +#444 = DIRECTION('',(0.,0.,1.)); +#445 = DIRECTION('',(1.,0.,0.)); +#446 = AXIS2_PLACEMENT_3D('',#447,#448,#449); +#447 = CARTESIAN_POINT('',(0.,84.527,0.)); +#448 = DIRECTION('',(0.,0.,1.)); +#449 = DIRECTION('',(1.,0.,0.)); +#450 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#454)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#451,#452,#453)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#451 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#452 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#453 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#454 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#451, + 'distance_accuracy_value','confusion accuracy'); +#455 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#456,#458); +#456 = ( REPRESENTATION_RELATIONSHIP('','',#441,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#457) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#457 = ITEM_DEFINED_TRANSFORMATION('','',#11,#31); +#458 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#459 + ); +#459 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('79','solid_wire_001','',#5,#436,$ + ); +#460 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#438)); +#461 = SHAPE_DEFINITION_REPRESENTATION(#462,#468); +#462 = PRODUCT_DEFINITION_SHAPE('','',#463); +#463 = PRODUCT_DEFINITION('design','',#464,#467); +#464 = PRODUCT_DEFINITION_FORMATION('','',#465); +#465 = PRODUCT('Conductor_001','Conductor_001','',(#466)); +#466 = PRODUCT_CONTEXT('',#2,'mechanical'); +#467 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#468 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#469),#496); +#469 = SHELL_BASED_SURFACE_MODEL('',(#470)); +#470 = OPEN_SHELL('',(#471)); +#471 = ADVANCED_FACE('',(#472),#485,.T.); +#472 = FACE_BOUND('',#473,.T.); +#473 = EDGE_LOOP('',(#474)); +#474 = ORIENTED_EDGE('',*,*,#475,.T.); +#475 = EDGE_CURVE('',#476,#476,#478,.T.); +#476 = VERTEX_POINT('',#477); +#477 = CARTESIAN_POINT('',(2.1463,0.,0.)); +#478 = SURFACE_CURVE('',#479,(#484),.PCURVE_S1.); +#479 = CIRCLE('',#480,2.1463); +#480 = AXIS2_PLACEMENT_3D('',#481,#482,#483); +#481 = CARTESIAN_POINT('',(0.,0.,0.)); +#482 = DIRECTION('',(0.,0.,1.)); +#483 = DIRECTION('',(1.,0.,-0.)); +#484 = PCURVE('',#485,#490); +#485 = PLANE('',#486); +#486 = AXIS2_PLACEMENT_3D('',#487,#488,#489); +#487 = CARTESIAN_POINT('',(-1.194590806742E-16,-7.975927050832E-18,0.)); +#488 = DIRECTION('',(0.,0.,1.)); +#489 = DIRECTION('',(1.,0.,-0.)); +#490 = DEFINITIONAL_REPRESENTATION('',(#491),#495); +#491 = CIRCLE('',#492,2.1463); +#492 = AXIS2_PLACEMENT_2D('',#493,#494); +#493 = CARTESIAN_POINT('',(1.194590806742E-16,7.975927050832E-18)); +#494 = DIRECTION('',(1.,0.)); +#495 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#496 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#500)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#497,#498,#499)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#497 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#498 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#499 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#500 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#497, + 'distance_accuracy_value','confusion accuracy'); +#501 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#502,#504); +#502 = ( REPRESENTATION_RELATIONSHIP('','',#468,#441) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#503) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#503 = ITEM_DEFINED_TRANSFORMATION('','',#11,#442); +#504 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#505 + ); +#505 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('77','Conductor_001','',#436,#463, + $); +#506 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#465)); +#507 = SHAPE_DEFINITION_REPRESENTATION(#508,#514); +#508 = PRODUCT_DEFINITION_SHAPE('','',#509); +#509 = PRODUCT_DEFINITION('design','',#510,#513); +#510 = PRODUCT_DEFINITION_FORMATION('','',#511); +#511 = PRODUCT('Dielectric_001','Dielectric_001','',(#512)); +#512 = PRODUCT_CONTEXT('',#2,'mechanical'); +#513 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#514 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#515),#542); +#515 = SHELL_BASED_SURFACE_MODEL('',(#516)); +#516 = OPEN_SHELL('',(#517)); +#517 = ADVANCED_FACE('',(#518),#531,.T.); +#518 = FACE_BOUND('',#519,.T.); +#519 = EDGE_LOOP('',(#520)); +#520 = ORIENTED_EDGE('',*,*,#521,.T.); +#521 = EDGE_CURVE('',#522,#522,#524,.T.); +#522 = VERTEX_POINT('',#523); +#523 = CARTESIAN_POINT('',(3.048,0.,0.)); +#524 = SURFACE_CURVE('',#525,(#530),.PCURVE_S1.); +#525 = CIRCLE('',#526,3.048); +#526 = AXIS2_PLACEMENT_3D('',#527,#528,#529); +#527 = CARTESIAN_POINT('',(0.,0.,0.)); +#528 = DIRECTION('',(0.,0.,1.)); +#529 = DIRECTION('',(1.,0.,-0.)); +#530 = PCURVE('',#531,#536); +#531 = PLANE('',#532); +#532 = AXIS2_PLACEMENT_3D('',#533,#534,#535); +#533 = CARTESIAN_POINT('',(-1.121588035219E-16,-1.226531127144E-17,0.)); +#534 = DIRECTION('',(0.,0.,1.)); +#535 = DIRECTION('',(1.,0.,-0.)); +#536 = DEFINITIONAL_REPRESENTATION('',(#537),#541); +#537 = CIRCLE('',#538,3.048); +#538 = AXIS2_PLACEMENT_2D('',#539,#540); +#539 = CARTESIAN_POINT('',(1.121588035219E-16,1.226531127144E-17)); +#540 = DIRECTION('',(1.,0.)); +#541 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#542 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#546)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#543,#544,#545)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#543 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#544 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#545 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#546 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#543, + 'distance_accuracy_value','confusion accuracy'); +#547 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#548,#550); +#548 = ( REPRESENTATION_RELATIONSHIP('','',#514,#441) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#549) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#549 = ITEM_DEFINED_TRANSFORMATION('','',#11,#446); +#550 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#551 + ); +#551 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('78','Dielectric_001','',#436,#509 + ,$); +#552 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#511)); +#553 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#554) + ,#258); +#554 = STYLED_ITEM('color',(#555),#233); +#555 = PRESENTATION_STYLE_ASSIGNMENT((#556,#562)); +#556 = SURFACE_STYLE_USAGE(.BOTH.,#557); +#557 = SURFACE_SIDE_STYLE('',(#558)); +#558 = SURFACE_STYLE_FILL_AREA(#559); +#559 = FILL_AREA_STYLE('',(#560)); +#560 = FILL_AREA_STYLE_COLOUR('',#561); +#561 = COLOUR_RGB('',1.,0.333333345507,0.); +#562 = CURVE_STYLE('',#563,POSITIVE_LENGTH_MEASURE(0.1),#564); +#563 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#564 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, + 9.803921802644E-02); +#565 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#566) + ,#304); +#566 = STYLED_ITEM('color',(#567),#279); +#567 = PRESENTATION_STYLE_ASSIGNMENT((#568,#576)); +#568 = SURFACE_STYLE_USAGE(.BOTH.,#569); +#569 = SURFACE_SIDE_STYLE('',(#570,#574)); +#570 = SURFACE_STYLE_FILL_AREA(#571); +#571 = FILL_AREA_STYLE('',(#572)); +#572 = FILL_AREA_STYLE_COLOUR('',#573); +#573 = DRAUGHTING_PRE_DEFINED_COLOUR('red'); +#574 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#573,( + #575)); +#575 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#576 = CURVE_STYLE('',#577,POSITIVE_LENGTH_MEASURE(0.1),#564); +#577 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#578 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#579) + ,#496); +#579 = STYLED_ITEM('color',(#580),#471); +#580 = PRESENTATION_STYLE_ASSIGNMENT((#581,#586)); +#581 = SURFACE_STYLE_USAGE(.BOTH.,#582); +#582 = SURFACE_SIDE_STYLE('',(#583)); +#583 = SURFACE_STYLE_FILL_AREA(#584); +#584 = FILL_AREA_STYLE('',(#585)); +#585 = FILL_AREA_STYLE_COLOUR('',#561); +#586 = CURVE_STYLE('',#587,POSITIVE_LENGTH_MEASURE(0.1),#564); +#587 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#588 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#589) + ,#542); +#589 = STYLED_ITEM('color',(#590),#517); +#590 = PRESENTATION_STYLE_ASSIGNMENT((#591,#598)); +#591 = SURFACE_STYLE_USAGE(.BOTH.,#592); +#592 = SURFACE_SIDE_STYLE('',(#593,#596)); +#593 = SURFACE_STYLE_FILL_AREA(#594); +#594 = FILL_AREA_STYLE('',(#595)); +#595 = FILL_AREA_STYLE_COLOUR('',#573); +#596 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#573,( + #597)); +#597 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#598 = CURVE_STYLE('',#599,POSITIVE_LENGTH_MEASURE(0.1),#564); +#599 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#600 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#601) + ,#185); +#601 = STYLED_ITEM('color',(#602),#144); +#602 = PRESENTATION_STYLE_ASSIGNMENT((#603,#611)); +#603 = SURFACE_STYLE_USAGE(.BOTH.,#604); +#604 = SURFACE_SIDE_STYLE('',(#605,#609)); +#605 = SURFACE_STYLE_FILL_AREA(#606); +#606 = FILL_AREA_STYLE('',(#607)); +#607 = FILL_AREA_STYLE_COLOUR('',#608); +#608 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); +#609 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#608,( + #610)); +#610 = SURFACE_STYLE_TRANSPARENT(0.990000009537); +#611 = CURVE_STYLE('',#612,POSITIVE_LENGTH_MEASURE(0.1),#564); +#612 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#613 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#614) + ,#423); +#614 = STYLED_ITEM('color',(#615),#398); +#615 = PRESENTATION_STYLE_ASSIGNMENT((#616,#623)); +#616 = SURFACE_STYLE_USAGE(.BOTH.,#617); +#617 = SURFACE_SIDE_STYLE('',(#618,#621)); +#618 = SURFACE_STYLE_FILL_AREA(#619); +#619 = FILL_AREA_STYLE('',(#620)); +#620 = FILL_AREA_STYLE_COLOUR('',#573); +#621 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#573,( + #622)); +#622 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#623 = CURVE_STYLE('',#624,POSITIVE_LENGTH_MEASURE(0.1),#564); +#624 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#625 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#626) + ,#377); +#626 = STYLED_ITEM('color',(#627),#352); +#627 = PRESENTATION_STYLE_ASSIGNMENT((#628,#633)); +#628 = SURFACE_STYLE_USAGE(.BOTH.,#629); +#629 = SURFACE_SIDE_STYLE('',(#630)); +#630 = SURFACE_STYLE_FILL_AREA(#631); +#631 = FILL_AREA_STYLE('',(#632)); +#632 = FILL_AREA_STYLE_COLOUR('',#561); +#633 = CURVE_STYLE('',#634,POSITIVE_LENGTH_MEASURE(0.1),#564); +#634 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#635 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#636) + ,#123); +#636 = STYLED_ITEM('color',(#637),#51); +#637 = PRESENTATION_STYLE_ASSIGNMENT((#638,#644)); +#638 = SURFACE_STYLE_USAGE(.BOTH.,#639); +#639 = SURFACE_SIDE_STYLE('',(#640)); +#640 = SURFACE_STYLE_FILL_AREA(#641); +#641 = FILL_AREA_STYLE('',(#642)); +#642 = FILL_AREA_STYLE_COLOUR('',#643); +#643 = COLOUR_RGB('',0.,0.666666687201,0.); +#644 = CURVE_STYLE('',#645,POSITIVE_LENGTH_MEASURE(0.1),#564); +#645 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +ENDSEC; +END-ISO-10303-21; diff --git a/testData/three_wires_ribbon/three_wires_ribbon.FCStd b/testData/three_wires_ribbon/three_wires_ribbon.FCStd index 3f75d808ab8f4033f9ca697e9f070004051f1119..2924016d2b4513f3e1b8ff91f52fb9126670bc70 100644 GIT binary patch literal 15501 zcmbW81ymf_y0#m4C%C(7V65Zv9h(U9O4oZ#;64grD_JUGEMNPq->GIP#9lgypD z=bmEqVo|-HuD9O)c74TuyOrf2ATa>|04(6<9lKT|vf=FB^Pg%6U;xDDz2c6h?)K&m zZcJYGb|(gUt}EOr0h84|HswXW7BAC0Rf)=rkGT&NG-gJI6mRXi3uw^mT5_dd$PC_m zyXOJGuFA*(k3y> zBKn1;?>)jstScXg88MOvMnz>2#|tzGX& zo3FB9Fc)3jEjz~D(R=$4l`|Jd*oaWvWHijh@R1ak0C>I~ z7g*6*{^!AG-dbg4N9jdn_1<6xZ#C-m)a|o2g19)^%*Wh!(fmF`zR!48C$MIFhn%Ic)Ki(4CcuNa zfrU3-imT3@D$O#ziy8y2bn-H8-=#o&dEjzBn+>jHTysytVc*sX0$QgrW%4E9(D8=^| zB&r*HRP)l_$Runzkjh+)M(}tqqCeT!{&b;_4HGTaiYTUCG7m)>+scx*EU0XzlIfuh z5m%EX(Nw6LLaNhfKs(l8l<(9UN8vvk?{}SkceGG_Rt---)py#>B=D9wbhj+UPH`M# zX?h1^oHGk!r7;=9vLIGi)oKw>K{NU^vl^d9tkmPm`toTJgfXg-KMgS0ghDo6A+UlP zRaIeqS(z&m^?oY`#>w6mypktEbPvd1LcTTC~aj1HZ1v|Kd!$TYn zG;*TZQ1&ipbgXSW6tr;LVkL1*My!>3PayFDjanON4ZkeKpabkS)<<6?s^t(T;F2PQ zpJ6uOOcJ6b#lzpr$A4Rrlemfq(KwbVbE{dK=`IlHU46I~=YXA0gR5(3tnZ8D;*%gUXkoZne=j@C^x*9fsz$I$~(Qfd&rv)E7MB16Bo3?65J$n`V~> zsdh|PzzRW_GSu)#3$7@2RmNTANs4$o8#U4B z2P5$<-`1*dzEjCDoT)8IXh@mUilP)?nHrY9>JT-2{hI#B?09S4u-)bAbo z-JSUNiSwiua809YDU^Qmo_8#SdoiX{pJ3J^jlPm*KFPga@u)A^VI5e!B=>@wKQL~B zKg0*`lst%_{1#0Ev&1X8x0;fvC(~g-b1_8krCJP(R=fa|%0@VH#VR5>K2e_2>x4Ay z{J7WEV0DQUWK$TgMelRc_JS!wgq(sTjV$W~p z5_xIO8y(5w(83qY%#&)+a31DB$YWG_On7xi)MN!a+;xSrnj+Bf?eXmM`jeK;oq@xh zf%TmMR7;5oKlb>zP$S}#+Ss{J?>T;3^9$JJsV@-BmLS~&ob zW^Pv0%Q8ooq~_Ngm)NRIgTtX%9&Gq1U5i!CQ82KUA%rOKx}R9u!~&%Ti4$~QK#y9t z@D@-t&40J*`jW@p3hNNLv>?2BkO*z)mK7uzV|PhqDizAX!)GbcxILX{$l21X$^kG} zC?scYyR1R!;J(asq^!5Z|11UrC)(2Q&Ox~`U6Neiynf`sRde!c*M4JO8tS|JDx4kA zpid%EEIwjk&{X`%@8~;@@~i@aC2kZo1oth`c2-cx(a70Y8XdMm$SwdEn~2G6e+z-?l*cJ&*{yGk%eHdWau;cZ)3W{D2RC*1#YVjq zB7`tYW_T2aBmepp1oj@>ypL_P4M;+sXWdUtPM^C60}Z>0Lp($?2UxU&P;lImz4w{? zS;+KX2D0#x6R~j$2*)@M8;=xvIV&0VHReN?Jp_g5O@*b~k=|fw34HCjzZ@A|S^z3A zXFqlM9r{@8VJW{3V|{9Zx#YTOshVOvir?2$b27(AscY(&QE&HHRS)ShWWq9;v)e!o zY&zQA3BhhwRnL{lKoFmZhL3(It?c%#<+|`=wibjpC$h21YS}MxsSO~UOv%pb;Z&vw zdwUD{N;xPZAP+i1J>U~I-poekk{QFtOknr)#ivj?mi=~ENn8gWB;{$jTQ+;Z0J%=2 z0uAbL)~JPT_iWsZItD}-M91k>!rr(2rX@7Dxt%MQ>1iJ|jk?f`HRWXmy_w9YqIH|& z@qssD>#n7otPpN=hp;$7)tc3w&s=g zr{+h7B|I6GCTmh-t<`<4Cs30(seFdn23HOx`h6d(mp6iaGcuYis~%4jHgz_48%vXE z8whRiJ-Sn!YtA4L``zvnT$Qm}hcZLk49z=92`!qBoVfhXLfQ;&P^-7j_MXV-ygMdp zEC+g)IrFg_pm4$J4BqN5ieM7yJ8_c&dMRwSm~Y6Uo-SZY=4oV^$MEKkK6KFEy6GHS z+abFHZ%Md&Zv^nWFg_)BNZ6=VM8U7J(&djjdb}@e{~{2y={U1%UOQIHkSr-RRe8$Z z3E+xd-VXwR!{oy$p0XgLB9$!{%#OV*HtpmWWEtebA+lOa-t^Z6CqP+45Px*2ZyY2V zX2V_OUtb!BhC!A-;X}Y#U6n&Wg9%G&Q@X2LEawf~EHZ-;!CK!S$}24XqUJ;JfZL|H z&%D=5oSpGO)Aco1VR)L-E4z^dn?~}l$BnnBNA07u)Iv!O-iHsatN_ta5Xd*l@Wzh* zAhr08>%LL~a#}WZD6n!T%?N&+w;G~DT|d-Ao!WlUpK3+q70*o_Gv8a0*}iI<;RU$5 z3Yi({CQMheDD`@-(1Gtcp++xObDWGAHnk)iD(>?VW6ju3maAo3RN~!`kqpDz0o8mw zG$R?UDxGi;o(B{rS5duq31Y_hZ}~PQC_75vm%p^0=b;;_ukuN>L_3C7!7aO%a(LD0@pGz0kiorGjabFl13zNwzh?hpvaG>{0I~{3V^oG9U zK`We3JRqQwRUo1(f*q?afz9w@hVzrypw~%CCp%BhAJppMlHZ{B#s!aWx3mWfi@9SH zKP5^yliNAv@jJ~U#t??%0&#Y;5Tlug0cHnRHN}x&YYm_^-0WeI z+~EUvp>5L|G(|zAz74 zF@#y5-k+2LgRcK7ls4Orhy*QZ1bC&;;U{kMP^J+guKf9pf_*ijyY!igEH;zPon4<| z=N-fbEw(4z|q(`%Ub?f%Vr+_3hD{ncB%)H;g7pdvS zGeFm%Enxnfk9nDi=gD34uzsbtGS*wghtK65fqH_tGRPz-FYeLub87*am|?R*ykt>D z^U1)pWLKc>#s)&yb>E)8hZ;8$e6a{o$9GmYXH$u!=3bW=az0T0lm%;~EHZOrg4kY* zCoUcTxAxkk$uUJTijAX?-Ua0VS8Wfc6C=xG9}8x-rV%?6WOnnaAbb5pps?B`j6a>N zEiB++A8<^M;?zk6=9=r(jAaC!fGK4WnIsh6E9rvUPhOW_d53;p~AzlM&!&QOa}p{BF@HcT>T@6WouNVZWzpd z51Y(SjB-yw>of2zG@%jaTwl=%U)-BK$ZweL3VzF&@;A$WqYa@4yo<05Mvvt3T@n?5+O;zg;YTWR-0GVk*<^Bj{0yk6UbuS+O{rA2eb5YsG| zK`7YWqjbiJ*Bg+k1YoJDNtZTiOh}+x*2)i9`|h9iN|E@Em7+6a*+osY1;CR zF5jy&^vAg&j6%#>K5-FcO83W8l&4hLww21>!@kC-j|e=?f4%u)y;!oTXDADeQ=bn| zn57A4-1GjM#rLLq1wSPZNNL8t0t$~P?cFaqg$w81-F4ll=uGHng^zHOF((*Bi2#%3 zF-Tb(YNBsDLdUMvHkX1c<@|VhTBKKf0%>{8jqkRi!n3S~0vjxRjbEdR4 zZ!^%bbMYJ@i5^+ROdRFF_uOP7&8Y;gnM8C1MpE|R4adfD+IL1%S4x?Iv=6p% zCV=G@@h-5VaiQ@rOYaK&xUA`--sBlx&QwuzH~YE@Ts1mo=BYr4R`tE3 z-Aah8pkqam9m_32(@%C{=v3<)p(|-MkeeGAoz$OT7dO9WT~gsEx$Z2}!tl8TBHqOt zpNs8oEt#gPREga3vnp}%XVeKze8*Gb*o<2k8-baU)@xKDD@s$nO~2gq0ueeM^3WJ6 z*2G342C+*ePv|S;eFJK3E6cCIBdWovweGtAoM2Pckb~vb=6ojUR?GQ9BA{Lp9jMoCKSRboAs1K|?{muL*=;7m%!^>>;YnbZ_$`g21qx{*-Ku44w zb&&m9nj8|Go1e>((7F}(zq|NE>Z#`Xmid7%V@w$`8kpcICifK)EGO!fu%mQ?TUqjN z9Ax)ULu|}mY%r3%jqVVb+{g})?g?IbNe7O#Lw9oTvjUE_delhz)h3m^ACgjZUS4b- zcv{{|z=K?BL_o@v%08Lx@?8fIS_Xi92!n$QQucaew%Z3{k+Wb09 z5CtXt)ecPbV}j&h;Ju+ETu_bKfhFacP1RzMl!y~23Gfx|9V88ry4z6o|7 zfHgTgy4;q4b?nh-PrN0e=w78_&@RbZDb4aT@)2E7(%k+~m%)*T99C>Suvv&yJMT?G zGjPQVObPY%QQGk4aj}!Vl%L+;tvVe#q0OrcgBLHOe;rt5GT3= zYO%vlD5NFV&?FI9vnuG@L@SlRqw5#a?SYI`#ucvNjZP-9tYjtA(e{~Al=)_)!>iT#<%+0iArr$QpwU*yzG!u3W}{A$C>phS8E!h#46tKBEc>kE zk!BN%@Z0(~`j`lwP5Y%pkh3IkjH^?Kag4_onr-Q%n9IeRtFdF&luNvv0K%|DkfPGd zQ4Q3iPL|ZZgF}Ep-Ac=2vxV3WvlDEw!wSBG+g=`>VnY(+L{bC4(glq&$+JMLRqB+H zmEyg(lu?ny8%Ray*V$MeZ}`TBv^Pm1<(%Lp#4jDqCwW-YIJZ28F|}8mW7Sti&sY1r z;27ZZf>*hPR64->nppX#1<{o2Ebl5rr;RD zg4p?>wbPOevV&#h)11oUv_~%ykZLfMex>fGe%PHe+h~Q)L(BKbOoj@lpVu%xy&{xqeL-lv}ulm|484RpdmP@I6^3*M+Y`)_OpuKtIsN8 zt6aq)-HuQJVUjgMDG^`y7NvO>YD~yYIwrFa70tz!WN`z8%!9cMvJebl;4)mJjgBg4 zH4LskUi**~_J!LQoFo{u5a+{#a<2^kr?a1|qH+h#|i4(i$*4HnN zQeVUgzSjDvJ{qH*ujrk1gwD*XfdtbSw{bA_9Tf=I%VLk$2(rTC=xgF7T=i$%=R1aM z7xNYmj6q6rMZ(}j9eOyP-q4nG*?Ik~U2UkHX(ElO^VN9kkfXWkZrO+BEgu0`XFdOt ztCyKT4hzUY%e|*MWC*#qftZNk#)euG! zzml}&fZR7*K-3WH`Gxvb-;6=oiN@nR!>5Am$CrAHL!Ag$6)jMvGN1R;U;5X4y*M}2 zHXt|p*+HSDlpuot$w9VX>o5gmM-xUwZ>5yM2{)HbzRXG?PA5ory*}y2h%Sd*vSK0w zIj{EZ_%=bfK{3z01Fe*|RCO1-HsA6hX?&pE&enRkE_pAHRvn6&E|C!?nq=c(!wWVu zC~g}%9|-2NY&r*>H(Ww`c=%;n00`dQZ&*`4Cicx$UTuOyK9wr!b}6y9G-`he{`<6Z zZ#x}xYgtF?cfpu=g7&8mCPu5a ztfvOKl{;8blxg{nudhLau@SeyAGt1}e)e(y(&r1wzozp~mB{|*N<90m5jeg0L6 zK0j6B+?=4c3Q8lRc63KQpDF%~Ms`(QBh8#4M;Y&HB!O4$mxdkha}yn?V7yBnbQ{kr zWOu-*ZF$yCBh?a|A^ZulGprk;y;D~21M+;BJU-md~$YnO7qU(9se6z+>WA?9YwBYYUVT%y2SUb zI}>6YjpkCR)ly1y@%VGOEVe7|-EQN!EBFlz04@@n!MHPw$G!+_0OO9J=(!{h?qq~z zFpcFeOp_Q)K8rhvPB<4&g0CIPF%E@bTv4?CD9P04lH537+3ehqkM;xm*-O!Nu-gBz zCV_wU@?W!>|KGDZZ^te^iHwxs;#E@jSptX8$#~$2W|0Pf-BA#-Q;>XacG-VSdj@xmE1W>V{Gnzo zU+JhcY)8fq_0wbzujlGiqRGazC{v0Ex74Iejo(CV`y^ufH_bQBXW#<#4!zn5JZ(kV z#0&xa9oU)+@3DXOQPTJl{(r1Vj$h~YZ#_ofUpl6f$;1BvBzg07ihRtvUpSMOKrWTTMxOdpum(+93y(*UY&(qQYrLs zp9tC@O#9EF-i|x(IqHGdbJ31tcS#?4I8`S&>=vbQ&RnTO)NrR0Rl|j1-)tCY6^ky2 z^nKRfYUZ_-)xh?5ZzY1YUiT~eW=F7uNB+i@)2^-mX^aPl2VAF33&umd&w@)|qb+^x zJ#%$2Kech-Z}S^*UhiM?d$RW%Lxt;PEcoj_0Ct0R_%s2uBBYc{jIAL1SDNZZ9F&Qv z`Yo&q%Cvsq;C;_#bH8sd>tAZJ;0Xbm=y`s-{n}|b|LWy&0pqc@i05*H%)3*9=@?Q{ z)eDuR@R^3uYQPK{vjcQ4o67OaG(vjmgut!=zGT2B|B zy*vX{zwLp8g<|V)!7y(BBzZ#87LB*n#dEyV^x~^6GL&39|3JH`<}N{hm`>P*Kp-1; zay%BY>{phLwJeRY+S&Er4J{Q)kMgP~kb>iG#@|jT&BQ0CtJ^qO7gKzfnS3fF)P60T z5^y9y&lWN6V5iw855YZ`&8FI80Q=msVJvFa`t~^!5VoSfq4!Vrwjr7o(CE@2()t;S z%i-{#@dwavqU7NErM%USD#y6Wd`Ux7ogd6!{JCb5%;5&BJ^^2LSYp z!2l@FJzL7%`sXls(`BUv?J=iV_~XQ`164fjNS%3(J6B9rL96pb+M@IF>OaeAL&^jkjdMYmmN zvMgZvpCY$UQoEejefhRvl%4hMV0X-NCwg*m>41j^`^M~p{#`I+RD68W+Qr)1r%wj{ z03^HRYJ@;(=ss%GP4+&6ukP}cej=TQfj5_w{7eDht#wj%@{W0D)f_fE)j%)*GZigQ zSi!HmxS$-2?>afCdh+@_PyF8Fg{JeBo!5f{^%WlW%x$jB9US)yNS2<&e$HbLAB2h% z66*IsQqx=q)Kq%$=dG5j&4ild@Z^)OIIcLs-71Eu-Z_5VLZxjUVnix1K8%=iSKo?i{quLyMwa#?L44=S zYACTyLq%r~nK0R6#b*-4nnn|CekZ|R=lN+yt-R~42}o(g-FM*^dbbCkk~7P)R6N!h zX1ff|H>LX&X}fKQW<7d8X~e{$rk==YeVGr7+b%)S@QO6iiaP(u}5 zb9!4++*zD(ml=FDrt|vC8~R&m{>lr+&=}v%c<|ZPO84cg{QUW@kEQVeqOaU+zob!v zhV9&o#GAF95~96P&sWYX%eSK-$xlVAA>32v*drkIp+yd$iLOONQbivIu_!+*TCTm# zw|{?Raqy|rtvc-1dtjBmNYQ$pIZzA#EEPq)5B`G?K<%YZ$s83ol^<`=b|JIf*DR#D zmn3tPT3n8i*n(w-7J4W(Oz|)FM@_Z(Y#>QJ>&!XbrC|K zY<~~Yl=r?oFDZgnB5_c!eOvp4%*A)DaKm{AV8EJI;V}-UuNS?koAcjW zxU9X{pKo^<8?PwrY{MiFP2e)f2d-+RyT6 zH@2n8$#Y3p&{2lyHV(|oME5VWUkjE(p2IweM>sq*GV;O96dKSh_G(VKT(rKPbK;3O zv~g;cHOi~YIV}QEEQ21qFF`MIu9%}6l|)HMYJ?% zUnvX85q|>4@@m$9v~yTL?ZS&}_dMm`J{xmcPpKtsSm(dw+_^b|_+oz!!i^8=gqt(3oL;Dr~K z_w$F&+QC`>ViCW0bP`HTOx+H4T3h|LGw2Q=_>qjnC@a z#H~NZE>xnpxQ(gxau9qQw zOC9)wgos2)mB3(^Ar-I3cx6FMiWh2ynpcW0KFcj^FB0|nz!dl_==c31QB-3A=>_tlQP8Y-jFgFQ zz-^~@c3Ug7qG5j@fYw#zZdx%)CK-Z*^b+`L+O8T0i7jhT!k9H0de$o8L%*Dr#i%K7 z$V;i?wfrik7tn}J+EG;1O^O5!7#ia|?h$1*>`6z_bgy7@w7}m?n|)%no#H-;I;e<7Mba?8gSX478;c^HU25)kv*=Jj%@g@y#1DgI zz)+*^UDR7X@D@!Q;~}|YS|f`B2W{}gS5r_HdQ0MSnW+q$p$qYIA2|;Y@B=I%PV0h5 zW|x}2^m=AW{y3B0-|^=X!N}_c;&J;Tuw|LxMKhgWf$lh6Mf`ORASSslS)wfv@vd=i z?IU#N!CnGWB}1%%8nXF3!p}aXx4yvJ?5kI0X!WY0+GTRWa(GMnviPG_R5RQUhe-Zy z)m7*i{I=?EC~n{eUajG)=@vFst=%~Yt%1@#LgHe~St%_u&!`{u^(Sn~ITnK99ZIT0 zQmYfYYNtBA*VF zQq=Db68k!VyJPy^0qOnp)filJ@Z)>BIA2x!$3nSVU9TLe4@f-JIzkH=_br2A-C(@( z&bJetH@IdfyCv(di5h}#3^?EHtC3Lol?NX(&=1NjE*i{aJl^Ys8!(C@IdHc_%pRuP zrsY`IN;kOIakUGPn|#IwPZFTi17r>5}z5Wi!#fp%I)1W38PuES<|N&!PWR4o*w^i6GxNpM8+q_i=R^;{d%W4Fbu zBg~zrbXzpktbO$v)$Z+Ga$@JsynswM=R~Cx&xrt#m3mI=2+2(7Bx7 zTjoAk7dc<7X?%hhrG<`uKv4zSOFCdxwl398$5#uE+uGHIdP5ii8 z6QEh;zy=p&5UGqlr8ggY3O|sF#yZv7*1WMnZdlSn1K5b+Lq1^D<51b}mD}W<&AI;a z?he>dB^V+Zdfi$eurK8(dyM8DaoFw#?X=jAM!?!1|F{El7`d?*23A51E7SoSf~wdl zS&{_k1Y3X0d}T!LBzS1FC7)H~?zU*voI+S$h^=ej5yX5>&in?zx5SqLsT%cBu4@AX zWQPXvXsj|SOm`WdqH?2e5u7v&UQ4bbZ@nlur34jiaAfUaa;0iCFKZqS&wc*b-w_U* z)AvB>Sz%M17Rymz6qM%hDB0d<9yWCaF4OJvau`-GAoq0`hdYzmW=|grZMl=HK!2E? zk?X^eZnP1nXFc&m+W7Dsh%%d8D<7L{1tmwHX?xrW$py~C3?+#;F8upGt85DNh9j;2 zG)^L6|Fk>YA)OoYy!e_iSYYy8qe-U}wX}s)3D|8ur!L*?c7I$+sya9ftXj4ziT)h= zdOm3GaTQVcxOkTe>OeH5O(wbE=UqZLBR%gF**YNOdlaYM+4mN}smtG$V zl2P>%Q3iZ-PJJ7Fx79lL>MR*gph@VI&*RWz$(3B86J;~-<0M&h3{;&x>??n`2hM{! zoS+XJF<`18UEvzvgn=T!otk8-j1j`B&?61v3a8z(AjVzf8zlYA&h-J~k9*7c+FoFL zt$B@x&XoRzx$EHt(nav;huSI}K)&ost9RoGVH&wfBj1op9iTLns5R2FlUsS-4oMXp zZd$Hs6^X_y7q~x|&q$)2GIcDtIavp9`g}&hi@nryk}QRohQa5$l?c`2RAMS&ln{4w zG`n~pPy|h-KO*dV#2XOO>;aNP`=7wHud~JMouGrJv!}rtZB&AxvQyZf9+*|KSYL3} zAe|Psx?Y*kN%eKkRmFn$TAF;(hQC?Oc;~r%63qO*F{}tLr!3Kh;T{8~z|1HA%xGi)0id<{VZn^|hCYM$`1?Tos%y(@W$jjTY(FW-v@yTK zH~>*0G6<}(_X|1`A}>zQT-c7i+vf`KJ1AZu<-OLKG|9GP1yX2TMvCjySEmYu9n2eD z$_F#ykc+B)3q;i$P@51f-2S;aJ*41bcM%)hvxd}QhSZxWH9Kq*ucDayv}26*KQma^ zX2CkXs4Y}{^Ksc=NL7O?{D{>wugn~auIaO7EZk!ggP_74wq`8nL71}GNAj$mN{UoO zXo8k=g~^X~!$pc2$vU2I(%S?J=qh1Ki2_i;P;@@I?i?b$k_5}+-`16}YVe7>VDC%( z8Vu?d;EfDyFzg8wl8Cqfgfe9XvEvNnD{K_RbS+(l4eP#K{B-X2fZsBXtxrQ2v%^q_!@J-SaY>VU!#~5#UMlG0x5&r|%c#6QX%|dnlF=gR^ zH4RY@7hEKPU|gqlJgWsT^(!K3CF~ct1%t`lQ>{ErU6!yfzKDAlLBThuRpUxd!4Yrb z?{BQaJ4N|*4CP6BKO6@3Z=jbX|6O^Wvbe? zFJdyWDLXX5Vrs$2f81FMU*qHe?%J(bS;>*!d=SxT+CJgZuJY?Sc{NmN+#;?@t`?6( zmj_m%4t{ewr6Fb3>ZC@pi;?9haxmwfmMw@Ivp|?xrn~?Vy!Ugu&(#WKRxq;Kxc{;J;A)XRtiVu}dJE(?aV04Bfx*#D-)F3>gpHTWTHkf_y-IP|Vf3#PY$|?PUyaKg z1?0dUos>v{nEpp>l zcN-J@2GvYyUiJMpg>alewFg}AF+G5~VQJeh@iN&HatY0BQb9#DgV6qlmBK&lIk1=V zD3e);;`9x(zwz$d@wujpOGAjifhRe6{~@_DB4aY<-JZ-|P?}T?8M_uzS}P(gczl{I zQFZD#h#^g_a5+Z7?DKM_K5|-XkW#ze7%DCayH--Qfiqs6!VGkLTDi7iyaqF$NX=-e z=@44&{$%BAAy2}(a0cS{`E0HyuuPTOs<^5y8gCQI{T2}tKXA&jiOE)N<3uU49+FWm zKo?>)i7C8J(uXUSV?-nnmSxg_D7YfSkRH(hN4rv!IcsDnIRd+~5oRp5GOmAdw(T-d zCO@I0JqW?>hvr!UIMuc<=C%0xGMu@9o19XM0Q~iI9}Z(jhu^1^R`02H{TF90gB`^< zj8Q*!6Zkgd;ho|zeq$6zsCH~I?P0+?eZjKIYK#LBzDJWi+MKoYN_&(`?h;h!hY{9M zo8+in{}`{6&hle`hWW>+rJzE;FSzM7Nz5si{wW{Z-TmJ%YGL*UZNeO4n$oV9kTp5) z-*DlxbO7Us5MJBB{57?xoB7J9mz4@?Xo3G^0>jsXB7`H?I`@A788cu zH-&z~#!Du&Mp5{W6Isr~Mq^awga8@nZK(W^!w5MVv1>QFp-C?al?{-_k`wdueTwaMPAuHkNt}_gH62UdOmpCQ zDf55J_o1;KIDtx<$`r7F{7zm3FOhI#QoOb-WY_HG`h7U?DyOVrd}OV)hPv$XGxOvl z%Fhd5@I~(i;GP$}V4okqeFehW!ouCvT+GqV(Z$pZ5X^2l@f-vG6cSEJVoLlN{^Ri@ zRgkxK_=i`8; zp8l7^{4DJU^S@|A{j0XWq5er6+kYYM2lIay_cv5FQ?@7k-#Eu^YG!QgHPmxX{C_g< z8T&8v{SEa`<^lf;^L{Y@ck}*+`X}=^{yX!YvHwEf-%$UgkMqCN_l*4)`u;?Lfnx&x z{(Du=mH6A%0Q&Lk&kO6yazB&5egNTj4ghEXp}qL!;|RZ^zsBx=pqf~JLVpY4e`S9S zoc~}`vH!&W7C-;W{u;9W!EWIEiTy2d{gwSSRQ!Ww!21*XTg3P)`)iQ)2kVCaC-%2k z?N|2K;OGywhu}}_Z!yxZ?5|PDA1pl4UxJfg;a}U$A20;#&lmV#$zQw9A0+29`SXST zpV%MW=igfc$mW^-r5F7Q|9Y+Z1J3zHGV8DCpEdt{-08n){zv#nTl)9b0D@-wi|D`5 zf3KSVnf`MpW&6)nJ3OO5JN=LF&#LqPs`@YVua~wz&Uxt<)$ISdYGn3bRsSRWvud$t z_?H6t3;p+Adq2~E_8Rz~t1kbG>VJfPR=x38)qkP?-fJx2&#F28bJcRs=+71MkMPf` zgP!4Ey#5RQ_o|zIQO)_Et3LXR>VJfPR!ze37uC-+6!eeUC3^lrd%lI$d>(@ekaRIO M7ZVXD`F8{SfBerxg#Z8m literal 16510 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 diff --git a/testData/three_wires_ribbon/three_wires_ribbon.step b/testData/three_wires_ribbon/three_wires_ribbon.step index 67e2fab..6934871 100644 --- a/testData/three_wires_ribbon/three_wires_ribbon.step +++ b/testData/three_wires_ribbon/three_wires_ribbon.step @@ -1,7 +1,7 @@ ISO-10303-21; HEADER; FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); -FILE_NAME('Open CASCADE Shape Model','2023-08-29T01:38:25',(''),(''), +FILE_NAME('Open CASCADE Shape Model','2023-09-19T20:10:34',(''),(''), 'Open CASCADE STEP processor 7.6','FreeCAD','Unknown'); FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }')); ENDSEC; @@ -17,7 +17,7 @@ DATA; #7 = PRODUCT('three_wires_ribbon','three_wires_ribbon','',(#8)); #8 = PRODUCT_CONTEXT('',#2,'mechanical'); #9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#10 = SHAPE_REPRESENTATION('',(#11,#15,#19,#23,#27,#31),#35); +#10 = SHAPE_REPRESENTATION('',(#11,#15,#19,#23,#27),#31); #11 = AXIS2_PLACEMENT_3D('',#12,#13,#14); #12 = CARTESIAN_POINT('',(0.,0.,0.)); #13 = DIRECTION('',(0.,0.,1.)); @@ -35,732 +35,602 @@ DATA; #25 = DIRECTION('',(0.,0.,1.)); #26 = DIRECTION('',(1.,0.,0.)); #27 = AXIS2_PLACEMENT_3D('',#28,#29,#30); -#28 = CARTESIAN_POINT('',(0.,0.,0.)); +#28 = CARTESIAN_POINT('',(1.27,1.E-16,0.)); #29 = DIRECTION('',(0.,0.,1.)); #30 = DIRECTION('',(1.,0.,0.)); -#31 = AXIS2_PLACEMENT_3D('',#32,#33,#34); -#32 = CARTESIAN_POINT('',(1.27,1.E-16,0.)); -#33 = DIRECTION('',(0.,0.,1.)); -#34 = DIRECTION('',(1.,0.,0.)); -#35 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#39)) GLOBAL_UNIT_ASSIGNED_CONTEXT( -(#36,#37,#38)) REPRESENTATION_CONTEXT('Context #1', +#31 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#35)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#32,#33,#34)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#36 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#37 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#38 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#39 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#36, +#32 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#33 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#34 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#35 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#32, 'distance_accuracy_value','confusion accuracy'); -#40 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); -#41 = SHAPE_DEFINITION_REPRESENTATION(#42,#48); -#42 = PRODUCT_DEFINITION_SHAPE('','',#43); -#43 = PRODUCT_DEFINITION('design','',#44,#47); -#44 = PRODUCT_DEFINITION_FORMATION('','',#45); -#45 = PRODUCT('Domain_0','Domain_0','',(#46)); -#46 = PRODUCT_CONTEXT('',#2,'mechanical'); -#47 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#48 = SHAPE_REPRESENTATION('',(#11,#49,#53,#57,#61),#65); +#36 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); +#37 = SHAPE_DEFINITION_REPRESENTATION(#38,#44); +#38 = PRODUCT_DEFINITION_SHAPE('','',#39); +#39 = PRODUCT_DEFINITION('design','',#40,#43); +#40 = PRODUCT_DEFINITION_FORMATION('','',#41); +#41 = PRODUCT('solid_wire_000','solid_wire_000','',(#42)); +#42 = PRODUCT_CONTEXT('',#2,'mechanical'); +#43 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#44 = SHAPE_REPRESENTATION('',(#11,#45,#49),#53); +#45 = AXIS2_PLACEMENT_3D('',#46,#47,#48); +#46 = CARTESIAN_POINT('',(0.,0.,0.)); +#47 = DIRECTION('',(0.,0.,1.)); +#48 = DIRECTION('',(1.,0.,0.)); #49 = AXIS2_PLACEMENT_3D('',#50,#51,#52); #50 = CARTESIAN_POINT('',(0.,0.,0.)); #51 = DIRECTION('',(0.,0.,1.)); #52 = DIRECTION('',(1.,0.,0.)); -#53 = AXIS2_PLACEMENT_3D('',#54,#55,#56); -#54 = CARTESIAN_POINT('',(0.,0.,0.)); -#55 = DIRECTION('',(0.,0.,1.)); -#56 = DIRECTION('',(1.,0.,0.)); -#57 = AXIS2_PLACEMENT_3D('',#58,#59,#60); -#58 = CARTESIAN_POINT('',(0.,0.,0.)); -#59 = DIRECTION('',(0.,0.,1.)); -#60 = DIRECTION('',(1.,0.,0.)); -#61 = AXIS2_PLACEMENT_3D('',#62,#63,#64); -#62 = CARTESIAN_POINT('',(1.27,1.E-16,0.)); -#63 = DIRECTION('',(0.,0.,1.)); -#64 = DIRECTION('',(1.,0.,0.)); -#65 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#69)) GLOBAL_UNIT_ASSIGNED_CONTEXT( -(#66,#67,#68)) REPRESENTATION_CONTEXT('Context #1', +#53 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#57)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#54,#55,#56)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#66 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#67 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#68 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#69 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#66, +#54 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#55 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#56 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#57 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#54, 'distance_accuracy_value','confusion accuracy'); -#70 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#71,#73); -#71 = ( REPRESENTATION_RELATIONSHIP('','',#48,#10) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#72) +#58 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#59,#61); +#59 = ( REPRESENTATION_RELATIONSHIP('','',#44,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#60) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#72 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); -#73 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#74); -#74 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('26','Domain_0','',#5,#43,$); -#75 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#45)); -#76 = SHAPE_DEFINITION_REPRESENTATION(#77,#83); -#77 = PRODUCT_DEFINITION_SHAPE('','',#78); -#78 = PRODUCT_DEFINITION('design','',#79,#82); -#79 = PRODUCT_DEFINITION_FORMATION('','',#80); -#80 = PRODUCT('solid_wire_000','solid_wire_000','',(#81)); -#81 = PRODUCT_CONTEXT('',#2,'mechanical'); -#82 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#83 = SHAPE_REPRESENTATION('',(#11,#84,#88),#92); -#84 = AXIS2_PLACEMENT_3D('',#85,#86,#87); -#85 = CARTESIAN_POINT('',(0.,0.,0.)); -#86 = DIRECTION('',(0.,0.,1.)); -#87 = DIRECTION('',(1.,0.,0.)); -#88 = AXIS2_PLACEMENT_3D('',#89,#90,#91); -#89 = CARTESIAN_POINT('',(0.,0.,0.)); -#90 = DIRECTION('',(0.,0.,1.)); -#91 = DIRECTION('',(1.,0.,0.)); -#92 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#96)) GLOBAL_UNIT_ASSIGNED_CONTEXT( -(#93,#94,#95)) REPRESENTATION_CONTEXT('Context #1', - '3D Context with UNIT and UNCERTAINTY') ); -#93 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#94 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#95 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#96 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#93, - 'distance_accuracy_value','confusion accuracy'); -#97 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#98,#100); -#98 = ( REPRESENTATION_RELATIONSHIP('','',#83,#48) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#99) -SHAPE_REPRESENTATION_RELATIONSHIP() ); -#99 = ITEM_DEFINED_TRANSFORMATION('','',#11,#49); -#100 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#101 - ); -#101 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('18','solid_wire_000','',#43,#78,$ - ); -#102 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#80)); -#103 = SHAPE_DEFINITION_REPRESENTATION(#104,#110); -#104 = PRODUCT_DEFINITION_SHAPE('','',#105); -#105 = PRODUCT_DEFINITION('design','',#106,#109); -#106 = PRODUCT_DEFINITION_FORMATION('','',#107); -#107 = PRODUCT('Conductor_0','Conductor_0','',(#108)); -#108 = PRODUCT_CONTEXT('',#2,'mechanical'); -#109 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#110 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#111),#138); -#111 = SHELL_BASED_SURFACE_MODEL('',(#112)); -#112 = OPEN_SHELL('',(#113)); -#113 = ADVANCED_FACE('',(#114),#127,.T.); -#114 = FACE_BOUND('',#115,.T.); -#115 = EDGE_LOOP('',(#116)); -#116 = ORIENTED_EDGE('',*,*,#117,.T.); -#117 = EDGE_CURVE('',#118,#118,#120,.T.); -#118 = VERTEX_POINT('',#119); -#119 = CARTESIAN_POINT('',(0.1905,0.,0.)); -#120 = SURFACE_CURVE('',#121,(#126),.PCURVE_S1.); -#121 = CIRCLE('',#122,0.1905); -#122 = AXIS2_PLACEMENT_3D('',#123,#124,#125); -#123 = CARTESIAN_POINT('',(0.,0.,0.)); -#124 = DIRECTION('',(0.,0.,1.)); -#125 = DIRECTION('',(1.,0.,-0.)); -#126 = PCURVE('',#127,#132); -#127 = PLANE('',#128); -#128 = AXIS2_PLACEMENT_3D('',#129,#130,#131); -#129 = CARTESIAN_POINT('',(-7.009925220121E-18,-7.665819544648E-19,0.)); -#130 = DIRECTION('',(0.,0.,1.)); -#131 = DIRECTION('',(1.,0.,-0.)); -#132 = DEFINITIONAL_REPRESENTATION('',(#133),#137); -#133 = CIRCLE('',#134,0.1905); -#134 = AXIS2_PLACEMENT_2D('',#135,#136); -#135 = CARTESIAN_POINT('',(7.009925220121E-18,7.665819544648E-19)); -#136 = DIRECTION('',(1.,0.)); -#137 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +#60 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); +#61 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#62); +#62 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('13','solid_wire_000','',#5,#39,$); +#63 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#41)); +#64 = SHAPE_DEFINITION_REPRESENTATION(#65,#71); +#65 = PRODUCT_DEFINITION_SHAPE('','',#66); +#66 = PRODUCT_DEFINITION('design','',#67,#70); +#67 = PRODUCT_DEFINITION_FORMATION('','',#68); +#68 = PRODUCT('Conductor_0','Conductor_0','',(#69)); +#69 = PRODUCT_CONTEXT('',#2,'mechanical'); +#70 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#71 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#72),#99); +#72 = SHELL_BASED_SURFACE_MODEL('',(#73)); +#73 = OPEN_SHELL('',(#74)); +#74 = ADVANCED_FACE('',(#75),#88,.T.); +#75 = FACE_BOUND('',#76,.T.); +#76 = EDGE_LOOP('',(#77)); +#77 = ORIENTED_EDGE('',*,*,#78,.T.); +#78 = EDGE_CURVE('',#79,#79,#81,.T.); +#79 = VERTEX_POINT('',#80); +#80 = CARTESIAN_POINT('',(0.1905,0.,0.)); +#81 = SURFACE_CURVE('',#82,(#87),.PCURVE_S1.); +#82 = CIRCLE('',#83,0.1905); +#83 = AXIS2_PLACEMENT_3D('',#84,#85,#86); +#84 = CARTESIAN_POINT('',(0.,0.,0.)); +#85 = DIRECTION('',(0.,0.,1.)); +#86 = DIRECTION('',(1.,0.,-0.)); +#87 = PCURVE('',#88,#93); +#88 = PLANE('',#89); +#89 = AXIS2_PLACEMENT_3D('',#90,#91,#92); +#90 = CARTESIAN_POINT('',(-7.009925220121E-18,-7.665819544648E-19,0.)); +#91 = DIRECTION('',(0.,0.,1.)); +#92 = DIRECTION('',(1.,0.,-0.)); +#93 = DEFINITIONAL_REPRESENTATION('',(#94),#98); +#94 = CIRCLE('',#95,0.1905); +#95 = AXIS2_PLACEMENT_2D('',#96,#97); +#96 = CARTESIAN_POINT('',(7.009925220121E-18,7.665819544648E-19)); +#97 = DIRECTION('',(1.,0.)); +#98 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' ) ); -#138 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#142)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#139,#140,#141)) REPRESENTATION_CONTEXT('Context #1', +#99 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#103)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#100,#101,#102)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#139 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#140 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#141 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#142 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#139, +#100 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#101 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#102 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#103 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#100, 'distance_accuracy_value','confusion accuracy'); -#143 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#144,#146); -#144 = ( REPRESENTATION_RELATIONSHIP('','',#110,#83) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#145) +#104 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#105,#107); +#105 = ( REPRESENTATION_RELATIONSHIP('','',#71,#44) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#106) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#145 = ITEM_DEFINED_TRANSFORMATION('','',#11,#84); -#146 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#147 +#106 = ITEM_DEFINED_TRANSFORMATION('','',#11,#45); +#107 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#108 ); -#147 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('16','Conductor_0','',#78,#105,$); -#148 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#107)); -#149 = SHAPE_DEFINITION_REPRESENTATION(#150,#156); -#150 = PRODUCT_DEFINITION_SHAPE('','',#151); -#151 = PRODUCT_DEFINITION('design','',#152,#155); -#152 = PRODUCT_DEFINITION_FORMATION('','',#153); -#153 = PRODUCT('Dielectric_0','Dielectric_0','',(#154)); -#154 = PRODUCT_CONTEXT('',#2,'mechanical'); -#155 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#156 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#157),#184); -#157 = SHELL_BASED_SURFACE_MODEL('',(#158)); -#158 = OPEN_SHELL('',(#159)); -#159 = ADVANCED_FACE('',(#160),#173,.T.); -#160 = FACE_BOUND('',#161,.T.); -#161 = EDGE_LOOP('',(#162)); -#162 = ORIENTED_EDGE('',*,*,#163,.T.); -#163 = EDGE_CURVE('',#164,#164,#166,.T.); -#164 = VERTEX_POINT('',#165); -#165 = CARTESIAN_POINT('',(0.4445,0.,0.)); -#166 = SURFACE_CURVE('',#167,(#172),.PCURVE_S1.); -#167 = CIRCLE('',#168,0.4445); -#168 = AXIS2_PLACEMENT_3D('',#169,#170,#171); -#169 = CARTESIAN_POINT('',(0.,0.,0.)); -#170 = DIRECTION('',(0.,0.,1.)); -#171 = DIRECTION('',(1.,0.,-0.)); -#172 = PCURVE('',#173,#178); -#173 = PLANE('',#174); -#174 = AXIS2_PLACEMENT_3D('',#175,#176,#177); -#175 = CARTESIAN_POINT('',(-1.201701466306E-17,5.888845918762E-18,0.)); -#176 = DIRECTION('',(0.,0.,1.)); -#177 = DIRECTION('',(1.,0.,-0.)); -#178 = DEFINITIONAL_REPRESENTATION('',(#179),#183); -#179 = CIRCLE('',#180,0.4445); -#180 = AXIS2_PLACEMENT_2D('',#181,#182); -#181 = CARTESIAN_POINT('',(1.201701466306E-17,-5.888845918762E-18)); -#182 = DIRECTION('',(1.,0.)); -#183 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +#108 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('11','Conductor_0','',#39,#66,$); +#109 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#68)); +#110 = SHAPE_DEFINITION_REPRESENTATION(#111,#117); +#111 = PRODUCT_DEFINITION_SHAPE('','',#112); +#112 = PRODUCT_DEFINITION('design','',#113,#116); +#113 = PRODUCT_DEFINITION_FORMATION('','',#114); +#114 = PRODUCT('Dielectric_0','Dielectric_0','',(#115)); +#115 = PRODUCT_CONTEXT('',#2,'mechanical'); +#116 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#117 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#118),#145); +#118 = SHELL_BASED_SURFACE_MODEL('',(#119)); +#119 = OPEN_SHELL('',(#120)); +#120 = ADVANCED_FACE('',(#121),#134,.T.); +#121 = FACE_BOUND('',#122,.T.); +#122 = EDGE_LOOP('',(#123)); +#123 = ORIENTED_EDGE('',*,*,#124,.T.); +#124 = EDGE_CURVE('',#125,#125,#127,.T.); +#125 = VERTEX_POINT('',#126); +#126 = CARTESIAN_POINT('',(0.4445,0.,0.)); +#127 = SURFACE_CURVE('',#128,(#133),.PCURVE_S1.); +#128 = CIRCLE('',#129,0.4445); +#129 = AXIS2_PLACEMENT_3D('',#130,#131,#132); +#130 = CARTESIAN_POINT('',(0.,0.,0.)); +#131 = DIRECTION('',(0.,0.,1.)); +#132 = DIRECTION('',(1.,0.,-0.)); +#133 = PCURVE('',#134,#139); +#134 = PLANE('',#135); +#135 = AXIS2_PLACEMENT_3D('',#136,#137,#138); +#136 = CARTESIAN_POINT('',(-1.201701466306E-17,5.888845918762E-18,0.)); +#137 = DIRECTION('',(0.,0.,1.)); +#138 = DIRECTION('',(1.,0.,-0.)); +#139 = DEFINITIONAL_REPRESENTATION('',(#140),#144); +#140 = CIRCLE('',#141,0.4445); +#141 = AXIS2_PLACEMENT_2D('',#142,#143); +#142 = CARTESIAN_POINT('',(1.201701466306E-17,-5.888845918762E-18)); +#143 = DIRECTION('',(1.,0.)); +#144 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' ) ); -#184 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#188)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#185,#186,#187)) REPRESENTATION_CONTEXT('Context #1', +#145 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#149)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#146,#147,#148)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#185 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#186 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#187 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#188 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#185, +#146 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#147 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#148 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#149 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#146, 'distance_accuracy_value','confusion accuracy'); -#189 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#190,#192); -#190 = ( REPRESENTATION_RELATIONSHIP('','',#156,#83) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#191) +#150 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#151,#153); +#151 = ( REPRESENTATION_RELATIONSHIP('','',#117,#44) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#152) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#191 = ITEM_DEFINED_TRANSFORMATION('','',#11,#88); -#192 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#193 +#152 = ITEM_DEFINED_TRANSFORMATION('','',#11,#49); +#153 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#154 ); -#193 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('17','Dielectric_0','',#78,#151,$ +#154 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('12','Dielectric_0','',#39,#112,$ ); -#194 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#153)); -#195 = SHAPE_DEFINITION_REPRESENTATION(#196,#202); -#196 = PRODUCT_DEFINITION_SHAPE('','',#197); -#197 = PRODUCT_DEFINITION('design','',#198,#201); -#198 = PRODUCT_DEFINITION_FORMATION('','',#199); -#199 = PRODUCT('solid_wire_001','solid_wire_001','',(#200)); -#200 = PRODUCT_CONTEXT('',#2,'mechanical'); -#201 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#202 = SHAPE_REPRESENTATION('',(#11,#203,#207),#211); -#203 = AXIS2_PLACEMENT_3D('',#204,#205,#206); -#204 = CARTESIAN_POINT('',(1.27,0.,0.)); -#205 = DIRECTION('',(0.,0.,1.)); -#206 = DIRECTION('',(1.,0.,0.)); -#207 = AXIS2_PLACEMENT_3D('',#208,#209,#210); -#208 = CARTESIAN_POINT('',(1.27,0.,0.)); -#209 = DIRECTION('',(0.,0.,1.)); -#210 = DIRECTION('',(1.,0.,0.)); -#211 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#215)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#212,#213,#214)) REPRESENTATION_CONTEXT('Context #1', +#155 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#114)); +#156 = SHAPE_DEFINITION_REPRESENTATION(#157,#163); +#157 = PRODUCT_DEFINITION_SHAPE('','',#158); +#158 = PRODUCT_DEFINITION('design','',#159,#162); +#159 = PRODUCT_DEFINITION_FORMATION('','',#160); +#160 = PRODUCT('solid_wire_001','solid_wire_001','',(#161)); +#161 = PRODUCT_CONTEXT('',#2,'mechanical'); +#162 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#163 = SHAPE_REPRESENTATION('',(#11,#164,#168),#172); +#164 = AXIS2_PLACEMENT_3D('',#165,#166,#167); +#165 = CARTESIAN_POINT('',(1.27,0.,0.)); +#166 = DIRECTION('',(0.,0.,1.)); +#167 = DIRECTION('',(1.,0.,0.)); +#168 = AXIS2_PLACEMENT_3D('',#169,#170,#171); +#169 = CARTESIAN_POINT('',(1.27,0.,0.)); +#170 = DIRECTION('',(0.,0.,1.)); +#171 = DIRECTION('',(1.,0.,0.)); +#172 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#176)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#173,#174,#175)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#212 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#213 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#214 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#215 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#212, +#173 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#174 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#175 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#176 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#173, 'distance_accuracy_value','confusion accuracy'); -#216 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#217,#219); -#217 = ( REPRESENTATION_RELATIONSHIP('','',#202,#48) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#218) +#177 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#178,#180); +#178 = ( REPRESENTATION_RELATIONSHIP('','',#163,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#179) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#218 = ITEM_DEFINED_TRANSFORMATION('','',#11,#53); -#219 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#220 +#179 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); +#180 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#181 ); -#220 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('21','solid_wire_001','',#43,#197, - $); -#221 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#199)); -#222 = SHAPE_DEFINITION_REPRESENTATION(#223,#229); -#223 = PRODUCT_DEFINITION_SHAPE('','',#224); -#224 = PRODUCT_DEFINITION('design','',#225,#228); -#225 = PRODUCT_DEFINITION_FORMATION('','',#226); -#226 = PRODUCT('Conductor_001','Conductor_001','',(#227)); -#227 = PRODUCT_CONTEXT('',#2,'mechanical'); -#228 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#229 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#230),#257); -#230 = SHELL_BASED_SURFACE_MODEL('',(#231)); -#231 = OPEN_SHELL('',(#232)); -#232 = ADVANCED_FACE('',(#233),#246,.T.); -#233 = FACE_BOUND('',#234,.T.); -#234 = EDGE_LOOP('',(#235)); -#235 = ORIENTED_EDGE('',*,*,#236,.T.); -#236 = EDGE_CURVE('',#237,#237,#239,.T.); -#237 = VERTEX_POINT('',#238); -#238 = CARTESIAN_POINT('',(0.1905,0.,0.)); -#239 = SURFACE_CURVE('',#240,(#245),.PCURVE_S1.); -#240 = CIRCLE('',#241,0.1905); -#241 = AXIS2_PLACEMENT_3D('',#242,#243,#244); -#242 = CARTESIAN_POINT('',(0.,0.,0.)); -#243 = DIRECTION('',(0.,0.,1.)); -#244 = DIRECTION('',(1.,0.,-0.)); -#245 = PCURVE('',#246,#251); -#246 = PLANE('',#247); -#247 = AXIS2_PLACEMENT_3D('',#248,#249,#250); -#248 = CARTESIAN_POINT('',(-7.009925220121E-18,-7.665819544648E-19,0.)); -#249 = DIRECTION('',(0.,0.,1.)); -#250 = DIRECTION('',(1.,0.,-0.)); -#251 = DEFINITIONAL_REPRESENTATION('',(#252),#256); -#252 = CIRCLE('',#253,0.1905); -#253 = AXIS2_PLACEMENT_2D('',#254,#255); -#254 = CARTESIAN_POINT('',(7.009925220121E-18,7.665819544648E-19)); -#255 = DIRECTION('',(1.,0.)); -#256 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +#181 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('16','solid_wire_001','',#5,#158,$ + ); +#182 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#160)); +#183 = SHAPE_DEFINITION_REPRESENTATION(#184,#190); +#184 = PRODUCT_DEFINITION_SHAPE('','',#185); +#185 = PRODUCT_DEFINITION('design','',#186,#189); +#186 = PRODUCT_DEFINITION_FORMATION('','',#187); +#187 = PRODUCT('Conductor_001','Conductor_001','',(#188)); +#188 = PRODUCT_CONTEXT('',#2,'mechanical'); +#189 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#190 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#191),#218); +#191 = SHELL_BASED_SURFACE_MODEL('',(#192)); +#192 = OPEN_SHELL('',(#193)); +#193 = ADVANCED_FACE('',(#194),#207,.T.); +#194 = FACE_BOUND('',#195,.T.); +#195 = EDGE_LOOP('',(#196)); +#196 = ORIENTED_EDGE('',*,*,#197,.T.); +#197 = EDGE_CURVE('',#198,#198,#200,.T.); +#198 = VERTEX_POINT('',#199); +#199 = CARTESIAN_POINT('',(0.1905,0.,0.)); +#200 = SURFACE_CURVE('',#201,(#206),.PCURVE_S1.); +#201 = CIRCLE('',#202,0.1905); +#202 = AXIS2_PLACEMENT_3D('',#203,#204,#205); +#203 = CARTESIAN_POINT('',(0.,0.,0.)); +#204 = DIRECTION('',(0.,0.,1.)); +#205 = DIRECTION('',(1.,0.,-0.)); +#206 = PCURVE('',#207,#212); +#207 = PLANE('',#208); +#208 = AXIS2_PLACEMENT_3D('',#209,#210,#211); +#209 = CARTESIAN_POINT('',(-7.009925220121E-18,-7.665819544648E-19,0.)); +#210 = DIRECTION('',(0.,0.,1.)); +#211 = DIRECTION('',(1.,0.,-0.)); +#212 = DEFINITIONAL_REPRESENTATION('',(#213),#217); +#213 = CIRCLE('',#214,0.1905); +#214 = AXIS2_PLACEMENT_2D('',#215,#216); +#215 = CARTESIAN_POINT('',(7.009925220121E-18,7.665819544648E-19)); +#216 = DIRECTION('',(1.,0.)); +#217 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' ) ); -#257 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#261)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#258,#259,#260)) REPRESENTATION_CONTEXT('Context #1', +#218 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#222)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#219,#220,#221)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#258 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#259 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#260 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#261 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#258, +#219 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#220 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#221 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#222 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#219, 'distance_accuracy_value','confusion accuracy'); -#262 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#263,#265); -#263 = ( REPRESENTATION_RELATIONSHIP('','',#229,#202) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#264) +#223 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#224,#226); +#224 = ( REPRESENTATION_RELATIONSHIP('','',#190,#163) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#225) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#264 = ITEM_DEFINED_TRANSFORMATION('','',#11,#203); -#265 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#266 +#225 = ITEM_DEFINED_TRANSFORMATION('','',#11,#164); +#226 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#227 ); -#266 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('19','Conductor_001','',#197,#224, +#227 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('14','Conductor_001','',#158,#185, $); -#267 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#226)); -#268 = SHAPE_DEFINITION_REPRESENTATION(#269,#275); -#269 = PRODUCT_DEFINITION_SHAPE('','',#270); -#270 = PRODUCT_DEFINITION('design','',#271,#274); -#271 = PRODUCT_DEFINITION_FORMATION('','',#272); -#272 = PRODUCT('Dielectric_001','Dielectric_001','',(#273)); -#273 = PRODUCT_CONTEXT('',#2,'mechanical'); -#274 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#275 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#276),#303); -#276 = SHELL_BASED_SURFACE_MODEL('',(#277)); -#277 = OPEN_SHELL('',(#278)); -#278 = ADVANCED_FACE('',(#279),#292,.T.); -#279 = FACE_BOUND('',#280,.T.); -#280 = EDGE_LOOP('',(#281)); -#281 = ORIENTED_EDGE('',*,*,#282,.T.); -#282 = EDGE_CURVE('',#283,#283,#285,.T.); -#283 = VERTEX_POINT('',#284); -#284 = CARTESIAN_POINT('',(0.4445,0.,0.)); -#285 = SURFACE_CURVE('',#286,(#291),.PCURVE_S1.); -#286 = CIRCLE('',#287,0.4445); -#287 = AXIS2_PLACEMENT_3D('',#288,#289,#290); -#288 = CARTESIAN_POINT('',(0.,0.,0.)); -#289 = DIRECTION('',(0.,0.,1.)); -#290 = DIRECTION('',(1.,0.,-0.)); -#291 = PCURVE('',#292,#297); -#292 = PLANE('',#293); -#293 = AXIS2_PLACEMENT_3D('',#294,#295,#296); -#294 = CARTESIAN_POINT('',(-1.201701466306E-17,5.888845918762E-18,0.)); -#295 = DIRECTION('',(0.,0.,1.)); -#296 = DIRECTION('',(1.,0.,-0.)); -#297 = DEFINITIONAL_REPRESENTATION('',(#298),#302); -#298 = CIRCLE('',#299,0.4445); -#299 = AXIS2_PLACEMENT_2D('',#300,#301); -#300 = CARTESIAN_POINT('',(1.201701466306E-17,-5.888845918762E-18)); -#301 = DIRECTION('',(1.,0.)); -#302 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +#228 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#187)); +#229 = SHAPE_DEFINITION_REPRESENTATION(#230,#236); +#230 = PRODUCT_DEFINITION_SHAPE('','',#231); +#231 = PRODUCT_DEFINITION('design','',#232,#235); +#232 = PRODUCT_DEFINITION_FORMATION('','',#233); +#233 = PRODUCT('Dielectric_001','Dielectric_001','',(#234)); +#234 = PRODUCT_CONTEXT('',#2,'mechanical'); +#235 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#236 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#237),#264); +#237 = SHELL_BASED_SURFACE_MODEL('',(#238)); +#238 = OPEN_SHELL('',(#239)); +#239 = ADVANCED_FACE('',(#240),#253,.T.); +#240 = FACE_BOUND('',#241,.T.); +#241 = EDGE_LOOP('',(#242)); +#242 = ORIENTED_EDGE('',*,*,#243,.T.); +#243 = EDGE_CURVE('',#244,#244,#246,.T.); +#244 = VERTEX_POINT('',#245); +#245 = CARTESIAN_POINT('',(0.4445,0.,0.)); +#246 = SURFACE_CURVE('',#247,(#252),.PCURVE_S1.); +#247 = CIRCLE('',#248,0.4445); +#248 = AXIS2_PLACEMENT_3D('',#249,#250,#251); +#249 = CARTESIAN_POINT('',(0.,0.,0.)); +#250 = DIRECTION('',(0.,0.,1.)); +#251 = DIRECTION('',(1.,0.,-0.)); +#252 = PCURVE('',#253,#258); +#253 = PLANE('',#254); +#254 = AXIS2_PLACEMENT_3D('',#255,#256,#257); +#255 = CARTESIAN_POINT('',(-1.201701466306E-17,5.888845918762E-18,0.)); +#256 = DIRECTION('',(0.,0.,1.)); +#257 = DIRECTION('',(1.,0.,-0.)); +#258 = DEFINITIONAL_REPRESENTATION('',(#259),#263); +#259 = CIRCLE('',#260,0.4445); +#260 = AXIS2_PLACEMENT_2D('',#261,#262); +#261 = CARTESIAN_POINT('',(1.201701466306E-17,-5.888845918762E-18)); +#262 = DIRECTION('',(1.,0.)); +#263 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' ) ); -#303 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#307)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#304,#305,#306)) REPRESENTATION_CONTEXT('Context #1', +#264 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#268)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#265,#266,#267)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#304 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#305 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#306 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#307 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#304, +#265 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#266 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#267 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#268 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#265, 'distance_accuracy_value','confusion accuracy'); -#308 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#309,#311); -#309 = ( REPRESENTATION_RELATIONSHIP('','',#275,#202) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#310) +#269 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#270,#272); +#270 = ( REPRESENTATION_RELATIONSHIP('','',#236,#163) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#271) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#310 = ITEM_DEFINED_TRANSFORMATION('','',#11,#207); -#311 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#312 +#271 = ITEM_DEFINED_TRANSFORMATION('','',#11,#168); +#272 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#273 ); -#312 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('20','Dielectric_001','',#197,#270 +#273 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('15','Dielectric_001','',#158,#231 ,$); -#313 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#272)); -#314 = SHAPE_DEFINITION_REPRESENTATION(#315,#321); -#315 = PRODUCT_DEFINITION_SHAPE('','',#316); -#316 = PRODUCT_DEFINITION('design','',#317,#320); -#317 = PRODUCT_DEFINITION_FORMATION('','',#318); -#318 = PRODUCT('solid_wire_002','solid_wire_002','',(#319)); -#319 = PRODUCT_CONTEXT('',#2,'mechanical'); -#320 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#321 = SHAPE_REPRESENTATION('',(#11,#322,#326),#330); -#322 = AXIS2_PLACEMENT_3D('',#323,#324,#325); -#323 = CARTESIAN_POINT('',(2.54,0.,0.)); -#324 = DIRECTION('',(0.,0.,1.)); -#325 = DIRECTION('',(1.,0.,0.)); -#326 = AXIS2_PLACEMENT_3D('',#327,#328,#329); -#327 = CARTESIAN_POINT('',(2.54,0.,0.)); -#328 = DIRECTION('',(0.,0.,1.)); -#329 = DIRECTION('',(1.,0.,0.)); -#330 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#334)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#331,#332,#333)) REPRESENTATION_CONTEXT('Context #1', +#274 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#233)); +#275 = SHAPE_DEFINITION_REPRESENTATION(#276,#282); +#276 = PRODUCT_DEFINITION_SHAPE('','',#277); +#277 = PRODUCT_DEFINITION('design','',#278,#281); +#278 = PRODUCT_DEFINITION_FORMATION('','',#279); +#279 = PRODUCT('solid_wire_002','solid_wire_002','',(#280)); +#280 = PRODUCT_CONTEXT('',#2,'mechanical'); +#281 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#282 = SHAPE_REPRESENTATION('',(#11,#283,#287),#291); +#283 = AXIS2_PLACEMENT_3D('',#284,#285,#286); +#284 = CARTESIAN_POINT('',(2.54,0.,0.)); +#285 = DIRECTION('',(0.,0.,1.)); +#286 = DIRECTION('',(1.,0.,0.)); +#287 = AXIS2_PLACEMENT_3D('',#288,#289,#290); +#288 = CARTESIAN_POINT('',(2.54,0.,0.)); +#289 = DIRECTION('',(0.,0.,1.)); +#290 = DIRECTION('',(1.,0.,0.)); +#291 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#295)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#292,#293,#294)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#331 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#332 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#333 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#334 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#331, +#292 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#293 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#294 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#295 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#292, 'distance_accuracy_value','confusion accuracy'); -#335 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#336,#338); -#336 = ( REPRESENTATION_RELATIONSHIP('','',#321,#48) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#337) +#296 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#297,#299); +#297 = ( REPRESENTATION_RELATIONSHIP('','',#282,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#298) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#337 = ITEM_DEFINED_TRANSFORMATION('','',#11,#57); -#338 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#339 +#298 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); +#299 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#300 ); -#339 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('24','solid_wire_002','',#43,#316, - $); -#340 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#318)); -#341 = SHAPE_DEFINITION_REPRESENTATION(#342,#348); -#342 = PRODUCT_DEFINITION_SHAPE('','',#343); -#343 = PRODUCT_DEFINITION('design','',#344,#347); -#344 = PRODUCT_DEFINITION_FORMATION('','',#345); -#345 = PRODUCT('Conductor_002','Conductor_002','',(#346)); -#346 = PRODUCT_CONTEXT('',#2,'mechanical'); -#347 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#348 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#349),#376); -#349 = SHELL_BASED_SURFACE_MODEL('',(#350)); -#350 = OPEN_SHELL('',(#351)); -#351 = ADVANCED_FACE('',(#352),#365,.T.); -#352 = FACE_BOUND('',#353,.T.); -#353 = EDGE_LOOP('',(#354)); -#354 = ORIENTED_EDGE('',*,*,#355,.T.); -#355 = EDGE_CURVE('',#356,#356,#358,.T.); -#356 = VERTEX_POINT('',#357); -#357 = CARTESIAN_POINT('',(0.1905,0.,0.)); -#358 = SURFACE_CURVE('',#359,(#364),.PCURVE_S1.); -#359 = CIRCLE('',#360,0.1905); -#360 = AXIS2_PLACEMENT_3D('',#361,#362,#363); -#361 = CARTESIAN_POINT('',(0.,0.,0.)); -#362 = DIRECTION('',(0.,0.,1.)); -#363 = DIRECTION('',(1.,0.,-0.)); -#364 = PCURVE('',#365,#370); -#365 = PLANE('',#366); -#366 = AXIS2_PLACEMENT_3D('',#367,#368,#369); -#367 = CARTESIAN_POINT('',(-7.009925220121E-18,-7.665819544648E-19,0.)); -#368 = DIRECTION('',(0.,0.,1.)); -#369 = DIRECTION('',(1.,0.,-0.)); -#370 = DEFINITIONAL_REPRESENTATION('',(#371),#375); -#371 = CIRCLE('',#372,0.1905); -#372 = AXIS2_PLACEMENT_2D('',#373,#374); -#373 = CARTESIAN_POINT('',(7.009925220121E-18,7.665819544648E-19)); -#374 = DIRECTION('',(1.,0.)); -#375 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +#300 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('19','solid_wire_002','',#5,#277,$ + ); +#301 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#279)); +#302 = SHAPE_DEFINITION_REPRESENTATION(#303,#309); +#303 = PRODUCT_DEFINITION_SHAPE('','',#304); +#304 = PRODUCT_DEFINITION('design','',#305,#308); +#305 = PRODUCT_DEFINITION_FORMATION('','',#306); +#306 = PRODUCT('Conductor_002','Conductor_002','',(#307)); +#307 = PRODUCT_CONTEXT('',#2,'mechanical'); +#308 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#309 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#310),#337); +#310 = SHELL_BASED_SURFACE_MODEL('',(#311)); +#311 = OPEN_SHELL('',(#312)); +#312 = ADVANCED_FACE('',(#313),#326,.T.); +#313 = FACE_BOUND('',#314,.T.); +#314 = EDGE_LOOP('',(#315)); +#315 = ORIENTED_EDGE('',*,*,#316,.T.); +#316 = EDGE_CURVE('',#317,#317,#319,.T.); +#317 = VERTEX_POINT('',#318); +#318 = CARTESIAN_POINT('',(0.1905,0.,0.)); +#319 = SURFACE_CURVE('',#320,(#325),.PCURVE_S1.); +#320 = CIRCLE('',#321,0.1905); +#321 = AXIS2_PLACEMENT_3D('',#322,#323,#324); +#322 = CARTESIAN_POINT('',(0.,0.,0.)); +#323 = DIRECTION('',(0.,0.,1.)); +#324 = DIRECTION('',(1.,0.,-0.)); +#325 = PCURVE('',#326,#331); +#326 = PLANE('',#327); +#327 = AXIS2_PLACEMENT_3D('',#328,#329,#330); +#328 = CARTESIAN_POINT('',(-7.009925220121E-18,-7.665819544648E-19,0.)); +#329 = DIRECTION('',(0.,0.,1.)); +#330 = DIRECTION('',(1.,0.,-0.)); +#331 = DEFINITIONAL_REPRESENTATION('',(#332),#336); +#332 = CIRCLE('',#333,0.1905); +#333 = AXIS2_PLACEMENT_2D('',#334,#335); +#334 = CARTESIAN_POINT('',(7.009925220121E-18,7.665819544648E-19)); +#335 = DIRECTION('',(1.,0.)); +#336 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' ) ); -#376 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#380)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#377,#378,#379)) REPRESENTATION_CONTEXT('Context #1', +#337 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#341)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#338,#339,#340)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#377 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#378 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#379 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#380 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#377, +#338 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#339 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#340 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#341 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#338, 'distance_accuracy_value','confusion accuracy'); -#381 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#382,#384); -#382 = ( REPRESENTATION_RELATIONSHIP('','',#348,#321) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#383) +#342 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#343,#345); +#343 = ( REPRESENTATION_RELATIONSHIP('','',#309,#282) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#344) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#383 = ITEM_DEFINED_TRANSFORMATION('','',#11,#322); -#384 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#385 +#344 = ITEM_DEFINED_TRANSFORMATION('','',#11,#283); +#345 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#346 ); -#385 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('22','Conductor_002','',#316,#343, +#346 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('17','Conductor_002','',#277,#304, $); -#386 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#345)); -#387 = SHAPE_DEFINITION_REPRESENTATION(#388,#394); -#388 = PRODUCT_DEFINITION_SHAPE('','',#389); -#389 = PRODUCT_DEFINITION('design','',#390,#393); -#390 = PRODUCT_DEFINITION_FORMATION('','',#391); -#391 = PRODUCT('Dielectric_002','Dielectric_002','',(#392)); -#392 = PRODUCT_CONTEXT('',#2,'mechanical'); -#393 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#394 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#395),#422); -#395 = SHELL_BASED_SURFACE_MODEL('',(#396)); -#396 = OPEN_SHELL('',(#397)); -#397 = ADVANCED_FACE('',(#398),#411,.T.); -#398 = FACE_BOUND('',#399,.T.); -#399 = EDGE_LOOP('',(#400)); -#400 = ORIENTED_EDGE('',*,*,#401,.T.); -#401 = EDGE_CURVE('',#402,#402,#404,.T.); -#402 = VERTEX_POINT('',#403); -#403 = CARTESIAN_POINT('',(0.4445,0.,0.)); -#404 = SURFACE_CURVE('',#405,(#410),.PCURVE_S1.); -#405 = CIRCLE('',#406,0.4445); -#406 = AXIS2_PLACEMENT_3D('',#407,#408,#409); -#407 = CARTESIAN_POINT('',(0.,0.,0.)); -#408 = DIRECTION('',(0.,0.,1.)); -#409 = DIRECTION('',(1.,0.,-0.)); -#410 = PCURVE('',#411,#416); -#411 = PLANE('',#412); -#412 = AXIS2_PLACEMENT_3D('',#413,#414,#415); -#413 = CARTESIAN_POINT('',(-1.201701466306E-17,5.888845918762E-18,0.)); -#414 = DIRECTION('',(0.,0.,1.)); -#415 = DIRECTION('',(1.,0.,-0.)); -#416 = DEFINITIONAL_REPRESENTATION('',(#417),#421); -#417 = CIRCLE('',#418,0.4445); -#418 = AXIS2_PLACEMENT_2D('',#419,#420); -#419 = CARTESIAN_POINT('',(1.201701466306E-17,-5.888845918762E-18)); -#420 = DIRECTION('',(1.,0.)); -#421 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +#347 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#306)); +#348 = SHAPE_DEFINITION_REPRESENTATION(#349,#355); +#349 = PRODUCT_DEFINITION_SHAPE('','',#350); +#350 = PRODUCT_DEFINITION('design','',#351,#354); +#351 = PRODUCT_DEFINITION_FORMATION('','',#352); +#352 = PRODUCT('Dielectric_002','Dielectric_002','',(#353)); +#353 = PRODUCT_CONTEXT('',#2,'mechanical'); +#354 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#355 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#356),#383); +#356 = SHELL_BASED_SURFACE_MODEL('',(#357)); +#357 = OPEN_SHELL('',(#358)); +#358 = ADVANCED_FACE('',(#359),#372,.T.); +#359 = FACE_BOUND('',#360,.T.); +#360 = EDGE_LOOP('',(#361)); +#361 = ORIENTED_EDGE('',*,*,#362,.T.); +#362 = EDGE_CURVE('',#363,#363,#365,.T.); +#363 = VERTEX_POINT('',#364); +#364 = CARTESIAN_POINT('',(0.4445,0.,0.)); +#365 = SURFACE_CURVE('',#366,(#371),.PCURVE_S1.); +#366 = CIRCLE('',#367,0.4445); +#367 = AXIS2_PLACEMENT_3D('',#368,#369,#370); +#368 = CARTESIAN_POINT('',(0.,0.,0.)); +#369 = DIRECTION('',(0.,0.,1.)); +#370 = DIRECTION('',(1.,0.,-0.)); +#371 = PCURVE('',#372,#377); +#372 = PLANE('',#373); +#373 = AXIS2_PLACEMENT_3D('',#374,#375,#376); +#374 = CARTESIAN_POINT('',(-1.201701466306E-17,5.888845918762E-18,0.)); +#375 = DIRECTION('',(0.,0.,1.)); +#376 = DIRECTION('',(1.,0.,-0.)); +#377 = DEFINITIONAL_REPRESENTATION('',(#378),#382); +#378 = CIRCLE('',#379,0.4445); +#379 = AXIS2_PLACEMENT_2D('',#380,#381); +#380 = CARTESIAN_POINT('',(1.201701466306E-17,-5.888845918762E-18)); +#381 = DIRECTION('',(1.,0.)); +#382 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' ) ); -#422 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#426)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#423,#424,#425)) REPRESENTATION_CONTEXT('Context #1', +#383 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#387)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#384,#385,#386)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#423 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#424 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#425 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#426 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#423, +#384 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#385 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#386 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#387 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#384, 'distance_accuracy_value','confusion accuracy'); -#427 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#428,#430); -#428 = ( REPRESENTATION_RELATIONSHIP('','',#394,#321) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#429) +#388 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#389,#391); +#389 = ( REPRESENTATION_RELATIONSHIP('','',#355,#282) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#390) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#429 = ITEM_DEFINED_TRANSFORMATION('','',#11,#326); -#430 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#431 +#390 = ITEM_DEFINED_TRANSFORMATION('','',#11,#287); +#391 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#392 ); -#431 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('23','Dielectric_002','',#316,#389 +#392 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('18','Dielectric_002','',#277,#350 ,$); -#432 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#391)); -#433 = SHAPE_DEFINITION_REPRESENTATION(#434,#440); -#434 = PRODUCT_DEFINITION_SHAPE('','',#435); -#435 = PRODUCT_DEFINITION('design','',#436,#439); -#436 = PRODUCT_DEFINITION_FORMATION('','',#437); -#437 = PRODUCT('OpenRegion_0','OpenRegion_0','',(#438)); -#438 = PRODUCT_CONTEXT('',#2,'mechanical'); -#439 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#440 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#441),#468); -#441 = SHELL_BASED_SURFACE_MODEL('',(#442)); -#442 = OPEN_SHELL('',(#443)); -#443 = ADVANCED_FACE('',(#444),#457,.T.); -#444 = FACE_BOUND('',#445,.T.); -#445 = EDGE_LOOP('',(#446)); -#446 = ORIENTED_EDGE('',*,*,#447,.T.); -#447 = EDGE_CURVE('',#448,#448,#450,.T.); -#448 = VERTEX_POINT('',#449); -#449 = CARTESIAN_POINT('',(200.,0.,0.)); -#450 = SURFACE_CURVE('',#451,(#456),.PCURVE_S1.); -#451 = CIRCLE('',#452,200.); -#452 = AXIS2_PLACEMENT_3D('',#453,#454,#455); -#453 = CARTESIAN_POINT('',(0.,0.,0.)); -#454 = DIRECTION('',(0.,0.,1.)); -#455 = DIRECTION('',(1.,0.,-0.)); -#456 = PCURVE('',#457,#462); -#457 = PLANE('',#458); -#458 = AXIS2_PLACEMENT_3D('',#459,#460,#461); -#459 = CARTESIAN_POINT('',(-1.40025869572E-14,-8.164311994316E-15,0.)); -#460 = DIRECTION('',(0.,0.,1.)); -#461 = DIRECTION('',(1.,0.,-0.)); -#462 = DEFINITIONAL_REPRESENTATION('',(#463),#467); -#463 = CIRCLE('',#464,200.); -#464 = AXIS2_PLACEMENT_2D('',#465,#466); -#465 = CARTESIAN_POINT('',(1.40025869572E-14,8.164311994316E-15)); -#466 = DIRECTION('',(1.,0.)); -#467 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) -PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' - ) ); -#468 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#472)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#469,#470,#471)) REPRESENTATION_CONTEXT('Context #1', - '3D Context with UNIT and UNCERTAINTY') ); -#469 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#470 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#471 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#472 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#469, - 'distance_accuracy_value','confusion accuracy'); -#473 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#474,#476); -#474 = ( REPRESENTATION_RELATIONSHIP('','',#440,#48) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#475) -SHAPE_REPRESENTATION_RELATIONSHIP() ); -#475 = ITEM_DEFINED_TRANSFORMATION('','',#11,#61); -#476 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#477 - ); -#477 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('25','OpenRegion_0','',#43,#435,$ - ); -#478 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#437)); -#479 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#480,#482); -#480 = ( REPRESENTATION_RELATIONSHIP('','',#83,#10) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#481) -SHAPE_REPRESENTATION_RELATIONSHIP() ); -#481 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); -#482 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#483 - ); -#483 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('27','solid_wire_000','',#5,#78,$ - ); -#484 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#485,#487); -#485 = ( REPRESENTATION_RELATIONSHIP('','',#202,#10) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#486) -SHAPE_REPRESENTATION_RELATIONSHIP() ); -#486 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); -#487 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#488 - ); -#488 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('28','solid_wire_001','',#5,#197,$ - ); -#489 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#490,#492); -#490 = ( REPRESENTATION_RELATIONSHIP('','',#321,#10) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#491) -SHAPE_REPRESENTATION_RELATIONSHIP() ); -#491 = ITEM_DEFINED_TRANSFORMATION('','',#11,#27); -#492 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#493 - ); -#493 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('29','solid_wire_002','',#5,#316,$ - ); -#494 = SHAPE_DEFINITION_REPRESENTATION(#495,#501); -#495 = PRODUCT_DEFINITION_SHAPE('','',#496); -#496 = PRODUCT_DEFINITION('design','',#497,#500); -#497 = PRODUCT_DEFINITION_FORMATION('','',#498); -#498 = PRODUCT('OpenRegion_0','OpenRegion_0','',(#499)); -#499 = PRODUCT_CONTEXT('',#2,'mechanical'); -#500 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#501 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#502),#529); -#502 = SHELL_BASED_SURFACE_MODEL('',(#503)); -#503 = OPEN_SHELL('',(#504)); -#504 = ADVANCED_FACE('',(#505),#518,.T.); -#505 = FACE_BOUND('',#506,.T.); -#506 = EDGE_LOOP('',(#507)); -#507 = ORIENTED_EDGE('',*,*,#508,.T.); -#508 = EDGE_CURVE('',#509,#509,#511,.T.); -#509 = VERTEX_POINT('',#510); -#510 = CARTESIAN_POINT('',(200.,0.,0.)); -#511 = SURFACE_CURVE('',#512,(#517),.PCURVE_S1.); -#512 = CIRCLE('',#513,200.); -#513 = AXIS2_PLACEMENT_3D('',#514,#515,#516); -#514 = CARTESIAN_POINT('',(0.,0.,0.)); -#515 = DIRECTION('',(0.,0.,1.)); -#516 = DIRECTION('',(1.,0.,0.)); -#517 = PCURVE('',#518,#523); -#518 = PLANE('',#519); -#519 = AXIS2_PLACEMENT_3D('',#520,#521,#522); -#520 = CARTESIAN_POINT('',(-1.40025869572E-14,-8.164311994316E-15,0.)); -#521 = DIRECTION('',(0.,0.,1.)); -#522 = DIRECTION('',(1.,0.,0.)); -#523 = DEFINITIONAL_REPRESENTATION('',(#524),#528); -#524 = CIRCLE('',#525,200.); -#525 = AXIS2_PLACEMENT_2D('',#526,#527); -#526 = CARTESIAN_POINT('',(1.40025869572E-14,8.164311994316E-15)); -#527 = DIRECTION('',(1.,0.)); -#528 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +#393 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#352)); +#394 = SHAPE_DEFINITION_REPRESENTATION(#395,#401); +#395 = PRODUCT_DEFINITION_SHAPE('','',#396); +#396 = PRODUCT_DEFINITION('design','',#397,#400); +#397 = PRODUCT_DEFINITION_FORMATION('','',#398); +#398 = PRODUCT('OpenRegion_0','OpenRegion_0','',(#399)); +#399 = PRODUCT_CONTEXT('',#2,'mechanical'); +#400 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#401 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#402),#429); +#402 = SHELL_BASED_SURFACE_MODEL('',(#403)); +#403 = OPEN_SHELL('',(#404)); +#404 = ADVANCED_FACE('',(#405),#418,.T.); +#405 = FACE_BOUND('',#406,.T.); +#406 = EDGE_LOOP('',(#407)); +#407 = ORIENTED_EDGE('',*,*,#408,.T.); +#408 = EDGE_CURVE('',#409,#409,#411,.T.); +#409 = VERTEX_POINT('',#410); +#410 = CARTESIAN_POINT('',(150.,0.,0.)); +#411 = SURFACE_CURVE('',#412,(#417),.PCURVE_S1.); +#412 = CIRCLE('',#413,150.); +#413 = AXIS2_PLACEMENT_3D('',#414,#415,#416); +#414 = CARTESIAN_POINT('',(0.,0.,0.)); +#415 = DIRECTION('',(0.,0.,1.)); +#416 = DIRECTION('',(1.,0.,0.)); +#417 = PCURVE('',#418,#423); +#418 = PLANE('',#419); +#419 = AXIS2_PLACEMENT_3D('',#420,#421,#422); +#420 = CARTESIAN_POINT('',(-2.333764492867E-14,3.211823975732E-15,0.)); +#421 = DIRECTION('',(0.,0.,1.)); +#422 = DIRECTION('',(1.,0.,0.)); +#423 = DEFINITIONAL_REPRESENTATION('',(#424),#428); +#424 = CIRCLE('',#425,150.); +#425 = AXIS2_PLACEMENT_2D('',#426,#427); +#426 = CARTESIAN_POINT('',(2.333764492867E-14,-3.211823975732E-15)); +#427 = DIRECTION('',(1.,0.)); +#428 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' ) ); -#529 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#533)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#530,#531,#532)) REPRESENTATION_CONTEXT('Context #1', +#429 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#433)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#430,#431,#432)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#530 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#531 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#532 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#533 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#530, +#430 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#431 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#432 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#433 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#430, 'distance_accuracy_value','confusion accuracy'); -#534 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#535,#537); -#535 = ( REPRESENTATION_RELATIONSHIP('','',#501,#10) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#536) +#434 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#435,#437); +#435 = ( REPRESENTATION_RELATIONSHIP('','',#401,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#436) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#536 = ITEM_DEFINED_TRANSFORMATION('','',#11,#31); -#537 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#538 +#436 = ITEM_DEFINED_TRANSFORMATION('','',#11,#27); +#437 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#438 ); -#538 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('30','OpenRegion_0','',#5,#496,$); -#539 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#498)); -#540 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#541) - ,#376); -#541 = STYLED_ITEM('color',(#542),#351); -#542 = PRESENTATION_STYLE_ASSIGNMENT((#543,#549)); -#543 = SURFACE_STYLE_USAGE(.BOTH.,#544); -#544 = SURFACE_SIDE_STYLE('',(#545)); -#545 = SURFACE_STYLE_FILL_AREA(#546); -#546 = FILL_AREA_STYLE('',(#547)); -#547 = FILL_AREA_STYLE_COLOUR('',#548); -#548 = COLOUR_RGB('',1.,0.333333345507,0.); -#549 = CURVE_STYLE('',#550,POSITIVE_LENGTH_MEASURE(0.1),#551); -#550 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#551 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, +#438 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('20','OpenRegion_0','',#5,#396,$); +#439 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#398)); +#440 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#441) + ,#145); +#441 = STYLED_ITEM('color',(#442),#120); +#442 = PRESENTATION_STYLE_ASSIGNMENT((#443,#451)); +#443 = SURFACE_STYLE_USAGE(.BOTH.,#444); +#444 = SURFACE_SIDE_STYLE('',(#445,#449)); +#445 = SURFACE_STYLE_FILL_AREA(#446); +#446 = FILL_AREA_STYLE('',(#447)); +#447 = FILL_AREA_STYLE_COLOUR('',#448); +#448 = DRAUGHTING_PRE_DEFINED_COLOUR('red'); +#449 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#448,( + #450)); +#450 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#451 = CURVE_STYLE('',#452,POSITIVE_LENGTH_MEASURE(0.1),#453); +#452 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#453 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, 9.803921802644E-02); -#552 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#553) - ,#138); -#553 = STYLED_ITEM('color',(#554),#113); -#554 = PRESENTATION_STYLE_ASSIGNMENT((#555,#560)); -#555 = SURFACE_STYLE_USAGE(.BOTH.,#556); -#556 = SURFACE_SIDE_STYLE('',(#557)); -#557 = SURFACE_STYLE_FILL_AREA(#558); -#558 = FILL_AREA_STYLE('',(#559)); -#559 = FILL_AREA_STYLE_COLOUR('',#548); -#560 = CURVE_STYLE('',#561,POSITIVE_LENGTH_MEASURE(0.1),#551); -#561 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#562 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#563) - ,#303); -#563 = STYLED_ITEM('color',(#564),#278); -#564 = PRESENTATION_STYLE_ASSIGNMENT((#565,#573)); -#565 = SURFACE_STYLE_USAGE(.BOTH.,#566); -#566 = SURFACE_SIDE_STYLE('',(#567,#571)); -#567 = SURFACE_STYLE_FILL_AREA(#568); -#568 = FILL_AREA_STYLE('',(#569)); -#569 = FILL_AREA_STYLE_COLOUR('',#570); -#570 = DRAUGHTING_PRE_DEFINED_COLOUR('red'); -#571 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#570,( - #572)); -#572 = SURFACE_STYLE_TRANSPARENT(0.899999976158); -#573 = CURVE_STYLE('',#574,POSITIVE_LENGTH_MEASURE(0.1),#551); -#574 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#575 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#576) - ,#468); -#576 = STYLED_ITEM('color',(#577),#443); -#577 = PRESENTATION_STYLE_ASSIGNMENT((#578,#584)); -#578 = SURFACE_STYLE_USAGE(.BOTH.,#579); -#579 = SURFACE_SIDE_STYLE('',(#580)); -#580 = SURFACE_STYLE_FILL_AREA(#581); -#581 = FILL_AREA_STYLE('',(#582)); -#582 = FILL_AREA_STYLE_COLOUR('',#583); -#583 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); -#584 = CURVE_STYLE('',#585,POSITIVE_LENGTH_MEASURE(0.1),#551); -#585 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#586 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#587) - ,#422); -#587 = STYLED_ITEM('color',(#588),#397); -#588 = PRESENTATION_STYLE_ASSIGNMENT((#589,#596)); -#589 = SURFACE_STYLE_USAGE(.BOTH.,#590); -#590 = SURFACE_SIDE_STYLE('',(#591,#594)); -#591 = SURFACE_STYLE_FILL_AREA(#592); -#592 = FILL_AREA_STYLE('',(#593)); -#593 = FILL_AREA_STYLE_COLOUR('',#570); -#594 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#570,( - #595)); -#595 = SURFACE_STYLE_TRANSPARENT(0.899999976158); -#596 = CURVE_STYLE('',#597,POSITIVE_LENGTH_MEASURE(0.1),#551); -#597 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#598 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#599) - ,#184); -#599 = STYLED_ITEM('color',(#600),#159); -#600 = PRESENTATION_STYLE_ASSIGNMENT((#601,#608)); -#601 = SURFACE_STYLE_USAGE(.BOTH.,#602); -#602 = SURFACE_SIDE_STYLE('',(#603,#606)); -#603 = SURFACE_STYLE_FILL_AREA(#604); -#604 = FILL_AREA_STYLE('',(#605)); -#605 = FILL_AREA_STYLE_COLOUR('',#570); -#606 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#570,( - #607)); -#607 = SURFACE_STYLE_TRANSPARENT(0.899999976158); -#608 = CURVE_STYLE('',#609,POSITIVE_LENGTH_MEASURE(0.1),#551); -#609 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#610 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#611) - ,#257); -#611 = STYLED_ITEM('color',(#612),#232); -#612 = PRESENTATION_STYLE_ASSIGNMENT((#613,#618)); -#613 = SURFACE_STYLE_USAGE(.BOTH.,#614); -#614 = SURFACE_SIDE_STYLE('',(#615)); -#615 = SURFACE_STYLE_FILL_AREA(#616); -#616 = FILL_AREA_STYLE('',(#617)); -#617 = FILL_AREA_STYLE_COLOUR('',#548); -#618 = CURVE_STYLE('',#619,POSITIVE_LENGTH_MEASURE(0.1),#551); -#619 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#454 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#455) + ,#337); +#455 = STYLED_ITEM('color',(#456),#312); +#456 = PRESENTATION_STYLE_ASSIGNMENT((#457,#463)); +#457 = SURFACE_STYLE_USAGE(.BOTH.,#458); +#458 = SURFACE_SIDE_STYLE('',(#459)); +#459 = SURFACE_STYLE_FILL_AREA(#460); +#460 = FILL_AREA_STYLE('',(#461)); +#461 = FILL_AREA_STYLE_COLOUR('',#462); +#462 = COLOUR_RGB('',1.,0.333333345507,0.); +#463 = CURVE_STYLE('',#464,POSITIVE_LENGTH_MEASURE(0.1),#453); +#464 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#465 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#466) + ,#264); +#466 = STYLED_ITEM('color',(#467),#239); +#467 = PRESENTATION_STYLE_ASSIGNMENT((#468,#475)); +#468 = SURFACE_STYLE_USAGE(.BOTH.,#469); +#469 = SURFACE_SIDE_STYLE('',(#470,#473)); +#470 = SURFACE_STYLE_FILL_AREA(#471); +#471 = FILL_AREA_STYLE('',(#472)); +#472 = FILL_AREA_STYLE_COLOUR('',#448); +#473 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#448,( + #474)); +#474 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#475 = CURVE_STYLE('',#476,POSITIVE_LENGTH_MEASURE(0.1),#453); +#476 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#477 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#478) + ,#383); +#478 = STYLED_ITEM('color',(#479),#358); +#479 = PRESENTATION_STYLE_ASSIGNMENT((#480,#487)); +#480 = SURFACE_STYLE_USAGE(.BOTH.,#481); +#481 = SURFACE_SIDE_STYLE('',(#482,#485)); +#482 = SURFACE_STYLE_FILL_AREA(#483); +#483 = FILL_AREA_STYLE('',(#484)); +#484 = FILL_AREA_STYLE_COLOUR('',#448); +#485 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#448,( + #486)); +#486 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#487 = CURVE_STYLE('',#488,POSITIVE_LENGTH_MEASURE(0.1),#453); +#488 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#489 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#490) + ,#99); +#490 = STYLED_ITEM('color',(#491),#74); +#491 = PRESENTATION_STYLE_ASSIGNMENT((#492,#497)); +#492 = SURFACE_STYLE_USAGE(.BOTH.,#493); +#493 = SURFACE_SIDE_STYLE('',(#494)); +#494 = SURFACE_STYLE_FILL_AREA(#495); +#495 = FILL_AREA_STYLE('',(#496)); +#496 = FILL_AREA_STYLE_COLOUR('',#462); +#497 = CURVE_STYLE('',#498,POSITIVE_LENGTH_MEASURE(0.1),#453); +#498 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#499 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#500) + ,#429); +#500 = STYLED_ITEM('color',(#501),#404); +#501 = PRESENTATION_STYLE_ASSIGNMENT((#502,#508)); +#502 = SURFACE_STYLE_USAGE(.BOTH.,#503); +#503 = SURFACE_SIDE_STYLE('',(#504)); +#504 = SURFACE_STYLE_FILL_AREA(#505); +#505 = FILL_AREA_STYLE('',(#506)); +#506 = FILL_AREA_STYLE_COLOUR('',#507); +#507 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); +#508 = CURVE_STYLE('',#509,POSITIVE_LENGTH_MEASURE(0.1),#453); +#509 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#510 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#511) + ,#218); +#511 = STYLED_ITEM('color',(#512),#193); +#512 = PRESENTATION_STYLE_ASSIGNMENT((#513,#518)); +#513 = SURFACE_STYLE_USAGE(.BOTH.,#514); +#514 = SURFACE_SIDE_STYLE('',(#515)); +#515 = SURFACE_STYLE_FILL_AREA(#516); +#516 = FILL_AREA_STYLE('',(#517)); +#517 = FILL_AREA_STYLE_COLOUR('',#462); +#518 = CURVE_STYLE('',#519,POSITIVE_LENGTH_MEASURE(0.1),#453); +#519 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); ENDSEC; END-ISO-10303-21; From 58b1724e798210b01281668c7eb84a123526f88d Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Tue, 26 Sep 2023 08:34:40 +0200 Subject: [PATCH 039/134] Removal of entities not in physical group is now recursive --- src/mesher.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/mesher.py b/src/mesher.py index 6dae757..716ac8b 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -5,7 +5,7 @@ DEFAULT_MESHING_OPTIONS = { - "Mesh.MshFileVersion": 2.2, + "Mesh.MshFileVersion": 2.2, # Mandatory for MFEM compatibility "Mesh.MeshSizeFromCurvature": 40, "Mesh.ElementOrder": 3, "Mesh.ScalingFactor": 1e-3, @@ -13,6 +13,7 @@ "Mesh.MeshSizeMax": 50, "General.DrawBoundingBoxes": 1, + "General.Axes": 1, "Geometry.SurfaceType": 2, # Diplay surfaces as solids rather than dashed lines. # "Geometry.OCCBoundsUseStl": 1, @@ -194,7 +195,7 @@ def meshFromStep( entsInPG.append((pG[0], ent)) entsNotInPG = [x for x in allEnts if x not in entsInPG] - gmsh.model.remove_entities(entsNotInPG) + gmsh.model.remove_entities(entsNotInPG, recursive=True) # Meshing. for [opt, val] in meshing_options.items(): From e1ca7bcba367c8b7f38feb289555077ef07b0ad8 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Tue, 26 Sep 2023 09:39:14 +0200 Subject: [PATCH 040/134] Boundaries are now ensured to be part of vacuum manifold. --- src/mesher.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/mesher.py b/src/mesher.py index 716ac8b..244482b 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -6,7 +6,7 @@ DEFAULT_MESHING_OPTIONS = { "Mesh.MshFileVersion": 2.2, # Mandatory for MFEM compatibility - "Mesh.MeshSizeFromCurvature": 40, + "Mesh.MeshSizeFromCurvature": 50, "Mesh.ElementOrder": 3, "Mesh.ScalingFactor": 1e-3, "Mesh.SurfaceFaces": 1, @@ -156,12 +156,18 @@ def meshFromStep( overlapping = gmsh.model.occ.intersect( open_bdrs[0], pec_bdr, removeObject=False, removeTool=False)[0] if len(overlapping) > 0: - pec_bdrs[num] = overlapping + frag = gmsh.model.occ.fragment( + overlapping, vacuumDomain, removeObject=True, removeTool=False)[0] + pec_bdrs[num] = [x for x in frag if x[0] == 1] + vacuumDomain = [x for x in frag if x[0] == 2] gmsh.model.occ.synchronize() toRemove = [x for bdrs in pec_bdrs.values() for x in bdrs] newOpenBdr = gmsh.model.occ.cut(open_bdrs[0], toRemove, removeObject=False, removeTool=False)[0] - open_bdrs[0] = newOpenBdr + frag = gmsh.model.occ.fragment( + newOpenBdr, vacuumDomain, removeObject=True, removeTool=False)[0] + open_bdrs[0] = [x for x in frag if x[0] == 1] + vacuumDomain = [x for x in frag if x[0] == 2] gmsh.model.occ.synchronize() From 12aa10d94873611748d23963bbdd292647644d24 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Tue, 26 Sep 2023 22:42:43 +0200 Subject: [PATCH 041/134] Minor in actions --- .github/workflows/tests.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index b30c408..38aea01 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -32,8 +32,6 @@ jobs: - name: Checkout uses: actions/checkout@v3 - with: - ssh-key: ${{secrets.STEP2GMSH_SSH_KEY}} - name: Setup python uses: actions/setup-python@v4 From af2b85f49c85e04d62ee0440900a3a95ba4cc4ac Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Wed, 18 Oct 2023 12:34:10 +0200 Subject: [PATCH 042/134] Minor changes in names --- test/test_mesher.py | 46 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/test/test_mesher.py b/test/test_mesher.py index f6960ee..b90e86b 100644 --- a/test/test_mesher.py +++ b/test/test_mesher.py @@ -34,7 +34,7 @@ def test_partially_filled_coax(): runStepToGmsh(testdata_path, 'partially_filled_coax') -def test_meshFromStep_with_partially_filled_coax(): +def test_partially_filled_coax_meshFromStep(): gmsh.initialize() meshFromStep(testdata_path, 'partially_filled_coax') @@ -60,7 +60,7 @@ def test_empty_coax(): runStepToGmsh(testdata_path, 'empty_coax') -def test_meshFromStep_with_empty_coax(): +def test_empty_coax_meshFromStep(): gmsh.initialize() meshFromStep(testdata_path, 'empty_coax') @@ -85,7 +85,7 @@ def test_two_wires_open(): runStepToGmsh(testdata_path, 'two_wires_open') -def test_meshFromStep_with_two_wires_coax(): +def test_two_wires_coax_meshFromStep(): gmsh.initialize() meshFromStep(testdata_path, 'two_wires_coax') @@ -111,7 +111,7 @@ def test_five_wires(): runStepToGmsh(testdata_path, 'five_wires') -def test_meshFromStep_with_five_wires(): +def test_five_wires_meshFromStep(): gmsh.initialize() meshFromStep(testdata_path, 'five_wires') @@ -164,7 +164,39 @@ def test_agrawal1981(): runStepToGmsh(testdata_path, 'agrawal1981') -def test_stepShapes_for_partially_filled_coax(): +def test_agrawal1981_meshFromStep(): + gmsh.initialize() + + meshFromStep(testdata_path, 'agrawal1981') + + pGs = gmsh.model.getPhysicalGroups() + pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] + + assert ('Conductor_0' in pGNames) + assert ('Conductor_1' in pGNames) + assert ('Conductor_2' in pGNames) + assert ('Conductor_3' in pGNames) + assert ('OpenRegion_0' in pGNames) + assert ('Dielectric_1' in pGNames) + assert ('Dielectric_2' in pGNames) + assert ('Dielectric_3' in pGNames) + assert ('Vacuum' in pGNames) + + assert (countEntitiesInPhysicalGroupWithName('Conductor_0') == 1) + assert (countEntitiesInPhysicalGroupWithName('Conductor_1') == 1) + assert (countEntitiesInPhysicalGroupWithName('Conductor_2') == 1) + assert (countEntitiesInPhysicalGroupWithName('Conductor_3') == 1) + assert (countEntitiesInPhysicalGroupWithName('OpenRegion_0') == 1) + assert (countEntitiesInPhysicalGroupWithName('Dielectric_1') == 1) + assert (countEntitiesInPhysicalGroupWithName('Dielectric_2') == 1) + assert (countEntitiesInPhysicalGroupWithName('Dielectric_3') == 1) + assert (countEntitiesInPhysicalGroupWithName('Vacuum') == 1) + + gmsh.fltk.run() # for debugging only. + gmsh.finalize() + + +def test_partially_filled_coax_stepShapes(): case_name = 'partially_filled_coax' gmsh.initialize() @@ -181,7 +213,7 @@ def test_stepShapes_for_partially_filled_coax(): assert (len(stepShapes.dielectrics) == 1) -def test_stepShapes_for_five_wires(): +def test_five_wires_stepShapes(): case_name = 'five_wires' gmsh.initialize() @@ -198,7 +230,7 @@ def test_stepShapes_for_five_wires(): assert (len(stepShapes.dielectrics) == 5) -def test_stepShapes_for_three_wires_ribbon(): +def test_three_wires_ribbon_stepShapes(): case_name = 'three_wires_ribbon' gmsh.initialize() From 365a8d8668e1e5f55f766328d61849d3b01f7937 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Fri, 20 Oct 2023 18:17:52 +0200 Subject: [PATCH 043/134] Fix issue w/ open boundaries in semi-open case --- src/mesher.py | 11 +-- test/test_mesher.py | 4 +- testData/two_wires_open/two_wires_open.FCStd | Bin 5861 -> 5860 bytes testData/two_wires_open/two_wires_open.step | 84 +++++++++---------- 4 files changed, 46 insertions(+), 53 deletions(-) diff --git a/src/mesher.py b/src/mesher.py index 244482b..28ec1c0 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -1,5 +1,4 @@ import gmsh -import sys from collections import defaultdict from itertools import chain @@ -162,14 +161,8 @@ def meshFromStep( vacuumDomain = [x for x in frag if x[0] == 2] gmsh.model.occ.synchronize() - toRemove = [x for bdrs in pec_bdrs.values() for x in bdrs] - newOpenBdr = gmsh.model.occ.cut(open_bdrs[0], toRemove, removeObject=False, removeTool=False)[0] - frag = gmsh.model.occ.fragment( - newOpenBdr, vacuumDomain, removeObject=True, removeTool=False)[0] - open_bdrs[0] = [x for x in frag if x[0] == 1] - vacuumDomain = [x for x in frag if x[0] == 2] - gmsh.model.occ.synchronize() - + open_bdrs[0] = [x for x in gmsh.model.getBoundary(vacuumDomain) if x[1] > 0] + open_bdrs[0] = [x for x in open_bdrs[0] if x not in pec_bdrs[0]] # --- Physical groups --- # Adds boundaries. diff --git a/test/test_mesher.py b/test/test_mesher.py index b90e86b..4eda95d 100644 --- a/test/test_mesher.py +++ b/test/test_mesher.py @@ -190,9 +190,9 @@ def test_agrawal1981_meshFromStep(): assert (countEntitiesInPhysicalGroupWithName('Dielectric_1') == 1) assert (countEntitiesInPhysicalGroupWithName('Dielectric_2') == 1) assert (countEntitiesInPhysicalGroupWithName('Dielectric_3') == 1) - assert (countEntitiesInPhysicalGroupWithName('Vacuum') == 1) + assert (countEntitiesInPhysicalGroupWithName('Vacuum') == 2) - gmsh.fltk.run() # for debugging only. + # gmsh.fltk.run() # for debugging only. gmsh.finalize() diff --git a/testData/two_wires_open/two_wires_open.FCStd b/testData/two_wires_open/two_wires_open.FCStd index 90457aa044fab4b70795d522878ce5d0522d0619..819789f493a59f08b70c8cc399a383cb37b055fa 100644 GIT binary patch delta 4243 zcmZu!byU<{w;q}q2Y~^Gk_PFN?hd7tW(Wt64h1Ac_|Xg?IfT;P-JQ}%H=?KvA^8d_ zq3|j1eZTv9*F9^Uv(H)Q+0WX~I)6N8V|X`sVY>HlaLGX+5FuzLLEp&U$^@AJ;{<|& zAa|0%Bd%q`)=EMVtp((WK+%WoHWHyfzpgepTg%&m>>kvMY{mzEb!;?Uvjh@#WV-ypSd0ymzNKrTAH?Wz28dRJS$m{z5KDWz0qvCPiQWnIH7$}a=85AMavHs2%!Sm z#Lt{n`|+*gb3(_ZrBXlV7pnA1cj5q2W%Ef;7|FdB4heJUxMm&i#k-E+6rwOt-#aBr>&0^FM)!Nh(N@{I8e&VnT(9y+fL7 zQaP9v75@+)dg`=4@WEP9)4$;VtSAR)~?iPql%l9lQ=3AT&!H$I3t8Qz0AkCo&g-v3@mV8+6$wpL?RNP=CF z_SrpoPXUeg;|47`_EMk=1Y$#NZ|*Qy^-qlF5Pv3noL6His*n9VX-F|oNS{!*U^dHL z^_2`BdqRVu5k7xOW!Xv>(Mcr{th{aD1r98v`Io22F-`N#49=>W=BoyN?&j9_{p)_Z z+9hX{9NswlQ?82Ov1@Q@QG8;40RjhaE@ra!b1_*ADM3TgsLQ+Xvi7#T-!d^eS$G1hV@d}B(S#v^XK0uTcB_)I} zfqX#Fbl#F^5X5g5^z|FuJ1lzyujMb^d8D5O|nQhVfXB=Ve{qdA9WMYsm{BGHmKD-)$c&F@r5}WO3jiF^B2u9?mb_*iMGiy zAMm}0mNy{A-j2i_&{B(?-A*`*mTAdsMlA!$QEkTbrk8tjVMUASm2eU`?;GJXI`O)h zQP++nixT@AM**Dk_ov~cNWFyyt`+Quqt%)SPcLinN$Ewf%Ry~a<5JFR?u9%nUiTMs z8Uv<3$|_W}+zhukFkc#@nn|`Q4to&W=}o4IdA?2yiskmvSG+D*TMsB)esRvb+yE3- z3>#D~12j|+6}OPZ{5Cw6RVA(nRDbMOF^z_erh#`2Dh{xwHs^#i=cmhgZO*mvHoi`W z{06DKhHg7o9jUxr3wb>BrN+@wjl&0~+Z0ZJq3hv0^U>RQFrTrugf82kJKJ)9THnp_ zzE_l3Adn|62vpBYAcTeU%Mk0W2xYOrznxJk9a2kND0|XPI)_nud&B=GPPSpkGiV%-4itISVFK95czS5<=Gk0qS1 z4|Kl@Szd9N?4(TOUQzO_GVYiV^%K>}jQ-C)n)k%V-Is5G@7l3D-qLlLMA6rLG zVZ2mo+=JjetPXP|nC@kf?_*EgJ)xWSpP$);@y}ewGzA6pf1Ec!g%~rQuAgBAFEU;_ z$C~bBQzlhRinkYd^syUT3ESRhj8J7Sj9cA<<$|h*r>OJ}&R^H%u)sW6k8_dx!cnx? zTk(%IB8N{`hVUh~?gCt=?;I>I-gu?E&RnYY3VjjGjt|o@E5ybb(IO0f(RZ|5-;hnD zd-hsh(TX~9Kh+TGZ5gsC+Yd9hlEc2~^?uLfEH$BweX%6@YhnrCcOJi_yBDye64gt# zcCMsjHtPVeAce_o4E9CvT(XlQpM!J|q%f*c$Tlec)~tLAi2zWnR{lgpd)tZ>EMzPD zDGWBGqg~3uvMa)Cs>={AGt{x^qfJ-oWWtR}Fmm<|KK zISC6LjH<~XCHpF;`7;<#q3`s{(|NDEA?-yLV6qWuCF!4aO#3S?y9IWL#)xmGgQQzN zvn?@uwbc%6QNSvK2V6|mVcDzyR<>hSRjAQci^SqhA{*YEwD5Un*C)?5!}s#XbnHUH zO=)V(tW~CZGq>RtHr!meotmoVymsn7!l2SHQ_b;C6>R#De5f)?qT+-$r(0t>a8P!t z^@P69ay2IUf=}G;13?_FUY?Si5r}y-VdkR) zcNAj0m9sNY&7o=h3O`tE6?@QC!?$LcDV!E)7kh zS{OHQi`@l0FNu1~`n=xHFW0zAYCzOO1*lm!+|=l4QG#O4LZHm16lV(+(Pq)q#Ru<6 z*x*!(08{4}b}E^P1#9XZrqTL1MXH4_CmvC$JUszt{PB%7_r{b32ypnzbJ)O)iAQn} z4U}b9avZn)NdL^&w$9m^y;=OjF|n5hue@Z9%^em%hw};Qn06<=ErM0j*%i8bjq?&#n zT^y7SEw}}H4EKp8ce(U2e(dl~bKywZ1ztR+bZ2DicreR3c!O*E#koHGVqEQraWM<8 zC)}k&+3{Efwee8%sczWWffD5 zcJr)bzlV9tU&xT^mN^V8Ch?STwTYDLjDEanuG7Y9$>Z}SG zQ&q_=l1K|1?V%An&@Dl<6>y7``F^hk&kq~9mF$+zAj$_H6Hp92c1qC)yoY+`{0P`i zppbZ_xVD{s064F8`5CNhrZps<;Xl|9{r@rAgK>o-koA+h(Pbb&aOPRc?F@=dp>y=oKjG8#$2j!K1{9;bBIpo`q zb>L6)qPDS`BDn5YK_KX_sO(^C`_$u+lAE)eyR{7{$lwa=j|B8Oso-xfN0Y;ZuC1Jc zn1m35)`8JbJbZZSu{ll+`V;R56S~IN!0uc}4Hz97hYWVT_k%H@#mLD1=bjPmLPkOO zPveY^BKteBn@s!~a84%iufKyd`5lJe(BI~pjt>H*Xo5h*zv};IGz2Z6W69~SG5=TN z|6;PxW8}2g>^tPNOp~M_kfwv{-{KYA-I2b!_pq?ZLI3UO(U}yqSU6|}iobcUrT-!$ z{56UGA^jB_g2d4Q6t}KarDbfaEO#Hc}n5TZu!Mu}*HC_$o)8ojq6+DM2#N)SYk zE)hl-2{8!yCAsgu^}BDqch=f#uXFZyzP-=+XMg8>f~~E4Unqqjz%H^JuLb4!LwR%8l#Yjg(SOsn@^ zC=WQ~S+aT`-pJ51FGE*OO&Q$e9Kuyd?&eVh-Pz6#x$r@KGpqIsuVLe1C0vs7thPdM zUND|SK^6HB2Mtk2uwOf51vCi(A4Z5~n8T-9;3 zQwX7v&SzC*P*IhO;m{;NB3%;*)(%G@tK#8ubw7d#j9m+qVtW=t#kjfMrW%}Nl)&xA znl0olw<(`aMZ)CzDiYX_dLUM86NEZ{Lq!1xlHKs_F$3zDviC=g0uo!cx!#0Y=z37Xon9p#w|kg<~E zGEsq_54I?h_i`BVVw3I;32bJ2yAF@n-<-`#_zDo;dXWU5Q%Tqkf3IP%e?4qJ$Bo$D z9Nh3m8F4@eJt^MPVAjdx@DH}@{7mNgV%Idk8G>M=Nm4)rA%j05!A0C}h8V3bx*qoek z%E|YI%&6PC$)EfAKxpxgz!)IC8BIE43&Zxa#mJrjZ4m;AW~Mdiy5n|WORSj+%dstu zpTtO4!~<8f2nZDZ>B?mtTgyfFf@4^eUq7{9cHMpXZ)p|z3_Pk)W6;p=1F@mg{WnVw zf26bn!upaJfa*QKh+yuHPRHA}St^ljPN4yTaj&~ZKhZ1@<9Af*+eCQBuNmr1HtujX zI8iW&-x+WtqXv7@kdM40@k>z)a!8ta?I)WFO3M#Nk8@D;G~g=Tt?0Wt7QiQ-&`^7F<#l|re6mf?uw}cn?o&G-AxhGoM(w{ zy#fwsO-odQ8++#yP!$KrVbEbbNUc#TU!B+Fo^s~=*{!49hd&&nW(2gd$KzD9jELII z9;)(5tC3G!NC}d`eAQ-X8;g4mN;Hb2c3&<-6^kL{da7HjbB3jZ$73#~D7lr>)YHS5 z5rK4%D8=1riQ_Lt(a1ixc1_z08-~4g7_T3?q)=o!I!#%@w_x+gzKT3TOewbg#+@;+8THZnS|sgE-KDtKuJ`A%jIe5jyRo=( zleko}CHMPel_qiDy^cqROeYWRedF(lSXTMddX1dYw??+RRq+Wte`ybEjBO&?Inm0Z z(<>e0Vw=j{&8Wtk3Ssrf+JbYu>0bPzwph!WpQ}&s@xwBjjd*u6tW(_h!+ycJ!a`W( z5Sa3Q6V@@#GP3Ds(t7`58<^lUZ<|YjF}7E4#1v{Q+Rdu50^3G@d45!e`9bo})<^%g zJCl_J0PrCL02*MF5+s*?HpB)SDkT!?U!Cy*$A&!%rh=Li?ebU!*w$fL*AJf-d)?P_ z<#B0Q8aU;!HDi+IBZV^Q$#ISwQ-L`H2vsR0uV}yYwl!0&Rd?05o-tD{W00A@E|uY< zNC&HEi%VnPhA!7olazGstr`WmDNmP!ZU+~F3CJR^>$zI9dWEMYp51Gi^VoTY=2YCR ze{eTpV?AR6Ek|I(XZO7y&AY5?XNZngi;ywMp)sJOj`MD^+{Oy{njcO*Ql@fR4%+x` zCM$O*vP$<-QB~%a3`$*Et~A?_5w=+DksT-P`pF7xl|OwgURmiqV7#%+o4%O0xLepYQl zoouzzL((?bqp3YT=lzBTI=pgQN)+82>8YYJeZlHfrMQSs8OZvGP`N+lDbdEOp}N;%xP!qG7T4?AQMzi7d&Z59 zH&i#iaej?G|1+PL{@^2w1HU1}mi~fQ43+DAF*0^?E!kGffBLKLngzjMDTUS!Vwvqq z@L|`eO~J?AeNoxu&AuposFk6y4mtch)Y7;)ozsxEZMZj=`t;9{gO4ll`rh`!)a&jZ zbx?G+&F2tuRj=R!U5?OyYOMeWl@O;MwdU`FZ zr3+sG6CE`sg>UsmzuX!Gdx!Bo?fghBMkqy>W%G&aFmdWx1wbUZlrS;um#Nep{f~rV z)3L6!UD0d)A9Q|DbElcc=ShLQ{@BMZ%{?tgeZa@}tDoQ0fE$qd!UizinU?*UE;pnZ zc+rs8&DGWV!VeXC;ofTK+Ks#GLylgL*+@$vY&Ru@zEsb`P%vcnDOw@2{Z-z6>z_x z1fZ?#*fgTupvTcFx@^@rT1(rtrPUCnqNB03kLc+42l{|jIgOec$Y?iTDIO_P>+r1& z9J7-oYqh4YjX;D%TX=ITjZ~dB(aK{R(@I;DUo5Jvx^VqA!be2a(+XL@bQ~LPaNqJ! zC^yM4V;1+(N$rU8%O`?QBn10_te2-z4}}YI730lmPsGA@;6GG1CL`)|g0cE^_|f^5 za|4EG20QCuFN4e-8fcC1^T;kQ z?lDoznn_H2ET+c)DWdw~Otw4mJEHx0@9VoF)@AsKSo|YM&FUBo5*}z< zb6*yJHhnhHu+HPtx9(A>jn?Sm5)2Ncdi?IuSE+gZ>oepZls>6w`Il6aml2G7d5jI; zG165C`#n!sxp5ax;)s{G+L?s6t@RzhBxR?^-lZ$8qwtU*>$75?>ot^4QO8RO5<2M0 zy)22Nq3o}zHm_($s*_6#X2l?+eV+S|UPzbsA$TkvJAVqJdF<@EuaBOM@VZ=C*A`X= zbQUk~)4C<6Gn&u-vao_;O2Y`VY~!H+jB+-&A=259-cGusOqV6ZT*0St@G{og>e-qu zp?5LxafgdZ(PmQ{vM3}pCxJcaQGg{bAUir#+7HfoxA!D`pLV)D8+)FnPZv6@Q_@!n z?agPGBYc_4XHWg$`55iYX81rxV<Tpj!JH=G!+S>_m4a5+i&t7`>0cF)2 zzSUdReNiD_#3C!Eu1DZ>s{77qk94Y$GXbAWpA8mZ5z>tu?;WD!5z>=g+@&T(-(&bG zro_rAQm&;6OpBFAA!+u_u?OY_>?fymzKTWx&PH4#`5)PIhm+A;L^ig7{ruQm1RaV~ zU%8FAucthnV+kB5_kD_=j*_LYndJC>LHPXTLC5j8sWS^LCP{=*9R#Ik{(2MMMj>DE z@`FY~0N$mjWwqGnY1ISd;ccZiVR`a5W=p69Pk7oc`%Wt%avin{p)zhVv#%%?T#3G0 zo6^{L-lTmNgA}=78EYkaCH~fkc1%01y`j&cyVu7&pe1iG}L#_ctbn>90-gOtQZLCronxPl6~gOLF~! z{%W#W6aYY)4gkRL^8x?&XbhXdJY&A{8}s`tKLb=h?egD%pT03H4>QQjq5O;I9g`&}XCwqHe@4t$Y a_-_T#V%)+1rYBLsRDrLO_+duDEdK|4_u;Al diff --git a/testData/two_wires_open/two_wires_open.step b/testData/two_wires_open/two_wires_open.step index b65a83d..bc6561f 100644 --- a/testData/two_wires_open/two_wires_open.step +++ b/testData/two_wires_open/two_wires_open.step @@ -1,7 +1,7 @@ ISO-10303-21; HEADER; FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); -FILE_NAME('Open CASCADE Shape Model','2023-09-19T18:30:37',(''),(''), +FILE_NAME('Open CASCADE Shape Model','2023-10-20T18:14:48',(''),(''), 'Open CASCADE STEP processor 7.6','FreeCAD','Unknown'); FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }')); ENDSEC; @@ -14,7 +14,7 @@ DATA; #4 = PRODUCT_DEFINITION_SHAPE('','',#5); #5 = PRODUCT_DEFINITION('design','',#6,#9); #6 = PRODUCT_DEFINITION_FORMATION('','',#7); -#7 = PRODUCT('two_wires_coax','two_wires_coax','',(#8)); +#7 = PRODUCT('two_wires_open','two_wires_open','',(#8)); #8 = PRODUCT_CONTEXT('',#2,'mechanical'); #9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); #10 = SHAPE_REPRESENTATION('',(#11,#15,#19,#23),#27); @@ -70,13 +70,13 @@ GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#31)) GLOBAL_UNIT_ASSIGNED_CONTEXT( #56 = PCURVE('',#57,#62); #57 = PLANE('',#58); #58 = AXIS2_PLACEMENT_3D('',#59,#60,#61); -#59 = CARTESIAN_POINT('',(-2.240413913153E-14,1.993359145737E-15,0.)); +#59 = CARTESIAN_POINT('',(-2.24E-14,1.99E-15,0.)); #60 = DIRECTION('',(0.,0.,1.)); #61 = DIRECTION('',(1.,0.,-0.)); #62 = DEFINITIONAL_REPRESENTATION('',(#63),#67); #63 = CIRCLE('',#64,500.); #64 = AXIS2_PLACEMENT_2D('',#65,#66); -#65 = CARTESIAN_POINT('',(2.240413913153E-14,-1.993359145737E-15)); +#65 = CARTESIAN_POINT('',(2.24E-14,-1.99E-15)); #66 = DIRECTION('',(1.,0.)); #67 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' @@ -102,7 +102,7 @@ SHAPE_REPRESENTATION_RELATIONSHIP() ); #80 = PRODUCT_DEFINITION_SHAPE('','',#81); #81 = PRODUCT_DEFINITION('design','',#82,#85); #82 = PRODUCT_DEFINITION_FORMATION('','',#83); -#83 = PRODUCT('Conductor_1','Conductor_1','',(#84)); +#83 = PRODUCT('Conductor_0','Conductor_0','',(#84)); #84 = PRODUCT_CONTEXT('',#2,'mechanical'); #85 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); #86 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#87),#114); @@ -151,13 +151,13 @@ SHAPE_REPRESENTATION_RELATIONSHIP() ); #121 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); #122 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#123 ); -#123 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('2','Conductor_1','',#5,#81,$); +#123 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('2','Conductor_0','',#5,#81,$); #124 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#83)); #125 = SHAPE_DEFINITION_REPRESENTATION(#126,#132); #126 = PRODUCT_DEFINITION_SHAPE('','',#127); #127 = PRODUCT_DEFINITION('design','',#128,#131); #128 = PRODUCT_DEFINITION_FORMATION('','',#129); -#129 = PRODUCT('Conductor_2','Conductor_2','',(#130)); +#129 = PRODUCT('Conductor_1','Conductor_1','',(#130)); #130 = PRODUCT_CONTEXT('',#2,'mechanical'); #131 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); #132 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#133),#160); @@ -179,13 +179,13 @@ SHAPE_REPRESENTATION_RELATIONSHIP() ); #148 = PCURVE('',#149,#154); #149 = PLANE('',#150); #150 = AXIS2_PLACEMENT_3D('',#151,#152,#153); -#151 = CARTESIAN_POINT('',(-1.281975124256E-16,3.821888340557E-18,0.)); +#151 = CARTESIAN_POINT('',(-1.3E-16,0.,0.)); #152 = DIRECTION('',(0.,0.,1.)); #153 = DIRECTION('',(1.,0.,0.)); #154 = DEFINITIONAL_REPRESENTATION('',(#155),#159); #155 = CIRCLE('',#156,2.); #156 = AXIS2_PLACEMENT_2D('',#157,#158); -#157 = CARTESIAN_POINT('',(1.281975124256E-16,-3.821888340557E-18)); +#157 = CARTESIAN_POINT('',(1.3E-16,0.)); #158 = DIRECTION('',(1.,0.)); #159 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' @@ -206,47 +206,47 @@ SHAPE_REPRESENTATION_RELATIONSHIP() ); #167 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); #168 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#169 ); -#169 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('3','Conductor_2','',#5,#127,$); +#169 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('3','Conductor_1','',#5,#127,$); #170 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#129)); #171 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#172) - ,#160); -#172 = STYLED_ITEM('color',(#173),#135); -#173 = PRESENTATION_STYLE_ASSIGNMENT((#174,#180)); + ,#68); +#172 = STYLED_ITEM('color',(#173),#43); +#173 = PRESENTATION_STYLE_ASSIGNMENT((#174,#182)); #174 = SURFACE_STYLE_USAGE(.BOTH.,#175); -#175 = SURFACE_SIDE_STYLE('',(#176)); +#175 = SURFACE_SIDE_STYLE('',(#176,#180)); #176 = SURFACE_STYLE_FILL_AREA(#177); #177 = FILL_AREA_STYLE('',(#178)); #178 = FILL_AREA_STYLE_COLOUR('',#179); -#179 = COLOUR_RGB('',1.,0.666666687201,0.); -#180 = CURVE_STYLE('',#181,POSITIVE_LENGTH_MEASURE(0.1),#182); -#181 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#182 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, +#179 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); +#180 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#179,( + #181)); +#181 = SURFACE_STYLE_TRANSPARENT(0.990000009537); +#182 = CURVE_STYLE('',#183,POSITIVE_LENGTH_MEASURE(0.1),#184); +#183 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#184 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, 9.803921802644E-02); -#183 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#184) +#185 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#186) + ,#160); +#186 = STYLED_ITEM('color',(#187),#135); +#187 = PRESENTATION_STYLE_ASSIGNMENT((#188,#194)); +#188 = SURFACE_STYLE_USAGE(.BOTH.,#189); +#189 = SURFACE_SIDE_STYLE('',(#190)); +#190 = SURFACE_STYLE_FILL_AREA(#191); +#191 = FILL_AREA_STYLE('',(#192)); +#192 = FILL_AREA_STYLE_COLOUR('',#193); +#193 = COLOUR_RGB('',1.,0.666666687201,0.); +#194 = CURVE_STYLE('',#195,POSITIVE_LENGTH_MEASURE(0.1),#184); +#195 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#196 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#197) ,#114); -#184 = STYLED_ITEM('color',(#185),#89); -#185 = PRESENTATION_STYLE_ASSIGNMENT((#186,#191)); -#186 = SURFACE_STYLE_USAGE(.BOTH.,#187); -#187 = SURFACE_SIDE_STYLE('',(#188)); -#188 = SURFACE_STYLE_FILL_AREA(#189); -#189 = FILL_AREA_STYLE('',(#190)); -#190 = FILL_AREA_STYLE_COLOUR('',#179); -#191 = CURVE_STYLE('',#192,POSITIVE_LENGTH_MEASURE(0.1),#182); -#192 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#193 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#194) - ,#68); -#194 = STYLED_ITEM('color',(#195),#43); -#195 = PRESENTATION_STYLE_ASSIGNMENT((#196,#204)); -#196 = SURFACE_STYLE_USAGE(.BOTH.,#197); -#197 = SURFACE_SIDE_STYLE('',(#198,#202)); -#198 = SURFACE_STYLE_FILL_AREA(#199); -#199 = FILL_AREA_STYLE('',(#200)); -#200 = FILL_AREA_STYLE_COLOUR('',#201); -#201 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); -#202 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#201,( - #203)); -#203 = SURFACE_STYLE_TRANSPARENT(0.990000009537); -#204 = CURVE_STYLE('',#205,POSITIVE_LENGTH_MEASURE(0.1),#182); +#197 = STYLED_ITEM('color',(#198),#89); +#198 = PRESENTATION_STYLE_ASSIGNMENT((#199,#204)); +#199 = SURFACE_STYLE_USAGE(.BOTH.,#200); +#200 = SURFACE_SIDE_STYLE('',(#201)); +#201 = SURFACE_STYLE_FILL_AREA(#202); +#202 = FILL_AREA_STYLE('',(#203)); +#203 = FILL_AREA_STYLE_COLOUR('',#193); +#204 = CURVE_STYLE('',#205,POSITIVE_LENGTH_MEASURE(0.1),#184); #205 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); ENDSEC; END-ISO-10303-21; From c126a7512ff05d7fa43ad586e7994e555020c7e7 Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Mon, 26 Feb 2024 10:02:43 +0100 Subject: [PATCH 044/134] Adds launcher --- .gitignore | 2 +- src/mesher.py | 25 ++++++++++++++++--------- src/step2gmsh.py | 35 +++++++++++++++++++++++++++++++++++ test/test_mesher.py | 34 ++++++++++++++++++++-------------- test/test_step2gmsh.py | 17 +++++++++++++++++ 5 files changed, 89 insertions(+), 24 deletions(-) create mode 100644 src/step2gmsh.py create mode 100644 test/test_step2gmsh.py diff --git a/.gitignore b/.gitignore index 044e2db..c5be69b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ *.FCStd1 *.pyc -.vscode/settings.json *.msh +.vscode/ diff --git a/src/mesher.py b/src/mesher.py index 244482b..bbfac65 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -1,7 +1,6 @@ import gmsh -import sys -from collections import defaultdict from itertools import chain +from pathlib import Path DEFAULT_MESHING_OPTIONS = { @@ -122,7 +121,7 @@ def extractBoundaries(shapes: dict): return shape_boundaries def meshFromStep( - folder: str, + inputFile: str, case_name: str, meshing_options=DEFAULT_MESHING_OPTIONS): gmsh.model.add(case_name) @@ -130,10 +129,7 @@ def meshFromStep( # Importing from FreeCAD generated steps. # STEP default units are mm. allShapes = ShapesClassification( - gmsh.model.occ.importShapes( - folder + case_name + '/' + case_name + '.step', - highestDimOnly=False - ) + gmsh.model.occ.importShapes(inputFile, highestDimOnly=False) ) # --- Geometry manipulation --- @@ -210,14 +206,25 @@ def meshFromStep( gmsh.model.mesh.generate(2) -def runStepToGmsh( +def runFromInput(inputFile): + case_name = Path(inputFile).stem + + gmsh.initialize() + + meshFromStep(inputFile, case_name, DEFAULT_MESHING_OPTIONS) + + gmsh.write(case_name + '.msh') + gmsh.finalize() + +def runCase( folder: str, case_name: str, meshing_options=DEFAULT_MESHING_OPTIONS): gmsh.initialize() - meshFromStep(folder, case_name, meshing_options) + inputFile = folder + case_name + '/' + case_name + ".step" + meshFromStep(inputFile, case_name, meshing_options) gmsh.write(case_name + '.msh') if RUN_GUI: # for debugging only. diff --git a/src/step2gmsh.py b/src/step2gmsh.py new file mode 100644 index 0000000..83cee48 --- /dev/null +++ b/src/step2gmsh.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python + +import sys +import argparse + +if __name__ == '__main__': + sys.path.insert(0, '.') + import mesher +else: + import src.mesher as mesher + +def launcher(fn): + mesher.runFromInput(fn) + + +if __name__ == '__main__': + print("-- Launching step2gmsh") + + parser = argparse.ArgumentParser( + prog="step2gmsh", + description= + "Converts step CAD file into a MFEM compatible mesh.\n" + "Please look at README.md and LICENSE for more info at:\n" + " https://github.com/OpenSEMBA/step2gmsh" + ) + parser.add_argument( + "-i", + "--input", + help="step input file", + type=argparse.FileType('r'), + required=True + ) + + args = parser.parse_args() + launcher(args.input.name) diff --git a/test/test_mesher.py b/test/test_mesher.py index f6960ee..0c87d7d 100644 --- a/test/test_mesher.py +++ b/test/test_mesher.py @@ -17,6 +17,8 @@ def countEntitiesInPhysicalGroupWithName(name: str): ) ) +def inputFileFromCaseName(case_name): + return testdata_path + case_name + '/' + case_name + ".step" def test_getNumberFromEntityName(): assert (ShapesClassification.getNumberFromName( @@ -31,13 +33,14 @@ def test_getNumberFromEntityName(): def test_partially_filled_coax(): - runStepToGmsh(testdata_path, 'partially_filled_coax') + runCase(testdata_path, 'partially_filled_coax') def test_meshFromStep_with_partially_filled_coax(): gmsh.initialize() - - meshFromStep(testdata_path, 'partially_filled_coax') + + case_name = 'partially_filled_coax' + meshFromStep(inputFileFromCaseName(case_name), case_name) pGs = gmsh.model.getPhysicalGroups() assert (len(pGs) == 4) @@ -57,13 +60,14 @@ def test_meshFromStep_with_partially_filled_coax(): def test_empty_coax(): - runStepToGmsh(testdata_path, 'empty_coax') + runCase(testdata_path, 'empty_coax') def test_meshFromStep_with_empty_coax(): gmsh.initialize() - meshFromStep(testdata_path, 'empty_coax') + case_name = 'empty_coax' + meshFromStep(inputFileFromCaseName(case_name), case_name) pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] @@ -78,17 +82,18 @@ def test_meshFromStep_with_empty_coax(): def test_two_wires_coax(): - runStepToGmsh(testdata_path, 'two_wires_coax') + runCase(testdata_path, 'two_wires_coax') def test_two_wires_open(): - runStepToGmsh(testdata_path, 'two_wires_open') + runCase(testdata_path, 'two_wires_open') def test_meshFromStep_with_two_wires_coax(): gmsh.initialize() - meshFromStep(testdata_path, 'two_wires_coax') + case_name = 'two_wires_coax' + meshFromStep(inputFileFromCaseName(case_name), case_name) pGs = gmsh.model.getPhysicalGroups() assert (len(pGs) == 4) @@ -108,14 +113,15 @@ def test_meshFromStep_with_two_wires_coax(): def test_five_wires(): - runStepToGmsh(testdata_path, 'five_wires') + runCase(testdata_path, 'five_wires') def test_meshFromStep_with_five_wires(): gmsh.initialize() - meshFromStep(testdata_path, 'five_wires') - + case_name = 'five_wires' + meshFromStep(inputFileFromCaseName(case_name), case_name) + pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] @@ -153,15 +159,15 @@ def test_meshFromStep_with_five_wires(): def test_three_wires_ribbon(): - runStepToGmsh(testdata_path, 'three_wires_ribbon') + runCase(testdata_path, 'three_wires_ribbon') def test_nested_coax(): - runStepToGmsh(testdata_path, 'nested_coax') + runCase(testdata_path, 'nested_coax') def test_agrawal1981(): - runStepToGmsh(testdata_path, 'agrawal1981') + runCase(testdata_path, 'agrawal1981') def test_stepShapes_for_partially_filled_coax(): diff --git a/test/test_step2gmsh.py b/test/test_step2gmsh.py new file mode 100644 index 0000000..c2760cf --- /dev/null +++ b/test/test_step2gmsh.py @@ -0,0 +1,17 @@ +import gmsh +import os + +from src.step2gmsh import * + +import sys + +sys.path.insert(0, '.') + + +dir_path = os.path.dirname(os.path.realpath(__file__)) + '/' +testdata_path = dir_path + '/../testData/' + +def test_launcher(): + case_name = 'partially_filled_coax' + input = testdata_path + case_name + '/' + case_name + '.step' + launcher(input) From f4e495706c8b9e1fff4281f05f0a681a29a7818d Mon Sep 17 00:00:00 2001 From: Luis Manuel Diaz Angulo Date: Mon, 26 Feb 2024 10:52:27 +0100 Subject: [PATCH 045/134] Adds documentation --- README.md | 38 +++++++++++++++++++++++++++++++-- doc/fig/five_wires_freecad.png | Bin 0 -> 24709 bytes doc/fig/five_wires_gmsh.png | Bin 0 -> 119177 bytes 3 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 doc/fig/five_wires_freecad.png create mode 100644 doc/fig/five_wires_gmsh.png diff --git a/README.md b/README.md index 8774758..3f04459 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,39 @@ # step2gmsh -Generates MFEM compatible meshes from step files generated with FreeCAD. +[![Tests](https://github.com/lmdiazangulo/step2gmsh/actions/workflows/tests.yml/badge.svg)](https://github.com/lmdiazangulo/step2gmsh/actions/workflows/tests.yml) -[![Tests](https://github.com/lmdiazangulo/step2gmsh/actions/workflows/tests.yml/badge.svg)](https://github.com/lmdiazangulo/step2gmsh/actions/workflows/tests.yml) \ No newline at end of file +`step2gmsh` is a collection of python scripts to generate [MFEM](https://mfem.org/) compatible meshes from step files using calls to [gmsh mesher](https://gmsh.info/). + +The main usage is to generate 2D finite element method (FEM) meshes which can be used to solve electrostatic/magnetostatic problems. + +# Installation +Install requirements with + +```shell + python -m pip install -r requirements.txt +``` + +# Usage + +Launch from command line as + +```shell + python src/step2gmsh.py <-i path_to_step_file> +``` + +The tested input step files have been generated with [FreeCAD](https://www.freecad.org/). The geometrical entities within the step file must be separated in layers. The operations which are performed of the different layers depend on their name. + +- A layer named `Conductor_N` with `N` being an integer represents a perfect conductor. `Conductor_0` is a special case of which represents the ground and defines the global domain. For layers named `Conductor_N` with `N` different to zero their areas will be substracted from the computational domain and removed. +- Layers named as `Dielectric_N` are used to identify regions which will have a material assigned. +- Open and semi-open problems can be defined using a single layer called `OpenRegion`. + +Below is shown an example of a closed case with 6 conductors and 5 dielectrics, the external boundary corresponds to `Conductor_0`. The case is modeled with FreeCAD and can be found in the `testData/five_wires` folder together with the exported as a step file. The resulting mesh after applying `step2gmsh` is shown below. + +![Five wires example as modeled with FreeCAD](doc/fig/five_wires_freecad.png) +![Five wires example meshed with gmsh](doc/fig/five_wires_gmsh.png) + + + + +# Acknowledgments +This project is funded by the European Union under GA no 101101961 - HECATE. diff --git a/doc/fig/five_wires_freecad.png b/doc/fig/five_wires_freecad.png new file mode 100644 index 0000000000000000000000000000000000000000..608aca8a510e0287d1fbbdb23d531ff37d195748 GIT binary patch literal 24709 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 GUjHA891Ru# literal 0 HcmV?d00001 diff --git a/doc/fig/five_wires_gmsh.png b/doc/fig/five_wires_gmsh.png new file mode 100644 index 0000000000000000000000000000000000000000..fd6ff34c78b975b50a0e2e5ee42436de312b3835 GIT binary patch literal 119177 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